Hi,

I am new to openssl C APIs. So I wrote a simple test to encrypt and decrypt a 
15 byte ASCII string using AES128. The encryption seems OK and the encrypted 
length is 16. But the decryption always failed at EVP_DecryptFinal_ex(). The 
error code is 0 and means padding error. I have been searching on the web but 
so far nothing worked. Can anyone here suggest how to debug this error?

Thanks!

[ Code fragment]
=================
static int
my_decrypt(char* data, int datalen, char *debuf, int *delen)
{

// data is holding the cipher text
//  debuf is to hold the decrypted plain text
// datalen is 16
//

  int rc;


  printf (" Data len to be decrypted %d\n", datalen); // 16
  if (!( rc = EVP_DecryptUpdate(&ctx, debuf, delen, data, datalen))) {
    printf (" Decryption error: %d\n", rc);
    return -1;
  }
  printf (" DecryptUpdate delen = %d \n", *delen); // 16

  printf (" Finalizing \n");
  if ((rc = EVP_DecryptFinal_ex(&ctx, debuf, &datalen)) == 0) {
    printf (" Finalization error: %d\n", rc); // This is the failure! rc = 0
    return -1;
  }



David Li

Reply via email to