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

Verfies an RSA Signature

See more Apple Keychain Examples

Verifies an RSA signature against the original data.

Chilkat Lianja Downloads

Lianja
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