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->shift = 0;
69 recp->flags = 0;
84 void BN_RECP_CTX_free(BN_RECP_CTX *recp)
86 if (recp == NULL)
89 BN_free(&(recp->N));
90 BN_free(&(recp->Nr));
91 if (recp->flags & BN_FLG_MALLOCED)
92 OPENSSL_free(recp);
95 int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *d, BN_CTX *ctx)
97 if (!BN_copy(&(recp->N), d))
99 BN_zero(&(recp->Nr));
100 recp->num_bits = BN_num_bits(d);
101 recp->shift = 0;
106 BN_RECP_CTX *recp, BN_CTX *ctx)
127 ret = BN_div_recp(NULL, r, ca, recp, ctx);
135 BN_RECP_CTX *recp, BN_CTX *ctx)
154 if (BN_ucmp(m, &(recp->N)) < 0) {
171 j = recp->num_bits << 1;
176 if (i != recp->shift)
177 recp->shift = BN_reciprocal(&(recp->Nr), &(recp->N), i, ctx);
179 if (recp->shift == -1)
183 * d := |round(round(m / 2^BN_num_bits(N)) * recp->Nr / 2^(i - BN_num_bits(N)))|
188 if (!BN_rshift(a, m, recp->num_bits))
190 if (!BN_mul(b, a, &(recp->Nr), ctx))
192 if (!BN_rshift(d, b, i - recp->num_bits))
196 if (!BN_mul(b, &(recp->N), d, ctx))
204 while (BN_ucmp(r, &(recp->N)) >= 0) {
209 if (!BN_usub(r, r, &(recp->N)))
217 d->neg = m->neg ^ recp->N.neg;