summaryrefslogtreecommitdiff
path: root/benchmark/crypto/keygen.js
blob: 264253253aca1a68080b6d3dfa5820f2720864c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
'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);
}