summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp
diff options
context:
space:
mode:
authorbeck <>2002-06-07 03:45:34 +0000
committerbeck <>2002-06-07 03:45:34 +0000
commit820a20ea2b5f97e4a8fb714fedf33edafd40740a (patch)
tree595b35cf9e1ff104d11fb8ab64ebb6a5c5f42755 /src/lib/libcrypto/evp
parentd13d58e31ac54f9b283fe3ec100f31030e050fb4 (diff)
downloadopenbsd-820a20ea2b5f97e4a8fb714fedf33edafd40740a.tar.gz
openbsd-820a20ea2b5f97e4a8fb714fedf33edafd40740a.tar.bz2
openbsd-820a20ea2b5f97e4a8fb714fedf33edafd40740a.zip
Merge OpenSSL 0.9.7-stable-20020605,
correctly autogenerate obj_mac.h
Diffstat (limited to 'src/lib/libcrypto/evp')
-rw-r--r--src/lib/libcrypto/evp/bio_enc.c2
-rw-r--r--src/lib/libcrypto/evp/c_allc.c15
-rw-r--r--src/lib/libcrypto/evp/e_aes.c4
-rw-r--r--src/lib/libcrypto/evp/evp.h15
-rw-r--r--src/lib/libcrypto/evp/evp_test.c143
-rw-r--r--src/lib/libcrypto/evp/evptests.txt125
6 files changed, 227 insertions, 77 deletions
diff --git a/src/lib/libcrypto/evp/bio_enc.c b/src/lib/libcrypto/evp/bio_enc.c
index 05f4249458..64fb2353af 100644
--- a/src/lib/libcrypto/evp/bio_enc.c
+++ b/src/lib/libcrypto/evp/bio_enc.c
@@ -110,8 +110,8 @@ static int enc_new(BIO *bi)
110 BIO_ENC_CTX *ctx; 110 BIO_ENC_CTX *ctx;
111 111
112 ctx=(BIO_ENC_CTX *)OPENSSL_malloc(sizeof(BIO_ENC_CTX)); 112 ctx=(BIO_ENC_CTX *)OPENSSL_malloc(sizeof(BIO_ENC_CTX));
113 EVP_CIPHER_CTX_init(&ctx->cipher);
114 if (ctx == NULL) return(0); 113 if (ctx == NULL) return(0);
114 EVP_CIPHER_CTX_init(&ctx->cipher);
115 115
116 ctx->buf_len=0; 116 ctx->buf_len=0;
117 ctx->buf_off=0; 117 ctx->buf_off=0;
diff --git a/src/lib/libcrypto/evp/c_allc.c b/src/lib/libcrypto/evp/c_allc.c
index 37e6ab83a5..341a958fd4 100644
--- a/src/lib/libcrypto/evp/c_allc.c
+++ b/src/lib/libcrypto/evp/c_allc.c
@@ -149,14 +149,29 @@ void OpenSSL_add_all_ciphers(void)
149#ifndef OPENSSL_NO_AES 149#ifndef OPENSSL_NO_AES
150 EVP_add_cipher(EVP_aes_128_ecb()); 150 EVP_add_cipher(EVP_aes_128_ecb());
151 EVP_add_cipher(EVP_aes_128_cbc()); 151 EVP_add_cipher(EVP_aes_128_cbc());
152 EVP_add_cipher(EVP_aes_128_cfb());
153 EVP_add_cipher(EVP_aes_128_ofb());
154#if 0
155 EVP_add_cipher(EVP_aes_128_ctr());
156#endif
152 EVP_add_cipher_alias(SN_aes_128_cbc,"AES128"); 157 EVP_add_cipher_alias(SN_aes_128_cbc,"AES128");
153 EVP_add_cipher_alias(SN_aes_128_cbc,"aes128"); 158 EVP_add_cipher_alias(SN_aes_128_cbc,"aes128");
154 EVP_add_cipher(EVP_aes_192_ecb()); 159 EVP_add_cipher(EVP_aes_192_ecb());
155 EVP_add_cipher(EVP_aes_192_cbc()); 160 EVP_add_cipher(EVP_aes_192_cbc());
161 EVP_add_cipher(EVP_aes_192_cfb());
162 EVP_add_cipher(EVP_aes_192_ofb());
163#if 0
164 EVP_add_cipher(EVP_aes_192_ctr());
165#endif
156 EVP_add_cipher_alias(SN_aes_192_cbc,"AES192"); 166 EVP_add_cipher_alias(SN_aes_192_cbc,"AES192");
157 EVP_add_cipher_alias(SN_aes_192_cbc,"aes192"); 167 EVP_add_cipher_alias(SN_aes_192_cbc,"aes192");
158 EVP_add_cipher(EVP_aes_256_ecb()); 168 EVP_add_cipher(EVP_aes_256_ecb());
159 EVP_add_cipher(EVP_aes_256_cbc()); 169 EVP_add_cipher(EVP_aes_256_cbc());
170 EVP_add_cipher(EVP_aes_256_cfb());
171 EVP_add_cipher(EVP_aes_256_ofb());
172#if 0
173 EVP_add_cipher(EVP_aes_256_ctr());
174#endif
160 EVP_add_cipher_alias(SN_aes_256_cbc,"AES256"); 175 EVP_add_cipher_alias(SN_aes_256_cbc,"AES256");
161 EVP_add_cipher_alias(SN_aes_256_cbc,"aes256"); 176 EVP_add_cipher_alias(SN_aes_256_cbc,"aes256");
162#endif 177#endif
diff --git a/src/lib/libcrypto/evp/e_aes.c b/src/lib/libcrypto/evp/e_aes.c
index 9d03a9602f..c323fa2892 100644
--- a/src/lib/libcrypto/evp/e_aes.c
+++ b/src/lib/libcrypto/evp/e_aes.c
@@ -88,7 +88,9 @@ IMPLEMENT_BLOCK_CIPHER(aes_256, ks, AES, EVP_AES_KEY,
88static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 88static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
89 const unsigned char *iv, int enc) { 89 const unsigned char *iv, int enc) {
90 90
91 if (enc) 91 if ((ctx->cipher->flags & EVP_CIPH_MODE) == EVP_CIPH_CFB_MODE
92 || (ctx->cipher->flags & EVP_CIPH_MODE) == EVP_CIPH_OFB_MODE
93 || enc)
92 AES_set_encrypt_key(key, ctx->key_len * 8, ctx->cipher_data); 94 AES_set_encrypt_key(key, ctx->key_len * 8, ctx->cipher_data);
93 else 95 else
94 AES_set_decrypt_key(key, ctx->key_len * 8, ctx->cipher_data); 96 AES_set_decrypt_key(key, ctx->key_len * 8, ctx->cipher_data);
diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h
index 0d870d60be..fb16de6852 100644
--- a/src/lib/libcrypto/evp/evp.h
+++ b/src/lib/libcrypto/evp/evp.h
@@ -641,10 +641,25 @@ const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void);
641#ifndef OPENSSL_NO_AES 641#ifndef OPENSSL_NO_AES
642const EVP_CIPHER *EVP_aes_128_ecb(void); 642const EVP_CIPHER *EVP_aes_128_ecb(void);
643const EVP_CIPHER *EVP_aes_128_cbc(void); 643const EVP_CIPHER *EVP_aes_128_cbc(void);
644const EVP_CIPHER *EVP_aes_128_cfb(void);
645const EVP_CIPHER *EVP_aes_128_ofb(void);
646#if 0
647const EVP_CIPHER *EVP_aes_128_ctr(void);
648#endif
644const EVP_CIPHER *EVP_aes_192_ecb(void); 649const EVP_CIPHER *EVP_aes_192_ecb(void);
645const EVP_CIPHER *EVP_aes_192_cbc(void); 650const EVP_CIPHER *EVP_aes_192_cbc(void);
651const EVP_CIPHER *EVP_aes_192_cfb(void);
652const EVP_CIPHER *EVP_aes_192_ofb(void);
653#if 0
654const EVP_CIPHER *EVP_aes_192_ctr(void);
655#endif
646const EVP_CIPHER *EVP_aes_256_ecb(void); 656const EVP_CIPHER *EVP_aes_256_ecb(void);
647const EVP_CIPHER *EVP_aes_256_cbc(void); 657const EVP_CIPHER *EVP_aes_256_cbc(void);
658const EVP_CIPHER *EVP_aes_256_cfb(void);
659const EVP_CIPHER *EVP_aes_256_ofb(void);
660#if 0
661const EVP_CIPHER *EVP_aes_256_ctr(void);
662#endif
648#endif 663#endif
649 664
650void OPENSSL_add_all_algorithms_noconf(void); 665void OPENSSL_add_all_algorithms_noconf(void);
diff --git a/src/lib/libcrypto/evp/evp_test.c b/src/lib/libcrypto/evp/evp_test.c
index decd0713d6..90294ef686 100644
--- a/src/lib/libcrypto/evp/evp_test.c
+++ b/src/lib/libcrypto/evp/evp_test.c
@@ -118,18 +118,20 @@ static char *sstrsep(char **string, const char *delim)
118 } 118 }
119 119
120static unsigned char *ustrsep(char **p,const char *sep) 120static unsigned char *ustrsep(char **p,const char *sep)
121 { return (unsigned char *)sstrsep((char **)p,sep); } 121 { return (unsigned char *)sstrsep(p,sep); }
122 122
123static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn, 123static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
124 const unsigned char *iv,int in, 124 const unsigned char *iv,int in,
125 const unsigned char *plaintext,int pn, 125 const unsigned char *plaintext,int pn,
126 const unsigned char *ciphertext,int cn) 126 const unsigned char *ciphertext,int cn,
127 int encdec)
127 { 128 {
128 EVP_CIPHER_CTX ctx; 129 EVP_CIPHER_CTX ctx;
129 unsigned char out[4096]; 130 unsigned char out[4096];
130 int outl,outl2; 131 int outl,outl2;
131 132
132 printf("Testing cipher %s\n",EVP_CIPHER_name(c)); 133 printf("Testing cipher %s%s\n",EVP_CIPHER_name(c),
134 (encdec == 1 ? "(encrypt)" : (encdec == 0 ? "(decrypt)" : "(encrypt/decrypt)")));
133 hexdump(stdout,"Key",key,kn); 135 hexdump(stdout,"Key",key,kn);
134 if(in) 136 if(in)
135 hexdump(stdout,"IV",iv,in); 137 hexdump(stdout,"IV",iv,in);
@@ -143,70 +145,76 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
143 exit(5); 145 exit(5);
144 } 146 }
145 EVP_CIPHER_CTX_init(&ctx); 147 EVP_CIPHER_CTX_init(&ctx);
146 if(!EVP_EncryptInit_ex(&ctx,c,NULL,key,iv)) 148 if (encdec != 0)
147 { 149 {
148 fprintf(stderr,"EncryptInit failed\n"); 150 if(!EVP_EncryptInit_ex(&ctx,c,NULL,key,iv))
149 exit(10); 151 {
150 } 152 fprintf(stderr,"EncryptInit failed\n");
151 EVP_CIPHER_CTX_set_padding(&ctx,0); 153 exit(10);
154 }
155 EVP_CIPHER_CTX_set_padding(&ctx,0);
152 156
153 if(!EVP_EncryptUpdate(&ctx,out,&outl,plaintext,pn)) 157 if(!EVP_EncryptUpdate(&ctx,out,&outl,plaintext,pn))
154 { 158 {
155 fprintf(stderr,"Encrypt failed\n"); 159 fprintf(stderr,"Encrypt failed\n");
156 exit(6); 160 exit(6);
157 } 161 }
158 if(!EVP_EncryptFinal_ex(&ctx,out+outl,&outl2)) 162 if(!EVP_EncryptFinal_ex(&ctx,out+outl,&outl2))
159 { 163 {
160 fprintf(stderr,"EncryptFinal failed\n"); 164 fprintf(stderr,"EncryptFinal failed\n");
161 exit(7); 165 exit(7);
162 } 166 }
163 167
164 if(outl+outl2 != cn) 168 if(outl+outl2 != cn)
165 { 169 {
166 fprintf(stderr,"Ciphertext length mismatch got %d expected %d\n", 170 fprintf(stderr,"Ciphertext length mismatch got %d expected %d\n",
167 outl+outl2,cn); 171 outl+outl2,cn);
168 exit(8); 172 exit(8);
169 } 173 }
170 174
171 if(memcmp(out,ciphertext,cn)) 175 if(memcmp(out,ciphertext,cn))
172 { 176 {
173 fprintf(stderr,"Ciphertext mismatch\n"); 177 fprintf(stderr,"Ciphertext mismatch\n");
174 hexdump(stderr,"Got",out,cn); 178 hexdump(stderr,"Got",out,cn);
175 hexdump(stderr,"Expected",ciphertext,cn); 179 hexdump(stderr,"Expected",ciphertext,cn);
176 exit(9); 180 exit(9);
181 }
177 } 182 }
178 183
179 if(!EVP_DecryptInit_ex(&ctx,c,NULL,key,iv)) 184 if (encdec <= 0)
180 { 185 {
181 fprintf(stderr,"DecryptInit failed\n"); 186 if(!EVP_DecryptInit_ex(&ctx,c,NULL,key,iv))
182 exit(11); 187 {
183 } 188 fprintf(stderr,"DecryptInit failed\n");
184 EVP_CIPHER_CTX_set_padding(&ctx,0); 189 exit(11);
190 }
191 EVP_CIPHER_CTX_set_padding(&ctx,0);
185 192
186 if(!EVP_DecryptUpdate(&ctx,out,&outl,ciphertext,pn)) 193 if(!EVP_DecryptUpdate(&ctx,out,&outl,ciphertext,cn))
187 { 194 {
188 fprintf(stderr,"Decrypt failed\n"); 195 fprintf(stderr,"Decrypt failed\n");
189 exit(6); 196 exit(6);
190 } 197 }
191 if(!EVP_DecryptFinal_ex(&ctx,out+outl,&outl2)) 198 if(!EVP_DecryptFinal_ex(&ctx,out+outl,&outl2))
192 { 199 {
193 fprintf(stderr,"DecryptFinal failed\n"); 200 fprintf(stderr,"DecryptFinal failed\n");
194 exit(7); 201 exit(7);
195 } 202 }
196 203
197 if(outl+outl2 != cn) 204 if(outl+outl2 != cn)
198 { 205 {
199 fprintf(stderr,"Plaintext length mismatch got %d expected %d\n", 206 fprintf(stderr,"Plaintext length mismatch got %d expected %d\n",
200 outl+outl2,cn); 207 outl+outl2,cn);
201 exit(8); 208 exit(8);
202 } 209 }
203 210
204 if(memcmp(out,plaintext,cn)) 211 if(memcmp(out,plaintext,cn))
205 { 212 {
206 fprintf(stderr,"Plaintext mismatch\n"); 213 fprintf(stderr,"Plaintext mismatch\n");
207 hexdump(stderr,"Got",out,cn); 214 hexdump(stderr,"Got",out,cn);
208 hexdump(stderr,"Expected",plaintext,cn); 215 hexdump(stderr,"Expected",plaintext,cn);
209 exit(9); 216 exit(9);
217 }
210 } 218 }
211 219
212 EVP_CIPHER_CTX_cleanup(&ctx); 220 EVP_CIPHER_CTX_cleanup(&ctx);
@@ -217,7 +225,8 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
217static int test_cipher(const char *cipher,const unsigned char *key,int kn, 225static int test_cipher(const char *cipher,const unsigned char *key,int kn,
218 const unsigned char *iv,int in, 226 const unsigned char *iv,int in,
219 const unsigned char *plaintext,int pn, 227 const unsigned char *plaintext,int pn,
220 const unsigned char *ciphertext,int cn) 228 const unsigned char *ciphertext,int cn,
229 int encdec)
221 { 230 {
222 const EVP_CIPHER *c; 231 const EVP_CIPHER *c;
223 232
@@ -225,7 +234,7 @@ static int test_cipher(const char *cipher,const unsigned char *key,int kn,
225 if(!c) 234 if(!c)
226 return 0; 235 return 0;
227 236
228 test1(c,key,kn,iv,in,plaintext,pn,ciphertext,cn); 237 test1(c,key,kn,iv,in,plaintext,pn,ciphertext,cn,encdec);
229 238
230 return 1; 239 return 1;
231 } 240 }
@@ -332,6 +341,7 @@ int main(int argc,char **argv)
332 char *p; 341 char *p;
333 char *cipher; 342 char *cipher;
334 unsigned char *iv,*key,*plaintext,*ciphertext; 343 unsigned char *iv,*key,*plaintext,*ciphertext;
344 int encdec;
335 int kn,in,pn,cn; 345 int kn,in,pn,cn;
336 346
337 if(!fgets((char *)line,sizeof line,f)) 347 if(!fgets((char *)line,sizeof line,f))
@@ -343,14 +353,21 @@ int main(int argc,char **argv)
343 key=ustrsep(&p,":"); 353 key=ustrsep(&p,":");
344 iv=ustrsep(&p,":"); 354 iv=ustrsep(&p,":");
345 plaintext=ustrsep(&p,":"); 355 plaintext=ustrsep(&p,":");
346 ciphertext=ustrsep(&p,"\n"); 356 ciphertext=ustrsep(&p,":");
357 if (p[-1] == '\n') {
358 p[-1] = '\0';
359 encdec = -1;
360 } else {
361 encdec = atoi(sstrsep(&p,"\n"));
362 }
363
347 364
348 kn=convert(key); 365 kn=convert(key);
349 in=convert(iv); 366 in=convert(iv);
350 pn=convert(plaintext); 367 pn=convert(plaintext);
351 cn=convert(ciphertext); 368 cn=convert(ciphertext);
352 369
353 if(!test_cipher(cipher,key,kn,iv,in,plaintext,pn,ciphertext,cn) 370 if(!test_cipher(cipher,key,kn,iv,in,plaintext,pn,ciphertext,cn,encdec)
354 && !test_digest(cipher,plaintext,pn,ciphertext,cn)) 371 && !test_digest(cipher,plaintext,pn,ciphertext,cn))
355 { 372 {
356 fprintf(stderr,"Can't find %s\n",cipher); 373 fprintf(stderr,"Can't find %s\n",cipher);
diff --git a/src/lib/libcrypto/evp/evptests.txt b/src/lib/libcrypto/evp/evptests.txt
index 6c1529db37..80bd9c7765 100644
--- a/src/lib/libcrypto/evp/evptests.txt
+++ b/src/lib/libcrypto/evp/evptests.txt
@@ -1,4 +1,4 @@
1#cipher:key:iv:input:output 1#cipher:key:iv:plaintext:ciphertext:0/1(decrypt/encrypt)
2#digest:::input:output 2#digest:::input:output
3 3
4# SHA(1) tests (from shatest.c) 4# SHA(1) tests (from shatest.c)
@@ -15,47 +15,148 @@ MD5:::31323334353637383930313233343536373839303132333435363738393031323334353637
15 15
16# AES 128 ECB tests (from FIPS-197 test vectors, encrypt) 16# AES 128 ECB tests (from FIPS-197 test vectors, encrypt)
17 17
18AES-128-ECB:000102030405060708090A0B0C0D0E0F::00112233445566778899AABBCCDDEEFF:69C4E0D86A7B0430D8CDB78070B4C55A 18AES-128-ECB:000102030405060708090A0B0C0D0E0F::00112233445566778899AABBCCDDEEFF:69C4E0D86A7B0430D8CDB78070B4C55A:1
19 19
20# AES 192 ECB tests (from FIPS-197 test vectors, encrypt) 20# AES 192 ECB tests (from FIPS-197 test vectors, encrypt)
21 21
22AES-192-ECB:000102030405060708090A0B0C0D0E0F1011121314151617::00112233445566778899AABBCCDDEEFF:DDA97CA4864CDFE06EAF70A0EC0D7191 22AES-192-ECB:000102030405060708090A0B0C0D0E0F1011121314151617::00112233445566778899AABBCCDDEEFF:DDA97CA4864CDFE06EAF70A0EC0D7191:1
23 23
24# AES 256 ECB tests (from FIPS-197 test vectors, encrypt) 24# AES 256 ECB tests (from FIPS-197 test vectors, encrypt)
25 25
26AES-256-ECB:000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F::00112233445566778899AABBCCDDEEFF:8EA2B7CA516745BFEAFC49904B496089 26AES-256-ECB:000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F::00112233445566778899AABBCCDDEEFF:8EA2B7CA516745BFEAFC49904B496089:1
27 27
28# AES 128 ECB tests (from NIST test vectors, encrypt) 28# AES 128 ECB tests (from NIST test vectors, encrypt)
29 29
30#AES-128-ECB:00000000000000000000000000000000::00000000000000000000000000000000:C34C052CC0DA8D73451AFE5F03BE297F 30#AES-128-ECB:00000000000000000000000000000000::00000000000000000000000000000000:C34C052CC0DA8D73451AFE5F03BE297F:1
31 31
32# AES 128 ECB tests (from NIST test vectors, decrypt) 32# AES 128 ECB tests (from NIST test vectors, decrypt)
33 33
34#AES-128-ECB:00000000000000000000000000000000::44416AC2D1F53C583303917E6BE9EBE0:00000000000000000000000000000000 34#AES-128-ECB:00000000000000000000000000000000::44416AC2D1F53C583303917E6BE9EBE0:00000000000000000000000000000000:0
35 35
36# AES 192 ECB tests (from NIST test vectors, decrypt) 36# AES 192 ECB tests (from NIST test vectors, decrypt)
37 37
38#AES-192-ECB:000000000000000000000000000000000000000000000000::48E31E9E256718F29229319C19F15BA4:00000000000000000000000000000000 38#AES-192-ECB:000000000000000000000000000000000000000000000000::48E31E9E256718F29229319C19F15BA4:00000000000000000000000000000000:0
39 39
40# AES 256 ECB tests (from NIST test vectors, decrypt) 40# AES 256 ECB tests (from NIST test vectors, decrypt)
41 41
42#AES-256-ECB:0000000000000000000000000000000000000000000000000000000000000000::058CCFFDBBCB382D1F6F56585D8A4ADE:00000000000000000000000000000000 42#AES-256-ECB:0000000000000000000000000000000000000000000000000000000000000000::058CCFFDBBCB382D1F6F56585D8A4ADE:00000000000000000000000000000000:0
43 43
44# AES 128 CBC tests (from NIST test vectors, encrypt) 44# AES 128 CBC tests (from NIST test vectors, encrypt)
45 45
46#AES-128-CBC:00000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:8A05FC5E095AF4848A08D328D3688E3D 46#AES-128-CBC:00000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:8A05FC5E095AF4848A08D328D3688E3D:1
47 47
48# AES 192 CBC tests (from NIST test vectors, encrypt) 48# AES 192 CBC tests (from NIST test vectors, encrypt)
49 49
50#AES-192-CBC:000000000000000000000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:7BD966D53AD8C1BB85D2ADFAE87BB104 50#AES-192-CBC:000000000000000000000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:7BD966D53AD8C1BB85D2ADFAE87BB104:1
51 51
52# AES 256 CBC tests (from NIST test vectors, encrypt) 52# AES 256 CBC tests (from NIST test vectors, encrypt)
53 53
54#AES-256-CBC:0000000000000000000000000000000000000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:FE3C53653E2F45B56FCD88B2CC898FF0 54#AES-256-CBC:0000000000000000000000000000000000000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:FE3C53653E2F45B56FCD88B2CC898FF0:1
55 55
56# AES 128 CBC tests (from NIST test vectors, decrypt) 56# AES 128 CBC tests (from NIST test vectors, decrypt)
57 57
58#AES-128-CBC:00000000000000000000000000000000:00000000000000000000000000000000:FACA37E0B0C85373DF706E73F7C9AF86:00000000000000000000000000000000 58#AES-128-CBC:00000000000000000000000000000000:00000000000000000000000000000000:FACA37E0B0C85373DF706E73F7C9AF86:00000000000000000000000000000000:0
59
60# AES tests from NIST document SP800-38A
61# For all ECB encrypts and decrypts, the transformed sequence is
62# AES-bits-ECB:key::plaintext:ciphertext:encdec
63# ECB-AES128.Encrypt and ECB-AES128.Decrypt
64AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::6BC1BEE22E409F96E93D7E117393172A:3AD77BB40D7A3660A89ECAF32466EF97
65AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::AE2D8A571E03AC9C9EB76FAC45AF8E51:F5D3D58503B9699DE785895A96FDBAAF
66AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::30C81C46A35CE411E5FBC1191A0A52EF:43B1CD7F598ECE23881B00E3ED030688
67AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::F69F2445DF4F9B17AD2B417BE66C3710:7B0C785E27E8AD3F8223207104725DD4
68# ECB-AES192.Encrypt and ECB-AES192.Decrypt
69AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::6BC1BEE22E409F96E93D7E117393172A:BD334F1D6E45F25FF712A214571FA5CC
70AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::AE2D8A571E03AC9C9EB76FAC45AF8E51:974104846D0AD3AD7734ECB3ECEE4EEF
71AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::30C81C46A35CE411E5FBC1191A0A52EF:EF7AFD2270E2E60ADCE0BA2FACE6444E
72AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::F69F2445DF4F9B17AD2B417BE66C3710:9A4B41BA738D6C72FB16691603C18E0E
73# ECB-AES256.Encrypt and ECB-AES256.Decrypt
74AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::6BC1BEE22E409F96E93D7E117393172A:F3EED1BDB5D2A03C064B5A7E3DB181F8
75AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::AE2D8A571E03AC9C9EB76FAC45AF8E51:591CCB10D410ED26DC5BA74A31362870
76AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::30C81C46A35CE411E5FBC1191A0A52EF:B6ED21B99CA6F4F9F153E7B1BEAFED1D
77AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::F69F2445DF4F9B17AD2B417BE66C3710:23304B7A39F9F3FF067D8D8F9E24ECC7
78# For all CBC encrypts and decrypts, the transformed sequence is
79# AES-bits-CBC:key:IV/ciphertext':plaintext:ciphertext:encdec
80# CBC-AES128.Encrypt and CBC-AES128.Decrypt
81AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:7649ABAC8119B246CEE98E9B12E9197D
82AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:7649ABAC8119B246CEE98E9B12E9197D:AE2D8A571E03AC9C9EB76FAC45AF8E51:5086CB9B507219EE95DB113A917678B2
83AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:5086CB9B507219EE95DB113A917678B2:30C81C46A35CE411E5FBC1191A0A52EF:73BED6B8E3C1743B7116E69E22229516
84AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:73BED6B8E3C1743B7116E69E22229516:F69F2445DF4F9B17AD2B417BE66C3710:3FF1CAA1681FAC09120ECA307586E1A7
85# CBC-AES192.Encrypt and CBC-AES192.Decrypt
86AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:4F021DB243BC633D7178183A9FA071E8
87AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:4F021DB243BC633D7178183A9FA071E8:AE2D8A571E03AC9C9EB76FAC45AF8E51:B4D9ADA9AD7DEDF4E5E738763F69145A
88AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:B4D9ADA9AD7DEDF4E5E738763F69145A:30C81C46A35CE411E5FBC1191A0A52EF:571B242012FB7AE07FA9BAAC3DF102E0
89AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:571B242012FB7AE07FA9BAAC3DF102E0:F69F2445DF4F9B17AD2B417BE66C3710:08B0E27988598881D920A9E64F5615CD
90# CBC-AES256.Encrypt and CBC-AES256.Decrypt
91AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:F58C4C04D6E5F1BA779EABFB5F7BFBD6
92AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:F58C4C04D6E5F1BA779EABFB5F7BFBD6:AE2D8A571E03AC9C9EB76FAC45AF8E51:9CFC4E967EDB808D679F777BC6702C7D
93AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:9CFC4E967EDB808D679F777BC6702C7D:30C81C46A35CE411E5FBC1191A0A52EF:39F23369A9D9BACFA530E26304231461
94AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:39F23369A9D9BACFA530E26304231461:F69F2445DF4F9B17AD2B417BE66C3710:B2EB05E2C39BE9FCDA6C19078C6A9D1B
95# We don't support CFB{1,8}-AESxxx.{En,De}crypt
96# For all CFB128 encrypts and decrypts, the transformed sequence is
97# AES-bits-CFB:key:IV/ciphertext':plaintext:ciphertext:encdec
98# CFB128-AES128.Encrypt
99AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:3B3FD92EB72DAD20333449F8E83CFB4A:1
100AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:3B3FD92EB72DAD20333449F8E83CFB4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:C8A64537A0B3A93FCDE3CDAD9F1CE58B:1
101AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:C8A64537A0B3A93FCDE3CDAD9F1CE58B:30C81C46A35CE411E5FBC1191A0A52EF:26751F67A3CBB140B1808CF187A4F4DF:1
102AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:26751F67A3CBB140B1808CF187A4F4DF:F69F2445DF4F9B17AD2B417BE66C3710:C04B05357C5D1C0EEAC4C66F9FF7F2E6:1
103# CFB128-AES128.Decrypt
104AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:3B3FD92EB72DAD20333449F8E83CFB4A:0
105AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:3B3FD92EB72DAD20333449F8E83CFB4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:C8A64537A0B3A93FCDE3CDAD9F1CE58B:0
106AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:C8A64537A0B3A93FCDE3CDAD9F1CE58B:30C81C46A35CE411E5FBC1191A0A52EF:26751F67A3CBB140B1808CF187A4F4DF:0
107AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:26751F67A3CBB140B1808CF187A4F4DF:F69F2445DF4F9B17AD2B417BE66C3710:C04B05357C5D1C0EEAC4C66F9FF7F2E6:0
108# CFB128-AES192.Encrypt
109AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CDC80D6FDDF18CAB34C25909C99A4174:1
110AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:CDC80D6FDDF18CAB34C25909C99A4174:AE2D8A571E03AC9C9EB76FAC45AF8E51:67CE7F7F81173621961A2B70171D3D7A:1
111AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:67CE7F7F81173621961A2B70171D3D7A:30C81C46A35CE411E5FBC1191A0A52EF:2E1E8A1DD59B88B1C8E60FED1EFAC4C9:1
112AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:2E1E8A1DD59B88B1C8E60FED1EFAC4C9:F69F2445DF4F9B17AD2B417BE66C3710:C05F9F9CA9834FA042AE8FBA584B09FF:1
113# CFB128-AES192.Decrypt
114AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CDC80D6FDDF18CAB34C25909C99A4174:0
115AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:CDC80D6FDDF18CAB34C25909C99A4174:AE2D8A571E03AC9C9EB76FAC45AF8E51:67CE7F7F81173621961A2B70171D3D7A:0
116AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:67CE7F7F81173621961A2B70171D3D7A:30C81C46A35CE411E5FBC1191A0A52EF:2E1E8A1DD59B88B1C8E60FED1EFAC4C9:0
117AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:2E1E8A1DD59B88B1C8E60FED1EFAC4C9:F69F2445DF4F9B17AD2B417BE66C3710:C05F9F9CA9834FA042AE8FBA584B09FF:0
118# CFB128-AES256.Encrypt
119AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:DC7E84BFDA79164B7ECD8486985D3860:1
120AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:DC7E84BFDA79164B7ECD8486985D3860:AE2D8A571E03AC9C9EB76FAC45AF8E51:39FFED143B28B1C832113C6331E5407B:1
121AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:39FFED143B28B1C832113C6331E5407B:30C81C46A35CE411E5FBC1191A0A52EF:DF10132415E54B92A13ED0A8267AE2F9:1
122AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:DF10132415E54B92A13ED0A8267AE2F9:F69F2445DF4F9B17AD2B417BE66C3710:75A385741AB9CEF82031623D55B1E471:1
123# CFB128-AES256.Decrypt
124AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:DC7E84BFDA79164B7ECD8486985D3860:0
125AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:DC7E84BFDA79164B7ECD8486985D3860:AE2D8A571E03AC9C9EB76FAC45AF8E51:39FFED143B28B1C832113C6331E5407B:0
126AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:39FFED143B28B1C832113C6331E5407B:30C81C46A35CE411E5FBC1191A0A52EF:DF10132415E54B92A13ED0A8267AE2F9:0
127AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:DF10132415E54B92A13ED0A8267AE2F9:F69F2445DF4F9B17AD2B417BE66C3710:75A385741AB9CEF82031623D55B1E471:0
128# For all OFB encrypts and decrypts, the transformed sequence is
129# AES-bits-CFB:key:IV/output':plaintext:ciphertext:encdec
130# OFB-AES128.Encrypt
131AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:3B3FD92EB72DAD20333449F8E83CFB4A:1
132AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:50FE67CC996D32B6DA0937E99BAFEC60:AE2D8A571E03AC9C9EB76FAC45AF8E51:7789508D16918F03F53C52DAC54ED825:1
133AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:D9A4DADA0892239F6B8B3D7680E15674:30C81C46A35CE411E5FBC1191A0A52EF:9740051E9C5FECF64344F7A82260EDCC:1
134AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:A78819583F0308E7A6BF36B1386ABF23:F69F2445DF4F9B17AD2B417BE66C3710:304C6528F659C77866A510D9C1D6AE5E:1
135# OFB-AES128.Decrypt
136AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:3B3FD92EB72DAD20333449F8E83CFB4A:0
137AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:50FE67CC996D32B6DA0937E99BAFEC60:AE2D8A571E03AC9C9EB76FAC45AF8E51:7789508D16918F03F53C52DAC54ED825:0
138AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:D9A4DADA0892239F6B8B3D7680E15674:30C81C46A35CE411E5FBC1191A0A52EF:9740051E9C5FECF64344F7A82260EDCC:0
139AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:A78819583F0308E7A6BF36B1386ABF23:F69F2445DF4F9B17AD2B417BE66C3710:304C6528F659C77866A510D9C1D6AE5E:0
140# OFB-AES192.Encrypt
141AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CDC80D6FDDF18CAB34C25909C99A4174:1
142AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:A609B38DF3B1133DDDFF2718BA09565E:AE2D8A571E03AC9C9EB76FAC45AF8E51:FCC28B8D4C63837C09E81700C1100401:1
143AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:52EF01DA52602FE0975F78AC84BF8A50:30C81C46A35CE411E5FBC1191A0A52EF:8D9A9AEAC0F6596F559C6D4DAF59A5F2:1
144AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:BD5286AC63AABD7EB067AC54B553F71D:F69F2445DF4F9B17AD2B417BE66C3710:6D9F200857CA6C3E9CAC524BD9ACC92A:1
145# OFB-AES192.Decrypt
146AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CDC80D6FDDF18CAB34C25909C99A4174:0
147AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:A609B38DF3B1133DDDFF2718BA09565E:AE2D8A571E03AC9C9EB76FAC45AF8E51:FCC28B8D4C63837C09E81700C1100401:0
148AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:52EF01DA52602FE0975F78AC84BF8A50:30C81C46A35CE411E5FBC1191A0A52EF:8D9A9AEAC0F6596F559C6D4DAF59A5F2:0
149AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:BD5286AC63AABD7EB067AC54B553F71D:F69F2445DF4F9B17AD2B417BE66C3710:6D9F200857CA6C3E9CAC524BD9ACC92A:0
150# OFB-AES256.Encrypt
151AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:DC7E84BFDA79164B7ECD8486985D3860:1
152AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:B7BF3A5DF43989DD97F0FA97EBCE2F4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:4FEBDC6740D20B3AC88F6AD82A4FB08D:1
153AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:E1C656305ED1A7A6563805746FE03EDC:30C81C46A35CE411E5FBC1191A0A52EF:71AB47A086E86EEDF39D1C5BBA97C408:1
154AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:41635BE625B48AFC1666DD42A09D96E7:F69F2445DF4F9B17AD2B417BE66C3710:0126141D67F37BE8538F5A8BE740E484:1
155# OFB-AES256.Decrypt
156AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:DC7E84BFDA79164B7ECD8486985D3860:0
157AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:B7BF3A5DF43989DD97F0FA97EBCE2F4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:4FEBDC6740D20B3AC88F6AD82A4FB08D:0
158AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:E1C656305ED1A7A6563805746FE03EDC:30C81C46A35CE411E5FBC1191A0A52EF:71AB47A086E86EEDF39D1C5BBA97C408:0
159AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:41635BE625B48AFC1666DD42A09D96E7:F69F2445DF4F9B17AD2B417BE66C3710:0126141D67F37BE8538F5A8BE740E484:0
59 160
60# DES ECB tests (from destest) 161# DES ECB tests (from destest)
61 162