File
Blob: src/workerd/api/node/tests/tls-nodejs-tcp-server.js
| 1 | // Copyright (c) 2017-2022 Cloudflare, Inc. |
| 2 | // Licensed under the Apache 2.0 license found in the LICENSE file or at: |
| 3 | // https://opensource.org/licenses/Apache-2.0 |
| 4 | |
| 5 | // This file is used as a sidecar for the tls-nodejs-test tests. |
| 6 | const tls = require('node:tls'); |
| 7 | |
| 8 | function reportPort(server) { |
| 9 | const address = server.address(); |
| 10 | console.info(`Listening on ${address.address}:${address.port}`); |
| 11 | } |
| 12 | |
| 13 | // Taken from https://github.com/nodejs/node/blob/304743655d5236c2edc39094336ee2667600b684/test/fixtures/keys/agent1-key.pem |
| 14 | const AGENT1_KEY_PEM = `-----BEGIN PRIVATE KEY----- |
| 15 | MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCn5Ieb/G+/y5iD |
| 16 | MPWMJTjHhUDb4U5UiWyD69/jJ3W3tKPS62PaOHaOyuhd4aqNT0q3Eq3VhwlqkuoU |
| 17 | RUmE+8r7QkU9vnIcALf9/rvt8g9K1BAx+EUPjFwWOXgjCs/8Z5KPDrQ3cKxFTzkB |
| 18 | 7TCcequLz/cKPet7lA16ZRe9d5QlhuUWqGlUuIAu78h0I7OZKrhE4bp5ZJcHGtO8 |
| 19 | 3JLp4CLxE28MZgzlxebvvLS+1fohoc1IFaxG0yxwYawPsjSFDaTLlM/IqL6imLUH |
| 20 | +KHrI9QIEWkrsNfqaTu5FlsKA5OrecFePw5Mgm65ljtRz+hISW2YFYT0GB07oaUl |
| 21 | c3HnNgLpAgMBAAECggEAGGIaR887s5EwDy2XG8l0G5YAu25XX/OtbONe2rCqagm0 |
| 22 | GTfSgqjcnxRc9vWFPYycf0YZNP+toGrB0DvX15Zx/le7kqIMFIEON7c9N+uFyQpP |
| 23 | Z9J0xTNPVHL4Pa6eUjwAjwJFrh+RBWfiEaOPAcrXCzEi4bvobUQtSO9RqVSqkWBv |
| 24 | wEp6oI0gJvIpK7pRrUTCTR0qfFXTsaabvpWZvdmMtoDgiTRJhg2Dhvzy4Ox1y4/Z |
| 25 | fNKO/+KirKLS/FNje6b2LbzxFZ9YePDn0w3XD/iLaRduJ3UHNuMCl3tl3zVlgvKI |
| 26 | HhlCBnXcAbSWn3WqcQAUF57eRbwlt11za/gZi57DGQKBgQDRUtQthF9JleEoZ2YF |
| 27 | tQBanwz3AzEV2KHt3QrbjBxq3zhipx6K1iFr2SB6nDOigbJB/87gtoBdBbg9ujwj |
| 28 | 2K3bO3FoQsCLTikXUJ5OD01vCY4RDAjddNVdnJEtbONEZOVSV1GGxtEzMsrJT1Gs |
| 29 | 2LKmiSXEMRQhXJWgFaif8sFQ7wKBgQDNVKIS9Rh7ShSzXUhRwVmNvfHSiYEgeeGz |
| 30 | 3mJpAUKMHp2WzWZrWfTOBfm4+2/dg7Q8dTE6okzS/I+6a3PPnB3lTSLYJmnI64DB |
| 31 | YccKKuxpk4zixxTWQk6YtJfBCyb16qWQoXAHBM7OVr3hd5egArLGNKxafERH8orX |
| 32 | kY2rtzs5pwKBgEZJX8Gg7zYQQ7iDb7h+3I2RVpMi2TqSsVzjmh+6Xlhsd8x4fUL1 |
| 33 | P+es0sEY7iWlEywiL185KMUThJgFjugie85fmWb+8xRTvGx9v4pKjR+5v6BtwBRM |
| 34 | hNCYIA92vqFal74cX923qMteRMVwAubdJK/S4YGNUUsagYttel+q7cq1AoGAHvn4 |
| 35 | pYGCWv83FkQpZ+QSfZa9R7Tk3SBmE3umPw8omfj4b0q3e9SLYRV3sheErddztnc7 |
| 36 | oQvhKSdfC5GwXA7CV9iGPDO3W89jkkkM/RSyq87Nv1ynYReJwfHkvwPOseTfa21f |
| 37 | eD+ab3iYls4y+rnNfKdvpQsARhZqKdFUnSY8chsCgYBKx7zcgqSg+bdM9DB8Wzph |
| 38 | 4ZQBLo3n2HZGpNTfT5UaKguYXqswQ5F/zPfxJBIwTAfL92bJnzRZpzVPcPg6QHhR |
| 39 | 0DNeltg5Ij061Zyz2/RnDHS16uyQNENb4lcSlqdanlOsluVqE0GQC8y+Rvf+tA10 |
| 40 | h0ttUVaTtmba2EGRzoaNWA== |
| 41 | -----END PRIVATE KEY-----`; |
| 42 | |
| 43 | // Taken from https://github.com/nodejs/node/blob/304743655d5236c2edc39094336ee2667600b684/test/fixtures/keys/agent1-cert.pem |
| 44 | const AGENT1_CERT_PEM = `-----BEGIN CERTIFICATE----- |
| 45 | MIIDeDCCAmCgAwIBAgIUdzLeCZ2khgssLeLiVYURZo/Tx8EwDQYJKoZIhvcNAQEL |
| 46 | BQAwTTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCk5ldyBKZXJzZXkxFDASBgNVBAcM |
| 47 | C0plcnNleSBDaXR5MRMwEQYDVQQKDApDbG91ZGZsYXJlMB4XDTI1MDMwNTE2MTUy |
| 48 | MVoXDTI3MDMwNTE2MTUyMVowRTELMAkGA1UEBhMCVVMxEzARBgNVBAgMClNvbWUt |
| 49 | U3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJ |
| 50 | KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKfkh5v8b7/LmIMw9YwlOMeFQNvhTlSJ |
| 51 | bIPr3+Mndbe0o9LrY9o4do7K6F3hqo1PSrcSrdWHCWqS6hRFSYT7yvtCRT2+chwA |
| 52 | t/3+u+3yD0rUEDH4RQ+MXBY5eCMKz/xnko8OtDdwrEVPOQHtMJx6q4vP9wo963uU |
| 53 | DXplF713lCWG5RaoaVS4gC7vyHQjs5kquEThunlklwca07zckungIvETbwxmDOXF |
| 54 | 5u+8tL7V+iGhzUgVrEbTLHBhrA+yNIUNpMuUz8iovqKYtQf4oesj1AgRaSuw1+pp |
| 55 | O7kWWwoDk6t5wV4/DkyCbrmWO1HP6EhJbZgVhPQYHTuhpSVzcec2AukCAwEAAaNY |
| 56 | MFYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MB0GA1UdDgQWBBT1Uf2E3xOj0HPkG2e5 |
| 57 | ZiCx0GSYKDAfBgNVHSMEGDAWgBRlkgGmcLtZzVTUu0MvdYI8I2gwCTANBgkqhkiG |
| 58 | 9w0BAQsFAAOCAQEAuv0c58unZvUOK2nL007Vp/bjjfKf/rpsvlHKgZ2Oa4Xik/Io |
| 59 | O3Jh4/uTlTlq0GI5zSTQSdiI28yiKqGRmCtGkES9mjPzUkL+pTj/pFgyCjYfu/Z0 |
| 60 | lIn1zwVEp1AXxhID3QvUDEeEM5+sE3i1KlGpF/0eYFJN6/ClS+VbJXmacdJATGnU |
| 61 | W3QKeel2BcFNDFreh8g+Ebb6K2P3k4+PHTWAuzcqu7eIEe4cKEjIDXI9vdckjq4Q |
| 62 | Nbc7EfWb2Gh/6S/Uz6y+AIN3l7ybJTqzWnOWZPCzoMpJuS+d5ir36DJ3BpXKCTHT |
| 63 | VRpM7av//cc39AeMvU6RTQSYVDy4NJx+mfRqLw== |
| 64 | -----END CERTIFICATE-----`; |
| 65 | |
| 66 | const options = { |
| 67 | key: AGENT1_KEY_PEM, |
| 68 | cert: AGENT1_CERT_PEM, |
| 69 | rejectUnauthorized: true, |
| 70 | }; |
| 71 | |
| 72 | const echoServer = tls.createServer(options, (s) => { |
| 73 | s.setTimeout(100); |
| 74 | s.on('error', () => { |
| 75 | // Do nothing |
| 76 | }); |
| 77 | s.pipe(s); |
| 78 | }); |
| 79 | echoServer.listen( |
| 80 | process.env.ECHO_SERVER_PORT, |
| 81 | process.env.SIDECAR_HOSTNAME, |
| 82 | () => reportPort(echoServer) |
| 83 | ); |
| 84 | |
| 85 | // Taken from test-tls-connect-given-socket.js |
| 86 | const helloServer = tls.createServer(options, (socket) => { |
| 87 | socket.end('Hello'); |
| 88 | }); |
| 89 | helloServer.listen( |
| 90 | process.env.HELLO_SERVER_PORT, |
| 91 | process.env.SIDECAR_HOSTNAME, |
| 92 | () => reportPort(helloServer) |
| 93 | ); |
| 94 | |
| 95 | const jsStreamServer = tls.createServer(options, (socket) => { |
| 96 | socket.resume(); |
| 97 | socket.end('ohai'); |
| 98 | }); |
| 99 | jsStreamServer.listen( |
| 100 | process.env.JS_STREAM_SERVER_PORT, |
| 101 | process.env.SIDECAR_HOSTNAME, |
| 102 | () => reportPort(jsStreamServer) |
| 103 | ); |
| 104 | |
| 105 | // Taken from test/parallel/test-tls-streamwrap-buffersize.js |
| 106 | const streamWrapServer = tls.createServer(options, (socket) => { |
| 107 | let str = ''; |
| 108 | socket.setEncoding('utf-8'); |
| 109 | socket.on('data', (chunk) => { |
| 110 | str += chunk; |
| 111 | }); |
| 112 | |
| 113 | socket.on( |
| 114 | 'end', |
| 115 | common.mustCall(() => { |
| 116 | strictEqual(str, 'a'.repeat(iter - 1)); |
| 117 | server.close(); |
| 118 | }) |
| 119 | ); |
| 120 | }); |
| 121 | streamWrapServer.listen( |
| 122 | process.env.STREAM_WRAP_SERVER_PORT, |
| 123 | process.env.SIDECAR_HOSTNAME, |
| 124 | () => reportPort(streamWrapServer) |
| 125 | ); |