PureBasic
PureBasic
Duplicate openssl dgst -sha256 -verify pubKey.pem -signature signature.sig in.dat
See more OpenSSL Examples
Demonstrates how to duplicate this OpenSSL command:openssl dgst -sha256 -verify pubKey.pem -signature signature.sig in.datThe in.dat file contains the original data that was signed, and can contain text or binary data of any type. The above OpenSSL command does the following:
- Creates a SHA256 digest of the contents of the input file.
- Verifies the SHA256 digest using the public key.
Chilkat PureBasic Downloads
IncludeFile "CkBinData.pb"
IncludeFile "CkRsa.pb"
IncludeFile "CkPublicKey.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
pubKey.i = CkPublicKey::ckCreate()
If pubKey.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Load the public key from an PEM file:
success = CkPublicKey::ckLoadFromFile(pubKey,"pubKey.pem")
If success = 0
Debug CkPublicKey::ckLastErrorText(pubKey)
CkPublicKey::ckDispose(pubKey)
ProcedureReturn
EndIf
; Load the data of the original file that was signed.
bdFileData.i = CkBinData::ckCreate()
If bdFileData.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkBinData::ckLoadFile(bdFileData,"in.dat")
; Load the signature.
bdSig.i = CkBinData::ckCreate()
If bdSig.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkBinData::ckLoadFile(bdSig,"signature.sig")
rsa.i = CkRsa::ckCreate()
If rsa.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Import the public key into the RSA component:
success = CkRsa::ckUsePublicKey(rsa,pubKey)
If success = 0
Debug CkRsa::ckLastErrorText(rsa)
CkPublicKey::ckDispose(pubKey)
CkBinData::ckDispose(bdFileData)
CkBinData::ckDispose(bdSig)
CkRsa::ckDispose(rsa)
ProcedureReturn
EndIf
; OpenSSL uses big-endian.
CkRsa::setCkLittleEndian(rsa, 0)
success = CkRsa::ckVerifyBd(rsa,bdFileData,"sha256",bdSig)
If success <> 1
Debug CkRsa::ckLastErrorText(rsa)
Debug "The signature was invalid."
CkPublicKey::ckDispose(pubKey)
CkBinData::ckDispose(bdFileData)
CkBinData::ckDispose(bdSig)
CkRsa::ckDispose(rsa)
ProcedureReturn
EndIf
Debug "The signature was verified."
CkPublicKey::ckDispose(pubKey)
CkBinData::ckDispose(bdFileData)
CkBinData::ckDispose(bdSig)
CkRsa::ckDispose(rsa)
ProcedureReturn
EndProcedure