You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello everyone I'm using xadesjs specifically the XAdES-BES Signature, to sign a document that will be validated by the entity to manage the payment of Ecuadorian taxpayers. I've been following the steps of the documentation.
First I have lo load the private key in order to use the function SignXml(xmlString, keys, algorithm). For that I have implemented the following code:
const fs = require("fs");
var { Crypto } = require("@peculiar/webcrypto");
const xadesjs = require("xadesjs");
const { XMLSerializer } = require("xmldom");
const crypto = new Crypto();
xadesjs.Application.setEngine("NodeJS", new Crypto());
// Hash and algorith from the example
const hash = "SHA-1";
const alg = {
name: "RSASSA-PKCS1-v1_5",
hash,
};
function preparePem(pem) {
return (
pem
// remove BEGIN/END
.replace(/-----(BEGIN|END)[\w\d\s]+-----/g, "")
// remove \r, \n
.replace(/[\r\n]/g, "")
);
}
function pem2der(pem) {
pem = preparePem(pem);
// convert base64 to ArrayBuffer
return new Uint8Array(Buffer.from(pem, "base64")).buffer;
}
// Set the path of the .p12 file
const path = require("path");
const p12Path = path.resolve(__dirname, "cert.p12");
//Read key
const keyPem = fs.readFileSync(p12Path, { encoding: "utf-8" });
const keyDer = pem2der(keyPem);
//Retrieve the key to sign the document
const key = xadesjs.Application.crypto.subtle.importKey(
"pkcs8",
keyDer,
alg,
false,
["sign"]
);
But I have the following error:
throw new Error(asn1Parsed.result.error);
^
Error: End of input reached before message was fully decoded (inconsistent offset and length values)
at Function.parse (/home/baeto/Documents/xades/node_modules/@peculiar/asn1-schema/build/cjs/parser.js:14:19)
at Function.importKey (/home/baeto/Documents/xades/node_modules/@peculiar/webcrypto/build/webcrypto.js:863:54)
at RsaSsaProvider.onImportKey (/home/baeto/Documents/xades/node_modules/@peculiar/webcrypto/build/webcrypto.js:1036:37)
at RsaSsaProvider.importKey (/home/baeto/Documents/xades/node_modules/webcrypto-core/build/webcrypto-core.js:234:33)
at SubtleCrypto.importKey (/home/baeto/Documents/xades/node_modules/webcrypto-core/build/webcrypto-core.js:1475:29)
at Object.<anonymous> (/home/baeto/Documents/xades/index.js:42:47)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
Any suggestions are welcome!
The text was updated successfully, but these errors were encountered:
jhcueva
changed the title
Import private key from .p12 file
Import private key from .p12 file to sign an XML file with XAdES-BES Signature
Apr 10, 2023
Hello everyone I'm using xadesjs specifically the XAdES-BES Signature, to sign a document that will be validated by the entity to manage the payment of Ecuadorian taxpayers. I've been following the steps of the documentation.
First I have lo load the private key in order to use the function SignXml(xmlString, keys, algorithm). For that I have implemented the following code:
But I have the following error:
Any suggestions are welcome!
The text was updated successfully, but these errors were encountered: