diff --git a/Changelog.md b/Changelog.md index 3c41213..d24ca60 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,15 @@ +### 2023-05-19: RNS β 0.5.3 + +This maintenance release brings a single, but important bugfix. + +**Changes** +- Fixed a bug that could cause data corruption to occur over when using `Buffer` instances. + +**Release Hashes** +``` + +``` + ### 2023-05-12: RNS β 0.5.2 This maintenance release brings a number of bugfixes and improvements. diff --git a/Roadmap.md b/Roadmap.md index e201134..7fd73ad 100644 --- a/Roadmap.md +++ b/Roadmap.md @@ -15,11 +15,12 @@ This document outlines the currently established development roadmap for Reticul For each release cycle of Reticulum, improvements and additions from the five [Primary Efforts](#primary-efforts) are selected as active work areas, and can be expected to be included in the upcoming releases within that cycle. While not entirely set in stone for each release cycle, they serve as a pointer of what to expect in the near future. - The current `0.5.x` release cycle aims at completing + - [x] Reach feature-completion of the Reticulum API + - [x] Improve performance and efficiency of the `Buffer` and `Channel` API - [ ] Overhauling and updating the documentation - [ ] Performance and memory optimisations of the Python reference implementation - [ ] Fixing potential bugs - [ ] Add automatic retries to all use cases of the `Request` API - - [ ] Improve performance and efficiency of the `Buffer` and `Channel` API ## Primary Efforts The development path for Reticulum is currently laid out in five distinct areas: *Comprehensibility*, *Universality*, *Functionality*, *Usability & Utility* and *Interfaceability*. Conceptualising the development of Reticulum into these areas serves to advance the implementation and work towards the Foundational Goals & Values of Reticulum. diff --git a/docs/Reticulum Manual.epub b/docs/Reticulum Manual.epub index 0bebd52..77862d3 100644 Binary files a/docs/Reticulum Manual.epub and b/docs/Reticulum Manual.epub differ diff --git a/docs/Reticulum Manual.pdf b/docs/Reticulum Manual.pdf index 1a447c5..7ea290f 100644 Binary files a/docs/Reticulum Manual.pdf and b/docs/Reticulum Manual.pdf differ diff --git a/docs/manual/.buildinfo b/docs/manual/.buildinfo index b73cf13..76cd502 100644 --- a/docs/manual/.buildinfo +++ b/docs/manual/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: c5670e7931d15fbef274e2eee17c3561 +config: 7638eb217b32841965cb99f2db5009a6 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/manual/_static/documentation_options.js b/docs/manual/_static/documentation_options.js index db553a1..0fb1b4f 100644 --- a/docs/manual/_static/documentation_options.js +++ b/docs/manual/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.5.2 beta', + VERSION: '0.5.3 beta', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/manual/examples.html b/docs/manual/examples.html index 5785d1f..ca4a289 100644 --- a/docs/manual/examples.html +++ b/docs/manual/examples.html @@ -6,7 +6,7 @@ - Code Examples - Reticulum Network Stack 0.5.2 beta documentation + Code Examples - Reticulum Network Stack 0.5.3 beta documentation @@ -141,7 +141,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/genindex.html b/docs/manual/genindex.html index 14f776e..953290c 100644 --- a/docs/manual/genindex.html +++ b/docs/manual/genindex.html @@ -4,7 +4,7 @@ - Index - Reticulum Network Stack 0.5.2 beta documentation + Index - Reticulum Network Stack 0.5.3 beta documentation @@ -139,7 +139,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -165,7 +165,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/gettingstartedfast.html b/docs/manual/gettingstartedfast.html index e60b574..fed23fa 100644 --- a/docs/manual/gettingstartedfast.html +++ b/docs/manual/gettingstartedfast.html @@ -6,7 +6,7 @@ - Getting Started Fast - Reticulum Network Stack 0.5.2 beta documentation + Getting Started Fast - Reticulum Network Stack 0.5.3 beta documentation @@ -141,7 +141,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/hardware.html b/docs/manual/hardware.html index b11914d..bd938b7 100644 --- a/docs/manual/hardware.html +++ b/docs/manual/hardware.html @@ -6,7 +6,7 @@ - Communications Hardware - Reticulum Network Stack 0.5.2 beta documentation + Communications Hardware - Reticulum Network Stack 0.5.3 beta documentation @@ -141,7 +141,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/index.html b/docs/manual/index.html index 0f50001..ecc637e 100644 --- a/docs/manual/index.html +++ b/docs/manual/index.html @@ -6,7 +6,7 @@ - Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation @@ -141,7 +141,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/interfaces.html b/docs/manual/interfaces.html index e8e7b48..0fecea5 100644 --- a/docs/manual/interfaces.html +++ b/docs/manual/interfaces.html @@ -6,7 +6,7 @@ - Supported Interfaces - Reticulum Network Stack 0.5.2 beta documentation + Supported Interfaces - Reticulum Network Stack 0.5.3 beta documentation @@ -141,7 +141,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/networks.html b/docs/manual/networks.html index 51dbb92..f0a3f46 100644 --- a/docs/manual/networks.html +++ b/docs/manual/networks.html @@ -6,7 +6,7 @@ - Building Networks - Reticulum Network Stack 0.5.2 beta documentation + Building Networks - Reticulum Network Stack 0.5.3 beta documentation @@ -141,7 +141,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/objects.inv b/docs/manual/objects.inv index dbc6410..9df84a5 100644 Binary files a/docs/manual/objects.inv and b/docs/manual/objects.inv differ diff --git a/docs/manual/reference.html b/docs/manual/reference.html index 16b38d6..d367f26 100644 --- a/docs/manual/reference.html +++ b/docs/manual/reference.html @@ -6,7 +6,7 @@ - API Reference - Reticulum Network Stack 0.5.2 beta documentation + API Reference - Reticulum Network Stack 0.5.3 beta documentation @@ -141,7 +141,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/search.html b/docs/manual/search.html index 811ca0d..06261c7 100644 --- a/docs/manual/search.html +++ b/docs/manual/search.html @@ -4,7 +4,7 @@ - Search - Reticulum Network Stack 0.5.2 beta documentation + Search - Reticulum Network Stack 0.5.3 beta documentation @@ -138,7 +138,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -164,7 +164,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js index ff89c40..633727a 100644 --- a/docs/manual/searchindex.js +++ b/docs/manual/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Supported Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 11], "number": [0, 2, 5, 6, 7, 9, 10], "ar": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "includ": [0, 3, 4, 5, 7, 9], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10], "reticulum": [0, 5, 6, 7], "you": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "can": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "us": [0, 3, 4, 5, 6, 7, 9], "learn": [0, 2, 8, 9], "how": [0, 2, 3, 5, 6, 9, 10, 11], "write": [0, 2, 5, 7, 9], "your": [0, 2, 3, 4, 5, 6, 8, 9, 11], "own": [0, 2, 6, 7, 9, 10, 11], "program": [0, 3, 4, 5, 7, 9, 11], "The": [0, 2, 3, 4, 5, 6, 7, 11], "demonstr": [0, 5], "bare": 0, "minimum": [0, 5, 6, 9], "setup": [0, 2, 4, 5], "requir": [0, 2, 5, 6, 9, 10, 11], "connect": [0, 3, 4, 5, 6, 7, 9, 10, 11], "network": [0, 3, 5, 7, 9, 10, 11], "from": [0, 2, 3, 5, 6, 7, 9, 10, 11], "In": [0, 2, 3, 5, 6, 7, 9, 10, 11], "about": [0, 2, 3, 5, 6, 7, 9], "five": 0, "line": [0, 2, 3, 5, 6, 9, 10, 11], "have": [0, 2, 3, 5, 6, 7, 9, 10], "stack": [0, 2, 6, 7, 9, 10, 11], "initialis": [0, 7, 10], "readi": [0, 2, 3, 5, 6, 7, 11], "pass": [0, 3, 5, 6, 7, 9, 10], "traffic": [0, 2, 5, 6, 7, 9, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "rn": [0, 2, 3, 7, 9, 10], "start": [0, 3, 4, 5, 7, 9, 10], "up": [0, 2, 3, 5, 6, 9, 10, 11], "gener": [0, 2, 3, 5, 6, 7, 9, 10, 11], "new": [0, 5, 6, 7, 9, 10], "destin": [0, 2, 4, 5, 6, 7, 10], "let": [0, 2, 5, 6, 9, 10], "user": [0, 2, 5, 6, 9, 10, 11], "send": [0, 5, 7, 9, 10], "an": [0, 2, 3, 5, 6, 7, 9, 10, 11], "import": [0, 2, 3, 5, 6, 7, 8, 9], "argpars": 0, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 4, 5, 6, 7], "we": [0, 2, 3, 5, 8, 9], "ll": [0, 2, 11], "all": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "creat": [0, 4, 5, 6, 7, 9, 10, 11], "sinc": [0, 2, 5, 6, 7, 9], "basic": [0, 2, 4, 7, 10], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "part": [0, 5, 6, 7, 9], "rang": [0, 2, 3, 5, 6, 9, 10, 11], "util": [0, 3, 4, 5, 9], "put": [0, 3, 5, 10], "them": [0, 2, 3, 5, 6, 8, 9, 10, 11], "within": [0, 2, 5, 6, 7, 9], "namespac": 0, "example_util": [0, 10], "app_nam": [0, 7], "execut": [0, 2, 5, 7, 10], "when": [0, 2, 3, 5, 6, 7, 9, 10], "def": 0, "program_setup": 0, "configpath": 0, "must": [0, 2, 5, 6, 7, 9], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 11], "commun": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11], "also": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "exist": [0, 2, 3, 5, 9, 10, 11], "which": [0, 2, 5, 6, 7, 9, 10], "know": [0, 2, 3, 6, 7, 9, 11], "thei": [0, 2, 5, 6, 7, 9, 10], "reachabl": [0, 2, 5, 6, 7, 9, 10], "autoomat": 0, "path": [0, 2, 3, 5, 7, 9, 10], "anywher": [0, 5], "els": [0, 2, 6, 9], "IN": [0, 7], "singl": [0, 5, 7, 9, 10, 11], "minimalsampl": 0, "configur": [0, 2, 3, 4, 5, 6, 7, 9, 11], "automat": [0, 2, 3, 5, 6, 7, 9, 10, 11], "prove": [0, 9], "packet": [0, 2, 3, 4, 5, 6, 7, 10, 11], "adress": [0, 7, 9], "By": [0, 2, 5, 7, 9, 10], "do": [0, 2, 3, 5, 7, 9, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 9, 10], "incom": [0, 5, 7, 10], "transmit": [0, 5, 9], "back": [0, 5, 9, 11], "sender": [0, 2, 6, 9, 10], "anyon": [0, 2, 3, 6, 7, 9, 10], "tri": 0, "whether": [0, 5, 7, 9], "wa": [0, 3, 5, 6, 7, 9, 11], "receiv": [0, 2, 5, 7, 9, 10], "correctli": 0, "set_proof_strategi": [0, 7], "prove_al": [0, 7], "everyth": [0, 6, 9], "hand": 0, "over": [0, 3, 4, 5, 7, 9, 10, 11], "control": [0, 2, 3, 4, 6, 7, 9, 11], "loop": 0, "announceloop": 0, "log": [0, 5, 10], "prettyhexrep": 0, "hash": [0, 2, 7, 9, 10], "run": [0, 2, 3, 5, 6, 7, 9, 10, 11], "hit": 0, "enter": [0, 10], "manual": [0, 2, 5, 6, 7, 10], "ctrl": 0, "c": [0, 6, 10], "quit": 0, "until": [0, 2, 5, 7], "exit": [0, 2, 7, 10], "If": [0, 2, 3, 5, 6, 7, 9, 10, 11], "server": [0, 2, 3, 4, 7, 10], "client": [0, 2, 3, 4, 7], "messag": [0, 2, 7, 9, 10], "direct": [0, 2, 3, 6, 7, 9, 10], "toward": [0, 5, 9], "while": [0, 2, 3, 5, 6, 7, 9, 11], "true": [0, 5, 7, 10], "input": [0, 10], "sent": [0, 2, 7, 9, 10], "startup": [0, 10], "get": [0, 3, 4, 5, 7, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 6, 10], "action": 0, "store": [0, 3, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 3, 6, 8, 9, 10, 11], "altern": [0, 5, 10], "directori": [0, 10], "type": [0, 2, 4, 5, 6, 7, 10], "str": 0, "arg": 0, "parse_arg": 0, "configarg": 0, "except": [0, 5, 7], "keyboardinterrupt": 0, "print": [0, 5, 10], "found": [0, 2, 5, 6, 9, 10], "http": [0, 2, 8], "github": [0, 2, 8], "com": [0, 2, 8], "markqvist": [0, 2, 8], "blob": [0, 9], "master": [0, 7], "py": [0, 2, 9], "build": [0, 2, 3, 4, 5, 9, 11], "upon": [0, 9], "previou": 0, "explor": [0, 9, 11], "notif": [0, 7], "relev": [0, 3, 5, 7, 9, 10], "set": [0, 2, 3, 5, 6, 7, 9, 10, 11], "callback": [0, 7], "applic": [0, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 7, 9], "happen": [0, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "0": [0, 2, 5, 7, 9, 10, 11], "len": 0, "1": [0, 2, 5, 7, 9, 10], "data": [0, 2, 4, 5, 6, 7, 9, 11], "encod": [0, 7], "utf": 0, "8": [0, 5, 10], "nobl": 0, "ga": 0, "noble_ga": 0, "need": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "class": [0, 6, 7, 11], "method": [0, 2, 5, 7, 9], "take": [0, 2, 5, 9, 10, 11], "option": [0, 2, 3, 4, 6, 7, 9, 10], "argument": [0, 7, 10], "instanc": [0, 4, 5, 7, 9, 10], "some": [0, 2, 3, 5, 6, 7, 9, 10], "want": [0, 2, 3, 5, 6, 9, 10, 11], "aspect": [0, 3, 5, 7, 9], "__init__": [0, 7], "self": [0, 6, 11], "call": [0, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10, 11], "cannot": [0, 2, 11], "wildcard": 0, "received_announc": [0, 7], "destination_hash": [0, 7, 10], "announced_ident": [0, 7], "contain": [0, 6, 7, 9, 10], "follow": [0, 2, 3, 5, 7, 8, 9, 10, 11], "decod": 0, "plaintext": [0, 7], "unencrypt": [0, 7, 9], "inform": [0, 2, 4, 5, 6, 7, 9, 10], "ani": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "listen": [0, 5, 9, 10], "sy": 0, "did": 0, "one": [0, 2, 3, 5, 6, 7, 9, 10, 11], "public_inform": 0, "ad": [0, 3, 4, 5, 6, 7, 9, 11], "so": [0, 2, 3, 5, 6, 7, 8, 9, 11], "differ": [0, 2, 3, 5, 6, 7, 9, 10, 11], "plain": [0, 5, 7, 9], "uncencrypt": 0, "broadcast_destin": 0, "specifi": [0, 2, 3, 5, 6, 7, 10], "everi": [0, 5, 6, 7, 9], "time": [0, 2, 3, 5, 6, 7, 9, 10], "set_packet_callback": [0, 7], "packet_callback": 0, "main": 0, "broadcastloop": 0, "simpli": [0, 2, 3, 5, 6, 9, 10], "out": [0, 2, 3, 5, 6, 7, 9, 10, 11], "r": [0, 5, 9, 10], "n": [0, 9, 10], "end": [0, 5, 6, 7, 9, 11], "stdout": [0, 5, 10], "flush": 0, "text": [0, 2, 6, 9], "prompt": 0, "channelarg": 0, "between": [0, 5, 6, 7, 9], "interfac": [0, 3, 4, 6, 7, 10], "simpl": [0, 3, 7, 9, 10, 11], "respond": [0, 7], "receipt": [0, 7, 9], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 9, 11], "server_ident": 0, "queri": [0, 2, 7], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 7, 9], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 11], "wai": [0, 2, 5, 6, 7, 9], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9, 10], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": 0, "dbm": [0, 5, 10], "snr": 0, "db": 0, "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": 0, "hexadecim": [0, 9, 10], "charact": 0, "byte": [0, 7, 9, 10, 11], "format": [0, 4, 11], "fromhex": 0, "e": [0, 6, 10], "check": [0, 2, 7, 9, 10], "overrid": 0, "loglevel": [0, 7, 10], "provid": [0, 2, 3, 4, 5, 6, 7, 9, 11], "feedback": [0, 4], "log_info": 0, "doe": [0, 2, 3, 4, 5, 6, 7, 9, 10], "load": [0, 2, 7, 10], "has_path": [0, 7], "To": [0, 2, 3, 5, 6, 9, 10, 11], "public": [0, 4, 5, 7], "kei": [0, 4, 6, 7, 11], "done": [0, 2, 5, 6, 9, 10], "recal": [0, 7], "modul": [0, 2, 3, 9, 10, 11], "known": [0, 7, 9, 10], "return": [0, 7, 10], "outgo": [0, 5, 7, 9, 10], "got": 0, "correct": [0, 9], "convent": 0, "request_destin": 0, "add": [0, 2, 5, 6, 7, 10], "echo_request": 0, "get_random_hash": [0, 7], "successfulli": [0, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 2, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 5, 9, 10, 11], "rttstring": 0, "second": [0, 5, 7, 9, 10, 11], "1000": 0, "millisecond": [0, 10], "proof_packet": 0, "valid": [0, 5, 7, 9, 10], "trip": [0, 7, 10], "fail": [0, 2, 7], "store_tru": 0, "t": [0, 2, 5, 6, 7, 10], "metavar": 0, "float": [0, 7], "narg": 0, "timeoutarg": 0, "print_help": 0, "establish": [0, 2, 5, 6, 7, 11], "remot": [0, 4, 7, 10], "forth": 0, "o": [0, 2, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 10], "latest_client_link": 0, "server_destin": 0, "linkexampl": 0, "set_link_established_callback": [0, 7], "client_connect": 0, "server_loop": 0, "set_link_closed_callback": [0, 7], "client_disconnect": 0, "server_packet_receiv": 0, "disconnect": 0, "activ": [0, 2, 5, 7, 9], "last": [0, 5, 7], "reply_text": 0, "reply_data": 0, "server_link": 0, "sleep": [0, 10], "begin": [0, 3, 7], "And": 0, "client_packet_receiv": 0, "close": [0, 6, 7, 10], "link_establish": 0, "link_clos": 0, "interact": [0, 2, 7, 9, 10], "client_loop": 0, "becom": [0, 2, 6, 9], "should_quit": 0, "fals": [0, 5, 7, 10], "should": [0, 2, 5, 6, 7, 9, 10, 11], "q": [0, 10], "teardown": [0, 7], "mdu": [0, 7], "size": [0, 2, 5, 7, 9, 10], "exce": [0, 5, 7], "log_error": 0, "error": [0, 2, 8, 10], "ha": [0, 2, 3, 5, 6, 7, 9, 11], "been": [0, 2, 3, 5, 6, 7, 9, 11], "later": [0, 2, 5, 10], "teardown_reason": 0, "now": [0, 2, 6, 9, 10], "elif": 0, "destination_clos": 0, "exit_handl": 0, "5": [0, 2, 5, 10], "_exit": 0, "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 6, 7, 9, 11], "peer": [0, 2, 5, 7, 9, 10], "identifyexampl": 0, "set_remote_identified_callback": [0, 7], "remote_identifi": 0, "origin": [0, 6, 9], "displai": [0, 9], "remote_p": 0, "unidentifi": 0, "get_remote_ident": [0, 7], "client_ident": 0, "sendig": 0, "perform": [0, 2, 5, 6, 9], "random_text_gener": 0, "request_id": [0, 7], "link_id": [0, 7], "remote_ident": [0, 7], "requested_at": [0, 7], "look": [0, 2, 5, 9, 10], "On": [0, 2, 5, 10], "full": [0, 5, 7, 9, 10, 11], "moon": 0, "becki": 0, "upset": 0, "stai": [0, 9, 10], "awai": [0, 5, 6, 9, 10], "pet": 0, "shop": 0, "stock": 0, "requestexampl": 0, "register_request_handl": [0, 7], "response_gener": [0, 7], "allow": [0, 2, 3, 5, 6, 7, 9, 10, 11], "allow_al": [0, 7], "response_callback": [0, 7], "got_respons": 0, "failed_callback": [0, 7], "request_fail": 0, "request_receipt": [0, 7], "request_receiv": 0, "structur": [0, 7, 9, 11], "datetim": 0, "vendor": [0, 3], "umsgpack": 0, "share": [0, 2, 6, 7, 9, 10], "object": [0, 7], "subclass": [0, 7], "messagebas": [0, 4, 7], "ensur": [0, 5, 7, 9, 11], "serial": [0, 2, 3, 4, 9, 11], "deseri": 0, "multiplex": 0, "other": [0, 2, 3, 5, 6, 7, 9, 10], "both": [0, 2, 3, 5, 6, 7, 9, 10, 11], "same": [0, 2, 3, 5, 6, 7, 9, 10], "definit": [0, 9], "note": [0, 3, 4, 5, 7, 9, 10], "wish": [0, 9, 10], "make": [0, 2, 3, 5, 8, 9, 10], "stringmessag": 0, "convei": 0, "timestamp": 0, "msgtype": [0, 7], "variabl": [0, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 7, 9, 11], "across": [0, 3, 6], "0xf000": [0, 7], "reserv": [0, 7, 9], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 9, 10], "unpack": [0, 7], "final": [0, 7, 9], "implement": [0, 5, 6, 7, 8, 9, 11], "pack": [0, 7], "raw": [0, 3, 7], "payload": [0, 7, 9], "packag": [0, 2, 5, 9], "bundl": 0, "could": [0, 2, 5, 6, 7, 9, 11], "struct": 0, "python": [0, 4, 7, 9, 10, 11], "more": [0, 2, 3, 5, 6, 7, 9, 10, 11], "fit": 0, "entir": [0, 6, 7, 9, 10], "avail": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "properti": [0, 6, 7], "slightli": [0, 2], "less": [0, 5, 7, 9, 11], "due": [0, 6], "header": [0, 7, 9], "content": [0, 2, 6, 10], "stream": [0, 7, 9], "packb": 0, "unpackb": 0, "channelexampl": 0, "get_channel": [0, 7], "register_message_typ": [0, 7], "add_message_handl": [0, 7], "server_message_receiv": 0, "param": 0, "deserializ": 0, "unless": [0, 2, 5, 7, 9], "preced": 0, "indic": 0, "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "descriptor": 0, "actual": [0, 2, 5, 9], "separ": [0, 2, 5, 6, 9, 10], "unidirect": 0, "flow": [0, 5, 6], "opposit": [0, 5], "create_bidirectional_buff": [0, 7], "server_buffer_readi": 0, "ready_byt": [0, 7], "int": [0, 7], "otherwis": [0, 7], "forc": [0, 10], "server_client_connect": 0, "detail": [0, 2, 4, 5, 7, 10, 11], "client_buffer_readi": 0, "termin": [0, 2, 7], "download": [0, 5, 10], "resourc": [0, 2, 4, 7, 8], "effici": [0, 2, 5, 9, 11], "serv": [0, 3, 5, 6, 9, 10], "larg": [0, 3, 5, 6, 7, 9, 11], "transfer": [0, 7, 9, 10, 11], "recommend": [0, 2, 9], "compress": [0, 7, 9], "hashmap": 0, "sequenc": [0, 7, 9, 11], "long": [0, 2, 3, 5, 7, 9], "slow": [0, 5, 9], "cpu": [0, 9], "probabl": [0, 2, 6, 9, 10, 11], "result": [0, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 3, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 6, 9], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 6, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 5, 7, 9, 10], "normal": [0, 5, 7, 10], "accordingli": 0, "filelist_receiv": 0, "advertis": [0, 7], "set_resource_strategi": [0, 7], "accept_al": [0, 7], "set_resource_started_callback": [0, 7], "download_began": 0, "set_resource_concluded_callback": [0, 7], "download_conclud": 0, "menu": 0, "menu_mod": 0, "down": [0, 3, 5, 7], "request_packet": 0, "create_receipt": [0, 7], "print_menu": 0, "25": [0, 4, 11], "user_input": 0, "screen": 0, "variou": [0, 2, 5, 6, 9, 10], "state": 0, "It": [0, 2, 3, 5, 7, 9, 10, 11], "uninterest": 0, "won": 0, "clear_screen": 0, "print_filelist": 0, "percent": 0, "get_progress": [0, 7], "100": [0, 5, 9], "rprogress": 0, "save_error": 0, "disk": [0, 7], "hour": [0, 5], "rem": 0, "divmod": 0, "3600": [0, 5], "minut": [0, 2, 5, 9], "60": 0, "timestr": 0, "05": 0, "2f": 0, "ttime": 0, "taken": [0, 9], "tfile": 0, "size_str": 0, "tdata": 0, "teffect": 0, "rate": [0, 4, 7, 10], "suffix": 0, "b": [0, 6, 10], "ttransfer": 0, "press": 0, "index": [0, 2, 4], "enumer": 0, "filelist_data": 0, "extend": [0, 2, 7], "local": [0, 2, 5, 6, 7, 9, 10, 11], "append": [0, 9], "visibl": 0, "updat": [0, 2, 7, 9, 10], "small": [0, 5, 6, 9, 11], "job": 0, "potenti": [0, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "setdaemon": 0, "detect": 0, "shown": 0, "progress": [0, 7, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": 0, "m": [0, 2, 9, 10], "g": 0, "p": [0, 10], "z": 0, "y": 0, "ab": 0, "1024": 0, "clear": [0, 7, 9, 10], "cl": 0, "nt": 0, "dir": 0, "best": [2, 9, 11], "guid": [2, 3, 9], "outlin": [2, 3, 9], "sensibl": [2, 3], "scenario": [2, 4, 9], "relat": 2, "easiest": [2, 3, 5, 9], "via": [2, 3, 5, 8, 9, 10, 11], "pip": [2, 3, 10], "manag": [2, 6, 7, 9, 10, 11], "sudo": [2, 10], "apt": 2, "python3": [2, 3], "pamac": 2, "similar": [2, 3, 5, 6, 7, 10, 11], "dowload": 2, "releas": [2, 5, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "offlin": 2, "py3": 2, "whl": 2, "mai": [2, 5, 7, 9, 10], "case": [2, 3, 5, 6, 9, 10], "usual": 2, "essenti": [2, 5, 9], "deriv": [2, 7, 9, 11], "arch": 2, "manjaro": 2, "devel": 2, "fedora": 2, "dnf": 2, "groupinstal": 2, "tool": [2, 3, 9, 10, 11], "librari": 2, "compil": 2, "miss": 2, "even": [2, 5, 6, 9, 10, 11], "pre": [2, 7, 9], "built": [2, 5, 9, 11], "few": [2, 3, 5, 6, 9, 10, 11], "extrem": [2, 9, 10, 11], "low": [2, 3, 5, 6, 9, 11], "bandwidth": [2, 5, 6, 7, 9, 10, 11], "These": [2, 5, 7, 9, 10], "feel": 2, "work": [2, 3, 5, 6, 9, 10, 11], "design": [2, 3, 6, 9, 11], "well": [2, 3, 5, 6, 7, 9, 11], "lora": [2, 3, 4, 9, 11], "link": [2, 3, 4, 5, 6, 7, 10, 11], "wifi": [2, 4, 5, 6, 9, 10, 11], "wire": [2, 3, 4, 5, 11], "ethernet": [2, 3, 5, 6, 9, 11], "combin": [2, 4, 6, 9], "As": [2, 3, 5, 6, 7, 9, 11], "easi": [2, 3, 5, 9, 10, 11], "experi": [2, 9], "without": [2, 3, 6, 9, 11], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "devic": [2, 3, 4, 5, 6, 7, 9, 10], "enough": [2, 3, 9], "physic": [2, 3, 5, 9, 10], "rnsh": 2, "fulli": [2, 3, 9, 10, 11], "session": [2, 9], "pipe": [2, 4, 11], "ssh": 2, "suit": [2, 3, 9, 10], "featur": [2, 8, 9, 11], "delai": [2, 5, 9, 10], "browser": 2, "page": [2, 4, 9], "dynam": [2, 10], "render": 2, "authent": [2, 5, 6, 7, 9, 10, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": 2, "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "veri": [2, 3, 5, 6, 7, 8, 9, 10, 11], "might": [2, 5, 6, 9, 10], "reboot": 2, "again": [2, 5, 9, 10], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 9], "maco": 2, "peopl": [2, 9], "compat": [2, 3, 5, 7, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "come": [2, 9], "easier": [2, 5, 6, 10], "rnsd": [2, 4], "background": [2, 5], "foreground": 2, "servic": [2, 4, 6], "rnstatu": [2, 4, 5, 9], "rnpath": [2, 4, 5], "rnprobe": [2, 4], "view": [2, 5, 9, 10], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "locat": [2, 3, 6, 9, 10], "exampl": [2, 3, 4, 5, 7, 9, 10, 11], "exampleconfig": [2, 10], "broadcast": [2, 4, 5, 7, 9], "domain": [2, 5], "further": [2, 4, 5], "tcp": [2, 3, 4, 6, 9, 11], "There": [2, 6, 9, 11], "subnet": [2, 6], "rout": [2, 5, 6, 7, 9, 10, 11], "tabl": [2, 5, 6, 9, 10], "thing": 2, "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "utilis": [2, 6, 7, 10, 11], "extern": [2, 5, 7, 11], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "gatewai": [2, 5, 6, 9], "enabl": [2, 3, 5, 6, 7, 9, 10, 11], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": 2, "offer": [2, 4, 5, 7, 9], "carefulli": 2, "tcpserverinterfac": [2, 5], "access": [2, 4, 5, 6, 7, 10], "ip": [2, 3, 5, 9, 10, 11], "faster": [2, 5, 9], "lower": [2, 5, 10], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": 2, "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": 2, "most": [2, 3, 5, 6, 9, 10], "anymor": 2, "through": [2, 3, 5, 6, 7, 9, 10, 11], "invis": [2, 5], "daemon": [2, 5, 7, 10], "parallel": 2, "For": [2, 3, 5, 6, 7, 9, 10, 11], "alwai": [2, 5, 7, 9, 10], "node": [2, 4, 5, 6, 10, 11], "i2pd": [2, 5], "mix": [2, 5, 6, 10], "hide": 2, "relai": 2, "extra": [2, 5, 6, 10], "comput": [2, 9, 11], "power": [2, 3, 5, 9, 10], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10], "difficult": [2, 3], "non": [2, 7, 9], "behind": [2, 9], "firewal": [2, 5], "nat": 2, "preserv": [2, 7], "anonym": [2, 6, 7, 9, 11], "care": [2, 7, 11], "experiment": [2, 11], "made": [2, 7, 9], "dublin": [2, 10], "hub": [2, 5], "tcpclientinterfac": [2, 3, 5], "ye": [2, 5, 9, 10], "target_host": [2, 5], "target_port": [2, 5], "4965": [2, 10], "betweenthebord": 2, "4242": [2, 5], "uxg5kubabakh3jtnvsipingbr5574dle7bubvip7llfvwx2tgrua": 2, "b32": [2, 5], "point": [2, 3, 5, 6, 9, 10], "absolut": [2, 8, 11], "usag": [2, 4, 5, 7, 8, 10], "occasion": 2, "test": [2, 9], "failur": [2, 5], "guarante": [2, 9], "hardwar": [2, 4, 5, 6, 7, 9, 10, 11], "wide": [2, 3, 5, 9, 11], "section": [2, 3, 5, 6, 9, 10], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "custom": [2, 5, 7, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": [2, 4], "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "pip3": [2, 10], "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "step": [2, 3], "pyseri": 2, "api": [2, 4, 9, 11], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": 2, "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "folder": 2, "symlink": [2, 10], "cd": 2, "ln": [2, 10], "echo": [2, 4, 10], "ve": 2, "immedi": [2, 5, 10], "necessari": [2, 3, 5, 6, 7, 9], "nano": 2, "repeat": 2, "process": [2, 3, 5, 7, 9], "h": [2, 10], "ping": [2, 10], "replac": [2, 9, 10], "below": [2, 3, 5, 10], "174a64852a75682259ad8b921b8bf416": 2, "filetransf": [2, 4, 7], "understand": [2, 4, 7, 10], "submit": 2, "pull": 2, "request": [2, 4, 5, 7, 9, 10], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "place": [2, 6, 9, 10], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 9], "termux": 2, "f": 2, "droid": 2, "emul": 2, "environ": [2, 6, 9], "abil": [2, 3], "pkg": 2, "sure": [2, 3, 10], "upgrad": [2, 9], "Then": 2, "reason": [2, 5, 9], "attempt": [2, 3, 7], "openssl": [2, 9], "libffi": 2, "rust": 2, "export": 2, "cargo_build_target": 2, "aarch64": 2, "sever": [2, 6, 7, 10], "succe": 2, "softwar": [2, 3, 5, 9, 11], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "apk": 2, "tutori": 2, "code": [2, 3, 4, 5, 10], "startig": 2, "architectur": 2, "precompil": 2, "dev": [2, 5, 10], "64": [2, 9, 10], "32": [2, 9], "rasperri": 2, "os": [2, 5], "april": 2, "2023": 2, "onto": [2, 9], "unfortun": 2, "pipx": 2, "isol": [2, 5, 10], "neg": 2, "affect": [2, 5], "ensurepath": 2, "rare": [2, 5], "obscur": 2, "unusu": 2, "rnspure": 2, "No": [2, 5, 9, 10, 11], "matter": [2, 5], "perfectli": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 11], "primit": [2, 4], "One": [3, 7], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "conceiv": 3, "kind": [3, 5, 6, 9], "medium": [3, 5, 6, 7, 9, 11], "flexibl": [3, 5, 11], "cover": [3, 9, 11], "wireless": [3, 6], "decad": 3, "radio": [3, 4, 5, 6, 7, 9, 10, 11], "modem": [3, 5, 6, 7, 9, 11], "modern": [3, 9], "millimet": 3, "wave": 3, "backhaul": [3, 6], "oper": [3, 5, 6, 7, 9, 10, 11], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "broad": 3, "abund": 3, "sometim": 3, "especi": [3, 5], "scratch": 3, "real": [3, 6, 11], "world": [3, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "emploi": [3, 9], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": 3, "either": [3, 5, 6, 7, 9, 10], "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "particular": 3, "plaform": 3, "depend": [3, 4, 6, 7, 9, 10], "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "limit": [3, 6, 9], "common": [3, 4, 6, 9, 10, 11], "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "high": [3, 5, 9, 11], "level": [3, 5, 9, 10], "directli": [3, 5, 7, 9, 10, 11], "replic": [3, 9], "togeth": [3, 9, 10], "exact": [3, 5, 9], "explain": [3, 7], "approach": [3, 9, 10], "develop": [3, 4, 7, 8, 9, 11], "boil": 3, "obtain": [3, 7, 9], "autom": [3, 8, 9], "provis": [3, 10], "rnodeinterfac": [3, 5, 10], "ic": 3, "semtech": 3, "sx1276": 3, "platform": [3, 4, 9], "esp32": 3, "manufactur": 3, "io": 3, "avr": 3, "atmega1284p": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "question": [3, 5], "port": [3, 4, 5, 6, 9, 11], "air": [3, 11], "id": [3, 5, 7, 9, 10], "itself": [3, 4, 9], "touch": [3, 11], "produc": 3, "short": [3, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 9, 10], "dhcp": [3, 5, 10], "dn": 3, "least": [3, 5, 9, 10, 11], "transpar": [3, 5, 9, 10], "capac": [3, 5, 7, 9], "distanc": [3, 9], "ubiqu": 3, "airmax": 3, "ltu": 3, "mikrotik": 3, "exhaust": [3, 9], "rel": [3, 9, 11], "cheap": [3, 9], "co": [3, 5, 11], "concurr": [3, 9, 10], "pattern": [3, 9], "gain": [3, 7, 9], "antenna": 3, "backbon": 3, "area": [3, 5, 6, 9, 11], "aim": [4, 9], "particip": [4, 6, 9], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "instal": [4, 5, 6, 9, 10, 11], "resolv": [4, 5], "issu": [4, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "android": 4, "arm64": 4, "raspberri": [4, 6, 9, 10, 11], "debian": [4, 9, 10], "bookworm": 4, "ubuntu": [4, 10], "lunar": 4, "pure": [4, 9], "rncp": 4, "rnx": 4, "improv": [4, 5, 8], "fix": [4, 9], "motiv": 4, "goal": [4, 5], "introduct": 4, "announc": [4, 7, 10], "mechan": [4, 5], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "rule": [4, 5], "udp": [4, 6, 9, 10, 11], "ax": [4, 11], "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 7, 9], "buffer": [4, 5, 7], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": 4, "distinct": [5, 9], "topologi": [5, 9], "endless": 5, "describ": [5, 7, 9], "give": [5, 9, 10], "respect": [5, 11], "discover": 5, "autoconfigur": [5, 11], "ipv6": [5, 10], "router": [5, 10], "sort": [5, 9], "switch": [5, 9, 10], "interface_en": [5, 10], "lan": 5, "group": [5, 7, 9], "group_id": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "multicast": 5, "autodiscov": 5, "discoveri": [5, 9, 10], "scope": 5, "admin": 5, "organis": [5, 6, 8], "custom_network_nam": 5, "discovery_scop": 5, "discovery_port": 5, "48555": 5, "data_port": 5, "49555": 5, "frequent": 5, "block": 5, "inbound": [5, 7], "portabl": [5, 9], "persist": [5, 10], "achiev": [5, 7, 9], "geti2p": 5, "net": 5, "websit": 5, "base32": 5, "comma": 5, "5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq": 5, "output": [5, 10], "event": 5, "simplest": [5, 9], "tunnel": [5, 9, 11], "interchang": 5, "degre": 5, "retain": 5, "eas": [5, 9], "simpler": 5, "listen_ip": 5, "listen_port": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "natur": 5, "toler": 5, "intermitt": 5, "gracefulli": 5, "restor": 5, "reappear": 5, "hostnam": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "tnc": [5, 7, 10, 11], "8001": 5, "caution": 5, "frame": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "intern": [5, 7, 9], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": 5, "udpinterfac": 5, "forward_ip": 5, "255": 5, "forward_port": 5, "assum": [5, 9], "55": 5, "72": 5, "24": 5, "equival": 5, "forward": [5, 7, 9, 11], "segment": [5, 6, 7, 9, 11], "cours": [5, 9], "15": 5, "16": [5, 9, 10], "ttyusb0": [5, 10], "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "7": [5, 9, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "12": [5, 10], "fastest": [5, 9], "longest": 5, "spreadingfactor": 5, "throough": 5, "codingr": 5, "interv": [5, 7], "id_callsign": 5, "mycal": 5, "id_interv": 5, "600": 5, "homebrew": 5, "amount": [5, 6, 7, 9, 11], "ram": 5, "flow_control": 5, "pair": [5, 7, 9, 10], "laser": 5, "serialinterfac": 5, "baud": 5, "speed": [5, 9, 10], "115200": [5, 10], "databit": [5, 10], "pariti": [5, 10], "stopbit": [5, 10], "stdin": [5, 10], "virtual": [5, 6, 9, 10, 11], "netcat": 5, "l": [5, 10], "5757": 5, "respawn": 5, "respawn_delai": 5, "continu": [5, 7, 8, 11], "scan": 5, "eof": 5, "respawn_interv": 5, "varieti": [5, 9, 10, 11], "openmodem": [5, 11], "period": [5, 7, 9], "beacon": 5, "station": 5, "kissinterfac": [5, 10], "ttyusb1": 5, "preambl": [5, 10], "150": [5, 10], "tail": 5, "txtail": [5, 10], "cdma": 5, "200": [5, 10], "slottim": [5, 10], "20": [5, 9, 10], "elaps": 5, "comment": [5, 10], "amateur": [5, 11], "spectrum": [5, 9], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 10], "squelch": 5, "rx": 5, "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "airtim": 5, "behaviour": [5, 10], "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": 5, "mostli": [5, 6, 9], "quiet": [5, 10], "momentarili": 5, "disappear": [5, 10], "network_nam": 5, "passphras": [5, 9], "alon": 5, "ifac_s": 5, "customis": 5, "carri": [5, 7, 9, 10], "512": [5, 7, 9], "announce_cap": [5, 7], "maximum": [5, 7, 9], "alloc": [5, 7, 9, 10], "given": [5, 6, 7, 9, 10], "upkeep": 5, "cap": 5, "queue": [5, 9], "nearbi": 5, "overwhelm": [5, 7], "rapidli": 5, "spam": 5, "effect": 5, "excess": 5, "benefici": [5, 10], "balanc": 5, "necesarri": 5, "bitrat": 5, "report": [5, 8], "guess": 5, "per": [5, 7, 9, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "addition": [5, 9], "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "mobil": [5, 9], "seen": [5, 9], "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": 5, "impact": [5, 9], "announce_rate_target": 5, "announce_rate_grac": 5, "announce_rate_penalti": 5, "basi": [5, 7, 9, 10, 11], "moder": 5, "violat": 5, "enforc": 5, "penalti": 5, "7200": 5, "annouce_cap": 5, "mention": [5, 9], "strategi": [5, 7], "decis": [5, 9], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 9], "mind": [6, 11], "autonom": [6, 9], "terminologi": [6, 9], "rest": [6, 11], "billion": [6, 9], "larger": [6, 9], "higher": [6, 11], "discrimin": 6, "ephemer": [6, 7, 9, 11], "ellipt": [6, 7, 9, 11], "curv": [6, 7, 9, 11], "diffi": [6, 9, 11], "hellman": [6, 9, 11], "exchang": [6, 7, 9, 11], "curve25519": [6, 7, 9, 11], "throttl": 6, "thu": [6, 7, 9], "agnost": [6, 9], "equal": [6, 7, 9], "keystor": 6, "degrad": 6, "term": [6, 9], "stationari": [6, 10], "candid": 6, "optim": 6, "intend": [6, 9], "trustless": [6, 9, 11], "leav": [6, 9], "free": [6, 8, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": 6, "legaci": 6, "unifi": 6, "underli": [6, 11], "carrier": [6, 11], "involv": 6, "hardlin": 6, "decid": [6, 7, 9], "illustr": [6, 9], "plan": [6, 9], "member": 6, "mainli": 6, "three": [6, 9], "hill": 6, "top": [6, 9], "chosen": [6, 9], "sight": 6, "becaus": [6, 9], "four": 6, "At": [6, 9], "usb": [6, 9, 10], "cabl": 6, "adapt": 6, "suppli": [6, 7, 9], "grow": 6, "core": [6, 9, 10, 11], "those": [6, 9], "previous": [6, 7, 9], "d": [6, 10], "island": 6, "investig": 6, "dori": 6, "willing": 6, "she": 6, "her": 6, "home": 6, "newli": [6, 7, 9], "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": 6, "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "mtu": [7, 9, 11], "500": [7, 9, 11], "adher": 7, "507": 7, "break": [7, 9, 11], "prerequisit": 7, "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "drop": [7, 9, 10], "appli": [7, 9], "individu": [7, 9, 11], "static": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "create_kei": 7, "decrypt": [7, 9], "verif": [7, 9], "sign": [7, 9], "dh": 7, "keysiz": 7, "x25519": [7, 9, 11], "concaten": 7, "256": [7, 9], "128": [7, 9, 11], "constant": 7, "truncat": [7, 9], "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "feed": 7, "from_fil": 7, "to_fil": 7, "Be": [7, 10], "get_private_kei": 7, "get_public_kei": 7, "load_private_kei": 7, "load_public_kei": 7, "pub_byt": 7, "ciphertext": 7, "token": [7, 9], "keyerror": 7, "hold": [7, 9], "ciphertext_token": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "expand_nam": 7, "app_and_aspects_from_nam": 7, "full_nam": [7, 10], "tupl": 7, "hash_from_name_and_ident": 7, "path_respons": 7, "attached_interfac": 7, "tag": 7, "flag": [7, 9], "accepts_link": 7, "accept": [7, 8, 9, 10], "set_proof_requested_callback": 7, "proof_strategi": 7, "prove_non": 7, "prove_app": 7, "proof_requested_callback": 7, "allow_non": 7, "allowed_list": 7, "whatev": [7, 9], "funcion": 7, "allow_list": 7, "deregister_request_handl": 7, "deregist": 7, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "secreci": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "6": [7, 10], "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "mark": [7, 9], "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "get_establishment_r": 7, "ocur": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "whenev": [7, 9], "cancel": 7, "total": [7, 9, 11], "get_seg": 7, "divid": 7, "get_hash": 7, "bi": [7, 9], "neither": [7, 9], "constrain": 7, "message_class": 7, "recept": 7, "messagecallbacktyp": 7, "bool": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "adjust": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "document": [7, 9], "create_writ": 7, "receive_stream_id": 7, "send_stream_id": 7, "rawiobas": 7, "add_ready_callback": 7, "cb": [7, 9], "remove_ready_callback": 7, "pathfinder_m": 7, "attribut": 7, "deregister_announce_handl": 7, "hops_to": 7, "next_hop": 7, "next_hop_interfac": 7, "on_interfac": 7, "recurs": 7, "gratefulli": 8, "monero": 8, "84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w": 8, "ethereum": 8, "0x81f7b979fea6134ba9fd5c701b3501a2e61e897a": 8, "bitcoin": 8, "3cpmacgm34qyvr6xwlvejmi2ane3pzquuq": 8, "ko": 8, "fi": 8, "roadmap": 8, "realiti": 8, "quickli": [8, 9, 11], "sponsor": [8, 11], "dysfunct": 8, "analyt": 8, "telemetri": 8, "collect": 8, "under": [8, 10, 11], "circumst": [8, 9], "reli": [8, 9], "fashion": 8, "u": [8, 9, 10], "suggest": 8, "briefli": 9, "overal": 9, "principl": [9, 11], "author": 9, "That": 9, "said": 9, "pretti": 9, "sentiment": 9, "philosophi": 9, "problem": 9, "seek": 9, "solv": 9, "solut": 9, "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": 9, "approv": 9, "gatekeep": 9, "inevit": 9, "lead": 9, "govern": 9, "alter": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "usabl": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "modifi": [9, 10], "interest": 9, "strong": 9, "oneself": 9, "unlicens": 9, "licens": 9, "condit": [9, 11], "pmr": 9, "written": 9, "programm": 9, "orient": 9, "multipoint": 9, "recipi": 9, "singular": 9, "_represented_": 9, "characterist": 9, "13425ec15b621c1d928589718000d814": 9, "trade": 9, "simultan": 9, "unlik": 9, "nears": 9, "congest": 9, "galact": 9, "scale": [9, 11], "obvious": 9, "ridicul": 9, "multi": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "capabl": 9, "dot": [9, 10], "notat": [9, 10], "repres": 9, "plenti": 9, "environment": 9, "monitor": 9, "measur": 9, "environmentlogg": 9, "remotesensor": 9, "temperatur": 9, "4faf1b2e0a077e6a9d92fa051f256038": 9, "advis": 9, "expand": 9, "recap": 9, "indirectli": 9, "ledger": 9, "therefor": [9, 11], "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "accord": 9, "around": 9, "topic": 9, "necessarili": 9, "person": 9, "entiti": 9, "robot": 9, "sensor": 9, "someth": 9, "agent": 9, "manipul": [9, 11], "multilater": 9, "creation": [9, 11], "great": 9, "suffic": 9, "cluster": 9, "hear": 9, "But": 9, "lot": 9, "surviv": 9, "overcom": 9, "challeng": 9, "asymmetr": [9, 11], "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "retransmit": 9, "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newer": 9, "newest": 9, "discard": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "travers": 9, "rememb": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "intermediari": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "rotat": 9, "memori": 9, "thereaft": 9, "297": [9, 11], "practic": [9, 11], "neglig": 9, "1200": 9, "96": 9, "keypair": 9, "simplic": 9, "explan": [9, 10], "lki": 9, "laid": 9, "had": 9, "construct": [9, 11], "lkr": 9, "chose": 9, "direction": 9, "unequivoc": 9, "retransmiss": 9, "reassembl": 9, "programmat": 9, "satisfi": 9, "half": [9, 11], "duplex": [9, 11], "averag": 9, "throughput": [9, 11], "x": [9, 10], "runtim": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "recent": 9, "mac": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "ifac": [9, 10], "compos": 9, "field": 9, "context": 9, "465": 9, "vari": [9, 10], "00": [9, 10], "01": 9, "11": 9, "_______": 9, "________________": 9, "________": 9, "______": 9, "__": 9, "_": 9, "01010000": 9, "00000100": 9, "hash1": 9, "hash2": 9, "header_2": 9, "00000000": 9, "00000111": 9, "header_1": 9, "10000000": 9, "exclud": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "x22519": 9, "hkdf": 9, "fernet": [9, 11], "cbc": [9, 11], "hmac": [9, 11], "hashlib": 9, "pkcs7": [9, 11], "pad": [9, 11], "trivial": [9, 11], "consequ": 9, "backend": 9, "loss": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "pose": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "boot": 10, "edit": 10, "ie": 10, "breviti": 10, "socket": 10, "turn": 10, "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "panic": 10, "unrecover": 10, "occur": [10, 11], "panic_on_interface_error": 10, "warn": 10, "debug": 10, "unus": 10, "teach": 10, "task": 10, "v": 10, "show": 10, "ifconfig": 10, "gbp": 10, "13": 10, "kb": 10, "86": 10, "mbp": 10, "63": 10, "23": 10, "80": 10, "17": 10, "tcpinterfac": 10, "187": 10, "27": 10, "74": 10, "uhf": [10, 11], "30": 10, "kbp": 10, "e702c42ba8": 10, "49": 10, "9": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "w": 10, "posit": 10, "probe": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "decreas": 10, "auth": 10, "941bed5e228775e5a8079fc38b1ccf3f": 10, "1b03013c25f1c2ca068a4f080b844a10": 10, "7a55144adf826958a9529a3bcf08b149": 10, "cat": 10, "proc": 10, "cpuinfo": 10, "pseudo": 10, "stderr": 10, "noauth": 10, "noid": 10, "mirror": 10, "max": 10, "fw": 10, "nocheck": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "flash": 10, "attach": 10, "older": 10, "onlin": 10, "extract": 10, "cach": 10, "bluetooth": 10, "consol": 10, "unlock": 10, "perman": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "bin": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "readili": 11, "advers": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "subject": 11, "outsid": 11, "planetari": 11, "hierarch": 11, "beaureucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "sha256": 11, "iv": 11, "urandom": 11, "intuit": 11, "friendli": 11, "44": 11, "gigabyt": 11, "scalabl": 11, "hoc": 11, "optic": 11, "transform": 11, "fact": 11, "strength": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11}, "objects": {"RNS": [[7, 0, 1, "", "Buffer"], [7, 0, 1, "", "Destination"], [7, 0, 1, "", "Identity"], [7, 0, 1, "", "Link"], [7, 0, 1, "", "MessageBase"], [7, 0, 1, "", "Packet"], [7, 0, 1, "", "PacketReceipt"], [7, 0, 1, "", "RawChannelReader"], [7, 0, 1, "", "RawChannelWriter"], [7, 0, 1, "", "RequestReceipt"], [7, 0, 1, "", "Resource"], [7, 0, 1, "", "Reticulum"], [7, 0, 1, "", "Transport"]], "RNS.Buffer": [[7, 1, 1, "", "create_bidirectional_buffer"], [7, 1, 1, "", "create_reader"], [7, 1, 1, "", "create_writer"]], "RNS.Channel": [[7, 0, 1, "", "Channel"]], "RNS.Channel.Channel": [[7, 2, 1, "", "MDU"], [7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[7, 1, 1, "", "accepts_links"], [7, 1, 1, "", "announce"], [7, 1, 1, "", "app_and_aspects_from_name"], [7, 1, 1, "", "clear_default_app_data"], [7, 1, 1, "", "create_keys"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "deregister_request_handler"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "expand_name"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "hash"], [7, 1, 1, "", "hash_from_name_and_identity"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "register_request_handler"], [7, 1, 1, "", "set_default_app_data"], [7, 1, 1, "", "set_link_established_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_proof_requested_callback"], [7, 1, 1, "", "set_proof_strategy"], [7, 1, 1, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "from_bytes"], [7, 1, 1, "", "from_file"], [7, 1, 1, "", "full_hash"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "get_public_key"], [7, 1, 1, "", "get_random_hash"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "load_public_key"], [7, 1, 1, "", "recall"], [7, 1, 1, "", "recall_app_data"], [7, 1, 1, "", "sign"], [7, 1, 1, "", "to_file"], [7, 1, 1, "", "truncated_hash"], [7, 1, 1, "", "validate"]], "RNS.Link": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "ESTABLISHMENT_TIMEOUT_PER_HOP"], [7, 3, 1, "", "KEEPALIVE"], [7, 3, 1, "", "KEEPALIVE_TIMEOUT_FACTOR"], [7, 3, 1, "", "STALE_GRACE"], [7, 3, 1, "", "STALE_TIME"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": 0, "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "an": 1, "explan": 1, "reticulum": [1, 2, 3, 4, 8, 9, 10, 11], "human": 1, "Beings": 1, "get": [2, 9], "start": 2, "fast": 2, "standalon": 2, "instal": [2, 3], "resolv": 2, "depend": 2, "issu": 2, "try": 2, "us": [2, 10, 11], "base": [2, 3], "program": [2, 10], "remot": 2, "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": 2, "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": 2, "interfac": [2, 5, 9, 11], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "raspberri": 2, "pi": 2, "debian": 2, "bookworm": 2, "ubuntu": 2, "lunar": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "rnode": [3, 5], "support": [3, 5, 8], "board": 3, "lilygo": 3, "lora32": 3, "v2": 3, "1": 3, "0": 3, "t": 3, "beam": 3, "heltec": 3, "unsign": 3, "x": 3, "v1": 3, "usag": 3, "supplier": 3, "wifi": 3, "combin": 3, "type": [3, 9, 11], "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "auto": 5, "i2p": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "lora": [5, 6], "serial": [5, 10], "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "destin": 9, "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "packet": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "configur": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "devic": 11, "caveat": 11, "emptor": 11}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "Develop a Program with Reticulum": [[2, "develop-a-program-with-reticulum"]], "Participate in Reticulum Development": [[2, "participate-in-reticulum-development"]], "Platform-Specific Install Notes": [[2, "platform-specific-install-notes"]], "Android": [[2, "android"]], "ARM64": [[2, "arm64"]], "Raspberry Pi": [[2, "raspberry-pi"]], "Debian Bookworm": [[2, "debian-bookworm"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "Pure-Python Reticulum": [[2, "pure-python-reticulum"]], "Communications Hardware": [[3, "communications-hardware"]], "RNode": [[3, "rnode"]], "Creating RNodes": [[3, "creating-rnodes"]], "Supported Boards": [[3, "supported-boards"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "Unsigned RNode v1.x": [[3, "unsigned-rnode-v1-x"]], "Installation": [[3, "installation"]], "Usage with Reticulum": [[3, "usage-with-reticulum"]], "Suppliers": [[3, "suppliers"]], "WiFi-based Hardware": [[3, "wifi-based-hardware"]], "Combining Hardware Types": [[3, "combining-hardware-types"]], "Reticulum Network Stack Manual": [[4, "reticulum-network-stack-manual"]], "Table Of Contents": [[4, "table-of-contents"]], "Indices and Tables": [[4, "indices-and-tables"]], "Supported Interfaces": [[5, "supported-interfaces"]], "Auto Interface": [[5, "auto-interface"]], "I2P Interface": [[5, "i2p-interface"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]], "What is Reticulum?": [[11, "what-is-reticulum"]], "Current Status": [[11, "current-status"]], "What does Reticulum Offer?": [[11, "what-does-reticulum-offer"]], "Where can Reticulum be Used?": [[11, "where-can-reticulum-be-used"]], "Interface Types and Devices": [[11, "interface-types-and-devices"]], "Caveat Emptor": [[11, "caveat-emptor"]], "Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "API Reference": [[7, "api-reference"]]}, "indexentries": {"announce_cap (rns.reticulum attribute)": [[7, "RNS.Reticulum.ANNOUNCE_CAP"]], "buffer (class in rns)": [[7, "RNS.Buffer"]], "curve (rns.identity attribute)": [[7, "RNS.Identity.CURVE"]], "curve (rns.link attribute)": [[7, "RNS.Link.CURVE"]], "channel (class in rns.channel)": [[7, "RNS.Channel.Channel"]], "destination (class in rns)": [[7, "RNS.Destination"]], "encrypted_mdu (rns.packet attribute)": [[7, "RNS.Packet.ENCRYPTED_MDU"]], "establishment_timeout_per_hop (rns.link attribute)": [[7, "RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP"]], "identity (class in rns)": [[7, "RNS.Identity"]], "keepalive (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE"]], "keepalive_timeout_factor (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE_TIMEOUT_FACTOR"]], "keysize (rns.identity attribute)": [[7, "RNS.Identity.KEYSIZE"]], "link (class in rns)": [[7, "RNS.Link"]], "mdu (rns.channel.channel property)": [[7, "RNS.Channel.Channel.MDU"]], "msgtype (rns.messagebase attribute)": [[7, "RNS.MessageBase.MSGTYPE"]], "mtu (rns.reticulum attribute)": [[7, "RNS.Reticulum.MTU"]], "messagebase (class in rns)": [[7, "RNS.MessageBase"]], "pathfinder_m (rns.transport attribute)": [[7, "RNS.Transport.PATHFINDER_M"]], "plain_mdu (rns.packet attribute)": [[7, "RNS.Packet.PLAIN_MDU"]], "packet (class in rns)": [[7, "RNS.Packet"]], "packetreceipt (class in rns)": [[7, "RNS.PacketReceipt"]], "rawchannelreader (class in rns)": [[7, "RNS.RawChannelReader"]], "rawchannelwriter (class in rns)": [[7, "RNS.RawChannelWriter"]], "requestreceipt (class in rns)": [[7, "RNS.RequestReceipt"]], "resource (class in rns)": [[7, "RNS.Resource"]], "reticulum (class in rns)": [[7, "RNS.Reticulum"]], "stale_grace (rns.link attribute)": [[7, "RNS.Link.STALE_GRACE"]], "stale_time (rns.link attribute)": [[7, "RNS.Link.STALE_TIME"]], "truncated_hashlength (rns.identity attribute)": [[7, "RNS.Identity.TRUNCATED_HASHLENGTH"]], "transport (class in rns)": [[7, "RNS.Transport"]], "__init__() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.__init__"]], "__init__() (rns.rawchannelwriter method)": [[7, "RNS.RawChannelWriter.__init__"]], "accepts_links() (rns.destination method)": [[7, "RNS.Destination.accepts_links"]], "add_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.add_message_handler"]], "add_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.add_ready_callback"]], "advertise() (rns.resource method)": [[7, "RNS.Resource.advertise"]], "announce() (rns.destination method)": [[7, "RNS.Destination.announce"]], "app_and_aspects_from_name() (rns.destination static method)": [[7, "RNS.Destination.app_and_aspects_from_name"]], "cancel() (rns.resource method)": [[7, "RNS.Resource.cancel"]], "clear_default_app_data() (rns.destination method)": [[7, "RNS.Destination.clear_default_app_data"]], "create_bidirectional_buffer() (rns.buffer static method)": [[7, "RNS.Buffer.create_bidirectional_buffer"]], "create_keys() (rns.destination method)": [[7, "RNS.Destination.create_keys"]], "create_reader() (rns.buffer static method)": [[7, "RNS.Buffer.create_reader"]], "create_writer() (rns.buffer static method)": [[7, "RNS.Buffer.create_writer"]], "decrypt() (rns.destination method)": [[7, "RNS.Destination.decrypt"]], "decrypt() (rns.identity method)": [[7, "RNS.Identity.decrypt"]], "deregister_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.deregister_announce_handler"]], "deregister_request_handler() (rns.destination method)": [[7, "RNS.Destination.deregister_request_handler"]], "encrypt() (rns.destination method)": [[7, "RNS.Destination.encrypt"]], "encrypt() (rns.identity method)": [[7, "RNS.Identity.encrypt"]], "expand_name() (rns.destination static method)": [[7, "RNS.Destination.expand_name"]], "from_bytes() (rns.identity static method)": [[7, "RNS.Identity.from_bytes"]], "from_file() (rns.identity static method)": [[7, "RNS.Identity.from_file"]], "full_hash() (rns.identity static method)": [[7, "RNS.Identity.full_hash"]], "get_channel() (rns.link method)": [[7, "RNS.Link.get_channel"]], "get_data_size() (rns.resource method)": [[7, "RNS.Resource.get_data_size"]], "get_establishment_rate() (rns.link method)": [[7, "RNS.Link.get_establishment_rate"]], "get_hash() (rns.resource method)": [[7, "RNS.Resource.get_hash"]], "get_parts() (rns.resource method)": [[7, "RNS.Resource.get_parts"]], "get_private_key() (rns.destination method)": [[7, "RNS.Destination.get_private_key"]], "get_private_key() (rns.identity method)": [[7, "RNS.Identity.get_private_key"]], "get_progress() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_progress"]], "get_progress() (rns.resource method)": [[7, "RNS.Resource.get_progress"]], "get_public_key() (rns.identity method)": [[7, "RNS.Identity.get_public_key"]], "get_random_hash() (rns.identity static method)": [[7, "RNS.Identity.get_random_hash"]], "get_remote_identity() (rns.link method)": [[7, "RNS.Link.get_remote_identity"]], "get_request_id() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_request_id"]], "get_response() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response"]], "get_response_time() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response_time"]], "get_rtt() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_rtt"]], "get_segments() (rns.resource method)": [[7, "RNS.Resource.get_segments"]], "get_status() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_status"]], "get_status() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_status"]], "get_transfer_size() (rns.resource method)": [[7, "RNS.Resource.get_transfer_size"]], "has_path() (rns.transport static method)": [[7, "RNS.Transport.has_path"]], "hash() (rns.destination static method)": [[7, "RNS.Destination.hash"]], "hash_from_name_and_identity() (rns.destination static method)": [[7, "RNS.Destination.hash_from_name_and_identity"]], "hops_to() (rns.transport static method)": [[7, "RNS.Transport.hops_to"]], "identify() (rns.link method)": [[7, "RNS.Link.identify"]], "inactive_for() (rns.link method)": [[7, "RNS.Link.inactive_for"]], "is_compressed() (rns.resource method)": [[7, "RNS.Resource.is_compressed"]], "is_ready_to_send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.is_ready_to_send"]], "load_private_key() (rns.destination method)": [[7, "RNS.Destination.load_private_key"]], "load_private_key() (rns.identity method)": [[7, "RNS.Identity.load_private_key"]], "load_public_key() (rns.identity method)": [[7, "RNS.Identity.load_public_key"]], "next_hop() (rns.transport static method)": [[7, "RNS.Transport.next_hop"]], "next_hop_interface() (rns.transport static method)": [[7, "RNS.Transport.next_hop_interface"]], "no_inbound_for() (rns.link method)": [[7, "RNS.Link.no_inbound_for"]], "no_outbound_for() (rns.link method)": [[7, "RNS.Link.no_outbound_for"]], "pack() (rns.messagebase method)": [[7, "RNS.MessageBase.pack"]], "recall() (rns.identity static method)": [[7, "RNS.Identity.recall"]], "recall_app_data() (rns.identity static method)": [[7, "RNS.Identity.recall_app_data"]], "register_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.register_announce_handler"]], "register_message_type() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.register_message_type"]], "register_request_handler() (rns.destination method)": [[7, "RNS.Destination.register_request_handler"]], "remove_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.remove_message_handler"]], "remove_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.remove_ready_callback"]], "request() (rns.link method)": [[7, "RNS.Link.request"]], "request_path() (rns.transport static method)": [[7, "RNS.Transport.request_path"]], "resend() (rns.packet method)": [[7, "RNS.Packet.resend"]], "send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.send"]], "send() (rns.packet method)": [[7, "RNS.Packet.send"]], "set_default_app_data() (rns.destination method)": [[7, "RNS.Destination.set_default_app_data"]], "set_delivery_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_delivery_callback"]], "set_link_closed_callback() (rns.link method)": [[7, "RNS.Link.set_link_closed_callback"]], "set_link_established_callback() (rns.destination method)": [[7, "RNS.Destination.set_link_established_callback"]], "set_packet_callback() (rns.destination method)": [[7, "RNS.Destination.set_packet_callback"]], "set_packet_callback() (rns.link method)": [[7, "RNS.Link.set_packet_callback"]], "set_proof_requested_callback() (rns.destination method)": [[7, "RNS.Destination.set_proof_requested_callback"]], "set_proof_strategy() (rns.destination method)": [[7, "RNS.Destination.set_proof_strategy"]], "set_remote_identified_callback() (rns.link method)": [[7, "RNS.Link.set_remote_identified_callback"]], "set_resource_callback() (rns.link method)": [[7, "RNS.Link.set_resource_callback"]], "set_resource_concluded_callback() (rns.link method)": [[7, "RNS.Link.set_resource_concluded_callback"]], "set_resource_started_callback() (rns.link method)": [[7, "RNS.Link.set_resource_started_callback"]], "set_resource_strategy() (rns.link method)": [[7, "RNS.Link.set_resource_strategy"]], "set_timeout() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout"]], "set_timeout_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout_callback"]], "should_use_implicit_proof() (rns.reticulum static method)": [[7, "RNS.Reticulum.should_use_implicit_proof"]], "sign() (rns.destination method)": [[7, "RNS.Destination.sign"]], "sign() (rns.identity method)": [[7, "RNS.Identity.sign"]], "teardown() (rns.link method)": [[7, "RNS.Link.teardown"]], "to_file() (rns.identity method)": [[7, "RNS.Identity.to_file"]], "transport_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.transport_enabled"]], "truncated_hash() (rns.identity static method)": [[7, "RNS.Identity.truncated_hash"]], "unpack() (rns.messagebase method)": [[7, "RNS.MessageBase.unpack"]], "validate() (rns.identity method)": [[7, "RNS.Identity.validate"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Supported Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 11], "number": [0, 2, 5, 6, 7, 9, 10], "ar": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "includ": [0, 3, 4, 5, 7, 9], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10], "reticulum": [0, 5, 6, 7], "you": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "can": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "us": [0, 3, 4, 5, 6, 7, 9], "learn": [0, 2, 8, 9], "how": [0, 2, 3, 5, 6, 9, 10, 11], "write": [0, 2, 5, 7, 9], "your": [0, 2, 3, 4, 5, 6, 8, 9, 11], "own": [0, 2, 6, 7, 9, 10, 11], "program": [0, 3, 4, 5, 7, 9, 11], "The": [0, 2, 3, 4, 5, 6, 7, 11], "demonstr": [0, 5], "bare": 0, "minimum": [0, 5, 6, 9], "setup": [0, 2, 4, 5], "requir": [0, 2, 5, 6, 9, 10, 11], "connect": [0, 3, 4, 5, 6, 7, 9, 10, 11], "network": [0, 3, 5, 7, 9, 10, 11], "from": [0, 2, 3, 5, 6, 7, 9, 10, 11], "In": [0, 2, 3, 5, 6, 7, 9, 10, 11], "about": [0, 2, 3, 5, 6, 7, 9], "five": 0, "line": [0, 2, 3, 5, 6, 9, 10, 11], "have": [0, 2, 3, 5, 6, 7, 9, 10], "stack": [0, 2, 6, 7, 9, 10, 11], "initialis": [0, 7, 10], "readi": [0, 2, 3, 5, 6, 7, 11], "pass": [0, 3, 5, 6, 7, 9, 10], "traffic": [0, 2, 5, 6, 7, 9, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "rn": [0, 2, 3, 7, 9, 10], "start": [0, 3, 4, 5, 7, 9, 10], "up": [0, 2, 3, 5, 6, 9, 10, 11], "gener": [0, 2, 3, 5, 6, 7, 9, 10, 11], "new": [0, 5, 6, 7, 9, 10], "destin": [0, 2, 4, 5, 6, 7, 10], "let": [0, 2, 5, 6, 9, 10], "user": [0, 2, 5, 6, 9, 10, 11], "send": [0, 5, 7, 9, 10], "an": [0, 2, 3, 5, 6, 7, 9, 10, 11], "import": [0, 2, 3, 5, 6, 7, 8, 9], "argpars": 0, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 4, 5, 6, 7], "we": [0, 2, 3, 5, 8, 9], "ll": [0, 2, 11], "all": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "creat": [0, 4, 5, 6, 7, 9, 10, 11], "sinc": [0, 2, 5, 6, 7, 9], "basic": [0, 2, 4, 7, 10], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "part": [0, 5, 6, 7, 9], "rang": [0, 2, 3, 5, 6, 9, 10, 11], "util": [0, 3, 4, 5, 9], "put": [0, 3, 5, 10], "them": [0, 2, 3, 5, 6, 8, 9, 10, 11], "within": [0, 2, 5, 6, 7, 9], "namespac": 0, "example_util": [0, 10], "app_nam": [0, 7], "execut": [0, 2, 5, 7, 10], "when": [0, 2, 3, 5, 6, 7, 9, 10], "def": 0, "program_setup": 0, "configpath": 0, "must": [0, 2, 5, 6, 7, 9], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 11], "commun": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11], "also": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "exist": [0, 2, 3, 5, 9, 10, 11], "which": [0, 2, 5, 6, 7, 9, 10], "know": [0, 2, 3, 6, 7, 9, 11], "thei": [0, 2, 5, 6, 7, 9, 10], "reachabl": [0, 2, 5, 6, 7, 9, 10], "autoomat": 0, "path": [0, 2, 3, 5, 7, 9, 10], "anywher": [0, 5], "els": [0, 2, 6, 9], "IN": [0, 7], "singl": [0, 5, 7, 9, 10, 11], "minimalsampl": 0, "configur": [0, 2, 3, 4, 5, 6, 7, 9, 11], "automat": [0, 2, 3, 5, 6, 7, 9, 10, 11], "prove": [0, 9], "packet": [0, 2, 3, 4, 5, 6, 7, 10, 11], "adress": [0, 7, 9], "By": [0, 2, 5, 7, 9, 10], "do": [0, 2, 3, 5, 7, 9, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 9, 10], "incom": [0, 5, 7, 10], "transmit": [0, 5, 9], "back": [0, 5, 9, 11], "sender": [0, 2, 6, 9, 10], "anyon": [0, 2, 3, 6, 7, 9, 10], "tri": 0, "whether": [0, 5, 7, 9], "wa": [0, 3, 5, 6, 7, 9, 11], "receiv": [0, 2, 5, 7, 9, 10], "correctli": 0, "set_proof_strategi": [0, 7], "prove_al": [0, 7], "everyth": [0, 6, 9], "hand": 0, "over": [0, 3, 4, 5, 7, 9, 10, 11], "control": [0, 2, 3, 4, 6, 7, 9, 11], "loop": 0, "announceloop": 0, "log": [0, 5, 10], "prettyhexrep": 0, "hash": [0, 2, 7, 9, 10], "run": [0, 2, 3, 5, 6, 7, 9, 10, 11], "hit": 0, "enter": [0, 10], "manual": [0, 2, 5, 6, 7, 10], "ctrl": 0, "c": [0, 6, 10], "quit": 0, "until": [0, 2, 5, 7], "exit": [0, 2, 7, 10], "If": [0, 2, 3, 5, 6, 7, 9, 10, 11], "server": [0, 2, 3, 4, 7, 10], "client": [0, 2, 3, 4, 7], "messag": [0, 2, 7, 9, 10], "direct": [0, 2, 3, 6, 7, 9, 10], "toward": [0, 5, 9], "while": [0, 2, 3, 5, 6, 7, 9, 11], "true": [0, 5, 7, 10], "input": [0, 10], "sent": [0, 2, 7, 9, 10], "startup": [0, 10], "get": [0, 3, 4, 5, 7, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 6, 10], "action": 0, "store": [0, 3, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 3, 6, 8, 9, 10, 11], "altern": [0, 5, 10], "directori": [0, 10], "type": [0, 2, 4, 5, 6, 7, 10], "str": 0, "arg": 0, "parse_arg": 0, "configarg": 0, "except": [0, 5, 7], "keyboardinterrupt": 0, "print": [0, 5, 10], "found": [0, 2, 5, 6, 9, 10], "http": [0, 2, 8], "github": [0, 2, 8], "com": [0, 2, 8], "markqvist": [0, 2, 8], "blob": [0, 9], "master": [0, 7], "py": [0, 2, 9], "build": [0, 2, 3, 4, 5, 9, 11], "upon": [0, 9], "previou": 0, "explor": [0, 9, 11], "notif": [0, 7], "relev": [0, 3, 5, 7, 9, 10], "set": [0, 2, 3, 5, 6, 7, 9, 10, 11], "callback": [0, 7], "applic": [0, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 7, 9], "happen": [0, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "0": [0, 2, 5, 7, 9, 10, 11], "len": 0, "1": [0, 2, 5, 7, 9, 10], "data": [0, 2, 4, 5, 6, 7, 9, 11], "encod": [0, 7], "utf": 0, "8": [0, 5, 10], "nobl": 0, "ga": 0, "noble_ga": 0, "need": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "class": [0, 6, 7, 11], "method": [0, 2, 5, 7, 9], "take": [0, 2, 5, 9, 10, 11], "option": [0, 2, 3, 4, 6, 7, 9, 10], "argument": [0, 7, 10], "instanc": [0, 4, 5, 7, 9, 10], "some": [0, 2, 3, 5, 6, 7, 9, 10], "want": [0, 2, 3, 5, 6, 9, 10, 11], "aspect": [0, 3, 5, 7, 9], "__init__": [0, 7], "self": [0, 6, 11], "call": [0, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10, 11], "cannot": [0, 2, 11], "wildcard": 0, "received_announc": [0, 7], "destination_hash": [0, 7, 10], "announced_ident": [0, 7], "contain": [0, 6, 7, 9, 10], "follow": [0, 2, 3, 5, 7, 8, 9, 10, 11], "decod": 0, "plaintext": [0, 7], "unencrypt": [0, 7, 9], "inform": [0, 2, 4, 5, 6, 7, 9, 10], "ani": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "listen": [0, 5, 9, 10], "sy": 0, "did": 0, "one": [0, 2, 3, 5, 6, 7, 9, 10, 11], "public_inform": 0, "ad": [0, 3, 4, 5, 6, 7, 9, 11], "so": [0, 2, 3, 5, 6, 7, 8, 9, 11], "differ": [0, 2, 3, 5, 6, 7, 9, 10, 11], "plain": [0, 5, 7, 9], "uncencrypt": 0, "broadcast_destin": 0, "specifi": [0, 2, 3, 5, 6, 7, 10], "everi": [0, 5, 6, 7, 9], "time": [0, 2, 3, 5, 6, 7, 9, 10], "set_packet_callback": [0, 7], "packet_callback": 0, "main": 0, "broadcastloop": 0, "simpli": [0, 2, 3, 5, 6, 9, 10], "out": [0, 2, 3, 5, 6, 7, 9, 10, 11], "r": [0, 5, 9, 10], "n": [0, 9, 10], "end": [0, 5, 6, 7, 9, 11], "stdout": [0, 5, 10], "flush": 0, "text": [0, 2, 6, 9], "prompt": 0, "channelarg": 0, "between": [0, 5, 6, 7, 9], "interfac": [0, 3, 4, 6, 7, 10], "simpl": [0, 3, 7, 9, 10, 11], "respond": [0, 7], "receipt": [0, 7, 9], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 9, 11], "server_ident": 0, "queri": [0, 2, 7], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 7, 9], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 11], "wai": [0, 2, 5, 6, 7, 9], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9, 10], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": 0, "dbm": [0, 5, 10], "snr": 0, "db": 0, "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": 0, "hexadecim": [0, 9, 10], "charact": 0, "byte": [0, 7, 9, 10, 11], "format": [0, 4, 11], "fromhex": 0, "e": [0, 6, 10], "check": [0, 2, 7, 9, 10], "overrid": 0, "loglevel": [0, 7, 10], "provid": [0, 2, 3, 4, 5, 6, 7, 9, 11], "feedback": [0, 4], "log_info": 0, "doe": [0, 2, 3, 4, 5, 6, 7, 9, 10], "load": [0, 2, 7, 10], "has_path": [0, 7], "To": [0, 2, 3, 5, 6, 9, 10, 11], "public": [0, 4, 5, 7], "kei": [0, 4, 6, 7, 11], "done": [0, 2, 5, 6, 9, 10], "recal": [0, 7], "modul": [0, 2, 3, 9, 10, 11], "known": [0, 7, 9, 10], "return": [0, 7, 10], "outgo": [0, 5, 7, 9, 10], "got": 0, "correct": [0, 9], "convent": 0, "request_destin": 0, "add": [0, 2, 5, 6, 7, 10], "echo_request": 0, "get_random_hash": [0, 7], "successfulli": [0, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 2, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 5, 9, 10, 11], "rttstring": 0, "second": [0, 5, 7, 9, 10, 11], "1000": 0, "millisecond": [0, 10], "proof_packet": 0, "valid": [0, 5, 7, 9, 10], "trip": [0, 7, 10], "fail": [0, 2, 7], "store_tru": 0, "t": [0, 2, 5, 6, 7, 10], "metavar": 0, "float": [0, 7], "narg": 0, "timeoutarg": 0, "print_help": 0, "establish": [0, 2, 5, 6, 7, 11], "remot": [0, 4, 7, 10], "forth": 0, "o": [0, 2, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 10], "latest_client_link": 0, "server_destin": 0, "linkexampl": 0, "set_link_established_callback": [0, 7], "client_connect": 0, "server_loop": 0, "set_link_closed_callback": [0, 7], "client_disconnect": 0, "server_packet_receiv": 0, "disconnect": 0, "activ": [0, 2, 5, 7, 9], "last": [0, 5, 7], "reply_text": 0, "reply_data": 0, "server_link": 0, "sleep": [0, 10], "begin": [0, 3, 7], "And": 0, "client_packet_receiv": 0, "close": [0, 6, 7, 10], "link_establish": 0, "link_clos": 0, "interact": [0, 2, 7, 9, 10], "client_loop": 0, "becom": [0, 2, 6, 9], "should_quit": 0, "fals": [0, 5, 7, 10], "should": [0, 2, 5, 6, 7, 9, 10, 11], "q": [0, 10], "teardown": [0, 7], "mdu": [0, 7], "size": [0, 2, 5, 7, 9, 10], "exce": [0, 5, 7], "log_error": 0, "error": [0, 2, 8, 10], "ha": [0, 2, 3, 5, 6, 7, 9, 11], "been": [0, 2, 3, 5, 6, 7, 9, 11], "later": [0, 2, 5, 10], "teardown_reason": 0, "now": [0, 2, 6, 9, 10], "elif": 0, "destination_clos": 0, "exit_handl": 0, "5": [0, 2, 5, 10], "_exit": 0, "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 6, 7, 9, 11], "peer": [0, 2, 5, 7, 9, 10], "identifyexampl": 0, "set_remote_identified_callback": [0, 7], "remote_identifi": 0, "origin": [0, 6, 9], "displai": [0, 9], "remote_p": 0, "unidentifi": 0, "get_remote_ident": [0, 7], "client_ident": 0, "sendig": 0, "perform": [0, 2, 5, 6, 9], "random_text_gener": 0, "request_id": [0, 7], "link_id": [0, 7], "remote_ident": [0, 7], "requested_at": [0, 7], "look": [0, 2, 5, 9, 10], "On": [0, 2, 5, 10], "full": [0, 5, 7, 9, 10, 11], "moon": 0, "becki": 0, "upset": 0, "stai": [0, 9, 10], "awai": [0, 5, 6, 9, 10], "pet": 0, "shop": 0, "stock": 0, "requestexampl": 0, "register_request_handl": [0, 7], "response_gener": [0, 7], "allow": [0, 2, 3, 5, 6, 7, 9, 10, 11], "allow_al": [0, 7], "response_callback": [0, 7], "got_respons": 0, "failed_callback": [0, 7], "request_fail": 0, "request_receipt": [0, 7], "request_receiv": 0, "structur": [0, 7, 9, 11], "datetim": 0, "vendor": [0, 3], "umsgpack": 0, "share": [0, 2, 6, 7, 9, 10], "object": [0, 7], "subclass": [0, 7], "messagebas": [0, 4, 7], "ensur": [0, 5, 7, 9, 11], "serial": [0, 2, 3, 4, 9, 11], "deseri": 0, "multiplex": 0, "other": [0, 2, 3, 5, 6, 7, 9, 10], "both": [0, 2, 3, 5, 6, 7, 9, 10, 11], "same": [0, 2, 3, 5, 6, 7, 9, 10], "definit": [0, 9], "note": [0, 3, 4, 5, 7, 9, 10], "wish": [0, 9, 10], "make": [0, 2, 3, 5, 8, 9, 10], "stringmessag": 0, "convei": 0, "timestamp": 0, "msgtype": [0, 7], "variabl": [0, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 7, 9, 11], "across": [0, 3, 6], "0xf000": [0, 7], "reserv": [0, 7, 9], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 9, 10], "unpack": [0, 7], "final": [0, 7, 9], "implement": [0, 5, 6, 7, 8, 9, 11], "pack": [0, 7], "raw": [0, 3, 7], "payload": [0, 7, 9], "packag": [0, 2, 5, 9], "bundl": 0, "could": [0, 2, 5, 6, 7, 9, 11], "struct": 0, "python": [0, 4, 7, 9, 10, 11], "more": [0, 2, 3, 5, 6, 7, 9, 10, 11], "fit": 0, "entir": [0, 6, 7, 9, 10], "avail": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "properti": [0, 6, 7], "slightli": [0, 2], "less": [0, 5, 7, 9, 11], "due": [0, 6], "header": [0, 7, 9], "content": [0, 2, 6, 10], "stream": [0, 7, 9], "packb": 0, "unpackb": 0, "channelexampl": 0, "get_channel": [0, 7], "register_message_typ": [0, 7], "add_message_handl": [0, 7], "server_message_receiv": 0, "param": 0, "deserializ": 0, "unless": [0, 2, 5, 7, 9], "preced": 0, "indic": 0, "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "descriptor": 0, "actual": [0, 2, 5, 9], "separ": [0, 2, 5, 6, 9, 10], "unidirect": 0, "flow": [0, 5, 6], "opposit": [0, 5], "create_bidirectional_buff": [0, 7], "server_buffer_readi": 0, "ready_byt": [0, 7], "int": [0, 7], "otherwis": [0, 7], "forc": [0, 10], "server_client_connect": 0, "detail": [0, 2, 4, 5, 7, 10, 11], "client_buffer_readi": 0, "termin": [0, 2, 7], "download": [0, 5, 10], "resourc": [0, 2, 4, 7, 8], "effici": [0, 2, 5, 9, 11], "serv": [0, 3, 5, 6, 9, 10], "larg": [0, 3, 5, 6, 7, 9, 11], "transfer": [0, 7, 9, 10, 11], "recommend": [0, 2, 9], "compress": [0, 7, 9], "hashmap": 0, "sequenc": [0, 7, 9, 11], "long": [0, 2, 3, 5, 7, 9], "slow": [0, 5, 9], "cpu": [0, 9], "probabl": [0, 2, 6, 9, 10, 11], "result": [0, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 3, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 6, 9], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 6, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 5, 7, 9, 10], "normal": [0, 5, 7, 10], "accordingli": 0, "filelist_receiv": 0, "advertis": [0, 7], "set_resource_strategi": [0, 7], "accept_al": [0, 7], "set_resource_started_callback": [0, 7], "download_began": 0, "set_resource_concluded_callback": [0, 7], "download_conclud": 0, "menu": 0, "menu_mod": 0, "down": [0, 3, 5, 7], "request_packet": 0, "create_receipt": [0, 7], "print_menu": 0, "25": [0, 4, 11], "user_input": 0, "screen": 0, "variou": [0, 2, 5, 6, 9, 10], "state": 0, "It": [0, 2, 3, 5, 7, 9, 10, 11], "uninterest": 0, "won": 0, "clear_screen": 0, "print_filelist": 0, "percent": 0, "get_progress": [0, 7], "100": [0, 5, 9], "rprogress": 0, "save_error": 0, "disk": [0, 7], "hour": [0, 5], "rem": 0, "divmod": 0, "3600": [0, 5], "minut": [0, 2, 5, 9], "60": 0, "timestr": 0, "05": 0, "2f": 0, "ttime": 0, "taken": [0, 9], "tfile": 0, "size_str": 0, "tdata": 0, "teffect": 0, "rate": [0, 4, 7, 10], "suffix": 0, "b": [0, 6, 10], "ttransfer": 0, "press": 0, "index": [0, 2, 4], "enumer": 0, "filelist_data": 0, "extend": [0, 2, 7], "local": [0, 2, 5, 6, 7, 9, 10, 11], "append": [0, 9], "visibl": 0, "updat": [0, 2, 7, 9, 10], "small": [0, 5, 6, 9, 11], "job": 0, "potenti": [0, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "setdaemon": 0, "detect": 0, "shown": 0, "progress": [0, 7, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": 0, "m": [0, 2, 9, 10], "g": 0, "p": [0, 10], "z": 0, "y": 0, "ab": 0, "1024": 0, "clear": [0, 7, 9, 10], "cl": 0, "nt": 0, "dir": 0, "best": [2, 9, 11], "guid": [2, 3, 9], "outlin": [2, 3, 9], "sensibl": [2, 3], "scenario": [2, 4, 9], "relat": 2, "easiest": [2, 3, 5, 9], "via": [2, 3, 5, 8, 9, 10, 11], "pip": [2, 3, 10], "manag": [2, 6, 7, 9, 10, 11], "sudo": [2, 10], "apt": 2, "python3": [2, 3], "pamac": 2, "similar": [2, 3, 5, 6, 7, 10, 11], "dowload": 2, "releas": [2, 5, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "offlin": 2, "py3": 2, "whl": 2, "mai": [2, 5, 7, 9, 10], "case": [2, 3, 5, 6, 9, 10], "usual": 2, "essenti": [2, 5, 9], "deriv": [2, 7, 9, 11], "arch": 2, "manjaro": 2, "devel": 2, "fedora": 2, "dnf": 2, "groupinstal": 2, "tool": [2, 3, 9, 10, 11], "librari": 2, "compil": 2, "miss": 2, "even": [2, 5, 6, 9, 10, 11], "pre": [2, 7, 9], "built": [2, 5, 9, 11], "few": [2, 3, 5, 6, 9, 10, 11], "extrem": [2, 9, 10, 11], "low": [2, 3, 5, 6, 9, 11], "bandwidth": [2, 5, 6, 7, 9, 10, 11], "These": [2, 5, 7, 9, 10], "feel": 2, "work": [2, 3, 5, 6, 9, 10, 11], "design": [2, 3, 6, 9, 11], "well": [2, 3, 5, 6, 7, 9, 11], "lora": [2, 3, 4, 9, 11], "link": [2, 3, 4, 5, 6, 7, 10, 11], "wifi": [2, 4, 5, 6, 9, 10, 11], "wire": [2, 3, 4, 5, 11], "ethernet": [2, 3, 5, 6, 9, 11], "combin": [2, 4, 6, 9], "As": [2, 3, 5, 6, 7, 9, 11], "easi": [2, 3, 5, 9, 10, 11], "experi": [2, 9], "without": [2, 3, 6, 9, 11], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "devic": [2, 3, 4, 5, 6, 7, 9, 10], "enough": [2, 3, 9], "physic": [2, 3, 5, 9, 10], "rnsh": 2, "fulli": [2, 3, 9, 10, 11], "session": [2, 9], "pipe": [2, 4, 11], "ssh": 2, "suit": [2, 3, 9, 10], "featur": [2, 8, 9, 11], "delai": [2, 5, 9, 10], "browser": 2, "page": [2, 4, 9], "dynam": [2, 10], "render": 2, "authent": [2, 5, 6, 7, 9, 10, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": 2, "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "veri": [2, 3, 5, 6, 7, 8, 9, 10, 11], "might": [2, 5, 6, 9, 10], "reboot": 2, "again": [2, 5, 9, 10], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 9], "maco": 2, "peopl": [2, 9], "compat": [2, 3, 5, 7, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "come": [2, 9], "easier": [2, 5, 6, 10], "rnsd": [2, 4], "background": [2, 5], "foreground": 2, "servic": [2, 4, 6], "rnstatu": [2, 4, 5, 9], "rnpath": [2, 4, 5], "rnprobe": [2, 4], "view": [2, 5, 9, 10], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "locat": [2, 3, 6, 9, 10], "exampl": [2, 3, 4, 5, 7, 9, 10, 11], "exampleconfig": [2, 10], "broadcast": [2, 4, 5, 7, 9], "domain": [2, 5], "further": [2, 4, 5], "tcp": [2, 3, 4, 6, 9, 11], "There": [2, 6, 9, 11], "subnet": [2, 6], "rout": [2, 5, 6, 7, 9, 10, 11], "tabl": [2, 5, 6, 9, 10], "thing": 2, "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "utilis": [2, 6, 7, 10, 11], "extern": [2, 5, 7, 11], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "gatewai": [2, 5, 6, 9], "enabl": [2, 3, 5, 6, 7, 9, 10, 11], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": 2, "offer": [2, 4, 5, 7, 9], "carefulli": 2, "tcpserverinterfac": [2, 5], "access": [2, 4, 5, 6, 7, 10], "ip": [2, 3, 5, 9, 10, 11], "faster": [2, 5, 9], "lower": [2, 5, 10], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": 2, "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": 2, "most": [2, 3, 5, 6, 9, 10], "anymor": 2, "through": [2, 3, 5, 6, 7, 9, 10, 11], "invis": [2, 5], "daemon": [2, 5, 7, 10], "parallel": 2, "For": [2, 3, 5, 6, 7, 9, 10, 11], "alwai": [2, 5, 7, 9, 10], "node": [2, 4, 5, 6, 10, 11], "i2pd": [2, 5], "mix": [2, 5, 6, 10], "hide": 2, "relai": 2, "extra": [2, 5, 6, 10], "comput": [2, 9, 11], "power": [2, 3, 5, 9, 10], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10], "difficult": [2, 3], "non": [2, 7, 9], "behind": [2, 9], "firewal": [2, 5], "nat": 2, "preserv": [2, 7], "anonym": [2, 6, 7, 9, 11], "care": [2, 7, 11], "experiment": [2, 11], "made": [2, 7, 9], "dublin": [2, 10], "hub": [2, 5], "tcpclientinterfac": [2, 3, 5], "ye": [2, 5, 9, 10], "target_host": [2, 5], "target_port": [2, 5], "4965": [2, 10], "betweenthebord": 2, "4242": [2, 5], "uxg5kubabakh3jtnvsipingbr5574dle7bubvip7llfvwx2tgrua": 2, "b32": [2, 5], "point": [2, 3, 5, 6, 9, 10], "absolut": [2, 8, 11], "usag": [2, 4, 5, 7, 8, 10], "occasion": 2, "test": [2, 9], "failur": [2, 5], "guarante": [2, 9], "hardwar": [2, 4, 5, 6, 7, 9, 10, 11], "wide": [2, 3, 5, 9, 11], "section": [2, 3, 5, 6, 9, 10], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "custom": [2, 5, 7, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": [2, 4], "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "pip3": [2, 10], "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "step": [2, 3], "pyseri": 2, "api": [2, 4, 9, 11], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": 2, "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "folder": 2, "symlink": [2, 10], "cd": 2, "ln": [2, 10], "echo": [2, 4, 10], "ve": 2, "immedi": [2, 5, 10], "necessari": [2, 3, 5, 6, 7, 9], "nano": 2, "repeat": 2, "process": [2, 3, 5, 7, 9], "h": [2, 10], "ping": [2, 10], "replac": [2, 9, 10], "below": [2, 3, 5, 10], "174a64852a75682259ad8b921b8bf416": 2, "filetransf": [2, 4, 7], "understand": [2, 4, 7, 10], "submit": 2, "pull": 2, "request": [2, 4, 5, 7, 9, 10], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "place": [2, 6, 9, 10], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 9], "termux": 2, "f": 2, "droid": 2, "emul": 2, "environ": [2, 6, 9], "abil": [2, 3], "pkg": 2, "sure": [2, 3, 10], "upgrad": [2, 9], "Then": 2, "reason": [2, 5, 9], "attempt": [2, 3, 7], "openssl": [2, 9], "libffi": 2, "rust": 2, "export": 2, "cargo_build_target": 2, "aarch64": 2, "sever": [2, 6, 7, 10], "succe": 2, "softwar": [2, 3, 5, 9, 11], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "apk": 2, "tutori": 2, "code": [2, 3, 4, 5, 10], "startig": 2, "architectur": 2, "precompil": 2, "dev": [2, 5, 10], "64": [2, 9, 10], "32": [2, 9], "rasperri": 2, "os": [2, 5], "april": 2, "2023": 2, "onto": [2, 9], "unfortun": 2, "pipx": 2, "isol": [2, 5, 10], "neg": 2, "affect": [2, 5], "ensurepath": 2, "rare": [2, 5], "obscur": 2, "unusu": 2, "rnspure": 2, "No": [2, 5, 9, 10, 11], "matter": [2, 5], "perfectli": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 11], "primit": [2, 4], "One": [3, 7], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "conceiv": 3, "kind": [3, 5, 6, 9], "medium": [3, 5, 6, 7, 9, 11], "flexibl": [3, 5, 11], "cover": [3, 9, 11], "wireless": [3, 6], "decad": 3, "radio": [3, 4, 5, 6, 7, 9, 10, 11], "modem": [3, 5, 6, 7, 9, 11], "modern": [3, 9], "millimet": 3, "wave": 3, "backhaul": [3, 6], "oper": [3, 5, 6, 7, 9, 10, 11], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "broad": 3, "abund": 3, "sometim": 3, "especi": [3, 5], "scratch": 3, "real": [3, 6, 11], "world": [3, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "emploi": [3, 9], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": 3, "either": [3, 5, 6, 7, 9, 10], "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "particular": 3, "plaform": 3, "depend": [3, 4, 6, 7, 9, 10], "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "limit": [3, 6, 9], "common": [3, 4, 6, 9, 10, 11], "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "high": [3, 5, 9, 11], "level": [3, 5, 9, 10], "directli": [3, 5, 7, 9, 10, 11], "replic": [3, 9], "togeth": [3, 9, 10], "exact": [3, 5, 9], "explain": [3, 7], "approach": [3, 9, 10], "develop": [3, 4, 7, 8, 9, 11], "boil": 3, "obtain": [3, 7, 9], "autom": [3, 8, 9], "provis": [3, 10], "rnodeinterfac": [3, 5, 10], "ic": 3, "semtech": 3, "sx1276": 3, "platform": [3, 4, 9], "esp32": 3, "manufactur": 3, "io": 3, "avr": 3, "atmega1284p": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "question": [3, 5], "port": [3, 4, 5, 6, 9, 11], "air": [3, 11], "id": [3, 5, 7, 9, 10], "itself": [3, 4, 9], "touch": [3, 11], "produc": 3, "short": [3, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 9, 10], "dhcp": [3, 5, 10], "dn": 3, "least": [3, 5, 9, 10, 11], "transpar": [3, 5, 9, 10], "capac": [3, 5, 7, 9], "distanc": [3, 9], "ubiqu": 3, "airmax": 3, "ltu": 3, "mikrotik": 3, "exhaust": [3, 9], "rel": [3, 9, 11], "cheap": [3, 9], "co": [3, 5, 11], "concurr": [3, 9, 10], "pattern": [3, 9], "gain": [3, 7, 9], "antenna": 3, "backbon": 3, "area": [3, 5, 6, 9, 11], "aim": [4, 9], "particip": [4, 6, 9], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "instal": [4, 5, 6, 9, 10, 11], "resolv": [4, 5], "issu": [4, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "android": 4, "arm64": 4, "raspberri": [4, 6, 9, 10, 11], "debian": [4, 9, 10], "bookworm": 4, "ubuntu": [4, 10], "lunar": 4, "pure": [4, 9], "rncp": 4, "rnx": 4, "improv": [4, 5, 8], "fix": [4, 9], "motiv": 4, "goal": [4, 5], "introduct": 4, "announc": [4, 7, 10], "mechan": [4, 5], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "rule": [4, 5], "udp": [4, 6, 9, 10, 11], "ax": [4, 11], "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 7, 9], "buffer": [4, 5, 7], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": 4, "distinct": [5, 9], "topologi": [5, 9], "endless": 5, "describ": [5, 7, 9], "give": [5, 9, 10], "respect": [5, 11], "discover": 5, "autoconfigur": [5, 11], "ipv6": [5, 10], "router": [5, 10], "sort": [5, 9], "switch": [5, 9, 10], "interface_en": [5, 10], "lan": 5, "group": [5, 7, 9], "group_id": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "multicast": 5, "autodiscov": 5, "discoveri": [5, 9, 10], "scope": 5, "admin": 5, "organis": [5, 6, 8], "custom_network_nam": 5, "discovery_scop": 5, "discovery_port": 5, "48555": 5, "data_port": 5, "49555": 5, "frequent": 5, "block": 5, "inbound": [5, 7], "portabl": [5, 9], "persist": [5, 10], "achiev": [5, 7, 9], "geti2p": 5, "net": 5, "websit": 5, "base32": 5, "comma": 5, "5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq": 5, "output": [5, 10], "event": 5, "simplest": [5, 9], "tunnel": [5, 9, 11], "interchang": 5, "degre": 5, "retain": 5, "eas": [5, 9], "simpler": 5, "listen_ip": 5, "listen_port": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "natur": 5, "toler": 5, "intermitt": 5, "gracefulli": 5, "restor": 5, "reappear": 5, "hostnam": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "tnc": [5, 7, 10, 11], "8001": 5, "caution": 5, "frame": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "intern": [5, 7, 9], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": 5, "udpinterfac": 5, "forward_ip": 5, "255": 5, "forward_port": 5, "assum": [5, 9], "55": 5, "72": 5, "24": 5, "equival": 5, "forward": [5, 7, 9, 11], "segment": [5, 6, 7, 9, 11], "cours": [5, 9], "15": 5, "16": [5, 9, 10], "ttyusb0": [5, 10], "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "7": [5, 9, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "12": [5, 10], "fastest": [5, 9], "longest": 5, "spreadingfactor": 5, "throough": 5, "codingr": 5, "interv": [5, 7], "id_callsign": 5, "mycal": 5, "id_interv": 5, "600": 5, "homebrew": 5, "amount": [5, 6, 7, 9, 11], "ram": 5, "flow_control": 5, "pair": [5, 7, 9, 10], "laser": 5, "serialinterfac": 5, "baud": 5, "speed": [5, 9, 10], "115200": [5, 10], "databit": [5, 10], "pariti": [5, 10], "stopbit": [5, 10], "stdin": [5, 10], "virtual": [5, 6, 9, 10, 11], "netcat": 5, "l": [5, 10], "5757": 5, "respawn": 5, "respawn_delai": 5, "continu": [5, 7, 8, 11], "scan": 5, "eof": 5, "respawn_interv": 5, "varieti": [5, 9, 10, 11], "openmodem": [5, 11], "period": [5, 7, 9], "beacon": 5, "station": 5, "kissinterfac": [5, 10], "ttyusb1": 5, "preambl": [5, 10], "150": [5, 10], "tail": 5, "txtail": [5, 10], "cdma": 5, "200": [5, 10], "slottim": [5, 10], "20": [5, 9, 10], "elaps": 5, "comment": [5, 10], "amateur": [5, 11], "spectrum": [5, 9], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 10], "squelch": 5, "rx": 5, "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "airtim": 5, "behaviour": [5, 10], "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": 5, "mostli": [5, 6, 9], "quiet": [5, 10], "momentarili": 5, "disappear": [5, 10], "network_nam": 5, "passphras": [5, 9], "alon": 5, "ifac_s": 5, "customis": 5, "carri": [5, 7, 9, 10], "512": [5, 7, 9], "announce_cap": [5, 7], "maximum": [5, 7, 9], "alloc": [5, 7, 9, 10], "given": [5, 6, 7, 9, 10], "upkeep": 5, "cap": 5, "queue": [5, 9], "nearbi": 5, "overwhelm": [5, 7], "rapidli": 5, "spam": 5, "effect": 5, "excess": 5, "benefici": [5, 10], "balanc": 5, "necesarri": 5, "bitrat": 5, "report": [5, 8], "guess": 5, "per": [5, 7, 9, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "addition": [5, 9], "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "mobil": [5, 9], "seen": [5, 9], "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": 5, "impact": [5, 9], "announce_rate_target": 5, "announce_rate_grac": 5, "announce_rate_penalti": 5, "basi": [5, 7, 9, 10, 11], "moder": 5, "violat": 5, "enforc": 5, "penalti": 5, "7200": 5, "annouce_cap": 5, "mention": [5, 9], "strategi": [5, 7], "decis": [5, 9], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 9], "mind": [6, 11], "autonom": [6, 9], "terminologi": [6, 9], "rest": [6, 11], "billion": [6, 9], "larger": [6, 9], "higher": [6, 11], "discrimin": 6, "ephemer": [6, 7, 9, 11], "ellipt": [6, 7, 9, 11], "curv": [6, 7, 9, 11], "diffi": [6, 9, 11], "hellman": [6, 9, 11], "exchang": [6, 7, 9, 11], "curve25519": [6, 7, 9, 11], "throttl": 6, "thu": [6, 7, 9], "agnost": [6, 9], "equal": [6, 7, 9], "keystor": 6, "degrad": 6, "term": [6, 9], "stationari": [6, 10], "candid": 6, "optim": 6, "intend": [6, 9], "trustless": [6, 9, 11], "leav": [6, 9], "free": [6, 8, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": 6, "legaci": 6, "unifi": 6, "underli": [6, 11], "carrier": [6, 11], "involv": 6, "hardlin": 6, "decid": [6, 7, 9], "illustr": [6, 9], "plan": [6, 9], "member": 6, "mainli": 6, "three": [6, 9], "hill": 6, "top": [6, 9], "chosen": [6, 9], "sight": 6, "becaus": [6, 9], "four": 6, "At": [6, 9], "usb": [6, 9, 10], "cabl": 6, "adapt": 6, "suppli": [6, 7, 9], "grow": 6, "core": [6, 9, 10, 11], "those": [6, 9], "previous": [6, 7, 9], "d": [6, 10], "island": 6, "investig": 6, "dori": 6, "willing": 6, "she": 6, "her": 6, "home": 6, "newli": [6, 7, 9], "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": 6, "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "mtu": [7, 9, 11], "500": [7, 9, 11], "adher": 7, "507": 7, "break": [7, 9, 11], "prerequisit": 7, "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "drop": [7, 9, 10], "appli": [7, 9], "individu": [7, 9, 11], "static": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "create_kei": 7, "decrypt": [7, 9], "verif": [7, 9], "sign": [7, 9], "dh": 7, "keysiz": 7, "x25519": [7, 9, 11], "concaten": 7, "256": [7, 9], "128": [7, 9, 11], "constant": 7, "truncat": [7, 9], "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "feed": 7, "from_fil": 7, "to_fil": 7, "Be": [7, 10], "get_private_kei": 7, "get_public_kei": 7, "load_private_kei": 7, "load_public_kei": 7, "pub_byt": 7, "ciphertext": 7, "token": [7, 9], "keyerror": 7, "hold": [7, 9], "ciphertext_token": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "expand_nam": 7, "app_and_aspects_from_nam": 7, "full_nam": [7, 10], "tupl": 7, "hash_from_name_and_ident": 7, "path_respons": 7, "attached_interfac": 7, "tag": 7, "flag": [7, 9], "accepts_link": 7, "accept": [7, 8, 9, 10], "set_proof_requested_callback": 7, "proof_strategi": 7, "prove_non": 7, "prove_app": 7, "proof_requested_callback": 7, "allow_non": 7, "allowed_list": 7, "whatev": [7, 9], "funcion": 7, "allow_list": 7, "deregister_request_handl": 7, "deregist": 7, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "secreci": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "6": [7, 10], "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "mark": [7, 9], "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "get_establishment_r": 7, "ocur": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "whenev": [7, 9], "cancel": 7, "total": [7, 9, 11], "get_seg": 7, "divid": 7, "get_hash": 7, "bi": [7, 9], "neither": [7, 9], "constrain": 7, "message_class": 7, "recept": 7, "messagecallbacktyp": 7, "bool": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "adjust": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "document": [7, 9], "create_writ": 7, "receive_stream_id": 7, "send_stream_id": 7, "rawiobas": 7, "add_ready_callback": 7, "cb": [7, 9], "remove_ready_callback": 7, "pathfinder_m": 7, "attribut": 7, "deregister_announce_handl": 7, "hops_to": 7, "next_hop": 7, "next_hop_interfac": 7, "on_interfac": 7, "recurs": 7, "gratefulli": 8, "monero": 8, "84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w": 8, "ethereum": 8, "0x81f7b979fea6134ba9fd5c701b3501a2e61e897a": 8, "bitcoin": 8, "3cpmacgm34qyvr6xwlvejmi2ane3pzquuq": 8, "ko": 8, "fi": 8, "roadmap": 8, "realiti": 8, "quickli": [8, 9, 11], "sponsor": [8, 11], "dysfunct": 8, "analyt": 8, "telemetri": 8, "collect": 8, "under": [8, 10, 11], "circumst": [8, 9], "reli": [8, 9], "fashion": 8, "u": [8, 9, 10], "suggest": 8, "briefli": 9, "overal": 9, "principl": [9, 11], "author": 9, "That": 9, "said": 9, "pretti": 9, "sentiment": 9, "philosophi": 9, "problem": 9, "seek": 9, "solv": 9, "solut": 9, "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": 9, "approv": 9, "gatekeep": 9, "inevit": 9, "lead": 9, "govern": 9, "alter": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "usabl": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "modifi": [9, 10], "interest": 9, "strong": 9, "oneself": 9, "unlicens": 9, "licens": 9, "condit": [9, 11], "pmr": 9, "written": 9, "programm": 9, "orient": 9, "multipoint": 9, "recipi": 9, "singular": 9, "_represented_": 9, "characterist": 9, "13425ec15b621c1d928589718000d814": 9, "trade": 9, "simultan": 9, "unlik": 9, "nears": 9, "congest": 9, "galact": 9, "scale": [9, 11], "obvious": 9, "ridicul": 9, "multi": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "capabl": 9, "dot": [9, 10], "notat": [9, 10], "repres": 9, "plenti": 9, "environment": 9, "monitor": 9, "measur": 9, "environmentlogg": 9, "remotesensor": 9, "temperatur": 9, "4faf1b2e0a077e6a9d92fa051f256038": 9, "advis": 9, "expand": 9, "recap": 9, "indirectli": 9, "ledger": 9, "therefor": [9, 11], "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "accord": 9, "around": 9, "topic": 9, "necessarili": 9, "person": 9, "entiti": 9, "robot": 9, "sensor": 9, "someth": 9, "agent": 9, "manipul": [9, 11], "multilater": 9, "creation": [9, 11], "great": 9, "suffic": 9, "cluster": 9, "hear": 9, "But": 9, "lot": 9, "surviv": 9, "overcom": 9, "challeng": 9, "asymmetr": [9, 11], "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "retransmit": 9, "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newer": 9, "newest": 9, "discard": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "travers": 9, "rememb": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "intermediari": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "rotat": 9, "memori": 9, "thereaft": 9, "297": [9, 11], "practic": [9, 11], "neglig": 9, "1200": 9, "96": 9, "keypair": 9, "simplic": 9, "explan": [9, 10], "lki": 9, "laid": 9, "had": 9, "construct": [9, 11], "lkr": 9, "chose": 9, "direction": 9, "unequivoc": 9, "retransmiss": 9, "reassembl": 9, "programmat": 9, "satisfi": 9, "half": [9, 11], "duplex": [9, 11], "averag": 9, "throughput": [9, 11], "x": [9, 10], "runtim": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "recent": 9, "mac": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "ifac": [9, 10], "compos": 9, "field": 9, "context": 9, "465": 9, "vari": [9, 10], "00": [9, 10], "01": 9, "11": 9, "_______": 9, "________________": 9, "________": 9, "______": 9, "__": 9, "_": 9, "01010000": 9, "00000100": 9, "hash1": 9, "hash2": 9, "header_2": 9, "00000000": 9, "00000111": 9, "header_1": 9, "10000000": 9, "exclud": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "x22519": 9, "hkdf": 9, "fernet": [9, 11], "cbc": [9, 11], "hmac": [9, 11], "hashlib": 9, "pkcs7": [9, 11], "pad": [9, 11], "trivial": [9, 11], "consequ": 9, "backend": 9, "loss": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "pose": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "boot": 10, "edit": 10, "ie": 10, "breviti": 10, "socket": 10, "turn": 10, "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "panic": 10, "unrecover": 10, "occur": [10, 11], "panic_on_interface_error": 10, "warn": 10, "debug": 10, "unus": 10, "teach": 10, "task": 10, "v": 10, "show": 10, "ifconfig": 10, "gbp": 10, "13": 10, "kb": 10, "86": 10, "mbp": 10, "63": 10, "23": 10, "80": 10, "17": 10, "tcpinterfac": 10, "187": 10, "27": 10, "74": 10, "uhf": [10, 11], "30": 10, "kbp": 10, "e702c42ba8": 10, "49": 10, "9": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "w": 10, "posit": 10, "probe": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "decreas": 10, "auth": 10, "941bed5e228775e5a8079fc38b1ccf3f": 10, "1b03013c25f1c2ca068a4f080b844a10": 10, "7a55144adf826958a9529a3bcf08b149": 10, "cat": 10, "proc": 10, "cpuinfo": 10, "pseudo": 10, "stderr": 10, "noauth": 10, "noid": 10, "mirror": 10, "max": 10, "fw": 10, "nocheck": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "flash": 10, "attach": 10, "older": 10, "onlin": 10, "extract": 10, "cach": 10, "bluetooth": 10, "consol": 10, "unlock": 10, "perman": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "bin": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "readili": 11, "advers": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "subject": 11, "outsid": 11, "planetari": 11, "hierarch": 11, "beaureucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "sha256": 11, "iv": 11, "urandom": 11, "intuit": 11, "friendli": 11, "44": 11, "gigabyt": 11, "scalabl": 11, "hoc": 11, "optic": 11, "transform": 11, "fact": 11, "strength": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11}, "objects": {"RNS": [[7, 0, 1, "", "Buffer"], [7, 0, 1, "", "Destination"], [7, 0, 1, "", "Identity"], [7, 0, 1, "", "Link"], [7, 0, 1, "", "MessageBase"], [7, 0, 1, "", "Packet"], [7, 0, 1, "", "PacketReceipt"], [7, 0, 1, "", "RawChannelReader"], [7, 0, 1, "", "RawChannelWriter"], [7, 0, 1, "", "RequestReceipt"], [7, 0, 1, "", "Resource"], [7, 0, 1, "", "Reticulum"], [7, 0, 1, "", "Transport"]], "RNS.Buffer": [[7, 1, 1, "", "create_bidirectional_buffer"], [7, 1, 1, "", "create_reader"], [7, 1, 1, "", "create_writer"]], "RNS.Channel": [[7, 0, 1, "", "Channel"]], "RNS.Channel.Channel": [[7, 2, 1, "", "MDU"], [7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[7, 1, 1, "", "accepts_links"], [7, 1, 1, "", "announce"], [7, 1, 1, "", "app_and_aspects_from_name"], [7, 1, 1, "", "clear_default_app_data"], [7, 1, 1, "", "create_keys"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "deregister_request_handler"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "expand_name"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "hash"], [7, 1, 1, "", "hash_from_name_and_identity"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "register_request_handler"], [7, 1, 1, "", "set_default_app_data"], [7, 1, 1, "", "set_link_established_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_proof_requested_callback"], [7, 1, 1, "", "set_proof_strategy"], [7, 1, 1, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "from_bytes"], [7, 1, 1, "", "from_file"], [7, 1, 1, "", "full_hash"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "get_public_key"], [7, 1, 1, "", "get_random_hash"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "load_public_key"], [7, 1, 1, "", "recall"], [7, 1, 1, "", "recall_app_data"], [7, 1, 1, "", "sign"], [7, 1, 1, "", "to_file"], [7, 1, 1, "", "truncated_hash"], [7, 1, 1, "", "validate"]], "RNS.Link": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "ESTABLISHMENT_TIMEOUT_PER_HOP"], [7, 3, 1, "", "KEEPALIVE"], [7, 3, 1, "", "KEEPALIVE_TIMEOUT_FACTOR"], [7, 3, 1, "", "STALE_GRACE"], [7, 3, 1, "", "STALE_TIME"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": 0, "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "an": 1, "explan": 1, "reticulum": [1, 2, 3, 4, 8, 9, 10, 11], "human": 1, "Beings": 1, "get": [2, 9], "start": 2, "fast": 2, "standalon": 2, "instal": [2, 3], "resolv": 2, "depend": 2, "issu": 2, "try": 2, "us": [2, 10, 11], "base": [2, 3], "program": [2, 10], "remot": 2, "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": 2, "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": 2, "interfac": [2, 5, 9, 11], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "raspberri": 2, "pi": 2, "debian": 2, "bookworm": 2, "ubuntu": 2, "lunar": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "rnode": [3, 5], "support": [3, 5, 8], "board": 3, "lilygo": 3, "lora32": 3, "v2": 3, "1": 3, "0": 3, "t": 3, "beam": 3, "heltec": 3, "unsign": 3, "x": 3, "v1": 3, "usag": 3, "supplier": 3, "wifi": 3, "combin": 3, "type": [3, 9, 11], "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "auto": 5, "i2p": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "lora": [5, 6], "serial": [5, 10], "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "destin": 9, "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "packet": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "configur": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "devic": 11, "caveat": 11, "emptor": 11}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "Develop a Program with Reticulum": [[2, "develop-a-program-with-reticulum"]], "Participate in Reticulum Development": [[2, "participate-in-reticulum-development"]], "Platform-Specific Install Notes": [[2, "platform-specific-install-notes"]], "Android": [[2, "android"]], "ARM64": [[2, "arm64"]], "Raspberry Pi": [[2, "raspberry-pi"]], "Debian Bookworm": [[2, "debian-bookworm"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "Pure-Python Reticulum": [[2, "pure-python-reticulum"]], "Communications Hardware": [[3, "communications-hardware"]], "RNode": [[3, "rnode"]], "Creating RNodes": [[3, "creating-rnodes"]], "Supported Boards": [[3, "supported-boards"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "Unsigned RNode v1.x": [[3, "unsigned-rnode-v1-x"]], "Installation": [[3, "installation"]], "Usage with Reticulum": [[3, "usage-with-reticulum"]], "Suppliers": [[3, "suppliers"]], "WiFi-based Hardware": [[3, "wifi-based-hardware"]], "Combining Hardware Types": [[3, "combining-hardware-types"]], "Reticulum Network Stack Manual": [[4, "reticulum-network-stack-manual"]], "Table Of Contents": [[4, "table-of-contents"]], "Indices and Tables": [[4, "indices-and-tables"]], "Supported Interfaces": [[5, "supported-interfaces"]], "Auto Interface": [[5, "auto-interface"]], "I2P Interface": [[5, "i2p-interface"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "API Reference": [[7, "api-reference"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]], "What is Reticulum?": [[11, "what-is-reticulum"]], "Current Status": [[11, "current-status"]], "What does Reticulum Offer?": [[11, "what-does-reticulum-offer"]], "Where can Reticulum be Used?": [[11, "where-can-reticulum-be-used"]], "Interface Types and Devices": [[11, "interface-types-and-devices"]], "Caveat Emptor": [[11, "caveat-emptor"]]}, "indexentries": {"announce_cap (rns.reticulum attribute)": [[7, "RNS.Reticulum.ANNOUNCE_CAP"]], "buffer (class in rns)": [[7, "RNS.Buffer"]], "curve (rns.identity attribute)": [[7, "RNS.Identity.CURVE"]], "curve (rns.link attribute)": [[7, "RNS.Link.CURVE"]], "channel (class in rns.channel)": [[7, "RNS.Channel.Channel"]], "destination (class in rns)": [[7, "RNS.Destination"]], "encrypted_mdu (rns.packet attribute)": [[7, "RNS.Packet.ENCRYPTED_MDU"]], "establishment_timeout_per_hop (rns.link attribute)": [[7, "RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP"]], "identity (class in rns)": [[7, "RNS.Identity"]], "keepalive (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE"]], "keepalive_timeout_factor (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE_TIMEOUT_FACTOR"]], "keysize (rns.identity attribute)": [[7, "RNS.Identity.KEYSIZE"]], "link (class in rns)": [[7, "RNS.Link"]], "mdu (rns.channel.channel property)": [[7, "RNS.Channel.Channel.MDU"]], "msgtype (rns.messagebase attribute)": [[7, "RNS.MessageBase.MSGTYPE"]], "mtu (rns.reticulum attribute)": [[7, "RNS.Reticulum.MTU"]], "messagebase (class in rns)": [[7, "RNS.MessageBase"]], "pathfinder_m (rns.transport attribute)": [[7, "RNS.Transport.PATHFINDER_M"]], "plain_mdu (rns.packet attribute)": [[7, "RNS.Packet.PLAIN_MDU"]], "packet (class in rns)": [[7, "RNS.Packet"]], "packetreceipt (class in rns)": [[7, "RNS.PacketReceipt"]], "rawchannelreader (class in rns)": [[7, "RNS.RawChannelReader"]], "rawchannelwriter (class in rns)": [[7, "RNS.RawChannelWriter"]], "requestreceipt (class in rns)": [[7, "RNS.RequestReceipt"]], "resource (class in rns)": [[7, "RNS.Resource"]], "reticulum (class in rns)": [[7, "RNS.Reticulum"]], "stale_grace (rns.link attribute)": [[7, "RNS.Link.STALE_GRACE"]], "stale_time (rns.link attribute)": [[7, "RNS.Link.STALE_TIME"]], "truncated_hashlength (rns.identity attribute)": [[7, "RNS.Identity.TRUNCATED_HASHLENGTH"]], "transport (class in rns)": [[7, "RNS.Transport"]], "__init__() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.__init__"]], "__init__() (rns.rawchannelwriter method)": [[7, "RNS.RawChannelWriter.__init__"]], "accepts_links() (rns.destination method)": [[7, "RNS.Destination.accepts_links"]], "add_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.add_message_handler"]], "add_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.add_ready_callback"]], "advertise() (rns.resource method)": [[7, "RNS.Resource.advertise"]], "announce() (rns.destination method)": [[7, "RNS.Destination.announce"]], "app_and_aspects_from_name() (rns.destination static method)": [[7, "RNS.Destination.app_and_aspects_from_name"]], "cancel() (rns.resource method)": [[7, "RNS.Resource.cancel"]], "clear_default_app_data() (rns.destination method)": [[7, "RNS.Destination.clear_default_app_data"]], "create_bidirectional_buffer() (rns.buffer static method)": [[7, "RNS.Buffer.create_bidirectional_buffer"]], "create_keys() (rns.destination method)": [[7, "RNS.Destination.create_keys"]], "create_reader() (rns.buffer static method)": [[7, "RNS.Buffer.create_reader"]], "create_writer() (rns.buffer static method)": [[7, "RNS.Buffer.create_writer"]], "decrypt() (rns.destination method)": [[7, "RNS.Destination.decrypt"]], "decrypt() (rns.identity method)": [[7, "RNS.Identity.decrypt"]], "deregister_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.deregister_announce_handler"]], "deregister_request_handler() (rns.destination method)": [[7, "RNS.Destination.deregister_request_handler"]], "encrypt() (rns.destination method)": [[7, "RNS.Destination.encrypt"]], "encrypt() (rns.identity method)": [[7, "RNS.Identity.encrypt"]], "expand_name() (rns.destination static method)": [[7, "RNS.Destination.expand_name"]], "from_bytes() (rns.identity static method)": [[7, "RNS.Identity.from_bytes"]], "from_file() (rns.identity static method)": [[7, "RNS.Identity.from_file"]], "full_hash() (rns.identity static method)": [[7, "RNS.Identity.full_hash"]], "get_channel() (rns.link method)": [[7, "RNS.Link.get_channel"]], "get_data_size() (rns.resource method)": [[7, "RNS.Resource.get_data_size"]], "get_establishment_rate() (rns.link method)": [[7, "RNS.Link.get_establishment_rate"]], "get_hash() (rns.resource method)": [[7, "RNS.Resource.get_hash"]], "get_parts() (rns.resource method)": [[7, "RNS.Resource.get_parts"]], "get_private_key() (rns.destination method)": [[7, "RNS.Destination.get_private_key"]], "get_private_key() (rns.identity method)": [[7, "RNS.Identity.get_private_key"]], "get_progress() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_progress"]], "get_progress() (rns.resource method)": [[7, "RNS.Resource.get_progress"]], "get_public_key() (rns.identity method)": [[7, "RNS.Identity.get_public_key"]], "get_random_hash() (rns.identity static method)": [[7, "RNS.Identity.get_random_hash"]], "get_remote_identity() (rns.link method)": [[7, "RNS.Link.get_remote_identity"]], "get_request_id() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_request_id"]], "get_response() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response"]], "get_response_time() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response_time"]], "get_rtt() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_rtt"]], "get_segments() (rns.resource method)": [[7, "RNS.Resource.get_segments"]], "get_status() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_status"]], "get_status() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_status"]], "get_transfer_size() (rns.resource method)": [[7, "RNS.Resource.get_transfer_size"]], "has_path() (rns.transport static method)": [[7, "RNS.Transport.has_path"]], "hash() (rns.destination static method)": [[7, "RNS.Destination.hash"]], "hash_from_name_and_identity() (rns.destination static method)": [[7, "RNS.Destination.hash_from_name_and_identity"]], "hops_to() (rns.transport static method)": [[7, "RNS.Transport.hops_to"]], "identify() (rns.link method)": [[7, "RNS.Link.identify"]], "inactive_for() (rns.link method)": [[7, "RNS.Link.inactive_for"]], "is_compressed() (rns.resource method)": [[7, "RNS.Resource.is_compressed"]], "is_ready_to_send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.is_ready_to_send"]], "load_private_key() (rns.destination method)": [[7, "RNS.Destination.load_private_key"]], "load_private_key() (rns.identity method)": [[7, "RNS.Identity.load_private_key"]], "load_public_key() (rns.identity method)": [[7, "RNS.Identity.load_public_key"]], "next_hop() (rns.transport static method)": [[7, "RNS.Transport.next_hop"]], "next_hop_interface() (rns.transport static method)": [[7, "RNS.Transport.next_hop_interface"]], "no_inbound_for() (rns.link method)": [[7, "RNS.Link.no_inbound_for"]], "no_outbound_for() (rns.link method)": [[7, "RNS.Link.no_outbound_for"]], "pack() (rns.messagebase method)": [[7, "RNS.MessageBase.pack"]], "recall() (rns.identity static method)": [[7, "RNS.Identity.recall"]], "recall_app_data() (rns.identity static method)": [[7, "RNS.Identity.recall_app_data"]], "register_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.register_announce_handler"]], "register_message_type() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.register_message_type"]], "register_request_handler() (rns.destination method)": [[7, "RNS.Destination.register_request_handler"]], "remove_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.remove_message_handler"]], "remove_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.remove_ready_callback"]], "request() (rns.link method)": [[7, "RNS.Link.request"]], "request_path() (rns.transport static method)": [[7, "RNS.Transport.request_path"]], "resend() (rns.packet method)": [[7, "RNS.Packet.resend"]], "send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.send"]], "send() (rns.packet method)": [[7, "RNS.Packet.send"]], "set_default_app_data() (rns.destination method)": [[7, "RNS.Destination.set_default_app_data"]], "set_delivery_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_delivery_callback"]], "set_link_closed_callback() (rns.link method)": [[7, "RNS.Link.set_link_closed_callback"]], "set_link_established_callback() (rns.destination method)": [[7, "RNS.Destination.set_link_established_callback"]], "set_packet_callback() (rns.destination method)": [[7, "RNS.Destination.set_packet_callback"]], "set_packet_callback() (rns.link method)": [[7, "RNS.Link.set_packet_callback"]], "set_proof_requested_callback() (rns.destination method)": [[7, "RNS.Destination.set_proof_requested_callback"]], "set_proof_strategy() (rns.destination method)": [[7, "RNS.Destination.set_proof_strategy"]], "set_remote_identified_callback() (rns.link method)": [[7, "RNS.Link.set_remote_identified_callback"]], "set_resource_callback() (rns.link method)": [[7, "RNS.Link.set_resource_callback"]], "set_resource_concluded_callback() (rns.link method)": [[7, "RNS.Link.set_resource_concluded_callback"]], "set_resource_started_callback() (rns.link method)": [[7, "RNS.Link.set_resource_started_callback"]], "set_resource_strategy() (rns.link method)": [[7, "RNS.Link.set_resource_strategy"]], "set_timeout() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout"]], "set_timeout_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout_callback"]], "should_use_implicit_proof() (rns.reticulum static method)": [[7, "RNS.Reticulum.should_use_implicit_proof"]], "sign() (rns.destination method)": [[7, "RNS.Destination.sign"]], "sign() (rns.identity method)": [[7, "RNS.Identity.sign"]], "teardown() (rns.link method)": [[7, "RNS.Link.teardown"]], "to_file() (rns.identity method)": [[7, "RNS.Identity.to_file"]], "transport_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.transport_enabled"]], "truncated_hash() (rns.identity static method)": [[7, "RNS.Identity.truncated_hash"]], "unpack() (rns.messagebase method)": [[7, "RNS.MessageBase.unpack"]], "validate() (rns.identity method)": [[7, "RNS.Identity.validate"]]}}) \ No newline at end of file diff --git a/docs/manual/support.html b/docs/manual/support.html index adb44e0..77021b6 100644 --- a/docs/manual/support.html +++ b/docs/manual/support.html @@ -6,7 +6,7 @@ - Support Reticulum - Reticulum Network Stack 0.5.2 beta documentation + Support Reticulum - Reticulum Network Stack 0.5.3 beta documentation @@ -141,7 +141,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/understanding.html b/docs/manual/understanding.html index f0d166f..674a3a7 100644 --- a/docs/manual/understanding.html +++ b/docs/manual/understanding.html @@ -6,7 +6,7 @@ - Understanding Reticulum - Reticulum Network Stack 0.5.2 beta documentation + Understanding Reticulum - Reticulum Network Stack 0.5.3 beta documentation @@ -141,7 +141,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/using.html b/docs/manual/using.html index 23238d0..67a9d96 100644 --- a/docs/manual/using.html +++ b/docs/manual/using.html @@ -6,7 +6,7 @@ - Using Reticulum on Your System - Reticulum Network Stack 0.5.2 beta documentation + Using Reticulum on Your System - Reticulum Network Stack 0.5.3 beta documentation @@ -141,7 +141,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation diff --git a/docs/manual/whatis.html b/docs/manual/whatis.html index e726297..cc5b817 100644 --- a/docs/manual/whatis.html +++ b/docs/manual/whatis.html @@ -6,7 +6,7 @@ - What is Reticulum? - Reticulum Network Stack 0.5.2 beta documentation + What is Reticulum? - Reticulum Network Stack 0.5.3 beta documentation @@ -141,7 +141,7 @@
-
Reticulum Network Stack 0.5.2 beta documentation
+
Reticulum Network Stack 0.5.3 beta documentation
@@ -167,7 +167,7 @@
- Reticulum Network Stack 0.5.2 beta documentation + Reticulum Network Stack 0.5.3 beta documentation