@evervault/sdk
Advanced tools
Comparing version 1.10.2 to 1.10.3
@@ -5,2 +5,4 @@ const crypto = require('crypto'); | ||
const retry = require('async-retry'); | ||
const { X509Certificate } = require('crypto'); | ||
const { Buffer } = require('buffer'); | ||
@@ -78,3 +80,8 @@ const HttpsProxyAgent = require('./utils/proxyAgent'); | ||
const initializationPromise = this.http.getCert().then((pem) => { | ||
let x509 = null; | ||
async function updateCertificate() { | ||
const pem = await this.http.getCert(); | ||
let cert = pem.toString(); | ||
x509 = new X509Certificate(cert); | ||
tls.createSecureContext = (options) => { | ||
@@ -85,4 +92,15 @@ const context = origCreateSecureContext(options); | ||
}; | ||
}); | ||
} | ||
function isCertificateInvalid() { | ||
if (!Datatypes.isDefined(x509)) { | ||
return true; | ||
} | ||
const epoch = new Date().valueOf(); | ||
return ( | ||
epoch > new Date(x509.validTo).valueOf() || | ||
epoch < new Date(x509.validFrom).valueOf() | ||
); | ||
} | ||
function wrapMethodRequest(...args) { | ||
@@ -94,3 +112,4 @@ const ignore = isIgnoreRequest(args); | ||
tunnelHostname, | ||
initializationPromise | ||
updateCertificate, | ||
isCertificateInvalid | ||
); | ||
@@ -97,0 +116,0 @@ arg.headers = { ...arg.headers, 'Proxy-Authorization': apiKey }; |
@@ -22,3 +22,3 @@ const net = require('net'); | ||
class HttpsProxyAgent extends Agent { | ||
constructor(_opts, initializationPromise) { | ||
constructor(_opts, updateCertificateCallback, isCertificateInvalidCallback) { | ||
let opts; | ||
@@ -67,5 +67,4 @@ if (typeof _opts === 'string') { | ||
if (initializationPromise) { | ||
this.initializationPromise = initializationPromise; | ||
} | ||
this._updateCertificateCallback = updateCertificateCallback; | ||
this._isCertificateInvalidCallback = isCertificateInvalidCallback; | ||
@@ -85,4 +84,8 @@ this.proxy = proxy; | ||
// Wait until the proxy is ready to initialize | ||
if (this.initializationPromise instanceof Promise) { | ||
await this.initializationPromise; | ||
if ( | ||
isFunction(this._isCertificateInvalidCallback) && | ||
this._isCertificateInvalidCallback() && | ||
isFunction(this._updateCertificateCallback) | ||
) { | ||
await this._updateCertificateCallback(); | ||
} | ||
@@ -176,2 +179,6 @@ | ||
function isFunction(value) { | ||
return typeof value === 'function'; | ||
} | ||
function resume(socket) { | ||
@@ -178,0 +185,0 @@ socket.resume(); |
{ | ||
"name": "@evervault/sdk", | ||
"version": "1.10.2", | ||
"version": "1.10.3", | ||
"description": "Node.js SDK for Evervault", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
42600
1148