PureBasic
PureBasic
Duplicate openssl dgst -sha256 -sign private.pem -out sha256.sig in.dat
See more OpenSSL Examples
Demonstrates how to duplicate this OpenSSL command:openssl dgst -sha256 -sign private.pem -out sha256.sig in.datThe in.dat file can contain text or binary data of any type. The OpenSSL command does the following:
- Creates a SHA256 digest of the contents of the input file
- Signs the SHA256 digest using the private key.
Chilkat PureBasic Downloads
IncludeFile "CkBinData.pb"
IncludeFile "CkPrivateKey.pb"
IncludeFile "CkRsa.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
pkey.i = CkPrivateKey::ckCreate()
If pkey.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Load the private key from an PEM file:
success = CkPrivateKey::ckLoadPemFile(pkey,"private.pem")
If success = 0
Debug CkPrivateKey::ckLastErrorText(pkey)
CkPrivateKey::ckDispose(pkey)
ProcedureReturn
EndIf
rsa.i = CkRsa::ckCreate()
If rsa.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Import the private key into the RSA component:
success = CkRsa::ckUsePrivateKey(rsa,pkey)
If success = 0
Debug CkRsa::ckLastErrorText(rsa)
CkPrivateKey::ckDispose(pkey)
CkRsa::ckDispose(rsa)
ProcedureReturn
EndIf
; OpenSSL uses big-endian.
CkRsa::setCkLittleEndian(rsa, 0)
; Load the file to be signed.
bdFileData.i = CkBinData::ckCreate()
If bdFileData.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkBinData::ckLoadFile(bdFileData,"in.dat")
bdSig.i = CkBinData::ckCreate()
If bdSig.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkRsa::ckSignBd(rsa,bdFileData,"sha256",bdSig)
If success = 0
Debug CkRsa::ckLastErrorText(rsa)
CkPrivateKey::ckDispose(pkey)
CkRsa::ckDispose(rsa)
CkBinData::ckDispose(bdFileData)
CkBinData::ckDispose(bdSig)
ProcedureReturn
EndIf
; Save the binary signature to a file.
success = CkBinData::ckWriteFile(bdSig,"signature.sig")
If success <> 1
Debug "Failed to write signature.sig."
CkPrivateKey::ckDispose(pkey)
CkRsa::ckDispose(rsa)
CkBinData::ckDispose(bdFileData)
CkBinData::ckDispose(bdSig)
ProcedureReturn
EndIf
Debug "Success."
CkPrivateKey::ckDispose(pkey)
CkRsa::ckDispose(rsa)
CkBinData::ckDispose(bdFileData)
CkBinData::ckDispose(bdSig)
ProcedureReturn
EndProcedure