Sample code for 30+ languages & platforms
PowerBuilder

Verify an RSA Signature Against the Signed Hash

See more Apple Keychain Examples

Demonstrates how to validate an RSA Signature against the hash that was signed.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Bd
integer i
string ls_Sha256_base64
string ls_Base64_rsa_sig
oleobject loo_PubKey
oleobject loo_Rsa

li_Success = 0

loo_Bd = create oleobject
li_rc = loo_Bd.ConnectToNewObject("Chilkat.BinData")
if li_rc < 0 then
    destroy loo_Bd
    MessageBox("Error","Connecting to COM object failed")
    return
end if

for i = 0 to 100
    loo_Bd.AppendEncoded("000102030405060708090A0B0C0D0E0F","hex")
next
ls_Sha256_base64 = loo_Bd.GetHash("sha256","base64")
Write-Debug "sha256 hash in base64 format: " + ls_Sha256_base64

ls_Base64_rsa_sig = "AwF2BbOvL6jA5DwmMAc9n6J2Cc8PI6Rj5W079+aKJcIEtPWRzHor0Bvc3aftGM3Jbgj6SXlIC3M3RYS7UZOnfiHKFNZgbxaNT5WwsWooK42ZkC8DBZl0p7OunBUKd5SciUo+TKilioeUkriN3L1Zl9hwi3HVDVqgVo3XXskwIftSqLSFlepTLTmOWj9Y93dp8J4D9RyLtNgFQBc0WB22tyJTsuY56mLcWe1AMF3LizB9OrbwjynF2u16xWlrJdugccz795fJBUV9aQSD+8S3KeqwQhoi8RK1uhD68aGCyaSpBq0NZ8COAkn7MXaF4POxrAAt8udfHM+PRfSOptcH/w=="

// Get the public key to be used for signature verification.
loo_PubKey = create oleobject
li_rc = loo_PubKey.ConnectToNewObject("Chilkat.PublicKey")

li_Success = loo_PubKey.LoadFromFile("rsaKeys/chilkat-rsa-2048.pem")
if li_Success = 0 then
    Write-Debug loo_PubKey.LastErrorText
    destroy loo_Bd
    destroy loo_PubKey
    return
end if

loo_Rsa = create oleobject
li_rc = loo_Rsa.ConnectToNewObject("Chilkat.Rsa")

li_Success = loo_Rsa.UsePublicKey(loo_PubKey)
if li_Success = 0 then
    Write-Debug loo_Rsa.LastErrorText
    destroy loo_Bd
    destroy loo_PubKey
    destroy loo_Rsa
    return
end if

// Verify the hash against the signature.
loo_Rsa.EncodingMode = "base64"
li_Success = loo_Rsa.VerifyHashENC(ls_Sha256_base64,"sha256",ls_Base64_rsa_sig)

if li_Success = 0 then
    Write-Debug loo_Rsa.LastErrorText
    Write-Debug "Signature invalid."
else
    Write-Debug "Signature valid."
end if



destroy loo_Bd
destroy loo_PubKey
destroy loo_Rsa