EVP_CIPHER_CTX_init(&ctx);
static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,		  const unsigned char *iv,int in,		  const unsigned char *plaintext,int pn,		  const unsigned char *ciphertext,int cn)    {    EVP_CIPHER_CTX ctx;    unsigned char out[4096];    int outl,outl2;    printf("Testing cipher %s\n",EVP_CIPHER_name(c));    hexdump(stdout,"Key",key,kn);    if(in)	hexdump(stdout,"IV",iv,in);    hexdump(stdout,"Plaintext",plaintext,pn);    hexdump(stdout,"Ciphertext",ciphertext,cn);        if(kn != c->key_len)	{	fprintf(stderr,"Key length doesn't match, got %d expected %d\n",kn,		c->key_len);	exit(5);	}    if(!EVP_EncryptInit(&ctx,c,key,iv))	{	fprintf(stderr,"EncryptInit failed\n");	exit(10);	}    EVP_CIPHER_CTX_set_padding(&ctx,0);    if(!EVP_EncryptUpdate(&ctx,out,&outl,plaintext,pn))	{	fprintf(stderr,"Encrypt failed\n");	exit(6);	}    if(!EVP_EncryptFinal(&ctx,out+outl,&outl2))	{	fprintf(stderr,"EncryptFinal failed\n");	exit(7);	}    if(outl+outl2 != cn)	{	fprintf(stderr,"Ciphertext length mismatch got %d expected %d\n",		outl+outl2,cn);	exit(8);	}    if(memcmp(out,ciphertext,cn))	{	fprintf(stderr,"Ciphertext mismatch\n");	hexdump(stderr,"Got",out,cn);	hexdump(stderr,"Expected",ciphertext,cn);	exit(9);	}    if(!EVP_DecryptInit(&ctx,c,key,iv))	{	fprintf(stderr,"DecryptInit failed\n");	exit(11);	}    EVP_CIPHER_CTX_set_padding(&ctx,0);    if(!EVP_DecryptUpdate(&ctx,out,&outl,ciphertext,pn))	{	fprintf(stderr,"Decrypt failed\n");	exit(6);	}    if(!EVP_DecryptFinal(&ctx,out+outl,&outl2))	{	fprintf(stderr,"DecryptFinal failed\n");	exit(7);	}    if(outl+outl2 != cn)	{	fprintf(stderr,"Plaintext length mismatch got %d expected %d\n",		outl+outl2,cn);	exit(8);	}    if(memcmp(out,plaintext,cn))	{	fprintf(stderr,"Plaintext mismatch\n");	hexdump(stderr,"Got",out,cn);	hexdump(stderr,"Expected",plaintext,cn);	exit(9);	}    printf("\n");    }