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
(Tcl) Create XAdES Facturae 3.2 Signed InvoiceSee more XAdES ExamplesDemonstrates how to create a factura electrónica XAdES digital signature for Gobierno de España Note: This example requires Chilkat v9.5.0.92 or greater. Problems specific to XML signatures for FacturaE in Spain were fixed in v9.5.0.92.
load ./chilkat.dll # ---------------------------------------------------------------------- # IMPORTANT: This generated example requires Chilkat v9.5.0.75 or later. # Contact support@chilkatsoft.com for a pre-release. # ---------------------------------------------------------------------- # --- # The following source code can be generated from sample XML using the XML Signature Code Generator at chilkat.io # --- # IMPORTANT: This example requires Chilkat v9.5.0.92 or greater. Problems specific to XML signatures for FacturaE in Spain were fixed in v9.5.0.92. # Create the XML to be signed... set xmlToSign [new_CkXml] CkXml_put_Tag $xmlToSign "fe:Facturae" CkXml_AddAttribute $xmlToSign "xmlns:ds" "http://www.w3.org/2000/09/xmldsig#" CkXml_AddAttribute $xmlToSign "xmlns:fe" "http://www.facturae.es/Facturae/2009/v3.2/Facturae" CkXml_UpdateChildContent $xmlToSign "FileHeader|SchemaVersion" "3.2" CkXml_UpdateChildContent $xmlToSign "FileHeader|Modality" "I" CkXml_UpdateChildContent $xmlToSign "FileHeader|InvoiceIssuerType" "EM" CkXml_UpdateChildContent $xmlToSign "FileHeader|Batch|BatchIdentifier" "0000000000B2Emit-" CkXml_UpdateChildContent $xmlToSign "FileHeader|Batch|InvoicesCount" "1" CkXml_UpdateChildContent $xmlToSign "FileHeader|Batch|TotalInvoicesAmount|TotalAmount" "63.13" CkXml_UpdateChildContent $xmlToSign "FileHeader|Batch|TotalOutstandingAmount|TotalAmount" "63.13" CkXml_UpdateChildContent $xmlToSign "FileHeader|Batch|TotalExecutableAmount|TotalAmount" "63.13" CkXml_UpdateChildContent $xmlToSign "FileHeader|Batch|InvoiceCurrencyCode" "EUR" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|TaxIdentification|PersonTypeCode" "J" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|TaxIdentification|ResidenceTypeCode" "R" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|TaxIdentification|TaxIdentificationNumber" "A82735122" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|CorporateName" "Company Comp SA" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|TradeName" "Comp" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|RegistrationData|Book" "1" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|RegistrationData|RegisterOfCompaniesLocation" "12AP22" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|RegistrationData|Sheet" "3" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|RegistrationData|Folio" "15" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|RegistrationData|Section" "2" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|RegistrationData|Volume" "12" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|RegistrationData|AdditionalRegistrationData" "Sin datos" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|AddressInSpain|Address" "C/ Mayour 33 15 E" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|AddressInSpain|PostCode" "28001" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|AddressInSpain|Town" "Argamasilla de Alba" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|AddressInSpain|Province" "Ciudad Real" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|AddressInSpain|CountryCode" "ESP" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|ContactDetails|Telephone" "917776665" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|ContactDetails|TeleFax" "917776666" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|ContactDetails|WebAddress" "www.facturae.es" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|ContactDetails|ElectronicMail" "facturae@mityc.es" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|ContactDetails|ContactPersons" "Fernando" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|ContactDetails|CnoCnae" "28000" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|ContactDetails|INETownCode" "2134AAB" CkXml_UpdateChildContent $xmlToSign "Parties|SellerParty|LegalEntity|ContactDetails|AdditionalContactDetails" "Otros datos" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|TaxIdentification|PersonTypeCode" "F" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|TaxIdentification|ResidenceTypeCode" "E" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|TaxIdentification|TaxIdentificationNumber" "0000000000B" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|CentreCode" "1" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|RoleTypeCode" "02" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|Name" "Ruth" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|FirstSurname" "Mauripo" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|OverseasAddress|Address" "Armenia 1922" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|OverseasAddress|PostCodeAndTown" "00000 Buenos Aires" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|OverseasAddress|Province" "Capital Federal" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|OverseasAddress|CountryCode" "ARG" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|CentreDescription" "Centro principal de recepcion" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|Individual|Name" "Juana" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|Individual|FirstSurname" "Mauripo" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|Individual|OverseasAddress|Address" "Juncal 1315" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|Individual|OverseasAddress|PostCodeAndTown" "00000 Buenos Aires" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|Individual|OverseasAddress|Province" "Capital Federal" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|Individual|OverseasAddress|CountryCode" "ARG" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|Individual|ContactDetails|Telephone" "00547775554" CkXml_UpdateChildContent $xmlToSign "Parties|BuyerParty|Individual|ContactDetails|TeleFax" "00547775555" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceHeader|InvoiceNumber" "2" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceHeader|InvoiceSeriesCode" "Emit-" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceHeader|InvoiceDocumentType" "FC" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceHeader|InvoiceClass" "OO" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceIssueData|IssueDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceIssueData|OperationDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceIssueData|PlaceOfIssue|PostCode" "00000" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceIssueData|PlaceOfIssue|PlaceOfIssueDescription" "Regalos" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceIssueData|InvoicingPeriod|StartDate" "2010-03-09" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceIssueData|InvoicingPeriod|EndDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceIssueData|InvoiceCurrencyCode" "EUR" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceIssueData|TaxCurrencyCode" "EUR" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceIssueData|LanguageName" "es" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesOutputs|Tax|TaxTypeCode" "01" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesOutputs|Tax|TaxRate" "16.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesOutputs|Tax|TaxableBase|TotalAmount" "26.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesOutputs|Tax|TaxAmount|TotalAmount" "4.16" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesOutputs|Tax|EquivalenceSurcharge" "1.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesOutputs|Tax|EquivalenceSurchargeAmount|TotalAmount" "0.26" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesOutputs|Tax[1]|TaxTypeCode" "01" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesOutputs|Tax[1]|TaxRate" "0.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesOutputs|Tax[1]|TaxableBase|TotalAmount" "0.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesWithheld|Tax|TaxTypeCode" "05" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesWithheld|Tax|TaxRate" "4.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesWithheld|Tax|TaxableBase|TotalAmount" "26.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|TaxesWithheld|Tax|TaxAmount|TotalAmount" "1.04" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceTotals|TotalGrossAmount" "59.75" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceTotals|TotalGeneralDiscounts" "0.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceTotals|TotalGeneralSurcharges" "0.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceTotals|TotalGrossAmountBeforeTaxes" "59.75" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceTotals|TotalTaxOutputs" "4.42" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceTotals|TotalTaxesWithheld" "1.04" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceTotals|InvoiceTotal" "63.13" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceTotals|TotalOutstandingAmount" "63.13" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|InvoiceTotals|TotalExecutableAmount" "63.13" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|IssuerContractReference" "A9938281" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|IssuerContractDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|IssuerTransactionReference" "A9938282" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|IssuerTransactionDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|ReceiverContractReference" "BBBH-38271" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|ReceiverContractDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|ReceiverTransactionReference" "BBBH-38272" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|ReceiverTransactionDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|FileReference" "000298172" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|FileDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|SequenceNumber" "1.0" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|DeliveryNotesReferences|DeliveryNote|DeliveryNoteNumber" "132413842" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|DeliveryNotesReferences|DeliveryNote|DeliveryNoteDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|DeliveryNotesReferences|DeliveryNote[1]|DeliveryNoteNumber" "987673211" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|DeliveryNotesReferences|DeliveryNote[1]|DeliveryNoteDate" "2010-03-09" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|ItemDescription" "Flores" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|Quantity" "1.0" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|UnitOfMeasure" "01" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|UnitPriceWithoutTax" "25.000000" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|TotalCost" "25.000000" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|DiscountsAndRebates|Discount|DiscountReason" "Descuento" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|DiscountsAndRebates|Discount|DiscountRate" "5.0000" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|DiscountsAndRebates|Discount|DiscountAmount" "1.250000" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|Charges|Charge|ChargeReason" "Cargo" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|Charges|Charge|ChargeAmount" "10.000000" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|GrossAmount" "33.750000" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|TaxesOutputs|Tax|TaxTypeCode" "01" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|TaxesOutputs|Tax|TaxRate" "0.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|TaxesOutputs|Tax|TaxableBase|TotalAmount" "0.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|TaxesOutputs|Tax|TaxAmount|TotalAmount" "0.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|AdditionalLineItemInformation" "Contacto en Neuquen: Paulita" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|SpecialTaxableEvent|SpecialTaxableEventCode" "01" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|SpecialTaxableEvent|SpecialTaxableEventReason" "Concepto exento por el motivo aqu definido" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine|ArticleCode" "142" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|IssuerContractDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|IssuerTransactionDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|ReceiverContractDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|ReceiverTransactionDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|FileDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|SequenceNumber" "2.0" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|ItemDescription" "Mate" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|Quantity" "2.0" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|UnitOfMeasure" "01" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|UnitPriceWithoutTax" "13.000000" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|TotalCost" "26.000000" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|GrossAmount" "26.000000" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|TaxesWithheld|Tax|TaxTypeCode" "05" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|TaxesWithheld|Tax|TaxRate" "4.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|TaxesWithheld|Tax|TaxableBase|TotalAmount" "26.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|TaxesWithheld|Tax|TaxAmount|TotalAmount" "1.04" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|TaxTypeCode" "01" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|TaxRate" "16.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|TaxableBase|TotalAmount" "26.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|TaxAmount|TotalAmount" "4.16" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|EquivalenceSurcharge" "1.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|EquivalenceSurchargeAmount|TotalAmount" "0.26" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|Items|InvoiceLine[1]|ArticleCode" "122" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|InstallmentDueDate" "2010-03-10" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|InstallmentAmount" "25.00" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|PaymentMeans" "19" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|IBAN" "4322 3432 22 1341234212" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|BankCode" "4322" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|BranchCode" "3432" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|OverseasBranchAddress|Address" "Juncal 1423 8 Z" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|OverseasBranchAddress|PostCodeAndTown" "01115 Capital Federal" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|OverseasBranchAddress|Province" "Buenos Aires" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|OverseasBranchAddress|CountryCode" "ARG" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|PaymentReconciliationReference" "12223" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|AccountToBeDebited|IBAN" "1234 4312 22 33212341212314" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|AccountToBeDebited|BankCode" "1234" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|AccountToBeDebited|BranchCode" "4312" CkXml_UpdateChildContent $xmlToSign "Invoices|Invoice|PaymentDetails|Installment|DebitReconciliationReference" "12223" set gen [new_CkXmlDSigGen] set success 1 CkXmlDSigGen_put_SigLocation $gen "fe:Facturae" CkXmlDSigGen_put_SigLocationMod $gen 0 CkXmlDSigGen_put_SigId $gen "Signature869123" CkXmlDSigGen_AddSignatureNamespace $gen "etsi" "http://uri.etsi.org/01903/v1.3.2#" CkXmlDSigGen_put_SigNamespacePrefix $gen "ds" CkXmlDSigGen_put_SigNamespaceUri $gen "http://www.w3.org/2000/09/xmldsig#" CkXmlDSigGen_put_SignedInfoId $gen "Signature-SignedInfo241096" CkXmlDSigGen_put_SignedInfoCanonAlg $gen "EXCL_C14N" CkXmlDSigGen_put_SignedInfoDigestMethod $gen "sha256" # Create an Object to be added to the Signature. set object1 [new_CkXml] CkXml_put_Tag $object1 "xades:QualifyingProperties" CkXml_AddAttribute $object1 "xmlns:xades" "http://uri.etsi.org/01903/v1.3.2#" # The Id can be any unique string.. CkXml_AddAttribute $object1 "Id" "QualifyingProperties-e01a8fee-1bee-4ff5-9570-3d57aa02f278" CkXml_AddAttribute $object1 "Target" "#Signature869123" CkXml_UpdateAttrAt $object1 "xades:SignedProperties" 1 "Id" "Signature869123-SignedProperties787205" CkXml_UpdateChildContent $object1 "xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningTime" "TO BE GENERATED BY CHILKAT" # Note: It may be that http://www.w3.org/2001/04/xmlenc#sha256 is needed in the following line instead of http://www.w3.org/2000/09/xmldsig#sha1 CkXml_UpdateAttrAt $object1 "xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:CertDigest|ds:DigestMethod" 1 "Algorithm" "http://www.w3.org/2000/09/xmldsig#sha1" CkXml_UpdateChildContent $object1 "xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:CertDigest|ds:DigestValue" "TO BE GENERATED BY CHILKAT" CkXml_UpdateChildContent $object1 "xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:IssuerSerial|ds:X509IssuerName" "TO BE GENERATED BY CHILKAT" CkXml_UpdateChildContent $object1 "xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificate|xades:Cert|xades:IssuerSerial|ds:X509SerialNumber" "TO BE GENERATED BY CHILKAT" CkXml_UpdateChildContent $object1 "xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyId|xades:Identifier" "http://www.facturae.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf" CkXml_UpdateChildContent $object1 "xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyId|xades:Description" "Poltica de Firma FacturaE v3.1" CkXml_UpdateAttrAt $object1 "xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyHash|ds:DigestMethod" 1 "Algorithm" "http://www.w3.org/2000/09/xmldsig#sha1" CkXml_UpdateChildContent $object1 "xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyHash|ds:DigestValue" "Ohixl6upD6av8N7pEvDABhEL6hM=" CkXml_UpdateChildContent $object1 "xades:SignedProperties|xades:SignedSignatureProperties|xades:SignerRole|xades:ClaimedRoles|xades:ClaimedRole" "emisor" CkXml_UpdateAttrAt $object1 "xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat" 1 "ObjectReference" "#Reference-ID-670821" CkXml_UpdateChildContent $object1 "xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:Description" "Factura electrnica" CkXml_UpdateChildContent $object1 "xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:MimeType" "text/xml" CkXmlDSigGen_AddObject $gen "Signature869123-Object629337" [CkXml_getXml $object1] "" "" CkXmlDSigGen_AddObjectRef $gen "Signature869123-SignedProperties787205" "sha1" "" "" "http://uri.etsi.org/01903#SignedProperties" CkXmlDSigGen_SetRefIdAttr $gen "Signature869123-SignedProperties787205" "SignedPropertiesID459347" CkXmlDSigGen_put_KeyInfoId $gen "Certificate1570061" CkXmlDSigGen_AddSameDocRef $gen "Certificate1570061" "sha1" "" "" "" CkXmlDSigGen_AddSameDocRef $gen "" "sha1" "" "" "" CkXmlDSigGen_SetRefIdAttr $gen "" "Reference-ID-670821" # Provide a certificate + private key. (PFX password is test123) set cert [new_CkCert] set success [CkCert_LoadPfxFile $cert "qa_data/pfx/cert_test123.pfx" "test123"] if {$success != 1} then { puts [CkCert_lastErrorText $cert] delete_CkXml $xmlToSign delete_CkXmlDSigGen $gen delete_CkXml $object1 delete_CkCert $cert exit } CkXmlDSigGen_SetX509Cert $gen $cert 1 CkXmlDSigGen_put_KeyInfoType $gen "X509Data+KeyValue" CkXmlDSigGen_put_X509Type $gen "Certificate" # Load XML to be signed... set sbXml [new_CkStringBuilder] CkXml_GetXmlSb $xmlToSign $sbXml CkXmlDSigGen_put_Behaviors $gen "CompactSignedXml" # Sign the XML... set success [CkXmlDSigGen_CreateXmlDSigSb $gen $sbXml] if {$success != 1} then { puts [CkXmlDSigGen_lastErrorText $gen] delete_CkXml $xmlToSign delete_CkXmlDSigGen $gen delete_CkXml $object1 delete_CkCert $cert delete_CkStringBuilder $sbXml exit } # Save the signed XMl to a file. set success [CkStringBuilder_WriteFile $sbXml "qa_output/signedXml.xml" "utf-8" 0] puts [CkStringBuilder_getAsString $sbXml] delete_CkXml $xmlToSign delete_CkXmlDSigGen $gen delete_CkXml $object1 delete_CkCert $cert delete_CkStringBuilder $sbXml |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.