Home | History | Annotate | Download | only in bn

Lines Matching refs:recp

63 void BN_RECP_CTX_init(BN_RECP_CTX *recp)
65 BN_init(&(recp->N));
66 BN_init(&(recp->Nr));
67 recp->num_bits=0;
68 recp->flags=0;
83 void BN_RECP_CTX_free(BN_RECP_CTX *recp)
85 if(recp == NULL)
88 BN_free(&(recp->N));
89 BN_free(&(recp->Nr));
90 if (recp->flags & BN_FLG_MALLOCED)
91 OPENSSL_free(recp);
94 int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *d, BN_CTX *ctx)
96 if (!BN_copy(&(recp->N),d)) return 0;
97 BN_zero(&(recp->Nr));
98 recp->num_bits=BN_num_bits(d);
99 recp->shift=0;
104 BN_RECP_CTX *recp, BN_CTX *ctx)
123 ret = BN_div_recp(NULL,r,ca,recp,ctx);
131 BN_RECP_CTX *recp, BN_CTX *ctx)
149 if (BN_ucmp(m,&(recp->N)) < 0)
165 j=recp->num_bits<<1;
169 if (i != recp->shift)
170 recp->shift=BN_reciprocal(&(recp->Nr),&(recp->N),
172 if (recp->shift == -1) goto err;
174 /* d := |round(round(m / 2^BN_num_bits(N)) * recp->Nr / 2^(i - BN_num_bits(N)))|
179 if (!BN_rshift(a,m,recp->num_bits)) goto err;
180 if (!BN_mul(b,a,&(recp->Nr),ctx)) goto err;
181 if (!BN_rshift(d,b,i-recp->num_bits)) goto err;
184 if (!BN_mul(b,&(recp->N),d,ctx)) goto err;
190 while (BN_ucmp(r,&(recp->N)) >= 0)
197 if (!BN_usub(r,r,&(recp->N))) goto err;
203 d->neg=m->neg^recp->N.neg;