Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) Create XAdES using Smart Card or USB TokenDemonstrates how to create an XAdES signed XML document using a certificate located on a smartcard or USB token. Note: This example requires Chilkat v9.5.0.75 or greater. Also, at the time of this writing this example is restricted to the Windows operating system.
LOCAL loXmlToSign LOCAL lnSuccess LOCAL loGen LOCAL loObject1 LOCAL loCert LOCAL loSbXml LOCAL loVerifier LOCAL lnVerified * ---------------------------------------------------------------------- * IMPORTANT: This generated example requires Chilkat v9.5.0.75 or later. * Contact support@chilkatsoft.com for a pre-release. * ---------------------------------------------------------------------- * Load the XML to be signed. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml') loXmlToSign = CreateObject('Chilkat.Xml') lnSuccess = loXmlToSign.LoadXmlFile("qa_data/fattura_electronica/docToSign.xml") IF (lnSuccess <> 1) THEN ? loXmlToSign.LastErrorText RELEASE loXmlToSign CANCEL ENDIF * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.XmlDSigGen') loGen = CreateObject('Chilkat.XmlDSigGen') loGen.SigLocation = "p:FatturaElettronica" loGen.SigId = "xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504" loGen.SigNamespacePrefix = "ds" loGen.SigNamespaceUri = "http://www.w3.org/2000/09/xmldsig#" loGen.SigValueId = "xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-sigvalue" loGen.SignedInfoCanonAlg = "C14N" loGen.SignedInfoDigestMethod = "sha256" * Create an Object to be added to the Signature. * Note: Chilkat will automatically populate the strings indicated by "TO BE GENERATED BY CHILKAT" with actual/correct values * when the XML is signed. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml') loObject1 = CreateObject('Chilkat.Xml') loObject1.Tag = "xades:QualifyingProperties" loObject1.AddAttribute("xmlns:xades","http://uri.etsi.org/01903/v1.3.2#") loObject1.AddAttribute("xmlns:xades141","http://uri.etsi.org/01903/v1.4.1#") loObject1.AddAttribute("Target","#xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504") loObject1.UpdateAttrAt("xades:SignedProperties",1,"Id","xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-signedprops") loObject1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningTime","TO BE GENERATED BY CHILKAT") loObject1.UpdateAttrAt("xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:CertDigest|ds:DigestMethod",1,"Algorithm","http://www.w3.org/2001/04/xmlenc#sha256") loObject1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:CertDigest|ds:DigestValue","TO BE GENERATED BY CHILKAT") loObject1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:IssuerSerial|ds:X509IssuerName","TO BE GENERATED BY CHILKAT") loObject1.UpdateChildContent("xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:IssuerSerial|ds:X509SerialNumber","TO BE GENERATED BY CHILKAT") loGen.AddObject("",loObject1.GetXml(),"","") * -------- Reference 1 -------- loGen.KeyInfoId = "xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-keyinfo" loGen.AddSameDocRef("xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-keyinfo","sha256","","","") * -------- Reference 2 -------- loGen.AddSameDocRef("","sha256","","","") loGen.SetRefIdAttr("","xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-ref0") * -------- Reference 3 -------- loGen.AddObjectRef("xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-signedprops","sha256","","","http://uri.etsi.org/01903#SignedProperties") * ---------------------------------------------------------------- * Load a certificate that has been pre-installed on the Windows system * This includes certificates on smartcards and USB tokens * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Cert') loCert = CreateObject('Chilkat.Cert') * You may provide the PIN here.. loCert.SmartCardPin = "000000" * Load the certificate on the smartcard currently in the reader (or on the USB token). * Pass an empty string to allow Chilkat to automatically choose the CSP (Cryptographi Service Provider). * See Load Certificate on Smartcard for information about explicitly selecting a particular CSP. lnSuccess = loCert.LoadFromSmartcard("") IF (lnSuccess <> 1) THEN ? loCert.LastErrorText RELEASE loXmlToSign RELEASE loGen RELEASE loObject1 RELEASE loCert CANCEL ENDIF loGen.SetX509Cert(loCert,1) loGen.KeyInfoType = "X509Data" loGen.X509Type = "Certificate" * Load XML to be signed... * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder') loSbXml = CreateObject('Chilkat.StringBuilder') loXmlToSign.GetXmlSb(loSbXml) loGen.Behaviors = "IndentedSignature,ForceAddEnvelopedSignatureTransform" * Sign the XML... lnSuccess = loGen.CreateXmlDSigSb(loSbXml) IF (lnSuccess <> 1) THEN ? loGen.LastErrorText RELEASE loXmlToSign RELEASE loGen RELEASE loObject1 RELEASE loCert RELEASE loSbXml CANCEL ENDIF * Save the signed XMl to a file. lnSuccess = loSbXml.WriteFile("qa_output/signedXml.xml","utf-8",0) ? loSbXml.GetAsString() * ---------------------------------------- * Verify the signature we just produced... * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.XmlDSig') loVerifier = CreateObject('Chilkat.XmlDSig') lnSuccess = loVerifier.LoadSignatureSb(loSbXml) IF (lnSuccess <> 1) THEN ? loVerifier.LastErrorText RELEASE loXmlToSign RELEASE loGen RELEASE loObject1 RELEASE loCert RELEASE loSbXml RELEASE loVerifier CANCEL ENDIF lnVerified = loVerifier.VerifySignature(1) IF (lnVerified <> 1) THEN ? loVerifier.LastErrorText RELEASE loXmlToSign RELEASE loGen RELEASE loObject1 RELEASE loCert RELEASE loSbXml RELEASE loVerifier CANCEL ENDIF ? "This signature was successfully verified." RELEASE loXmlToSign RELEASE loGen RELEASE loObject1 RELEASE loCert RELEASE loSbXml RELEASE loVerifier |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.