Sample code for 30+ languages & platforms
Visual FoxPro Requires Chilkat v11.4.0+

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