Xbase++ Requires Chilkat v11.0.0+
Xbase++
Duplicate OpensSSL Command that Decrypts Binary DER
See more OpenSSL Examples
This example duplicates the following:openssl smime -decrypt -in INPUT_FILE -inform der -binary -out OUTPUT_FILE -recip PEM_CERT_AND_KEY -passin pass:PRIVKEY_PASSWORD
Note: Although "smime" is the OpenSSL command, we're not really dealing with S/MIME. The arguments "-inform der -binary" indicate that the input is simply the binary DER (i.e. the PKCS7 binary encrypted object). The output can be any type of file (whatever was encrypted).
Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oCrypt
LOCAL oPem
LOCAL oPrivkey
LOCAL oCert
nSuccess := 0
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
oCrypt := CreateObject("Chilkat.Crypt2")
oCrypt:CryptAlgorithm := "pki"
oPem := CreateObject("Chilkat.Pem")
nSuccess := oPem:LoadPemFile("qa_data/pem/myPem.pem", "password")
IF (nSuccess == 0)
? oPem:LastErrorText
oCrypt:destroy()
oPem:destroy()
RETURN
ENDIF
oPrivkey := CreateObject("Chilkat.PrivateKey")
nSuccess := oPem:PrivateKeyAt(0, oPrivkey)
IF (nSuccess == 0)
? oPem:LastErrorText
oCrypt:destroy()
oPem:destroy()
oPrivkey:destroy()
RETURN
ENDIF
oCert := CreateObject("Chilkat.Cert")
nSuccess := oPem:CertAt(0, oCert)
IF (nSuccess == 0)
? oPem:LastErrorText
oCrypt:destroy()
oPem:destroy()
oPrivkey:destroy()
oCert:destroy()
RETURN
ENDIF
nSuccess := oCrypt:SetDecryptCert2(oCert, oPrivkey)
IF (nSuccess == 0)
? oCrypt:LastErrorText
oCrypt:destroy()
oPem:destroy()
oPrivkey:destroy()
oCert:destroy()
RETURN
ENDIF
nSuccess := oCrypt:CkDecryptFile("qa_data/infile.enc", "qa_output/outfile.dat")
IF (nSuccess == 0)
? oCrypt:LastErrorText
oCrypt:destroy()
oPem:destroy()
oPrivkey:destroy()
oCert:destroy()
RETURN
ENDIF
? "Success."
oCrypt:destroy()
oPem:destroy()
oPrivkey:destroy()
oCert:destroy()