diff options
Diffstat (limited to 'src/utils/letsEncryptCerts.js')
-rw-r--r-- | src/utils/letsEncryptCerts.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/utils/letsEncryptCerts.js b/src/utils/letsEncryptCerts.js new file mode 100644 index 0000000..4a639e7 --- /dev/null +++ b/src/utils/letsEncryptCerts.js @@ -0,0 +1,32 @@ +// Semisol was here +let certificates = [ + "ISRGRootX1.cer" +] // Certificate names +const + JKeyStore = Java.type("java.security.KeyStore"), + JPaths = Java.type("java.nio.file.Paths"), + JSystem = Java.type("java.lang.System"), + JFiles = Java.type("java.nio.file.Files"), + JCertificateFactory = Java.type("java.security.cert.CertificateFactory"), + JString = Java.type("java.lang.String"), + JByteArrayInputStream = Java.type("java.io.ByteArrayInputStream"), + JTrustManagerFactory = Java.type("javax.net.ssl.TrustManagerFactory"), + JSSLContext = Java.type("javax.net.ssl.SSLContext") +let keyStore = JKeyStore.getInstance(JKeyStore.getDefaultType()) +let ksPath = JPaths.get(JSystem.getProperty("java.home"), "lib", "security", "cacerts") +keyStore.load(JFiles.newInputStream(ksPath), new JString("changeit").toCharArray()) +let cf = JCertificateFactory.getInstance("X.509") +for (let i of certificates) { + let pathStr = `${Config.modulesFolder}/SoopyV2/utils/certs/${i}` + let path = JPaths.get(pathStr) + let data = JFiles.readAllBytes(path) + let cert = cf.generateCertificate(new JByteArrayInputStream(data)) + keyStore.setCertificateEntry("dev.semisol.letsencryptsupport:" + i, cert) +} +let tmf = JTrustManagerFactory.getInstance(JTrustManagerFactory.getDefaultAlgorithm()) +tmf.init(keyStore) +let sslContext = JSSLContext.getInstance("TLS") +sslContext.init(null, tmf.getTrustManagers(), null); +JSSLContext.setDefault(sslContext) +let socketFactory = sslContext.getSocketFactory() +export { socketFactory as default }; |