PureBasic
PureBasic
Verify XAdES with External File Reference
See more XML Digital Signatures Examples
Demonstrates how to validate an XML digital signature that contains a reference to an external file. (This is one way of doing it..)Chilkat PureBasic Downloads
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkXmlDSig.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; Load the XAdES file to be validated..
sbXml.i = CkStringBuilder::ckCreate()
If sbXml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkStringBuilder::ckLoadFile(sbXml,"qa_data/xml_dsig_valid_samples/externalFile/test.pdf.XAdES","utf-8")
If success = 0
Debug "Failed to load XAdES input file."
CkStringBuilder::ckDispose(sbXml)
ProcedureReturn
EndIf
validator.i = CkXmlDSig::ckCreate()
If validator.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Specify a set of absolute or relative directory paths to be searched for any external file references.
; Directory paths are separated by semicolon chars.
CkXmlDSig::setCkExternalRefDirs(validator, "qa_data/externalFiles;qa_data/xml_dsig_valid_samples/externalFile;c:/someOtherDir")
success = CkXmlDSig::ckLoadSignatureSb(validator,sbXml)
If success = 0
Debug CkXmlDSig::ckLastErrorText(validator)
CkStringBuilder::ckDispose(sbXml)
CkXmlDSig::ckDispose(validator)
ProcedureReturn
EndIf
; Validate signatures as usual..
i.i = 0
While i < CkXmlDSig::ckNumSignatures(validator)
CkXmlDSig::setCkSelector(validator, i)
valid.i = CkXmlDSig::ckVerifySignature(validator,1)
Debug "Signature " + Str(i + 1) + " and all reference digests OK = " + Str(valid)
i = i + 1
Wend
CkStringBuilder::ckDispose(sbXml)
CkXmlDSig::ckDispose(validator)
ProcedureReturn
EndProcedure