From 6e7528c2a3c1f5a95fabd6849d9e0240398da03b Mon Sep 17 00:00:00 2001 From: spekulaas Date: Mon, 6 Nov 2023 17:11:03 +0100 Subject: [PATCH] added sign and verify func --- goodchain/src/helpers/SignatureHelper.py | 31 +++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/goodchain/src/helpers/SignatureHelper.py b/goodchain/src/helpers/SignatureHelper.py index 2ae51b6..4c43ee6 100644 --- a/goodchain/src/helpers/SignatureHelper.py +++ b/goodchain/src/helpers/SignatureHelper.py @@ -1,6 +1,8 @@ from cryptography.exceptions import * from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import padding def generateKeys(): private_key = rsa.generate_private_key(public_exponent=65537,key_size=2048) @@ -37,4 +39,31 @@ def bytesToKeys(private_ser, public_ser): public_key = serialization.load_pem_public_key( public_ser ) - return private_key, public_key \ No newline at end of file + return private_key, public_key + +def sign(message, private_key): + message = bytes(str(message), 'utf-8') + signature = private_key.sign( + message, + padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), + hashes.SHA256() + ) + return signature + +def verify(message, signature, pbc_ser): + message = bytes(str(message), 'utf-8') + public_key = serialization.load_pem_public_key(pbc_ser) + try: + public_key.verify( + signature, + message, + padding.PSS(mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.MAX_LENGTH), + hashes.SHA256() + ) + return True + except InvalidSignature: + return False + except: + print("Error executing 'public_key.verify'") + return False \ No newline at end of file