author | sr |
Wed, 18 Oct 2017 11:28:56 +0200 | |
changeset 1876 | dfc87bb5d4ec |
parent 1690 | 899889bd8404 |
child 2045 | 4495922b72e8 |
permissions | -rw-r--r-- |
1447 | 1 |
"{ Package: 'stx:goodies/regression' }" |
805 | 2 |
|
3 |
"{ NameSpace: RegressionTests }" |
|
4 |
||
5 |
TestCase subclass:#CryptTests |
|
1036
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
6 |
instanceVariableNames:'' |
1100
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
7 |
classVariableNames:'LibCryptLoaded' |
1036
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
8 |
poolDictionaries:'' |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
9 |
category:'tests-Regression' |
805 | 10 |
! |
11 |
||
12 |
!CryptTests class methodsFor:'documentation'! |
|
13 |
||
14 |
documentation |
|
15 |
" |
|
16 |
documentation to be added. |
|
17 |
||
18 |
[author:] |
|
1447 | 19 |
exept |
805 | 20 |
|
21 |
[instance variables:] |
|
22 |
||
23 |
[class variables:] |
|
24 |
||
25 |
[see also:] |
|
26 |
||
27 |
" |
|
28 |
! ! |
|
29 |
||
1100
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
30 |
!CryptTests class methodsFor:'initialization'! |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
31 |
|
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
32 |
initialize |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
33 |
"Invoked at system start or when the class is dynamically loaded." |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
34 |
|
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
35 |
"/ please change as required (and remove this comment) |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
36 |
|
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
37 |
LibCryptLoaded := false. |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
38 |
|
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
39 |
"Modified: / 03-03-2014 / 12:05:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
40 |
! ! |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
41 |
|
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
42 |
!CryptTests class methodsFor:'utilities'! |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
43 |
|
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
44 |
loadLibcryptIfAvailable |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
45 |
"raise an error: this method should be implemented (TODO)" |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
46 |
|
1447 | 47 |
LibCryptLoaded ifFalse:[ |
48 |
(Smalltalk at: #SHA384Stream) isNil ifTrue:[ |
|
49 |
[ |
|
50 |
Smalltalk loadPackage: #'exept:libcrypt' |
|
51 |
] on: PackageLoadError do:[:ex | |
|
52 |
"/Libcrypt not not available. |
|
53 |
]. |
|
54 |
]. |
|
55 |
LibCryptLoaded := true. |
|
1100
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
56 |
]. |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
57 |
|
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
58 |
"Created: / 03-03-2014 / 12:03:54 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
59 |
! ! |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
60 |
|
805 | 61 |
!CryptTests methodsFor:'initialize / release'! |
62 |
||
63 |
setUp |
|
64 |
"common setup - invoked before testing." |
|
65 |
||
1100
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
66 |
self class loadLibcryptIfAvailable. |
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
67 |
|
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
68 |
"Modified: / 03-03-2014 / 12:03:50 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
805 | 69 |
! |
70 |
||
71 |
tearDown |
|
72 |
"common cleanup - invoked after testing." |
|
73 |
||
74 |
super tearDown |
|
75 |
! ! |
|
76 |
||
77 |
!CryptTests methodsFor:'tests'! |
|
78 |
||
79 |
test01_crc32 |
|
80 |
|h| |
|
81 |
||
82 |
h := CRC32Stream hashValueOf:''. |
|
83 |
self assert:(h = 0). |
|
84 |
||
85 |
h := CRC32Stream hashValueOf:'The quick brown fox jumps over the lazy dog'. |
|
86 |
self assert:(h = 16r414fa339). |
|
87 |
||
88 |
h := CRC32Stream hashValueOf:'resume'. |
|
89 |
self assert:(h = 16r60C1D0A0). |
|
90 |
||
91 |
h := (CRC32Stream new |
|
1447 | 92 |
nextPut:$r; |
93 |
nextPut:$e; |
|
94 |
nextPut:$s; |
|
95 |
nextPut:$u; |
|
96 |
nextPut:$m; |
|
97 |
nextPut:$e; |
|
98 |
hashValue). |
|
805 | 99 |
self assert:(h = 16r60C1D0A0). |
100 |
||
101 |
h := (CRC32Stream hashValueOf:#[1 2 3 4 5 6 7]). |
|
102 |
self assert:(h = 16r70E46888). |
|
103 |
||
1447 | 104 |
h := (CRC32Stream hashValueOf:#[16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF |
105 |
16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF |
|
106 |
16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF |
|
107 |
16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF]). |
|
805 | 108 |
self assert:(h = 16r8CD04C73). |
109 |
||
110 |
h := (CRC32Stream new |
|
1447 | 111 |
next:100000 putAll:'12345678901234567890123456789012345678901234567890'; |
112 |
hashValue). |
|
805 | 113 |
self assert:(h = 16r86D7D79A). |
114 |
||
115 |
" |
|
116 |
self run:#test01_crc32 |
|
117 |
self new test01_crc32 |
|
118 |
" |
|
119 |
! |
|
120 |
||
121 |
test02_md5 |
|
122 |
|h| |
|
123 |
||
124 |
h := MD5Stream hashValueOf:''. |
|
125 |
self assert:(h = (ByteArray fromHexString:'d41d8cd98f00b204e9800998ecf8427e')). |
|
126 |
||
127 |
h := MD5Stream hashValueOf:'The quick brown fox jumps over the lazy dog'. |
|
128 |
self assert:(h = (ByteArray fromHexString:'9e107d9d372bb6826bd81d3542a419d6')). |
|
129 |
||
130 |
h := MD5Stream hashValueOf:'abc'. |
|
1447 | 131 |
self assert:(h = #[16r90 16r01 16r50 16r98 16r3C 16rD2 16r4F 16rB0 |
132 |
16rD6 16r96 16r3F 16r7D 16r28 16rE1 16r7F 16r72]). |
|
805 | 133 |
|
134 |
h := MD5Stream hashValueOf:'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'. |
|
1447 | 135 |
self assert:(h = #[16r82 16r15 16rEF 16r07 16r96 16rA2 16r0B 16rCA |
136 |
16rAA 16rE1 16r16 16rD3 16r87 16r6C 16r66 16r4A]). |
|
805 | 137 |
|
138 |
h := (MD5Stream new |
|
1447 | 139 |
next:1000000 put:$a; |
140 |
hashValue). |
|
141 |
self assert:(h = #[16r77 16r07 16rD6 16rAE 16r4E 16r02 16r7C 16r70 |
|
142 |
16rEE 16rA2 16rA9 16r35 16rC2 16r29 16r6F 16r21]). |
|
805 | 143 |
|
144 |
" |
|
145 |
self run:#test02_md5 |
|
146 |
self new test02_md5 |
|
147 |
" |
|
148 |
! |
|
149 |
||
150 |
test03_sha1 |
|
151 |
|h| |
|
152 |
||
153 |
h := SHA1Stream hashValueOf:''. |
|
154 |
self assert:(h = (ByteArray fromHexString:'da39a3ee5e6b4b0d3255bfef95601890afd80709')). |
|
155 |
||
156 |
h := SHA1Stream hashValueOf:'The quick brown fox jumps over the lazy dog'. |
|
157 |
self assert:(h = (ByteArray fromHexString:'2fd4e1c67a2d28fced849ee1bb76e7391b93eb12')). |
|
158 |
||
1022
abdf6a161bc3
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1020
diff
changeset
|
159 |
h := SHA1Stream hashValueOf:#[16r00 16r01 16r02 16r40 16r08 16r10 16r20 16r40 16r80 |
1447 | 160 |
16rFF 16rFE 16rFC 16rF8 16rF0 16rE0 16rC0 16r80]. |
1022
abdf6a161bc3
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1020
diff
changeset
|
161 |
self assert:(h = #[146 31 26 53 78 167 121 73 144 117 145 88 50 42 25 52 53 37 177 73]). |
abdf6a161bc3
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1020
diff
changeset
|
162 |
|
805 | 163 |
" |
164 |
self run:#test03_sha1 |
|
165 |
self new test03_sha1 |
|
166 |
" |
|
1022
abdf6a161bc3
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1020
diff
changeset
|
167 |
|
abdf6a161bc3
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1020
diff
changeset
|
168 |
"Modified: / 25-11-2013 / 11:42:46 / cg" |
805 | 169 |
! |
170 |
||
1038
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
171 |
test03b_sha1 |
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
172 |
|h| |
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
173 |
|
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
174 |
h := SHA1Stream hashValueOf:#[48 130 2 149 160 3 2 1 2 2 1 6 48 13 6 9 42 134 72 134 247 13 1 1 5 5 0 48 111 49 25 48 23 6 3 85 4 3 19 16 69 120 101 112 116 32 76 101 118 101 108 32 50 32 67 65 49 11 48 9 6 3 85 4 6 19 2 68 69 49 26 48 24 6 3 85 4 10 19 17 69 120 101 112 116 32 83 111 102 116 119 97 114 101 32 65 71 49 11 48 9 6 3 85 4 11 19 2 67 65 49 28 48 26 6 9 42 134 72 134 247 13 1 9 1 22 13 99 101 114 116 64 101 120 101 112 116 46 100 101 48 30 23 13 48 56 48 52 50 50 50 48 48 48 48 48 90 23 13 49 54 48 54 48 49 49 57 53 57 53 57 90 48 72 49 11 48 9 6 3 85 4 6 19 2 68 69 49 26 48 24 6 3 85 4 10 19 17 69 120 101 112 116 32 83 111 102 116 119 97 114 101 32 65 71 49 29 48 27 6 3 85 4 3 19 20 101 120 112 101 99 99 111 32 99 111 100 101 32 115 105 103 110 105 110 103 48 129 159 48 13 6 9 42 134 72 134 247 13 1 1 1 5 0 3 129 141 0 48 129 137 2 129 129 0 199 150 115 153 147 36 175 136 129 9 92 77 196 254 201 72 55 141 131 27 57 64 226 5 191 35 239 72 236 142 151 98 19 209 37 164 153 24 185 170 82 62 223 250 229 224 59 238 40 73 29 84 83 109 2 188 117 254 37 86 32 136 145 32 255 118 90 26 62 76 137 45 196 88 220 234 231 81 63 165 29 158 212 132 117 227 250 68 249 54 42 54 69 145 185 217 234 66 192 205 240 247 173 215 243 64 30 52 116 19 113 47 189 90 216 64 241 30 193 187 185 219 5 35 231 222 30 183 2 3 1 0 1 163 129 254 48 129 251 48 9 6 3 85 29 19 4 2 48 0 48 29 6 3 85 29 14 4 22 4 20 142 53 132 147 2 27 121 108 9 10 151 194 20 232 134 227 84 160 251 55 48 129 153 6 3 85 29 35 4 129 145 48 129 142 128 20 36 157 29 207 97 136 114 233 22 165 218 37 28 117 161 157 224 230 74 178 161 115 164 113 48 111 49 25 48 23 6 3 85 4 3 19 16 69 120 101 112 116 32 76 101 118 101 108 32 49 32 67 65 49 11 48 9 6 3 85 4 6 19 2 68 69 49 26 48 24 6 3 85 4 10 19 17 69 120 101 112 116 32 83 111 102 116 119 97 114 101 32 65 71 49 11 48 9 6 3 85 4 11 19 2 67 65 49 28 48 26 6 9 42 134 72 134 247 13 1 9 1 22 13 99 101 114 116 64 101 120 101 112 116 46 100 101 130 1 2 48 11 6 3 85 29 15 4 4 3 2 7 128 48 19 6 3 85 29 37 4 12 48 10 6 8 43 6 1 5 5 7 3 3 48 17 6 9 96 134 72 1 134 248 66 1 1 4 4 3 2 4 16]. |
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
175 |
self assert:(h = #[152 185 22 239 129 56 192 23 215 67 254 147 139 91 251 28 96 142 185 186]). |
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
176 |
|
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
177 |
" |
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
178 |
self run:#test03b_sha1 |
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
179 |
self new test03b_sha1 |
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
180 |
" |
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
181 |
|
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
182 |
"Created: / 24-01-2014 / 17:47:22 / cg" |
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
183 |
! |
5443ea4b780e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1036
diff
changeset
|
184 |
|
805 | 185 |
test04_md2 |
186 |
|h| |
|
187 |
||
1447 | 188 |
self |
189 |
skipIf:(MD2Stream isBehavior not or:[MD2Stream isLoaded not]) |
|
190 |
description:'MD2Stream/libcrypt is not loaded'. |
|
951
d9fe0a97fc74
class: RegressionTests::CryptTests
Stefan Vogel <sv@exept.de>
parents:
936
diff
changeset
|
191 |
|
805 | 192 |
h := MD2Stream hashValueOf:''. |
193 |
self assert:(h = (ByteArray fromHexString:'8350e5a3e24c153df2275c9f80692773')). |
|
194 |
||
195 |
h := MD2Stream hashValueOf:'The quick brown fox jumps over the lazy dog'. |
|
196 |
self assert:(h = (ByteArray fromHexString:'03d85a0d629d2c442e987525319fc471')). |
|
197 |
||
198 |
" |
|
199 |
self run:#test04_md2 |
|
200 |
self new test04_md2 |
|
201 |
" |
|
202 |
! |
|
203 |
||
204 |
test05_md4 |
|
205 |
|h| |
|
206 |
||
1447 | 207 |
self |
208 |
skipIf:(MD4Stream isBehavior not or:[MD4Stream isLoaded not]) |
|
209 |
description:'MD4Stream/libcrypt is not loaded'. |
|
951
d9fe0a97fc74
class: RegressionTests::CryptTests
Stefan Vogel <sv@exept.de>
parents:
936
diff
changeset
|
210 |
|
805 | 211 |
h := MD4Stream hashValueOf:''. |
212 |
self assert:(h = (ByteArray fromHexString:'31d6cfe0d16ae931b73c59d7e0c089c0')). |
|
213 |
||
214 |
h := MD4Stream hashValueOf:'The quick brown fox jumps over the lazy dog'. |
|
215 |
self assert:(h = (ByteArray fromHexString:'1bee69a46ba811185c194762abaeae90')). |
|
216 |
||
217 |
" |
|
218 |
self run:#test05_md4 |
|
219 |
self new test05_md4 |
|
220 |
" |
|
221 |
! |
|
222 |
||
223 |
test06_sha256 |
|
224 |
|h| |
|
225 |
||
1447 | 226 |
self |
227 |
skipIf:(SHA256Stream isBehavior not or:[SHA256Stream isLoaded not]) |
|
228 |
description:'SHA256Stream/libcrypt is not loaded'. |
|
951
d9fe0a97fc74
class: RegressionTests::CryptTests
Stefan Vogel <sv@exept.de>
parents:
936
diff
changeset
|
229 |
|
805 | 230 |
h := SHA256Stream hashValueOf:''. |
231 |
self assert:(h = (ByteArray fromHexString:'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855')). |
|
232 |
||
233 |
h := SHA256Stream hashValueOf:'The quick brown fox jumps over the lazy dog'. |
|
234 |
self assert:(h = (ByteArray fromHexString:'d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592')). |
|
235 |
||
236 |
" |
|
237 |
self run:#test06_sha256 |
|
238 |
self new test06_sha256 |
|
239 |
" |
|
240 |
! |
|
241 |
||
242 |
test07_sha224 |
|
243 |
|h| |
|
244 |
||
1447 | 245 |
self |
246 |
skipIf:(SHA224Stream isBehavior not or:[SHA224Stream isLoaded not]) |
|
247 |
description:'SHA224Stream/libcrypt is not loaded'. |
|
951
d9fe0a97fc74
class: RegressionTests::CryptTests
Stefan Vogel <sv@exept.de>
parents:
936
diff
changeset
|
248 |
|
805 | 249 |
h := SHA224Stream hashValueOf:''. |
250 |
self assert:(h = (ByteArray fromHexString:'d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f')). |
|
251 |
||
252 |
h := SHA224Stream hashValueOf:'The quick brown fox jumps over the lazy dog'. |
|
253 |
self assert:(h = (ByteArray fromHexString:'730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525')). |
|
254 |
||
255 |
" |
|
256 |
self run:#test07_sha224 |
|
257 |
self new test07_sha224 |
|
258 |
" |
|
259 |
! |
|
260 |
||
261 |
test08_sha384 |
|
262 |
|h| |
|
263 |
||
1447 | 264 |
self |
265 |
skipIf:(SHA384Stream isBehavior not or:[SHA384Stream isLoaded not]) |
|
266 |
description:'SHA384Stream/libcrypt is not loaded'. |
|
951
d9fe0a97fc74
class: RegressionTests::CryptTests
Stefan Vogel <sv@exept.de>
parents:
936
diff
changeset
|
267 |
|
805 | 268 |
h := SHA384Stream hashValueOf:''. |
269 |
self assert:(h = (ByteArray fromHexString:'38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b')). |
|
270 |
||
271 |
h := SHA384Stream hashValueOf:'The quick brown fox jumps over the lazy dog'. |
|
272 |
self assert:(h = (ByteArray fromHexString:'ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1')). |
|
273 |
||
274 |
" |
|
275 |
self run:#test08_sha384 |
|
276 |
self new test08_sha384 |
|
277 |
" |
|
278 |
! |
|
279 |
||
280 |
test09_sha512 |
|
281 |
|h| |
|
282 |
||
1447 | 283 |
self |
284 |
skipIf:(SHA512Stream isBehavior not or:[SHA512Stream isLoaded not]) |
|
285 |
description:'SHA512Stream/libcrypt is not loaded'. |
|
951
d9fe0a97fc74
class: RegressionTests::CryptTests
Stefan Vogel <sv@exept.de>
parents:
936
diff
changeset
|
286 |
|
805 | 287 |
h := SHA512Stream hashValueOf:''. |
288 |
self assert:(h = (ByteArray fromHexString:'cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e')). |
|
289 |
||
290 |
h := SHA512Stream hashValueOf:'The quick brown fox jumps over the lazy dog'. |
|
291 |
self assert:(h = (ByteArray fromHexString:'07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6')). |
|
292 |
||
293 |
" |
|
294 |
self run:#test09_sha512 |
|
295 |
self new test09_sha512 |
|
296 |
" |
|
1020
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
297 |
! |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
298 |
|
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
299 |
test10_des |
1447 | 300 |
|des crypt s s2| |
1020
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
301 |
|
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
302 |
des := DesCipher new key:#[12 34 56 78 90 12 34 56]. |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
303 |
crypt := des encrypt:'12345678'. |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
304 |
self assert:(crypt = #[85 205 168 117 136 155 222 239]). |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
305 |
|
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
306 |
"/ ------------------------------------------------ |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
307 |
|
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
308 |
des := DesCipher new key:#[12 34 56 78 90 12 34 56]. |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
309 |
s := '12345678'. |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
310 |
10 timesRepeat:[ |
1447 | 311 |
s2 := ByteArray new:s size. |
312 |
des cryptBlock:s from:1 "to:nil" into:s2 startingAt:1 encrypt:true. |
|
313 |
s := s2. |
|
1020
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
314 |
]. |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
315 |
self assert:(s = #[212 114 83 160 109 1 37 83]). |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
316 |
|
1023
ddc17abfb668
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1022
diff
changeset
|
317 |
"/ ------------------------------------------------ |
ddc17abfb668
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1022
diff
changeset
|
318 |
|
ddc17abfb668
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1022
diff
changeset
|
319 |
des := DesCipher new key:#[16rFF 16r80 56 78 90 12 34 56]. |
ddc17abfb668
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1022
diff
changeset
|
320 |
crypt := des encrypt:'12345678'. |
ddc17abfb668
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1022
diff
changeset
|
321 |
self assert:(crypt = #[54 60 159 218 32 8 70 60]). |
ddc17abfb668
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1022
diff
changeset
|
322 |
|
ddc17abfb668
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1022
diff
changeset
|
323 |
|
1020
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
324 |
" |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
325 |
self run:#test10_des |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
326 |
self new test10_des |
a1a9948420e1
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
951
diff
changeset
|
327 |
" |
1023
ddc17abfb668
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1022
diff
changeset
|
328 |
|
ddc17abfb668
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1022
diff
changeset
|
329 |
"Modified: / 25-11-2013 / 11:45:34 / cg" |
1035
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
330 |
! |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
331 |
|
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
332 |
test11_rsaKey |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
333 |
|dir fn key ks plain cipher| |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
334 |
|
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
335 |
dir := Smalltalk packageDirectoryForPackageId:'exept:expecco'. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
336 |
self skipIf:dir isNil description:'directory with test key is not present'. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
337 |
fn := dir asFilename construct:'license/expeccoKey.pem'. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
338 |
self skipIf:fn exists not description:'test key is not present'. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
339 |
|
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
340 |
key := RSASecretCryptKey fromPemStream:fn readStream. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
341 |
|
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
342 |
ks := RSACryptStream new. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
343 |
ks encryptWithSecretKey:true. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
344 |
ks key:key. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
345 |
ks stream:#[] writeStream. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
346 |
|
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
347 |
plain := '12345678901234567890'. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
348 |
ks encrypt:plain. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
349 |
cipher := ks stream contents. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
350 |
|
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
351 |
ks := RSACryptStream new. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
352 |
ks encryptWithSecretKey:true. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
353 |
ks key:key. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
354 |
ks stream:#[] writeStream. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
355 |
|
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
356 |
ks decrypt:cipher. |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
357 |
|
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
358 |
self assert:(ks stream contents asString = plain). |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
359 |
|
1036
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
360 |
"/ ------------------------------------------- |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
361 |
|
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
362 |
ks := RSACryptStream new. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
363 |
ks encryptWithSecretKey:true. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
364 |
ks key:key. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
365 |
ks stream:#[] writeStream. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
366 |
|
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
367 |
plain := #[16rFF 16r80 16r00]. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
368 |
ks encrypt:plain. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
369 |
cipher := ks stream contents. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
370 |
|
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
371 |
ks := RSACryptStream new. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
372 |
ks encryptWithSecretKey:true. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
373 |
ks key:key. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
374 |
ks stream:#[] writeStream. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
375 |
|
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
376 |
ks decrypt:cipher. |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
377 |
|
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
378 |
self assert:(ks stream contents = plain). |
c42c54df984e
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1035
diff
changeset
|
379 |
|
1035
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
380 |
" |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
381 |
self run:#test11_rsaKey |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
382 |
self new test11_rsaKey |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
383 |
" |
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
384 |
|
2be1f5b478ca
class: RegressionTests::CryptTests
Claus Gittinger <cg@exept.de>
parents:
1023
diff
changeset
|
385 |
"Created: / 02-12-2013 / 12:58:19 / cg" |
1511 | 386 |
! |
387 |
||
388 |
test12_whirlpool |
|
389 |
|h| |
|
390 |
||
391 |
self |
|
392 |
skipIf:(WhirlpoolStream isBehavior not or:[WhirlpoolStream isLoaded not]) |
|
393 |
description:'WhirlpoolStream/libcrypt is not loaded'. |
|
394 |
||
395 |
"/ hashes taken from wikipedia-page on whirlpool |
|
396 |
||
397 |
h := WhirlpoolStream hashValueOf:''. |
|
398 |
self assert:(h = (ByteArray fromHexString:'19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A73E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3')). |
|
399 |
||
400 |
h := WhirlpoolStream hashValueOf:'The quick brown fox jumps over the lazy dog'. |
|
401 |
self assert:(h = (ByteArray fromHexString:'B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725FD2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35')). |
|
402 |
||
1512 | 403 |
h := WhirlpoolStream hashValueOf:'The quick brown fox jumps over the lazy eog'. |
404 |
self assert:(h = (ByteArray fromHexString:'C27BA124205F72E6847F3E19834F925CC666D0974167AF915BB462420ED40CC50900D85A1F923219D832357750492D5C143011A76988344C2635E69D06F2D38C')). |
|
405 |
||
1511 | 406 |
" |
407 |
self run:#test12_whirlpool |
|
408 |
self new test12_whirlpool |
|
409 |
" |
|
1649 | 410 |
! |
411 |
||
412 |
test13_sha3 |
|
413 |
|h| |
|
414 |
||
415 |
self |
|
416 |
skipIf:(SHA3_256Stream isBehavior not or:[SHA3_256Stream isLoaded not]) |
|
417 |
description:'SHA3Stream/libcrypt is not loaded'. |
|
418 |
||
419 |
"/ hashes taken from wikipedia-page on SHA3 |
|
420 |
||
421 |
h := SHA3_224Stream hashValueOf:''. |
|
422 |
self assert:(h = (ByteArray fromHexString:'6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7')). |
|
423 |
||
424 |
h := SHA3_256Stream hashValueOf:''. |
|
425 |
self assert:(h = (ByteArray fromHexString:'a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a')). |
|
426 |
||
427 |
h := SHA3_384Stream hashValueOf:''. |
|
428 |
self assert:(h = (ByteArray fromHexString:'0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004')). |
|
429 |
||
430 |
h := SHA3_512Stream hashValueOf:''. |
|
431 |
self assert:(h = (ByteArray fromHexString:'a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26')). |
|
432 |
||
433 |
||
434 |
h := SHA3_Shake128_256Stream hashValueOf:''. |
|
435 |
self assert:(h = (ByteArray fromHexString:'7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26')). |
|
436 |
||
437 |
h := SHA3_Shake256_512Stream hashValueOf:''. |
|
438 |
self assert:(h = (ByteArray fromHexString:'46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be')). |
|
439 |
||
440 |
h := SHA3_Shake128_256Stream hashValueOf:'The quick brown fox jumps over the lazy dog'. |
|
441 |
self assert:(h = (ByteArray fromHexString:'f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e')). |
|
442 |
||
443 |
h := SHA3_Shake128_256Stream hashValueOf:'The quick brown fox jumps over the lazy dof'. |
|
444 |
self assert:(h = (ByteArray fromHexString:'853f4538be0db9621a6cea659a06c1107b1f83f02b13d18297bd39d7411cf10c')). |
|
445 |
||
446 |
" |
|
447 |
self run:#test13_sha3 |
|
448 |
self new test13_sha3 |
|
449 |
" |
|
450 |
||
451 |
"Created: / 27-07-2017 / 13:40:51 / cg" |
|
1690 | 452 |
! |
453 |
||
454 |
test14_aesRijndael |
|
455 |
|plaintext key crypted hx ecb cbc ofb ctr iv| |
|
456 |
||
457 |
"/ ECB-AES-256 |
|
458 |
||
459 |
plaintext := #[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
460 |
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ]. |
|
461 |
key := #[ 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
|
462 |
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]. |
|
463 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
464 |
crypted := ecb encrypt:plaintext. |
|
465 |
hx := crypted hexPrintString asLowercase. |
|
466 |
self assert:(hx = 'f2258e225d794572393a6484cfced7cf925d1aa18366bcd93c33d104294c8a6f'). |
|
467 |
||
468 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
469 |
self assert:(ecb decrypt:crypted) = plaintext. |
|
470 |
plaintext := #[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
471 |
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ]. |
|
472 |
key := #[ 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
|
473 |
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]. |
|
474 |
cbc := RijndaelCipher new key:key mode:#CBC. |
|
475 |
crypted := cbc encrypt:plaintext. |
|
476 |
hx := crypted hexPrintString asLowercase. |
|
477 |
self assert:(hx = 'f2258e225d794572393a6484cfced7cfb487a41f6b6286c00c9c8d80cb3ee9f8'). |
|
478 |
cbc := RijndaelCipher new key:key mode:#CBC. |
|
479 |
self assert:(cbc decrypt:crypted) = plaintext. |
|
480 |
||
481 |
"/ ECB-AES-256 |
|
482 |
||
483 |
plaintext := #[ 0 17 34 51 68 85 102 119 |
|
484 |
136 153 170 187 204 221 238 255 ] asString. |
|
485 |
key := #[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
486 |
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ] asString. |
|
487 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
488 |
crypted := ecb encrypt:plaintext. |
|
489 |
hx := crypted hexPrintString asLowercase. |
|
490 |
self assert:(hx = '8ea2b7ca516745bfeafc49904b496089'). |
|
491 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
492 |
self assert:(ecb decrypt:crypted) asString = plaintext. |
|
493 |
||
494 |
"/ ECB-AES-192 |
|
495 |
||
496 |
plaintext := #[ 0 17 34 51 68 85 102 119 |
|
497 |
136 153 170 187 204 221 238 255 ] asString. |
|
498 |
key := #[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
499 |
16 17 18 19 20 21 22 23 ] asString. |
|
500 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
501 |
crypted := ecb encrypt:plaintext. |
|
502 |
hx := crypted hexPrintString asLowercase. |
|
503 |
self assert:(hx = 'dda97ca4864cdfe06eaf70a0ec0d7191'). |
|
504 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
505 |
self assert:(ecb decrypt:crypted) asString = plaintext. |
|
506 |
||
507 |
"/ ECB-AES-128 |
|
508 |
||
509 |
plaintext := #[ 0 17 34 51 68 85 102 119 |
|
510 |
136 153 170 187 204 221 238 255 ] asString. |
|
511 |
key := #[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ] asString. |
|
512 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
513 |
crypted := ecb encrypt:plaintext. |
|
514 |
hx := crypted hexPrintString asLowercase. |
|
515 |
self assert:(hx = '69c4e0d86a7b0430d8cdb78070b4c55a'). |
|
516 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
517 |
self assert:(ecb decrypt:crypted) asString = plaintext. |
|
518 |
||
519 |
"/ Modes of operation -- NIST paper tests |
|
520 |
"/ ECB-AES-128 |
|
521 |
||
522 |
key := #[ 43 126 21 22 40 174 210 166 171 247 21 136 9 207 79 60 ]. |
|
523 |
plaintext := #[ 107 193 190 226 46 64 159 150 233 61 126 17 115 147 23 42 174 45 138 87 30 3 172 156 158 183 111 172 69 175 142 81 48 200 28 70 163 92 228 17 229 251 193 25 26 10 82 239 246 159 36 69 223 79 155 23 173 43 65 123 230 108 55 16 ]. |
|
524 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
525 |
crypted := ecb encrypt:plaintext. |
|
526 |
hx := crypted hexPrintString asLowercase. |
|
527 |
self assert:(hx |
|
528 |
= '3ad77bb40d7a3660a89ecaf32466ef97f5d3d58503b9699de785895a96fdbaaf43b1cd7f598ece23881b00e3ed0306887b0c785e27e8ad3f8223207104725dd4'). |
|
529 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
530 |
self assert:(ecb decrypt:crypted) = plaintext. |
|
531 |
||
532 |
"/ ECB-AES-192 |
|
533 |
||
534 |
key := #[ 142 115 176 247 218 14 100 82 200 16 243 43 128 144 121 229 98 248 234 210 82 44 107 123 ]. |
|
535 |
plaintext := #[ 107 193 190 226 46 64 159 150 233 61 126 17 115 147 23 42 174 45 138 87 30 3 172 156 158 183 111 172 69 175 142 81 48 200 28 70 163 92 228 17 229 251 193 25 26 10 82 239 246 159 36 69 223 79 155 23 173 43 65 123 230 108 55 16 ]. |
|
536 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
537 |
crypted := ecb encrypt:plaintext. |
|
538 |
hx := crypted hexPrintString asLowercase. |
|
539 |
self assert:(hx |
|
540 |
= 'bd334f1d6e45f25ff712a214571fa5cc974104846d0ad3ad7734ecb3ecee4eefef7afd2270e2e60adce0ba2face6444e9a4b41ba738d6c72fb16691603c18e0e'). |
|
541 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
542 |
self assert:(ecb decrypt:crypted) = plaintext. |
|
543 |
||
544 |
"/ ECB-AES-256 |
|
545 |
||
546 |
key := ('603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4' |
|
547 |
pairWiseCollect:[:b1 :b2 | |
|
548 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
549 |
]) |
|
550 |
asByteArray. |
|
551 |
plaintext := ('6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710' |
|
552 |
pairWiseCollect:[:b1 :b2 | |
|
553 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
554 |
]) |
|
555 |
asByteArray. |
|
556 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
557 |
crypted := ecb encrypt:plaintext. |
|
558 |
hx := crypted hexPrintString asLowercase. |
|
559 |
self assert:(hx |
|
560 |
= 'f3eed1bdb5d2a03c064b5a7e3db181f8591ccb10d410ed26dc5ba74a31362870b6ed21b99ca6f4f9f153e7b1beafed1d23304b7a39f9f3ff067d8d8f9e24ecc7'). |
|
561 |
ecb := RijndaelCipher new key:key mode:#ECB. |
|
562 |
self assert:(ecb decrypt:crypted) = plaintext. |
|
563 |
||
564 |
"/ CBC-AES-128 |
|
565 |
||
566 |
key := ('2b7e151628aed2a6abf7158809cf4f3c' |
|
567 |
pairWiseCollect:[:b1 :b2 | |
|
568 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
569 |
]) |
|
570 |
asByteArray. |
|
571 |
plaintext := ('6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710' |
|
572 |
pairWiseCollect:[:b1 :b2 | |
|
573 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
574 |
]) |
|
575 |
asByteArray. |
|
576 |
iv := ('000102030405060708090a0b0c0d0e0f' |
|
577 |
pairWiseCollect:[:b1 :b2 | |
|
578 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
579 |
]) |
|
580 |
asByteArray. |
|
581 |
cbc := RijndaelCipher new key:key mode:#CBC. |
|
582 |
cbc initializationVector:iv. |
|
583 |
crypted := cbc encrypt:plaintext. |
|
584 |
hx := crypted hexPrintString asLowercase. |
|
585 |
self assert:(hx |
|
586 |
= '7649abac8119b246cee98e9b12e9197d5086cb9b507219ee95db113a917678b273bed6b8e3c1743b7116e69e222295163ff1caa1681fac09120eca307586e1a7'). |
|
587 |
cbc initializationVector:iv. |
|
588 |
self assert:(cbc decrypt:crypted) = plaintext. |
|
589 |
||
590 |
"/ CBC-AES-192 |
|
591 |
||
592 |
key := ('8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b' |
|
593 |
pairWiseCollect:[:b1 :b2 | |
|
594 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
595 |
]) |
|
596 |
asByteArray. |
|
597 |
plaintext := ('6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710' |
|
598 |
pairWiseCollect:[:b1 :b2 | |
|
599 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
600 |
]) |
|
601 |
asByteArray. |
|
602 |
iv := ('000102030405060708090a0b0c0d0e0f' |
|
603 |
pairWiseCollect:[:b1 :b2 | |
|
604 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
605 |
]) |
|
606 |
asByteArray. |
|
607 |
cbc := RijndaelCipher new key:key mode:#CBC. |
|
608 |
cbc initializationVector:iv. |
|
609 |
crypted := cbc encrypt:plaintext. |
|
610 |
hx := crypted hexPrintString asLowercase. |
|
611 |
self assert:(hx |
|
612 |
= '4f021db243bc633d7178183a9fa071e8b4d9ada9ad7dedf4e5e738763f69145a571b242012fb7ae07fa9baac3df102e008b0e27988598881d920a9e64f5615cd'). |
|
613 |
cbc initializationVector:iv. |
|
614 |
self assert:(cbc decrypt:crypted) = plaintext. |
|
615 |
||
616 |
"/ CBC-AES-256 |
|
617 |
||
618 |
key := ('603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4' |
|
619 |
pairWiseCollect:[:b1 :b2 | |
|
620 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
621 |
]) |
|
622 |
asByteArray. |
|
623 |
plaintext := ('6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710' |
|
624 |
pairWiseCollect:[:b1 :b2 | |
|
625 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
626 |
]) |
|
627 |
asByteArray. |
|
628 |
iv := ('000102030405060708090a0b0c0d0e0f' |
|
629 |
pairWiseCollect:[:b1 :b2 | |
|
630 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
631 |
]) |
|
632 |
asByteArray. |
|
633 |
cbc := RijndaelCipher new key:key mode:#CBC. |
|
634 |
cbc initializationVector:iv. |
|
635 |
crypted := cbc encrypt:plaintext. |
|
636 |
hx := crypted hexPrintString asLowercase. |
|
637 |
self assert:(hx |
|
638 |
= 'f58c4c04d6e5f1ba779eabfb5f7bfbd69cfc4e967edb808d679f777bc6702c7d39f23369a9d9bacfa530e26304231461b2eb05e2c39be9fcda6c19078c6a9d1b'). |
|
639 |
cbc initializationVector:iv. |
|
640 |
self assert:(cbc decrypt:crypted) = plaintext. |
|
641 |
||
642 |
"/ CFB128-AES-128 |
|
643 |
||
644 |
key := ('2b7e151628aed2a6abf7158809cf4f3c' |
|
645 |
pairWiseCollect:[:b1 :b2 | |
|
646 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
647 |
]) |
|
648 |
asByteArray. |
|
649 |
plaintext := ('6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710' |
|
650 |
pairWiseCollect:[:b1 :b2 | |
|
651 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
652 |
]) |
|
653 |
asByteArray. |
|
654 |
iv := ('000102030405060708090a0b0c0d0e0f' |
|
655 |
pairWiseCollect:[:b1 :b2 | |
|
656 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
657 |
]) |
|
658 |
asByteArray. |
|
659 |
cbc := RijndaelCipher new key:key mode:#CFB. |
|
660 |
cbc initializationVector:iv. |
|
661 |
crypted := cbc encrypt:plaintext. |
|
662 |
hx := crypted hexPrintString asLowercase. |
|
663 |
self assert:(hx |
|
664 |
= '3b3fd92eb72dad20333449f8e83cfb4ac8a64537a0b3a93fcde3cdad9f1ce58b26751f67a3cbb140b1808cf187a4f4dfc04b05357c5d1c0eeac4c66f9ff7f2e6'). |
|
665 |
cbc initializationVector:iv. |
|
666 |
self assert:(cbc decrypt:crypted) = plaintext. |
|
667 |
||
668 |
"/ CFB128-AES-192 |
|
669 |
||
670 |
key := ('8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b' |
|
671 |
pairWiseCollect:[:b1 :b2 | |
|
672 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
673 |
]) |
|
674 |
asByteArray. |
|
675 |
plaintext := ('6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710' |
|
676 |
pairWiseCollect:[:b1 :b2 | |
|
677 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
678 |
]) |
|
679 |
asByteArray. |
|
680 |
iv := ('000102030405060708090a0b0c0d0e0f' |
|
681 |
pairWiseCollect:[:b1 :b2 | |
|
682 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
683 |
]) |
|
684 |
asByteArray. |
|
685 |
cbc := RijndaelCipher new key:key mode:#CFB. |
|
686 |
cbc initializationVector:iv. |
|
687 |
crypted := cbc encrypt:plaintext. |
|
688 |
hx := crypted hexPrintString asLowercase. |
|
689 |
self assert:(hx |
|
690 |
= 'cdc80d6fddf18cab34c25909c99a417467ce7f7f81173621961a2b70171d3d7a2e1e8a1dd59b88b1c8e60fed1efac4c9c05f9f9ca9834fa042ae8fba584b09ff'). |
|
691 |
cbc initializationVector:iv. |
|
692 |
self assert:(cbc decrypt:crypted) = plaintext. |
|
693 |
||
694 |
"/ CFB128-AES-256 |
|
695 |
||
696 |
key := ('603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4' |
|
697 |
pairWiseCollect:[:b1 :b2 | |
|
698 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
699 |
]) |
|
700 |
asByteArray. |
|
701 |
plaintext := ('6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710' |
|
702 |
pairWiseCollect:[:b1 :b2 | |
|
703 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
704 |
]) |
|
705 |
asByteArray. |
|
706 |
iv := ('000102030405060708090a0b0c0d0e0f' |
|
707 |
pairWiseCollect:[:b1 :b2 | |
|
708 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
709 |
]) |
|
710 |
asByteArray. |
|
711 |
cbc := RijndaelCipher new key:key mode:#CFB. |
|
712 |
cbc initializationVector:iv. |
|
713 |
crypted := cbc encrypt:plaintext. |
|
714 |
hx := crypted hexPrintString asLowercase. |
|
715 |
self assert:(hx |
|
716 |
= 'dc7e84bfda79164b7ecd8486985d386039ffed143b28b1c832113c6331e5407bdf10132415e54b92a13ed0a8267ae2f975a385741ab9cef82031623d55b1e471'). |
|
717 |
cbc initializationVector:iv. |
|
718 |
self assert:(cbc decrypt:crypted) = plaintext. |
|
719 |
||
720 |
"/ OFB-AES-128 |
|
721 |
||
722 |
key := ('2b7e151628aed2a6abf7158809cf4f3c' |
|
723 |
pairWiseCollect:[:b1 :b2 | |
|
724 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
725 |
]) |
|
726 |
asByteArray. |
|
727 |
plaintext := ('6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710' |
|
728 |
pairWiseCollect:[:b1 :b2 | |
|
729 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
730 |
]) |
|
731 |
asByteArray. |
|
732 |
iv := ('000102030405060708090a0b0c0d0e0f' |
|
733 |
pairWiseCollect:[:b1 :b2 | |
|
734 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
735 |
]) |
|
736 |
asByteArray. |
|
737 |
ofb := RijndaelCipher new key:key mode:#OFB. |
|
738 |
ofb initializationVector:iv. |
|
739 |
crypted := ofb encrypt:plaintext. |
|
740 |
hx := crypted hexPrintString asLowercase. |
|
741 |
self assert:(hx |
|
742 |
= '3b3fd92eb72dad20333449f8e83cfb4a7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5e'). |
|
743 |
ofb initializationVector:iv. |
|
744 |
self assert:(ofb decrypt:crypted) = plaintext. |
|
745 |
||
746 |
"/ OFB-AES-192 |
|
747 |
||
748 |
key := ('8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b' |
|
749 |
pairWiseCollect:[:b1 :b2 | |
|
750 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
751 |
]) |
|
752 |
asByteArray. |
|
753 |
plaintext := ('6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710' |
|
754 |
pairWiseCollect:[:b1 :b2 | |
|
755 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
756 |
]) |
|
757 |
asByteArray. |
|
758 |
iv := ('000102030405060708090a0b0c0d0e0f' |
|
759 |
pairWiseCollect:[:b1 :b2 | |
|
760 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
761 |
]) |
|
762 |
asByteArray. |
|
763 |
ofb := RijndaelCipher new key:key mode:#OFB. |
|
764 |
ofb initializationVector:iv. |
|
765 |
crypted := ofb encrypt:plaintext. |
|
766 |
hx := crypted hexPrintString asLowercase. |
|
767 |
self assert:(hx |
|
768 |
= 'cdc80d6fddf18cab34c25909c99a4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92a'). |
|
769 |
ofb initializationVector:iv. |
|
770 |
self assert:(ofb decrypt:crypted) = plaintext. |
|
771 |
||
772 |
"/ OFB-AES-256 |
|
773 |
||
774 |
key := ('603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4' |
|
775 |
pairWiseCollect:[:b1 :b2 | |
|
776 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
777 |
]) |
|
778 |
asByteArray. |
|
779 |
plaintext := ('6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710' |
|
780 |
pairWiseCollect:[:b1 :b2 | |
|
781 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
782 |
]) |
|
783 |
asByteArray. |
|
784 |
iv := ('000102030405060708090a0b0c0d0e0f' |
|
785 |
pairWiseCollect:[:b1 :b2 | |
|
786 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
787 |
]) |
|
788 |
asByteArray. |
|
789 |
ofb := RijndaelCipher new key:key mode:#OFB. |
|
790 |
ofb initializationVector:iv. |
|
791 |
crypted := ofb encrypt:plaintext. |
|
792 |
hx := crypted hexPrintString asLowercase. |
|
793 |
self assert:(hx |
|
794 |
= 'dc7e84bfda79164b7ecd8486985d38604febdc6740d20b3ac88f6ad82a4fb08d71ab47a086e86eedf39d1c5bba97c4080126141d67f37be8538f5a8be740e484'). |
|
795 |
ofb initializationVector:iv. |
|
796 |
self assert:(ofb decrypt:crypted) = plaintext. |
|
797 |
||
798 |
"/ CTR-AES-128 |
|
799 |
||
800 |
key := ByteArray fromHexString:'2b7e151628aed2a6abf7158809cf4f3c'. |
|
801 |
plaintext := ByteArray |
|
802 |
fromHexString:'6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710'. |
|
803 |
iv := ByteArray fromHexString:'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff'. |
|
804 |
ctr := RijndaelCipher new key:key mode:#CTR. |
|
805 |
ctr initializationVector:iv. |
|
806 |
crypted := ctr encrypt:plaintext. |
|
807 |
hx := crypted hexPrintString asLowercase. |
|
808 |
self assert:(hx |
|
809 |
= '874d6191b620e3261bef6864990db6ce9806f66b7970fdff8617187bb9fffdff5ae4df3edbd5d35e5b4f09020db03eab1e031dda2fbe03d1792170a0f3009cee'). |
|
810 |
ctr initializationVector:iv. |
|
811 |
self assert:(ctr decrypt:crypted) = plaintext. |
|
812 |
||
813 |
"/ CTR-AES-192 |
|
814 |
||
815 |
key := ('8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b' |
|
816 |
pairWiseCollect:[:b1 :b2 | |
|
817 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
818 |
]) |
|
819 |
asByteArray. |
|
820 |
plaintext := ('6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710' |
|
821 |
pairWiseCollect:[:b1 :b2 | |
|
822 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
823 |
]) |
|
824 |
asByteArray. |
|
825 |
iv := ('f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff' |
|
826 |
pairWiseCollect:[:b1 :b2 | |
|
827 |
Character value:(Integer readFrom:(b1 asString , b2) radix:16). |
|
828 |
]) |
|
829 |
asByteArray. |
|
830 |
ctr := RijndaelCipher new key:key mode:#CTR. |
|
831 |
ctr initializationVector:iv. |
|
832 |
crypted := ctr encrypt:plaintext. |
|
833 |
hx := crypted hexPrintString asLowercase. |
|
834 |
self assert:(hx |
|
835 |
= '1abc932417521ca24f2b0459fe7e6e0b090339ec0aa6faefd5ccc2c6f4ce8e941e36b26bd1ebc670d1bd1d665620abf74f78a7f6d29809585a97daec58c6b050'). |
|
836 |
ctr initializationVector:iv. |
|
837 |
self assert:(ctr decrypt:crypted) = plaintext. |
|
838 |
||
839 |
"/ CTR-AES-256 |
|
840 |
||
841 |
key := ByteArray |
|
842 |
fromHexString:'603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4'. |
|
843 |
plaintext := ByteArray |
|
844 |
fromHexString:'6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710'. |
|
845 |
iv := ByteArray fromHexString:'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff'. |
|
846 |
ctr := RijndaelCipher new key:key mode:#CTR. |
|
847 |
ctr initializationVector:iv. |
|
848 |
crypted := ctr encrypt:plaintext. |
|
849 |
hx := crypted hexPrintString asLowercase. |
|
850 |
self assert:(hx |
|
851 |
= '601ec313775789a5b7a7f504bbf3d228f443e3ca4d62b59aca84e990cacaf5c52b0930daa23de94ce87017ba2d84988ddfc9c58db67aada613c2dd08457941a6'). |
|
852 |
ctr initializationVector:iv. |
|
853 |
self assert:(ctr decrypt:crypted) = plaintext. |
|
854 |
||
855 |
" |
|
856 |
self run:#test12_aesRijndael |
|
857 |
self new test12_aesRijndael" |
|
858 |
||
859 |
"Created: / 26-07-2017 / 09:09:22 / cg" |
|
860 |
"Modified (format): / 23-08-2017 / 15:51:45 / cg" |
|
805 | 861 |
! ! |
862 |
||
863 |
!CryptTests class methodsFor:'documentation'! |
|
864 |
||
865 |
version |
|
866 |
^ '$Header$' |
|
867 |
! |
|
868 |
||
869 |
version_CVS |
|
870 |
^ '$Header$' |
|
871 |
! ! |
|
872 |
||
1100
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
873 |
|
1991bf9454ab
Load exept:libcrypt if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1038
diff
changeset
|
874 |
CryptTests initialize! |