Objective-C
Objective-C
Create XAdES Facturae 3.2 Signed Invoice
See more XAdES Examples
Demonstrates how to create a factura electrónica XAdES digital signature for Gobierno de EspañaChilkat Objective-C Downloads
#import <CkoXml.h>
#import <CkoXmlDSigGen.h>
#import <CkoCert.h>
#import <CkoStringBuilder.h>
BOOL success = NO;
// ---
// The following source code can be generated from sample XML using the XML Signature Code Generator at chilkat.io
// ---
// Create the XML to be signed...
CkoXml *xmlToSign = [[CkoXml alloc] init];
xmlToSign.Tag = @"fe:Facturae";
[xmlToSign AddAttribute: @"xmlns:ds" value: @"http://www.w3.org/2000/09/xmldsig#"];
[xmlToSign AddAttribute: @"xmlns:fe" value: @"http://www.facturae.es/Facturae/2009/v3.2/Facturae"];
[xmlToSign UpdateChildContent: @"FileHeader|SchemaVersion" value: @"3.2"];
[xmlToSign UpdateChildContent: @"FileHeader|Modality" value: @"I"];
[xmlToSign UpdateChildContent: @"FileHeader|InvoiceIssuerType" value: @"EM"];
[xmlToSign UpdateChildContent: @"FileHeader|Batch|BatchIdentifier" value: @"0000000000B2Emit-"];
[xmlToSign UpdateChildContent: @"FileHeader|Batch|InvoicesCount" value: @"1"];
[xmlToSign UpdateChildContent: @"FileHeader|Batch|TotalInvoicesAmount|TotalAmount" value: @"63.13"];
[xmlToSign UpdateChildContent: @"FileHeader|Batch|TotalOutstandingAmount|TotalAmount" value: @"63.13"];
[xmlToSign UpdateChildContent: @"FileHeader|Batch|TotalExecutableAmount|TotalAmount" value: @"63.13"];
[xmlToSign UpdateChildContent: @"FileHeader|Batch|InvoiceCurrencyCode" value: @"EUR"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|TaxIdentification|PersonTypeCode" value: @"J"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|TaxIdentification|ResidenceTypeCode" value: @"R"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|TaxIdentification|TaxIdentificationNumber" value: @"A82735122"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|CorporateName" value: @"Company Comp SA"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|TradeName" value: @"Comp"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|RegistrationData|Book" value: @"1"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|RegistrationData|RegisterOfCompaniesLocation" value: @"12AP22"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|RegistrationData|Sheet" value: @"3"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|RegistrationData|Folio" value: @"15"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|RegistrationData|Section" value: @"2"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|RegistrationData|Volume" value: @"12"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|RegistrationData|AdditionalRegistrationData" value: @"Sin datos"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|AddressInSpain|Address" value: @"C/ Mayour 33 15 E"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|AddressInSpain|PostCode" value: @"28001"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|AddressInSpain|Town" value: @"Argamasilla de Alba"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|AddressInSpain|Province" value: @"Ciudad Real"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|AddressInSpain|CountryCode" value: @"ESP"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|ContactDetails|Telephone" value: @"917776665"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|ContactDetails|TeleFax" value: @"917776666"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|ContactDetails|WebAddress" value: @"www.facturae.es"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|ContactDetails|ElectronicMail" value: @"facturae@mityc.es"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|ContactDetails|ContactPersons" value: @"Fernando"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|ContactDetails|CnoCnae" value: @"28000"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|ContactDetails|INETownCode" value: @"2134AAB"];
[xmlToSign UpdateChildContent: @"Parties|SellerParty|LegalEntity|ContactDetails|AdditionalContactDetails" value: @"Otros datos"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|TaxIdentification|PersonTypeCode" value: @"F"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|TaxIdentification|ResidenceTypeCode" value: @"E"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|TaxIdentification|TaxIdentificationNumber" value: @"0000000000B"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|CentreCode" value: @"1"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|RoleTypeCode" value: @"02"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|Name" value: @"Ruth"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|FirstSurname" value: @"Mauripo"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|OverseasAddress|Address" value: @"Armenia 1922"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|OverseasAddress|PostCodeAndTown" value: @"00000 Buenos Aires"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|OverseasAddress|Province" value: @"Capital Federal"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|OverseasAddress|CountryCode" value: @"ARG"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|AdministrativeCentres|AdministrativeCentre|CentreDescription" value: @"Centro principal de recepcion"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|Individual|Name" value: @"Juana"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|Individual|FirstSurname" value: @"Mauripo"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|Individual|OverseasAddress|Address" value: @"Juncal 1315"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|Individual|OverseasAddress|PostCodeAndTown" value: @"00000 Buenos Aires"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|Individual|OverseasAddress|Province" value: @"Capital Federal"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|Individual|OverseasAddress|CountryCode" value: @"ARG"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|Individual|ContactDetails|Telephone" value: @"00547775554"];
[xmlToSign UpdateChildContent: @"Parties|BuyerParty|Individual|ContactDetails|TeleFax" value: @"00547775555"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceHeader|InvoiceNumber" value: @"2"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceHeader|InvoiceSeriesCode" value: @"Emit-"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceHeader|InvoiceDocumentType" value: @"FC"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceHeader|InvoiceClass" value: @"OO"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceIssueData|IssueDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceIssueData|OperationDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceIssueData|PlaceOfIssue|PostCode" value: @"00000"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceIssueData|PlaceOfIssue|PlaceOfIssueDescription" value: @"Regalos"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceIssueData|InvoicingPeriod|StartDate" value: @"2010-03-09"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceIssueData|InvoicingPeriod|EndDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceIssueData|InvoiceCurrencyCode" value: @"EUR"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceIssueData|TaxCurrencyCode" value: @"EUR"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceIssueData|LanguageName" value: @"es"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesOutputs|Tax|TaxTypeCode" value: @"01"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesOutputs|Tax|TaxRate" value: @"16.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesOutputs|Tax|TaxableBase|TotalAmount" value: @"26.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesOutputs|Tax|TaxAmount|TotalAmount" value: @"4.16"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesOutputs|Tax|EquivalenceSurcharge" value: @"1.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesOutputs|Tax|EquivalenceSurchargeAmount|TotalAmount" value: @"0.26"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesOutputs|Tax[1]|TaxTypeCode" value: @"01"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesOutputs|Tax[1]|TaxRate" value: @"0.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesOutputs|Tax[1]|TaxableBase|TotalAmount" value: @"0.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesWithheld|Tax|TaxTypeCode" value: @"05"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesWithheld|Tax|TaxRate" value: @"4.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesWithheld|Tax|TaxableBase|TotalAmount" value: @"26.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|TaxesWithheld|Tax|TaxAmount|TotalAmount" value: @"1.04"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceTotals|TotalGrossAmount" value: @"59.75"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceTotals|TotalGeneralDiscounts" value: @"0.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceTotals|TotalGeneralSurcharges" value: @"0.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceTotals|TotalGrossAmountBeforeTaxes" value: @"59.75"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceTotals|TotalTaxOutputs" value: @"4.42"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceTotals|TotalTaxesWithheld" value: @"1.04"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceTotals|InvoiceTotal" value: @"63.13"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceTotals|TotalOutstandingAmount" value: @"63.13"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|InvoiceTotals|TotalExecutableAmount" value: @"63.13"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|IssuerContractReference" value: @"A9938281"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|IssuerContractDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|IssuerTransactionReference" value: @"A9938282"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|IssuerTransactionDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|ReceiverContractReference" value: @"BBBH-38271"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|ReceiverContractDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|ReceiverTransactionReference" value: @"BBBH-38272"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|ReceiverTransactionDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|FileReference" value: @"000298172"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|FileDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|SequenceNumber" value: @"1.0"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|DeliveryNotesReferences|DeliveryNote|DeliveryNoteNumber" value: @"132413842"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|DeliveryNotesReferences|DeliveryNote|DeliveryNoteDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|DeliveryNotesReferences|DeliveryNote[1]|DeliveryNoteNumber" value: @"987673211"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|DeliveryNotesReferences|DeliveryNote[1]|DeliveryNoteDate" value: @"2010-03-09"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|ItemDescription" value: @"Flores"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|Quantity" value: @"1.0"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|UnitOfMeasure" value: @"01"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|UnitPriceWithoutTax" value: @"25.000000"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|TotalCost" value: @"25.000000"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|DiscountsAndRebates|Discount|DiscountReason" value: @"Descuento"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|DiscountsAndRebates|Discount|DiscountRate" value: @"5.0000"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|DiscountsAndRebates|Discount|DiscountAmount" value: @"1.250000"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|Charges|Charge|ChargeReason" value: @"Cargo"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|Charges|Charge|ChargeAmount" value: @"10.000000"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|GrossAmount" value: @"33.750000"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|TaxesOutputs|Tax|TaxTypeCode" value: @"01"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|TaxesOutputs|Tax|TaxRate" value: @"0.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|TaxesOutputs|Tax|TaxableBase|TotalAmount" value: @"0.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|TaxesOutputs|Tax|TaxAmount|TotalAmount" value: @"0.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|AdditionalLineItemInformation" value: @"Contacto en Neuquen: Paulita"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|SpecialTaxableEvent|SpecialTaxableEventCode" value: @"01"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|SpecialTaxableEvent|SpecialTaxableEventReason" value: @"Concepto exento por el motivo aqu definido"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine|ArticleCode" value: @"142"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|IssuerContractDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|IssuerTransactionDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|ReceiverContractDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|ReceiverTransactionDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|FileDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|SequenceNumber" value: @"2.0"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|ItemDescription" value: @"Mate"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|Quantity" value: @"2.0"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|UnitOfMeasure" value: @"01"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|UnitPriceWithoutTax" value: @"13.000000"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|TotalCost" value: @"26.000000"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|GrossAmount" value: @"26.000000"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|TaxesWithheld|Tax|TaxTypeCode" value: @"05"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|TaxesWithheld|Tax|TaxRate" value: @"4.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|TaxesWithheld|Tax|TaxableBase|TotalAmount" value: @"26.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|TaxesWithheld|Tax|TaxAmount|TotalAmount" value: @"1.04"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|TaxTypeCode" value: @"01"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|TaxRate" value: @"16.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|TaxableBase|TotalAmount" value: @"26.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|TaxAmount|TotalAmount" value: @"4.16"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|EquivalenceSurcharge" value: @"1.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|TaxesOutputs|Tax|EquivalenceSurchargeAmount|TotalAmount" value: @"0.26"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|Items|InvoiceLine[1]|ArticleCode" value: @"122"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|InstallmentDueDate" value: @"2010-03-10"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|InstallmentAmount" value: @"25.00"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|PaymentMeans" value: @"19"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|IBAN" value: @"4322 3432 22 1341234212"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|BankCode" value: @"4322"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|BranchCode" value: @"3432"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|OverseasBranchAddress|Address" value: @"Juncal 1423 8 Z"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|OverseasBranchAddress|PostCodeAndTown" value: @"01115 Capital Federal"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|OverseasBranchAddress|Province" value: @"Buenos Aires"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|AccountToBeCredited|OverseasBranchAddress|CountryCode" value: @"ARG"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|PaymentReconciliationReference" value: @"12223"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|AccountToBeDebited|IBAN" value: @"1234 4312 22 33212341212314"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|AccountToBeDebited|BankCode" value: @"1234"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|AccountToBeDebited|BranchCode" value: @"4312"];
[xmlToSign UpdateChildContent: @"Invoices|Invoice|PaymentDetails|Installment|DebitReconciliationReference" value: @"12223"];
CkoXmlDSigGen *gen = [[CkoXmlDSigGen alloc] init];
success = YES;
gen.SigLocation = @"fe:Facturae";
gen.SigLocationMod = [NSNumber numberWithInt:0];
gen.SigId = @"Signature869123";
[gen AddSignatureNamespace: @"etsi" nsUri: @"http://uri.etsi.org/01903/v1.3.2#"];
gen.SigNamespacePrefix = @"ds";
gen.SigNamespaceUri = @"http://www.w3.org/2000/09/xmldsig#";
gen.SignedInfoId = @"Signature-SignedInfo241096";
gen.SignedInfoCanonAlg = @"EXCL_C14N";
gen.SignedInfoDigestMethod = @"sha256";
// Create an Object to be added to the Signature.
CkoXml *object1 = [[CkoXml alloc] init];
object1.Tag = @"xades:QualifyingProperties";
[object1 AddAttribute: @"xmlns:xades" value: @"http://uri.etsi.org/01903/v1.3.2#"];
// The Id can be any unique string..
[object1 AddAttribute: @"Id" value: @"QualifyingProperties-e01a8fee-1bee-4ff5-9570-3d57aa02f278"];
[object1 AddAttribute: @"Target" value: @"#Signature869123"];
[object1 UpdateAttrAt: @"xades:SignedProperties" autoCreate: YES attrName: @"Id" attrValue: @"Signature869123-SignedProperties787205"];
[object1 UpdateChildContent: @"xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningTime" value: @"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
[object1 UpdateAttrAt: @"xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificateV2|xades:Cert|xades:CertDigest|ds:DigestMethod" autoCreate: YES attrName: @"Algorithm" attrValue: @"http://www.w3.org/2000/09/xmldsig#sha1"];
[object1 UpdateChildContent: @"xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificateV2|xades:Cert|xades:CertDigest|ds:DigestValue" value: @"TO BE GENERATED BY CHILKAT"];
[object1 UpdateChildContent: @"xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningCertificateV2|xades:Cert|xades:IssuerSerialV2" value: @"TO BE GENERATED BY CHILKAT"];
[object1 UpdateChildContent: @"xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyId|xades:Identifier" value: @"http://www.facturae.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf"];
[object1 UpdateChildContent: @"xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyId|xades:Description" value: @"Polótica de Firma FacturaE v3.1"];
[object1 UpdateAttrAt: @"xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyHash|ds:DigestMethod" autoCreate: YES attrName: @"Algorithm" attrValue: @"http://www.w3.org/2000/09/xmldsig#sha1"];
[object1 UpdateChildContent: @"xades:SignedProperties|xades:SignedSignatureProperties|xades:SignaturePolicyIdentifier|xades:SignaturePolicyId|xades:SigPolicyHash|ds:DigestValue" value: @"Ohixl6upD6av8N7pEvDABhEL6hM="];
[object1 UpdateChildContent: @"xades:SignedProperties|xades:SignedSignatureProperties|xades:SignerRole|xades:ClaimedRoles|xades:ClaimedRole" value: @"emisor"];
[object1 UpdateAttrAt: @"xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat" autoCreate: YES attrName: @"ObjectReference" attrValue: @"#Reference-ID-670821"];
[object1 UpdateChildContent: @"xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:Description" value: @"Factura electrónica"];
[object1 UpdateChildContent: @"xades:SignedProperties|xades:SignedDataObjectProperties|xades:DataObjectFormat|xades:MimeType" value: @"text/xml"];
[gen AddObject: @"Signature869123-Object629337" content: [object1 GetXml] mimeType: @"" encoding: @""];
[gen AddObjectRef: @"Signature869123-SignedProperties787205" digestMethod: @"sha1" canonMethod: @"" prefixList: @"" refType: @"http://uri.etsi.org/01903#SignedProperties"];
[gen SetRefIdAttr: @"Signature869123-SignedProperties787205" value: @"SignedPropertiesID459347"];
gen.KeyInfoId = @"Certificate1570061";
[gen AddSameDocRef: @"Certificate1570061" digestMethod: @"sha1" canonMethod: @"" prefixList: @"" refType: @""];
[gen AddSameDocRef: @"" digestMethod: @"sha1" canonMethod: @"" prefixList: @"" refType: @""];
[gen SetRefIdAttr: @"" value: @"Reference-ID-670821"];
// Provide a certificate + private key. (PFX password is test123)
CkoCert *cert = [[CkoCert alloc] init];
success = [cert LoadPfxFile: @"qa_data/pfx/cert_test123.pfx" password: @"test123"];
if (success == NO) {
NSLog(@"%@",cert.LastErrorText);
return;
}
[gen SetX509Cert: cert usePrivateKey: YES];
gen.KeyInfoType = @"X509Data+KeyValue";
gen.X509Type = @"Certificate";
// Load XML to be signed...
CkoStringBuilder *sbXml = [[CkoStringBuilder alloc] init];
[xmlToSign GetXmlSb: sbXml];
gen.Behaviors = @"CompactSignedXml";
// Sign the XML...
success = [gen CreateXmlDSigSb: sbXml];
if (success == NO) {
NSLog(@"%@",gen.LastErrorText);
return;
}
// Save the signed XMl to a file.
success = [sbXml WriteFile: @"qa_output/signedXml.xml" charset: @"utf-8" emitBom: NO];
NSLog(@"%@",[sbXml GetAsString]);