Lines Matching refs:range
132 /* random number r: 0 <= r < range */
133 static int bnrand_range(BNRAND_FLAG flag, BIGNUM *r, const BIGNUM *range,
144 if (range->neg || BN_is_zero(range)) {
149 n = BN_num_bits(range); /* n > 0 */
151 /* BN_is_bit_set(range, n - 1) always holds */
155 else if (!BN_is_bit_set(range, n - 2) && !BN_is_bit_set(range, n - 3)) {
157 * range = 100..._2, so 3*range (= 11..._2) is exactly one bit longer
158 * than range
166 * If r < 3*range, use r := r MOD range (which is either r, r -
167 * range, or r - 2*range). Otherwise, iterate once more. Since
168 * 3*range = 11..._2, each iteration succeeds with probability >=
171 if (BN_cmp(r, range) >= 0) {
172 if (!BN_sub(r, r, range))
174 if (BN_cmp(r, range) >= 0)
175 if (!BN_sub(r, r, range))
185 while (BN_cmp(r, range) >= 0);
188 /* range = 11..._2 or range = 101..._2 */
198 while (BN_cmp(r, range) >= 0);
205 int BN_rand_range_ex(BIGNUM *r, const BIGNUM *range, unsigned int strength,
208 return bnrand_range(NORMAL, r, range, strength, ctx);
212 int BN_rand_range(BIGNUM *r, const BIGNUM *range)
214 return bnrand_range(NORMAL, r, range, 0, NULL);
218 int BN_priv_rand_range_ex(BIGNUM *r, const BIGNUM *range, unsigned int strength,
221 return bnrand_range(PRIVATE, r, range, strength, ctx);
225 int BN_priv_rand_range(BIGNUM *r, const BIGNUM *range)
227 return bnrand_range(PRIVATE, r, range, 0, NULL);
236 int BN_pseudo_rand_range(BIGNUM *r, const BIGNUM *range)
238 return BN_rand_range(r, range);
244 * BN_generate_dsa_nonce generates a random number 0 <= out < range. Unlike
251 int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range,
258 * least |range| bits of randomness.
263 /* We generate |range|+8 bytes of random output. */
264 const unsigned num_k_bytes = BN_num_bytes(range) + 8;
316 if (BN_mod(out, out, range, ctx) != 1)