Skip to content

Commit 6b3c90c

Browse files
author
Shigeki Ohtsu
committed
benchmark: add rsa/aes-gcm performance test
1 parent 12f72b5 commit 6b3c90c

10 files changed

+314
-1
lines changed
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
var common = require('../common.js');
2+
var crypto = require('crypto');
3+
var keylen = {'aes-128-gcm': 16, 'aes-192-gcm': 24, 'aes-256-gcm': 32};
4+
var bench = common.createBenchmark(main, {
5+
n: [500],
6+
cipher: ['aes-128-gcm', 'aes-192-gcm', 'aes-256-gcm'],
7+
len: [1024, 4 * 1024, 16 * 1024, 64 * 1024, 256 * 1024, 1024 * 1024]
8+
});
9+
10+
function main(conf) {
11+
var message = (new Buffer(conf.len)).fill('b');
12+
var key = crypto.randomBytes(keylen[conf.cipher]);
13+
var iv = crypto.randomBytes(12);
14+
var associate_data = (new Buffer(16)).fill('z');
15+
bench.start();
16+
AEAD_Bench(conf.cipher, message, associate_data, key, iv, conf.n, conf.len);
17+
}
18+
19+
function AEAD_Bench(cipher, message, associate_data, key, iv, n, len) {
20+
var written = n * len;
21+
var bits = written * 8;
22+
var mbits = bits / (1024 * 1024);
23+
24+
for (var i = 0; i < n; i++) {
25+
var alice = crypto.createCipheriv(cipher, key, iv);
26+
alice.setAAD(associate_data);
27+
var enc = alice.update(message);
28+
alice.final();
29+
var tag = alice.getAuthTag();
30+
var bob = crypto.createDecipheriv(cipher, key, iv);
31+
bob.setAuthTag(tag);
32+
bob.setAAD(associate_data);
33+
var clear = bob.update(enc);
34+
bob.final();
35+
}
36+
37+
bench.end(mbits);
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// throughput benchmark in signing and verifying
2+
var common = require('../common.js');
3+
var crypto = require('crypto');
4+
var fs = require('fs');
5+
var path = require('path');
6+
var fixtures_keydir = path.resolve(__dirname, '../../test/fixtures/keys/');
7+
var keylen_list = ['1024', '2048', '4096'];
8+
var RSA_PublicPem = {};
9+
var RSA_PrivatePem = {};
10+
11+
keylen_list.forEach(function(key) {
12+
RSA_PublicPem[key] = fs.readFileSync(fixtures_keydir +
13+
'/rsa_public_' + key + '.pem');
14+
RSA_PrivatePem[key] = fs.readFileSync(fixtures_keydir +
15+
'/rsa_private_' + key + '.pem');
16+
});
17+
18+
var bench = common.createBenchmark(main, {
19+
n: [500],
20+
keylen: keylen_list,
21+
len: [16, 32, 64]
22+
});
23+
24+
function main(conf) {
25+
var crypto = require('crypto');
26+
var message = (new Buffer(conf.len)).fill('b');
27+
28+
bench.start();
29+
StreamWrite(conf.algo, conf.keylen, message, conf.n, conf.len);
30+
}
31+
32+
function StreamWrite(algo, keylen, message, n, len) {
33+
var written = n * len;
34+
var bits = written * 8;
35+
var kbits = bits / (1024);
36+
37+
var privateKey = RSA_PrivatePem[keylen];
38+
var publicKey = RSA_PublicPem[keylen];
39+
for (var i = 0; i < n; i++) {
40+
var enc = crypto.privateEncrypt(privateKey, message);
41+
var clear = crypto.publicDecrypt(publicKey, enc);
42+
}
43+
44+
bench.end(kbits);
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// throughput benchmark in signing and verifying
2+
var common = require('../common.js');
3+
var crypto = require('crypto');
4+
var fs = require('fs');
5+
var path = require('path');
6+
var fixtures_keydir = path.resolve(__dirname, '../../test/fixtures/keys/');
7+
var keylen_list = ['1024', '2048'];
8+
var RSA_PublicPem = {};
9+
var RSA_PrivatePem = {};
10+
11+
keylen_list.forEach(function(key) {
12+
RSA_PublicPem[key] = fs.readFileSync(fixtures_keydir +
13+
'/rsa_public_' + key + '.pem');
14+
RSA_PrivatePem[key] = fs.readFileSync(fixtures_keydir +
15+
'/rsa_private_' + key + '.pem');
16+
});
17+
18+
var bench = common.createBenchmark(main, {
19+
writes: [500],
20+
algo: ['RSA-SHA1', 'RSA-SHA224', 'RSA-SHA256', 'RSA-SHA384', 'RSA-SHA512'],
21+
keylen: keylen_list,
22+
len: [1024, 102400, 2 * 102400, 3 * 102400, 1024 * 1024]
23+
});
24+
25+
function main(conf) {
26+
var crypto = require('crypto');
27+
var message = (new Buffer(conf.len)).fill('b');
28+
29+
bench.start();
30+
StreamWrite(conf.algo, conf.keylen, message, conf.writes, conf.len);
31+
}
32+
33+
function StreamWrite(algo, keylen, message, writes, len) {
34+
var written = writes * len;
35+
var bits = written * 8;
36+
var kbits = bits / (1024);
37+
38+
var privateKey = RSA_PrivatePem[keylen];
39+
var publicKey = RSA_PublicPem[keylen];
40+
var s = crypto.createSign(algo);
41+
var v = crypto.createVerify(algo);
42+
43+
while (writes-- > 0) {
44+
s.update(message);
45+
v.update(message);
46+
}
47+
48+
var sign = s.sign(privateKey, 'binary');
49+
s.end();
50+
v.end();
51+
52+
bench.end(kbits);
53+
}

test/fixtures/keys/Makefile

+19-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
all: agent1-cert.pem agent2-cert.pem agent3-cert.pem agent4-cert.pem agent5-cert.pem ca2-crl.pem ec-cert.pem dh512.pem dh1024.pem dh2048.pem
1+
all: agent1-cert.pem agent2-cert.pem agent3-cert.pem agent4-cert.pem agent5-cert.pem ca2-crl.pem ec-cert.pem dh512.pem dh1024.pem dh2048.pem rsa_private_1024.pem rsa_private_2048.pem rsa_private_4096.pem rsa_public_1024.pem rsa_public_2048.pem rsa_public_4096.pem
22

33

44
#
@@ -179,6 +179,24 @@ dh1024.pem:
179179
dh2048.pem:
180180
openssl dhparam -out dh2048.pem 2048
181181

182+
rsa_private_1024.pem:
183+
openssl genrsa -out rsa_private_1024.pem 1024
184+
185+
rsa_private_2048.pem:
186+
openssl genrsa -out rsa_private_2048.pem 2048
187+
188+
rsa_private_4096.pem:
189+
openssl genrsa -out rsa_private_4096.pem 4096
190+
191+
rsa_public_1024.pem: rsa_private_1024.pem
192+
openssl rsa -in rsa_private_1024.pem -out rsa_public_1024.pem
193+
194+
rsa_public_2048.pem: rsa_private_2048.pem
195+
openssl rsa -in rsa_private_2048.pem -out rsa_public_2048.pem
196+
197+
rsa_public_4096.pem: rsa_private_4096.pem
198+
openssl rsa -in rsa_private_4096.pem -out rsa_public_4096.pem
199+
182200
clean:
183201
rm -f *.pem *.srl ca2-database.txt ca2-serial
184202

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIICXQIBAAKBgQDOF+YjZgVg8yGFS+++0WVcTKms1Wl2Lbnzj7jWOPyZnXxww7cE
3+
afiL3QI2RZCiVwBcueUejCbzT5iLrsWceryOCHZE4nQ5IOEYCpPzWw6oTfSM7HV0
4+
axQEpSzJFp20NJV9pVvBmSrrrdlGaDwHY1nlGVB3s2CKTAVxcKWoD6FhVQIDAQAB
5+
AoGBAIoz5JRgWcMFx7jHj2H6sWoPzsij5DDnwQbfniep11p8DXLhC93d4lqIPm9+
6+
ftseVJPZ5RdzDLuk6Lri3IlulPnEeJZrfYQVlfge6N9swQ54j3wRGEBjcP+7pu7Q
7+
nQ5FpOyJqQWWMUinf+o1bEkClIBPTY4x8pIoCM09wSvD9weRAkEA/hWym3rDwrcu
8+
pKvb1VgWZtrrCv5m+2Dk5V7qA+9sUyI9Lq9dlklNMcbuJXCy8Evd2Q3EMySYQGVc
9+
cXEKkeKefwJBAM+ll95tMX/YDEYAtOf3stz59rC4EyuD2kOZJt0dPj3vApYYq9+0
10+
Wnd0c8VOzJGjpVI21SY+fA+doMiZVVjSPisCQCD0R3oK7iDvCUmqUJTXG/CzLBD8
11+
9fZcltN4//kKsI4Hvs+zRvwa/bwbBQAuIccwz9E7C9tmP6j6fIbqFmjdb5kCQCJI
12+
MJ6kYHu+66fTDgsONhWNn1Dl0yRoDG0EqAnxfgkzoLWvNREl8ZmvPD3jGJsi7XR5
13+
YQ+DWXAqkhUMW67iZykCQQCgZdOUkAWu7NsCfGSTTvrMapa5PAt/GPDzzY9JGGif
14+
p+09SVdrnphr+MX6MCnOsixPXrMtg/LLhpQkwjVetm15
15+
-----END RSA PRIVATE KEY-----
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEowIBAAKCAQEA20oG4U+MsV45A4zG0ySoavFmWmdkVtmKh1Tk9sC3V6Fu5w1v
3+
44lZDa57n+ghEA9Y4txUVQzm3TppwBFqUB2bBZrAhAjmjiPxjECGTV7ABaAQyihJ
4+
R0F2LL1KmdlduFXACvNCfIseBoOY6K49vrW3/rVC1gBQ6/S3K6jECjGAvOyUcIAv
5+
ch0YpW68v12AOUMI+CpzRQdMv6akbOVt5Qtg1vIvv0lIuirYcq9MWS++oFvHrxzX
6+
qAiAfgc0truwbW5Lz2w7Wcy0pBYeVW6HvBFPwUEV/2rn+RHrbgE9yQ+p4gDkdfHV
7+
yuMx21Mf449UwQUuI3HZ4BPqmyWkwSEYsfVYMQIDAQABAoIBAA9GT8Zf+SfdrVD+
8+
/FZ2xjh0yjFf5FBcZNbaZfx+Hgc/mm8Ds5iA17ApSDkyPSNWPlXHDSTDek1MpVMY
9+
o3QjK8ovJlvMFustu8SONgyrneqGZMUAG2KYP7gME2c2Cd4uMutQWIA+XIANqJgE
10+
kw52r/NRAu/PI9PbvuqOneEr45DFNNfu7RUsyewfrd07+xeDzqyMZFizjgZS8pyF
11+
eu9jVo/4T64tT24+oTVn1O3sSn4DL0oh3IvTyv7jVDHP5QqjvY7scSSva5VPqXQI
12+
9kkdzm0ECUqEAxwwn8EmyogrMJJYIKBmuFYxl3rYAY19hNVsMafmnlHxjSgv3n8h
13+
LjnnPLECgYEA/bZy7NtfPrHWBQvSpUPyge7ykfOwOoNYHY0OJcw/MGjNbk6d6ZOv
14+
3/gpGNO90iJkBI5cMXOgtOe0Nj1dkkSy9C81jd3JzR9mrK9Id8sJcUw2XpN1IKcE
15+
w89tcf1tmvP/st6dY3RDHARIPjNvQfcWkzT0uDJmf8cihS3MeWcPi2UCgYEA3UQh
16+
gPFfTAVW/mvwOkO37SK6/5hXbE4V1bHoP3fWAXmXO3C53K4FAuhErq8nw6ZOf9DG
17+
jjhskmeXoUNb06gLBO2okfFL9ccDS4hKm5LQJvolrFfd6PTc/HOIxCvEj7aA4w0T
18+
d0c1KUZjS7SNL0e3I4jNbJF6GXjwTHBMo5se2t0CgYEA2F7Hpi30DVC2l/kcPOs0
19+
nxD79/LeIRiwhgssvJlybkOCpwcO7wuPmy9VRSIXKWVA7Q3HnDjjHkTYUMWGzl4e
20+
S9cTEhjKqE+WTcDyyY7zT5dSatfQtPcbPi7hRKx/0/0w3QezLAUT0onoXnuY76Xc
21+
r9AiwA/jkCdwzilfz01QWW0CgYAUHmjJd6kJmYaydZAPTC8CIeFM8kYos+TqXFXY
22+
x4Wu9qZYokRUG4KbJBFyrLx53rpOhuY28kx093RjFmPYF/SAizeDpaQZgfH7wTW/
23+
dZb1pFMem5Ky5ujdD4hFBhHGW3rWqk61zsS3rw3CSXV48hVl5r9++q9Wd5ep66Ac
24+
VDN3BQKBgGMkPiQ5YuhVG3zEYM/4zgW7zCEuDyocqXkv5nJGW3JxPDBuJhLbwQ8F
25+
RqawaRhuIQZtKnbN7JIGLFYYx+LkUlj7bbkzz6iaHHBtiDqz4/bHEL3q02DpAyJR
26+
koWbtKIbZfS0Zno3OoGdYyvwXYaaE3Q3DJOc+NUmMKhlAhcAkjQv
27+
-----END RSA PRIVATE KEY-----
+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
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
51+
-----END RSA PRIVATE KEY-----
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
-----BEGIN PUBLIC KEY-----
2+
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOF+YjZgVg8yGFS+++0WVcTKms
3+
1Wl2Lbnzj7jWOPyZnXxww7cEafiL3QI2RZCiVwBcueUejCbzT5iLrsWceryOCHZE
4+
4nQ5IOEYCpPzWw6oTfSM7HV0axQEpSzJFp20NJV9pVvBmSrrrdlGaDwHY1nlGVB3
5+
s2CKTAVxcKWoD6FhVQIDAQAB
6+
-----END PUBLIC KEY-----
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-----BEGIN PUBLIC KEY-----
2+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA20oG4U+MsV45A4zG0ySo
3+
avFmWmdkVtmKh1Tk9sC3V6Fu5w1v44lZDa57n+ghEA9Y4txUVQzm3TppwBFqUB2b
4+
BZrAhAjmjiPxjECGTV7ABaAQyihJR0F2LL1KmdlduFXACvNCfIseBoOY6K49vrW3
5+
/rVC1gBQ6/S3K6jECjGAvOyUcIAvch0YpW68v12AOUMI+CpzRQdMv6akbOVt5Qtg
6+
1vIvv0lIuirYcq9MWS++oFvHrxzXqAiAfgc0truwbW5Lz2w7Wcy0pBYeVW6HvBFP
7+
wUEV/2rn+RHrbgE9yQ+p4gDkdfHVyuMx21Mf449UwQUuI3HZ4BPqmyWkwSEYsfVY
8+
MQIDAQAB
9+
-----END PUBLIC KEY-----
+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
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
51+
-----END RSA PRIVATE KEY-----

0 commit comments

Comments
 (0)