summaryrefslogtreecommitdiff
path: root/school/node_modules/node-forge/tests/aes-speed.js
diff options
context:
space:
mode:
Diffstat (limited to 'school/node_modules/node-forge/tests/aes-speed.js')
-rw-r--r--school/node_modules/node-forge/tests/aes-speed.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/school/node_modules/node-forge/tests/aes-speed.js b/school/node_modules/node-forge/tests/aes-speed.js
new file mode 100644
index 0000000..2049a8a
--- /dev/null
+++ b/school/node_modules/node-forge/tests/aes-speed.js
@@ -0,0 +1,62 @@
+var forge = require('../js/forge');
+
+console.log('Times in 1000s of bytes/sec processed.');
+
+aes_128('AES-CBC');
+aes_128('AES-CFB');
+aes_128('AES-OFB');
+aes_128('AES-CTR');
+aes_128('AES-GCM');
+
+function aes_128(algorithm) {
+ console.log('Running ' + algorithm + ' for 5 seconds...');
+
+ var size = 1024;
+ var key = forge.random.getBytesSync(16);
+ var iv = forge.random.getBytes(algorithm === 'AES-GCM' ? 12 : 16);
+ var plain = forge.random.getBytesSync(size);
+
+ // run for 5 seconds
+ var start = new Date().getTime();
+
+ var now;
+ var totalEncrypt = 0;
+ var totalDecrypt = 0;
+ var cipher;
+ var count = 0;
+ var passed = 0;
+ while(passed < 5000) {
+ var input = forge.util.createBuffer(plain);
+
+ // encrypt, only measuring update() and finish()
+ cipher = forge.cipher.createCipher(algorithm, key);
+ cipher.start({iv: iv});
+ now = new Date().getTime();
+ cipher.update(input);
+ cipher.finish();
+ totalEncrypt += new Date().getTime() - now;
+
+ var ciphertext = cipher.output;
+ var tag = cipher.mode.tag;
+ count += cipher.output.length();
+
+ // decrypt, only measuring update() and finish()
+ cipher = forge.cipher.createDecipher(algorithm, key);
+ cipher.start({iv: iv, tag: tag});
+ now = new Date().getTime();
+ cipher.update(ciphertext);
+ if(!cipher.finish()) {
+ throw new Error('Decryption error.');
+ }
+ totalDecrypt += new Date().getTime() - now;
+
+ passed = new Date().getTime() - start;
+ }
+
+ count = count / 1000;
+ totalEncrypt /= 1000;
+ totalDecrypt /= 1000;
+ console.log('encrypt: ' + (count / totalEncrypt) + ' k/sec');
+ console.log('decrypt: ' + (count / totalDecrypt) + ' k/sec');
+ console.log();
+}