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.

47 lines (46 loc) 2.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 fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const CertificateRelatedError_1 = __importDefault(require("./CertificateRelatedError")); function Cert2p12(cert) { if ("path" in cert) { try { if (![".p12"].includes(path_1.default.extname(cert.path).toLocaleLowerCase())) throw new Error(); } catch (ex) { throw new CertificateRelatedError_1.default("invalid_cert", "Archivo inválido. Sólo se admiten archivos con extensión .p12"); } try { var arrayUint8 = fs_1.default.readFileSync(cert.path); } catch (ex) { throw new CertificateRelatedError_1.default("invalid_cert", "Archivo no se puede leer. Puede que no tenga permisos de lectura o el archivo ya no exista en esa ubicación."); } } else { arrayUint8 = cert.file; } try { var p12B64 = node_forge_1.default.util.binary.base64.encode(arrayUint8); var p12Der = node_forge_1.default.util.decode64(p12B64); var p12Asn1 = node_forge_1.default.asn1.fromDer(p12Der); var p12 = node_forge_1.default.pkcs12.pkcs12FromAsn1(p12Asn1, cert.password); return p12; } catch (ex) { if (["Unparsed DER bytes remain after ASN.1 parsing.", "Too few bytes to read ASN.1 value."].includes(ex.message)) throw new CertificateRelatedError_1.default("invalid_cert", "El certificado no puede ser leído. Puede estar corrupto."); if (["PKCS#12 MAC could not be verified. Invalid password?"].includes(ex.message)) { throw new CertificateRelatedError_1.default("wrong_password"); } throw ex; } } exports.default = Cert2p12;