DataFlex
DataFlex
Encrypt MIME using RSAES-OAEP with SHA256 and AES-128 content encryption
See more MIME Examples
Demonstrates how to encrypt MIME using RSAES-OAEP with SHA256 and AES-128 content encryption.Note: This example requires Chilkat v9.5.0.67 or greater.
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoMime
Variant vPart0
Handle hoPart0
Variant vPart1
Handle hoPart1
Variant vSbMime
Handle hoSbMime
Variant vCert
Handle hoCert
String sTemp1
Move False To iSuccess
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatMime)) To hoMime
If (Not(IsComObjectCreated(hoMime))) Begin
Send CreateComObject of hoMime
End
// Create a MIME message to encrypt.
Get ComNewMultipartMixed Of hoMime To iSuccess
Get ComAddHeaderField Of hoMime "someHeader1" "Some value 1" To iSuccess
Get ComAddHeaderField Of hoMime "someHeader2" "Some value 2" To iSuccess
Get Create (RefClass(cComChilkatMime)) To hoPart0
If (Not(IsComObjectCreated(hoPart0))) Begin
Send CreateComObject of hoPart0
End
Get ComAddHeaderField Of hoPart0 "hdrA" "Some value A" To iSuccess
Get ComAddHeaderField Of hoPart0 "hdrB" "Some value B" To iSuccess
Set ComContentType Of hoPart0 To "text/plain"
Send ComSetBody To hoPart0 "This is the plain-text body."
Get Create (RefClass(cComChilkatMime)) To hoPart1
If (Not(IsComObjectCreated(hoPart1))) Begin
Send CreateComObject of hoPart1
End
Get ComAddHeaderField Of hoPart1 "hdrX" "Some value X" To iSuccess
Get ComAddHeaderField Of hoPart1 "hdrY" "Some value Y" To iSuccess
Set ComContentType Of hoPart1 To "text/xml"
Send ComSetBody To hoPart1 "<a>This is the XML body</a>"
Get pvComObject of hoPart0 to vPart0
Get ComAppendPart Of hoMime vPart0 To iSuccess
Get pvComObject of hoPart1 to vPart1
Get ComAppendPart Of hoMime vPart1 To iSuccess
// The MIME to be encrypted:
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbMime
If (Not(IsComObjectCreated(hoSbMime))) Begin
Send CreateComObject of hoSbMime
End
Get pvComObject of hoSbMime to vSbMime
Get ComGetMimeSb Of hoMime vSbMime To iSuccess
Get ComGetAsString Of hoSbMime To sTemp1
Showln sTemp1
// Content-Type: multipart/mixed; boundary="------------080303020600020604010008"
// someHeader1: Some value 1
// someHeader2: Some value 2
//
// --------------080303020600020604010008
// hdrA: Some value A
// hdrB: Some value B
// Content-Type: text/plain
//
// This is the plain-text body.
// --------------080303020600020604010008
// hdrX: Some value X
// hdrY: Some value Y
// Content-Type: text/xml
//
// <a>This is the XML body</a>
// --------------080303020600020604010008--
//
// Load an RSA-based certificate.
// (Encrypting MIME only requires the public key. Decrypting MIME requires the private key.)
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Get ComLoadFromFile Of hoCert "qa_data/rsaes-oaep/cert.pem" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
// Set the email object properties to indicate the desired encryption.
Set ComPkcs7CryptAlg Of hoMime To "aes"
// If AES-256 is desired, set the following property to 256.
Set ComPkcs7KeyLength Of hoMime To 128
Set ComOaepPadding Of hoMime To True
// Other choices for the OAEP hash algorithm are "sha1", "sha384", and "sha512"
Set ComOaepHash Of hoMime To "sha256"
// Encrypt the MIME (to create S/MIME, which stands for "Secure MIME")
Get pvComObject of hoCert to vCert
Get ComEncrypt Of hoMime vCert To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoMime To sTemp1
Showln sTemp1
Procedure_Return
End
Showln "---------------"
Showln "Encrypted MIME:"
Showln "---------------"
Get ComGetMime Of hoMime To sTemp1
Showln sTemp1
Showln "Success."
// ---------------------------------------------------
// This is sample output for RSAES-OAEP encrypted MIME:
// ---------------------------------------------------
// Content-Type: application/x-pkcs7-mime; name="smime.p7m"; smime-type="enveloped-data"
// someHeader1: Some value 1
// someHeader2: Some value 2
// Content-Disposition: attachment; filename="smime.p7m"
// Content-Transfer-Encoding: base64
//
// MIIDvAYJKoZIhvcNAQcDoIIDrTCCA6kCAQAxggGgMIIBnAIBADB1MGgxCzAJBgNVBAYTAlVTMQsw
// CQYDVQQIDAJJTDEQMA4GA1UEBwwHV2hlYXRvbjEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ
// dHkgTHRkMRcwFQYDVQQDDA5DaGlsa2F0V2lkZ2V0cwIJAMRwugDmvniwMBwGCSqGSIb3DQEBBzAP
// oA0wCwYJYIZIAWUDBAIBBIIBAFaUL1ga1bOrdqYKcMm+FHUacBvzfBxk0fnPA0AMBdN8BvTWT3CN
// YuqBhjOGyq0FpYD9pVZybUuFMCVsVyIW2O62HnsOK58YaPEUUcdH2sI+yjqX9UAn0P0nVDSsVdeK
// W8x9kMfZg+3UP+y1q+lu7VRJO3f2C9oLQpTkc4VW4n7UOcUI0waykLCjCTL8lFDb7/J3GeuMKyhH
// 5riNz50kpbzqn7m2Ks9yA+QmcTdXclclGFr2vwEUFzSdT2pxh/vaUrogCxkYWbQ2eV7vZg6O4kV0
// aqHBqySkPTAzHKiHH8K8GVdlTuJ8350CpICa4T8w7/Ht5I7dyOPPKy4C+rVtrvcwggH+BgkqhkiG
// 9w0BBwEwHQYJYIZIAWUDBAECBBDTC2WNBN+z2I47/4Feu9YqgIIB0MZvl3nC/q/Wzil6HtfQTr12
// Q5moHY+ORzAa1P9XvX2ZUFhW530mV395mQw/A4o4ekmX9eRPEZquYzZPLT8hNeZIuNdhpcSQUmad
// rKnKkR0wKJ3jJ3LhOIohVBQSYs8kVDZKq6lJBIznlsurFelZoNEhyRschhteDZx5rb7fCe8c2+/O
// DHxaqaHCAzm/Bd7kcg6FFfuTZy3tu0PgP5IsXN4OFA3kkvwjAs4XsVS8jdIcmDNBkYieE8WmJOIm
// Mz7mh/CHWLgWfGKa0Dkb9RcbFgLwYNT3GzuXFw9XPbKkEZjEAtJajWbN6P0WQl96YYd9qZxUpGxZ
// zjTHEYzViUdUXolfpLufttrRXyxN1RFWhNFMFbv66xYqklMSgpdM/Mbk+EuvX6eXayDPvDBpfYMw
// NoRAzv1Ony2c0ez9rBemJICicxAzpuvHbRxdjYs63Dnv+TYgpBK12AxWWpPIjXvw0WQKgTC3Tg8s
// EnuGhpENqso/clJBEBSn4+2WhYtYbdI5sVme67lvqQl1Xxy3r18SWaQbyDOwgYi1E+54lMDOxMy0
// y0FPHk5pP45DnXWj+XORPp5LhuZr5mf62YOXSSUwR5P0cXy4Rc+pN5lhRQPCf5z2
End_Procedure