DataFlex
DataFlex
Send an Email with a Digital Signature
See more Email Object Examples
Demonstrates the Chilkat Email.SendSigned property. Set it to true to have the email sent with a digital signature (the default is false). Signing also requires a certificate with access to its private key. This example loads that certificate (and its private key) from a PFX file with Cert.LoadPfxFile, supplies it via SetSigningCert, and enables signed sending.
Background: Signing is the mirror image of encrypting. To encrypt for a recipient you use their public certificate; to sign you use your own private key, and recipients verify with your public certificate. A signature does not hide the message — a signed email is still readable by anyone — but it proves who sent it and guarantees the content was not tampered with. A PFX (also called PKCS#12,
.pfx or .p12) is a password-protected file that bundles a certificate together with its private key, making it a convenient single-file source for signing credentials.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoEmail
Variant vCert
Handle hoCert
String sTemp1
Boolean bTemp1
Move False To iSuccess
// Demonstrates the Email.SendSigned property with a full signing setup. Set SendSigned
// to true to have the email sent with a digital signature. Signing requires a certificate
// with access to its private key, which we load here from a PFX (.pfx / .p12) file.
Get Create (RefClass(cComChilkatEmail)) To hoEmail
If (Not(IsComObjectCreated(hoEmail))) Begin
Send CreateComObject of hoEmail
End
Set ComSubject Of hoEmail To "Signed email"
Set ComBody Of hoEmail To "This message will be sent with a digital signature."
Set ComFrom Of hoEmail To "alice@example.com"
Get ComAddTo Of hoEmail "Bob" "bob@example.com" To iSuccess
// Load the signing certificate (including its private key) from a PFX file.
// The 2nd argument is the PFX password.
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Get ComLoadPfxFile Of hoCert "qa_data/certs/signer.pfx" "pfx_password" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
// Provide the signing certificate.
Get pvComObject of hoCert to vCert
Get ComSetSigningCert Of hoEmail vCert To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoEmail To sTemp1
Showln sTemp1
Procedure_Return
End
// Request that the email be sent with a digital signature.
Set ComSendSigned Of hoEmail To True
Get ComSendSigned Of hoEmail To bTemp1
Showln "SendSigned = " bTemp1
// Note: The path "qa_data/certs/signer.pfx" is a relative local filesystem path,
// relative to the current working directory of the running application.
End_Procedure