summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO.md1
-rw-r--r--src/lib.rs28
-rw-r--r--src/tests/pro.rs7
3 files changed, 32 insertions, 4 deletions
diff --git a/TODO.md b/TODO.md
index 921dd8a..4a9f276 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1,7 +1,6 @@
- Add support and tests for the Nitrokey Storage.
- Add support for the currently unsupported commands:
- `NK_login_enum`
- - `NK_get_minor_firmware_version`
- `NK_set_unencrypted_volume_rorw_pin_type_user`
- `NK_lock_device`
- `NK_factory_reset`
diff --git a/src/lib.rs b/src/lib.rs
index eb5ec5f..259ff89 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -498,7 +498,11 @@ pub trait Device {
///
/// # fn try_main() -> Result<(), CommandError> {
/// let device = nitrokey::connect()?;
- /// println!("Firmware version: {}.x", device.get_major_firmware_version());
+ /// println!(
+ /// "Firmware version: {}.{}",
+ /// device.get_major_firmware_version(),
+ /// device.get_minor_firmware_version(),
+ /// );
/// # Ok(())
/// # }
/// ```
@@ -506,6 +510,28 @@ pub trait Device {
unsafe { nitrokey_sys::NK_get_major_firmware_version() }
}
+ /// Returns the minor part of the firmware version (for example 8 for
+ /// version 0.8).
+ ///
+ /// # Example
+ ///
+ /// ```no_run
+ /// use nitrokey::Device;
+ /// # use nitrokey::CommandError;
+ ///
+ /// # fn try_main() -> Result<(), CommandError> {
+ /// let device = nitrokey::connect()?;
+ /// println!(
+ /// "Firmware version: {}.{}",
+ /// device.get_major_firmware_version(),
+ /// device.get_minor_firmware_version(),
+ /// );
+ /// # Ok(())
+ /// # }
+ fn get_minor_firmware_version(&self) -> i32 {
+ unsafe { nitrokey_sys::NK_get_minor_firmware_version() }
+ }
+
/// Returns the current configuration of the Nitrokey device.
///
/// # Example
diff --git a/src/tests/pro.rs b/src/tests/pro.rs
index dee7dc6..76d68a0 100644
--- a/src/tests/pro.rs
+++ b/src/tests/pro.rs
@@ -194,9 +194,12 @@ fn totp_slot_name() {
#[test]
#[cfg_attr(not(feature = "test-pro"), ignore)]
-fn get_major_firmware_version() {
+fn get_firmware_version() {
set_debug(false);
- assert_eq!(0, ::connect().unwrap().get_major_firmware_version());
+ let device = ::connect().unwrap();
+ assert_eq!(0, device.get_major_firmware_version());
+ let minor = device.get_minor_firmware_version();
+ assert!(minor == 7 || minor == 8);
}
fn admin_retry(device: UnauthenticatedDevice, suffix: &str, count: u8) -> UnauthenticatedDevice {