diff options
| author | Szczepan Zalega <szczepan@nitrokey.com> | 2016-10-31 18:02:55 +0100 | 
|---|---|---|
| committer | Szczepan Zalega <szczepan@nitrokey.com> | 2016-11-26 18:56:27 +0100 | 
| commit | 98b27cb58b12f699b5c11f88d55c3e3f70ed2063 (patch) | |
| tree | ae44353f68c1aa02cf305b53e67321d468e39a52 | |
| parent | 9ad4796130a4ce192420563bb601468ffc292df9 (diff) | |
| download | libnitrokey-98b27cb58b12f699b5c11f88d55c3e3f70ed2063.tar.gz libnitrokey-98b27cb58b12f699b5c11f88d55c3e3f70ed2063.tar.bz2 | |
Code refactoring - unify password only commands (2)
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
| -rw-r--r-- | NitrokeyManager.cc | 4 | ||||
| -rw-r--r-- | include/command.h | 9 | ||||
| -rw-r--r-- | include/stick20_commands.h | 24 | 
3 files changed, 12 insertions, 25 deletions
| diff --git a/NitrokeyManager.cc b/NitrokeyManager.cc index eb34ef2..f0099da 100644 --- a/NitrokeyManager.cc +++ b/NitrokeyManager.cc @@ -420,8 +420,8 @@ namespace nitrokey{              }              case DeviceModel::STORAGE : {                  auto p = get_payload<stick20::CreateNewKeys>(); -                strcpyT(p.admin_pin, admin_password); -                p.setKindPrefixed(); +                strcpyT(p.password, admin_password); +                p.set_defaults();                  stick20::CreateNewKeys::CommandTransaction::run(*device, p);                  break;              } diff --git a/include/command.h b/include/command.h index badf068..0a875e4 100644 --- a/include/command.h +++ b/include/command.h @@ -22,7 +22,8 @@ namespace nitrokey {  namespace stick20{          enum class PasswordKind : uint8_t {              User = 'P', -            Admin = 'A' +            Admin = 'A', +            AdminPrefixed          };          template<CommandID cmd_id, PasswordKind Tpassword_kind = PasswordKind::User, int password_length = 20> @@ -41,6 +42,9 @@ namespace stick20{                  void set_kind_admin() {                    kind = (uint8_t) 'A';                  } +                void set_kind_admin_prefixed() { +                  kind = (uint8_t) 'P'; +                }                  void set_kind_user() {                    kind = (uint8_t) 'P';                  } @@ -57,6 +61,9 @@ namespace stick20{                      case PasswordKind::User:                        set_kind_user();                      break; +                    case PasswordKind::AdminPrefixed: +                      set_kind_admin_prefixed(); +                      break;                    }                  }; diff --git a/include/stick20_commands.h b/include/stick20_commands.h index a51d1ca..d7d89cf 100644 --- a/include/stick20_commands.h +++ b/include/stick20_commands.h @@ -18,8 +18,6 @@ namespace nitrokey {  #define print_to_ss(x) ( ss << " " << (#x) <<":\t" << (x) << std::endl );          namespace stick20 { - -              class ChangeAdminUserPin20Current :                  public PasswordCommand<CommandID::SEND_PASSWORD, PasswordKind::Admin> {};              class ChangeAdminUserPin20New : @@ -54,26 +52,8 @@ namespace nitrokey {              class ExportFirmware : public PasswordCommand<CommandID::EXPORT_FIRMWARE_TO_FILE> {}; -            class CreateNewKeys : Command<CommandID::GENERATE_NEW_KEYS> { -            public: -                struct CommandPayload { -                    uint8_t kind; -                    uint8_t admin_pin[30]; //CS20_MAX_PASSWORD_LEN -                    std::string dissect() const { -                      std::stringstream ss; -                      print_to_ss( kind ); -                      ss << " admin_pin:\t" << admin_pin << std::endl; -                      return ss.str(); -                    } - -                    void setKindPrefixed() { -                      kind = 'P'; -                    } -                } __packed; - -                typedef Transaction<command_id(), struct CommandPayload, struct EmptyPayload> -                    CommandTransaction; -            }; +            class CreateNewKeys : +                public PasswordCommand<CommandID::GENERATE_NEW_KEYS, PasswordKind::AdminPrefixed, 30> {};              class FillSDCardWithRandomChars : Command<CommandID::FILL_SD_CARD_WITH_RANDOM_CHARS> { | 
