From 3b1926164b2e0eb91cf3a7e9c854cca85f7d4c8e Mon Sep 17 00:00:00 2001
From: Szczepan Zalega <szczepan@nitrokey.com>
Date: Fri, 28 Oct 2016 14:33:25 +0200
Subject: Support for changing firmware update password and test

Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
---
 unittest/test2.cc | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

(limited to 'unittest')

diff --git a/unittest/test2.cc b/unittest/test2.cc
index 21122ef..8db91b7 100644
--- a/unittest/test2.cc
+++ b/unittest/test2.cc
@@ -178,7 +178,30 @@ TEST_CASE("setup multiple hidden volumes", "[hidden2]") {
   }
 }
 
-TEST_CASE("general test", "[test]") {
+//in case of a bug this could change update PIN to some unexpected value
+// - please save log with packet dump if this test will not pass
+TEST_CASE("update password change", "[dangerous]") {
+  Stick20 stick;
+  bool connected = stick.connect();
+  REQUIRE(connected == true);
+  Log::instance().set_loglevel(Loglevel::DEBUG_L2);
+
+  auto pass1 = "12345678";
+  auto pass2 = "12345678901234567890";
+
+  auto data = {
+      make_pair(pass1, pass2),
+      make_pair(pass2, pass1),
+  };
+  for (auto &&  password: data) {
+    auto p = get_payload<stick20::ChangeUpdatePassword>();
+    strcpyT(p.current_update_password, password.first);
+    strcpyT(p.new_update_password, password.second);
+    stick20::ChangeUpdatePassword::CommandTransaction::run(stick, p);
+  }
+}
+
+  TEST_CASE("general test", "[test]") {
   Stick20 stick;
   bool connected = stick.connect();
   REQUIRE(connected == true);
-- 
cgit v1.2.3