Code Duplication    Length = 22-23 lines in 2 locations

server/lib/rsa/_version200.py 1 location

@@ 348-370 (lines=23) @@
345
    return (a, lx, ly)                 #Return only positive values
346
347
# Main function: calculate encryption and decryption keys
348
def calculate_keys(p, q, nbits):
349
    """Calculates an encryption and a decryption key for p and q, and
350
    returns them as a tuple (e, d)"""
351
352
    n = p * q
353
    phi_n = (p-1) * (q-1)
354
355
    while True:
356
        # Make sure e has enough bits so we ensure "wrapping" through
357
        # modulo n
358
        e = max(65537,getprime(nbits/4))
359
        if are_relatively_prime(e, n) and are_relatively_prime(e, phi_n): break
360
361
    (d, i, j) = extended_gcd(e, phi_n)
362
363
    if not d == 1:
364
        raise Exception("e (%d) and phi_n (%d) are not relatively prime" % (e, phi_n))
365
    if (i < 0):
366
        raise Exception("New extended_gcd shouldn't return negative values")
367
    if not (e * i) % phi_n == 1:
368
        raise Exception("e (%d) and i (%d) are not mult. inv. modulo phi_n (%d)" % (e, i, phi_n))
369
370
    return (e, i)
371
372
373
def gen_keys(nbits):

server/lib/rsa/_version133.py 1 location

@@ 275-296 (lines=22) @@
272
    return (d, l, k - l*r)
273
274
# Main function: calculate encryption and decryption keys
275
def calculate_keys(p, q, nbits):
276
    """Calculates an encryption and a decryption key for p and q, and
277
    returns them as a tuple (e, d)"""
278
279
    n = p * q
280
    phi_n = (p-1) * (q-1)
281
282
    while True:
283
        # Make sure e has enough bits so we ensure "wrapping" through
284
        # modulo n
285
        e = getprime(max(8, nbits/2))
286
        if are_relatively_prime(e, n) and are_relatively_prime(e, phi_n): break
287
288
    (d, i, j) = extended_euclid_gcd(e, phi_n)
289
290
    if not d == 1:
291
        raise Exception("e (%d) and phi_n (%d) are not relatively prime" % (e, phi_n))
292
293
    if not (e * i) % phi_n == 1:
294
        raise Exception("e (%d) and i (%d) are not mult. inv. modulo phi_n (%d)" % (e, i, phi_n))
295
296
    return (e, i)
297
298
299
def gen_keys(nbits):