dart_tinydtls 0.3.0 copy "dart_tinydtls: ^0.3.0" to clipboard
dart_tinydtls: ^0.3.0 copied to clipboard


Dart ffi bindings to the tinydtls library. Provides wrappers for both a DTLS client and server.

dart_tinydtls #

Dart ffi bindings to the tinydtls library. Provides wrappers for both a DTLS client and server.

Using the wrapper classes #

The library provides a high level API for accessing tinyDTLS functionality. Both client and server APIs are exposed through the DtlsClient and DtlsServer classes. These allow users to connect to a peer or wait for incoming connections, respectively.

A basic example for the use of the DtlsClient class can be seen below. As tinyDTLS only supports ciphers using either a Pre-Shared Key (PSK) or an ECDSA key, at least one of these types of credentials have to be provided (in this case, a PSK).

Once the connection has been established, a DtlsConnection object is returned which can be used for sending data to the peer. The DtlsConnection also allows listening for incoming application data (in the form of Datagram objects). This and other use cases are demonstrated more thoroughly in the example.dart file.

import 'dart:convert';
import 'dart:io';

import 'package:dart_tinydtls/dart_tinydtls.dart';

Future<void> main() async {
  const address = "fe80::abcd:ef00";
  const port = 5684;
  final pskCredentials = PskCredentials("Client_identity", "secretPSK");

  final client = await DtlsClient.bind(InternetAddress.anyIPv6, 0);
  final connection = await client.connect(InternetAddress(address), port,
      pskCredentials: pskCredentials);

  final data = utf8.encode('Hello World!');

Generating the bindings #

  1. Clone the repository and initialize its submodules (i.e. git submodule update --init --recursive).
  2. Generate the bindings using dart run ffigen.
    • You may need to change the compiler-opts option in pubspec.yaml to match your system's location of corresponding header files for stddef.h and so on.
  3. There are exactly two warnings which can be ignored:
    1. Removed All Struct Members from dtls_handshake_parameters_t(dtls_handshake_parameters_t), Bit Field members not supported.
      • The struct dtls_handshake_parameters_t won't be used by library clients, so the fact that it's opaque in the bindings can safely be ignored.
    2. Generated declaration '__socklen_t' start's with '_' and therefore will be private.
      • Similarly, it won't cause any problems for __socklen_t to be private.

License #

Matching the license of the tinydtls C library, this library is made available both under the terms of the Eclipse Public License v1.0 and 3-Clause BSD License (which the Eclipse Distribution License v1.0 that is used for tinydtls is based on). Additionally, the tinydtls C library contains third party code that might be included in compiled binaries that link to tinydtls. For information on third-party code and its licenses, see https://github.com/eclipse/tinydtls/blob/develop/ABOUT.md. See https://github.com/eclipse/tinydtls/blob/develop/LICENSE for more information on the tinydtls licensing terms and https://www.eclipse.org/legal/eplfaq.php for more information on the EPL 1.0.

Note: This binding is neither supported nor endorsed by the Eclipse Foundation.

Maintainers #

This project is currently maintained by the following developers:

Name Email Address GitHub Username
Jan Romann jan.romann@uni-bremen.de JKRhb
Falko Galperin falko1@uni-bremen.de falko17
pub points


verified publishernamib.me

Dart ffi bindings to the tinydtls library. Provides wrappers for both a DTLS client and server.

Repository (GitHub)
View/report issues


unknown (LICENSE)




Packages that depend on dart_tinydtls