blob: b38869a9ba8db59b688fc013ede1ecbf93b47e58 [file] [log] [blame]
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');