Sample code for 30+ languages & platforms
Visual FoxPro

Sign a Byte Array to Create a Detached Signature in a Byte Array

See more Digital Signatures Examples

Signs data contained in a byte array to produce a detached signature (also in a byte array). Also shows how to verify the signature.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loCert
LOCAL loFac
LOCAL loFileBytes
LOCAL loCrypt
LOCAL loSigBytes
LOCAL lnVerified

lnSuccess = 0

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

loCert = CreateObject('Chilkat.Cert')
lnSuccess = loCert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
IF (lnSuccess = 0) THEN
    ? loCert.LastErrorText
    RELEASE loCert
    CANCEL
ENDIF

loFac = CreateObject('Chilkat.FileAccess')

loFileBytes = loFac.ReadEntireFile("qa_data/pdf/sample.pdf")
IF (loFac.LastMethodSuccess <> 1) THEN
    ? loFac.LastErrorText
    RELEASE loCert
    RELEASE loFac
    CANCEL
ENDIF

loCrypt = CreateObject('Chilkat.Crypt2')

lnSuccess = loCrypt.SetSigningCert(loCert)

* We can sign any type of file.
* The result is a detached signature (a signature that does not contain the data being signed).

loSigBytes = loCrypt.SignBytes(loFileBytes)
IF (loCrypt.LastMethodSuccess <> 1) THEN
    ? loCrypt.LastErrorText
    RELEASE loCert
    RELEASE loFac
    RELEASE loCrypt
    CANCEL
ENDIF

lnSuccess = loFac.WriteEntireFile("qa_output/sample.pdf.p7s",loSigBytes)
IF (loFac.LastMethodSuccess <> 1) THEN
    ? loFac.LastErrorText
    RELEASE loCert
    RELEASE loFac
    RELEASE loCrypt
    CANCEL
ENDIF

* We can verify the detached signature like this
lnVerified = loCrypt.VerifyBytes(loFileBytes,loSigBytes)
IF (loCrypt.LastMethodSuccess <> 1) THEN
    ? loCrypt.LastErrorText
    RELEASE loCert
    RELEASE loFac
    RELEASE loCrypt
    CANCEL
ENDIF

? "Verified = " + STR(lnVerified)

RELEASE loCert
RELEASE loFac
RELEASE loCrypt