summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzczepan Zalega <szczepan@nitrokey.com>2016-12-06 20:00:42 +0100
committerSzczepan Zalega <szczepan@nitrokey.com>2016-12-09 08:46:57 +0100
commit279a310d6710908943237f5528d64a94ecd45885 (patch)
tree9ca4853dd4e108c5ffa68afdfbc5ac93c91493bd
parent740b85c7f935029003e205dcbb5d49842eac1ad6 (diff)
downloadlibnitrokey-279a310d6710908943237f5528d64a94ecd45885.tar.gz
libnitrokey-279a310d6710908943237f5528d64a94ecd45885.tar.bz2
Tests: check are long OTP secrets supported
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
-rw-r--r--unittest/misc.py24
-rw-r--r--unittest/test_library.py4
2 files changed, 17 insertions, 11 deletions
diff --git a/unittest/misc.py b/unittest/misc.py
index 8296814..f4d7731 100644
--- a/unittest/misc.py
+++ b/unittest/misc.py
@@ -20,25 +20,29 @@ def cast_pointer_to_tuple(obj, typen, len):
# config = cast_pointer_to_tuple(config_raw_data, 'uint8_t', 5)
return tuple(ffi.cast("%s [%d]" % (typen, len), obj)[0:len])
-def get_firmware_version_from_status(C):
- status = gs(C.NK_status())
- status = [s if 'firmware_version' in s else '' for s in status.split('\n')]
- firmware = status[0].split(':')[1]
+
+def get_devices_firmware_version(C):
+ firmware = C.NK_get_major_firmware_version()
return firmware
def is_pro_rtm_07(C):
- firmware = get_firmware_version_from_status(C)
- return '07 00' in firmware
+ firmware = get_devices_firmware_version(C)
+ return firmware == 7
+
def is_pro_rtm_08(C):
- firmware = get_firmware_version_from_status(C)
- return '08 00' in firmware
+ firmware = get_devices_firmware_version(C)
+ return firmware == 8
def is_storage(C):
"""
exact firmware storage is sent by other function
"""
- firmware = get_firmware_version_from_status(C)
- return '01 00' in firmware \ No newline at end of file
+ # TODO identify connected device directly
+ return not is_pro_rtm_08(C) and not is_pro_rtm_07(C)
+
+
+def is_long_OTP_secret_handled(C):
+ return is_pro_rtm_08(C) or is_storage(C) and get_devices_firmware_version(C) > 43
diff --git a/unittest/test_library.py b/unittest/test_library.py
index d0eef80..7b05c58 100644
--- a/unittest/test_library.py
+++ b/unittest/test_library.py
@@ -1,6 +1,6 @@
import pytest
-from misc import ffi, gs, to_hex
+from misc import ffi, gs, to_hex, is_pro_rtm_07, is_long_OTP_secret_handled
from constants import DefaultPasswords, DeviceErrorCode, RFC_SECRET, LibraryErrors
def test_too_long_strings(C):
@@ -50,6 +50,8 @@ def test_invalid_secret_hex_string_for_OTP_write(C, invalid_hex_string):
def test_warning_binary_bigger_than_secret_buffer(C):
invalid_hex_string = to_hex('1234567890') * 3
+ if is_long_OTP_secret_handled(C):
+ invalid_hex_string *= 2
assert C.NK_write_hotp_slot(1, 'slot_name', invalid_hex_string, 0, True, False, False, '',
DefaultPasswords.ADMIN_TEMP) == LibraryErrors.TARGET_BUFFER_SIZE_SMALLER_THAN_SOURCE