PureBasic
PureBasic
Extract XML from FatturaPA .p7m
See more Digital Signatures Examples
Demonstrates how to verify the signature and extract the XML from a FatturaPA .p7m file.Chilkat PureBasic Downloads
IncludeFile "CkBinData.pb"
IncludeFile "CkXml.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.
bd.i = CkBinData::ckCreate()
If bd.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkBinData::ckLoadFile(bd,"qa_data/p7m/IT01879020517_abc.xml.p7m")
If success <> 1
Debug "Failed to load the .p7m file"
CkBinData::ckDispose(bd)
ProcedureReturn
EndIf
crypt.i = CkCrypt2::ckCreate()
If crypt.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Verify and extrct the payload contained within the .p7m.
; In this case, the payload is the FatturaPA XML.
; If successful, the resulting bd will contain only the XML.
bVerified.i = CkCrypt2::ckOpaqueVerifyBd(crypt,bd)
If bVerified <> 1
Debug CkCrypt2::ckLastErrorText(crypt)
Debug "Failed to extract and verify."
CkBinData::ckDispose(bd)
CkCrypt2::ckDispose(crypt)
ProcedureReturn
EndIf
; Save the XML to a file.
CkBinData::ckWriteFile(bd,"qa_output/zIT01879020517_abc.xml")
; Alternatively, load into an XML object and emit.
xml.i = CkXml::ckCreate()
If xml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkXml::ckLoadXml(xml,CkBinData::ckGetString(bd,"utf-8"))
Debug CkXml::ckGetXml(xml)
CkBinData::ckDispose(bd)
CkCrypt2::ckDispose(crypt)
CkXml::ckDispose(xml)
ProcedureReturn
EndProcedure