def verify_data_with_publickey(public_key, data: bytes, signature: bytes, is_hash: bool=False) -> bool:
"""??? DATA ??
:param public_key: ??? ???
:param data: ?? ?? ??
:param signature: ?? ???
:param is_hash: ?? hashed ??(True/False
:return: ?? ?? ??(True/False)
"""
hash_algorithm = hashes.SHA256()
if is_hash:
hash_algorithm = utils.Prehashed(hash_algorithm)
if isinstance(public_key, ec.EllipticCurvePublicKeyWithSerialization):
try:
public_key.verify(
signature=signature,
data=data,
signature_algorithm=ec.ECDSA(hash_algorithm)
)
return True
except InvalidSignature:
logging.debug("InvalidSignatureException_ECDSA")
elif isinstance(public_key, rsa.RSAPublicKeyWithSerialization):
try:
public_key.verify(
signature,
data,
padding.PKCS1v15(),
hash_algorithm
)
return True
except InvalidSignature:
logging.debug("InvalidSignatureException_RSA")
else:
logging.debug("Unknown PublicKey Type : %s", type(public_key))
return False
评论列表
文章目录