DataFlex
DataFlex
Encrypt/Decrypt using PFX to produce -----BEGIN PKCS7----- ... -----END PKCS7-----
See more Encryption Examples
First we encrypt using a certificate + public key to produce output such as:-----BEGIN PKCS7----- MIIHPwYJKoZIhvcNAQcEoIIHMDCCBywC ... ... ... -----END PKCS7-----Then we decrypt using the cert + private key.
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoCrypt
Variant vCert
Handle hoCert
String sToBeEncrypted
String sEncryptedStr
Handle hoSb
String sOutStr
Boolean iBCrlf
Handle hoDecrypt
String sDecryptedText
String sTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
If (Not(IsComObjectCreated(hoCrypt))) Begin
Send CreateComObject of hoCrypt
End
// Specify the encryption to be used.
// "pki" indicates "Public Key Infrastructure" and will create a PKCS7 encrypted (enveloped) message.
Set ComCryptAlgorithm Of hoCrypt To "pki"
Set ComPkcs7CryptAlg Of hoCrypt To "aes"
Set ComKeyLength Of hoCrypt To 128
Set ComOaepHash Of hoCrypt To "sha256"
Set ComOaepPadding Of hoCrypt To True
// A certificate is needed as the encryption key.
// Althought the PFX contains the associated private key, we don't need it for encryption.
// (A certificate usually contains the public key by default.)
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Get ComLoadPfxFile Of hoCert "qa_data/pfx/cert_test123.pfx" "test123" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
// Tell the crypt object to use the certificate.
Get pvComObject of hoCert to vCert
Get ComSetEncryptCert Of hoCrypt vCert To iSuccess
Move "This string is to be encrypted." To sToBeEncrypted
// Get the result in multi-line BASE64 MIME format.
Set ComEncodingMode Of hoCrypt To "base64_mime"
Get ComEncryptStringENC Of hoCrypt sToBeEncrypted To sEncryptedStr
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoCrypt To sTemp1
Showln sTemp1
Procedure_Return
End
// Make a "-----BEGIN PKCS7-----" ... "-----END PKCS7-----" sandwich...
Get Create (RefClass(cComChilkatStringBuilder)) To hoSb
If (Not(IsComObjectCreated(hoSb))) Begin
Send CreateComObject of hoSb
End
Get ComAppendLine Of hoSb "-----BEGIN PKCS7-----" True To iSuccess
Get ComAppend Of hoSb sEncryptedStr To iSuccess
Get ComAppendLine Of hoSb "-----END PKCS7-----" True To iSuccess
Get ComGetAsString Of hoSb To sOutStr
Showln sOutStr
// Sample output:
// -----BEGIN PKCS7-----
// MIICXAYJKoZIhvcNAQcDoIICTTCCAkkCAQAxggH0MIIB8AIBADCBrDCBlzELMAkGA1UEBhMCR0Ix
// GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
// Q09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0
// aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEB6M1ZwZdZU7LrAIdurulmUwOAYJKoZIhvcNAQEHMCug
// DzANBglghkgBZQMEAgEFAKEYMBYGCSqGSIb3DQEBCDAJBgUrDgMCGgUABIIBAK/BZG/iXJ8az7zL
// 8EQ77mc+oDPQ4w1hyytK2ip4djkPVvTfYhcoDQ+G/DBU+urJfrVBi5H9gmpXwYyfKlyUxBVRVEJl
// V/V5QQi4JmNTFbmgWh5tp9zDS98l6A2Va4Zs0Wy/owGLfvwitlxd1dsfVAV2hmBYS24BMpNcty5/
// 0atcKYmSou13G78ztTKdMy1tECgZy8kerMsPdDQbSxEZkT3KpQ8C5uEQqYF3bIVaeZzha/Ywieh/
// tvO0T4aAmeJufwkNdVECmU7kuhnNaVPXknFl7jeibTl6zA/VcJKBKcIYT9FRC7KjdooI8q+jtQ/V
// k6RP4POaowkFg1QWRPEWeqIwTAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBAgQQEEFQduqeJqXQXzy4
// JpkoDoAgdldJDB9zEkpMpgr5/fR2iLvh5kC6BPfhOYjsawBY4Ok=
// -----END PKCS7-----
// ----------------------------------------------------------------------------------------
// Let's Decrypt the above string.
// Start with what was produced above..
Send ComClear To hoSb
Move True To iBCrlf
Get ComAppendLine Of hoSb "-----BEGIN PKCS7-----" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "MIICXAYJKoZIhvcNAQcDoIICTTCCAkkCAQAxggH0MIIB8AIBADCBrDCBlzELMAkGA1UEBhMCR0Ix" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "Q09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEB6M1ZwZdZU7LrAIdurulmUwOAYJKoZIhvcNAQEHMCug" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "DzANBglghkgBZQMEAgEFAKEYMBYGCSqGSIb3DQEBCDAJBgUrDgMCGgUABIIBAK/BZG/iXJ8az7zL" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "8EQ77mc+oDPQ4w1hyytK2ip4djkPVvTfYhcoDQ+G/DBU+urJfrVBi5H9gmpXwYyfKlyUxBVRVEJl" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "V/V5QQi4JmNTFbmgWh5tp9zDS98l6A2Va4Zs0Wy/owGLfvwitlxd1dsfVAV2hmBYS24BMpNcty5/" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "0atcKYmSou13G78ztTKdMy1tECgZy8kerMsPdDQbSxEZkT3KpQ8C5uEQqYF3bIVaeZzha/Ywieh/" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "tvO0T4aAmeJufwkNdVECmU7kuhnNaVPXknFl7jeibTl6zA/VcJKBKcIYT9FRC7KjdooI8q+jtQ/V" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "k6RP4POaowkFg1QWRPEWeqIwTAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBAgQQEEFQduqeJqXQXzy4" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "JpkoDoAgdldJDB9zEkpMpgr5/fR2iLvh5kC6BPfhOYjsawBY4Ok=" iBCrlf To iSuccess
Get ComAppendLine Of hoSb "-----END PKCS7-----" iBCrlf To iSuccess
Get Create (RefClass(cComChilkatCrypt2)) To hoDecrypt
If (Not(IsComObjectCreated(hoDecrypt))) Begin
Send CreateComObject of hoDecrypt
End
Set ComCryptAlgorithm Of hoDecrypt To "pki"
// Use the same cert + private key from the PFX above.
// For decryption, we need the private key. Given that the certificate was loaded from a PFX,
// we should already have it.
Get pvComObject of hoCert to vCert
Get ComSetDecryptCert Of hoDecrypt vCert To iSuccess
Set ComEncodingMode Of hoDecrypt To "base64"
Get ComGetBetween Of hoSb "-----BEGIN PKCS7-----" "-----END PKCS7-----" To sTemp1
Get ComDecryptStringENC Of hoDecrypt sTemp1 To sDecryptedText
Showln sDecryptedText
End_Procedure