diff options
| -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 | 
