RSA padding problem

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

RSA padding problem

Matt Geimer
Hi,

I am working on a program that does bulk encryption key exchange similar to SSH.  I am running into a problem with RSA_private_decrypt, it returns -1 and tells me padding error, no matter which padding scheme I use.   The main goal is to encrypt a Blowfish key to send over the wire and then decrypt on the other side.  Any help is appreciated.

Regards,
Matt Geimer
Computer Science and Engineering Student
Michigan State University

The code I am trying this with is just a simple sample for me to make sure it works, which it doesn't... :
------
#include <iostream>
#include <openssl/rsa.h>
#include <openssl/err.h>

using namespace std;

int main(){

int returnvalue;

RSA * mykey = RSA_new();
mykey=RSA_generate_key(2048,65537,NULL,NULL);
if(mykey==NULL)
{
  cout << "Error initiating key generation" << endl;
  exit(1);
}

unsigned char pltxt[32]="This is the plain text";
unsigned char * pubenc,*privenc,*recovered,*plain;
plain=pltxt;
unsigned char tobuf1[256];
pubenc=tobuf1;
cout << "plain text is \"" << plain << "\"" << endl;

returnvalue=RSA_public_encrypt(8,plain,pubenc,mykey,RSA_PKCS1_OAEP_PADDING);
cout << returnvalue << endl;
if( returnvalue == -1)
{
  ERR_load_crypto_strings();
  char errbuf[180];
  char *buf=errbuf;
  ERR_error_string(ERR_get_error(),buf);
  cout << errbuf;
  ERR_free_strings();
}
cout << pubenc << endl;

cout << "now try to decrypt it..." << endl;
unsigned char tobuf2[256];
recovered=tobuf2;
returnvalue=RSA_private_decrypt(8,pubenc,recovered,mykey,RSA_PKCS1_OAEP_PADDING);
cout << returnvalue << endl;
if( returnvalue == -1)
{
  ERR_load_crypto_strings();
  char errbuf[180];
  char *buf=errbuf;
  ERR_error_string(ERR_get_error(),buf);
  cout << errbuf;
  ERR_free_strings();
}
cout << recovered << endl;

return 1;
}
-----
The output I get (only the error part):

error:0407A079:rsa routines:RSA_padding_check_PKCS1_OAEP:oaep decoding error
Reply | Threaded
Open this post in threaded view
|

Re: RSA padding problem

Marek.Marcola
Hello,

Change line:
> returnvalue=RSA_private_decrypt(8,pubenc,recovered,mykey,RSA_PKCS1_OAEP_PADDING);
to someting like that:
returnvalue=RSA_private_decrypt(RSA_size(mykey),pubenc,recovered,mykey,RSA_PKCS1_OAEP_PADDING);

Best regards,
--
Marek Marcola <[hidden email]>

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [hidden email]
Automated List Manager                           [hidden email]