DataFlex Requires Chilkat v11.0.0+
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoJks
String sJksPassword
String sPrivKeyPassword
Boolean iCaseSensitive
Variant vPrivKey
Handle hoPrivKey
Handle hoRsa
Variant hoBinarySignature
String sPlaintext
String sSignatureStr
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatJavaKeyStore)) To hoJks
If (Not(IsComObjectCreated(hoJks))) Begin
Send CreateComObject of hoJks
End
Move "secret" To sJksPassword
// 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.
Get ComLoadFile Of hoJks sJksPassword "qa_data/jks/sample_secret.jks" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoJks To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the private key from the JKS.
// The private key password may be different than the file password.
Move "secret" To sPrivKeyPassword
Move False To iCaseSensitive
Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey
If (Not(IsComObjectCreated(hoPrivKey))) Begin
Send CreateComObject of hoPrivKey
End
Get pvComObject of hoPrivKey to vPrivKey
Get ComPrivateKeyOf Of hoJks sPrivKeyPassword "some.alias" iCaseSensitive vPrivKey To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoJks To sTemp1
Showln sTemp1
Procedure_Return
End
// Establish the RSA object and tell it to use the private key..
Get Create (RefClass(cComChilkatRsa)) To hoRsa
If (Not(IsComObjectCreated(hoRsa))) Begin
Send CreateComObject of hoRsa
End
Get pvComObject of hoPrivKey to vPrivKey
Get ComUsePrivateKey Of hoRsa vPrivKey To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoRsa To sTemp1
Showln sTemp1
Procedure_Return
End
// Indicate we'll be signing the utf-8 byte representation of the string..
Set ComCharset Of hoRsa To "utf-8"
// Sign some plaintext using RSA-SHA256
Move "this is the text to be signed" To sPlaintext
Get ComSignString Of hoRsa sPlaintext "SHA256" To hoBinarySignature
Get ComLastMethodSuccess Of hoRsa To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoRsa To sTemp1
Showln sTemp1
Procedure_Return
End
// Alternatively, if the signature is desired in some encoded string form,
// such as base64, base64-url, hex, etc.
Set ComEncodingMode Of hoRsa To "base64-url"
Get ComSignStringENC Of hoRsa sPlaintext "SHA256" To sSignatureStr
Showln "base64-url RSA signature: " sSignatureStr
End_Procedure