From 20028b40e61e79856c15181ed0b5061ab6d4fa29 Mon Sep 17 00:00:00 2001 From: Szczepan Zalega Date: Mon, 21 Mar 2016 08:40:15 +0100 Subject: implementing hotp test --- include/stick10_commands.h | 21 +++++++++++++++++++++ unittest/test_HOTP.cc | 11 +++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/include/stick10_commands.h b/include/stick10_commands.h index 8f45f20..13aa24f 100644 --- a/include/stick10_commands.h +++ b/include/stick10_commands.h @@ -68,6 +68,16 @@ class WriteToHOTPSlot : Command { uint8_t slot_counter[8]; bool isValid() const { return !(slot_number & 0xF0); } + std::string dissect() const { + std::stringstream ss; + ss << "slot_number:\t" << (int)(slot_number) << std::endl; + ss << "slot_name" << slot_name << std::endl; + ss << "slot_secret" << slot_secret << std::endl; + ss << "slot_config" << slot_config << std::endl; + ss << "slot_token_id" << slot_token_id << std::endl; + ss << "slot_counter" << slot_counter << std::endl; + return ss.str(); + } } __packed; typedef Transaction @@ -118,6 +128,17 @@ class GetHOTP : Command { uint8_t slot_number; bool isValid() const { return !(slot_number & 0xF0); } + std::string dissect() const { + std::stringstream ss; + ss << "slot_number:\t" << (int)(slot_number) << std::endl; + return ss.str(); + } + } __packed; + + struct ResponsePayload { + uint8_t code[18]; + + bool isValid() const { return true; } } __packed; typedef Transaction diff --git a/unittest/test_HOTP.cc b/unittest/test_HOTP.cc index c1147d3..a61bc28 100644 --- a/unittest/test_HOTP.cc +++ b/unittest/test_HOTP.cc @@ -23,6 +23,7 @@ std::string getSlotName(Stick10 &stick, int slotNo) { void setSecret (uint8_t slot_secret[], const char* secretHex){ assert(strlen(secretHex)%2==0); + //assert(strlen(secretHex)==(sizeof slot_secret)*2); char buf[2]; for(int i=0; i(slot_secret) ) == 0 ); } @@ -58,7 +59,7 @@ TEST_CASE("Slot names are correct", "[slotNames]") { { WriteToHOTPSlot::CommandTransaction::CommandPayload hwrite; - hwrite.slot_number = 0; + hwrite.slot_number = 0xF; strcpy(reinterpret_cast(hwrite.slot_name), "rfc_test"); //strcpy(reinterpret_cast(hwrite.slot_secret), ""); const char* secretHex = "3132333435363738393031323334353637383930"; @@ -66,6 +67,12 @@ TEST_CASE("Slot names are correct", "[slotNames]") { //hwrite.slot_config; strcpy(reinterpret_cast(hwrite.slot_token_id), ""); strcpy(reinterpret_cast(hwrite.slot_counter), ""); + WriteToHOTPSlot::CommandTransaction::run(stick, hwrite); + + GetHOTP::CommandTransaction::CommandPayload gh; + gh.slot_number = 0xF; + GetHOTP::CommandTransaction::run(stick, gh); + } -- cgit v1.2.1