Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
519 changes: 282 additions & 237 deletions Cargo.lock

Large diffs are not rendered by default.

101 changes: 3 additions & 98 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,98 +1,3 @@
[package]
name = "reticulum"
version = "0.1.0"
edition = "2021"
license = "MIT"
readme = "README.md"
repository = "https://github.com/BeechatNetworkSystemsLtd/Reticulum-rs"
categories = ["network-programming"]
keywords = ["reticulum", "mesh", "radio", "async"]

description = """
Reticulum-rs is a Rust implementation of the Reticulum Network Stack - a cryptographic,
decentralised, and resilient mesh networking protocol designed for communication over any physical
layer.

This project brings Reticulum's capabilities to the Rust ecosystem, enabling embedded, and
constrained deployments with maximum performance and minimal dependencies.
"""

[dependencies]

# Protobuf and gRPC
tonic = "0.13.0"
prost = "0.13.5"

# Crypto
crypto-common = { version = "0.1.6", features = ["rand_core"] }
aes = "0.8.4"
cbc = "0.1.2"
x25519-dalek = { version = "2.0.1", features = ["static_secrets"] }
ed25519-dalek = { version = "2.1.1", features = ["rand_core"] }
hkdf = "0.12.4"

# Hash
hmac = "0.12.1"
sha2 = "0.10.8"

# Random Number generator
rand_core = { version = "0.6.4", features = ["getrandom"] }

# Async IO
tokio = { version = "1.44.2", features = ["full"] }
tokio-stream = "0.1.17"
tokio-util = "0.7.15"

rmp = "0.8.14"
serde = { version = "1.0.219", features = ["derive"] }

# Logging
log = "0.4.27"
env_logger = "0.10"

[features]
default = ["alloc"]
alloc = []
fernet-aes128 = []

[build-dependencies]
tonic-build = "0.13.0"

[dev-dependencies]
tokio = { version = "1.44.2", features = ["test-util"] }

[[example]]
name = "tcp_server"
path = "examples/tcp_server.rs"

[[example]]
name = "tcp_client"
path = "examples/tcp_client.rs"

[[example]]
name = "udp_link"
path = "examples/udp_link.rs"

[[example]]
name = "link_client"
path = "examples/link_client.rs"

[[example]]
name = "kaonic_client"
path = "examples/kaonic_client.rs"

[[example]]
name = "testnet_client"
path = "examples/testnet_client.rs"

[[example]]
name = "kaonic_tcp_mesh"
path = "examples/kaonic_tcp_mesh.rs"

[[example]]
name = "kaonic_mesh"
path = "examples/kaonic_mesh.rs"

[[example]]
name = "multihop"
path = "examples/multihop.rs"
[workspace]
members = ["reticulum-core","reticulum-async"]
resolver = "3"
52 changes: 25 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,33 +16,31 @@ This project brings Reticulum's capabilities to the Rust ecosystem, enabling emb

## Structure


```
Reticulum-rs/
├── src/ # Core Reticulum protocol implementation
│ ├── buffer.rs
│ ├── crypt.rs
│ ├── destination.rs
│ ├── error.rs
│ ├── hash.rs
│ ├── identity.rs
│ ├── iface.rs
│ ├── lib.rs
│ ├── transport.rs
│ └── packet.rs
├── proto/ # Protocol definitions (e.g. for Kaonic)
│ └── kaonic/
│ └── kaonic.proto
├── examples/ # Example clients and servers
│ ├── kaonic_client.rs
│ ├── link_client.rs
│ ├── tcp_client.rs
│ ├── tcp_server.rs
│ └── testnet_client.rs
├── Cargo.toml # Crate configuration
├── LICENSE # License (MIT/Apache)
└── build.rs
````
├── Cargo.toml
├── reticulum-async # Async interface and transport management
│ ├── Cargo.toml
│ ├── examples # Example clients and servers
│ ├── proto # Protocol definitions (e.g. for Kaonic)
│ └── src
│ ├── iface.rs
│ ├── lib.rs
│ ├── transport.rs
│ └── utils.rs
└── reticulum-core # Core Reticulum protocol implementation
├── Cargo.toml
└── src
├── buffer.rs
├── codec.rs
├── crypt.rs
├── destination.rs
├── error.rs
├── hash.rs
├── identity.rs
├── lib.rs
└── packet.rs
```
## Getting Started

### Prerequisites
Expand All @@ -60,10 +58,10 @@ cargo build --release

```bash
# TCP client example
cargo run --example tcp_client
cargo run --example tcp-client

# Kaonic mesh test client
cargo run --example kaonic_client
cargo run --example kaonic-client
```

## Use Cases
Expand Down
Loading