import repository from arizona
[raven.git] / testscripts / scott / storkutil / test.sh
1 #!/bin/bash
2
3 #STORKUTIL=~/projects/stork20/2.0/python/storkutil.py
4 STORKUTIL=~/projects/stork/2.0/python/storkutil.py
5 USER=~/projects/planetlab/smbaker
6
7 function test {
8    echo "TEST " "$1"
9 }
10
11 function error {
12    echo "TEST ERROR " "$1"
13    exit 1
14 }
15
16 function checksuccess {
17    if [ $? != 0 ]; then
18       error "$1"
19    fi
20 }
21
22 function checkfail {
23    if [ $? == 0 ]; then
24       error "$1"
25    fi
26 }
27
28
29 RPMDIR=~/projects/rpms
30
31 rm -f test*.tpfile
32 rm -f test*.publickey
33 rm -f test*.privatekey
34
35 test "Generate key pair"
36 python $STORKUTIL --no genpair test
37 checksuccess "failed to generate keys"
38
39 test "Generate alternate pair"
40 python $STORKUTIL --no genpair test2
41 checksuccess "failed to generate keys"
42
43 test "Create a signed tpfile"
44 python $STORKUTIL --createblank -u test --publickey test.publickey --privatekey test.privatekey addfile $RPMDIR/lynx-2.8.3-9.i386.rpm
45 checksuccess "failed to sign tpfile"
46
47 # because I don't know the right way to expand a wildcard...
48 for filename in test.*.tpfile; do filename=$filename; done
49
50 test "Verifying signed tpfile"
51 python $STORKUTIL -u test --publickey test.publickey verify $filename
52 checksuccess "failed to verify tpfile"
53
54 test "Making sure signed file doesn't verify with wrong key"
55 python $STORKUTIL -u test2 --publickey test2.publickey verify $filename
56 checkfail "tpfile signed with test key should not have verified with test2 key"
57
58 # tamper with it by changing lynx to emacs
59 cp $filename $filename.bak
60 sed 's/lynx/emacs/' $filename.bak > $filename
61
62 test "Making sure tampered with file doesn't verify"
63 python $STORKUTIL -u test --publickey test.publickey verify $filename
64 checkfail "tampered file verified when it shouldn't have"
65
66 # restore the original file
67 rm $filename
68 mv $filename.bak $filename
69
70 newname1=${filename/test/test2}
71 newname2=${filename/tpfile/tpfile2}
72
73 test "Renaming tpfile prefix and making sure it doesn't verify"
74 cp $filename $newname1
75 python $STORKUTIL -u test --publickey test.publickey verify $newname1
76 checkfail "renamed file verified when it shouldn't have"
77
78 test "Renaming tpfile suffix and making sure it doesn't verify"
79 cp $filename $newname2
80 python $STORKUTIL -u test --publickey test.publickey verify $newname2
81 checkfail "renamed file verified when it shouldn't have"
82
83 test "Re-signing using a different key"
84 python $STORKUTIL -u test2 --publickey test2.publickey --privatekey test2.privatekey sign $filename
85 checksuccess "failed to re-sign tpfile"
86
87 test "Verifying re-signed test file"
88 python $STORKUTIL -u test2 --publickey test2.publickey verify $filename
89 checksuccess "failed to verify re-signed tpfile"
90
91 # now lets try to sign some random data, to make sure I didn't break the code
92 # that encodes stuff in hex format
93 filename="test.random"
94 dd if=/dev/urandom of="$filename" bs=1024 count=10
95
96 cp $filename $filename.orig
97
98 test "Signing random data"
99 python $STORKUTIL -u test --publickey test.publickey --privatekey test.privatekey sign $filename
100 checksuccess "failed to sign random data"
101
102 test "Verifying random data"
103 python $STORKUTIL -u test --publickey test.publickey --privatekey test.privatekey verify $filename
104 checksuccess "failed to verify random data"
105
106 test "Verifying extracted random data"
107 python $STORKUTIL -u test --publickey test.publickey extract $filename $filename.out
108 diff  $filename.orig $filename.out
109 checksuccess "differences were found when extracting the random data"
110
111
112
113
114