diff --git a/desktop/flipper-server-core/src/utils/CertificateProvider.tsx b/desktop/flipper-server-core/src/utils/CertificateProvider.tsx index b477c8a4b..8ed5cf20f 100644 --- a/desktop/flipper-server-core/src/utils/CertificateProvider.tsx +++ b/desktop/flipper-server-core/src/utils/CertificateProvider.tsx @@ -173,7 +173,7 @@ export default class CertificateProvider { if (csr === '') { return Promise.reject(new Error(`Received empty CSR from ${os} device`)); } - this.ensureOpenSSLIsAvailable(); + await this.ensureOpenSSLIsAvailable(); const rootFolder = await promisify(tmp.dir)(); const certFolder = rootFolder + '/FlipperCerts/'; const certsZipPath = rootFolder + '/certs.zip'; @@ -249,8 +249,8 @@ export default class CertificateProvider { return Promise.resolve('unknown'); } - private ensureOpenSSLIsAvailable(): void { - if (!opensslInstalled()) { + private async ensureOpenSSLIsAvailable(): Promise { + if (!(await opensslInstalled())) { const e = Error( "It looks like you don't have OpenSSL installed. Please install it to continue.", ); diff --git a/desktop/flipper-server-core/src/utils/openssl-wrapper-with-promises.tsx b/desktop/flipper-server-core/src/utils/openssl-wrapper-with-promises.tsx index df07004ac..93ca843e4 100644 --- a/desktop/flipper-server-core/src/utils/openssl-wrapper-with-promises.tsx +++ b/desktop/flipper-server-core/src/utils/openssl-wrapper-with-promises.tsx @@ -8,7 +8,7 @@ */ import {exec as opensslWithCallback, Action} from 'openssl-wrapper'; -import child_process from 'child_process'; +import {spawn} from 'promisify-child-process'; export function openssl(action: Action, options: {}): Promise { return new Promise((resolve, reject) => { @@ -22,6 +22,11 @@ export function openssl(action: Action, options: {}): Promise { }); } -export function isInstalled(): boolean { - return !child_process.spawnSync('openssl', ['version']).error; +export async function isInstalled(): Promise { + try { + const result = await spawn('openssl', ['version']); + return result.code === 0; + } catch (_e) { + return false; + } }