Пример #1
0
    def testZeroSignature(self):
        privateKey = PrivateKey()
        publicKey = privateKey.publicKey()

        message2 = "This is the wrong message"

        self.assertFalse(Ecdsa.verify(message2, Signature(0, 0), publicKey))
Пример #2
0
    def testVerifyRightMessage(self):
        privateKey = PrivateKey()
        publicKey = privateKey.publicKey()

        message = "This is the right message"

        signature = Ecdsa.sign(message, privateKey)

        self.assertTrue(Ecdsa.verify(message, signature, publicKey))
Пример #3
0
    def testVerifyWrongMessage(self):
        privateKey = PrivateKey()
        publicKey = privateKey.publicKey()

        message1 = "This is the right message"
        message2 = "This is the wrong message"

        signature = Ecdsa.sign(message1, privateKey)

        self.assertFalse(Ecdsa.verify(message2, signature, publicKey))
Пример #4
0
def check_private_key(pem):
    try:
        assert PrivateKey.fromPem(pem).curve.name == "secp256k1"
    except:
        raise Exception(
            "Private-key must be valid secp256k1 ECDSA string in pem format")
    return pem
Пример #5
0
    def testDerConversion(self):
        privateKey = PrivateKey()
        message = "This is a text message"

        signature1 = Ecdsa.sign(message, privateKey)

        der = signature1.toDer()
        signature2 = Signature.fromDer(der)

        self.assertEqual(signature1.r, signature2.r)
        self.assertEqual(signature1.s, signature2.s)
    def testDerConversion(self):
        privateKey = PrivateKey()
        message = "This is a text message"

        signature1 = Ecdsa.sign(message, privateKey)

        der = signature1.toDer(withRecoveryId=True)
        signature2 = Signature.fromDer(der, recoveryByte=True)

        self.assertEqual(signature1.r, signature2.r)
        self.assertEqual(signature1.s, signature2.s)
        self.assertEqual(signature1.recoveryId, signature2.recoveryId)
Пример #7
0
    def testMany(self):
        for _ in range(1000):
            privateKey1 = PrivateKey()
            publicKey1 = privateKey1.publicKey()

            privateKeyPem = privateKey1.toPem()
            publicKeyPem = publicKey1.toPem()

            privateKey2 = PrivateKey.fromPem(privateKeyPem)
            publicKey2 = PublicKey.fromPem(publicKeyPem)

            message = "test"

            signatureBase64 = Ecdsa.sign(message=message,
                                         privateKey=privateKey2).toBase64()
            signature = Signature.fromBase64(signatureBase64)

            self.assertTrue(
                Ecdsa.verify(message=message,
                             signature=signature,
                             publicKey=publicKey2))
Пример #8
0
    def testBase64Conversion(self):
        privateKey = PrivateKey()
        message = "This is a text message"

        signature1 = Ecdsa.sign(message, privateKey)

        base64 = signature1.toBase64()

        signature2 = Signature.fromBase64(base64)

        self.assertEqual(signature1.r, signature2.r)
        self.assertEqual(signature1.s, signature2.s)
Пример #9
0
def TestOneInput(input_bytes):
    fdp = atheris.FuzzedDataProvider(input_bytes)

    privateKey1 = PrivateKey()
    publicKey1 = privateKey1.publicKey()

    privateKeyPem = privateKey1.toPem()
    publicKeyPem = publicKey1.toPem()

    privateKey2 = PrivateKey.fromPem(privateKeyPem)
    publicKey2 = PublicKey.fromPem(publicKeyPem)

    message = fdp.ConsumeUnicode(sys.maxsize)

    signatureBase64 = Ecdsa.sign(message=message,
                                 privateKey=privateKey2).toBase64()

    signature = Signature.fromBase64(signatureBase64)
    assert (Ecdsa.verify(message=message,
                         signature=signature,
                         publicKey=publicKey2))
    def testBase64Conversion(self):
        privateKey = PrivateKey()
        message = "This is a text message"

        signature1 = Ecdsa.sign(message, privateKey)

        base64 = signature1.toBase64(withRecoveryId=True)

        signature2 = Signature.fromBase64(base64, recoveryByte=True)

        self.assertEqual(signature1.r, signature2.r)
        self.assertEqual(signature1.s, signature2.s)
        self.assertEqual(signature1.recoveryId, signature2.recoveryId)
Пример #11
0
def create(path=None):
    """# Generate a new key pair
    Generates a secp256k1 ECDSA private/public key pair to be used in the API authentications
    ## Parameters (optional):
        path [string]: path to save the keys .pem files. No files will be saved if this parameter isn't provided
    ## Return:
        private and public key pems
    """

    private = PrivateKey()
    public = private.publicKey()

    private_pem = private.toPem()
    public_pem = public.toPem()

    if path is not None:
        if not os_path.exists(path):
            makedirs(path)
        with open(os_path.join(path, "private-key.pem"), "w") as file:
            file.write(private_pem)
        with open(os_path.join(path, "public-key.pem"), "w") as file:
            file.write(public_pem)

    return private_pem, public_pem
Пример #12
0
    def testAssign(self):
        # Generated by: openssl ecparam -name secp256k1 -genkey -out privateKey.pem
        privateKeyPem = File.read("privateKey.pem")

        privateKey = PrivateKey.fromPem(privateKeyPem)

        message = File.read("message.txt")

        signature = Ecdsa.sign(message=message, privateKey=privateKey)

        publicKey = privateKey.publicKey()

        self.assertTrue(
            Ecdsa.verify(message=message,
                         signature=signature,
                         publicKey=publicKey))
Пример #13
0
 def private_key(self):
     return PrivateKey.fromPem(self.pem)