diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/command_id.h | 41 | ||||
-rw-r--r-- | include/device_proto.h | 34 |
2 files changed, 45 insertions, 30 deletions
diff --git a/include/command_id.h b/include/command_id.h index 45285aa..093de1f 100644 --- a/include/command_id.h +++ b/include/command_id.h @@ -4,18 +4,31 @@ namespace nitrokey { namespace proto { - -#define OUTPUT_CMD_STICK20_STATUS_IDLE 0 -#define OUTPUT_CMD_STICK20_STATUS_OK 1 -#define OUTPUT_CMD_STICK20_STATUS_BUSY 2 -#define OUTPUT_CMD_STICK20_STATUS_WRONG_PASSWORD 3 -#define OUTPUT_CMD_STICK20_STATUS_BUSY_PROGRESSBAR 4 -#define OUTPUT_CMD_STICK20_STATUS_PASSWORD_MATRIX_READY 5 -#define OUTPUT_CMD_STICK20_STATUS_NO_USER_PASSWORD_UNLOCK 6 -#define OUTPUT_CMD_STICK20_STATUS_SMARTCARD_ERROR 7 -#define OUTPUT_CMD_STICK20_STATUS_SECURITY_BIT_ACTIVE 8 - -#define STICK20_CMD_START_VALUE 0x20 + namespace stick20 { + enum class device_status : uint8_t { + idle = 0, + ok, + busy, + wrong_password, + busy_progressbar, + password_matrix_ready, + no_user_password_unlock, + smartcard_error, + security_bit_active + }; + const int CMD_START_VALUE = 0x20; + const int CMD_END_VALUE = 0x60; + } + namespace stick10 { + enum class command_status : uint8_t { + ok = 0, + }; + enum class device_status : uint8_t { + ok = 0, + busy = 1, + wrong_password = 4, + }; + } enum class CommandID : uint8_t { @@ -42,8 +55,8 @@ enum class CommandID : uint8_t { CHANGE_USER_PIN = 0x14, CHANGE_ADMIN_PIN = 0x15, - STICK20_CMD_SEND_PASSWORD = STICK20_CMD_START_VALUE + 18, - STICK20_CMD_SEND_NEW_PASSWORD = STICK20_CMD_START_VALUE + 19, + STICK20_CMD_SEND_PASSWORD = stick20::CMD_START_VALUE + 18, + STICK20_CMD_SEND_NEW_PASSWORD = stick20::CMD_START_VALUE + 19, ENABLE_CRYPTED_PARI = 0x20, DISABLE_CRYPTED_PARI, diff --git a/include/device_proto.h b/include/device_proto.h index 81cf93e..bf78d29 100644 --- a/include/device_proto.h +++ b/include/device_proto.h @@ -235,27 +235,29 @@ namespace nitrokey { status = dev.recv(&resp); if (dev.get_device_model() == DeviceModel::STORAGE && - resp.command_id >= 0x20 && - resp.command_id < 0x60 - ) { + resp.command_id >= stick20::CMD_START_VALUE && + resp.command_id < stick20::CMD_END_VALUE ) { Log::instance()(std::string("Detected storage device cmd, status: ") + std::to_string(resp.StorageStatus.Status_u8), Loglevel::DEBUG_L2); - resp.last_command_status = 0; - switch (resp.StorageStatus.Status_u8) { - case 0: - case 1: - resp.last_command_status = 0; - resp.device_status = 0; + resp.last_command_status = static_cast<uint8_t>(stick10::command_status::ok); + switch (static_cast<stick20::device_status>(resp.StorageStatus.Status_u8)) { + case stick20::device_status::idle : + case stick20::device_status::ok: + resp.device_status = static_cast<uint8_t>(stick10::device_status::ok); break; - case 2: - resp.last_command_status = 0; - resp.device_status = 1; //pro busy + case stick20::device_status::busy: + case stick20::device_status::busy_progressbar: //TODO this will be modified later for getting progressbar status + resp.device_status = static_cast<uint8_t>(stick10::device_status::busy); break; - case 3: - case 4: - resp.last_command_status = 4; - resp.device_status = 0; + case stick20::device_status::wrong_password: + resp.last_command_status = static_cast<uint8_t>(stick10::device_status::wrong_password); + resp.device_status = static_cast<uint8_t>(stick10::device_status::ok); + break; + default: + Log::instance()(std::string("Unknown storage device status, cannot translate: ") + + std::to_string(resp.StorageStatus.Status_u8), Loglevel::DEBUG); + resp.device_status = resp.StorageStatus.Status_u8; break; }; } |