Skip to content

Commit cc1f80a

Browse files
committed
test-real: Modify the test.sh script to use shUnit2 framework
Signed-off-by: Zamir SUN <[email protected]>
1 parent 3f44eab commit cc1f80a

File tree

2 files changed

+54
-42
lines changed

2 files changed

+54
-42
lines changed

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,6 @@
77
[submodule "tinycbor"]
88
path = tinycbor
99
url = https://github.com/intel/tinycbor.git
10+
[submodule "test-real/shunit2"]
11+
path = test-real/shunit2
12+
url = https://github.com/kward/shunit2.git

test-real/test.sh

+51-42
Original file line numberDiff line numberDiff line change
@@ -2,53 +2,66 @@
22
export LANGUAGE=en_US
33
export LANG=en_US.UTF8
44
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
195
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+
}
2027

2128
# utility functions
2229

2330
# generate key in gpg
2431
Addkey() {
2532
echo -e "addkey\n$1\n$2\n0\nsave" | $GPG --edit-key $KEYID;
33+
assertEquals 'Addkey failed' 0 $?
2634
}
2735

2836
# generate key in card
2937
Addcardkey() {
3038
echo -e "addcardkey\n$1\n0\nsave\n" | $GPG --edit-key $KEYID;
39+
assertEquals 'Addcardkey failed' 0 $?
3140
}
3241

3342
# move key from gpg to card
3443
Key2card() {
3544
echo -e "key $1\nkeytocard\n$2\nsave" | $GPG --edit-key $KEYID;
45+
assertEquals 'Key2card failed' 0 $?
3646
gpg --card-status;
3747
}
3848

3949
# reset card
4050
GPGReset() {
4151
echo -e 'admin\nfactory-reset\ny\nyes' | $GPG --edit-card;
52+
assertEquals 'GPG reset failed' 0 $?
4253
}
4354

4455
# test signing
4556
GPGSign() {
4657
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 $?
4759
}
4860

4961
# test encryption
5062
GPGEnc() {
5163
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 $?
5265
}
5366

5467
GenerateKey() {
@@ -61,13 +74,7 @@ GenerateKey() {
6174
}
6275

6376

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() {
7178
# import ecc p-256 keys
7279
GPGReset
7380
Addkey 10 3 # Key 2 gen ECDSA P-256
@@ -78,7 +85,8 @@ TestImport() {
7885
Key2card 4 3 # Key 4 to Authentication
7986
GPGSign
8087
GPGEnc
81-
88+
}
89+
test_ImportRsa2048(){
8290
# import rsa2048 keys
8391
GPGReset
8492
Addkey 4 2048 # Key 5 gen RSA2048
@@ -89,6 +97,8 @@ TestImport() {
8997
Key2card 7 3 # Key 7 to Authentication
9098
GPGSign
9199
GPGEnc
100+
}
101+
test_Import25519(){
92102

93103
# import 25519 keys
94104
GPGReset
@@ -98,8 +108,12 @@ TestImport() {
98108
Key2card 9 2 # Key 9 to Encryption
99109
Addkey 10 1 # Key 10 gen ed25519
100110
Key2card 10 3 # Key 10 to Authentication
101-
# GPGSign
111+
startSkipping
112+
GPGSign
113+
endSkipping
102114
GPGEnc
115+
}
116+
test_ImportP384(){
103117

104118
# import ecc p-384 keys
105119
GPGReset
@@ -111,6 +125,8 @@ TestImport() {
111125
Key2card 13 3 # Key 13 to Authentication
112126
GPGSign
113127
GPGEnc
128+
}
129+
test_ImportSecp256k1(){
114130

115131
# import ecc secp256k1 keys
116132
GPGReset
@@ -122,6 +138,8 @@ TestImport() {
122138
Key2card 16 3 # Key 16 to Authentication
123139
GPGSign
124140
GPGEnc
141+
}
142+
test_ImportRsa4096(){
125143

126144
# import rsa4096 keys
127145
GPGReset
@@ -135,44 +153,35 @@ TestImport() {
135153
GPGEnc
136154
}
137155

138-
TestGenerateRsa2048() {
156+
test_GenerateRsa2048() {
139157
# generate rsa2048 keys
140158
GenerateKey 1 2048
141159
}
142160

143-
TestGenerateRsa4096() {
161+
#test_GenerateRsa4096() {
144162
# generate rsa4096 keys
145-
GenerateKey 1 4096
146-
}
163+
# startSkipping
164+
# GenerateKey 1 4096
165+
#}
147166

148-
TestGenerate25519() {
167+
test_Generate25519() {
149168
# generate 25519 keys
150169
GenerateKey 2 1
151170
}
152171

153-
TestGenerateP256() {
172+
test_GenerateP256() {
154173
# generate p-256 keys
155174
GenerateKey 2 3
156175
}
157176

158-
TestGenerateP384() {
177+
test_GenerateP384() {
159178
# generate p-384 keys
160179
GenerateKey 2 4
161180
}
162181

163-
TestGenerateSecp256K1() {
182+
test_GenerateSecp256K1() {
164183
# generate secp256k1 keys
165184
GenerateKey 2 9
166185
}
167186

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

Comments
 (0)