Lines Matching refs:rsa
1 /* crypto/rsa/rsa_gen.c */
64 #include <openssl/rsa.h>
69 extern int fips_check_rsa(RSA *rsa);
73 int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1,
81 if (!rsa)
96 if (!rsa->e) {
97 rsa->e = BN_dup(e);
98 if (!rsa->e)
101 e = rsa->e;
108 if (Xp && !rsa->p) {
109 rsa->p = BN_new();
110 if (!rsa->p)
113 if (!BN_X931_derive_prime_ex(rsa->p, p1, p2,
118 if (Xq && !rsa->q) {
119 rsa->q = BN_new();
120 if (!rsa->q)
122 if (!BN_X931_derive_prime_ex(rsa->q, q1, q2,
127 if (!rsa->p || !rsa->q) {
139 rsa->n = BN_new();
140 if (rsa->n == NULL)
142 if (!BN_mul(rsa->n, rsa->p, rsa->q, ctx))
146 if (!BN_sub(r1, rsa->p, BN_value_one()))
148 if (!BN_sub(r2, rsa->q, BN_value_one()))
163 rsa->d = BN_mod_inverse(NULL, rsa->e, r0, ctx2); /* d */
164 if (rsa->d == NULL)
168 rsa->dmp1 = BN_new();
169 if (rsa->dmp1 == NULL)
171 if (!BN_mod(rsa->dmp1, rsa->d, r1, ctx))
175 rsa->dmq1 = BN_new();
176 if (rsa->dmq1 == NULL)
178 if (!BN_mod(rsa->dmq1, rsa->d, r2, ctx))
182 rsa->iqmp = BN_mod_inverse(NULL, rsa->q, rsa->p, ctx2);
192 if (rsa->iqmp != NULL)
199 int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e,
231 rsa->p = BN_new();
232 rsa->q = BN_new();
233 if (!rsa->p || !rsa->q)
238 if (!BN_X931_generate_prime_ex(rsa->p, NULL, NULL, NULL, NULL, Xp,
242 if (!BN_X931_generate_prime_ex(rsa->q, NULL, NULL, NULL, NULL, Xq,
247 * Since rsa->p and rsa->q are valid this call will just derive remaining
251 if (!RSA_X931_derive_ex(rsa, NULL, NULL, NULL, NULL,
255 if (!fips_check_rsa(rsa))