hi ,
I want to decrypt using 3DES and want to use the EVP api.
Here's what i'm doing, it will be nice someone could validate if my approach is correct. here's the code that i have come up with...


int 3desDecrypt(unsigned char * pEncData, int pDataSize)
{
  int dec_data_size = 0;

EVP_CIPHER_CTX *dec_ctx = (EVP_CIPHER_CTX *) malloc(sizeof(EVP_CIPHER_CTX));
  EVP_CIPHER_CTX_init(dec_ctx);
EVP_DecryptInit(dec_ctx, EVP_des_ede3_cbc(), myStruct->key, myStruct->IV);

char *decrypt_data = do_decrypt(dec_ctx, pEncData, pDataSize, &dec_data_size);

  // use the decrypt_data ....
  free(decrypt_data);
  EVP_CIPHER_CTX_cleanup(dec_ctx);
  return 0;
}


unsigned char *do_decrypt(EVP_CIPHER_CTX * ctx, unsigned char *data, int inl, int *dec_data_size)
{
unsigned char *buf;
int ol;
int bl = EVP_CIPHER_CTX_block_size (ctx);

buf = (unsigned char *) malloc (inl + bl);

EVP_DecryptUpdate (ctx, buf, &ol, data, inl);
*dec_data_size = *dec_data_size + ol;

EVP_DecryptFinal(ctx, buf + ol, &ol);
*dec_data_size = *dec_data_size + ol;

// return the decrypted buffer.
return buf;
}


Thanks in advance.
Kunal


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to