aboutsummaryrefslogtreecommitdiff
path: root/src/device/storage.rs
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2020-01-28 17:38:47 +0100
committerRobin Krahl <robin.krahl@ireas.org>2020-02-03 11:30:57 +0100
commit4fb865af37093d9b0ee039d8ae48fb2a820f3760 (patch)
tree99a044ea081cfedc69bd0fc5b9e82e7a406234cc /src/device/storage.rs
parentce4479b6f7a353f388aecda03cddc35389940252 (diff)
downloadnitrokey-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.rs4
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)
}