Lua Requires Chilkat v11.0.0+
Lua
Send a Signed Email using RSASSA-PSS with SHA256
See more SMTP Examples
Demonstrates how to sign and send an email using the RSASSA-PSS signing algorithm with the SHA256 hash algorithm. .Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
-- Get a digital certificate with private key from a .pfx
-- (Chilkat has many different ways to provide a cert + private key for siging.
-- Using a PFX is just one possible option.)
local pfx = chilkat.Pfx.new()
local success = pfx:load_pfx_file("qa_data/rsassa-pss/privatekey.pfx", "PFX_PASSWORD")
if not success then
print(pfx.last_error_text)
return
end
local email = chilkat.Email.new()
-- Create a simple email.
email.subject = "Sample RSASSA-PSS Signed Email"
email.body = "Sample RSASSA-PSS Signed Email"
email.from = "from_name@mydomain.com"
-- Add one ore more recipients..
email:add_to("Chilkat Support", "support@chilkatsoft.com")
email:add_to("Chilkat GMail", "chilkat.support@gmail.com")
-- Indicate that the email is to be signed, and that we want to use RSASSA-PSS.
email.send_signed = true
email.signing_alg = "pss"
email.signing_hash_alg = "sha256"
-- Get the certificate to be used for signing.
-- (The typical case for a PFX is that it contains a cert with an associated private key,
-- as well as other certificates in the chain of authentication. The cert with the private
-- key should be in the first position at index 0.)
local cert = chilkat.Cert.new()
success = pfx:cert_at(0, cert)
if not success then
print(pfx.last_error_text)
return
end
-- Tell the email object to use this cert (and private key) for signing.
email:set_signing_cert(cert)
local mailman = chilkat.MailMan.new()
-- Set the SMTP settings for your email account on your mail server.
mailman.smtp_username = "SMTP_LOGIN"
mailman.smtp_password = "SMTP_PASSWORD"
mailman.smtp_host = "MY_SMTP_DOMAIN_OR_IP"
mailman.smtp_port = 587
mailman.start_tls = true
-- Signed email can be sent in two different ways.
-- In a multipart/signed email, the signature is attached as a separate MIME part.
-- In an opaque email (signedData) the content of the email is encapsulated within the signature
-- and the email is sent as "application/pkcs7-mime".
-- Either should be fine, but some receiving systems might require one or the other..
mailman.opaque_signing = false
-- Send the email. The mailman will sign the email as directed by the
-- property settings of the email object.
success = mailman:send_email(email)
if not success then
print(mailman.last_error_text)
return
end
success = mailman:close_smtp_connection()
if not success then
print("Connection to SMTP server not closed cleanly.")
end
print("Mail Sent!")
-- -----------------------------------------------------------
-- This is the MIME of the RSASSA-PSS signed email that was sent
-- MIME-Version: 1.0
-- Date: Thu, 20 Apr 2017 10:14:58 -0500
-- Message-ID: <3682A87344CB3A4FB5EB5BC9908C0C4DA01DA461@CHILKAT13>
-- Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha256;
-- boundary="------------050103020705000601010800"
-- X-Priority: 3 (Normal)
-- Subject: Sample RSASSA-PSS Signed Email
-- From: support@chilkatsoft.com
-- To: "Chilkat Support" <support@chilkatsoft.com>,
-- "Chilkat GMail" <chilkat.support@gmail.com>
--
-- --------------050103020705000601010800
-- Content-Type: text/plain; format=flowed
-- Content-Transfer-Encoding: 7bit
--
-- Sample RSASSA-PSS Signed Email
-- --------------050103020705000601010800
-- Content-Transfer-Encoding: base64
-- Content-Type: application/pkcs7-signature; name="smime.p7s"
-- Content-Disposition: attachment; filename="smime.p7s"
--
-- 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
-- 41wQ5A==
--
-- --------------050103020705000601010800--