From b37cd7198f18ec5e98e2010e72b0407c49069ce7 Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Sat, 12 Jun 2021 15:44:52 +0200 Subject: [PATCH] Start of the MeshLink-tiny library. --- COPYING | 2 +- COPYING.README | 37 +++---------------------------------- NEWS | 2 +- README | 22 +++++++--------------- README.android | 4 ++-- README.git | 2 +- README.meshlink | 6 ------ TODO | 41 ----------------------------------------- 8 files changed, 15 insertions(+), 101 deletions(-) delete mode 100644 README.meshlink delete mode 100644 TODO diff --git a/COPYING b/COPYING index 819b40f..74fcb94 100644 --- a/COPYING +++ b/COPYING @@ -1,4 +1,4 @@ -Copyright (C) 2014-2018 Guus Sliepen +Copyright (C) 2014-2021 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software diff --git a/COPYING.README b/COPYING.README index 214af75..898da16 100644 --- a/COPYING.README +++ b/COPYING.README @@ -11,7 +11,6 @@ Please note that this document is not to be interpreted as a license itself. ## List of libraries that MeshLink depends on -* Catta (LGPL version 2.1) * Ed25519 (zlib license) * Chacha20-Poly1305 (public domain) @@ -29,21 +28,7 @@ author(s) as soon as possible in order to remedy this situation. If you do have a commercial license for the MeshLink library, then apart from the obligations set out in the commercial license, you are also obligated to follow the rules set out in the licenses of the libraries MeshLink depends on. -In short, these are: - -* Unless you have compiled MeshLink without support for Catta, you must make - the source code of Catta, with any modifications that you made to the Catta - library itself, available on request to anyone who has received a copy of - your closed source software, under the terms of the GNU Lesser General Public - License version 2.1 or later. -* Unless you have compiled MeshLink without support for Catta, you must give - prominent notice with each copy of your software that your software is using - Catta, and that the Catta library itself is covered under the terms of the - GNU Lesser General Public License version 2.1. - -Apart from these obligations, you are strongly recommended to mention the other -libraries that MeshLink is depending on, as well as mention the MeshLink -library itself: +In particular, ensure you give credits to the library authors: * Attribute Orson Peters as the author of the Ed25519 library. * Attribute Daniel J. Bernstein as the author of the Chacha20-Poly1305 library. @@ -71,21 +56,8 @@ https://www.gnu.org/licenses/license-list.en.html#SoftwareLicenses Apart from the obligations for the MeshLink library, set out in the GPL, you are also obligated to follow the rules set out in the licenses of the libraries -MeshLink depends on. In short, these are: - -* Unless you have compiled MeshLink without support for Catta, you must make - the source code of Catta, with any modifications that you made to the Catta - library itself, available on request to anyone who has received a copy of - your closed source software, under the terms of the GNU Lesser General Public - License version 2.1 or later. -* Unless you have compiled MeshLink without support for Catta, you must give - prominent notice with each copy of your software that your software is using - Catta, and that the Catta library itself is covered under the terms of the - GNU Lesser General Public License version 2.1. - -Apart from these obligations, you are strongly recommended to mention the other -libraries that MeshLink is depending on, as well as mention the MeshLink -library itself: +MeshLink depends on. +In particular, ensure you give credits to the library authors: * Attribute Orson Peters as the author of the Ed25519 library. * Attribute Daniel J. Bernstein as the author of the Chacha20-Poly1305 library. @@ -103,13 +75,10 @@ recommended text to display is: - MeshLink, copyright © 2014-2018 Guus Sliepen, licensed under the GPL version 2 or later¹ - - Catta, copyright © 2004-2018 the Avahi Developers and others, - licensed under the LGPL version 2.1 or later² - Chacha20-Poly1305, by Daniel J. Bernstein, public domain - Ed25519, copyright © 2015 Orson Peters, licensed under the zlib license ¹) omit the "licensed under" text if you have a commercial license -²) omit this is you compiled MeshLink without support for Catta The full text of the licenses of all libraries used should be included in the documentation, and should be included in any forms or displays that contain diff --git a/NEWS b/NEWS index 81da889..e9b9bcb 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,3 @@ Version 0.1 - * Initial version of the MeshLink library. + * Initial version of the MeshLink-tiny library. diff --git a/README b/README index 59d9927..9b3c0ee 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ -This is the README file for the MeshLink library. Installation instructions may +This is the README file for the MeshLink-tiny library. Installation instructions may be found in the INSTALL file. -MeshLink is Copyright (C) 2014-2018 Guus Sliepen +MeshLink is Copyright (C) 2014-2021 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -11,22 +11,14 @@ your option) any later version. See the file COPYING for more details. To obtain a license to use this library in commercial software, please contact sales@meshlink.io. - -This is not a finished version ------------------------------- - -Please do not use this library yet. - - -Requirements ------------- - -In order to compile MeshLink, you will need a GNU C compiler environment. - - Features -------- +MeshLink-tiny is a version of the MeshLink library optimized for devices with +very little resources. In particular, it tries to reduce code size and memory +usage, while keeping as much the API and network protocol compatible with the +full MeshLink library as much as possible. + MeshLink is a library that allows applications to connect to other instances of itself, and exchange messages in a secure way. MeshLink provides end-to-end encryption and authentication of messages with perfect forward secrecy. The diff --git a/README.android b/README.android index 20cd69a..7b8ffac 100644 --- a/README.android +++ b/README.android @@ -8,8 +8,8 @@ - Clone and cross-compile MeshLink: - git clone git://meshlink.io/meshlink - cd meshlink + git clone git://meshlink.io/meshlink-tiny + cd meshlink-tiny autoreconf -fsi CC=/tmp/my-android-toolchain/bin/arm-linux-androideabi-gcc CXX=/tmp/my-android-toolchain/bin/arm-linux-androideabi-g++ ./configure --host=arm-linux-androideabi make -j$(nproc) diff --git a/README.git b/README.git index f28b01f..13e2ccf 100644 --- a/README.git +++ b/README.git @@ -1,7 +1,7 @@ Before you can start compiling MeshLink from a fresh git clone, you have to install the very latest versions of the following packages: -- GCC +- GCC or Clang - automake - autoconf diff --git a/README.meshlink b/README.meshlink deleted file mode 100644 index 5c92312..0000000 --- a/README.meshlink +++ /dev/null @@ -1,6 +0,0 @@ - -The libmeshlink.so library is compiled and you will find it in ./src/.libs/ - -You can make your tests using this command - -export LD_LIBRARY_PATH='/home/saverio/SORGENTI/meshlink/src/.libs/' diff --git a/TODO b/TODO deleted file mode 100644 index 6a51375..0000000 --- a/TODO +++ /dev/null @@ -1,41 +0,0 @@ -TODO list for MeshLink ----------------------- - -* meshlink_join(): - - add checks that we only join another mesh if we did not connect to any other node before. - - only allow meshlink_join() when the library thread is not running. - - remove old host config file if the invitation gave the node a different name. - - how to handle nodes that are part of one mesh and want to join another? - -* meshlink_leave()? - - leaving a mesh is basically starting all over again, with new private keys? - -* Allow meshlink_open() to be called with a NULL name, in anticipation of meshlink_join(). - - Do not allow meshlink_start() if no Name is set. - -* Add autoconf/automake stuff to call Doxygen. - -* Write a manual - - Add introduction and walkthrough how to use MeshLink in an application to - the doxygen manual. - - Explain what MeshLink does and how it should be used in the application - - Import examples into the manual? - - List possible ways of synchronisation between application and library threads - - simple polling - - pthread_cond? - - pipe() to signal an event loop of the application's choice - - whatever equivalent(s) there are on Windows - -Not finished but being worked on: ---------------------------------- - -* Provide thread-safety to functions that return pointers to meshlink_node_t. - - The mesh->nodes tree can be updated by the library thread at any time, - so it must be protected by a mutex or rwlock. - - Individial node_t's must never be freed or moved except in meshlink_close(). - - Check all public API functions. - -* Write a test suite for the library. - -* Add a "channel" library to MeshLink. - - Support multiple TCP- and UDP-like streams between two nodes. -- 2.39.5