Commit 2eec52a6 authored by Alberto Inch's avatar Alberto Inch
Browse files

Corrección de bug cuando no se selecciona un tag para firma.

parent f3b15bf6
# pkcs11-xml
# pkcs12-xml
Esta librería se creó con el propósito de firmar documentos XML mediante el estándar DSIG con contenedores PKCS#12 desde aplicaciones escritas para nodejs.
## Instalación
```
$ npm install pkcs11-xml
$ npm install pkcs12-xml
```
## Ejemplo
......
......@@ -62,21 +62,24 @@ class Dsig {
computeSignature(xml, tag) {
const doc = convert.xml2js(xml, this.signOpt);
const root = Object.keys(doc);
const root = Object.keys(doc).filter(key => key !== '_declaration');
if (root.length !== 1) {
throw new Error('No se pudo determinar la raiz del documento.');
}
const _attributes = {
xmlns: 'http://www.w3.org/2000/09/xmldsig#'
};
if (tag) {
if (doc[root][tag]) {
doc[root][tag]._attributes = { id: tag };
if (doc[root[0]][tag]) {
doc[root[0]][tag]._attributes = { id: tag };
} else {
throw new Error('Tag no encontrado.');
}
this.signedInfo.Reference._attributes.URI = `#${tag}`;
} else {
}/* else {
_attributes['xmlns:xsi'] = 'http://www.w3.org/2001/XMLSchema-instance';
}
const hash = this.digest(convert.js2xml(doc, this.signOpt));
}*/
const hash = this.digest(convert.js2xml({ [root[0]]: doc[root[0]] }, this.signOpt));
this.signedInfo.Reference.DigestValue = hash;
const signedInfoXML = convert.js2xml({
SignedInfo: {
......@@ -87,7 +90,7 @@ class Dsig {
}
}, this.signOpt).split('\n').map(e => e.trim()).join('\n');
let signature = this.signatureValue(signedInfoXML);
doc[root].Signature = {
doc[root[0]].Signature = {
_attributes: {
xmlns: 'http://www.w3.org/2000/09/xmldsig#'
},
......
{
"name": "pkcs12-xml",
"version": "1.0.0",
"version": "1.0.1",
"description": "Librería para firma de documentos XML con DSIG",
"main": "./lib/dsig",
"scripts": {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment