#include <stdio.h>
#include <string.h>
+
+#include "../e_os.h"
+
#include <openssl/evp.h>
#include <openssl/engine.h>
#include <openssl/conf.h>
if(!s[1])
{
fprintf(stderr,"Odd number of hex digits!");
- exit(4);
+ EXIT(4);
}
sscanf((char *)s,"%2x",&n);
*d=(unsigned char)n;
}
static unsigned char *ustrsep(char **p,const char *sep)
- { return (unsigned char *)sstrsep((char **)p,sep); }
+ { return (unsigned char *)sstrsep(p,sep); }
+
+static int test1_exit(int ec)
+ {
+ EXIT(ec);
+ return(0); /* To keep some compilers quiet */
+ }
static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
const unsigned char *iv,int in,
{
fprintf(stderr,"Key length doesn't match, got %d expected %d\n",kn,
c->key_len);
- exit(5);
+ test1_exit(5);
}
EVP_CIPHER_CTX_init(&ctx);
if (encdec != 0)
if(!EVP_EncryptInit_ex(&ctx,c,NULL,key,iv))
{
fprintf(stderr,"EncryptInit failed\n");
- exit(10);
+ test1_exit(10);
}
EVP_CIPHER_CTX_set_padding(&ctx,0);
if(!EVP_EncryptUpdate(&ctx,out,&outl,plaintext,pn))
{
fprintf(stderr,"Encrypt failed\n");
- exit(6);
+ test1_exit(6);
}
if(!EVP_EncryptFinal_ex(&ctx,out+outl,&outl2))
{
fprintf(stderr,"EncryptFinal failed\n");
- exit(7);
+ test1_exit(7);
}
if(outl+outl2 != cn)
{
fprintf(stderr,"Ciphertext length mismatch got %d expected %d\n",
outl+outl2,cn);
- exit(8);
+ test1_exit(8);
}
if(memcmp(out,ciphertext,cn))
fprintf(stderr,"Ciphertext mismatch\n");
hexdump(stderr,"Got",out,cn);
hexdump(stderr,"Expected",ciphertext,cn);
- exit(9);
+ test1_exit(9);
}
}
if(!EVP_DecryptInit_ex(&ctx,c,NULL,key,iv))
{
fprintf(stderr,"DecryptInit failed\n");
- exit(11);
+ test1_exit(11);
}
EVP_CIPHER_CTX_set_padding(&ctx,0);
if(!EVP_DecryptUpdate(&ctx,out,&outl,ciphertext,cn))
{
fprintf(stderr,"Decrypt failed\n");
- exit(6);
+ test1_exit(6);
}
if(!EVP_DecryptFinal_ex(&ctx,out+outl,&outl2))
{
fprintf(stderr,"DecryptFinal failed\n");
- exit(7);
+ test1_exit(7);
}
if(outl+outl2 != cn)
{
fprintf(stderr,"Plaintext length mismatch got %d expected %d\n",
outl+outl2,cn);
- exit(8);
+ test1_exit(8);
}
if(memcmp(out,plaintext,cn))
fprintf(stderr,"Plaintext mismatch\n");
hexdump(stderr,"Got",out,cn);
hexdump(stderr,"Expected",plaintext,cn);
- exit(9);
+ test1_exit(9);
}
}
if(!EVP_DigestInit_ex(&ctx,d, NULL))
{
fprintf(stderr,"DigestInit failed\n");
- exit(100);
+ EXIT(100);
}
if(!EVP_DigestUpdate(&ctx,plaintext,pn))
{
fprintf(stderr,"DigestUpdate failed\n");
- exit(101);
+ EXIT(101);
}
if(!EVP_DigestFinal_ex(&ctx,md,&mdn))
{
fprintf(stderr,"DigestFinal failed\n");
- exit(101);
+ EXIT(101);
}
EVP_MD_CTX_cleanup(&ctx);
if(mdn != cn)
{
fprintf(stderr,"Digest length mismatch, got %d expected %d\n",mdn,cn);
- exit(102);
+ EXIT(102);
}
if(memcmp(md,ciphertext,cn))
fprintf(stderr,"Digest mismatch\n");
hexdump(stderr,"Got",md,cn);
hexdump(stderr,"Expected",ciphertext,cn);
- exit(103);
+ EXIT(103);
}
printf("\n");
if(argc != 2)
{
fprintf(stderr,"%s <test file>\n",argv[0]);
- exit(1);
+ EXIT(1);
}
CRYPTO_malloc_debug_init();
CRYPTO_set_mem_debug_options(V_CRYPTO_MDEBUG_ALL);
if(!f)
{
perror(szTestFile);
- exit(2);
+ EXIT(2);
}
/* Load up the software EVP_CIPHER and EVP_MD definitions */
p[-1] = '\0';
encdec = -1;
} else {
- encdec = atoi(ustrsep(&p,"\n"));
+ encdec = atoi(sstrsep(&p,"\n"));
}
&& !test_digest(cipher,plaintext,pn,ciphertext,cn))
{
fprintf(stderr,"Can't find %s\n",cipher);
- exit(3);
+ EXIT(3);
}
}