Firma XAdES Manifest
En XAdES, se denomina una firma Manifest al caso en el que no se firma directamente el documento, sino que se firma un manifiesto que hace referencia a él (identificándolo de forma unívoca mediante una huella digital y una referencia). Lo que hacemos es firmar la huella del documento en vez del documento tal y como recoge la normativa:
https://www.w3.org/TR/2000/WD-xmldsig-core-20000510/#sec-o-Manifest.
Las ventajas de una firma XAdES Manifest son claras, en lugar de enviar documentos que pueden llegar a pesar varios cientos de Mb, se envía la referencia y la huella de los documentos, reduciendo drásticamente el tamaño que navega por la red. Ejemplo de solicitud de firma de 3 documentos empleando el tipo de firma XAdES Manifest, en lugar de pasar el objeto document, se proporciona un listado de references:
Los parámetros que se reciben (en formato application/json
) tienen la siguiente forma:
{
"userCode": "{{user_code}}",
"signatureConfigurations": [
{
"references": [
{
"uri": "src/test/examples/manifest/a_documento.pdf",
"digestValue": "GQBXsIg1NFp6IYYeAFuH6l7sjLv3FbvnpvvTX6f8ZEEr1TwgOuXFuEl9IVn1hseZJG+S1 a6LDhIJcKS1sCfJ/w=="
},
{
"uri": "src/test/examples/manifest/b_documento.pdf",
"digestValue": "GSLCsIg1NFp6IYYeAFuH6l7sjLv3FbvnpvvTX6f8ZEEr1TwgOuXFuEl9IVn1hseZJG+S1 a6LDhIJcKS1sJcF/g=="
},
{
"uri": "src/test/examples/manifest/c_documento.pdf",
"digestValue": "XMBXsIg1NFp6IYYeAFuH6l7sjLv3FbvnpvvTX6f8ZEEr1TwgOuXFuEl9IVn1hseZJG+S1 a6LDhIJcKS2mDfJ/m=="
}
],
"digestAlgorithm": "SHA512",
"signatureType": "XADES_B",
"signatureAlgorithm": "RSA_SHA256",
"packaging": "ENVELOPING",
"xadesConfiguration": {
"manifestSignature": true
}
}
]
}
Donde:
Parámetro | Tipo | Descripción |
---|---|---|
userCode | string | Usuario que debe de realizar la firma, si el sistema cliente no informa dicho valor, Viafirma Fortress solicitará el usuario a emplear en el proceso de autenticación y autorización de la solicitud de firma |
signatureConfigurations/references | array | Colección de referencias |
signatureConfigurations/references/uri | string | Nombre del documento a firmar |
signatureConfigurations/references/digestValue | string | Documento a firmar, codificado en Base64 |
signatureConfigurations/digestAlgorithm | string | Algoritmo que se usará para cifrar la firma. Valores disponibles: - SHA1 - SHA224 - SHA256 - SHA384 - SHA512 |
signatureConfigurations/signatureType | string | Tipo de firma. Valores disponibles: - CADES_B - CADES_T - CADES_LT - CADES_LTA - PADES_B - PADES_T - PADES_LT - PADES_LTA - XADES_B - XADES_T - XADES_LT - XADES_LTA - PKCS1 |
signatureConfigurations/signatureAlgorithm | string | Algoritmo que se usará para cifrar la firma. Valores disponibles: - RSA_SHA1 - RSA_SHA224 - RSA_SHA256 - RSA_SHA384 - RSA_SHA512 |
signatureConfigurations/packaging | string | Envoltura de la firma. Valores disponibles: - ENVELOPED - ENVELOPING - DETACHED |
signatureConfigurations/xadesConfiguration/manifestSignature | boolean | Si se indica true, en lugar de pasar el objeto document, se proporciona un listado de references. |
Al realizar la firma, podremos ver dentro de nuestro XAdES una estructura MANIFEST con la referencia al documento (en vez del documento en sí):
<ds:Manifest Id="manifest">
<ds:Reference URI="src/test/examples/manifest/a_documento.pdf">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
<ds:DigestValue>GQBXsIg1NFp6IYYeAFuH6l7sjLv3FbvnpvvTX6f8ZEEr1TwgOuXFuEl9IVn1hseZJG+S1a 6LDhIJcKS1sCfJ/w==</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="src/test/examples/manifest/a_documento.pdf">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
<ds:DigestValue>GSLCsIg1NFp6IYYeAFuH6l7sjLv3FbvnpvvTX6f8ZEEr1TwgOuXFuEl9IVn1hseZJG+S1 a6LDhIJcKS1sJcF/g==</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="src/test/examples/manifest/a_documento.pdf">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
<ds:DigestValue>XMBXsIg1NFp6IYYeAFuH6l7sjLv3FbvnpvvTX6f8ZEEr1TwgOuXFuEl9IVn1hseZJG+S1 a6LDhIJcKS2mDfJ/m==</ds:DigestValue>
</ds:Reference>
</ds:Manifest>
results matching ""
No results matching ""