Lines Matching refs:rsa

1 /* crypto/rsa/rsa_eay.c */
115 #include <openssl/rsa.h>
121 unsigned char *to, RSA *rsa,int padding);
123 unsigned char *to, RSA *rsa,int padding);
125 unsigned char *to, RSA *rsa,int padding);
127 unsigned char *to, RSA *rsa,int padding);
128 static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *i, RSA *rsa, BN_CTX *ctx);
129 static int RSA_eay_init(RSA *rsa);
130 static int RSA_eay_finish(RSA *rsa);
154 unsigned char *to, RSA *rsa, int padding)
161 if (BN_num_bits(rsa->n) > OPENSSL_RSA_MAX_MODULUS_BITS)
167 if (BN_ucmp(rsa->n, rsa->e) <= 0)
174 if (BN_num_bits(rsa->n) > OPENSSL_RSA_SMALL_MODULUS_BITS)
176 if (BN_num_bits(rsa->e) > OPENSSL_RSA_MAX_PUBEXP_BITS)
187 num=BN_num_bytes(rsa->n);
219 if (BN_ucmp(f, rsa->n) >= 0)
226 if (rsa->flags & RSA_FLAG_CACHE_PUBLIC)
227 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_n, CRYPTO_LOCK_RSA, rsa->n, ctx))
230 if (!rsa->meth->bn_mod_exp(ret,f,rsa->e,rsa->n,ctx,
231 rsa->_method_mod_n)) goto err;
255 static BN_BLINDING *rsa_get_blinding(RSA *rsa, int *local, BN_CTX *ctx)
263 if (rsa->blinding == NULL)
269 if (rsa->blinding == NULL)
270 rsa->blinding = RSA_setup_blinding(rsa, ctx);
273 ret = rsa->blinding;
280 /* rsa->blinding is ours! */
286 /* resort to rsa->mt_blinding instead */
294 if (rsa->mt_blinding == NULL)
303 if (rsa->mt_blinding == NULL)
304 rsa->mt_blinding = RSA_setup_blinding(rsa, ctx);
306 ret = rsa->mt_blinding;
349 unsigned char *to, RSA *rsa, int padding)
363 num = BN_num_bytes(rsa->n);
391 if (BN_ucmp(f, rsa->n) >= 0)
398 if (!(rsa->flags & RSA_FLAG_NO_BLINDING))
400 blinding = rsa_get_blinding(rsa, &local_blinding, ctx);
412 if ( (rsa->flags & RSA_FLAG_EXT_PKEY) ||
413 ((rsa->p != NULL) &&
414 (rsa->q != NULL) &&
415 (rsa->dmp1 != NULL) &&
416 (rsa->dmq1 != NULL) &&
417 (rsa->iqmp != NULL)) )
419 if (!rsa->meth->rsa_mod_exp(ret, f, rsa, ctx)) goto err;
426 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
430 BN_with_flags(d, rsa->d, BN_FLG_CONSTTIME);
433 d= rsa->d;
435 if (rsa->flags & RSA_FLAG_CACHE_PUBLIC)
436 if(!BN_MONT_CTX_set_locked(&rsa->_method_mod_n, CRYPTO_LOCK_RSA, rsa->n, ctx))
439 if (!rsa->meth->bn_mod_exp(ret,f,d,rsa->n,ctx,
440 rsa->_method_mod_n)) goto err;
449 BN_sub(f, rsa->n, ret);
481 unsigned char *to, RSA *rsa, int padding)
496 num = BN_num_bytes(rsa->n);
515 if (BN_ucmp(f, rsa->n) >= 0)
521 if (!(rsa->flags & RSA_FLAG_NO_BLINDING))
523 blinding = rsa_get_blinding(rsa, &local_blinding, ctx);
536 if ( (rsa->flags & RSA_FLAG_EXT_PKEY) ||
537 ((rsa->p != NULL) &&
538 (rsa->q != NULL) &&
539 (rsa->dmp1 != NULL) &&
540 (rsa->dmq1 != NULL) &&
541 (rsa->iqmp != NULL)) )
543 if (!rsa->meth->rsa_mod_exp(ret, f, rsa, ctx)) goto err;
550 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
553 BN_with_flags(d, rsa->d, BN_FLG_CONSTTIME);
556 d = rsa->d;
558 if (rsa->flags & RSA_FLAG_CACHE_PUBLIC)
559 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_n, CRYPTO_LOCK_RSA, rsa->n, ctx))
561 if (!rsa->meth->bn_mod_exp(ret,f,d,rsa->n,ctx,
562 rsa->_method_mod_n))
612 unsigned char *to, RSA *rsa, int padding)
620 if (BN_num_bits(rsa->n) > OPENSSL_RSA_MAX_MODULUS_BITS)
626 if (BN_ucmp(rsa->n, rsa->e) <= 0)
633 if (BN_num_bits(rsa->n) > OPENSSL_RSA_SMALL_MODULUS_BITS)
635 if (BN_num_bits(rsa->e) > OPENSSL_RSA_MAX_PUBEXP_BITS)
646 num=BN_num_bytes(rsa->n);
664 if (BN_ucmp(f, rsa->n) >= 0)
670 if (rsa->flags & RSA_FLAG_CACHE_PUBLIC)
671 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_n, CRYPTO_LOCK_RSA, rsa->n, ctx))
674 if (!rsa->meth->bn_mod_exp(ret,f,rsa->e,rsa->n,ctx,
675 rsa->_method_mod_n)) goto err;
678 if (!BN_sub(ret, rsa->n, ret)) goto err;
715 static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
734 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
738 BN_with_flags(p, rsa->p, BN_FLG_CONSTTIME);
742 BN_with_flags(q, rsa->q, BN_FLG_CONSTTIME);
746 p = rsa->p;
747 q = rsa->q;
750 if (rsa->flags & RSA_FLAG_CACHE_PRIVATE)
752 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_p, CRYPTO_LOCK_RSA, p, ctx))
754 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_q, CRYPTO_LOCK_RSA, q, ctx))
759 if (rsa->flags & RSA_FLAG_CACHE_PUBLIC)
760 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_n, CRYPTO_LOCK_RSA, rsa->n, ctx))
764 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
768 if (!BN_mod(r1,c,rsa->q,ctx)) goto err;
772 if (!BN_mod(r1,I,rsa->q,ctx)) goto err;
776 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
779 BN_with_flags(dmq1, rsa->dmq1, BN_FLG_CONSTTIME);
782 dmq1 = rsa->dmq1;
783 if (!rsa->meth->bn_mod_exp(m1,r1,dmq1,rsa->q,ctx,
784 rsa->_method_mod_q)) goto err;
787 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
791 if (!BN_mod(r1,c,rsa->p,ctx)) goto err;
795 if (!BN_mod(r1,I,rsa->p,ctx)) goto err;
799 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
802 BN_with_flags(dmp1, rsa->dmp1, BN_FLG_CONSTTIME);
805 dmp1 = rsa->dmp1;
806 if (!rsa->meth->bn_mod_exp(r0,r1,dmp1,rsa->p,ctx,
807 rsa->_method_mod_p)) goto err;
813 if (!BN_add(r0,r0,rsa->p)) goto err;
815 if (!BN_mul(r1,r0,rsa->iqmp,ctx)) goto err;
818 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
825 if (!BN_mod(r0,pr1,rsa->p,ctx)) goto err;
835 if (!BN_add(r0,r0,rsa->p)) goto err;
836 if (!BN_mul(r1,r0,rsa->q,ctx)) goto err;
839 if (rsa->e && rsa->n)
841 if (!rsa->meth->bn_mod_exp(vrfy,r0,rsa->e,rsa->n,ctx,rsa->_method_mod_n)) goto err;
842 /* If 'I' was greater than (or equal to) rsa->n, the operation
847 if (!BN_mod(vrfy, vrfy, rsa->n, ctx)) goto err;
849 if (!BN_add(vrfy, vrfy, rsa->n)) goto err;
859 if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME))
862 BN_with_flags(d, rsa->d, BN_FLG_CONSTTIME);
865 d = rsa->d;
866 if (!rsa->meth->bn_mod_exp(r0,I,d,rsa->n,ctx,
867 rsa->_method_mod_n)) goto err;
876 static int RSA_eay_init(RSA *rsa)
878 rsa->flags|=RSA_FLAG_CACHE_PUBLIC|RSA_FLAG_CACHE_PRIVATE;
882 static int RSA_eay_finish(RSA *rsa)
884 if (rsa->_method_mod_n != NULL)
885 BN_MONT_CTX_free(rsa->_method_mod_n);
886 if (rsa->_method_mod_p != NULL)
887 BN_MONT_CTX_free(rsa->_method_mod_p);
888 if (rsa->_method_mod_q != NULL)
889 BN_MONT_CTX_free(rsa->_method_mod_q);