UNPKG

@hazae41/x509

Version:

Zero-copy X.509 certificates in pure modern TypeScript

1 lines 2.86 kB
{"version":3,"file":"pem.cjs","sources":["../../../../src/mods/pem/pem.ts"],"sourcesContent":["import { Base64 } from \"@hazae41/base64\"\n\nexport namespace PEM {\n export const header = `-----BEGIN CERTIFICATE-----`\n export const footer = `-----END CERTIFICATE-----`\n\n export class MissingHeaderError extends Error {\n readonly #class = MissingHeaderError\n readonly name = this.#class.name\n\n constructor() {\n super(`Missing PEM header`)\n }\n }\n\n export class MissingFooterError extends Error {\n readonly #class = MissingFooterError\n readonly name = this.#class.name\n\n constructor() {\n super(`Missing PEM footer`)\n }\n }\n\n export function decodeOrThrow(text: string): Uint8Array<ArrayBuffer> {\n text = text.replaceAll(`\\n`, ``)\n\n if (!text.startsWith(header))\n throw new MissingHeaderError()\n if (!text.endsWith(footer))\n throw new MissingFooterError()\n\n const body = text.slice(header.length, -footer.length)\n\n return Base64.decodePaddedOrThrow(body)\n }\n\n export function encodeOrThrow(bytes: Uint8Array): string {\n let result = `${header}\\n`\n\n let body = Base64.encodePaddedOrThrow(bytes)\n\n while (body) {\n result += `${body.slice(0, 64)}\\n`\n body = body.slice(64)\n }\n\n result += `${footer}\\n`\n\n return result\n }\n}\n"],"names":["PEM","Base64"],"mappings":";;;;AAEiBA;AAAjB,CAAA,UAAiB,GAAG,EAAA;;IACL,GAAA,CAAA,MAAM,GAAG,6BAA6B;IACtC,GAAA,CAAA,MAAM,GAAG,2BAA2B;IAEjD,MAAa,kBAAmB,SAAQ,KAAK,CAAA;QAClC,MAAM,GAAG,EAAkB;AAC3B,QAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AAEhC,QAAA,WAAA,GAAA;YACE,KAAK,CAAC,CAAA,kBAAA,CAAoB,CAAC;QAC7B;AACD;;AAPY,IAAA,GAAA,CAAA,kBAAkB,qBAO9B;IAED,MAAa,kBAAmB,SAAQ,KAAK,CAAA;QAClC,MAAM,GAAG,EAAkB;AAC3B,QAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AAEhC,QAAA,WAAA,GAAA;YACE,KAAK,CAAC,CAAA,kBAAA,CAAoB,CAAC;QAC7B;AACD;;AAPY,IAAA,GAAA,CAAA,kBAAkB,qBAO9B;IAED,SAAgB,aAAa,CAAC,IAAY,EAAA;QACxC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA,EAAA,CAAI,EAAE,CAAA,CAAE,CAAC;AAEhC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAA,CAAA,MAAM,CAAC;YAC1B,MAAM,IAAI,kBAAkB,EAAE;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAA,CAAA,MAAM,CAAC;YACxB,MAAM,IAAI,kBAAkB,EAAE;AAEhC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAA,CAAA,MAAM,CAAC,MAAM,EAAE,CAAC,GAAA,CAAA,MAAM,CAAC,MAAM,CAAC;AAEtD,QAAA,OAAOC,aAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC;IACzC;AAXgB,IAAA,GAAA,CAAA,aAAa,gBAW5B;IAED,SAAgB,aAAa,CAAC,KAAiB,EAAA;AAC7C,QAAA,IAAI,MAAM,GAAG,CAAA,EAAG,GAAA,CAAA,MAAM,IAAI;QAE1B,IAAI,IAAI,GAAGA,aAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAE5C,OAAO,IAAI,EAAE;YACX,MAAM,IAAI,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,EAAA,CAAI;AAClC,YAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB;AAEA,QAAA,MAAM,IAAI,CAAA,EAAG,GAAA,CAAA,MAAM,IAAI;AAEvB,QAAA,OAAO,MAAM;IACf;AAbgB,IAAA,GAAA,CAAA,aAAa,gBAa5B;AACH,CAAC,EAjDgBD,WAAG,KAAHA,WAAG,GAAA,EAAA,CAAA,CAAA;;"}