diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/device.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/device.rs b/src/device.rs index 960f698..9ffc39a 100644 --- a/src/device.rs +++ b/src/device.rs @@ -50,6 +50,7 @@ enum_u8! { #[derive(Clone, Copy, Debug, PartialEq)] pub enum CommandId { GetStatus = 0, + ReadSlotName = 2, } } @@ -69,7 +70,6 @@ impl Nitrokey { command_id: CommandId, data: &[u8], ) -> Result<[u8; 53], CommandStatus> { - let _ = data; match command_id { CommandId::GetStatus => { let mut data = [0u8; 53]; @@ -85,6 +85,20 @@ impl Nitrokey { data[9] = 0; // delete_user_password Ok(data) } + CommandId::ReadSlotName => { + assert!(data.len() > 1); + let slot_number = data[0]; + if slot_number != 0x20 { + Err(CommandStatus::SlotNotProgrammed) + } else { + let mut data = [0u8; 53]; + data[0] = 0x74; // t + data[1] = 0x65; // e + data[2] = 0x73; // s + data[3] = 0x74; // t + Ok(data) + } + } } } } |