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))
98 BN_zero(&(recp->Nr));
99 recp->num_bits = BN_num_bits(d);
100 recp->shift = 0;
105 BN_RECP_CTX *recp, BN_CTX *ctx)
126 ret = BN_div_recp(NULL, r, ca, recp, ctx);
134 BN_RECP_CTX *recp, BN_CTX *ctx)
153 if (BN_ucmp(m, &(recp->N)) < 0) {
168 j = recp->num_bits << 1;
173 if (i != recp->shift)
174 recp->shift = BN_reciprocal(&(recp->Nr), &(recp->N), i, ctx);
176 if (recp->shift == -1)
180 * d := |round(round(m / 2^BN_num_bits(N)) * recp->Nr / 2^(i - BN_num_bits(N)))|
185 if (!BN_rshift(a, m, recp->num_bits))
187 if (!BN_mul(b, a, &(recp->Nr), ctx))
189 if (!BN_rshift(d, b, i - recp->num_bits))
193 if (!BN_mul(b, &(recp->N), d, ctx))
201 while (BN_ucmp(r, &(recp->N)) >= 0) {
206 if (!BN_usub(r, r, &(recp->N)))
214 d->neg = m->neg ^ recp->N.neg;