diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2020-01-28 17:38:47 +0100 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2020-02-03 11:30:57 +0100 |
commit | 4fb865af37093d9b0ee039d8ae48fb2a820f3760 (patch) | |
tree | 99a044ea081cfedc69bd0fc5b9e82e7a406234cc /src/device/storage.rs | |
parent | ce4479b6f7a353f388aecda03cddc35389940252 (diff) | |
download | nitrokey-rs-4fb865af37093d9b0ee039d8ae48fb2a820f3760.tar.gz nitrokey-rs-4fb865af37093d9b0ee039d8ae48fb2a820f3760.tar.bz2 |
Represent serial numbers using SerialNumber struct
In a previous commit, we changed the serial number representation from a
string to an integer. This made it easier to compare serial numbers,
but also introduced new problems:
- Serial numbers should be formatted consistently, for example as
"{:#010x}". It is hard to ensure this for an integer value.
- The format of the serial number may be subject to change. Users
should not rely too much on the u32 representation.
Therefore we introduce a new SerialNumber struct that represents a
serial number. Currently it only stores a u32 value. The following
traits and functions can be used to access its value:
- FromStr for string parsing
- ToString/Display for string formatting
- as_u32 to access the underlying integer value
Diffstat (limited to 'src/device/storage.rs')
-rw-r--r-- | src/device/storage.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/device/storage.rs b/src/device/storage.rs index 1e2c46d..5669a91 100644 --- a/src/device/storage.rs +++ b/src/device/storage.rs @@ -7,7 +7,7 @@ use std::ops; use nitrokey_sys; -use crate::device::{Device, FirmwareVersion, Model, Status}; +use crate::device::{Device, FirmwareVersion, Model, SerialNumber, Status}; use crate::error::{CommandError, Error}; use crate::otp::GenerateOtp; use crate::util::{get_command_result, get_cstring, get_last_error}; @@ -827,7 +827,7 @@ impl<'a> Device<'a> for Storage<'a> { let storage_status = self.get_storage_status()?; status.firmware_version = storage_status.firmware_version; - status.serial_number = storage_status.serial_number_smart_card; + status.serial_number = SerialNumber::new(storage_status.serial_number_smart_card); Ok(status) } |