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

RSA SHA256 Signature using Private Key from Java Keystore

See more RSA Examples

Signs plaintext using RSA SHA256 using a key from a Java keystore.

Duplicatest this code:

KeyStore keystore; // key repository for keys containing signature certificate
String alias; // alias for the certificate in the key repository
String password; // password for the certificate's private key
String plaintext; // text being signed


Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign((PrivateKey) keystore.getKey(alias, password.toCharArray()));
signature.update(plaintext.getBytes("UTF-8"));
byte[] rsa_text= signature.sign();

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Jks
string ls_JksPassword
string ls_PrivKeyPassword
integer li_CaseSensitive
oleobject loo_PrivKey
oleobject loo_Rsa
string ls_Plaintext
string ls_SignatureStr

li_Success = 0

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

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

ls_JksPassword = "secret"

//  Load the Java keystore from a file.  The JKS file password is used
//  to verify the keyed digest that is found at the very end of the keystore.
//  It verifies that the keystore has not been modified.
li_Success = loo_Jks.LoadFile(ls_JksPassword,"qa_data/jks/sample_secret.jks")
if li_Success = 0 then
    Write-Debug loo_Jks.LastErrorText
    destroy loo_Jks
    return
end if

//  Get the private key from the JKS.
//  The private key password may be different than the file password.
ls_PrivKeyPassword = "secret"
li_CaseSensitive = 0
loo_PrivKey = create oleobject
li_rc = loo_PrivKey.ConnectToNewObject("Chilkat.PrivateKey")

li_Success = loo_Jks.PrivateKeyOf(ls_PrivKeyPassword,"some.alias",li_CaseSensitive,loo_PrivKey)
if li_Success = 0 then
    Write-Debug loo_Jks.LastErrorText
    destroy loo_Jks
    destroy loo_PrivKey
    return
end if

//  Establish the RSA object and tell it to use the private key..
loo_Rsa = create oleobject
li_rc = loo_Rsa.ConnectToNewObject("Chilkat.Rsa")

li_Success = loo_Rsa.UsePrivateKey(loo_PrivKey)
if li_Success = 0 then
    Write-Debug loo_Rsa.LastErrorText
    destroy loo_Jks
    destroy loo_PrivKey
    destroy loo_Rsa
    return
end if

//  Indicate we'll be signing the utf-8 byte representation of the string..
loo_Rsa.Charset = "utf-8"

//  Sign some plaintext using RSA-SHA256

ls_Plaintext = "this is the text to be signed"
loo_BinarySignature = loo_Rsa.SignString(ls_Plaintext,"SHA256")
if loo_Rsa.LastMethodSuccess = 0 then
    Write-Debug loo_Rsa.LastErrorText
    destroy loo_Jks
    destroy loo_PrivKey
    destroy loo_Rsa
    return
end if

//  Alternatively, if the signature is desired in some encoded string form,
//  such as base64, base64-url, hex, etc.
loo_Rsa.EncodingMode = "base64-url"
ls_SignatureStr = loo_Rsa.SignStringENC(ls_Plaintext,"SHA256")
Write-Debug "base64-url RSA signature: " + ls_SignatureStr


destroy loo_Jks
destroy loo_PrivKey
destroy loo_Rsa