'use strict'; const common = require('../common'); if (!common.hasCrypto) { common.skip('missing crypto'); } const assert = require('assert'); const { generateKeyPair } = require('crypto'); if (common.isWindows) { // Remove this conditional once the libuv change is in Node.js. common.skip('crashing due to https://github.com/libuv/libuv/pull/2983'); } // Regression test for a race condition: process.exit() might lead to OpenSSL // cleaning up state from the exit() call via calling its destructor, but // running OpenSSL operations on another thread might lead to them attempting // to initialize OpenSSL, leading to a crash. // This test crashed consistently on x64 Linux on Node v14.9.0. generateKeyPair('rsa', { modulusLength: 2048, privateKeyEncoding: { type: 'pkcs1', format: 'pem' } }, (err/* , publicKey, privateKey */) => { assert.ifError(err); }); setTimeout(() => process.exit(), common.platformTimeout(10));