diff options
author | Szczepan Zalega <szczepan@nitrokey.com> | 2016-07-29 14:28:58 +0200 |
---|---|---|
committer | Szczepan Zalega <szczepan@nitrokey.com> | 2016-08-01 13:54:58 +0200 |
commit | 24ad4504648cd3918bb181b1d54a7c3441c02ae0 (patch) | |
tree | 6bf301c6535868d4ec5b25b41e3b73362e790a88 /NitrokeyManager.cc | |
parent | feeb433a5625fd869e3b02c3254867c63b42086d (diff) | |
download | libnitrokey-24ad4504648cd3918bb181b1d54a7c3441c02ae0.tar.gz libnitrokey-24ad4504648cd3918bb181b1d54a7c3441c02ae0.tar.bz2 |
Handle changing admin/user password on NK Storage - NitrokeyManager
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
Diffstat (limited to 'NitrokeyManager.cc')
-rw-r--r-- | NitrokeyManager.cc | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/NitrokeyManager.cc b/NitrokeyManager.cc index 79cd868..7f7a870 100644 --- a/NitrokeyManager.cc +++ b/NitrokeyManager.cc @@ -239,10 +239,33 @@ namespace nitrokey{ ChangeUserPin::CommandTransaction::run(*device, p); } void NitrokeyManager::change_admin_PIN(char *current_PIN, char *new_PIN) { - auto p = get_payload<ChangeAdminPin>(); - strcpyT(p.old_pin, current_PIN); - strcpyT(p.new_pin, new_PIN); - ChangeAdminPin::CommandTransaction::run(*device, p); + switch (device->get_device_model()){ + case DeviceModel::PRO: + { + auto p = get_payload<ChangeAdminPin>(); + strcpyT(p.old_pin, current_PIN); + strcpyT(p.new_pin, new_PIN); + ChangeAdminPin::CommandTransaction::run(*device, p); + } + break; + //in Storage change admin pin is divided to two commands with 20 chars field len + case DeviceModel::STORAGE: + { + auto p = get_payload<ChangeAdminPin20Current>(); + strcpyT(p.old_pin, current_PIN); + p.kind = 'A'; + p.set_kind(PasswordKind::Admin); + ChangeAdminPin20Current::CommandTransaction::run(*device, p); + + auto p2 = get_payload<ChangeAdminPin20New>(); + strcpyT(p2.new_pin, new_PIN); + p2.kind = 'A'; + p2.set_kind(PasswordKind::Admin); + ChangeAdminPin20New::CommandTransaction::run(*device, p2); + } + break; + } + } void NitrokeyManager::enable_password_safe(const char *user_pin) { |