UNPKG

envio-comprobantes-sri

Version:

Envia comprobantes electronicos al SRI (Ecuador). Recibe un objeto JSON. Lo convierte a XML, lo firma, lo envía al servicio web del SRI y devuelve la respuesta.

67 lines (66 loc) 3.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const node_forge_1 = __importDefault(require("node-forge")); const CertificateRelatedError_1 = __importDefault(require("./CertificateRelatedError")); function Certp12Info(p12Cert) { var certBags = p12Cert.getBags({ bagType: node_forge_1.default.pki.oids.certBag }); var cert = certBags[node_forge_1.default.pki.oids.certBag][0].cert; if (!cert) throw new CertificateRelatedError_1.default("cert_bags_missing"); if (cert.issuer.getField("O")?.value === "SECURITY DATA S.A. 2") return { validFrom: cert.validity.notBefore, validTo: cert.validity.notAfter, organizationName: getExtensionValue(cert, "1.3.6.1.4.1.37746.3.10"), organizationSerialNumber: getExtensionValue(cert, "1.3.6.1.4.1.37746.3.11"), emailAddress: getExtensionValue(cert, "2.5.29.17"), subjectName: p12Cert.safeContents[0]?.safeBags[0]?.attributes.friendlyName[0], subjectSerialNumber: getExtensionValue(cert, "1.3.6.1.4.1.37746.3.1"), commonName: cert.subject.getField("CN")?.value, issuerCommonName: cert.issuer.getField("CN")?.value }; return { validFrom: cert.validity.notBefore, validTo: cert.validity.notAfter /** RUC de la empresa | en el caso de UNATACA S.A. el formato es {texto}-{RUC}. */ , organizationName: cert.subject.getField("O")?.value, organizationSerialNumber: cert.subject.getField({ type: "2.5.4.97" })?.value, emailAddress: cert.subject.getField("E")?.value /** Nombre de la persona */ , subjectName: ((cert.subject.getField({ name: "givenName" })?.value || "") + " " + (cert.subject.getField({ name: "surname" })?.value || "")).trim() /** Cedula de la persona | en el caso de UNATACA S.A. el formato es {texto}-{cedula}. */ , subjectSerialNumber: cert.subject.getField({ name: "serialNumber" })?.value /** Generalmente es: {cedula} {nombre} */ , commonName: cert.subject.getField("CN")?.value /** Nombre del emisor del certificado */ , issuerCommonName: cert.issuer.getField("CN")?.value }; } exports.default = Certp12Info; function getExtensionValue(cert, id) { var extension = cert.extensions.find(x => x.id === id); if (!extension) return; var value = extension.value; if (extension.altNames && extension.altNames[0]) { value = extension.altNames[0].value; } var value = (value || "").trim(); /* \u00C0-\u00FF Latin-1 Supplement \u0100-\u017F Latin Extended-A \u0180-\u024F Latin Extended-B \u1E00-\u1EFF Latin Extended Additional */ if (!/[a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u024F]|[0-9]/.test(value[0])) return value.substring(1); return value; }