Sample code for 30+ languages & platforms
Lianja

Example: Mime.GetDecryptCertInfo method

Demonstrates the GetDecryptCertInfo method.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

loMime = createobject("CkMime")

// 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"
llSuccess = loMime.LoadMimeFile("qa_data/mime/enveloped_data.eml")
if (llSuccess = .F.) then
    ? loMime.LastErrorText
    release loMime
    return
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("CkJsonObject")
llSuccess = loMime.GetDecryptCertInfo(loJson)
if (llSuccess = .F.) then
    ? loMime.LastErrorText
    release loMime
    release loJson
    return
endif

loJson.EmitCompact = .F.
? 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