RSA* rsa = RSA_generate_key( 320, 67683957, NULL, NULL );
RSA* rsa1 = RSA_new( );
rsa1->n = BN_new( );
rsa1->e = BN_new( );
BN_copy( rsa1->n, rsa->n );
BN_copy( rsa1->e, rsa->e );
int n = RSA_public_encrypt( sizeof( buffer ), buffer, bufferEnc, rsa1, RSA_PKCS1_PADDING );
RSA* rsa2 = RSA_new( );
rsa2->n = BN_new( );
rsa2->d = BN_new( );
BN_copy( rsa2->n, rsa->n );
BN_copy( rsa2->d, rsa->d );
RSA_private_decrypt( n, bufferEnc, bufferDec, rsa2, RSA_PKCS1_PADDING );
Вот собственно и все. Только надо исправить ошибку в SSleay:
rsa_eay.c line 305
Поменять
if(!rsa->meth->bn_mod_exp(ret,f,rsa->d,rsa->n,ctx))
На
if(!rsa->meth->bn_mod_exp(ret,f,rsa->d,rsa->n,ctx, NULL))
Они забыли последний параметр вписать :)
|