Sample code for 30+ languages & platforms
PowerBuilder

RSA Hash Binary Data and Sign (and Verify)

See more RSA Examples

Demonstrates how to sign the hash of binary data. Also demonstrates how to verify the RSA signature.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_PrivKey
oleobject loo_Rsa
string ls_OriginalData
oleobject loo_BdData
oleobject loo_BdSignature
oleobject loo_PubKey
oleobject loo_Rsa2
integer li_BVerified

li_Success = 0

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

// Load an RSA private key for signing.
loo_PrivKey = create oleobject
li_rc = loo_PrivKey.ConnectToNewObject("Chilkat.PrivateKey")
if li_rc < 0 then
    destroy loo_PrivKey
    MessageBox("Error","Connecting to COM object failed")
    return
end if
li_Success = loo_PrivKey.LoadEncryptedPemFile("qa_data/pem/rsa_passwd.pem","passwd")
if li_Success = 0 then
    Write-Debug loo_PrivKey.LastErrorText
    destroy loo_PrivKey
    return
end if

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

loo_Rsa.UsePrivateKey(loo_PrivKey)

// We have some binary data (in hex) to sign
ls_OriginalData = "0102030405060708090A"
loo_BdData = create oleobject
li_rc = loo_BdData.ConnectToNewObject("Chilkat.BinData")

loo_BdData.AppendEncoded(ls_OriginalData,"hex")

// Hash (SHA-256) and sign the hash:
loo_BdSignature = create oleobject
li_rc = loo_BdSignature.ConnectToNewObject("Chilkat.BinData")

li_Success = loo_Rsa.SignBd(loo_BdData,"sha256",loo_BdSignature)
if li_Success = 0 then
    Write-Debug loo_Rsa.LastErrorText
    destroy loo_PrivKey
    destroy loo_Rsa
    destroy loo_BdData
    destroy loo_BdSignature
    return
end if

// Show the RSA signature in base64
Write-Debug loo_BdSignature.GetEncoded("base64")

// ------------------------------------------
// Get the public key from the private key
loo_PubKey = create oleobject
li_rc = loo_PubKey.ConnectToNewObject("Chilkat.PublicKey")

loo_PrivKey.ToPublicKey(loo_PubKey)

// Verify the signature..
loo_Rsa2 = create oleobject
li_rc = loo_Rsa2.ConnectToNewObject("Chilkat.Rsa")

loo_Rsa2.UsePublicKey(loo_PubKey)

li_BVerified = loo_Rsa2.VerifyBd(loo_BdData,"sha256",loo_BdSignature)
Write-Debug "signature verified: " + string(li_BVerified)


destroy loo_PrivKey
destroy loo_Rsa
destroy loo_BdData
destroy loo_BdSignature
destroy loo_PubKey
destroy loo_Rsa2