Sample code for 30+ languages & platforms
CkPython Requires Chilkat v11.0.0+

Verfies an RSA Signature

See more Apple Keychain Examples

Verifies an RSA signature against the original data.

Chilkat CkPython Downloads

CkPython
import sys
import chilkat

success = False

#  The following data was signed by the following example:
#  RSA Sign using a Private Key on a USB Token or Smartcard
bd = chilkat.CkBinData()

for i in range(0,101):
    bd.AppendEncoded("000102030405060708090A0B0C0D0E0F","hex")

#  Load the signature
bdSig = chilkat.CkBinData()
success = bdSig.LoadFile("rsaSignatures/test1.sig")
if (success == False):
    print("Failed to load the RSA signature")
    sys.exit()

#  Get the public key to be used for signature verification.
pubKey = chilkat.CkPublicKey()
success = pubKey.LoadFromFile("rsaKeys/chilkat-rsa-2048.pem")
if (success == False):
    print(pubKey.lastErrorText())
    sys.exit()

rsa = chilkat.CkRsa()
success = rsa.UsePublicKey(pubKey)
if (success == False):
    print(rsa.lastErrorText())
    sys.exit()

#  Verify the hash of the data against the signature.
#  We pass in the original data.  Internally, the hash is generated
#  and used to validate the signature.
#  Validating the RSA signature means two things:  
#  (1) the original data is exactly what was signed, and 
#  (2) it was signed by the owner of the RSA private key.
success = rsa.VerifyBd(bd,"sha256",bdSig)

if (success == False):
    print(rsa.lastErrorText())
    print("Signature invalid.")
else:
    print("Signature valid.")