DataFlex
DataFlex
Add an S/MIME Detached Signature
See more MIME Examples
Demonstrates the Chilkat Mime.AddDetachedSignature method, which creates an S/MIME detached signature. The only argument is the signing Cert, which must have access to its private key. On success the entity becomes a multipart/signed with the content and a separate signature part.
Note: The file paths are relative to the application's current working directory. Absolute paths may also be used. Supply the paths appropriate to your own environment.
Background: A detached signature (
multipart/signed) keeps the original content readable alongside a separate signature part — so recipients whose software does not understand S/MIME still see the message, they just cannot verify it. That backward compatibility makes detached the usual choice for signed email. The signer proves authorship with a certificate that carries its private key.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoMime
String sPfxPassword
Variant vCert
Handle hoCert
String sTemp1
Move False To iSuccess
Get Create (RefClass(cComChilkatMime)) To hoMime
If (Not(IsComObjectCreated(hoMime))) Begin
Send CreateComObject of hoMime
End
Get ComSetBodyFromPlainText Of hoMime "This message will be signed." To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoMime To sTemp1
Showln sTemp1
Procedure_Return
End
// Load the signing certificate (which must have access to its private key) from a PFX file.
// The PFX password should come from a secure source rather than being hard-coded.
Move "myPfxPassword" To sPfxPassword
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Get ComLoadPfxFile Of hoCert "qa_data/signer.pfx" sPfxPassword To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
// Create an S/MIME detached signature. The object becomes a multipart/signed entity with the
// original content and a separate signature part.
Get pvComObject of hoCert to vCert
Get ComAddDetachedSignature Of hoMime vCert To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoMime To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComSaveMime Of hoMime "qa_output/signed.eml" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoMime To sTemp1
Showln sTemp1
Procedure_Return
End
Showln "Detached signature added."
End_Procedure