blob: 31cf28579a1ab57fb56673a6a25131f5e15c977f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/usr/bin/env python
import cffi
ffi = cffi.FFI()
get_string = ffi.string
def get_library():
fp = 'NK_C_API.h' # path to C API header
declarations = []
with open(fp, 'r') as f:
declarations = f.readlines()
a = iter(declarations)
for declaration in a:
if declaration.startswith('extern') and not '"C"' in declaration:
declaration = declaration.replace('extern', '').strip()
while not ';' in declaration:
declaration += (next(a)).strip()
# print(declaration)
ffi.cdef(declaration)
C = ffi.dlopen("build/libnitrokey.so") # path to built library
return C
def get_hotp_code(lib, i):
return lib.NK_get_hotp_code(i)
libnitrokey = get_library()
libnitrokey.NK_set_debug(False) # do not show debug messages
libnitrokey.NK_login('P') # connect to Nitrokey Pro device
hotp_slot_1_code = get_hotp_code(libnitrokey, 1)
print('Getting HOTP code from Nitrokey Pro: ')
print(hotp_slot_1_code)
libnitrokey.NK_logout() # disconnect device
libnitrokey.NK_login('S') # connect to Nitrokey Storage device
hotp_slot_1_code_nitrokey_storage = get_hotp_code(libnitrokey, 1)
print('Getting HOTP code from Nitrokey Storage: ')
print(hotp_slot_1_code_nitrokey_storage)
libnitrokey.NK_logout() # disconnect device
|