From 39357f98aa2f3705c3051f7f265ecdb602e32e06 Mon Sep 17 00:00:00 2001 From: David Korczynski Date: Wed, 6 Apr 2022 10:55:49 +0100 Subject: [PATCH] Add initial fuzz testing --- tests/fuzz_private_key.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tests/fuzz_private_key.py diff --git a/tests/fuzz_private_key.py b/tests/fuzz_private_key.py new file mode 100644 index 0000000..3765406 --- /dev/null +++ b/tests/fuzz_private_key.py @@ -0,0 +1,36 @@ +import sys +import atheris + +with atheris.instrument_imports(): + from ellipticcurve import Ecdsa, Signature, PublicKey, PrivateKey + + +@atheris.instrument_func +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 main(): + atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True) + atheris.Fuzz() + + +if __name__ == "__main__": + main()