primes
primes = opt_int_arg();
if (EVP_PKEY_CTX_set_rsa_keygen_primes(ctx, primes) <= 0) {
int ret = 1, num = DEFBITS, private = 0, primes = DEFPRIMES;
int primes = RSA_DEFAULT_PRIME_NUM;
primes = opt_int_arg();
if (primes > RSA_DEFAULT_PRIME_NUM) {
&& EVP_PKEY_CTX_set_rsa_keygen_primes(genctx, primes) > 0
BN_ULONG mod = BN_mod_word(w, primes[i]);
return BN_is_word(w, primes[i]);
BN_ULONG maxdelta = BN_MASK2 - primes[trial_divisions - 1];
BN_ULONG mod = BN_mod_word(rnd, (BN_ULONG)primes[i]);
&& square(primes[i]) > BN_get_word(rnd) + delta)
if (safe ? (mods[i] + delta) % primes[i] <= 1
: (mods[i] + delta) % primes[i] == 0) {
BN_ULONG maxdelta = BN_MASK2 - primes[trial_divisions - 1];
BN_ULONG mod = BN_mod_word(rnd, (BN_ULONG)primes[i]);
&& square(primes[i]) > BN_get_word(rnd) + delta)
if (safe ? (mods[i] + delta) % primes[i] <= 1
: (mods[i] + delta) % primes[i] == 0) {
static const prime_t primes[2048] = {
static int rsa_multiprime_keygen(RSA *rsa, int bits, int primes,
if (primes < RSA_DEFAULT_PRIME_NUM || primes > ossl_rsa_multip_cap(bits)) {
static int rsa_keygen(OSSL_LIB_CTX *libctx, RSA *rsa, int bits, int primes,
quo = bits / primes;
rmd = bits % primes;
for (i = 0; i < primes; i++)
if (primes > RSA_DEFAULT_PRIME_NUM) {
prime_infos = sk_RSA_PRIME_INFO_new_reserve(NULL, primes - 2);
for (i = 2; i < primes; i++) {
for (i = 0; i < primes; i++) {
if (primes > 4) {
int RSA_generate_multi_prime_key(RSA *rsa, int bits, int primes,
for (i = 2; i < primes; i++) {
return rsa->meth->rsa_multi_prime_keygen(rsa, bits, primes,
if (!ossl_rsa_multiprime_derive(rsa, bits, primes, e_value,
for (i = 2; i < primes; i++) {
static int rsa_keygen(OSSL_LIB_CTX *libctx, RSA *rsa, int bits, int primes,
if (primes == 2
ok = rsa_multiprime_keygen(rsa, bits, primes, e_value, cb);
if (primes == 2)
return rsa_keygen(rsa->libctx, rsa, bits, primes, e_value, cb, 0);
int ossl_rsa_multiprime_derive(RSA *rsa, int bits, int primes,
int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes)
size_t primes2 = primes;
int RSA_set0_multi_prime_params(RSA *r, BIGNUM *primes[], BIGNUM *exps[],
if (primes == NULL || exps == NULL || coeffs == NULL || pnum == 0)
if (primes[i] != NULL && exps[i] != NULL && coeffs[i] != NULL) {
pinfo->r = primes[i];
int RSA_get0_multi_prime_factors(const RSA *r, const BIGNUM *primes[])
primes[i] = pinfo->r;
int ossl_rsa_set0_all_params(RSA *r, STACK_OF(BIGNUM) *primes,
if (primes == NULL || exps == NULL || coeffs == NULL)
pnum = sk_BIGNUM_num(primes);
if (!RSA_set0_factors(r, sk_BIGNUM_value(primes, 0),
sk_BIGNUM_value(primes, 1)))
sk_BIGNUM_delete(primes, 0);
sk_BIGNUM_delete(primes, 0);
BIGNUM *prime = sk_BIGNUM_pop(primes);
int ossl_rsa_get0_all_params(RSA *r, STACK_OF(BIGNUM_const) *primes,
sk_BIGNUM_const_push(primes, RSA_get0_p(r));
sk_BIGNUM_const_push(primes, RSA_get0_q(r));
sk_BIGNUM_const_push(primes, pinfo->r);
int (*rsa_multi_prime_keygen)(RSA *rsa, int bits, int primes,
int ossl_rsa_multiprime_derive(RSA *rsa, int bits, int primes,
int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth))(RSA *rsa, int bits, int primes, BIGNUM *e, BN_GENCB *cb)
int primes, BIGNUM *e,
int primes;
rctx->primes = p1;
rctx->primes = RSA_DEFAULT_PRIME_NUM;
ret = RSA_generate_multi_prime_key(rsa, rctx->nbits, rctx->primes,
unsigned int primes = 2;
if (EVP_PKEY_CTX_set_rsa_keygen_primes(genctx, primes) <= 0) {
int ossl_rsa_set0_all_params(RSA *r, STACK_OF(BIGNUM) *primes,
int ossl_rsa_get0_all_params(RSA *r, STACK_OF(BIGNUM_const) *primes,
int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes);
BIGNUM *primes[],
const BIGNUM *primes[]);
int primes, BIGNUM *e,
int primes,
int primes, BIGNUM *e,
int primes;
primes = sk_BIGNUM_const_num(factors);
type_label, BN_num_bits(rsa_n), primes)
size_t primes;
gctx->primes = RSA_DEFAULT_PRIME_NUM;
&& !OSSL_PARAM_get_size_t(p, &gctx->primes))
(int)gctx->nbits, (int)gctx->primes,
prime_t p = primes[i];
static int primes[] = { 2, 3, 5, 7, 17863 };
if (!TEST_true(BN_set_word(r, primes[i]))
ADD_ALL_TESTS(test_is_prime, (int)OSSL_NELEM(primes));
STACK_OF(BIGNUM) *primes = NULL, *exps = NULL, *coeffs = NULL;
if (!TEST_ptr(primes = sk_BIGNUM_new_null())
|| !TEST_int_ne(sk_BIGNUM_push(primes, num), 0)
|| !TEST_int_ne(sk_BIGNUM_push(primes, num), 0)
|| !TEST_int_ne(sk_BIGNUM_push(primes, num), 0))
if (!TEST_true(ossl_rsa_set0_all_params(key, primes, exps, coeffs)))
sk_BIGNUM_free(primes);
sk_BIGNUM_pop_free(primes, BN_free);
primes = exps = coeffs = NULL;
#define NPRIMES nitems(primes)
for (i = 1, hashsize = primes[1]; hashsize <= elements;) {
hashsize = primes[i];
hashsize = primes[i - 1];
static const int primes[] = { 1, 13, 31, 61, 127, 251, 509, 761, 1021, 1531,
primes(start, stop);
static void primes(ubig, ubig);