DataFlex
DataFlex
Create PKCS7 (CMS) EnvelopedData
Encrypt some data to a recipient by creating a PKCS7 (CMS) EnvelopedData structure. The data will be encrypted using a symmetric content-encryption algorithm (e.g., AES), and the randomly generated symmetric key will be encrypted using the recipient’s RSA public key extracted from their X.509 certificate.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoCrypt
Variant vCert
Handle hoCert
String sToBeEncrypted
String sResult
String sTemp1
Move False To iSuccess
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-data) message.
Set ComCryptAlgorithm Of hoCrypt To "pki"
Set ComPkcs7CryptAlg Of hoCrypt To "aes"
Set ComKeyLength Of hoCrypt To 256
Set ComOaepHash Of hoCrypt To "sha256"
Set ComOaepPadding Of hoCrypt To True
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
// Use a certificate found in the Windows certificate store.
Get ComLoadByCommonName Of hoCert "My Certificate" 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"
Set ComCharset Of hoCrypt To "utf-8"
Get ComEncryptStringENC Of hoCrypt sToBeEncrypted To sResult
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoCrypt To sTemp1
Showln sTemp1
Procedure_Return
End
// -------------------------------------------------------------------------
// See the following example to decrypt what was created in this example
// Decrypt PKCS7 (CMS) EnvelopedData
// -------------------------------------------------------------------------
Showln sResult
// Sample output:
// MIICSgYJKoZIhvcNAQcDoIICOzCCAjcCAQAxggHiMIIB3gIBADCBljCBgTELMAkGA1UEBhMCSVQx
// EDAOBgNVBAgMB0JlcmdhbW8xGTAXBgNVBAcMEFBvbnRlIFNhbiBQaWV0cm8xFzAVBgNVBAoMDkFj
// dGFsaXMgUy5wLkEuMSwwKgYDVQQDDCNBY3RhbGlzIENsaWVudCBBdXRoZW50aWNhdGlvbiBDQSBH
// MwIQPCWvkSv8oQ7xRmEHJ6TzEDA8BgkqhkiG9w0BAQcwL6APMA0GCWCGSAFlAwQCAQUAoRwwGgYJ
// KoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUABIIBAKqHAPQNSsQoX7B2NH7QyEOWQRsSVs8oCHXmy8f4
// MVZD2er3bvYUCIomxpwbLEAl14qjUIMynahooYGgqip7+4FqL301G+BVjZVfEhHWj+VI1dAWnWuL
// VHlvc/pbQNBWqV8rKVJsNIsuAZkdj4WSwLVKxYkYX43B8fh/g71XN2DTJu7Z/824v48KBmgpQBOT
// 2q7IcDGxNPAFN2p6eavIVGn2LvhEbf/Fszyj+GR5tMcnQP1BOLJ3s3JzUBbvj8hcZrF1Vhl9HnTU
// YQx8G/KdW1mR+Wlhl3BWoK0LYKRTbnTx2BXOs0CY1SXOAdhKr01ZYjA+xW4nGzY0lfXS9QZjh9gw
// TAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBKgQQw0xTbfmnt0zjWHo5SaQIp4AgxTVY9E/Ncqy6t+RM
// 8y4c3Av62/wB8IpPUEmtM2OeuZo=
End_Procedure