DataFlex
DataFlex
RSA Signature/Verify with .key and .cer
See more RSA Examples
Demonstrates how to use a .key file (private key) and digital certificate (.cer, public key) to create and verify an RSA signature.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Variant vPrivKey
Handle hoPrivKey
Handle hoRsa
String sStrData
String sHexSig
Handle hoCert
Variant vPubKey
Handle hoPubKey
2 Handle hoRsa2
String sTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey
If (Not(IsComObjectCreated(hoPrivKey))) Begin
Send CreateComObject of hoPrivKey
End
// Load the private key from an RSA .key file:
Get ComLoadPemFile Of hoPrivKey "privateKey.key" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPrivKey To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatRsa)) To hoRsa
If (Not(IsComObjectCreated(hoRsa))) Begin
Send CreateComObject of hoRsa
End
// Import the private key into the RSA component:
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
// Create the signature as a hex string:
Set ComEncodingMode Of hoRsa To "hex"
Move "This is the string to be signed." To sStrData
// Sign the string using the sha256 hash algorithm.
// Other valid choices are "md2", "sha1", "sha384",
// "sha512", and "md5".
Get ComSignStringENC Of hoRsa sStrData "sha256" To sHexSig
Showln sHexSig
// Load a digital certificate from a .cer file:
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Get ComLoadFromFile Of hoCert "myCert.cer" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey
If (Not(IsComObjectCreated(hoPubKey))) Begin
Send CreateComObject of hoPubKey
End
Get pvComObject of hoPubKey to vPubKey
Get ComGetPublicKey Of hoCert vPubKey To iSuccess
// Now verify using a new instance of the RSA object:
Get Create (RefClass(cComChilkatRsa)) To hoRsa2
If (Not(IsComObjectCreated(hoRsa2))) Begin
Send CreateComObject of hoRsa2
End
// Import the public key into the RSA object:
Get pvComObject of hoPubKey to vPubKey
Get ComUsePublicKey Of hoRsa2 vPubKey To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoRsa2 To sTemp1
Showln sTemp1
Procedure_Return
End
// The signature is a hex string, so make sure the EncodingMode is correct:
Set ComEncodingMode Of hoRsa2 To "hex"
// Verify the signature:
Get ComVerifyStringENC Of hoRsa2 sStrData "sha256" sHexSig To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoRsa2 To sTemp1
Showln sTemp1
Procedure_Return
End
Showln "Success."
End_Procedure