2
2
export LANGUAGE=en_US
3
3
export LANG=en_US.UTF8
4
4
export GNUPGHOME=" $( pwd) /temp_gnupg"
5
- rm -rf " $GNUPGHOME "
6
- mkdir -p " $GNUPGHOME "
7
- chmod 700 " $GNUPGHOME "
8
- cp pinentry-mock " $GNUPGHOME /"
9
- echo " pinentry-program $( pwd) /pinentry-mock" > " ${GNUPGHOME} /gpg-agent.conf"
10
- echo " debug 1031" >> " ${GNUPGHOME} /gpg-agent.conf"
11
- echo " debug-level 8" >> " ${GNUPGHOME} /gpg-agent.conf"
12
- echo " log-file /tmp/canokey-test-gpg-agent.log" >> " ${GNUPGHOME} /gpg-agent.conf"
13
- echo " debug 6145" > " ${GNUPGHOME} /scdaemon.conf"
14
- echo " log-file /tmp/canokey-test-scd.log" >> " ${GNUPGHOME} /scdaemon.conf"
15
- gpg --list-keys
16
-
17
- set -e
18
- set -x
19
5
GPG=" gpg --command-fd 0 --yes --expert"
6
+ kEYID=" "
7
+
8
+ oneTimeSetUp (){
9
+ gpg --version
10
+ rm -rf " $GNUPGHOME "
11
+ mkdir -p " $GNUPGHOME "
12
+ chmod 700 " $GNUPGHOME "
13
+ cp pinentry-mock " $GNUPGHOME /"
14
+ echo " pinentry-program $( pwd) /pinentry-mock" > " ${GNUPGHOME} /gpg-agent.conf"
15
+ echo " debug 1031" >> " ${GNUPGHOME} /gpg-agent.conf"
16
+ echo " debug-level 8" >> " ${GNUPGHOME} /gpg-agent.conf"
17
+ echo " log-file /tmp/canokey-test-gpg-agent.log" >> " ${GNUPGHOME} /gpg-agent.conf"
18
+ echo " debug 6145" > " ${GNUPGHOME} /scdaemon.conf"
19
+ echo " log-file /tmp/canokey-test-scd.log" >> " ${GNUPGHOME} /scdaemon.conf"
20
+ gpg --list-keys
21
+ # begin testing
22
+ killall gpg-agent || true
23
+ echo -e
' Key-Type: 1\nKey-Length: 2048\nSubkey-Type: 1\nSubkey-Length: 2048\nName-Real: Someone\nName-Email: [email protected] \nPassphrase: 12345678\n%commit\n%echo done' | gpg --batch --gen-key -v
24
+ export KEYID=$( gpg -K --with-colons | egrep ' ^sec' | egrep -o ' \w{16}' )
25
+ echo ' Key Id is:' $KEYID
26
+ }
20
27
21
28
# utility functions
22
29
23
30
# generate key in gpg
24
31
Addkey () {
25
32
echo -e " addkey\n$1 \n$2 \n0\nsave" | $GPG --edit-key $KEYID ;
33
+ assertEquals ' Addkey failed' 0 $?
26
34
}
27
35
28
36
# generate key in card
29
37
Addcardkey () {
30
38
echo -e " addcardkey\n$1 \n0\nsave\n" | $GPG --edit-key $KEYID ;
39
+ assertEquals ' Addcardkey failed' 0 $?
31
40
}
32
41
33
42
# move key from gpg to card
34
43
Key2card () {
35
44
echo -e " key $1 \nkeytocard\n$2 \nsave" | $GPG --edit-key $KEYID ;
45
+ assertEquals ' Key2card failed' 0 $?
36
46
gpg --card-status;
37
47
}
38
48
39
49
# reset card
40
50
GPGReset () {
41
51
echo -e ' admin\nfactory-reset\ny\nyes' | $GPG --edit-card;
52
+ assertEquals ' GPG reset failed' 0 $?
42
53
}
43
54
44
55
# test signing
45
56
GPGSign () {
46
57
date -Iseconds | gpg --armor --default-key $( gpg -K --with-colons| awk -F: ' $1~/ssb/ && $12~/s|a/ {print $5}' | tail -n 1) ! -s| gpg;
58
+ assertEquals ' GPG sign failed' 0 $?
47
59
}
48
60
49
61
# test encryption
50
62
GPGEnc () {
51
63
date -Iseconds | gpg --yes --armor --recipient $( gpg -K --with-colons | awk -F: ' $1~/ssb/ && $12~/e/ {print $5}' | tail -n 1) --encrypt| gpg;
64
+ assertEquals ' GPG encrypt failed' 0 $?
52
65
}
53
66
54
67
GenerateKey () {
@@ -61,13 +74,7 @@ GenerateKey() {
61
74
}
62
75
63
76
64
- # begin testing
65
- killall gpg-agent || true
66
- echo -e
' Key-Type: 1\nKey-Length: 2048\nSubkey-Type: 1\nSubkey-Length: 2048\nName-Real: Someone\nName-Email: [email protected] \nPassphrase: 12345678\n%commit\n%echo done' | gpg --batch --gen-key -v
67
- KEYID=$( gpg -K --with-colons | egrep ' ^sec' | egrep -o ' \w{16}' )
68
- echo ' Key Id is:' $KEYID
69
-
70
- TestImport () {
77
+ test_ImportP256 () {
71
78
# import ecc p-256 keys
72
79
GPGReset
73
80
Addkey 10 3 # Key 2 gen ECDSA P-256
@@ -78,7 +85,8 @@ TestImport() {
78
85
Key2card 4 3 # Key 4 to Authentication
79
86
GPGSign
80
87
GPGEnc
81
-
88
+ }
89
+ test_ImportRsa2048 (){
82
90
# import rsa2048 keys
83
91
GPGReset
84
92
Addkey 4 2048 # Key 5 gen RSA2048
@@ -89,6 +97,8 @@ TestImport() {
89
97
Key2card 7 3 # Key 7 to Authentication
90
98
GPGSign
91
99
GPGEnc
100
+ }
101
+ test_Import25519 (){
92
102
93
103
# import 25519 keys
94
104
GPGReset
@@ -98,8 +108,12 @@ TestImport() {
98
108
Key2card 9 2 # Key 9 to Encryption
99
109
Addkey 10 1 # Key 10 gen ed25519
100
110
Key2card 10 3 # Key 10 to Authentication
101
- # GPGSign
111
+ startSkipping
112
+ GPGSign
113
+ endSkipping
102
114
GPGEnc
115
+ }
116
+ test_ImportP384 (){
103
117
104
118
# import ecc p-384 keys
105
119
GPGReset
@@ -111,6 +125,8 @@ TestImport() {
111
125
Key2card 13 3 # Key 13 to Authentication
112
126
GPGSign
113
127
GPGEnc
128
+ }
129
+ test_ImportSecp256k1 (){
114
130
115
131
# import ecc secp256k1 keys
116
132
GPGReset
@@ -122,6 +138,8 @@ TestImport() {
122
138
Key2card 16 3 # Key 16 to Authentication
123
139
GPGSign
124
140
GPGEnc
141
+ }
142
+ test_ImportRsa4096 (){
125
143
126
144
# import rsa4096 keys
127
145
GPGReset
@@ -135,44 +153,35 @@ TestImport() {
135
153
GPGEnc
136
154
}
137
155
138
- TestGenerateRsa2048 () {
156
+ test_GenerateRsa2048 () {
139
157
# generate rsa2048 keys
140
158
GenerateKey 1 2048
141
159
}
142
160
143
- TestGenerateRsa4096 () {
161
+ # test_GenerateRsa4096 () {
144
162
# generate rsa4096 keys
145
- GenerateKey 1 4096
146
- }
163
+ # startSkipping
164
+ # GenerateKey 1 4096
165
+ # }
147
166
148
- TestGenerate25519 () {
167
+ test_Generate25519 () {
149
168
# generate 25519 keys
150
169
GenerateKey 2 1
151
170
}
152
171
153
- TestGenerateP256 () {
172
+ test_GenerateP256 () {
154
173
# generate p-256 keys
155
174
GenerateKey 2 3
156
175
}
157
176
158
- TestGenerateP384 () {
177
+ test_GenerateP384 () {
159
178
# generate p-384 keys
160
179
GenerateKey 2 4
161
180
}
162
181
163
- TestGenerateSecp256K1 () {
182
+ test_GenerateSecp256K1 () {
164
183
# generate secp256k1 keys
165
184
GenerateKey 2 9
166
185
}
167
186
168
- TestGenerate () {
169
- TestGenerateRsa2048
170
- # TestGenerateRsa4096
171
- TestGenerate25519
172
- TestGenerateP256
173
- TestGenerateP384
174
- TestGenerateSecp256K1
175
- }
176
-
177
- TestImport
178
- TestGenerate
187
+ . ./shunit2/shunit2
0 commit comments