Cómo sembrar el PRNG para BN_generate_prime

No he podido encontrar una respuesta a lo que se usa para generar los números primos con BN_generate_prime en openssl / bn.h. Además, ¿cómo sembraría cualquier PRNG que use esta función?

Pregunta separada pero relevante para mi código (estoy escribiendo un progtwig para generar pares de claves RSA): ¿cómo compruebo si el bit de orden superior se establece en un BIGNUM? Digamos que genero un primo de 512 bits. ¿Usaría BN_is_bit_set (prime, 512)?

Gracias

BN_generate_prime es una función obsoleta, dice aquí . Además, se define en crypto / bn_depr.c. No deberías usarlo para generar primos. En su lugar, debe utilizar BN_generate_prime_ex. Aquí está el uso de muestra de BN_generate_prime_ex:

BIGNUM *r; static const char rnd_seed[] = "string to make the random number generator think it has entropy"; r = BN_new(); RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_generate_prime_ex may fail */ BN_generate_prime_ex(r, 512, 0, NULL, NULL, NULL); BN_free(r); 

Entonces tendrás un número primo pseudoaleatorio de 512 bits. Como en el ejemplo anterior, puede sembrar el PRNG por RAND_seed.

Para la segunda pregunta, intente BN_num_bits .