Sample code for 30+ languages & platforms
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

DataFlex
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