Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2010-11-20 00:28:04 +0300
committerRyan Dahl <ry@tinyclouds.org>2010-11-20 00:28:13 +0300
commit15d5378684e630e341d674c7f67aecb76bd802c6 (patch)
treee95aa6e510e9a8f466e8d64d077fd4862cb6b20b /test
parentd722c8df73f0da88b8b0ec979ae5ba417db9eba6 (diff)
Add failing test for TLS server
Diffstat (limited to 'test')
-rw-r--r--test/fixtures/agent.crt21
-rw-r--r--test/fixtures/agent.key27
-rw-r--r--test/simple/test-securepair-server.js122
3 files changed, 170 insertions, 0 deletions
diff --git a/test/fixtures/agent.crt b/test/fixtures/agent.crt
new file mode 100644
index 00000000000..5883cd44961
--- /dev/null
+++ b/test/fixtures/agent.crt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDXTCCAkWgAwIBAgIJAMUSOvlaeyQHMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
+BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
+aWRnaXRzIFB0eSBMdGQwHhcNMTAxMTE2MDkzMjQ5WhcNMTMxMTE1MDkzMjQ5WjBF
+MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
+ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAz+LXZOjcQCJq3+ZKUFabj71oo/ex/XsBcFqtBThjjTw9CVEVwfPQQp4X
+wtPiB204vnYXwQ1/R2NdTQqCZu47l79LssL/u2a5Y9+0NEU3nQA5qdt+1FAE0c5o
+exPimXOrR3GWfKz7PmZ2O0117IeCUUXPG5U8umhDe/4mDF4ZNJiKc404WthquTqg
+S7rLQZHhZ6D0EnGnOkzlmxJMYPNHSOY1/6ivdNUUcC87awNEA3lgfhy25IyBK3QJ
+c+aYKNTbt70Lery3bu2wWLFGtmNiGlQTS4JsxImRsECTI727ObS7/FWAQsqW+COL
+0Sa5BuMFrFIpjPrEe0ih7vRRbdmXRwIDAQABo1AwTjAdBgNVHQ4EFgQUDnV4d6mD
+tOnluLoCjkUHTX/n4agwHwYDVR0jBBgwFoAUDnV4d6mDtOnluLoCjkUHTX/n4agw
+DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAFwV4MQfTo+qMv9JMiyno
+IEiqfOz4RgtmBqRnXUffcjS2dhc7/z+FPZnM79Kej8eLHoVfxCyWRHFlzm93vEdv
+wxOCrD13EDOi08OOZfxWyIlCa6Bg8cMAKqQzd2OvQOWqlRWBTThBJIhWflU33izX
+Qn5GdmYqhfpc+9ZHHGhvXNydtRQkdxVK2dZNzLBvBlLlRmtoClU7xm3A+/5dddeP
+AQHEPtyFlUw49VYtZ3ru6KqPms7MKvcRhYLsy9rwSfuuniMlx4d0bDR7TOkw0QQS
+A0N8MGQRQpzl4mw4jLzyM5d5QtuGBh2P6hPGa0YQxtI3RPT/p6ENzzBiAKXiSfzo
+xw==
+-----END CERTIFICATE-----
diff --git a/test/fixtures/agent.key b/test/fixtures/agent.key
new file mode 100644
index 00000000000..f31ff3d9441
--- /dev/null
+++ b/test/fixtures/agent.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAz+LXZOjcQCJq3+ZKUFabj71oo/ex/XsBcFqtBThjjTw9CVEV
+wfPQQp4XwtPiB204vnYXwQ1/R2NdTQqCZu47l79LssL/u2a5Y9+0NEU3nQA5qdt+
+1FAE0c5oexPimXOrR3GWfKz7PmZ2O0117IeCUUXPG5U8umhDe/4mDF4ZNJiKc404
+WthquTqgS7rLQZHhZ6D0EnGnOkzlmxJMYPNHSOY1/6ivdNUUcC87awNEA3lgfhy2
+5IyBK3QJc+aYKNTbt70Lery3bu2wWLFGtmNiGlQTS4JsxImRsECTI727ObS7/FWA
+QsqW+COL0Sa5BuMFrFIpjPrEe0ih7vRRbdmXRwIDAQABAoIBAGe4+9VqZfJN+dsq
+8Osyuz01uQ8OmC0sAWTIqUlQgENIyf9rCJsUBlYmwR5BT6Z69XP6QhHdpSK+TiAR
+XUz0EqG9HYzcxHIBaACP7j6iRoQ8R4kbbiWKo0z3WqQGIOqFjvD/mKEuQdE5mEYw
+eOUCG6BnX1WY2Yr8WKd2AA/tp0/Y4d8z04u9eodMpSTbHTzYMJb5SbBN1vo6FY7q
+8zSuO0BMzXlAxUsCwHsk1GQHFr8Oh3zIR7bQGtMBouI+6Lhh7sjFYsfxJboqMTBV
+IKaA216M6ggHG7MU1/jeKcMGDmEfqQLQoyWp29rMK6TklUgipME2L3UD7vTyAVzz
+xbVOpZkCgYEA8CXW4sZBBrSSrLR5SB+Ubu9qNTggLowOsC/kVKB2WJ4+xooc5HQo
+mFhq1v/WxPQoWIxdYsfg2odlL+JclK5Qcy6vXmRSdAQ5lK9gBDKxZSYc3NwAw2HA
+zyHCTK+I0n8PBYQ+yGcrxu0WqTGnlLW+Otk4CejO34WlgHwbH9bbY5UCgYEA3ZvT
+C4+OoMHXlmICSt29zUrYiL33IWsR3/MaONxTEDuvgkOSXXQOl/8Ebd6Nu+3WbsSN
+bjiPC/JyL1YCVmijdvFpl4gjtgvfJifs4G+QHvO6YfsYoVANk4u6g6rUuBIOwNK4
+RwYxwDc0oysp+g7tPxoSgDHReEVKJNzGBe9NGGsCgYEA4O4QP4gCEA3B9BF2J5+s
+n9uPVxmiyvZUK6Iv8zP4pThTBBMIzNIf09G9AHPQ7djikU2nioY8jXKTzC3xGTHM
+GJZ5m6fLsu7iH+nDvSreDSeNkTBfZqGAvoGYQ8uGE+L+ZuRfCcXYsxIOT5s6o4c3
+Dle2rVFpsuKzCY00urW796ECgYBn3go75+xEwrYGQSer6WR1nTgCV29GVYXKPooy
+zmmMOT1Yw80NSkEw0pFD4cTyqVYREsTrPU0mn1sPfrOXxnGfZSVFpcR/Je9QVfQ7
+eW7GYxwfom335aqHVj10SxRqteP+UoWWnHujCPz94VRKZMakBddYCIGSan+G6YdS
+7sdmwwKBgBc2qj0wvGXDF2kCLwSGfWoMf8CS1+5fIiUIdT1e/+7MfDdbmLMIFVjF
+QKS3zVViXCbrG5SY6wS9hxoc57f6E2A8vcaX6zy2xkZlGHQCpWRtEM5R01OWJQaH
+HsHMmQZGUQVoDm1oRkDhrTFK4K3ukc3rAxzeTZ96utOQN8/KJsTv
+-----END RSA PRIVATE KEY-----
diff --git a/test/simple/test-securepair-server.js b/test/simple/test-securepair-server.js
new file mode 100644
index 00000000000..5905e229a34
--- /dev/null
+++ b/test/simple/test-securepair-server.js
@@ -0,0 +1,122 @@
+var common = require('../common');
+
+var join = require('path').join;
+var net = require('net');
+var assert = require('assert');
+var fs = require('fs');
+var crypto = require('crypto');
+var spawn = require('child_process').spawn;
+
+var connections = 0;
+var key = fs.readFileSync(join(common.fixturesDir, "agent.key")).toString();
+var cert = fs.readFileSync(join(common.fixturesDir, "agent.crt")).toString();
+
+function log (a) {
+ console.log('***server*** ' + a);
+}
+
+var server = net.createServer(function (socket) {
+ connections++;
+ log('connection');
+ var sslcontext = crypto.createCredentials({key: key, cert: cert});
+ sslcontext.context.setCiphers('RC4-SHA:AES128-SHA:AES256-SHA');
+
+ var spair = crypto.createPair(sslcontext, true);
+
+ spair.encrypted.pipe(socket);
+ socket.pipe(spair.encrypted);
+
+ var clear = spair.cleartext;
+
+ log('i set it secure');
+
+ spair.on('secure', function () {
+ log('connected+secure!');
+ clear.write(new Buffer('hello\r\n'));
+ log(spair.getPeerCertificate());
+ log(spair.getCipher());
+ });
+
+ clear.on('data', function (data) {
+ log('read %d bytes', data.length);
+ clear.write(data);
+ });
+
+ socket.on('end', function (err) {
+ log('all done: '+ err);
+ clear.write(new Buffer('goodbye\r\n'));
+ clear.end();
+ });
+
+ clear.on('error', function(err) {
+ log('got error: ');
+ log(err);
+ log(err.stack);
+ socket.destroy();
+ });
+
+ spair.encrypted.on('error', function(err) {
+ log('encrypted error: ');
+ log(err);
+ log(err.stack);
+ socket.destroy();
+ });
+
+ socket.on('error', function(err) {
+ log('socket error: ');
+ log(err);
+ log(err.stack);
+ socket.destroy();
+ });
+
+ spair.on('error', function(err) {
+ log('secure error: ');
+ log(err);
+ log(err.stack);
+ socket.destroy();
+ });
+});
+
+var gotHello = false;
+var sentWorld = false;
+var gotWorld = false;
+var opensslExitCode = -1;
+
+server.listen(8000, function () {
+ // To test use: openssl s_client -connect localhost:8000
+ var client = spawn('openssl', ['s_client', '-connect', '127.0.0.1:8000']);
+
+
+ var out = '';
+
+ client.stdout.setEncoding('utf8');
+ client.stdout.on('data', function (d) {
+ out += d;
+
+ if (!gotHello && /hello/.test(out)) {
+ gotHello = true;
+ client.stdin.write('world\r\n');
+ sentWorld = true;
+ }
+
+ if (!gotWorld && /world/.test(out)) {
+ gotWorld = true;
+ client.stdin.end();
+ }
+ });
+
+ client.stdout.pipe(process.stdout);
+
+ client.on('exit', function (code) {
+ opensslExitCode = code;
+ server.close();
+ });
+});
+
+process.on('exit', function () {
+ assert.equal(1, connections);
+ assert.ok(gotHello);
+ assert.ok(sentWorld);
+ assert.ok(gotWorld);
+ assert.equal(0, opensslExitCode);
+});