summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/evp_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/evp/evp_test.c')
-rw-r--r--src/lib/libcrypto/evp/evp_test.c34
1 files changed, 26 insertions, 8 deletions
diff --git a/src/lib/libcrypto/evp/evp_test.c b/src/lib/libcrypto/evp/evp_test.c
index 28460173f7..a624cfd248 100644
--- a/src/lib/libcrypto/evp/evp_test.c
+++ b/src/lib/libcrypto/evp/evp_test.c
@@ -136,7 +136,7 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
136 const unsigned char *iv,int in, 136 const unsigned char *iv,int in,
137 const unsigned char *plaintext,int pn, 137 const unsigned char *plaintext,int pn,
138 const unsigned char *ciphertext,int cn, 138 const unsigned char *ciphertext,int cn,
139 int encdec) 139 int encdec,int multiplier)
140 { 140 {
141 EVP_CIPHER_CTX ctx; 141 EVP_CIPHER_CTX ctx;
142 unsigned char out[4096]; 142 unsigned char out[4096];
@@ -162,22 +162,25 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
162 if(!EVP_EncryptInit_ex(&ctx,c,NULL,key,iv)) 162 if(!EVP_EncryptInit_ex(&ctx,c,NULL,key,iv))
163 { 163 {
164 fprintf(stderr,"EncryptInit failed\n"); 164 fprintf(stderr,"EncryptInit failed\n");
165 ERR_print_errors_fp(stderr);
165 test1_exit(10); 166 test1_exit(10);
166 } 167 }
167 EVP_CIPHER_CTX_set_padding(&ctx,0); 168 EVP_CIPHER_CTX_set_padding(&ctx,0);
168 169
169 if(!EVP_EncryptUpdate(&ctx,out,&outl,plaintext,pn)) 170 if(!EVP_EncryptUpdate(&ctx,out,&outl,plaintext,pn*multiplier))
170 { 171 {
171 fprintf(stderr,"Encrypt failed\n"); 172 fprintf(stderr,"Encrypt failed\n");
173 ERR_print_errors_fp(stderr);
172 test1_exit(6); 174 test1_exit(6);
173 } 175 }
174 if(!EVP_EncryptFinal_ex(&ctx,out+outl,&outl2)) 176 if(!EVP_EncryptFinal_ex(&ctx,out+outl,&outl2))
175 { 177 {
176 fprintf(stderr,"EncryptFinal failed\n"); 178 fprintf(stderr,"EncryptFinal failed\n");
179 ERR_print_errors_fp(stderr);
177 test1_exit(7); 180 test1_exit(7);
178 } 181 }
179 182
180 if(outl+outl2 != cn) 183 if(outl+outl2 != cn*multiplier)
181 { 184 {
182 fprintf(stderr,"Ciphertext length mismatch got %d expected %d\n", 185 fprintf(stderr,"Ciphertext length mismatch got %d expected %d\n",
183 outl+outl2,cn); 186 outl+outl2,cn);
@@ -198,22 +201,25 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
198 if(!EVP_DecryptInit_ex(&ctx,c,NULL,key,iv)) 201 if(!EVP_DecryptInit_ex(&ctx,c,NULL,key,iv))
199 { 202 {
200 fprintf(stderr,"DecryptInit failed\n"); 203 fprintf(stderr,"DecryptInit failed\n");
204 ERR_print_errors_fp(stderr);
201 test1_exit(11); 205 test1_exit(11);
202 } 206 }
203 EVP_CIPHER_CTX_set_padding(&ctx,0); 207 EVP_CIPHER_CTX_set_padding(&ctx,0);
204 208
205 if(!EVP_DecryptUpdate(&ctx,out,&outl,ciphertext,cn)) 209 if(!EVP_DecryptUpdate(&ctx,out,&outl,ciphertext,cn*multiplier))
206 { 210 {
207 fprintf(stderr,"Decrypt failed\n"); 211 fprintf(stderr,"Decrypt failed\n");
212 ERR_print_errors_fp(stderr);
208 test1_exit(6); 213 test1_exit(6);
209 } 214 }
210 if(!EVP_DecryptFinal_ex(&ctx,out+outl,&outl2)) 215 if(!EVP_DecryptFinal_ex(&ctx,out+outl,&outl2))
211 { 216 {
212 fprintf(stderr,"DecryptFinal failed\n"); 217 fprintf(stderr,"DecryptFinal failed\n");
218 ERR_print_errors_fp(stderr);
213 test1_exit(7); 219 test1_exit(7);
214 } 220 }
215 221
216 if(outl+outl2 != cn) 222 if(outl+outl2 != cn*multiplier)
217 { 223 {
218 fprintf(stderr,"Plaintext length mismatch got %d expected %d\n", 224 fprintf(stderr,"Plaintext length mismatch got %d expected %d\n",
219 outl+outl2,cn); 225 outl+outl2,cn);
@@ -238,7 +244,7 @@ static int test_cipher(const char *cipher,const unsigned char *key,int kn,
238 const unsigned char *iv,int in, 244 const unsigned char *iv,int in,
239 const unsigned char *plaintext,int pn, 245 const unsigned char *plaintext,int pn,
240 const unsigned char *ciphertext,int cn, 246 const unsigned char *ciphertext,int cn,
241 int encdec) 247 int encdec,int multiplier)
242 { 248 {
243 const EVP_CIPHER *c; 249 const EVP_CIPHER *c;
244 250
@@ -246,7 +252,7 @@ static int test_cipher(const char *cipher,const unsigned char *key,int kn,
246 if(!c) 252 if(!c)
247 return 0; 253 return 0;
248 254
249 test1(c,key,kn,iv,in,plaintext,pn,ciphertext,cn,encdec); 255 test1(c,key,kn,iv,in,plaintext,pn,ciphertext,cn,encdec,multiplier);
250 256
251 return 1; 257 return 1;
252 } 258 }
@@ -272,16 +278,19 @@ static int test_digest(const char *digest,
272 if(!EVP_DigestInit_ex(&ctx,d, NULL)) 278 if(!EVP_DigestInit_ex(&ctx,d, NULL))
273 { 279 {
274 fprintf(stderr,"DigestInit failed\n"); 280 fprintf(stderr,"DigestInit failed\n");
281 ERR_print_errors_fp(stderr);
275 EXIT(100); 282 EXIT(100);
276 } 283 }
277 if(!EVP_DigestUpdate(&ctx,plaintext,pn)) 284 if(!EVP_DigestUpdate(&ctx,plaintext,pn))
278 { 285 {
279 fprintf(stderr,"DigestUpdate failed\n"); 286 fprintf(stderr,"DigestUpdate failed\n");
287 ERR_print_errors_fp(stderr);
280 EXIT(101); 288 EXIT(101);
281 } 289 }
282 if(!EVP_DigestFinal_ex(&ctx,md,&mdn)) 290 if(!EVP_DigestFinal_ex(&ctx,md,&mdn))
283 { 291 {
284 fprintf(stderr,"DigestFinal failed\n"); 292 fprintf(stderr,"DigestFinal failed\n");
293 ERR_print_errors_fp(stderr);
285 EXIT(101); 294 EXIT(101);
286 } 295 }
287 EVP_MD_CTX_cleanup(&ctx); 296 EVP_MD_CTX_cleanup(&ctx);
@@ -359,6 +368,7 @@ int main(int argc,char **argv)
359 unsigned char *iv,*key,*plaintext,*ciphertext; 368 unsigned char *iv,*key,*plaintext,*ciphertext;
360 int encdec; 369 int encdec;
361 int kn,in,pn,cn; 370 int kn,in,pn,cn;
371 int multiplier=1;
362 372
363 if(!fgets((char *)line,sizeof line,f)) 373 if(!fgets((char *)line,sizeof line,f))
364 break; 374 break;
@@ -383,7 +393,15 @@ int main(int argc,char **argv)
383 pn=convert(plaintext); 393 pn=convert(plaintext);
384 cn=convert(ciphertext); 394 cn=convert(ciphertext);
385 395
386 if(!test_cipher(cipher,key,kn,iv,in,plaintext,pn,ciphertext,cn,encdec) 396 if(strchr(cipher,'*'))
397 {
398 p=cipher;
399 sstrsep(&p,"*");
400 multiplier=atoi(sstrsep(&p,"*"));
401 }
402
403 if(!test_cipher(cipher,key,kn,iv,in,plaintext,pn,ciphertext,cn,encdec,
404 multiplier)
387 && !test_digest(cipher,plaintext,pn,ciphertext,cn)) 405 && !test_digest(cipher,plaintext,pn,ciphertext,cn))
388 { 406 {
389 fprintf(stderr,"Can't find %s\n",cipher); 407 fprintf(stderr,"Can't find %s\n",cipher);