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
46
47
48
49
50
51
|
from constants import DeviceErrorCode, PWS_SLOT_COUNT, DefaultPasswords
from misc import gs, bb
def helper_fill(str_to_fill, target_width):
assert target_width >= len(str_to_fill)
numbers = '1234567890' * 4
str_to_fill += numbers[:target_width - len(str_to_fill)]
assert len(str_to_fill) == target_width
return bb(str_to_fill)
def helper_PWS_get_pass(suffix):
return helper_fill('pass' + suffix, 20)
def helper_PWS_get_loginname(suffix):
return helper_fill('login' + suffix, 32)
def helper_PWS_get_slotname(suffix):
return helper_fill('slotname' + suffix, 11)
def helper_check_device_for_data(C):
assert C.NK_lock_device() == DeviceErrorCode.STATUS_OK
assert C.NK_enable_password_safe(DefaultPasswords.USER) == DeviceErrorCode.STATUS_OK
for i in range(0, PWS_SLOT_COUNT):
iss = str(i)
assert gs(C.NK_get_password_safe_slot_name(i)) == helper_PWS_get_slotname(iss)
assert gs(C.NK_get_password_safe_slot_login(i)) == helper_PWS_get_loginname(iss)
assert gs(C.NK_get_password_safe_slot_password(i)) == helper_PWS_get_pass(iss)
return True
def helper_populate_device(C):
# FIXME use object with random data, and check against it
# FIXME generate OTP as well, and check codes against its secrets
assert C.NK_lock_device() == DeviceErrorCode.STATUS_OK
res = C.NK_enable_password_safe(DefaultPasswords.USER)
if res != DeviceErrorCode.STATUS_OK:
assert C.NK_build_aes_key(DefaultPasswords.ADMIN) == DeviceErrorCode.STATUS_OK
assert C.NK_enable_password_safe(DefaultPasswords.USER) == DeviceErrorCode.STATUS_OK
for i in range(0, PWS_SLOT_COUNT):
iss = str(i)
assert C.NK_write_password_safe_slot(i,
helper_PWS_get_slotname(iss), helper_PWS_get_loginname(iss),
helper_PWS_get_pass(iss)) == DeviceErrorCode.STATUS_OK
return True
|