Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Encrypt MIME using RSAES-OAEP with SHA256 and AES-128 content encryptionDemonstrates 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.
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 // 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 |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.