Páginas

viernes, 21 de diciembre de 2012

Introducción a XAdES

En esta entrada vamos a comentar brevemente algunas cuestiones sobre XAdES.

XAdES son las siglas de XML Advanced Electronic Signatures (Firma electrónica avanzada de XML). Define una serie de extensiones a la norma XML-DSig que garantizan una firma electrónica avanzada.

XAdES define siete formatos de firma distintos, cada formato de firma ofrece un nivel de seguridad mayor que el formato anterior:
  • XAdES-BES (Basic Electronic Signature). Primer nivel de seguridad, cumple los requisitos mínimos de la firma electrónica avanzada que son, básicamente: se conoce la identidad del firmante, se garantiza que lo firmado no ha sido alterado y se garantiza que la firma se ha realizado por medios que únicamente controla el firmante.
  • XAdES-EPES (Explicit Policy based Electronic Signature). Segundo nivel de seguridad, añade al nivel anterior información sobre la política de firma. La política de firma es un campo mas de los firmados donde se definen las condiciones generales que el firmante acepta en el momento de realizar la firma.
  • XAdES-T (Timestamp). Tercer nivel de seguridad, añade al nivel anterior un sellado te tiempo. El sellado de tiempo evita que el firmante pueda alegar que cuando se realizó la firma su certificado estaba revocado (cuando, por ejemplo, lo revocó justo unos minutos después de firmar).
  • XAdES-C (Complete). Cuarto nivel de seguridad. El XML de la firma contiene referencias a todos los certificados de la cadena de confianza y referencias a las CRL y/o respuestas OCSP. Tanto los certificados de la cadena de confianza como las CRL/respuestas OCSP son externos a la firma.
  • XAdES-X (eXtended). Quinto nivel de seguridad. Añade sellados de tiempo a las referencias introducidas en el nivel anterior.
  • XAdES-X-L (eXtended Long-term). Sexto nivel de seguridad. Es como XAdES-X, pero ahora el XML contiene internamente los certificados, respuestas OCSP y CRL referenciados.
  • XAdES-A (Archival). Séptimo nivel de seguridad. Las firmas XAdES-X-L pueden presentar problemas de seguridad en los siguientes casos: Si la firma se ve comprometida porque la función hash o los algoritmos de cifrado que la crearon ya no son seguros, o cuando la función hash utilizada por la Autoridad de Sellado de Tiempo ya no sea segura. En éstos casos, se añade un "ArchiveTimeStamp" o sello de tiempo de archivado, a todas las firmas incluidas en el fichero XAdES-X-L (convirtiéndolo, si no lo era ya, en un XAdES-A). Éste nuevo sello de tiempo debe añadirse de forma preventiva ántes de que se de cualquiera de los problemas descritos.
Cuanto mayor es el nivel de seguridad más garantías tendrá la firma y más fácil será verificar su validez en cualquier circunstancia.

En el siguiente gráfico se ve cláramente qué añade cada formato XAdES al formato anterior. Destacar que una firma XMDSIG tendría los componentes ds:SignedInfo, ds:SignatureValue y ds:KeyInfo, por lo que XAdES-BES aporta SignedProperties y UnSignedProperties.

Ubicación de la firma en el XML

Dado un cierto documento xml, podremos aplicar cualquiera de los formatos XAdES antes comentados de cuatro formas distintas sobre un mismo xml.
  • Firma Enveloping
La firma, nodo <ds:signature>, contiene en su interior los datos firmados, que se colocan dentro del nodo <ds:object id="idxxx">, en el nodo <ds:Reference> de la firma que señala el contenido firmado aparecerá algo del tipo URI="#idxxx".

<?xml version="1.0" encoding="UTF-8"?>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  <ds:SignedInfo>
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
    <ds:Reference URI="#idxxx">
      <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
      <ds:DigestValue/>
    </ds:Reference>
  </ds:SignedInfo>
  <ds:SignatureValue/>
  <ds:Object id="idxxx">
    <datoslibro>
      <fichalibro Id="libro222">
        <titulo>El ingenioso hidalgo Don Quijote de la Mancha</titulo>
        <autor>Miguel de Cervantes Saavedra</autor>
        <anyo>1605</anyo>
      </fichalibro>
    </datoslibro>
  </ds:Object>
</ds:Signature>

Nota. Si los datos no son XML, no es posible insertarlos directamente dentro de una estructura XML, por lo que se codificarían previamente en Base64.

  • Firma Enveloped (Implicit)
El nodo firmado <datoslibro> contiene en su interior la firma, nodo <ds:signature>, y en el nodo <ds:Reference> de la firma que señala el contenido firmado aparecerá algo del tipo URI="".

