PureBasic
PureBasic
Send Encrypted Email using RSAES-OAEP with AES-128 CBC and SHA256
See more SMTP Examples
Demonstrates how to send encrypted email using RSAES-OAEP with SHA256 and AES-128 content encryption.Note: This example requires Chilkat v9.5.0.67 or greater.
Chilkat PureBasic Downloads
IncludeFile "CkCert.pb"
IncludeFile "CkEmail.pb"
IncludeFile "CkMailMan.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; Load an RSA-based certificate.
; (Encrypting an email only requires the public key. Decrypting an email requires the private key.)
cert.i = CkCert::ckCreate()
If cert.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCert::ckLoadFromFile(cert,"qa_data/rsaes-oaep/cert.pem")
If success <> 1
Debug CkCert::ckLastErrorText(cert)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
email.i = CkEmail::ckCreate()
If email.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Create a simple email.
CkEmail::setCkSubject(email, "Sample RSAES-OAEP Encrypted Email")
CkEmail::setCkBody(email, "Sample RSAES-OAEP Encrypted Email")
CkEmail::setCkFrom(email, "support@chilkatsoft.com")
; Add a recipient.
; (The email is encrypted using the recipient's certificate.
; If sending to multiple recipients, then the AddEncryptCert method would
; need to be called once for each recipient's certificate.)
CkEmail::ckAddTo(email,"Chilkat GMail","chilkat.support@gmail.com")
; Set the email object properties to indicate the desired encryption.
CkEmail::setCkPkcs7CryptAlg(email, "aes")
; If AES-256 is desired, set the following property to 256.
CkEmail::setCkPkcs7KeyLength(email, 128)
CkEmail::setCkOaepPadding(email, 1)
; Other choices for the OAEP hash algorithm are "sha1", "sha384", and "sha512"
CkEmail::setCkOaepHash(email, "sha256")
; Provide the certificate to be used for encryption
CkEmail::ckAddEncryptCert(email,cert)
; Don't forget to indicate that the email should be encrypted when sent..
CkEmail::setCkSendEncrypted(email, 1)
; The mailman object will do the RSAES-OAEP encryption when sending.
mailman.i = CkMailMan::ckCreate()
If mailman.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Set the SMTP settings for your email account on your mail server.
CkMailMan::setCkSmtpUsername(mailman, "SMTP_LOGIN")
CkMailMan::setCkSmtpPassword(mailman, "SMTP_PASSWORD")
CkMailMan::setCkSmtpHost(mailman, "MY_SMTP_DOMAIN_OR_IP")
CkMailMan::setCkSmtpPort(mailman, 587)
CkMailMan::setCkStartTLS(mailman, 1)
; Send the email. The mailman will encrypt the email as directed by the
; property settings of the email object.
success = CkMailMan::ckSendEmail(mailman,email)
If success <> 1
Debug CkMailMan::ckLastErrorText(mailman)
CkCert::ckDispose(cert)
CkEmail::ckDispose(email)
CkMailMan::ckDispose(mailman)
ProcedureReturn
EndIf
success = CkMailMan::ckCloseSmtpConnection(mailman)
If success <> 1
Debug "Connection to SMTP server not closed cleanly."
EndIf
Debug "Mail Sent!"
; -----------------------------------------------------------
; This is an example of an RSAES-OAEP encrypted email
; -----------------------------------------------------------
; MIME-Version: 1.0
; Date: Thu, 27 Apr 2017 08:43:32 -0500
; Message-ID: <772DC039F0259C474BAC60240EA2BA2272402308@CHILKAT13>
; Content-Type: application/pkcs7-mime; name="smime.p7m"; smime-type="enveloped-data"
; Content-Transfer-Encoding: base64
; X-Priority: 3 (Normal)
; Subject: Sample RSAES-OAEP Encrypted Email
; From: support@chilkatsoft.com
; To: "Chilkat GMail" <chilkat.support@gmail.com>
; Content-Disposition: attachment; filename="smime.p7m"
;
; MIICWQYJKoZIhvcNAQcDoIICSjCCAkYCAQAxggGgMIIBnAIBADB1MGgxCzAJBgNVBAYTAlVTMQsw
; CQYDVQQIDAJJTDEQMA4GA1UEBwwHV2hlYXRvbjEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ
; dHkgTHRkMRcwFQYDVQQDDA5DaGlsa2F0V2lkZ2V0cwIJAMRwugDmvniwMBwGCSqGSIb3DQEBBzAP
; oA0wCwYJYIZIAWUDBAIBBIIBABr0E1dKJjK0FAYRz/NCtJmBeB0nUxgcuBnhGPI/UeyGub3cCo+K
; G5F4/iVTBJqVvYIF5+fvBnyTginwv7OiUiFWLyihiFC3NIyZJO22+XMHpNatCffTPZk10WswkTgk
; G3ApnRvGQAaldnFD0Hs8drPU4vBvY9QsjT7YDGa6u2NMX+sr1ewEZArqU0mNfJ6RsEYd5FQbFEVF
; qLmnz8Dt+yhoJlUtfUd8TXIeqHRJ7RxKOTSzlBZaAdTv2QX4oL9IcAgZeTg5iw+yRPkSAwWyg+I/
; 7fybLsUpRGDHTGUU+AvHvP0kYKa1mkvccBVEC/+4hEyhpS1tWIR5ByY6vM76Z+8wgZwGCSqGSIb3
; DQEHATAdBglghkgBZQMEAQIEEKqD0YDHX1NsVDaV32UczpeAcLteQyRPTV4hATjwcPiVelPfeWNs
; xZKRGaEBqLM8+Y+V4ciCFoOlgJuOcP4m1PTHyilfzd+SCsKz5l1C7+sfPf36n2aacX6IWga59Bz5
; QbWrOHDUT7O5PnGwKVgQFw3Cj4GrdPGWKcoqxB0HuKnj3WA=
CkCert::ckDispose(cert)
CkEmail::ckDispose(email)
CkMailMan::ckDispose(mailman)
ProcedureReturn
EndProcedure