Hello, > I am a novice OpenSSL library user. Currently I am implementing code > to generate a RSA key pair. Here > is a part of my code: > > _time_get(&tim); > RAND_add(&tim,sizeof(tim),0); You should get seed from some PRNG source, but on Linux/Unix if this is not enough OpenSSL library will seed yourself reading /dev/urandom,EGD, ... If there will be not enough seed data (32 bytes) RSA_generate_key() will return error (there is check for seeded PRNG).
> pMiSslCtx = MiSslInitEx( TLSv1_method(), true ); > > rsa=RSA_generate_key(key_len,RSA_F4,NULLcb,NULL); > > > my key_len is 2048. > > The code crashes in RSA_generate_key() function call, more > particularly in probable_prime(). I am not sure what > I am doign wrong here. Any help would be highly apprecaited. Some simple example attached. Best regards, -- Marek Marcola <[EMAIL PROTECTED]>
#include <stdio.h> #include <openssl/bn.h> #include <openssl/rsa.h> int main() { RSA *r; r = RSA_generate_key(2048,RSA_F4,NULL,NULL); if( r==NULL ) { printf("Key failed"); exit(1); } else { printf("public modulus (n):\n"); printf(" %s\n",BN_bn2hex(r->n)); printf("public exponent (e):\n"); printf(" %s\n",BN_bn2hex(r->e)); printf("private exponent (d):\n"); printf(" %s\n",BN_bn2hex(r->d)); printf("secret prime factor (p):\n"); printf(" %s\n",BN_bn2hex(r->p)); printf("secret prime factor (q):\n"); printf(" %s\n",BN_bn2hex(r->q)); printf("dmp1 [ d mod (p-1) ]:\n"); printf(" %s\n",BN_bn2hex(r->dmp1)); printf("dmq1 [ d mod (q-1) ]:\n"); printf(" %s\n",BN_bn2hex(r->dmq1)); printf("iqmp [ q^-1 mod p ]:\n"); printf(" %s\n",BN_bn2hex(r->iqmp)); } printf("RSA SIZE: %d\n", RSA_size(r)); return(0); }