import ecdsa import hashlib import base64 from community_qa_bot.settings import ECDSA_PRIVATE_KEY, ECDSA_PUBLIC_KEY private_key = ecdsa.SigningKey.from_pem(ECDSA_PRIVATE_KEY) public_key = ecdsa.VerifyingKey.from_pem(ECDSA_PUBLIC_KEY) def sign(payload: str) -> str: sha_msg = hashlib.sha256(payload.encode()).digest() signature = private_key.sign(sha_msg) return base64.urlsafe_b64encode(signature).decode() def verify(payload: str, signature: str) -> bool: sha_msg = hashlib.sha256(payload.encode()).digest() try: signature = base64.urlsafe_b64decode(signature) return public_key.verify(signature, sha_msg) except ecdsa.BadSignatureError: return False except Exception: return False