Páginas

miércoles, 26 de diciembre de 2012

Novedades en Java 7


Java 7 SE presenta novedades a tres niveles: APIs, lenguaje y JVM

1. Novedades en las APIs

1.1) Swing.
  • Se facilita la mezcla de AWT (componentes pesados) con Swing (componentes ligeros).
  • Se posibilitan ventanas con transparencias y con formas no cuadradas.
  • En el componente JColorChooser se habilita la posibilidad de seleccionar todo, saturación y luminusidad (Hue-Saturation-Luminance).
  • Aparece JLayer como decorador para componentes Swing.
  • La apariencia Nimbus se mueve de paquete.
1.2) IO y NIO
  • Gestionar un ZIP como si fuese un file system.
  • Las clases del paquete java.nio.* ofrecen mátodos más intuitivos para la gestión de ficheros y del sistema de archivo.
1.3) Seguridad
  • Soporta TLS 1.1 y TLS 1.2
  • Soporta renegociacion TLS (RFC 5746)
  • Ofrece un mecanismo para rechazar el uso de ciertos algoritmos (los considerados inseguros) en el procesado de rutas de certificación y en el handshaking TLS.
1.4) Concurrencia
  • Se ofrece el framework fork/join para facilitar el trabajo en paralelo (multiporcesador) con un pool de workers.
1.5) Rich Internet Applications (RIA)/Deployment
  • Embedding JNLP File in Applet Tag. Hasta la fecha a la hora de desplegar un applet mediante JNLP, el cliente primero se descargaba el fichero JNLP y luego el jar del app,let con sus dependencias. Ahora podemos incluir el fichero JNLP en el propio JAR del applet así se reduce una llamada y la carga es algo más rápida.
  • Deploying without Codebase. Hasta la fecha en los ficheros JNLP se debía especificar el parámetro Codebase, con Java 7 este parámetro es opcional, si no se indica nada Java Web Start asume que el codebase es relativo a la página web desde la que se lanza la aplicación.
  • Handling Applet Initialization Status with Event Handlers. Cualquier llamada desde JavaScript a un método o a una variable de un applet queda bloqueada hasta que termina el método init() del applet, como además JavaScript no es multihilo, la página web puede parecer congelada durante algunos segundos. Con Java 7 SE, podemos controlar desde JavaScript el estado de carga del applet, si el applet no está cargado podemos registrar los eventos para que se lancen cuando termine de cargarse.
1.6) XML, JAXP, JAXB y JAX-WS
  • Soporta JAXP 1.4.5 (Java API for XML Processing)
  • Soporta JAXB 2.2.3 (Java Architecture for XML Binding)
  • Soporta JAX-WS 2.2.4 (Java API for XML Web Services)
1.7) Internacionalización
  • Soporte de Unicode 6
  • Soporte de para los códigos de monedas ISO 4217
  • Mejoras en el Locale.Category (DISPLAY/FORMAT)
  • Soporte para BCP47 y UTR35 en Locale
   
2. Novedades en el lenguaje

2.1) Podemos manejar literales binarios, hasta ahora sólo se podía con hexadecimales, octales, etc.

        System.out.println("numero "+ 0b1010);

2.2) Se permiten sentencias switch con Strings.

         String dia="lunes";
         switch(dia){
            case "lunes":    System.out.println("Lunes"); break;
            case "martes":     System.out.println("Martes"); break;
            case "miercoles": System.out.println("Miércoles"); break;
            case "jueves":    System.out.println("Jueves"); break;
            case "viernes": System.out.println("Viernes"); break;
            default:        System.out.println("Fin de semana");
        }


2.3) Manejo automático de recursos en try/catch. Se cierran automáticamente archivos, conexiones a bases de datos, etc.

        try(BufferedWriter writer=new BufferedWriter(new FileWriter("/opt/nombreapp/salida/resultado.txt"))) {
               writer.writeln(datos);
        } catch(IOException ex) {
               ex.printStackTrace();
        }


