Xbase++
Xbase++
Decrypt S/MIME using a Certificate with Private Key Access
See more MIME Examples
Loads a CMS/PKCS #7 encrypted S/MIME message and decrypts it back to the original MIME content.
DecryptUsingCert takes a single certificate that already has access to its associated private key, for example a certificate loaded from a PFX.
The file paths are relative to the application's current working directory. Absolute paths may also be used. Supply the paths appropriate to your own environment.
Background. A public-only certificate is insufficient for decryption. The certificate passed to DecryptUsingCert must be linked to its private key, as happens when it is loaded from a PFX/P12 file.
Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oMime
LOCAL cPfxPassword
LOCAL oCert
LOCAL cBody
nSuccess := 0
oMime := CreateObject("Chilkat.Mime")
nSuccess := oMime:LoadMimeFile("qa_data/encrypted.eml")
IF (nSuccess == 0)
? oMime:LastErrorText
oMime:destroy()
RETURN
ENDIF
// Decrypt using a certificate that already provides access to its private key (for example loaded
// from a PFX). The only argument is the certificate.
cPfxPassword := "myPfxPassword"
oCert := CreateObject("Chilkat.Cert")
nSuccess := oCert:LoadPfxFile("qa_data/recipient.pfx", cPfxPassword)
IF (nSuccess == 0)
? oCert:LastErrorText
oMime:destroy()
oCert:destroy()
RETURN
ENDIF
nSuccess := oMime:DecryptUsingCert(oCert)
IF (nSuccess == 0)
? oMime:LastErrorText
oMime:destroy()
oCert:destroy()
RETURN
ENDIF
cBody := oMime:GetBodyDecoded()
IF (oMime:LastMethodSuccess == 0)
? oMime:LastErrorText
oMime:destroy()
oCert:destroy()
RETURN
ENDIF
? cBody
oMime:destroy()
oCert:destroy()