Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loCrypt
LOCAL loCertStore
LOCAL loJsonCN
LOCAL loCert
LOCAL lcInFile
LOCAL lcOutFile

lnSuccess = 0

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

loCrypt = CreateObject('Chilkat.Crypt2')

loCertStore = CreateObject('Chilkat.CertStore')

* Load a PFX file into a certificate store object.
lnSuccess = loCertStore.LoadPfxFile("myPfx.pfx","pfxPassword")
IF (lnSuccess <> 1) THEN
    ? loCertStore.LastErrorText
    RELEASE loCrypt
    RELEASE loCertStore
    CANCEL
ENDIF

* 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).
loJsonCN = CreateObject('Chilkat.JsonObject')
loJsonCN.UpdateString("CN","myCert")
loCert = CreateObject('Chilkat.Cert')
lnSuccess = loCertStore.FindCert(loJsonCN,loCert)
IF (lnSuccess = 0) THEN
    ? loCertStore.LastErrorText
    RELEASE loCrypt
    RELEASE loCertStore
    RELEASE loJsonCN
    RELEASE loCert
    CANCEL
ENDIF

* Tell the crypt object to use the certificate for signing:
lnSuccess = loCrypt.SetSigningCert(loCert)

* 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.
lcInFile = "test.txt"
lcOutFile = "testp7m"
lnSuccess = loCrypt.CreateP7M(lcInFile,lcOutFile)
IF (lnSuccess <> 1) THEN
    ? loCrypt.LastErrorText
    RELEASE loCrypt
    RELEASE loCertStore
    RELEASE loJsonCN
    RELEASE loCert
    CANCEL
ENDIF

? "Success!"

RELEASE loCrypt
RELEASE loCertStore
RELEASE loJsonCN
RELEASE loCert