Example #1
0
def test_ImportSplitRestoreKey():

    for x in range(10):

        thresholdList = []
        # Randomly generate two digit number that ranges from 3 to 100
        threshold = randint(3, 100)

        # Generate pair of keys in pem format
        pubKey, privKey = PyAsymKey.GenerateKeyPairPEM()
        assert privKeyPEMHeader in privKey, "Test failed"

        # Imports a key from a PEM format
        pubValue, priValue = PyAsymKey.ImportFromPem(privKey)
        assert priValue == privKey, "Test failed"
        assert pubValue == pubKey, "Test failed"

        # Split a private key into a given number of shares
        splitKeyList = PyAsymKey.SplitKey(privKey, threshold, maxshares)
        assert len(splitKeyList) == maxshares, "Test failed"

        for i in range(threshold):

            thresholdList.append(splitKeyList[i])

        assert len(thresholdList) == threshold, "Test failed"

        # convert list to String
        thresholdString = ';'.join(thresholdList)

        # Restore a private key from a given number of shares
        restorePubKey, restorePrivKey = PyAsymKey.RestoreKey(thresholdString)
        assert restorePrivKey == privKey, "Test failed"
Example #2
0
def test_ThresholdEqualMaxShareTestcase():

    thresholdList = []
    #Randomly generate two digit number that ranges from 3 to 100
    threshold = 100

    # Generate pair of keys in pem format
    pubKey, privKey = PyAsymKey.GenerateKeyPairPEM()
    assert privKeyPEMHeader in privKey, "Test failed"

    # Split a private key into a given number of shares
    splitKeyList = PyAsymKey.SplitKey(privKey, threshold, maxshares)
    assert len(splitKeyList) == maxshares, "Test failed"

    for i in range(threshold):

        thresholdList.append(splitKeyList[i])

    assert len(thresholdList) == threshold, "Test failed"

    # convert list to String
    thresholdString = ';'.join(thresholdList)

    # Restore a private key from a given number of shares
    restorePubKey, restorePrivKey = PyAsymKey.RestoreKey(thresholdString)
    assert restorePrivKey == privKey, "Test failed"
Example #3
0
def test_ExportPublicKeyPEM():

    for x in range(100):
        # Generate pair of keys in pem format
        pubKeyPEM, privKeyPEM = PyAsymKey.GenerateKeyPairPEM()
        test_pubKeyPEM = PyAsymKey.ExportPublicPEM(privKeyPEM)

        # Calculated public key should match the generated one
        assert pubKeyPEM == test_pubKeyPEM, "Test failed"
Example #4
0
def test_ExportKeyPairHEX():

    for x in range(100):
        # Generate pair of keys in pem format
        pubKeyPEM, privKeyPEM = PyAsymKey.GenerateKeyPairPEM()
        pubKeyHEX, privKeyHEX = PyAsymKey.ExportKeyPairHEX(privKeyPEM)

        # Keys hex are generated
        assert len(pubKeyHEX) > 0, "Test failed"
        assert len(privKeyHEX) > 0, "Test failed"
Example #5
0
def test_ImportKeyFromPEM():

    for x in range(10):

        # Generate pair of keys in pem format
        pubKey, privKey = PyAsymKey.GenerateKeyPairPEM()
        assert privKeyPEMHeader in privKey, "Test failed"

        # Imports a key from a PEM format
        pubValue, priValue = PyAsymKey.ImportFromPem(privKey)
        assert priValue == privKey, "Test failed"
        assert pubValue == pubKey, "Test failed"
Example #6
0
def test_ShareSecret():

    for x in range(100):
        # Generate keys for alice and bob
        alice_pubKeyPEM, alice_privKeyPEM = PyAsymKey.GenerateKeyPairPEM()
        bob_pubKeyPEM, bob_privKeyPEM = PyAsymKey.GenerateKeyPairPEM()

        #Calculate shared secret from my private key and their public key
        secret_share_from_alice = PyAsymKey.ShareSecret(
            alice_privKeyPEM, bob_pubKeyPEM)
        secret_share_from_bob = PyAsymKey.ShareSecret(bob_privKeyPEM,
                                                      alice_pubKeyPEM)
        assert secret_share_from_alice == secret_share_from_bob, "Test failed"
Example #7
0
def test_Sign_Verification():

    msg = 'Hello, I am a message, sign me'
    for x in range(100):
        # Generate pair of keys in PEM format
        pubKey, priKey = PyAsymKey.GenerateKeyPairPEM()

        # Sign message with private Key
        rSig, sSig = PyAsymKey.Sign(msg, priKey)

        # Verify message's signature with public key
        verify_ok = PyAsymKey.Verify(msg, pubKey, rSig, sSig)
        assert verify_ok, "Test failed"
Example #8
0
def test_KeySplit():

    for x in range(10):

        #Randomly generate two digit number that ranges from 3 to 100
        threshold = randint(3, 100)

        # Generate pair of keys in pem format
        pubKey, privKey = PyAsymKey.GenerateKeyPairPEM()
        assert privKeyPEMHeader in privKey, "Test failed"

        # Split a private key into a given number of shares
        splitKeyList = PyAsymKey.SplitKey(privKey, threshold, maxshares)
        assert len(splitKeyList) == maxshares, "Test failed"
