From 523f24c92fc00dadddf0379bce712c5e1bdfc0fa Mon Sep 17 00:00:00 2001 From: Jonathan Tamsut Date: Wed, 3 May 2023 15:14:09 -0700 Subject: [PATCH] create certificate reader --- languageserver/src/certificate-reader.ts | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 languageserver/src/certificate-reader.ts diff --git a/languageserver/src/certificate-reader.ts b/languageserver/src/certificate-reader.ts new file mode 100644 index 0000000..fae937a --- /dev/null +++ b/languageserver/src/certificate-reader.ts @@ -0,0 +1,35 @@ +export class CertificateReader { + getAllRootCAs(): string[] { + switch (process.platform) { + case "darwin": + return this.getMacOSCerts(); + case "win32": + return this.getWindowsCerts(); + default: + // We only support self-signed certs from Windows anc MacOS + return []; + } + } + + private getMacOSCerts(): string[] { + // loading modules here prevents unnecessary module loading + // see: https://stackoverflow.com/questions/9132772/lazy-loading-in-node-js + const macCa = require("@roamhq/mac-ca"); + const forge = require("node-forge"); + + return macCa.all().map((cert: any) => forge.pki.certificateToPem(cert)); + } + + private getWindowsCerts(): string[] { + const ca = require("win-ca"); + + let rootCAs: string[] = []; + + ca({ + format: ca.der2.pem, + ondata: (crt: string) => rootCAs.push(crt) + }); + + return rootCAs; + } +}