new process_message function and command enum
This commit is contained in:
committed by
kaczmarczyck
parent
3d3689dc23
commit
c595980a3b
@@ -25,14 +25,12 @@ use ctap2::ctap::command::{
|
||||
};
|
||||
use ctap2::ctap::hid::receive::MessageAssembler;
|
||||
use ctap2::ctap::hid::send::HidPacketIterator;
|
||||
use ctap2::ctap::hid::{ChannelID, HidPacket, Message};
|
||||
use ctap2::ctap::hid::{ChannelID, CtapHidCommand, HidPacket, Message};
|
||||
use ctap2::env::test::TestEnv;
|
||||
use ctap2::Ctap;
|
||||
use libtock_drivers::timer::{ClockValue, Timestamp};
|
||||
|
||||
const COMMAND_INIT: u8 = 0x06;
|
||||
const CHANNEL_BROADCAST: ChannelID = [0xFF, 0xFF, 0xFF, 0xFF];
|
||||
const PACKET_TYPE_MASK: u8 = 0x80;
|
||||
|
||||
const CLOCK_FREQUENCY_HZ: usize = 32768;
|
||||
const DUMMY_TIMESTAMP: Timestamp<isize> = Timestamp::from_ms(0);
|
||||
@@ -53,13 +51,14 @@ fn raw_to_message(data: &[u8]) -> Message {
|
||||
cid[..data.len()].copy_from_slice(data);
|
||||
Message {
|
||||
cid,
|
||||
cmd: 0,
|
||||
// Arbitrary command.
|
||||
cmd: CtapHidCommand::Cbor,
|
||||
payload: vec![],
|
||||
}
|
||||
} else {
|
||||
Message {
|
||||
cid: array_ref!(data, 0, 4).clone(),
|
||||
cmd: data[4],
|
||||
cmd: CtapHidCommand::from(data[4]),
|
||||
payload: data[5..].to_vec(),
|
||||
}
|
||||
}
|
||||
@@ -71,7 +70,7 @@ fn initialize(ctap: &mut Ctap<TestEnv>) -> ChannelID {
|
||||
let nonce = vec![0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0];
|
||||
let message = Message {
|
||||
cid: CHANNEL_BROADCAST,
|
||||
cmd: COMMAND_INIT,
|
||||
cmd: CtapHidCommand::Init,
|
||||
payload: nonce,
|
||||
};
|
||||
let mut assembler_reply = MessageAssembler::new();
|
||||
@@ -168,7 +167,7 @@ pub fn process_ctap_specific_type(data: &[u8], input_type: InputType) {
|
||||
|
||||
// Splits the given data as HID packets and reassembles it, verifying that the original input message is reconstructed.
|
||||
pub fn split_assemble_hid_packets(data: &[u8]) {
|
||||
let mut message = raw_to_message(data);
|
||||
let message = raw_to_message(data);
|
||||
if let Some(hid_packet_iterator) = HidPacketIterator::new(message.clone()) {
|
||||
let mut assembler = MessageAssembler::new();
|
||||
let packets: Vec<HidPacket> = hid_packet_iterator.collect();
|
||||
@@ -176,7 +175,6 @@ pub fn split_assemble_hid_packets(data: &[u8]) {
|
||||
for packet in first_packets {
|
||||
assert_eq!(assembler.parse_packet(packet, DUMMY_TIMESTAMP), Ok(None));
|
||||
}
|
||||
message.cmd &= !PACKET_TYPE_MASK;
|
||||
assert_eq!(
|
||||
assembler.parse_packet(last_packet, DUMMY_TIMESTAMP),
|
||||
Ok(Some(message))
|
||||
|
||||
Reference in New Issue
Block a user