4
4
# Author: Sudhi Herle
5
5
# License: Public Domain
6
6
7
+ TMP=$HOME /tmp/aes
7
8
AES=./aes.py
8
9
[ -n " $PYTHON " ] && AES=" $PYTHON $AES "
9
10
# AES='python3.4 ./aes.py'
10
11
12
+ mkdir -p $TMP || exit 1
13
+
11
14
uname=` uname`
12
15
case $uname in
13
16
Linux) MD5=md5sum ;;
@@ -43,34 +46,42 @@ xverify() {
43
46
testsz () {
44
47
# set -x
45
48
local sz=$1 ; shift
49
+ local bsiz=$1 ; shift
50
+
51
+ [ -n " $bsiz " ] && bsiz=" -B $bsiz "
46
52
47
- local inf=/tmp /in$sz
48
- local enc=/tmp /enc$sz
49
- local dec=/tmp /dec$sz
53
+ local inf=${TMP} /in$sz
54
+ local enc=${TMP} /enc$sz
55
+ local dec=${TMP} /dec$sz
50
56
51
57
if [ $sz -gt 0 ]; then
52
58
dd if=/dev/urandom of=$inf bs=$sz count=1 2> /dev/null
53
59
else
54
60
touch $inf
55
61
fi
56
62
57
- begin " Testing file $sz .."
58
- FX=abcdef $AES -k FX encrypt $inf -o $enc || exit 1
59
- FX=abcdef $AES -k FX test $enc || exit 1
60
- FX=abcdef $AES -k FX decrypt $enc -o $dec || exit 1
63
+ echo " File size $sz :"
64
+
65
+ begin " regular file I/O ..."
66
+ FX=abcdef $AES -k FX $bsiz encrypt $inf -o $enc || exit 1
67
+ FX=abcdef $AES -k FX $bsiz test $enc || exit 1
68
+ FX=abcdef $AES -k FX $bsiz decrypt $enc -o $dec || exit 1
61
69
xverify $inf $dec || exit 1
62
70
63
- begin " Testing inplace $sz .."
64
- cp $inf $enc
65
- FX=abcdef $AES -k FX encrypt $enc -o $enc || exit 1
71
+ begin " streaming I/O . .."
72
+ cat $inf | FX=abcdef $AES -k FX $bsiz encrypt | cat > $enc
73
+ [ $? -ne 0 ] && end Fail && exit 1
66
74
67
- cp $enc $dec
68
- FX=abcdef $AES -k FX decrypt $dec -o $dec || exit 1
75
+ cat $enc | FX=abcdef $AES -k FX $bsiz decrypt | cat > $dec
76
+ [ $? -ne 0 ] && end Fail && exit 1
69
77
xverify $inf $dec || exit 1
70
78
71
- begin " Testing stdio $sz .."
72
- FX=abcdef $AES -k FX encrypt < $inf > $enc || exit 1
73
- FX=abcdef $AES -k FX decrypt < $enc > $dec || exit 1
79
+ begin " inplace ..."
80
+ cp $inf $enc
81
+ FX=abcdef $AES -k FX $bsiz encrypt $enc -o $enc || exit 1
82
+
83
+ cp $enc $dec
84
+ FX=abcdef $AES -k FX $bsiz decrypt $dec -o $dec || exit 1
74
85
xverify $inf $dec || exit 1
75
86
76
87
@@ -79,55 +90,64 @@ testsz() {
79
90
80
91
# Full suite of functional tests
81
92
basic () {
82
- local sz=3791
83
- local inf=/tmp/in$sz
84
- local enc=/tmp/enc$sz
85
- local dec=/tmp/dec$sz
93
+ # set -x
94
+ local sz=$( randsz)
95
+ local inf=${TMP} /in$sz
96
+ local enc=${TMP} /enc$sz
97
+ local dec=${TMP} /dec$sz
86
98
local enc2=${enc} .2
87
- local szskip=$(( sz / 2 ))
88
- local badcount=$(( sz / 4 ))
99
+ local szskip=$(( $sz / 2 ))
100
+ local badcount=$(( $sz / 4 ))
101
+ local bsize=$(( $sz / 2 ))
89
102
90
103
dd if=/dev/urandom of=$inf bs=$sz count=1 2> /dev/null || exit 1
91
104
92
- begin " Testing basic functions with size $sz .."
105
+ echo " Basic tests with size $sz .."
106
+ begin " basic functions ..."
93
107
FX=abcdef $AES -k FX encrypt $inf -o $enc || exit 1
94
108
FX=abcdef $AES -k FX test $enc || exit 1
95
109
FX=abcdef $AES -k FX decrypt $enc -o $dec || exit 1
96
110
xverify $inf $dec || exit 1
97
111
112
+ begin " basic functions (bufsize $bsize ) ..."
113
+ FX=abcdef $AES -k FX -B $bsize encrypt $inf -o $enc || exit 1
114
+ FX=abcdef $AES -k FX -B $bsize test $enc || exit 1
115
+ FX=abcdef $AES -k FX -B $bsize decrypt $enc -o $dec || exit 1
116
+ xverify $inf $dec || exit 1
117
+
98
118
# Bad password should fail
99
- FX=abcxyz $AES -k FX test $enc 2> /dev/null && exit 1
119
+ FX=abcxyz $AES -k FX test $enc 2> /dev/null && end Fail && exit 1
100
120
101
121
# Corrupted enc file should fail
102
122
cp $enc $enc2 || exit 1
103
- dd if=/dev/urandom of=$enc2 count=1 bs=$(( $szskip / 3 )) \
123
+ dd if=/dev/urandom of=$enc2 count=1 bs=$(( $szskip * 2 )) \
104
124
seek=$szskip conv=notrunc 2> /dev/null || exit 1
105
- FX=abcdef $AES -k FX test $enc2 2> /dev/null && exit 1
125
+ FX=abcdef $AES -k FX test $enc2 2> /dev/null && end Fail && exit 1
106
126
107
- begin " Testing basic inplace with size $sz .."
127
+ begin " inplace . .."
108
128
cp $inf $enc
109
129
FX=abcdef $AES -k FX encrypt $enc -o $enc || exit 1
110
130
111
131
cp $enc $dec
112
132
FX=abcdef $AES -k FX decrypt $dec -o $dec || exit 1
113
133
xverify $inf $dec || exit 1
114
134
115
- begin " Testing basic stdio with size $sz .."
116
- FX=abcdef $AES -k FX encrypt < $inf > $enc || exit 1
117
- FX=abcdef $AES -k FX decrypt < $enc > $dec || exit 1
118
- xverify $inf $dec || exit 1
119
-
135
+ begin " stream input and output ..."
136
+ cat $inf | FX=abcdef $AES -k FX encrypt | cat > $enc
137
+ [ $? -ne 0 ] && end Fail && exit 1
120
138
121
- # Now test corrupted files and bad mac
139
+ cat $enc | FX=abcdef $AES -k FX decrypt | cat > $dec
140
+ [ $? -ne 0 ] && end Fail && exit 1
141
+ xverify $inf $dec || exit 1
122
142
123
143
rm -f $inf $enc $dec $enc2
124
144
125
145
}
126
146
127
- # Generate random ints between [100, 100000)
147
+ # Generate random ints between x and y
128
148
randsz () {
129
- local x=101
130
- local y=100000
149
+ local x=78329
150
+ local y=900000
131
151
local r=$(( $y - $x + 1 ))
132
152
local n=0
133
153
@@ -143,7 +163,7 @@ randsz() {
143
163
}
144
164
145
165
146
- trap ' exit 0' INT TERM QUIT
166
+ trap " rm -rf $TMP ; exit 0" INT TERM QUIT
147
167
148
168
echo " Testing $AES .."
149
169
basic
158
178
n=8
159
179
while [ $n -gt 0 ]; do
160
180
n=$(( $n - 1 ))
161
- testsz $( randsz)
181
+ sz=$( randsz)
182
+ testsz $sz $(( $sz / 8 ))
162
183
done
163
184
0 commit comments