UNPKG

@hazae41/x509

Version:

Zero-copy X.509 certificates in pure modern TypeScript

51 lines (48 loc) 1.53 kB
import { Base64 } from '@hazae41/base64'; var PEM; (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.decodePaddedOrThrow(body); } PEM.decodeOrThrow = decodeOrThrow; function encodeOrThrow(bytes) { let result = `${PEM.header}\n`; let body = Base64.encodePaddedOrThrow(bytes); while (body) { result += `${body.slice(0, 64)}\n`; body = body.slice(64); } result += `${PEM.footer}\n`; return result; } PEM.encodeOrThrow = encodeOrThrow; })(PEM || (PEM = {})); export { PEM }; //# sourceMappingURL=pem.mjs.map