key fingerprint and timestamp
[gnuk/gnuk.git] / test / features / steps.py
1 from freshen import *
2 from freshen.checks import *
3 from nose.tools import assert_regexp_matches
4
5 import ast
6
7 import gnuk
8 import rsa_keys
9
10 @Before
11 def ini(sc):
12     if not ftc.token:
13         ftc.token = gnuk.get_gnuk_device()
14         ftc.token.cmd_select_openpgp()
15
16 @Given("cmd_verify with (.*) and \"(.*)\"")
17 def cmd_verify(who_str,pass_str):
18     who = int(who_str)
19     scc.result = ftc.token.cmd_verify(who, pass_str)
20
21 @Given("cmd_change_reference_data with (.*) and \"(.*)\"")
22 def cmd_change_reference_data(who_str,pass_str):
23     who = int(who_str)
24     scc.result = ftc.token.cmd_change_reference_data(who, pass_str)
25
26 @Given("cmd_put_data with (.*) and (\".*\")")
27 def cmd_put_data(tag_str,content_str_repr):
28     content_str = ast.literal_eval(content_str_repr)
29     tag = int(tag_str, 16)
30     tagh = tag >> 8
31     tagl = tag & 0xff
32     scc.result = ftc.token.cmd_put_data(tagh, tagl, content_str)
33
34 @Given("cmd_reset_retry_counter with (.*) and \"(.*)\"")
35 def cmd_reset_retry_counter(how_str, data):
36     how = int(how_str)
37     scc.result = ftc.token.cmd_reset_retry_counter(how, data)
38
39 @Given("a RSA key pair (.*)")
40 def set_rsa_key(keyno_str):
41     scc.keyno = int(keyno_str)
42
43 @Given("importing it to the token as OPENPGP.(.*)")
44 def import_key(openpgp_keyno_str):
45     openpgp_keyno = int(openpgp_keyno_str)
46     t = rsa_keys.build_privkey_template(openpgp_keyno, scc.keyno)
47     scc.result = ftc.token.cmd_put_data_odd(0x3f, 0xff, t)
48
49 @Given("a fingerprint of OPENPGP.(.*) key")
50 def get_key_fpr(openpgp_keyno_str):
51     openpgp_keyno = int(openpgp_keyno_str)
52     scc.result = rsa_keys.fpr[openpgp_keyno - 1]
53
54 @Given("a timestamp of OPENPGP.(.*) key")
55 def get_key_timestamp(openpgp_keyno_str):
56     openpgp_keyno = int(openpgp_keyno_str)
57     scc.result = rsa_keys.timestamp[openpgp_keyno - 1]
58
59 @Given("put the data to (.*)")
60 def cmd_put_data_with_result(tag_str):
61     tag = int(tag_str, 16)
62     tagh = tag >> 8
63     tagl = tag & 0xff
64     scc.result = ftc.token.cmd_put_data(tagh, tagl, scc.result)
65
66 @When("requesting (.+): ([0-9a-fA-F]+)")
67 def get_data(name, tag_str):
68     tag = int(tag_str, 16)
69     tagh = tag >> 8
70     tagl = tag & 0xff
71     scc.result = ftc.token.cmd_get_data(tagh, tagl)
72
73 @When("removing a key OPENPGP.(.*)")
74 def remove_key(openpgp_keyno_str):
75     openpgp_keyno = int(openpgp_keyno_str)
76     t = rsa_keys.build_privkey_template_for_remove(openpgp_keyno)
77     scc.result = ftc.token.cmd_put_data_odd(0x3f, 0xff, t)
78
79 @Then("you should get: (.*)")
80 def check_result(v):
81     value = ast.literal_eval("'" + v + "'")
82     assert_equal(scc.result, value)
83
84 @Then("it should get success")
85 def check_success():
86     assert_equal(scc.result, True)
87
88 @Then("you should get NULL")
89 def check_null():
90     assert_equal(scc.result, "")
91
92 @Then("data should match: (.*)")
93 def check_regexp(re):
94     assert_regexp_matches(scc.result, re)