diff options
author | Szczepan Zalega <szczepan.zalega@gmail.com> | 2016-03-29 14:15:49 +0200 |
---|---|---|
committer | Szczepan Zalega <szczepan.zalega@gmail.com> | 2016-03-29 14:15:49 +0200 |
commit | f19e5bdc349f0a98234745f66ef72324f47c656b (patch) | |
tree | 1b204ee33b9983da93751fd9d8ebf0b273321e30 | |
parent | 955fb912ab9563a5246f9d3bfda9ccfab187949f (diff) | |
download | libnitrokey-f19e5bdc349f0a98234745f66ef72324f47c656b.tar.gz libnitrokey-f19e5bdc349f0a98234745f66ef72324f47c656b.tar.bz2 |
working hotp tests on nitrokey pro (stick10)
Signed-off-by: Szczepan Zalega <szczepan.zalega@gmail.com>
-rw-r--r-- | include/stick10_commands.h | 9 | ||||
-rw-r--r-- | unittest/test_HOTP.cc | 22 |
2 files changed, 26 insertions, 5 deletions
diff --git a/include/stick10_commands.h b/include/stick10_commands.h index 60c947f..f58ace4 100644 --- a/include/stick10_commands.h +++ b/include/stick10_commands.h @@ -136,12 +136,19 @@ class GetHOTP : Command<CommandID::GET_CODE> { } __packed; struct ResponsePayload { - uint8_t code[18]; + union { + uint8_t whole_response[18]; //TODO remove if not needed + struct { + uint32_t code; + uint8_t config; + } __packed; + } __packed; bool isValid() const { return true; } std::string dissect() const { std::stringstream ss; ss << "code:\t" << (code) << std::endl; + ss << "config:\t" << "TODO" /*(config) */<< std::endl; //TODO show byte field options return ss.str(); } } __packed; diff --git a/unittest/test_HOTP.cc b/unittest/test_HOTP.cc index bc3650a..c4af104 100644 --- a/unittest/test_HOTP.cc +++ b/unittest/test_HOTP.cc @@ -81,11 +81,25 @@ TEST_CASE("Slot names are correct", "[slotNames]") { //run hotp command WriteToHOTPSlot::CommandTransaction::run(stick, hwrite); - GetHOTP::CommandTransaction::CommandPayload gh; - gh.slot_number = 0x10; - auto resp = GetHOTP::CommandTransaction::run(stick, gh); - REQUIRE( string(reinterpret_cast<char *>(resp.code)) == "755224"); + uint32_t codes[] = { + 755224, + 287082, + 359152, + 969429, + 338314, + 254676, + 287922, + 162583, + 399871, + 520489 + }; + for( auto code: codes){ + GetHOTP::CommandTransaction::CommandPayload gh; + gh.slot_number = 0x10; + auto resp = GetHOTP::CommandTransaction::run(stick, gh); + REQUIRE( resp.code == code); + } } |