Sample code for 30+ languages & platforms
Visual FoxPro

Example: Mime.GetDecryptCertInfo method

Demonstrates the GetDecryptCertInfo method.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loMime
LOCAL loJson
LOCAL lcSerial
LOCAL lcIssuerCN
LOCAL i
LOCAL lnCount

lnSuccess = 0

loMime = CreateObject('Chilkat.Mime')

* Load MIME that is has Content-Type like this:
* Content-Type: application/pkcs7-mime; smime-type="enveloped-data"; name="smime.p7m"; smime-type="enveloped-data"
lnSuccess = loMime.LoadMimeFile("qa_data/mime/enveloped_data.eml")
IF (lnSuccess = 0) THEN
    ? loMime.LastErrorText
    RELEASE loMime
    CANCEL
ENDIF

* Get information about the certificate that would be needed to decrypt.
* An enveloped-data can potentially be decrypted by multiple certificates if it was encrypted in a way that allows it,
* but in most cases, only a single certificate with associated private key (that of the message recipient) is possible.
loJson = CreateObject('Chilkat.JsonObject')
lnSuccess = loMime.GetDecryptCertInfo(loJson)
IF (lnSuccess = 0) THEN
    ? loMime.LastErrorText
    RELEASE loMime
    RELEASE loJson
    CANCEL
ENDIF

loJson.EmitCompact = 0
? loJson.Emit()

* Sample output:

* {
*   "recipientInfo": [
*     {
*       "serial": "****",
*       "issuerCN": "****"
*     }
*   ]
* }

* Get each certificate's information like this:

i = 0
lnCount = loJson.SizeOfArray("recipientInfo")
DO WHILE i < lnCount
    loJson.I = i
    lcSerial = loJson.StringOf("recipientInfo[i].serial")
    lcIssuerCN = loJson.StringOf("recipientInfo[i].issuerCN")
    i = i + 1
ENDDO

RELEASE loMime
RELEASE loJson