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

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

Xbase++
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()