Home | History | Annotate | Download | only in rsa

Lines Matching refs:rsa

1 /* crypto/rsa/rsa_gen.c */
11 * apply to all code found in this distribution, be it the RC4, RSA,
69 #include <openssl/rsa.h>
74 static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb);
81 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb)
84 if (FIPS_mode() && !(rsa->meth->flags & RSA_FLAG_FIPS_METHOD)
85 && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW))
91 if(rsa->meth->rsa_keygen)
92 return rsa->meth->rsa_keygen(rsa, bits, e_value, cb);
95 return FIPS_rsa_generate_key_ex(rsa, bits, e_value, cb);
97 return rsa_builtin_keygen(rsa, bits, e_value, cb);
100 static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb)
120 /* We need the RSA components non-NULL */
121 if(!rsa->n && ((rsa->n=BN_new()) == NULL)) goto err;
122 if(!rsa->d && ((rsa->d=BN_new()) == NULL)) goto err;
123 if(!rsa->e && ((rsa->e=BN_new()) == NULL)) goto err;
124 if(!rsa->p && ((rsa->p=BN_new()) == NULL)) goto err;
125 if(!rsa->q && ((rsa->q=BN_new()) == NULL)) goto err;
126 if(!rsa->dmp1 && ((rsa->dmp1=BN_new()) == NULL)) goto err;
127 if(!rsa->dmq1 && ((rsa->dmq1=BN_new()) == NULL)) goto err;
128 if(!rsa->iqmp && ((rsa->iqmp=BN_new()) == NULL)) goto err;
130 BN_copy(rsa->e, e_value);
135 if(!BN_generate_prime_ex(rsa->p, bitsp, 0, NULL, NULL, cb))
137 if (!BN_sub(r2,rsa->p,BN_value_one())) goto err;
138 if (!BN_gcd(r1,r2,rsa->e,ctx)) goto err;
153 if(!BN_generate_prime_ex(rsa->q, bitsq, 0, NULL, NULL, cb))
155 } while((BN_cmp(rsa->p, rsa->q) == 0) && (++degenerate < 3));
162 if (!BN_sub(r2,rsa->q,BN_value_one())) goto err;
163 if (!BN_gcd(r1,r2,rsa->e,ctx)) goto err;
171 if (BN_cmp(rsa->p,rsa->q) < 0)
173 tmp=rsa->p;
174 rsa->p=rsa->q;
175 rsa->q=tmp;
179 if (!BN_mul(rsa->n,rsa->p,rsa->q,ctx)) goto err;
182 if (!BN_sub(r1,rsa->p,BN_value_one())) goto err; /* p-1 */
183 if (!BN_sub(r2,rsa->q,BN_value_one())) goto err; /* q-1 */
185 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
192 if (!BN_mod_inverse(rsa->d,rsa->e,pr0,ctx)) goto err; /* d */
195 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
198 BN_with_flags(d, rsa->d, BN_FLG_CONSTTIME);
201 d = rsa->d;
204 if (!BN_mod(rsa->dmp1,d,r1,ctx)) goto err;
207 if (!BN_mod(rsa->dmq1,d,r2,ctx)) goto err;
210 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
213 BN_with_flags(p, rsa->p, BN_FLG_CONSTTIME);
216 p = rsa->p;
217 if (!BN_mod_inverse(rsa->iqmp,rsa->q,p,ctx)) goto err;