PureBasic
PureBasic
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 PureBasic Downloads
IncludeFile "CkCert.pb"
IncludeFile "CkMime.pb"
Procedure ChilkatExample()
success.i = 0
mime.i = CkMime::ckCreate()
If mime.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkMime::ckLoadMimeFile(mime,"qa_data/encrypted.eml")
If success = 0
Debug CkMime::ckLastErrorText(mime)
CkMime::ckDispose(mime)
ProcedureReturn
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.
pfxPassword.s = "myPfxPassword"
cert.i = CkCert::ckCreate()
If cert.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCert::ckLoadPfxFile(cert,"qa_data/recipient.pfx",pfxPassword)
If success = 0
Debug CkCert::ckLastErrorText(cert)
CkMime::ckDispose(mime)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
success = CkMime::ckDecryptUsingCert(mime,cert)
If success = 0
Debug CkMime::ckLastErrorText(mime)
CkMime::ckDispose(mime)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
body.s = CkMime::ckGetBodyDecoded(mime)
If CkMime::ckLastMethodSuccess(mime) = 0
Debug CkMime::ckLastErrorText(mime)
CkMime::ckDispose(mime)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
Debug body
CkMime::ckDispose(mime)
CkCert::ckDispose(cert)
ProcedureReturn
EndProcedure