OLD | NEW |
| (Empty) |
1 [ | |
2 // F.2.1 (CBC-AES128.Encrypt) | |
3 // http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf | |
4 { | |
5 "key_format": "raw", | |
6 "key": "2b7e151628aed2a6abf7158809cf4f3c", | |
7 "iv": "000102030405060708090a0b0c0d0e0f", | |
8 "plain_text": "6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8
e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710", | |
9 // Added a padding block: encryption of {0x10, 0x10, ... 0x10}) (not given b
y the | |
10 // NIST test vector) | |
11 "cipher_text": "7649abac8119b246cee98e9b12e9197d5086cb9b507219ee95db113a9176
78b273bed6b8e3c1743b7116e69e222295163ff1caa1681fac09120eca307586e1a78cb82807230e
1321d3fae00d18cc2012" | |
12 }, | |
13 | |
14 // F.2.6 CBC-AES256.Decrypt [*] | |
15 // http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf | |
16 // | |
17 // [*] Truncated 3 bytes off the plain text, so block 4 differs from the | |
18 // NIST vector. | |
19 { | |
20 "key_format": "raw", | |
21 "key": "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", | |
22 "iv": "000102030405060708090a0b0c0d0e0f", | |
23 // Truncated the last block to make it more interesting. | |
24 "plain_text": "6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8
e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be6", | |
25 // Last block differs from source vector (due to truncation) | |
26 "cipher_text": "f58c4c04d6e5f1ba779eabfb5f7bfbd69cfc4e967edb808d679f777bc670
2c7d39f23369a9d9bacfa530e26304231461c9aaf02a6a54e9e242ccbf48c59daca6" | |
27 }, | |
28 | |
29 // Taken from encryptor_unittest.cc (EncryptorTest.EmptyEncrypt()) | |
30 { | |
31 "key_format": "raw", | |
32 "key": "3132383d5369787465656e4279746573", | |
33 "iv": "5377656574205369787465656e204956", | |
34 "plain_text": "", | |
35 "cipher_text": "8518b8878d34e7185e300d0fcc426396" | |
36 }, | |
37 | |
38 // Fail encrypting because the IV is too small. | |
39 { | |
40 "key_format": "raw", | |
41 "key": "3132383d5369787465656e4279746573", | |
42 "iv": "5300", | |
43 "plain_text": "0000", | |
44 "encrypt_error": "OperationError: The \"iv\" has an unexpected length -- mus
t be 16 bytes" | |
45 }, | |
46 | |
47 // Fail decrypting because the IV is too small. | |
48 { | |
49 "key_format": "raw", | |
50 "key": "3132383d5369787465656e4279746573", | |
51 "iv": "5300", | |
52 "cipher_text": "8518b8878d34e7185e300d0fcc426396", | |
53 "decrypt_error": "OperationError: The \"iv\" has an unexpected length -- mus
t be 16 bytes" | |
54 }, | |
55 | |
56 // Fail encrypting because the IV is too large. | |
57 { | |
58 "key_format": "raw", | |
59 "key": "3132383d5369787465656e4279746573", | |
60 "iv": "5377656574205369787465656e2049560000000000000000", | |
61 "plain_text": "0000", | |
62 "encrypt_error": "OperationError: The \"iv\" has an unexpected length -- mus
t be 16 bytes" | |
63 }, | |
64 | |
65 // Fail decrypting because the IV is too large. | |
66 { | |
67 "key_format": "raw", | |
68 "key": "3132383d5369787465656e4279746573", | |
69 "iv": "5377656574205369787465656e2049560000000000000000", | |
70 "cipher_text": "8518b8878d34e7185e300d0fcc426396", | |
71 "decrypt_error": "OperationError: The \"iv\" has an unexpected length -- mus
t be 16 bytes" | |
72 }, | |
73 | |
74 // Fail importing the key because not enough bytes were specified. | |
75 { | |
76 "key_format": "raw", | |
77 "key": "31", | |
78 "import_error": "DataError: AES key data must be 128 or 256 bits" | |
79 }, | |
80 | |
81 // Fail importing because the wrong format was specified | |
82 { | |
83 "key_format": "spki", | |
84 "key": "3132383d5369787465656e4279746573", | |
85 "import_error": "NotSupported: Unsupported import key format for algorithm" | |
86 }, | |
87 | |
88 // Fail importing because the wrong format was specified | |
89 { | |
90 "key_format": "pkcs8", | |
91 "key": "3132383d5369787465656e4279746573", | |
92 "import_error": "NotSupported: Unsupported import key format for algorithm" | |
93 }, | |
94 | |
95 // Fail decrypting an empty cipher text | |
96 { | |
97 "key_format": "raw", | |
98 "key": "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", | |
99 "iv": "000102030405060708090a0b0c0d0e0f", | |
100 "cipher_text": "", | |
101 "decrypt_error": "OperationError" | |
102 }, | |
103 | |
104 // Decrypt a truncated cipher text (removed an entire block). | |
105 { | |
106 "key_format": "raw", | |
107 "key": "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", | |
108 "iv": "000102030405060708090a0b0c0d0e0f", | |
109 "cipher_text": "f58c4c04d6e5f1ba779eabfb5f7bfbd69cfc4e967edb808d679f777bc670
2c7d39f23369a9d9bacfa530e26304231461", | |
110 "decrypt_error": "OperationError" | |
111 }, | |
112 | |
113 // Decrypt truncated cipher text (stripped 3 byte). | |
114 { | |
115 "key_format": "raw", | |
116 "key": "2b7e151628aed2a6abf7158809cf4f3c", | |
117 "iv": "000102030405060708090a0b0c0d0e0f", | |
118 "cipher_text": "7649abac8119b246cee98e9b12e9197d5086cb9b507219ee95db113a9176
78b273bed6b8e3c1743b7116e69e222295163ff1caa1681fac09120eca307586e1a78cb82807230e
1321d3fae00d18", | |
119 "decrypt_error": "OperationError" | |
120 }, | |
121 | |
122 // JWK: key_ops has duplicates | |
123 { | |
124 "key_format": "jwk", | |
125 "key": { | |
126 "kty": "oct", | |
127 "k": "GADWrMRHwQfoNaXU5fZvTg", | |
128 "key_ops": [ "encrypt", "decrypt", "encrypt" ] | |
129 }, | |
130 "import_error": "DataError: The \"key_ops\" member of the JWK dictionary con
tains duplicate usages." | |
131 }, | |
132 | |
133 // JWK: key_ops has (unrecognized duplicates) | |
134 { | |
135 "key_format": "jwk", | |
136 "key": { | |
137 "kty": "oct", | |
138 "k": "GADWrMRHwQfoNaXU5fZvTg", | |
139 "key_ops": [ "foopy", "decrypt", "foopy" ] | |
140 }, | |
141 "import_error": "DataError: The \"key_ops\" member of the JWK dictionary con
tains duplicate usages." | |
142 }, | |
143 | |
144 // JWK: alg present but incorrect (expecting A128CBC). | |
145 { | |
146 "key_format": "jwk", | |
147 "key": { | |
148 "kty": "oct", | |
149 "alg": "A127CBC", | |
150 "k": "GADWrMRHwQfoNaXU5fZvTg" | |
151 }, | |
152 "import_error": "DataError: The JWK \"alg\" member was inconsistent with tha
t specified by the Web Crypto call" | |
153 }, | |
154 | |
155 // JWK: Invalid kty | |
156 { | |
157 "key_format": "jwk", | |
158 "key": { | |
159 "kty": "foo", | |
160 "k": "GADWrMRHwQfoNaXU5fZvTg" | |
161 }, | |
162 "import_error": "DataError: The JWK \"kty\" member was not \"oct\"" | |
163 }, | |
164 | |
165 // JWK: Missing kty. | |
166 { | |
167 "key_format": "jwk", | |
168 "key": { | |
169 "k": "GADWrMRHwQfoNaXU5fZvTg" | |
170 }, | |
171 "import_error": "DataError: The required JWK member \"kty\" was missing" | |
172 }, | |
173 | |
174 // JWK: kty is wrong type | |
175 { | |
176 "key_format": "jwk", | |
177 "key": { | |
178 "kty": 0.1, | |
179 "k": "GADWrMRHwQfoNaXU5fZvTg" | |
180 }, | |
181 "import_error": "DataError: The JWK member \"kty\" must be a string" | |
182 }, | |
183 | |
184 // JWK: Invalid use | |
185 { | |
186 "key_format": "jwk", | |
187 "key": { | |
188 "kty": "oct", | |
189 "use": "foo", | |
190 "k": "GADWrMRHwQfoNaXU5fZvTg" | |
191 }, | |
192 "import_error": "DataError: The JWK \"use\" member could not be parsed" | |
193 }, | |
194 | |
195 // JWK: Invalid use (wrong type) | |
196 { | |
197 "key_format": "jwk", | |
198 "key": { | |
199 "kty": "oct", | |
200 "use": true, | |
201 "k": "GADWrMRHwQfoNaXU5fZvTg" | |
202 }, | |
203 "import_error": "DataError: The JWK member \"use\" must be a string" | |
204 }, | |
205 | |
206 // JWK: Invalid ext (wrong type) | |
207 { | |
208 "key_format": "jwk", | |
209 "key": { | |
210 "kty": "oct", | |
211 "k": "GADWrMRHwQfoNaXU5fZvTg", | |
212 "ext": 0 | |
213 }, | |
214 "import_error": "DataError: The JWK member \"ext\" must be a boolean" | |
215 }, | |
216 | |
217 // JWK: Invalid key_ops (wrong type) | |
218 { | |
219 "key_format": "jwk", | |
220 "key": { | |
221 "kty": "oct", | |
222 "k": "GADWrMRHwQfoNaXU5fZvTg", | |
223 "key_ops": true | |
224 }, | |
225 "import_error": "DataError: The JWK member \"key_ops\" must be a list" | |
226 }, | |
227 | |
228 // JWK: unrecognized values in "key_ops". This is OK. | |
229 { | |
230 "key_format": "jwk", | |
231 "key": { | |
232 "kty": "oct", | |
233 "k": "GADWrMRHwQfoNaXU5fZvTg", | |
234 "key_ops": ["foo", "bar", "encrypt", "decrypt"] | |
235 } | |
236 }, | |
237 | |
238 // JWK: non-string entry in key_ops | |
239 { | |
240 "key_format": "jwk", | |
241 "key": { | |
242 "kty": "oct", | |
243 "k": "GADWrMRHwQfoNaXU5fZvTg", | |
244 "key_ops": ["encrypt", 3] | |
245 }, | |
246 "import_error": "DataError: The JWK member \"key_ops[1]\" must be a string" | |
247 }, | |
248 | |
249 // JWK: missing k | |
250 { | |
251 "key_format": "jwk", | |
252 "key": { | |
253 "kty": "oct" | |
254 }, | |
255 "import_error": "DataError: The required JWK member \"k\" was missing" | |
256 }, | |
257 | |
258 // JWK: Bad Base64 encoding for k | |
259 { | |
260 "key_format": "jwk", | |
261 "key": { | |
262 "kty": "oct", | |
263 "k": "Qk3f0DsytU8lfza2au #$% Htaw2xpop9GYyTuH0p5GghxTI=" | |
264 }, | |
265 "import_error": "DataError: The JWK member \"k\" could not be base64url deco
ded or contained padding" | |
266 }, | |
267 | |
268 // JWK: empty k | |
269 { | |
270 "key_format": "jwk", | |
271 "key": { | |
272 "kty": "oct", | |
273 "k": "" | |
274 }, | |
275 "import_error": "DataError: AES key data must be 128 or 256 bits" | |
276 }, | |
277 | |
278 // JWK: empty k (with alg specified) | |
279 { | |
280 "key_format": "jwk", | |
281 "key": { | |
282 "kty": "oct", | |
283 "alg": "A128CBC", | |
284 "k": "" | |
285 }, | |
286 "import_error": "DataError: The JWK \"k\" member did not include the right l
ength of key data for the given algorithm." | |
287 }, | |
288 | |
289 // JWK: k actual length (120 bits) inconsistent with alg (128 bits) | |
290 { | |
291 "key_format": "jwk", | |
292 "key": { | |
293 "kty": "oct", | |
294 "alg": "A128CBC", | |
295 "k": "AVj42h0Y5aqGtE3yluKL" | |
296 }, | |
297 "import_error": "DataError: The JWK \"k\" member did not include the right l
ength of key data for the given algorithm." | |
298 }, | |
299 | |
300 // JWK: k actual length (192 bits) inconsistent with alg (128 bits) | |
301 { | |
302 "key_format": "jwk", | |
303 "key": { | |
304 "kty": "oct", | |
305 "alg": "A128CBC", | |
306 "k": "dGhpcyAgaXMgIDI0ICBieXRlcyBsb25n" | |
307 }, | |
308 "import_error": "DataError: The JWK \"k\" member did not include the right l
ength of key data for the given algorithm." | |
309 }, | |
310 | |
311 // AES 192-bit is not allowed: http://crbug.com/381829 | |
312 { | |
313 "key_format": "raw", | |
314 "key": "5377656574205369787465656e2049560000000000000000", | |
315 "import_error": "OperationError: 192-bit AES keys are not supported" | |
316 }, | |
317 | |
318 // JWK: AES 192-bit is not allowed: http://crbug.com/381829 | |
319 { | |
320 "key_format": "jwk", | |
321 "key": { | |
322 "kty": "oct", | |
323 "alg": "A192CBC", | |
324 "k": "YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh" | |
325 }, | |
326 "import_error": "OperationError: 192-bit AES keys are not supported" | |
327 } | |
328 ] | |
OLD | NEW |