Sample code for 30+ languages & platforms
DataFlex

Create PKCS7 Signed File (.p7m)

See more Encryption Examples

Demonstrates how to sign a file to create a .p7m that contains both the file contents and the signature.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoCrypt
    Variant vCert
Store    Handle hoCertStore
    Variant vJsonCN
    Handle hoJsonCN
    Variant vCert
    Handle hoCert
    String sInFile
    String sOutFile
    String sTemp1

    Move False To iSuccess

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

    Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
    If (Not(IsComObjectCreated(hoCrypt))) Begin
        Send CreateComObject of hoCrypt
    End

    Get Create (RefClass(cComChilkatCertStore)) To hoCertStore
    If (Not(IsComObjectCreated(hoCertStore))) Begin
        Send CreateComObject of hoCertStore
    End

    // Load a PFX file into a certificate store object.
    Get ComLoadPfxFile Of hoCertStore "myPfx.pfx" "pfxPassword" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoCertStore To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Get the certificate by subject common name.
    // This should be the cert within the PFX that also
    // has a private key (also stored within the PFX).
    Get Create (RefClass(cComChilkatJsonObject)) To hoJsonCN
    If (Not(IsComObjectCreated(hoJsonCN))) Begin
        Send CreateComObject of hoJsonCN
    End
    Get ComUpdateString Of hoJsonCN "CN" "myCert" To iSuccess
    Get Create (RefClass(cComChilkatCert)) To hoCert
    If (Not(IsComObjectCreated(hoCert))) Begin
        Send CreateComObject of hoCert
    End
    Get pvComObject of hoJsonCN to vJsonCN
    Get pvComObject of hoCert to vCert
    Get ComFindCert Of hoCertStore vJsonCN vCert To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoCertStore To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Tell the crypt object to use the certificate for signing:
    Get pvComObject of hoCert to vCert
    Get ComSetSigningCert Of hoCrypt vCert To iSuccess

    // Sign a file, producing a .p7m as output.
    // The input file is unchanged, the test.p7m contains the 
    // contents of the input file and the signature.
    Move "test.txt" To sInFile
    Move "testp7m" To sOutFile
    Get ComCreateP7M Of hoCrypt sInFile sOutFile To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoCrypt To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "Success!"


End_Procedure