aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSzczepan Zalega <szczepan@nitrokey.com>2016-07-20 08:12:20 +0200
committerSzczepan Zalega <szczepan@nitrokey.com>2016-08-01 13:54:56 +0200
commitfb37116ea77f7961b12b1e289c3d48e6e517ea88 (patch)
treeba67e240be3d94bfb9d45d7d3b0e17bd0b834d7b /include
parent6d42e3d56a6851fa2463ef45226fd027867d74a7 (diff)
downloadlibnitrokey-fb37116ea77f7961b12b1e289c3d48e6e517ea88.tar.gz
libnitrokey-fb37116ea77f7961b12b1e289c3d48e6e517ea88.tar.bz2
Write to TOTP slot
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
Diffstat (limited to 'include')
-rw-r--r--include/NitrokeyManager.h3
-rw-r--r--include/stick10_commands.h15
2 files changed, 16 insertions, 2 deletions
diff --git a/include/NitrokeyManager.h b/include/NitrokeyManager.h
index 37b628d..551bea7 100644
--- a/include/NitrokeyManager.h
+++ b/include/NitrokeyManager.h
@@ -20,7 +20,8 @@ namespace nitrokey {
bool authorize(const char *pin, const char *temporary_password);
bool write_HOTP_slot(uint8_t slot_number, const char *slot_name, const char *secret, uint64_t hotp_counter,
const char *temporary_password);
- bool write_TOTP_slot(uint8_t slot_number, const char *secret, uint16_t time_window);
+ bool write_TOTP_slot(uint8_t slot_number, const char *slot_name, const char *secret,
+ uint16_t time_window, const char *temporary_password);
uint32_t get_HOTP_code(uint8_t slot_number);
uint32_t get_TOTP_code(uint8_t slot_number, uint64_t challenge, uint64_t last_totp_time,
uint8_t last_interval);
diff --git a/include/stick10_commands.h b/include/stick10_commands.h
index d15ee73..13842fb 100644
--- a/include/stick10_commands.h
+++ b/include/stick10_commands.h
@@ -116,7 +116,20 @@ class WriteToTOTPSlot : Command<CommandID::WRITE_TO_SLOT> {
uint8_t slot_token_id[13];
uint16_t slot_interval;
- bool isValid() const { return !(slot_number & 0xF0); }
+ bool isValid() const { return !(slot_number & 0xF0); } //TODO check
+ std::string dissect() const {
+ std::stringstream ss;
+ ss << "slot_number:\t" << (int)(slot_number) << std::endl;
+ ss << "slot_name:\t" << slot_name << std::endl;
+ ss << "slot_secret:\t" << slot_secret << std::endl;
+ ss << "slot_config:\t" << std::bitset<8>((int)slot_config) << std::endl;
+ ss << "slot_token_id:\t";
+ for (auto i : slot_token_id)
+ ss << std::hex << std::setw(2) << std::setfill('0')<< (int) i << " " ;
+ ss << std::endl;
+ ss << "slot_interval:\t" << (int)slot_interval << std::endl;
+ return ss.str();
+ }
} __packed;
typedef Transaction<command_id(), struct CommandPayload, struct EmptyPayload>