From 4a3ae9929f4657a0f2e9ccf393205655895bb501 Mon Sep 17 00:00:00 2001 From: Gab <24553253+gabrix73@users.noreply.github.com> Date: Sat, 8 Mar 2025 14:59:35 +0100 Subject: Add files via upload --- security/crypto.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 security/crypto.py (limited to 'security/crypto.py') diff --git a/security/crypto.py b/security/crypto.py new file mode 100644 index 0000000..f961a21 --- /dev/null +++ b/security/crypto.py @@ -0,0 +1,37 @@ +from pyspx.shake_256f import generate_keypair, sign, verify +import hashlib +from typing import Tuple, Optional +import os + +class CryptoManager: + def __init__(self): + self.signing_key: Optional[bytes] = None + self.verify_key: Optional[bytes] = None + + def generate_keys(self) -> Tuple[bytes, bytes]: + """Generate new signing keypair""" + self.signing_key, self.verify_key = generate_keypair() + return self.signing_key, self.verify_key + + def sign_message(self, message: bytes) -> bytes: + """Sign a message using the signing key""" + if not self.signing_key: + raise ValueError("No signing key available") + return sign(message, self.signing_key) + + def verify_signature(self, message: bytes, signature: bytes, + public_key: bytes) -> bool: + """Verify a message signature""" + try: + verify(message, signature, public_key) + return True + except: + return False + + def hash_data(self, data: bytes) -> str: + """Create SHA-256 hash of data""" + return hashlib.sha256(data).hexdigest() + + def generate_nonce(self) -> bytes: + """Generate a random nonce""" + return os.urandom(32) -- cgit v1.2.3