aboutsummaryrefslogtreecommitdiff
path: root/src/device.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/device.rs')
-rw-r--r--src/device.rs16
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)
+ }
+ }
}
}
}