UNPKG

electron-root-ssl-pinning

Version:
65 lines (64 loc) 2.28 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const n_readlines_1 = __importDefault(require("n-readlines")); function parsePemFile(pathname) { checkFileExistence(pathname); const rootCertificatesList = []; const lineReader = new n_readlines_1.default(pathname); let iteration; do { iteration = findAndReadCertificate(lineReader); if (typeof iteration.result === "string") { rootCertificatesList.push(iteration.result); } } while (iteration.isEnd === false); if (rootCertificatesList.length === 0) { throw new Error(`File ${pathname} does not contain any certificates`); } return rootCertificatesList; } exports.parsePemFile = parsePemFile; function checkFileExistence(pathname) { const error = new Error(`File '${pathname}' does not exist. Please check correct pathname to your root CA '*.pem' file.`); if (!pathname) { throw error; } const result = fs_1.default.existsSync(pathname); if (result === false) { throw error; } } exports.checkFileExistence = checkFileExistence; function findAndReadCertificate(lineReader) { let currentLine; let currentString; let certificate = ""; do { currentLine = lineReader.next(); if (currentLine === false) { return { result: undefined, isEnd: true }; } currentString = currentLine.toString("ascii"); } while (!currentString.startsWith("-----BEGIN CERTIFICATE-----")); updateCertificateString(); do { currentLine = lineReader.next(); if (currentLine === false) { return { result: undefined, isEnd: true }; } currentString = currentLine.toString("ascii"); updateCertificateString(); } while (!currentString.startsWith("-----END CERTIFICATE-----")); return { result: certificate.trim(), isEnd: false, }; function updateCertificateString() { certificate += currentString.trim() + "\n"; } } exports.findAndReadCertificate = findAndReadCertificate;