PowerBuilder Requires Chilkat v11.0.0+
PowerBuilder
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
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