| 107 | } |
| 108 | |
| 109 | int secure_rand_below(int below) |
| 110 | { |
| 111 | unsigned int mask = find_next_power_of_two_minus_one(below); |
| 112 | dbg_assert(below > 0, "below must be positive"); |
| 113 | while(true) |
| 114 | { |
| 115 | unsigned int n; |
| 116 | secure_random_fill(&n, sizeof(n)); |
| 117 | n &= mask; |
| 118 | if((int)n < below) |
| 119 | { |
| 120 | return n; |
| 121 | } |
| 122 | } |
| 123 | } |