Example #9
0
def test_KeyDerive():

    additive_msg = 'I am a random message used for key derivation'
    for x in range(100):
        # Generate keys for alice and bob
        alice_pubKeyPEM, alice_privKeyPEM = PyAsymKey.GenerateKeyPairPEM()
        bob_pubKeyPEM, bob_privKeyPEM = PyAsymKey.GenerateKeyPairPEM()

        # Derive public key from a given public key and a additive message
        alice_derived_pub = PyAsymKey.DerivePublic(alice_pubKeyPEM,
                                                   additive_msg)
        bob_derived_pub = PyAsymKey.DerivePublic(bob_pubKeyPEM, additive_msg)

        # Derive pirvate key from a given private key and a additive message
        alice_derived_private = PyAsymKey.DerivePrivate(
            alice_privKeyPEM, additive_msg)
        bob_derived_private = PyAsymKey.DerivePrivate(bob_privKeyPEM,
                                                      additive_msg)

        # Export public key PEM given the private key PEM
        calc_alice_derived_pub = PyAsymKey.ExportPublicPEM(
            alice_derived_private)
        calc_bob_derived_pub = PyAsymKey.ExportPublicPEM(bob_derived_private)
        assert calc_alice_derived_pub == alice_derived_pub, "Test failed"
        assert calc_bob_derived_pub == bob_derived_pub, "Test failed"
Example #10
0
def test_SetKeyFromPem():

    for x in range(100):
        # Generate pair of keys in pem format
        pubKeyPEM, privKeyPEM = PyAsymKey.GenerateKeyPairPEM()
        test_pubKeyPEM = PyAsymKey.ExportPublicPEM(privKeyPEM)

        # Calculated public key should match the generated one
        assert pubKeyPEM == test_pubKeyPEM, "Test failed"

        #Sets a key from a PEM format
        pub, pri = PyAsymKey.ImportFromPem(privKeyPEM)

        # Calculated private key should match the generated one
        assert privKeyPEM == pri, "Test failed"
        assert pubKeyPEM == pub, "Test failed"
Example #11
0
def test_GenerateKeyPairHex():
    for x in range(100):
        # Generate pair of keys in hex format
        privKey, pubKey = PyAsymKey.GenerateKeyPairHEX()

        # Verifying the the length of actual value as 66
        assert len(privKey) == 66, "Test failed"
Example #12
0
def test_GenerateKeyPairPEM():
    privKeyPEMHeader = "BEGIN EC PRIVATE KEY"
    for x in range(100):
        # Generate pair of keys in pem format
        pubKey, privKey = PyAsymKey.GenerateKeyPairPEM()

        # Verifying the the length of actual value as 66
        assert privKeyPEMHeader in privKey, "Test failed"
Example #13
0
 def SplitKey(self, threshold=10, shares=100):
     return PyAsymKey.SplitKey(self.priKey, threshold, shares)
Example #14
0
 def FromPEMStr(self, keyPemForm):
     self.pubKey, self.priKey = PyAsymKey.ImportFromPem(keyPemForm)
     pass
Example #15
0
 def __init__(self, asHex=False):
     if (asHex):
         self.pubKey, self.priKey = PyAsymKey.GenerateKeyPairHEX()
     else:
         self.pubKey, self.priKey = PyAsymKey.GenerateKeyPairPEM()
Example #16
0
def pubKeyHexPtasPem(xPt, yPt, nid=714):
    return PyAsymKey.PubKeyHexPtToPEM(xPt, yPt, nid)
Example #17
0
 def FromEncryptedPEMStr(self, keyPemForm, passPhrase):
     self.pubKey, self.priKey = PyAsymKey.ImportFromEncryptedPEM(
         keyPemForm, passPhrase)
     pass
Example #18
0
def createDERFormat(rValue, sValue):
    assert (rValue.isDec == sValue.isDec)
    hexSig = PyAsymKey.DERSignature(rValue.value, sValue.value, rValue.isDec)
    hexSigBN = BigNum(hexSig, rValue.mod, rValue.isDec)
    return hexSigBN
Example #19
0
def pubKeyPEMasHex(pubkey, compressed=False):
    return PyAsymKey.PubKeyPEMToHexPt(pubkey, compressed)
Example #20
0
def verifyPubKeyHex(msg, pubkey, rval, sval):
    pt = ECPoint()
    pt.value = pubkey
    coords = pt.GetAffineCoOrdinates()
    pempubkey = pubKeyHexPtasPem(coords[0], coords[1])
    return PyAsymKey.Verify(msg, pempubkey, rval, sval)
Example #21
0
def verifyDER(msg, pubkey, DERSig, isDec=False):
    return PyAsymKey.VerifyDER(msg, pubkey, DERSig, isDec)
Example #22
0
 def CalculateSharedSecret(self, pubkey):
     return PyAsymKey.ShareSecret(self.priKey, pubkey)
Example #23
0
def verify(msg, pubkey, rval, sval):
    return PyAsymKey.Verify(msg, pubkey, rval, sval)
Example #24
0
 def sign(self, msg):
     return PyAsymKey.Sign(msg, self.priKey)
Example #25
0
 def RecoverKey(self, shares):
     if (len(shares) < 2):
         return
     ListAsStr = ";".join(str(x) for x in shares)
     self.pubKey, self.priKey = PyAsymKey.RestoreKey(ListAsStr)
     pass
Example #26
0
 def ToEncryptedPEMStr(self, passPhrase):
     return PyAsymKey.ExportFromEncryptedPEM(passPhrase)
Example #27
0
 def derivePublicKey(self, msg):
     return PyAsymKey.DerivePublic(self.pubKey, msg)
Example #28
0
 def derivePrivateKey(self, msg):
     return PyAsymKey.DerivePrivate(self.priKey, msg)