Hi Shaheed,

The OpenSSL error you are getting means that OpenSSL decrypted the ciphered text but couldn't find the PKCS1 padding byte. This means that the wrong CRT parameters were supplied. Usually this comes from the fact that the parameters p and q (and the corresponding dmp1, dmq1) must be swapped : p instead of q and q instead of p (same thing for dmp1 and dmq1). In order to check this, you can use a tool I have written and that enables you to recover e and d from these 5 parameters. You can get it from sourceForge using the following link : http://rsaconverter.sourceforge.net/ . Thanks to it, you can check that these 5 parameters give you the correct d and e. In your case, I'm sure you'll get the wrong d and e. Swap the parameters and see if you get the correct d this time.

I hope this will help.
Cheers,
--
Mounir IDRASSI
IDRIX
http://www.idrix.fr



On 2/24/2011 4:03 AM, Shaheed Bacchus (sbacchus) wrote:

Just to be clear, below is not the actual code, but what I would **like** to be able to do (or something close).

*From:*owner-openssl-us...@openssl.org [mailto:owner-openssl-us...@openssl.org] *On Behalf Of *Shaheed Bacchus (sbacchus)
*Sent:* Wednesday, February 23, 2011 9:47 PM
*To:* openssl-users@openssl.org
*Subject:* RSA_private_decrypt without e and d

Hi,

I have a situation where I have a message that has been encrypted via RSA_public_encrypt. On the receiving end I have the n, p, q, dmp1, dmq1, and iqmp components (I know it might sound odd that I don’t have the e and d components but that is the case). I’m trying to do something like:

If (!(new_key = RSA_new()))

return -1;

new_key->n = BN_bin2bn(n_data, n_data_len, NULL);

new_key->p = BN_bin2bn(p_data, p_data_len, NULL);

new_key->q = BN_bin2bn(q_data, q_data_len, NULL);

new_key->dmp1 = BN_bin2bn(dmp1_data, dmp1_data_len, NULL);

new_key->dmq1 = BN_bin2bn(dmq1_data, dmq1_data_len, NULL);

new_key->iqmp = BN_bin2bn(iqmp_data, iqmp1_data_len, NULL);

resultDecrypt = RSA_private_decrypt(encrypted_size, encrypted, decrypted, new_key, RSA_PKCS1_PADDING);

This decrypt fails with

error:0407106B:rsa routines:RSA_padding_check_PKCS1_type_2:block type is not 02

Supplying the correct e and d component causes it work properly, but I will not have those under normal circumstances. Is there any way to do this without d and e?


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

Reply via email to