<?xml version="1.0" encoding="UTF-8"?>
<datoslibro>
  <fichalibro Id="libro222">
    <titulo>El ingenioso hidalgo Don Quijote de la Mancha</titulo>
    <autor>Miguel de Cervantes Saavedra</autor>
    <anyo>1605</anyo>
  </fichalibro>
  <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:SignedInfo>
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
      <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
      <ds:Reference URI="">
        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <ds:DigestValue/>
      </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue/>
  </ds:Signature>
</datoslibro>

Nota. Referenciar en <ds:Reference> una URI vacía ("URI="), implica que la firma aplica a la totalidad del documento original.
  • Firma Detached (Externally Detached)
El fichero xml con la firma está separado del fichero xml con los datos. En el nodo <ds:Reference> del fichero firma se señala el contenido firmado, aparecerá algo del tipo URI="http://servidor/fichero.xml" o algo del tipo URI="http://servidor/fichero.xml#idxxx". En el primer caso se está firmando todo el fichero referenciado por la URI y en el segundo caso únicamente un nodo con ID="idxxx" dentro de ese fichero.

<?xml version="1.0" encoding="UTF-8"?>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  <ds:SignedInfo>
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
    <ds:Reference URI="http://servidor/fichero.xml">
      <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
      <ds:DigestValue/>
    </ds:Reference>
  </ds:SignedInfo>
  <ds:SignatureValue/>
</ds:Signature>

