def _verify_signature(self, pub_key, data, signature):
"""
?? ??? ??
:param pub_key: ??? ???
:param data: ?? ?? ???
:param signature: ?? ???
:return: ?? ?? ??(True/False)
"""
validation_result = False
# ???? Type(RSA, ECC)? ?? ?? ?? ??
if isinstance(pub_key, ec.EllipticCurvePublicKeyWithSerialization):
# ECDSA ??
logging.debug("Verify ECDSA")
try:
pub_key.verify(
signature,
data,
ec.ECDSA(hashes.SHA256())
)
validation_result = True
except InvalidSignature:
logging.debug("InvalidSignature_ECDSA")
elif isinstance(pub_key, rsa.RSAPublicKeyWithSerialization):
# RSA ??
logging.debug("Verify RSA")
try:
pub_key.verify(
signature,
data,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
validation_result = True
except InvalidSignature:
logging.debug('InvalidSignature_RSA')
else:
logging.debug("Unknown PublicKey Type : %s", type(pub_key))
return validation_result
评论列表
文章目录