Lines Matching refs:rsa

30 static int rsa_keygen_pairwise_test(RSA *rsa, OSSL_CALLBACK *cb, void *cbarg);
31 static int rsa_keygen(OSSL_LIB_CTX *libctx, RSA *rsa, int bits, int primes,
41 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb)
43 if (rsa->meth->rsa_keygen != NULL)
44 return rsa->meth->rsa_keygen(rsa, bits, e_value, cb);
46 return RSA_generate_multi_prime_key(rsa, bits, RSA_DEFAULT_PRIME_NUM,
50 int RSA_generate_multi_prime_key(RSA *rsa, int bits, int primes,
55 if (rsa->meth->rsa_multi_prime_keygen != NULL) {
56 return rsa->meth->rsa_multi_prime_keygen(rsa, bits, primes,
58 } else if (rsa->meth->rsa_keygen != NULL) {
60 * However, if rsa->meth implements only rsa_keygen, then we
66 return rsa->meth->rsa_keygen(rsa, bits, e_value, cb);
71 return rsa_keygen(rsa->libctx, rsa, bits, primes, e_value, cb, 0);
75 static int rsa_multiprime_keygen(RSA *rsa, int bits, int primes,
106 ctx = BN_CTX_new_ex(rsa->libctx);
123 rsa->dirty_cnt++;
126 if (!rsa->n && ((rsa->n = BN_new()) == NULL))
128 if (!rsa->d && ((rsa->d = BN_secure_new()) == NULL))
130 BN_set_flags(rsa->d, BN_FLG_CONSTTIME);
131 if (!rsa->e && ((rsa->e = BN_new()) == NULL))
133 if (!rsa->p && ((rsa->p = BN_secure_new()) == NULL))
135 BN_set_flags(rsa->p, BN_FLG_CONSTTIME);
136 if (!rsa->q && ((rsa->q = BN_secure_new()) == NULL))
138 BN_set_flags(rsa->q, BN_FLG_CONSTTIME);
139 if (!rsa->dmp1 && ((rsa->dmp1 = BN_secure_new()) == NULL))
141 BN_set_flags(rsa->dmp1, BN_FLG_CONSTTIME);
142 if (!rsa->dmq1 && ((rsa->dmq1 = BN_secure_new()) == NULL))
144 BN_set_flags(rsa->dmq1, BN_FLG_CONSTTIME);
145 if (!rsa->iqmp && ((rsa->iqmp = BN_secure_new()) == NULL))
147 BN_set_flags(rsa->iqmp, BN_FLG_CONSTTIME);
151 rsa->version = RSA_ASN1_VERSION_MULTI;
155 if (rsa->prime_infos != NULL) {
157 sk_RSA_PRIME_INFO_pop_free(rsa->prime_infos,
160 rsa->prime_infos = prime_infos;
171 if (BN_copy(rsa->e, e_value) == NULL)
180 prime = rsa->p;
182 prime = rsa->q;
205 prev_prime = rsa->p;
207 prev_prime = rsa->q;
221 if (BN_mod_inverse(r1, r2, rsa->e, ctx) != NULL) {
242 if (!BN_mul(r1, rsa->p, rsa->q, ctx))
246 if (!BN_mul(r1, rsa->n, prime, ctx))
306 if (i > 1 && BN_copy(pinfo->pp, rsa->n) == NULL)
308 if (BN_copy(rsa->n, r1) == NULL)
314 if (BN_cmp(rsa->p, rsa->q) < 0) {
315 tmp = rsa->p;
316 rsa->p = rsa->q;
317 rsa->q = tmp;
323 if (!BN_sub(r1, rsa->p, BN_value_one()))
326 if (!BN_sub(r2, rsa->q, BN_value_one()))
348 if (!BN_mod_inverse(rsa->d, rsa->e, pr0, ctx)) {
362 BN_with_flags(d, rsa->d, BN_FLG_CONSTTIME);
365 if (!BN_mod(rsa->dmp1, d, r1, ctx)
366 || !BN_mod(rsa->dmq1, d, r2, ctx)) {
381 /* We MUST free d before any further use of rsa->d */
390 BN_with_flags(p, rsa->p, BN_FLG_CONSTTIME);
393 if (!BN_mod_inverse(rsa->iqmp, rsa->q, p, ctx)) {
408 /* We MUST free p before any further use of rsa->p */
424 static int rsa_keygen(OSSL_LIB_CTX *libctx, RSA *rsa, int bits, int primes,
430 ok = ossl_rsa_sp800_56b_generate_key(rsa, bits, e_value, cb);
440 ok = ossl_rsa_sp800_56b_generate_key(rsa, bits, e_value, cb);
442 ok = rsa_multiprime_keygen(rsa, bits, primes, e_value, cb);
450 ok = rsa_keygen_pairwise_test(rsa, stcb, stcbarg);
454 BN_clear_free(rsa->d);
455 BN_clear_free(rsa->p);
456 BN_clear_free(rsa->q);
457 BN_clear_free(rsa->dmp1);
458 BN_clear_free(rsa->dmq1);
459 BN_clear_free(rsa->iqmp);
460 rsa->d = NULL;
461 rsa->p = NULL;
462 rsa->q = NULL;
463 rsa->dmp1 = NULL;
464 rsa->dmq1 = NULL;
465 rsa->iqmp = NULL;
478 static int rsa_keygen_pairwise_test(RSA *rsa, OSSL_CALLBACK *cb, void *cbarg)
496 ciphertxt_len = RSA_size(rsa);
506 ciphertxt_len = RSA_public_encrypt(plaintxt_len, plaintxt, ciphertxt, rsa,
516 decoded_len = RSA_private_decrypt(ciphertxt_len, ciphertxt, decoded, rsa,