node-nfe-nfce
Version:
Modulo que auxilia na geração de NFe e NFCe
53 lines • 2.11 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupLoadCertificate = void 0;
const errors_1 = require("../../domain/errors");
const node_forge_1 = __importDefault(require("node-forge"));
const setupLoadCertificate = () => (input) => {
const asn = node_forge_1.default.asn1.fromDer(node_forge_1.default.util.decode64(input.buffer));
let p12;
try {
p12 = node_forge_1.default.pkcs12.pkcs12FromAsn1(asn, true, input.password);
}
catch (err) {
throw new errors_1.CertificatePasswordError();
}
const pem = getPem(p12);
const data = getData(pem);
return {
pem,
key: getKey(p12),
data,
};
};
exports.setupLoadCertificate = setupLoadCertificate;
function getKey(p12) {
const keyData = p12
.getBags({ bagType: node_forge_1.default.pki.oids.pkcs8ShroudedKeyBag })[node_forge_1.default.pki.oids.pkcs8ShroudedKeyBag].concat(p12.getBags({ bagType: node_forge_1.default.pki.oids.keyBag })[node_forge_1.default.pki.oids.keyBag]);
const rsaPrivateKey = node_forge_1.default.pki.privateKeyToAsn1(keyData[0].key);
const privateKeyInfo = node_forge_1.default.pki.wrapRsaPrivateKey(rsaPrivateKey);
const key = node_forge_1.default.pki.privateKeyInfoToPem(privateKeyInfo);
return key;
}
function getPem(p12) {
const certBags = p12.getBags({ bagType: node_forge_1.default.pki.oids.certBag })[node_forge_1.default.pki.oids.certBag];
const pem = node_forge_1.default.pki.certificateToPem(certBags[0].cert);
return pem;
}
function getData(pem) {
const pki = node_forge_1.default.pki;
const certificate = pki.certificateFromPem(pem);
const values = certificate.subject
.getField({ name: "commonName" })
.value.toString()
.split(":");
return {
validade: certificate.validity.notAfter,
nome: values[0],
cnpj: values[1],
};
}
//# sourceMappingURL=load-certificate.js.map