mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
65 lines
1.2 KiB
JavaScript
65 lines
1.2 KiB
JavaScript
var crypto = require('crypto');
|
|
var tls = require('tls');
|
|
|
|
var secure = function(socket, options, cb)
|
|
{
|
|
var sslcontext = crypto.createCredentials(options);
|
|
//sslcontext.context.setCiphers('RC4-SHA:AES128-SHA:AES256-SHA');
|
|
|
|
var pair = tls.createSecurePair(sslcontext, false);
|
|
|
|
var cleartext = pipe(pair, socket);
|
|
|
|
pair.on('secure', function()
|
|
{
|
|
var verifyError = (pair.ssl || pair._ssl).verifyError();
|
|
|
|
if(verifyError)
|
|
{
|
|
cleartext.authorized = false;
|
|
cleartext.authorizationError = verifyError;
|
|
}
|
|
else
|
|
{
|
|
cleartext.authorized = true;
|
|
}
|
|
|
|
if (cb) cb();
|
|
});
|
|
|
|
cleartext._controlReleased = true;
|
|
return cleartext;
|
|
};
|
|
|
|
var pipe = function(pair, socket)
|
|
{
|
|
pair.encrypted.pipe(socket);
|
|
socket.pipe(pair.encrypted);
|
|
|
|
var cleartext = pair.cleartext;
|
|
cleartext.socket = socket;
|
|
cleartext.encrypted = pair.encrypted;
|
|
cleartext.authorized = false;
|
|
|
|
function onerror(e)
|
|
{
|
|
if (cleartext._controlReleased)
|
|
{
|
|
cleartext.emit('error', e);
|
|
}
|
|
}
|
|
|
|
function onclose()
|
|
{
|
|
socket.removeListener('error', onerror);
|
|
socket.removeListener('close', onclose);
|
|
}
|
|
|
|
socket.on('error', onerror);
|
|
socket.on('close', onclose);
|
|
|
|
return cleartext;
|
|
};
|
|
|
|
exports.secure = secure;
|