Nota. Para que el receptor pueda validar la firma, la URL que referencia el fichero de datos que se ha firmado (http://servidor/fichero.xml) ha de ser accesible al receptor.
  • Firma Mixta (Internally Detached)
La firma, nodo <ds:signature>, va en cualquier posición en un cierto xml y se firma otro nodo de dicho xml. El nodo firmado tendrá un atributo id="idxxx" y en el nodo <ds:Reference> de la firma aparecerá algo del tipo URI="#idxxx".

<?xml version="1.0" encoding="UTF-8"?>
<datoslibro>
  <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:SignedInfo>
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
      <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
      <ds:Reference URI="#libro222">
        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <ds:DigestValue/>
      </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue/>
  </ds:Signature>
  <fichalibro Id="libro222">
    <titulo>El ingenioso hidalgo Don Quijote de la Mancha</titulo>
    <autor>Miguel de Cervantes Saavedra</autor>
    <anyo>1605</anyo>
  </fichalibro>
</datoslibro>

Firmas comparadas

Vamos a ver ahora un ejemplo de cada tipo de firma, empezando en XAdES-BES y terminando en XAdES-XL. En cada ejemplo destacamos en negrita la finalidad de cada nodo y destacamos en rojo los nodos nuevos o que cambian respecto al nivel XAdES anterior.

XAdES-BES.

<?xml version="1.0" encoding="UTF-8"?>
<documento>
    <enifile:contenido Id="I-CONT-0123456789">DATOS A FIRMAR EN BASE64</enifile:contenido>
    <ds:Signature xmlns:etsi="http://uri.etsi.org/01903/v1.3.2#"
        Id="Signature801100">
        <ds:SignedInfo Id="Signature-SignedInfo248625">
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
            <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod>
            <ds:Reference Id="SignedPropertiesID49278" Type="http://uri.etsi.org/01903#SignedProperties" URI="#Signature801100-SignedProperties758537">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LAS SignedProperties EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference URI="#Certificate1868714">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LA CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference Id="Reference-ID-595057" URI="#I-CONT-0123456789">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LOS DATOS A FIRMAR EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue Id="SignatureValue630921">VALOR DE LA FIRMA EN BASE 64</ds:SignatureValue>
        <ds:KeyInfo Id="Certificate1868714">
            <ds:X509Data>
                <ds:X509Certificate>CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64</ds:X509Certificate>
            </ds:X509Data>
            <ds:KeyValue>
                <ds:RSAKeyValue>
                    <ds:Modulus>MODULO DE LA CLAVE RSA EN BASE 64</ds:Modulus>
                    <ds:Exponent>EXPONENTE DE LA CLAVE RSA EN BASE 64</ds:Exponent>
                </ds:RSAKeyValue>
            </ds:KeyValue>
        </ds:KeyInfo>
        <ds:Object Id="Signature801100-Object282070">
            <etsi:QualifyingProperties Target="#Signature801100">
                <etsi:SignedProperties Id="Signature801100-SignedProperties758537">
                    <etsi:SignedSignatureProperties>
                        <etsi:SigningTime>FECHA Y HORA DE LA FIRMA</etsi:SigningTime>
                        <etsi:SigningCertificate>
                            <etsi:Cert>
                                <etsi:CertDigest>
                                    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                    <ds:DigestValue>UESvWZbj+klE48bfOWis4yDlOQE=
                                    </ds:DigestValue>
                                </etsi:CertDigest>
                                <etsi:IssuerSerial>
                                    <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO FIRMANTE</ds:X509IssuerName>
                                    <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO FIRMANTE</ds:X509SerialNumber>
                                </etsi:IssuerSerial>
                            </etsi:Cert>
                        </etsi:SigningCertificate>
                    </etsi:SignedSignatureProperties>
                    <etsi:SignedDataObjectProperties>
                        <etsi:DataObjectFormat ObjectReference="#Reference-ID-595057">
                            <etsi:Description>DESCRIPCION DEL OBJETO FIRMADO</etsi:Description>
                        </etsi:DataObjectFormat>
                    </etsi:SignedDataObjectProperties>
                </etsi:SignedProperties>
            </etsi:QualifyingProperties>
        </ds:Object>
    </ds:Signature>
</documento>


XAdES-EPES. La diferencia con XAdES-BES es que se incluye <etsi:SignaturePolicyIdentifier> con la política de firma usada.

<?xml version="1.0" encoding="UTF-8"?>
<documento>
    <enifile:contenido Id="I-CONT-0123456789">DATOS A FIRMAR EN BASE64</enifile:contenido>
    <ds:Signature xmlns:etsi="http://uri.etsi.org/01903/v1.3.2#"
        Id="Signature848615">
        <ds:SignedInfo Id="Signature-SignedInfo293839">
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
            <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod>
            <ds:Reference Id="SignedPropertiesID228478" Type="http://uri.etsi.org/01903#SignedProperties" URI="#Signature848615-SignedProperties458805">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LAS SignedProperties EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference URI="#Certificate1353906">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LA CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference Id="Reference-ID-372892" URI="#I-CONT-0123456789">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LOS DATOS A FIRMAR EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue Id="SignatureValue630921">VALOR DE LA FIRMA EN BASE 64</ds:SignatureValue>
        <ds:KeyInfo Id="Certificate1353906">
            <ds:X509Data>
                <ds:X509Certificate>CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64</ds:X509Certificate>
            </ds:X509Data>
            <ds:KeyValue>
                <ds:RSAKeyValue>
                    <ds:Modulus>MODULO DE LA CLAVE RSA EN BASE 64</ds:Modulus>
                    <ds:Exponent>EXPONENTE DE LA CLAVE RSA EN BASE 64</ds:Exponent>
                </ds:RSAKeyValue>
            </ds:KeyValue>
        </ds:KeyInfo>
        <ds:Object Id="Signature848615-Object70279">
            <etsi:QualifyingProperties Target="#Signature848615">
                <etsi:SignedProperties Id="Signature848615-SignedProperties458805">
                    <etsi:SignedSignatureProperties>
                        <etsi:SigningTime>FECHA Y HORA DE LA FIRMA</etsi:SigningTime>
                        <etsi:SigningCertificate>
                            <etsi:Cert>
                                <etsi:CertDigest>
                                    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                    <ds:DigestValue>UESvWZbj+klE48bfOWis4yDlOQE=
                                    </ds:DigestValue>
                                </etsi:CertDigest>
                                <etsi:IssuerSerial>
                                    <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO FIRMANTE</ds:X509IssuerName>
                                    <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO FIRMANTE</ds:X509SerialNumber>
                                </etsi:IssuerSerial>
                            </etsi:Cert>
                        </etsi:SigningCertificate>
                        <etsi:SignaturePolicyIdentifier>
                            <etsi:SignaturePolicyImplied>INFORMACION DE LA POLITICA DE FIRMA</etsi:SignaturePolicyImplied>
                        </etsi:SignaturePolicyIdentifier>

                    </etsi:SignedSignatureProperties>
                    <etsi:SignedDataObjectProperties>
                        <etsi:DataObjectFormat ObjectReference="#Reference-ID-372892">
                            <etsi:Description>DESCRIPCION DEL OBJETO FIRMADO</etsi:Description>
                        </etsi:DataObjectFormat>
                    </etsi:SignedDataObjectProperties>
                </etsi:SignedProperties>
            </etsi:QualifyingProperties>
        </ds:Object>
    </ds:Signature>
</documento>


XAdES-T. La diferencia con XAdES-BES o con XAdES-EPES es que se añade un <etsi:EncapsulatedTimeStamp> dentro de las <etsi:UnsignedSignatureProperties>, con la fecha/hora de la firma. Así el firmante no puede repudiar la firma, alegando por ejemplo que su certificado fué revocado en la fecha de la firma.

<?xml version="1.0" encoding="UTF-8"?>
<documento>
    <enifile:contenido Id="I-CONT-0123456789">DATOS A FIRMAR EN BASE64</enifile:contenido>
    <ds:Signature xmlns:etsi="http://uri.etsi.org/01903/v1.3.2#"
        Id="Signature754596">
        <ds:SignedInfo Id="Signature-SignedInfo1043088">
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
            <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod>
            <ds:Reference Id="SignedPropertiesID368251" Type="http://uri.etsi.org/01903#SignedProperties" URI="#Signature754596-SignedProperties419098">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LAS SignedProperties EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference URI="#Certificate1697788">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LA CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference Id="Reference-ID-415022" URI="#I-CONT-0123456789">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LOS DATOS A FIRMAR EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue Id="SignatureValue630921">VALOR DE LA FIRMA EN BASE 64</ds:SignatureValue>
        <ds:KeyInfo Id="Certificate1697788">
            <ds:X509Data>
                <ds:X509Certificate>CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64</ds:X509Certificate>
            </ds:X509Data>
            <ds:KeyValue>
                <ds:RSAKeyValue>
                    <ds:Modulus>MODULO DE LA CLAVE RSA EN BASE 64</ds:Modulus>
                    <ds:Exponent>EXPONENTE DE LA CLAVE RSA EN BASE 64</ds:Exponent>
                </ds:RSAKeyValue>
            </ds:KeyValue>
        </ds:KeyInfo>
        <ds:Object Id="Signature754596-Object328709">
            <etsi:QualifyingProperties Target="#Signature754596">
                <etsi:SignedProperties Id="Signature754596-SignedProperties419098">
                    <etsi:SignedSignatureProperties>
                        <etsi:SigningTime>FECHA Y HORA DE LA FIRMA</etsi:SigningTime>
                        <etsi:SigningCertificate>
                            <etsi:Cert>
                                <etsi:CertDigest>
                                    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                    <ds:DigestValue>UESvWZbj+klE48bfOWis4yDlOQE=
                                    </ds:DigestValue>
                                </etsi:CertDigest>
                                <etsi:IssuerSerial>
                                    <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO FIRMANTE</ds:X509IssuerName>
                                    <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO FIRMANTE</ds:X509SerialNumber>
                                </etsi:IssuerSerial>
                            </etsi:Cert>
                        </etsi:SigningCertificate>
                        <etsi:SignaturePolicyIdentifier>
                            <etsi:SignaturePolicyImplied>INFORMACION DE LA POLITICA DE FIRMA</etsi:SignaturePolicyImplied>
                        </etsi:SignaturePolicyIdentifier>
                    </etsi:SignedSignatureProperties>
                    <etsi:SignedDataObjectProperties>
                        <etsi:DataObjectFormat ObjectReference="#Reference-ID-415022">
                            <etsi:Description>DESCRIPCION DEL OBJETO FIRMADO</etsi:Description>
                        </etsi:DataObjectFormat>
                    </etsi:SignedDataObjectProperties>
                </etsi:SignedProperties>
                <etsi:UnsignedProperties Id="Signature754596-UnsignedProperties41621">
                    <etsi:UnsignedSignatureProperties>
                        <etsi:SignatureTimeStamp Id="SelloTiempo896970">
                            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
                            <etsi:EncapsulatedTimeStamp Id="SelloTiempo-Token639298">SELLO DE TIEMPO EN BASE 64</etsi:EncapsulatedTimeStamp>
                        </etsi:SignatureTimeStamp>
                    </etsi:UnsignedSignatureProperties>
                </etsi:UnsignedProperties>

            </etsi:QualifyingProperties>
        </ds:Object>
    </ds:Signature>
</documento>


XAdES-C. La diferencia con XAdES-T es que se añaden <etsi:CompleteCertificateRefs> y <etsi:CompleteRevocationRefs> dentro de <etsi:UnsignedProperties>. En <etsi:CompleteCertificateRefs> aparecen referenciados (referencias a ficheros externos "*.cer" que acompañan al XML) todos los certificados de la cadena de confianza. En <etsi:CompleteRevocationRefs> aparecen referenciadas (referencias externas a ficheros "*.ors" que acompañan al XML) las respuestas OCSP sobre el estado del certificado en el momento de la firma (en éste caso el emisor de los certificados no responde con CRL's).

<?xml version="1.0" encoding="UTF-8"?>
<documento>
    <enifile:contenido Id="I-CONT-0123456789">DATOS A FIRMAR EN BASE64</enifile:contenido>
    <ds:Signature xmlns:etsi="http://uri.etsi.org/01903/v1.3.2#"
        Id="Signature233908">
        <ds:SignedInfo Id="Signature-SignedInfo217186">
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
            <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod>
            <ds:Reference Id="SignedPropertiesID759589" Type="http://uri.etsi.org/01903#SignedProperties" URI="#Signature233908-SignedProperties66892">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LAS SignedProperties EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference URI="#Certificate1706205">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LA CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference Id="Reference-ID-378304" URI="#I-CONT-0123456789">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LOS DATOS A FIRMAR EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue Id="SignatureValue630921">VALOR DE LA FIRMA EN BASE 64</ds:SignatureValue>
        <ds:KeyInfo Id="Certificate1706205">
            <ds:X509Data>
                <ds:X509Certificate>CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64</ds:X509Certificate>
            </ds:X509Data>
            <ds:KeyValue>
                <ds:RSAKeyValue>
                    <ds:Modulus>MODULO DE LA CLAVE RSA EN BASE 64</ds:Modulus>
                    <ds:Exponent>EXPONENTE DE LA CLAVE RSA EN BASE 64</ds:Exponent>
                </ds:RSAKeyValue>
            </ds:KeyValue>
        </ds:KeyInfo>
        <ds:Object Id="Signature233908-Object557197">
            <etsi:QualifyingProperties Target="#Signature233908">
                <etsi:SignedProperties Id="Signature233908-SignedProperties66892">
                    <etsi:SignedSignatureProperties>
                        <etsi:SigningTime>FECHA Y HORA DE LA FIRMA</etsi:SigningTime>
                        <etsi:SigningCertificate>
                            <etsi:Cert>
                                <etsi:CertDigest>
                                    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                    <ds:DigestValue>UESvWZbj+klE48bfOWis4yDlOQE=
                                    </ds:DigestValue>
                                </etsi:CertDigest>
                                <etsi:IssuerSerial>
                                    <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO FIRMANTE</ds:X509IssuerName>
                                    <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO FIRMANTE</ds:X509SerialNumber>
                                </etsi:IssuerSerial>
                            </etsi:Cert>
                        </etsi:SigningCertificate>
                        <etsi:SignaturePolicyIdentifier>
                            <etsi:SignaturePolicyImplied>INFORMACION DE LA POLITICA DE FIRMA</etsi:SignaturePolicyImplied>
                        </etsi:SignaturePolicyIdentifier>
                    </etsi:SignedSignatureProperties>
                    <etsi:SignedDataObjectProperties>
                        <etsi:DataObjectFormat ObjectReference="#Reference-ID-378304">
                            <etsi:Description>DESCRIPCION DEL OBJETO FIRMADO</etsi:Description>
                        </etsi:DataObjectFormat>
                    </etsi:SignedDataObjectProperties>
                </etsi:SignedProperties>
                <etsi:UnsignedProperties Id="Signature233908-UnsignedProperties850646">
                    <etsi:UnsignedSignatureProperties>
                        <etsi:SignatureTimeStamp Id="SelloTiempo903560">
                            <ds:CanonicalizationMethod
                                Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
                            <etsi:EncapsulatedTimeStamp Id="SelloTiempo-Token673096">SELLO DE TIEMPO EN BASE 64</etsi:EncapsulatedTimeStamp>
                        </etsi:SignatureTimeStamp>
                        <etsi:CompleteCertificateRefs Id="CompleteCertificateRefs678300">
                            <etsi:CertRefs>
                                <etsi:Cert URI="cert-51d4e435.cer">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                                <etsi:Cert URI="cert-51e269b9.cer">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                                <etsi:Cert URI="cert-af48ca99.cer">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                                <etsi:Cert URI="cert-dfcf6bea.cer">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                            </etsi:CertRefs>
                        </etsi:CompleteCertificateRefs>
                        <etsi:CompleteRevocationRefs Id="CompleteRevocationRefs813975">
                            <etsi:OCSPRefs>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="ocsp-b38ce045.ors">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="ocsp-955e683.ors">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="ocsp-9c33e31b.ors">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="ocsp-40d5e753.ors">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                            </etsi:OCSPRefs>
                        </etsi:CompleteRevocationRefs>

                    </etsi:UnsignedSignatureProperties>
                </etsi:UnsignedProperties>
            </etsi:QualifyingProperties>
        </ds:Object>
    </ds:Signature>
</documento>


XAdES-X. La diferencia con XAdES-C está en que se añade un segundo Timestamp, ésta vez aplicado a los datos <etsi:CompleteCertificateRefs> y <etsi:CompleteRevocationRefs> para evitar que se vea comprometida la cadena de certificados en el futuro.

<?xml version="1.0" encoding="UTF-8"?>
<documento>
    <enifile:contenido Id="I-CONT-0123456789">DATOS A FIRMAR EN BASE64</enifile:contenido>
    <ds:Signature xmlns:etsi="http://uri.etsi.org/01903/v1.3.2#"
        Id="Signature75894">
        <ds:SignedInfo Id="Signature-SignedInfo719420">
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
            <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod>
            <ds:Reference Id="SignedPropertiesID74902" Type="http://uri.etsi.org/01903#SignedProperties" URI="#Signature75894-SignedProperties122672">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LAS SignedProperties EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference URI="#Certificate1800244">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LA CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference Id="Reference-ID-697504" URI="#I-CONT-0123456789">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LOS DATOS A FIRMAR EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue Id="SignatureValue630921">VALOR DE LA FIRMA EN BASE 64</ds:SignatureValue>
        <ds:KeyInfo Id="Certificate1800244">
            <ds:X509Data>
                <ds:X509Certificate>CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64</ds:X509Certificate>
            </ds:X509Data>
            <ds:KeyValue>
                <ds:RSAKeyValue>
                    <ds:Modulus>MODULO DE LA CLAVE RSA EN BASE 64</ds:Modulus>
                    <ds:Exponent>EXPONENTE DE LA CLAVE RSA EN BASE 64</ds:Exponent>
                </ds:RSAKeyValue>
            </ds:KeyValue>
        </ds:KeyInfo>
        <ds:Object Id="Signature75894-Object383841">
            <etsi:QualifyingProperties Target="#Signature75894">
                <etsi:SignedProperties Id="Signature75894-SignedProperties122672">
                    <etsi:SignedSignatureProperties>
                        <etsi:SigningTime>FECHA Y HORA DE LA FIRMA</etsi:SigningTime>
                        <etsi:SigningCertificate>
                            <etsi:Cert>
                                <etsi:CertDigest>
                                    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                    <ds:DigestValue>UESvWZbj+klE48bfOWis4yDlOQE=
                                    </ds:DigestValue>
                                </etsi:CertDigest>
                                <etsi:IssuerSerial>
                                    <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO FIRMANTE</ds:X509IssuerName>
                                    <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO FIRMANTE</ds:X509SerialNumber>
                                </etsi:IssuerSerial>
                            </etsi:Cert>
                        </etsi:SigningCertificate>
                        <etsi:SignaturePolicyIdentifier>
                            <etsi:SignaturePolicyImplied>INFORMACION DE LA POLITICA DE FIRMA</etsi:SignaturePolicyImplied>
                        </etsi:SignaturePolicyIdentifier>
                    </etsi:SignedSignatureProperties>
                    <etsi:SignedDataObjectProperties>
                        <etsi:DataObjectFormat ObjectReference="#Reference-ID-697504">
                            <etsi:Description>DESCRIPCION DEL OBJETO FIRMADO</etsi:Description>
                        </etsi:DataObjectFormat>
                    </etsi:SignedDataObjectProperties>
                </etsi:SignedProperties>
                <etsi:UnsignedProperties Id="Signature75894-UnsignedProperties209264">
                    <etsi:UnsignedSignatureProperties>
                        <etsi:SignatureTimeStamp Id="SelloTiempo217564">
                            <ds:CanonicalizationMethod
                                Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
                            <etsi:EncapsulatedTimeStamp Id="SelloTiempo-Token641659">SELLO DE TIEMPO EN BASE 64</etsi:EncapsulatedTimeStamp>
                        </etsi:SignatureTimeStamp>
                        <etsi:CompleteCertificateRefs Id="CompleteCertificateRefs116069">
                            <etsi:CertRefs>
                                <etsi:Cert URI="cert-51d4e435.cer">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                                <etsi:Cert URI="cert-51e269b9.cer">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                                <etsi:Cert URI="cert-af48ca99.cer">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                                <etsi:Cert URI="cert-dfcf6bea.cer">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                            </etsi:CertRefs>
                        </etsi:CompleteCertificateRefs>
                        <etsi:CompleteRevocationRefs Id="CompleteRevocationRefs821214">
                            <etsi:OCSPRefs>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="ocsp-210ae699.ors">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="ocsp-8ede475.ors">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="ocsp-7c96e708.ors">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="ocsp-6c35ecac.ors">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                            </etsi:OCSPRefs>
                        </etsi:CompleteRevocationRefs>
                        <etsi:SigAndRefsTimeStamp Id="SelloTiempo481184">
                            <ds:CanonicalizationMethod
                                Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
                            <etsi:EncapsulatedTimeStamp>SELLO DE TIEMPO PARA LA CADENA DE CERTIFICADOS EN BASE 64</etsi:EncapsulatedTimeStamp>
                        </etsi:SigAndRefsTimeStamp>

                    </etsi:UnsignedSignatureProperties>
                </etsi:UnsignedProperties>
            </etsi:QualifyingProperties>
        </ds:Object>
    </ds:Signature>
</documento>


XAdES-X-L. la diferencia con XAdES-X radica en que ahora tanto los certificados como las respuestas OCSP (en el ejemplo no se usa CRL), van incluídas en el XML, en los nodos <etsi:CertificateValues> y <etsi:RevocationValues> de <etsi:UnsignedSignatureProperties>. Con ello se garantiza que se podrá realizar la validación de la firma en cualquier momento, incluso si los servidores OCSP ya no estuviesen disponibles.

<?xml version="1.0" encoding="UTF-8"?>
<documento>
    <enifile:contenido Id="I-CONT-0123456789">DATOS A FIRMAR EN BASE64</enifile:contenido>
    <ds:Signature xmlns:etsi="http://uri.etsi.org/01903/v1.3.2#"
        Id="Signature840357">
        <ds:SignedInfo Id="Signature-SignedInfo757927">
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
            <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod>
            <ds:Reference Id="SignedPropertiesID858972" Type="http://uri.etsi.org/01903#SignedProperties" URI="#Signature840357-SignedProperties56116">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LAS SignedProperties EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference URI="#Certificate1308388">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LA CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
            <ds:Reference Id="Reference-ID-254481" URI="#I-CONT-0123456789">
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                <ds:DigestValue>HUELLA DE LOS DATOS A FIRMAR EN BASE 64 (ELEMENTO REFERENCIADO)</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue Id="SignatureValue630921">VALOR DE LA FIRMA EN BASE 64</ds:SignatureValue>
        <ds:KeyInfo Id="Certificate1308388">
            <ds:X509Data>
                <ds:X509Certificate>CLAVE PUBLICA DEL CERTIFICADO FIRMANTE EN BASE 64</ds:X509Certificate>
            </ds:X509Data>
            <ds:KeyValue>
                <ds:RSAKeyValue>
                    <ds:Modulus>MODULO DE LA CLAVE RSA EN BASE 64</ds:Modulus>
                    <ds:Exponent>EXPONENTE DE LA CLAVE RSA EN BASE 64</ds:Exponent>
                </ds:RSAKeyValue>
            </ds:KeyValue>
        </ds:KeyInfo>
        <ds:Object Id="Signature840357-Object731972">
            <etsi:QualifyingProperties Target="#Signature840357">
                <etsi:SignedProperties Id="Signature840357-SignedProperties56116">
                    <etsi:SignedSignatureProperties>
                        <etsi:SigningTime>FECHA Y HORA DE LA FIRMA</etsi:SigningTime>
                        <etsi:SigningCertificate>
                            <etsi:Cert>
                                <etsi:CertDigest>
                                    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                    <ds:DigestValue>UESvWZbj+klE48bfOWis4yDlOQE=
                                    </ds:DigestValue>
                                </etsi:CertDigest>
                                <etsi:IssuerSerial>
                                    <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO FIRMANTE</ds:X509IssuerName>
                                    <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO FIRMANTE</ds:X509SerialNumber>
                                </etsi:IssuerSerial>
                            </etsi:Cert>
                        </etsi:SigningCertificate>
                        <etsi:SignaturePolicyIdentifier>
                            <etsi:SignaturePolicyImplied>INFORMACION DE LA POLITICA DE FIRMA</etsi:SignaturePolicyImplied>
                        </etsi:SignaturePolicyIdentifier>
                    </etsi:SignedSignatureProperties>
                    <etsi:SignedDataObjectProperties>
                        <etsi:DataObjectFormat ObjectReference="#Reference-ID-254481">
                            <etsi:Description>DESCRIPCION DEL OBJETO FIRMADO</etsi:Description>
                        </etsi:DataObjectFormat>
                    </etsi:SignedDataObjectProperties>
                </etsi:SignedProperties>
                <etsi:UnsignedProperties Id="Signature840357-UnsignedProperties774105">
                    <etsi:UnsignedSignatureProperties>
                        <etsi:SignatureTimeStamp Id="SelloTiempo278440">
                            <ds:CanonicalizationMethod
                                Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
                            <etsi:EncapsulatedTimeStamp Id="SelloTiempo-Token124272">SELLO DE TIEMPO EN BASE 64</etsi:EncapsulatedTimeStamp>
                        </etsi:SignatureTimeStamp>
                        <etsi:CompleteCertificateRefs Id="CompleteCertificateRefs891280">
                            <etsi:CertRefs>
                                <etsi:Cert URI="#CertPath222992">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                                <etsi:Cert URI="#CertPath523050">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                                <etsi:Cert URI="#CertPath888969">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                                <etsi:Cert URI="#CertPath986853">
                                    <etsi:CertDigest>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:CertDigest>
                                    <etsi:IssuerSerial>
                                        <ds:X509IssuerName>NOMBRE DEL EMISOR DEL CERTIFICADO</ds:X509IssuerName>
                                        <ds:X509SerialNumber>NUMERO DE SERIE DEL CERTIFICADO</ds:X509SerialNumber>
                                    </etsi:IssuerSerial>
                                </etsi:Cert>
                            </etsi:CertRefs>
                        </etsi:CompleteCertificateRefs>
                        <etsi:CompleteRevocationRefs Id="CompleteRevocationRefs409336">
                            <etsi:OCSPRefs>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="#OCSP270">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="#OCSP870468">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="#OCSP745695">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                                <etsi:OCSPRef>
                                    <etsi:OCSPIdentifier URI="#OCSP884900">
                                        <etsi:ResponderID>
                                            <etsi:ByName>NOMBRE DEL SERVIDOR OCSP</etsi:ByName>
                                        </etsi:ResponderID>
                                        <etsi:ProducedAt>FECHA EN QUE SE LANZO LA CONSULTA AL SERVER OCSP</etsi:ProducedAt>
                                    </etsi:OCSPIdentifier>
                                    <etsi:DigestAlgAndValue>
                                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                        <ds:DigestValue>HUELLA DE LA RESPUESTA OCSP</ds:DigestValue>
                                    </etsi:DigestAlgAndValue>
                                </etsi:OCSPRef>
                            </etsi:OCSPRefs>
                        </etsi:CompleteRevocationRefs>
                        <etsi:SigAndRefsTimeStamp Id="SelloTiempo979579">
                            <ds:CanonicalizationMethod
                                Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
                            <etsi:EncapsulatedTimeStamp>SELLO DE TIEMPO PARA LA CADENA DE CERTIFICADOS EN BASE 64</etsi:EncapsulatedTimeStamp>
                        </etsi:SigAndRefsTimeStamp>
                        <etsi:CertificateValues Id="CertificateValues27705">
                            <etsi:EncapsulatedX509Certificate Id="CertPath890794">CERTIFICADO EN BASE 64</etsi:EncapsulatedX509Certificate>
                            <etsi:EncapsulatedX509Certificate Id="CertPath222992">CERTIFICADO EN BASE 64</etsi:EncapsulatedX509Certificate>
                            <etsi:EncapsulatedX509Certificate Id="CertPath523050">CERTIFICADO EN BASE 64</etsi:EncapsulatedX509Certificate>
                            <etsi:EncapsulatedX509Certificate Id="CertPath888969">CERTIFICADO EN BASE 64</etsi:EncapsulatedX509Certificate>
                            <etsi:EncapsulatedX509Certificate Id="CertPath986853">CERTIFICADO EN BASE 64</etsi:EncapsulatedX509Certificate>
                        </etsi:CertificateValues>
                        <etsi:RevocationValues Id="RevocationValues275593">
                            <etsi:OCSPValues>
                                <etsi:EncapsulatedOCSPValue Id="OCSP270">RESPUESTA OCSP EN BASE 64</etsi:EncapsulatedOCSPValue>
                                <etsi:EncapsulatedOCSPValue Id="OCSP870468">RESPUESTA OCSP EN BASE 64</etsi:EncapsulatedOCSPValue>
                                <etsi:EncapsulatedOCSPValue Id="OCSP745695">RESPUESTA OCSP EN BASE 64</etsi:EncapsulatedOCSPValue>
                                <etsi:EncapsulatedOCSPValue Id="OCSP884900">RESPUESTA OCSP EN BASE 64</etsi:EncapsulatedOCSPValue>
                            </etsi:OCSPValues>
                        </etsi:RevocationValues>

                    </etsi:UnsignedSignatureProperties>
                </etsi:UnsignedProperties>
            </etsi:QualifyingProperties>
        </ds:Object>
    </ds:Signature>
</documento>


Enlaces de interés.

http://www.w3.org/TR/xmldsig-core/#sec-ReferenceProcessingModel
http://oficinavirtual.mityc.es/componentes/MITyCLibXADES/
http://www.w3.org/TR/XAdES/

Un saludo

No hay comentarios:

Publicar un comentario