diff options
| author | Szczepan Zalega <szczepan@nitrokey.com> | 2016-07-28 12:24:45 +0200 | 
|---|---|---|
| committer | Szczepan Zalega <szczepan@nitrokey.com> | 2016-08-01 13:54:57 +0200 | 
| commit | 08fa8c559b42fb07bdadd62369802c348b896607 (patch) | |
| tree | 7a94fe1810d7468ccc5b4d82ecbc549dd0b6c933 | |
| parent | bdb25a0c1feb5709d718f408d6c839dbc9b55738 (diff) | |
| download | libnitrokey-08fa8c559b42fb07bdadd62369802c348b896607.tar.gz libnitrokey-08fa8c559b42fb07bdadd62369802c348b896607.tar.bz2 | |
Choose device model during connection
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
| -rw-r--r-- | NK_C_API.cc | 4 | ||||
| -rw-r--r-- | NK_C_API.h | 2 | ||||
| -rw-r--r-- | NitrokeyManager.cc | 13 | ||||
| -rw-r--r-- | include/NitrokeyManager.h | 2 | ||||
| -rw-r--r-- | unittest/test_bindings.py | 2 | 
5 files changed, 16 insertions, 7 deletions
| diff --git a/NK_C_API.cc b/NK_C_API.cc index fac8a3c..e6151fc 100644 --- a/NK_C_API.cc +++ b/NK_C_API.cc @@ -68,10 +68,10 @@ extern uint8_t NK_get_last_command_status(){      return _copy;  } -extern int NK_login(const char *admin_pin, const char *temporary_password) { +extern int NK_login(const char *admin_pin, const char *temporary_password, const char *device_model) {      auto m = NitrokeyManager::instance();      try { -        m->connect(); +        m->connect(device_model);          m->first_authenticate(admin_pin, temporary_password);          NK_last_command_status = 0;      } @@ -10,7 +10,7 @@ extern "C"  {  //Make sure each function's declaration is in one line (for automatic python declaration processing)  extern void NK_set_debug(bool state); -extern int NK_login(const char *admin_pin, const char *temporary_password); +extern int NK_login(const char *admin_pin, const char *temporary_password, const char *device_model);  extern int NK_logout();  extern const char * NK_status();  extern uint8_t NK_get_last_command_status(); diff --git a/NitrokeyManager.cc b/NitrokeyManager.cc index caf9724..3697369 100644 --- a/NitrokeyManager.cc +++ b/NitrokeyManager.cc @@ -36,8 +36,17 @@ namespace nitrokey{      }      NitrokeyManager::~NitrokeyManager() {delete _instance; delete device;} -    bool NitrokeyManager::connect() { -        device = new Stick10(); +    bool NitrokeyManager::connect(const char *device_model) { +        switch (device_model[0]){ +            case 'P': +                device = new Stick10(); +                break; +            case 'S': +                device = new Stick20(); +                break; +            default: +                throw std::runtime_error("Unknown model"); +        }          return device->connect();      } diff --git a/include/NitrokeyManager.h b/include/NitrokeyManager.h index 3a86597..3acb229 100644 --- a/include/NitrokeyManager.h +++ b/include/NitrokeyManager.h @@ -30,7 +30,7 @@ namespace nitrokey {          bool get_time();          bool erase_totp_slot(uint8_t slot_number, const char *temporary_password);          bool erase_hotp_slot(uint8_t slot_number, const char *temporary_password); -        bool connect(); +        bool connect(const char *device_model);          bool disconnect();          void set_debug(bool state);          string get_status(); diff --git a/unittest/test_bindings.py b/unittest/test_bindings.py index cba5ba4..8d6169c 100644 --- a/unittest/test_bindings.py +++ b/unittest/test_bindings.py @@ -39,7 +39,7 @@ def C(request):      C = ffi.dlopen("../build/libnitrokey.so")      C.NK_set_debug(False) -    C.NK_login(DefaultPasswords.ADMIN, DefaultPasswords.ADMIN_TEMP) +    C.NK_login(DefaultPasswords.ADMIN, DefaultPasswords.ADMIN_TEMP, 'P')      assert C.NK_user_authenticate(DefaultPasswords.USER, DefaultPasswords.USER_TEMP) == DeviceErrorCode.STATUS_OK      # C.NK_status() | 
