in api/plugins/crypto.py [0:0]
def verify(key, sig, text):
""" Verifies a signature of a text using the public key """
hashver = cryptography.hazmat.primitives.hashes.SHA1()
hasher = cryptography.hazmat.primitives.hashes.Hash(hashver, cryptography.hazmat.backends.default_backend())
retval = b""
i = 0
txtl = len(text)
ks = int(key.key_size / 8)
while i < txtl:
chunk = text[i:i+ks-1]
i += ks
hasher.update(chunk.encode('utf-8'))
digest = hasher.finalize()
try:
key.verify(
sig,
digest,
cryptography.hazmat.primitives.asymmetric.padding.PSS(
mgf=cryptography.hazmat.primitives.asymmetric.padding.MGF1(cryptography.hazmat.primitives.hashes.SHA1()),
salt_length=cryptography.hazmat.primitives.asymmetric.padding.PSS.MAX_LENGTH
),
cryptography.hazmat.primitives.asymmetric.utils.Prehashed(hashver)
)
return True
except cryptography.exceptions.InvalidSignature as err:
return False