aboutsummaryrefslogtreecommitdiff
path: root/tests/device.rs
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2020-01-11 20:05:39 +0100
committerRobin Krahl <robin.krahl@ireas.org>2020-01-11 20:25:56 +0100
commitdbee55efa41496c8a683bfab96163facc93d6639 (patch)
tree93aa1d17acd18b6884b8421c593dab6e7cbf6011 /tests/device.rs
parent1532f92de1d63613602acb0b68486361571f3e50 (diff)
downloadnitrokey-rs-dbee55efa41496c8a683bfab96163facc93d6639.tar.gz
nitrokey-rs-dbee55efa41496c8a683bfab96163facc93d6639.tar.bz2
Add support for the GET_STATUS command
This patch adds support for the GET_STATUS command that returns the status information common to all Nitrokey devices. It can be accessed using the Device::get_status function and is stored in a Status struct. Due to a bug in the Storage firmware [0], the GET_STATUS command returns wrong firmware versions and serial numbers. Until this is fixed in libnitrokey [1], we have to manually execute the GET_DEVICE_STATUS command to fix these values for the Nitrokey Storage. Also, this leads to a name clash with the existing Storage::get_status function, which will be renamed in an upcoming patch. [0] https://github.com/Nitrokey/nitrokey-storage-firmware/issues/96 [1] https://github.com/Nitrokey/libnitrokey/issues/166
Diffstat (limited to 'tests/device.rs')
-rw-r--r--tests/device.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/device.rs b/tests/device.rs
index 509763b..92b79bd 100644
--- a/tests/device.rs
+++ b/tests/device.rs
@@ -153,6 +153,15 @@ fn disconnect(device: DeviceWrapper) {
assert_empty_serial_number();
}
+#[test_device]
+fn get_status(device: DeviceWrapper) {
+ let status = unwrap_ok!(device.get_status());
+ assert_ok!(status.firmware_version, device.get_firmware_version());
+ let serial_number = format!("{:08x}", status.serial_number);
+ assert_ok!(serial_number, device.get_serial_number());
+ assert_ok!(status.config, device.get_config());
+}
+
fn assert_valid_serial_number(serial_number: &str) {
assert!(serial_number.is_ascii());
assert!(serial_number.chars().all(|c| c.is_ascii_hexdigit()));