aboutsummaryrefslogtreecommitdiff
path: root/NitrokeyManager.cc
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2020-04-02 15:02:36 +0200
committerRobin Krahl <robin.krahl@ireas.org>2020-04-02 15:20:29 +0200
commit67b14773cf4ab1812af85d3aaf99bdc6119c5a8a (patch)
tree44b1df4dacb8a477312eb92fff424e1e8c368f0d /NitrokeyManager.cc
parent6100df4127eca5f9733cd5fa51acd32c8febd754 (diff)
downloadlibnitrokey-67b14773cf4ab1812af85d3aaf99bdc6119c5a8a.tar.gz
libnitrokey-67b14773cf4ab1812af85d3aaf99bdc6119c5a8a.tar.bz2
NitrokeyManager: Also return serial number as u32
This patch adds the get_serial_number_as_u32 method to NitrokeyManager. It returns the serial number as a 32-bit unsigned integer. Previously, we only returned it as a string generated from the integer value, get_serial_number. While get_serial_number returns an empty string if no device is connected and "NA" if an unknown model is connected, the new method throws a DeviceNotConnected exception in the first case and returns zero in the second case as we cannot express the three states in one integer return value.
Diffstat (limited to 'NitrokeyManager.cc')
-rw-r--r--NitrokeyManager.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/NitrokeyManager.cc b/NitrokeyManager.cc
index 6c26a43..496496e 100644
--- a/NitrokeyManager.cc
+++ b/NitrokeyManager.cc
@@ -398,6 +398,25 @@ using nitrokey::misc::strcpyT;
return "NA";
}
+ uint32_t NitrokeyManager::get_serial_number_as_u32() {
+ if (device == nullptr) { throw DeviceNotConnected("device not connected"); }
+ switch (device->get_device_model()) {
+ case DeviceModel::PRO: {
+ auto response = GetStatus::CommandTransaction::run(device);
+ return response.data().card_serial_u32;
+ }
+ break;
+
+ case DeviceModel::STORAGE:
+ {
+ auto response = stick20::GetDeviceStatus::CommandTransaction::run(device);
+ return response.data().ActiveSmartCardID_u32;
+ }
+ break;
+ }
+ return 0;
+ }
+
stick10::GetStatus::ResponsePayload NitrokeyManager::get_status(){
try{
auto response = GetStatus::CommandTransaction::run(device);