• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common');
3if (!common.hasCrypto) { common.skip('missing crypto'); }
4const assert = require('assert');
5const { generateKeyPair } = require('crypto');
6
7if (common.isWindows) {
8  // Remove this conditional once the libuv change is in Node.js.
9  common.skip('crashing due to https://github.com/libuv/libuv/pull/2983');
10}
11
12// Regression test for a race condition: process.exit() might lead to OpenSSL
13// cleaning up state from the exit() call via calling its destructor, but
14// running OpenSSL operations on another thread might lead to them attempting
15// to initialize OpenSSL, leading to a crash.
16// This test crashed consistently on x64 Linux on Node v14.9.0.
17
18generateKeyPair('rsa', {
19  modulusLength: 2048,
20  privateKeyEncoding: {
21    type: 'pkcs1',
22    format: 'pem'
23  }
24}, (err/* , publicKey, privateKey */) => {
25  assert.ifError(err);
26});
27
28setTimeout(() => process.exit(), common.platformTimeout(10));
29