Code Duplication    Length = 18-18 lines in 2 locations

server/lib/rsa/_version200.py 1 location

@@ 212-229 (lines=18) @@
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)
214
    where both a and b are positive integers, and b is odd
215
    """
216
217
    if a == 0: return 0
218
    result = 1
219
    while a > 1:
220
        if a & 1:
221
            if ((a-1)*(b-1) >> 2) & 1:
222
                result = -result
223
            a, b = b % a, a
224
        else:
225
            if (((b * b) - 1) >> 3) & 1:
226
                result = -result
227
            a >>= 1
228
    if a == 0: return 0
229
    return result
230
231
def jacobi_witness(x, n):
232
    """Returns False if n is an Euler pseudo-prime with base x, and

server/lib/rsa/prime.py 1 location

@@ 36-53 (lines=18) @@
33
    return p
34
35
36
def jacobi(a, b):
37
    """Calculates the value of the Jacobi symbol (a/b) where both a and b are
38
    positive integers, and b is odd
39
    """
40
41
    if a == 0: return 0
42
    result = 1
43
    while a > 1:
44
        if a & 1:
45
            if ((a-1)*(b-1) >> 2) & 1:
46
                result = -result
47
            a, b = b % a, a
48
        else:
49
            if (((b * b) - 1) >> 3) & 1:
50
                result = -result
51
            a >>= 1
52
    if a == 0: return 0
53
    return result
54
55
def jacobi_witness(x, n):
56
    """Returns False if n is an Euler pseudo-prime with base x, and