Module rsa_python.tests.maintest

Tests for expected characteristics of key generation as well as encryption.

Expand source code
""" Tests for expected characteristics of key generation as well as
    encryption. """

from math import gcd

from ..rsa.keygeneration import generateKeys
from ..rsa.encrypt import Encryption, Decryption
from ..common.largeprimes import miller_rabin
from ..common.sieveprimes import prime_pair

def main():
    gk = generateKeys()
    n, d = gk._make_base64()
    e = 65537
    d_int = gk._keygeneration()[1]
    assert gcd(gk._phi, gk._e) == 1
    assert d_int*gk._e%gk._phi == 1
    assert gk._e == 65537
    assert gk._n == gk._p * gk._q
    assert miller_rabin(gk._p) == miller_rabin(gk._q)

    def test_func(p = None, q = None):
        if p or q is None:
            _p, _q = prime_pair()
        else:
            _p, _q = p, q
        gk = generateKeys(_p, _q)
        n, d = gk._make_base64()
        d_int = gk._keygeneration()[1]
        enc = Encryption(n, e)
        dec = Decryption(n, d)
        _message = "Test123"
        _encrypted = enc.encrypt_large(_message)
        _decrypted = dec.large_decrypt(_encrypted)
        return _message, _encrypted, _decrypted

    p, q = prime_pair()
    p1, q1 = prime_pair()
    assert p != p1
    assert q != q1

    msg1, enc1, dec1 = test_func(p,q)
    msg2, enc2, dec2 = test_func(p1,q1)
    assert enc1 != enc2 # Different instances should give different encryptions
    assert msg1 == dec1
    assert msg2 == dec2
    assert dec1 == dec2

if __name__ == "__main__":
    main()
    print("Ran 1 test with 0 failures.")

Functions

def main()
Expand source code
def main():
    gk = generateKeys()
    n, d = gk._make_base64()
    e = 65537
    d_int = gk._keygeneration()[1]
    assert gcd(gk._phi, gk._e) == 1
    assert d_int*gk._e%gk._phi == 1
    assert gk._e == 65537
    assert gk._n == gk._p * gk._q
    assert miller_rabin(gk._p) == miller_rabin(gk._q)

    def test_func(p = None, q = None):
        if p or q is None:
            _p, _q = prime_pair()
        else:
            _p, _q = p, q
        gk = generateKeys(_p, _q)
        n, d = gk._make_base64()
        d_int = gk._keygeneration()[1]
        enc = Encryption(n, e)
        dec = Decryption(n, d)
        _message = "Test123"
        _encrypted = enc.encrypt_large(_message)
        _decrypted = dec.large_decrypt(_encrypted)
        return _message, _encrypted, _decrypted

    p, q = prime_pair()
    p1, q1 = prime_pair()
    assert p != p1
    assert q != q1

    msg1, enc1, dec1 = test_func(p,q)
    msg2, enc2, dec2 = test_func(p1,q1)
    assert enc1 != enc2 # Different instances should give different encryptions
    assert msg1 == dec1
    assert msg2 == dec2
    assert dec1 == dec2