Code Duplication    Length = 20-20 lines in 2 locations

server/lib/rsa/_version200.py 1 location

@@ 191-210 (lines=20) @@
188
    randomdata = os.urandom(nbytes)
189
    return bytes2int(randomdata)
190
191
def randint(minvalue, maxvalue):
192
    """Returns a random integer x with minvalue <= x <= maxvalue"""
193
194
    # Safety - get a lot of random data even if the range is fairly
195
    # small
196
    min_nbits = 32
197
198
    # The range of the random numbers we need to generate
199
    range = (maxvalue - minvalue) + 1
200
201
    # Which is this number of bytes
202
    rangebytes = ((bit_size(range) + 7) / 8)
203
204
    # Convert to bits, but make sure it's always at least min_nbits*2
205
    rangebits = max(rangebytes * 8, min_nbits * 2)
206
207
    # Take a random number of bits between min_nbits and rangebits
208
    nbits = random.randint(min_nbits, rangebits)
209
210
    return (read_random_int(nbits) % range) + minvalue
211
212
def jacobi(a, b):
213
    """Calculates the value of the Jacobi symbol (a/b)

server/lib/rsa/_version133.py 1 location

@@ 112-131 (lines=20) @@
109
110
    return int(math.ceil(x))
111
112
def randint(minvalue, maxvalue):
113
    """Returns a random integer x with minvalue <= x <= maxvalue"""
114
115
    # Safety - get a lot of random data even if the range is fairly
116
    # small
117
    min_nbits = 32
118
119
    # The range of the random numbers we need to generate
120
    range = maxvalue - minvalue
121
122
    # Which is this number of bytes
123
    rangebytes = ceil(math.log(range, 2) / 8.)
124
125
    # Convert to bits, but make sure it's always at least min_nbits*2
126
    rangebits = max(rangebytes * 8, min_nbits * 2)
127
128
    # Take a random number of bits between min_nbits and rangebits
129
    nbits = random.randint(min_nbits, rangebits)
130
131
    return (read_random_int(nbits) % range) + minvalue
132
133
def fermat_little_theorem(p):
134
    """Returns 1 if p may be prime, and something else if p definitely