npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@gpolakow/node-mbed-dtls

v2.4.8

Published

Node mbed DTLS

Downloads

19

Readme

node-mbed-dtls

================

node DTLS (server and client) wrapping mbedtls.

Lineage

This package was forked from Spark's original server implementation and merged with their client implementation.

Changes made to the fork:

The wrapped library is now pulled directly from ARMmbed's repo, rather than Spark's. The ciphersuites and API have been extended to allow PSK and CA certificates to be loaded at runtime, and on a per-instance basis.


DTLS Client API:

Here is the scope of possible options, along with their default values.

const options = {
  host:          'localhost',  // The target address or hostname.
  port:          5684,         // The target UDP port.
  socket:        undefined,    // An already established socket, if you'd rather spin your own.
  key:           undefined,    // DER format in a buffer. Our private key.
  peerPublicKey: undefined,    // DER format in a buffer. The server's public key, if applicable.
  psk:           undefined,    // Buffer. Pre-shared Symmetric Key, if applicable.
  PSKIdent:      undefined,    // Buffer. PSK Identity, if applicable.
  CACert:        undefined,    // DER format in a buffer. CA public key, if applicable.
  debug:         0             // How chatty is the library? Larger values generate more log.
};

The cryptographic parameters will likely change in the future as options are added for...

  • TODO: Ciphersuite limitation/selection
  • TODO: Uniform key/id interface
  • TODO: Conditional validation
  • TODO: Capability discovery

A client connection might emit...

error when the connection has a problem.

// err: Error code.
// msg: Optional error string.
client.on('error', (err, msg) => {});

close when the socket closes.

//hadError:  A boolean. Did the socket close because of an error?
client.on('close', (hadError) => {});

secureConnect when we successfully establish a connection. This will only occur once for any given client.

// socket:  A connection socket, ready for data.
client.on('secureConnect', (socket) => {});

DTLS Server API:

Here is the scope of possible server options, along with their default values.

const options = {
  key:                 null,   // Our server's private key. DER format in a Buffer.
  handshakeTimeoutMin: 3000,   // How many milliseconds can a handshake subtend before being dropped?
  debug:               0       // How chatty is the library? Larger values generate more log.
};

General server emits....

error when the server has a problem.

// err: Error string/code.
server.on('error', (err) => {});

close when the server stops listening.

// No arguments to callback.
server.on('error', (err) => {});

listening when the server setup completes without problems.

// No arguments to callback.
server.on('listening', () => {});

Emits related to client handling...

lookupKey TODO: Doc forthcoming.

resumeSession TODO: Doc forthcoming.

secureConnection when a client successfully establishes a connection. This will only occur once for any unique client.

// client:   The client socket
// session:  The session identifier
server.on('secureConnection', (client, session) => {});

connection each time a client connects. This is not the same thing as session-establishment (See: secureConnection).

// client: The client socket that connected.
server.on('connection', (client) => {});

clientError when a client socket experiences a problem.

// err:    Error string/code.
// client: The client socket that had the problem.
server.on('error', (err, client) => {});