summaryrefslogtreecommitdiff
path: root/alarm/node_modules/node-forge/tests/heartbleed.js
diff options
context:
space:
mode:
Diffstat (limited to 'alarm/node_modules/node-forge/tests/heartbleed.js')
-rw-r--r--alarm/node_modules/node-forge/tests/heartbleed.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/alarm/node_modules/node-forge/tests/heartbleed.js b/alarm/node_modules/node-forge/tests/heartbleed.js
new file mode 100644
index 0000000..b38869a
--- /dev/null
+++ b/alarm/node_modules/node-forge/tests/heartbleed.js
@@ -0,0 +1,55 @@
+var forge = require('../js/forge');
+var net = require('net');
+
+var socket = new net.Socket();
+
+var client = forge.tls.createConnection({
+ server: false,
+ verify: function(connection, verified, depth, certs) {
+ // skip verification for testing
+ return true;
+ },
+ connected: function(connection) {
+ // heartbleeds 2k
+ console.log('[tls] connected');
+ connection.prepareHeartbeatRequest('', 2048);
+ setTimeout(function() {
+ client.close();
+ }, 1000);
+ },
+ tlsDataReady: function(connection) {
+ // encrypted data is ready to be sent to the server
+ var data = connection.tlsData.getBytes();
+ socket.write(data, 'binary');
+ },
+ dataReady: function(connection) {
+ // clear data from the server is ready
+ var data = connection.data.getBytes();
+ console.log('[tls] received from the server: ' + data);
+ },
+ heartbeatReceived: function(c, payload) {
+ console.log('Heartbleed:\n' + payload.toHex());
+ client.close();
+ },
+ closed: function() {
+ console.log('[tls] disconnected');
+ socket.end();
+ },
+ error: function(connection, error) {
+ console.log('[tls] error', error);
+ }
+});
+
+socket.on('connect', function() {
+ console.log('[socket] connected');
+ client.handshake();
+});
+socket.on('data', function(data) {
+ client.process(data.toString('binary'));
+});
+socket.on('end', function() {
+ console.log('[socket] disconnected');
+});
+
+// connect
+socket.connect(443, 'yahoo.com');