Lianja
Lianja
Verfies an RSA Signature
See more Apple Keychain Examples
Verifies an RSA signature against the original data.Chilkat Lianja Downloads
llSuccess = .F.
// The following data was signed by the following example:
// RSA Sign using a Private Key on a USB Token or Smartcard
loBd = createobject("CkBinData")
for i = 0 to 100
loBd.AppendEncoded("000102030405060708090A0B0C0D0E0F","hex")
next
// Load the signature
loBdSig = createobject("CkBinData")
llSuccess = loBdSig.LoadFile("rsaSignatures/test1.sig")
if (llSuccess = .F.) then
? "Failed to load the RSA signature"
release loBd
release loBdSig
return
endif
// Get the public key to be used for signature verification.
loPubKey = createobject("CkPublicKey")
llSuccess = loPubKey.LoadFromFile("rsaKeys/chilkat-rsa-2048.pem")
if (llSuccess = .F.) then
? loPubKey.LastErrorText
release loBd
release loBdSig
release loPubKey
return
endif
loRsa = createobject("CkRsa")
llSuccess = loRsa.UsePublicKey(loPubKey)
if (llSuccess = .F.) then
? loRsa.LastErrorText
release loBd
release loBdSig
release loPubKey
release loRsa
return
endif
// 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.
llSuccess = loRsa.VerifyBd(loBd,"sha256",loBdSig)
if (llSuccess = .F.) then
? loRsa.LastErrorText
? "Signature invalid."
else
? "Signature valid."
endif
release loBd
release loBdSig
release loPubKey
release loRsa