Thank you Martin. I have tried using the function, however using the
code I have pasted below I get the error "Error = oaep decoding error"
when trying to unpadd to retrieve the original data.

For simplicity the code I have added here does not encrypt/decrypt, but
only attempts to pad and unpadd.

What could be the cause of this problem here?

------------------------------------------------------
ERR_load_RSA_strings();

int status;
const int RSA_LENGTH = 256;
const int LABEL_LENGTH = 10;
const int PADDED_DATA_LENGTH = 256;
const int ORIGINAL_DATA_LENGTH = 16;

unsigned char paddedData[PADDED_DATA_LENGTH];
unsigned char unPaddedData[ORIGINAL_DATA_LENGTH];
unsigned char originalData[ORIGINAL_DATA_LENGTH] =
  { 0x4C, 0x2E, 0x20, 0x4C, 0x65, 0x74, 0x27, 0x73,
    0x20, 0x68, 0x6F, 0x70, 0x65, 0x0D, 0x0A, 0x00 };
unsigned char label[LABEL_LENGTH] =
  { 0xB8, 0x37, 0xA4, 0x26, 0xA8,
    0xBF, 0x8A, 0xA0, 0xBE, 0xEB };


status = RSA_padding_add_PKCS1_OAEP
          ( paddedData, PADDED_DATA_LENGTH,
            originalData, ORIGINAL_DATA_LENGTH,
            label, LABEL_LENGTH );

status = RSA_padding_check_PKCS1_OAEP
           ( unPaddedData, ORIGINAL_DATA_LENGTH,
             paddedData, PADDED_DATA_LENGTH,
             RSA_LENGTH, label, LABEL_LENGTH );
if ( status == -1 ) {
  std::cout << "Unpadding failed! ";
  printf("Error = %s\n",ERR_reason_error_string(ERR_get_error()));
}
else {
  std::cout << "Unpadding was OK! Lenght of the recovered data: "
            << status << std::endl;
}
------------------------------------------------------

Thank for all help so far :)

- Einar

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to