Xbase++ Requires Chilkat v11.0.0+
Xbase++
Verify an RSA Signature Against the Signed String
See more Apple Keychain Examples
Demonstrates how to validate an RSA Signature against the string that was signed.Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oSb
LOCAL nCrlfLineEnding
LOCAL i
LOCAL cBase64_rsa_sig
LOCAL oPubKey
LOCAL oRsa
LOCAL cSignedString
nSuccess := 0
// Create the same string we previously signed in this example:
// RSA Sign utf-8 Bytes of String to get Base64 RSA Signature
oSb := CreateObject("Chilkat.StringBuilder")
nCrlfLineEnding := 1
FOR i := 0 TO 10
oSb:AppendLine("This is a test.", nCrlfLineEnding)
NEXT
cBase64_rsa_sig := "gWgpEXQqvXN6wh0MuFXPiw2xCb8cnmdizBT1TD1Tpm2GlJ8gnD59DGSj35GGXk1tM+mCOvMa2uW/9gmz8p6A90JLbn918i/2wKGvcde4wXnzPO7JADSNn2UwYzf3rp4/q/JrHv1GZETRJhABSFqTxOgdmdbEJQE/zijOSctCtQAM2CTb6t2BO8uHKSSUAwPH2cbeWxqsaVRLT4ruk5nZOxhoLgLMSjupiSzbE8zSTkkFOEHD+Mbb2xwg85AI0E4DsUnp+hLwwtS0blesgSyvtBY8oJODJeFcJsR7JDOTPdzHQHgJRl/2A4ij5xT91TpXy7ok43jhT6O9j7Q3qrafIQ=="
// Get the public key to be used for signature verification.
oPubKey := CreateObject("Chilkat.PublicKey")
nSuccess := oPubKey:LoadFromFile("rsaKeys/chilkat-rsa-2048.pem")
IF (nSuccess == 0)
? oPubKey:LastErrorText
oSb:destroy()
oPubKey:destroy()
RETURN
ENDIF
oRsa := CreateObject("Chilkat.Rsa")
nSuccess := oRsa:UsePublicKey(oPubKey)
IF (nSuccess == 0)
? oRsa:LastErrorText
oSb:destroy()
oPubKey:destroy()
oRsa:destroy()
RETURN
ENDIF
// Verify the string against the signature.
// We signed the utf-8 byte representation of the string, so we must indicate
// to also validate against the utf-8 byte representation.
oRsa:Charset := "utf-8"
oRsa:EncodingMode := "base64"
cSignedString := oSb:GetAsString()
nSuccess := oRsa:VerifyStringENC(cSignedString, "sha256", cBase64_rsa_sig)
IF (nSuccess == 0)
? oRsa:LastErrorText
? "Signature invalid."
ELSE
? "Signature valid."
ENDIF
oSb:destroy()
oPubKey:destroy()
oRsa:destroy()