UNPKG

@hazae41/x509

Version:

Zero-copy X.509 certificates in pure modern TypeScript

51 lines (48 loc) 1.57 kB
'use strict'; var base64 = require('@hazae41/base64'); exports.PEM = void 0; (function (PEM) { var _a, _b; PEM.header = `-----BEGIN CERTIFICATE-----`; PEM.footer = `-----END CERTIFICATE-----`; class MissingHeaderError extends Error { #class = _a; name = this.#class.name; constructor() { super(`Missing PEM header`); } } _a = MissingHeaderError; PEM.MissingHeaderError = MissingHeaderError; class MissingFooterError extends Error { #class = _b; name = this.#class.name; constructor() { super(`Missing PEM footer`); } } _b = MissingFooterError; PEM.MissingFooterError = MissingFooterError; function decodeOrThrow(text) { text = text.replaceAll(`\n`, ``); if (!text.startsWith(PEM.header)) throw new MissingHeaderError(); if (!text.endsWith(PEM.footer)) throw new MissingFooterError(); const body = text.slice(PEM.header.length, -PEM.footer.length); return base64.Base64.decodePaddedOrThrow(body); } PEM.decodeOrThrow = decodeOrThrow; function encodeOrThrow(bytes) { let result = `${PEM.header}\n`; let body = base64.Base64.encodePaddedOrThrow(bytes); while (body) { result += `${body.slice(0, 64)}\n`; body = body.slice(64); } result += `${PEM.footer}\n`; return result; } PEM.encodeOrThrow = encodeOrThrow; })(exports.PEM || (exports.PEM = {})); //# sourceMappingURL=pem.cjs.map