async def verify_signed_dictionary( public_key: rsa.RSAPublicKey, signature: bytes, dictionary: Dict[str, Any], ) -> None: """ Returns None if success, else throws cryptography.exceptions.InvalidSignature :param public_key: RSA public_key :param signature: the signature of the dictionary :param dictionary: the actual dictionary :raises VerificationException: If the verification fails :return: None """ verifier = public_key.verifier( signature, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH, ), hashes.SHA256(), ) verifier.update(await hash(bencode.encode(dictionary))) try: verifier.verify() except InvalidSignature: raise VerificationException()
def pk_verify(message: bytes, public_key: rsa.RSAPublicKey, signature: bytes) -> bool: """ Verify a message signature created with RSASSA-PSS. """ verifier = public_key.verifier(signature, padding.PSS(padding.MGF1(hashes.SHA256()), padding.PSS.MAX_LENGTH), hashes.SHA256()) verifier.update(message) try: verifier.verify() return True except exceptions.InvalidSignature: return False
def pk_verify(message: bytes, public_key: rsa.RSAPublicKey, signature: bytes) -> bool: """ Verify a message signature created with RSASSA-PSS. """ verifier = public_key.verifier( signature, padding.PSS(padding.MGF1(hashes.SHA256()), padding.PSS.MAX_LENGTH), hashes.SHA256()) verifier.update(message) try: verifier.verify() return True except exceptions.InvalidSignature: return False