INNER CODE UNIT · Rust
split_assemble_hid_packets
google/OpenSK · libraries/opensk/fuzz/fuzz_helper/src/lib.rs:256
pub fn split_assemble_hid_packets(data: &[u8]) -> arbitrary::Result<()> {
let mut unstructured = Unstructured::new(data);
let mut env = TestEnv::default();
env.seed_rng_from_u64(u64::arbitrary(&mut unstructured)?);
let data = unstructured.take_rest();
let message = raw_to_message(data);
if let Some(hid_packet_iterator) = HidPacketIterator::new(message.clone()) {
let mut assembler = MessageAssembler::default();
let packets: Vec<HidPacket> = hid_packet_iterator.collect();
if let Some((last_packet, first_packets)) = packets.split_last() {
for packet in first_packets {
let (cid, processed_pkt) = CtapHid::<TestEnv>::process_single_packet(packet);
assert_eq!(
assembler.parse_packet(&mut env, cid, processed_pkt),
Ok(None)
);