diff options
author | Szczepan Zalega <szczepan@nitrokey.com> | 2018-01-05 10:07:42 +0100 |
---|---|---|
committer | Szczepan Zalega <szczepan@nitrokey.com> | 2018-01-05 10:07:42 +0100 |
commit | cd310d836391b1895f6eb10ebef60d797a2efe15 (patch) | |
tree | c090d723c005649de01045e51a076242e590c1ef | |
parent | d917909036585eabeaa2e2727fca1d3d8cf9d086 (diff) | |
parent | 8cfabd53a7e784ef8c04bbfe20219398bda28ab1 (diff) | |
download | libnitrokey-cd310d836391b1895f6eb10ebef60d797a2efe15.tar.gz libnitrokey-cd310d836391b1895f6eb10ebef60d797a2efe15.tar.bz2 |
Merge branch '82-python_example_fix'
Handle getting HOTP code properly - code is now string, not an int
Additional improvements
Fixes #82
-rwxr-xr-x | python_bindings_example.py | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/python_bindings_example.py b/python_bindings_example.py index 1740a76..6ddcbc4 100755 --- a/python_bindings_example.py +++ b/python_bindings_example.py @@ -41,16 +41,23 @@ def get_library(): C = None import os, sys path_build = os.path.join(".", "build") - paths = [ os.path.join(path_build,"libnitrokey-log.so"), - os.path.join(path_build,"libnitrokey.so")] + paths = [ + os.environ.get('LIBNK_PATH', None), + os.path.join(path_build,"libnitrokey.so"), + os.path.join(path_build,"libnitrokey.dylib"), + os.path.join(path_build,"libnitrokey.dll"), + os.path.join(path_build,"nitrokey.dll"), + ] for p in paths: - print p + if not p: continue + print("Trying " +p) + p = os.path.abspath(p) if os.path.exists(p): + print("Found: "+p) C = ffi.dlopen(p) break else: print("File does not exist: " + p) - print("Trying another") if not C: print("No library file found") sys.exit(1) @@ -59,7 +66,7 @@ def get_library(): def get_hotp_code(lib, i): - return lib.NK_get_hotp_code(i) + return get_string(lib.NK_get_hotp_code(i)) def to_hex(ss): return ''.join([ format(ord(s),'02x') for s in ss ]) @@ -75,9 +82,17 @@ if not a == 'continue': ADMIN = raw_input('Please enter your admin PIN (empty string uses 12345678) ') ADMIN = ADMIN or '12345678' # use default if empty string -show_log = raw_input('Should log messages be shown (please write "yes" to enable)? ') == 'yes' +show_log = raw_input('Should log messages be shown (please write "yes" to enable; this will make harder reading script output) ') == 'yes' libnitrokey = get_library() -libnitrokey.NK_set_debug(show_log) # do not show debug messages + +if show_log: + log_level = raw_input('Please select verbosity level (0-5, 2 is library default, 3 will be selected on empty input) ') + log_level = log_level or '3' + log_level = int(log_level) + libnitrokey.NK_set_debug_level(log_level) +else: + libnitrokey.NK_set_debug_level(2) + ADMIN_TEMP = '123123123' RFC_SECRET = to_hex('12345678901234567890') @@ -110,8 +125,9 @@ test_data = [ 1284755224, 1094287082, 137359152, 1726969429, 1640338314, 868254676, 1918287922, 82162583, 673399871, 645520489, ] -print('Getting HOTP code from Nitrokey Pro (RFC test, 8 digits): ') +print('Getting HOTP code from Nitrokey Stick (RFC test, 8 digits): ') for i in range(10): hotp_slot_1_code = get_hotp_code(libnitrokey, 1) - print('%d: %d, should be %s' % (i, hotp_slot_1_code, str(test_data[i])[-8:] )) + correct_str = "correct!" if hotp_slot_1_code == str(test_data[i])[-8:] else "not correct" + print('%d: %s, should be %s -> %s' % (i, hotp_slot_1_code, str(test_data[i])[-8:], correct_str)) libnitrokey.NK_logout() # disconnect device |