'use strict'; const common = require('../common.js'); const assert = require('assert'); const { generateKeyPair, generateKeyPairSync, } = require('crypto'); const bench = common.createBenchmark(main, { method: ['rsaSync', 'rsaAsync', 'dsaSync', 'dsaAsync'], n: [1e2], }); const methods = { rsaSync(n) { bench.start(); for (let i = 0; i < n; ++i) { generateKeyPairSync('rsa', { modulusLength: 1024, publicExponent: 0x10001, }); } bench.end(n); }, rsaAsync(n) { let remaining = n; function done(err) { assert.ifError(err); if (--remaining === 0) bench.end(n); } bench.start(); for (let i = 0; i < n; ++i) generateKeyPair('rsa', { modulusLength: 512, publicExponent: 0x10001, }, done); }, dsaSync(n) { bench.start(); for (let i = 0; i < n; ++i) { generateKeyPairSync('dsa', { modulusLength: 1024, divisorLength: 160, }); } bench.end(n); }, dsaAsync(n) { let remaining = n; function done(err) { assert.ifError(err); if (--remaining === 0) bench.end(n); } bench.start(); for (let i = 0; i < n; ++i) generateKeyPair('dsa', { modulusLength: 1024, divisorLength: 160, }, done); }, }; function main({ n, method }) { methods[method](n); }