PureBasic
PureBasic
Duplicate openssl smime -decrypt -in some_file.dat.enc -binary -inform DER -inkey private.key -out some_file.dat
See more OpenSSL Examples
Demonstrates how to decrypt binary DER that was encrypted using the following openssl command:openssl smime -encrypt -binary -aes-256-cbc -in some_file.dat -out some_file.dat.enc -outform DER cert.crt
Chilkat PureBasic Downloads
IncludeFile "CkBinData.pb"
IncludeFile "CkCert.pb"
IncludeFile "CkPrivateKey.pb"
IncludeFile "CkCrypt2.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; Duplicates the following openssl command:
; openssl smime -decrypt -in hello.txt.enc -binary -inform DER -inkey private.key -out hello.txt
cert.i = CkCert::ckCreate()
If cert.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCert::ckLoadFromFile(cert,"qa_data/openssl/EE.cer")
If success = 0
Debug CkCert::ckLastErrorText(cert)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
bd.i = CkBinData::ckCreate()
If bd.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkBinData::ckLoadFile(bd,"qa_data/openssl/EE.key")
; Assuming success..
privKey.i = CkPrivateKey::ckCreate()
If privKey.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkPrivateKey::ckLoadAnyFormat(privKey,bd,"")
If success = 0
Debug CkPrivateKey::ckLastErrorText(privKey)
CkCert::ckDispose(cert)
CkBinData::ckDispose(bd)
CkPrivateKey::ckDispose(privKey)
ProcedureReturn
EndIf
crypt.i = CkCrypt2::ckCreate()
If crypt.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCrypt2::ckSetDecryptCert2(crypt,cert,privKey)
If success = 0
Debug CkCrypt2::ckLastErrorText(crypt)
CkCert::ckDispose(cert)
CkBinData::ckDispose(bd)
CkPrivateKey::ckDispose(privKey)
CkCrypt2::ckDispose(crypt)
ProcedureReturn
EndIf
CkCrypt2::setCkCryptAlgorithm(crypt, "PKI")
success = CkCrypt2::ckCkDecryptFile(crypt,"qa_data/openssl/hello.txt.enc","qa_output/hello.txt")
If success = 0
Debug CkCrypt2::ckLastErrorText(crypt)
CkCert::ckDispose(cert)
CkBinData::ckDispose(bd)
CkPrivateKey::ckDispose(privKey)
CkCrypt2::ckDispose(crypt)
ProcedureReturn
EndIf
Debug "Success."
CkCert::ckDispose(cert)
CkBinData::ckDispose(bd)
CkPrivateKey::ckDispose(privKey)
CkCrypt2::ckDispose(crypt)
ProcedureReturn
EndProcedure