diff options
author | Szczepan Zalega <szczepan@nitrokey.com> | 2020-06-13 18:50:34 +0200 |
---|---|---|
committer | Szczepan Zalega <szczepan@nitrokey.com> | 2020-06-13 18:50:34 +0200 |
commit | 8009c37af6198e712e458d0810fe5eae4b2f0ee6 (patch) | |
tree | 026dc64d014c78bf664834e74e16c760773f616e /NitrokeyManager.cc | |
parent | e0f58556806ecde0a1ea3f1b306cb039cab00fc5 (diff) | |
parent | fedf828e394938fb6f84407b4de7412a3fb6ec40 (diff) | |
download | libnitrokey-8009c37af6198e712e458d0810fe5eae4b2f0ee6.tar.gz libnitrokey-8009c37af6198e712e458d0810fe5eae4b2f0ee6.tar.bz2 |
Merge branch 'serial-number-u32'
Return serial number as uint32_t
Fixes #174
Diffstat (limited to 'NitrokeyManager.cc')
-rw-r--r-- | NitrokeyManager.cc | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/NitrokeyManager.cc b/NitrokeyManager.cc index 71d156f..329d155 100644 --- a/NitrokeyManager.cc +++ b/NitrokeyManager.cc @@ -392,23 +392,36 @@ using nitrokey::misc::strcpyT; string NitrokeyManager::get_serial_number() { - if (device == nullptr) { return ""; }; + try { + auto serial_number = this->get_serial_number_as_u32(); + if (serial_number == 0) { + return "NA"; + } else { + return nitrokey::misc::toHex(serial_number); + } + } catch (DeviceNotConnected& e) { + return ""; + } + } + + uint32_t NitrokeyManager::get_serial_number_as_u32() { + if (device == nullptr) { throw DeviceNotConnected("device not connected"); } switch (device->get_device_model()) { case DeviceModel::LIBREM: case DeviceModel::PRO: { auto response = GetStatus::CommandTransaction::run(device); - return nitrokey::misc::toHex(response.data().card_serial_u32); + return response.data().card_serial_u32; } break; case DeviceModel::STORAGE: { auto response = stick20::GetDeviceStatus::CommandTransaction::run(device); - return nitrokey::misc::toHex(response.data().ActiveSmartCardID_u32); + return response.data().ActiveSmartCardID_u32; } break; } - return "NA"; + return 0; } stick10::GetStatus::ResponsePayload NitrokeyManager::get_status(){ |