2.4) Captura múltiple de excepciones.

        try {
            System.out.println(10/Integer.parseInt(numero));
        } catch(ArithmeticException | NumberFormatException ex) {
            //manejamos conjuntamente ambas excepciones
        }


2.5) Números con guiones.

        System.out.printf("número: %d%n",1_000);

2.6) Simplificación en el uso de genéricos. Se permiten cosas como:

        List<String> list=new ArrayList<>();

    en vez de:
   
        List<String> list=new ArrayList<String>();

3. Novedades en la JVM

3.1) La JVM soporta lenguajes no java. Java es un lenguaje donde los tipos de datos se verifican en la compilación. Hay otros lenguajes de programación donde los tipos de datos se verifican durante la ejecución, por ejemplo javaScript. Se introduce la nueva instrucción invokedynamic que simplifica y la implementación de compiladores para lenguanes dinámicos en la JVM.

3.2) Garbage-First Collector (o G1 Collector) es una nueva reimplementación del garbage collector orientada a servidores con alto consumo de memoria y multiprocesador. Es interesante su uso en servidores cuando se den una o varias de las siguientes condiciones:
  • Más del 50% de la heap está ocupada con datos activos.
  • Cuando salta el garbage collectior tarda entre 0.5 y 1 seg.
3.3) La JVM HotSpot presenta mejoras de rendimiento:
  • Compilación por capas (Tiered Compilation). Java es "interpretado" en tanto en normalmente ejecuta bytecode y no código máquina, por ello es mas lento. Para solventar esta debilidad, desde la versión 1.3 la JVM HotSpot incorpora JIT         (just-in-time compilation), que compila el bytecode a código máquina antes de ejecutar las clases. Hotspot tiene dos JIT: client JIT y server JIT. El Modo Client del JIT permite arranques más rápidos, pero con menos optimizaciones que el modo Server, que sin embargo arranca más despacio. "Tiered Compilation" tiene lo mejor de los dos compiladores, las optimizaciones del modo Server con la rapidez de arranque del modo Client. Esta mejora puede aplicarse tanto en servidores como en el eclipse.ini.
  • Punteros java comprimidos (Compressed Oops). Los Oop (ordinary object pointer) son los punteros Java a los objetos. Éstos punteros son de 32 o 64 bits según la arquitectura de la máquina. Con 32 bits el tamaño del heap (pila) es menor de 4GB que puede ser poroc para ciertas aplicaciones. Con 64 bits el tamaño del heap es mucho mayor, pero si el aplicativo no necesita realmente ese espacio extra estamos perdiendo memoria. Esta novedad permite usar direcciones de 32 bits aún siendo una arquitectura de 64 bits (una paginación) y ahorrar así memoria. En Java 7 SE, oops es la opción por defecto con JVM de 64-bit si no especificamos un valor para -Xmx o si se especifica un valor inferior a los 32GB.
  • Análisis del alcance de las variables. Otra novedad es el llamado Escape Analysis, mediante esta funcionalidad el compilador JIT de la JVM analiza el alcance de las variables y decide si interesa ubicarlas o no en el heap.
  • NUMA Collector Enhancements. Hoy en día los ordenadores vienen equipados con arquitectura NUMA (Non Uniform Memory Access). Cada rocesador tiene su propia memoria local rápida (como una caché). Java incorpora el NUMA Collector para colocar las variables definidas por cada hilo de un aplicativo en la memoria del procesador que ejecuta ese hilo, así normalmente se aceleran los accesos a memoria y la velocidad de ejecución es mayor.
Notas

Java 7 SE (Standard Edition) se compone de JDK y JRE (como cualquier versión anterior de Java).
  • JRE (Java Runtime Environment). Versión recomendada para la ejecución de aplicaciones Java y applets.
  • JDK (Java Development Kit). Versión recomendada para desarrollar aplicaciones Java y applets. Incorpora el JRE.
Referencias

http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html

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