0.0.3 • Published 5 years ago
rainy-sctp v0.0.3
server/client
import { DtlsServer, DtlsClient } from "../../src";
test("e2e/self", (done) => {
  const word = "self";
  const server = new DtlsServer({ port: 55557 });
  server.onData = (data) => {
    expect(data.toString()).toBe(word);
    server.send(Buffer.from(word + "_server"));
  };
  const client = new DtlsClient({ address: "127.0.0.1", port: 55557 });
  client.onConnect = () => {
    client.send(Buffer.from(word));
  };
  client.onData = (data) => {
    expect(data.toString()).toBe(word + "_server");
    done();
  };
});server/client(OpenSSL)
import { spawn } from "child_process";
import { DtlsServer } from "../../src/server";
describe("e2e/server", () => {
  test("openssl", (done) => {
    const server = new DtlsServer({ port: 55556 });
    server.onConnect = () => {
      server.send(Buffer.from("my_dtls_server"));
    };
    setTimeout(() => {
      const client = spawn("openssl", [
        "s_client",
        "-dtls1_2",
        "-connect",
        "127.0.0.1:55556",
      ]);
      client.stdout.setEncoding("ascii");
      client.stdout.on("data", (data: string) => {
        if (data.includes("my_dtls_server")) {
          console.log(data);
          done();
          server.close();
        }
      });
    }, 100);
  });
});client/server(OpenSSL)
import { spawn } from "child_process";
import { DtlsClient } from "../../src/client";
describe("e2e/client", () => {
  test("openssl", (done) => {
    const args = [
      "s_server",
      "-cert",
      "./assets/cert.pem",
      "-key",
      "./assets/key.pem",
      "-dtls1_2",
      "-accept",
      "127.0.0.1:55555",
    ];
    const server = spawn("openssl", args);
    server.stdout.setEncoding("ascii");
    setTimeout(() => {
      const client = new DtlsClient({ address: "127.0.0.1", port: 55555 });
      client.onConnect = () => {
        client.send(Buffer.from("my_dtls"));
      };
      server.stdout.on("data", (data: string) => {
        if (data.includes("my_dtls")) {
          console.log(data);
          done();
          client.close();
        }
      });
    }, 100);
  });
});reference
- RFC5246
- RFC6347
- pion/dtls https://github.com/pion/dtls
- nodertc/dtls https://github.com/nodertc/dtls
- node-dtls https://github.com/Rantanen/node-dtls
- node-dtls-client https://github.com/AlCalzone/node-dtls-client
- OpenSSL
cert
openssl genrsa 2048 > rsa.key
openssl pkcs8 -in rsa.key -topk8 -out key.pem -nocrypt
openssl req -new -key key.pem > cert.csr
openssl x509 -req -days 3650 -signkey key.pem -in cert.csr -out  cert.pem