Sample code for 30+ languages & platforms
DataFlex

AddDetachedSignaturePk

See more MIME Examples

Demonstrates how to add a detached signature using a certifcate and it's corresponding private key. The easiest way of doing it is when both the certificate and private key are contained together within a PFX (.pfx or .p12) file. This example demonstrates how to use the certificate and its corresponding private key when they are stored in separate files -- a .cer for the certificate, and a .pem for the private key.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoMime
    Variant vCert
    Handle hoCert
    Variant vPrivKey
    Handle hoPrivKey
    String sTemp1

    Move False To iSuccess

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatMime)) To hoMime
    If (Not(IsComObjectCreated(hoMime))) Begin
        Send CreateComObject of hoMime
    End

    // Load the certificate from a .cer file.
    Get Create (RefClass(cComChilkatCert)) To hoCert
    If (Not(IsComObjectCreated(hoCert))) Begin
        Send CreateComObject of hoCert
    End
    Get ComLoadFromFile Of hoCert "aaworkarea/myCert.cer" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoCert To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Load the private key from an encrypted PEM file.
    // (A private key can be loaded from other file formats also..)
    Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey
    If (Not(IsComObjectCreated(hoPrivKey))) Begin
        Send CreateComObject of hoPrivKey
    End
    Get ComLoadEncryptedPemFile Of hoPrivKey "aaworkarea/myPrivateKey.pem" "myPassword" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoPrivKey To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComSetBodyFromPlainText Of hoMime "This is the plain-text MIME body." To iSuccess

    // Sign the MIME (adds a PKCS7 detached signature)
    Get pvComObject of hoCert to vCert
    Get pvComObject of hoPrivKey to vPrivKey
    Get ComAddDetachedSignaturePk Of hoMime vCert vPrivKey To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoMime To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Save the S/MIME to a file.
    Get ComSaveMime Of hoMime "aaworkarea/signedMime.txt" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoMime To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "success!"


End_Procedure