diff --git a/Cargo.toml b/Cargo.toml index c7034610d..e43bc14d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,23 +17,24 @@ members = [ ] exclude = [ - "./target/*" + "./target/*", + "./examples" ] [workspace.dependencies] # workspace deps -citadel_sdk = { path = "./citadel_sdk", default-features = false, version = "0.11.0" } -citadel_wire = { path = "./citadel_wire", default-features = false, version = "0.11.0" } -citadel_user = { path = "./citadel_user", default-features = false, version = "0.11.0" } -citadel_crypt = { path = "./citadel_crypt", default-features = false, version = "0.11.0" } -citadel_pqcrypto = { path = "./citadel_pqcrypto", default-features = false, version = "0.11.0" } -citadel_proto = { path = "./citadel_proto", default-features = false, version = "0.11.0" } -citadel_logging = { path = "./citadel_logging", default-features = false, version = "0.11.0" } -citadel_io = { path = "./citadel_io", default-features = false, version = "0.11.0" } -citadel_types = { path = "./citadel_types", default-features = false, version = "0.11.0" } -netbeam = { path = "./netbeam", default-features = false, version = "0.11.0" } -firebase-rtdb = { path = "./firebase-rtdb", default-features = false, version = "0.11.0" } -async_ip = { path = "./async_ip", default-features = false, version = "0.11.0" } +citadel_sdk = { path = "./citadel_sdk", default-features = false, version = "0.11.2" } +citadel_wire = { path = "./citadel_wire", default-features = false, version = "0.11.2" } +citadel_user = { path = "./citadel_user", default-features = false, version = "0.11.2" } +citadel_crypt = { path = "./citadel_crypt", default-features = false, version = "0.11.2" } +citadel_pqcrypto = { path = "./citadel_pqcrypto", default-features = false, version = "0.11.2" } +citadel_proto = { path = "./citadel_proto", default-features = false, version = "0.11.2" } +citadel_logging = { path = "./citadel_logging", default-features = false, version = "0.11.2" } +citadel_io = { path = "./citadel_io", default-features = false, version = "0.11.2" } +citadel_types = { path = "./citadel_types", default-features = false, version = "0.11.2" } +netbeam = { path = "./netbeam", default-features = false, version = "0.11.2" } +firebase-rtdb = { path = "./firebase-rtdb", default-features = false, version = "0.11.2" } +async_ip = { path = "./async_ip", default-features = false, version = "0.11.2" } # ordinary deps generic-array = { version = "0.14.6" } diff --git a/README.md b/README.md index eec535a8d..951524883 100644 --- a/README.md +++ b/README.md @@ -1,89 +1,364 @@ ![](./resources/logo.png) [![Website shields.io](https://img.shields.io/website-up-down-green-red/http/shields.io.svg)](https://avarok.net) -[![crates.io](https://img.shields.io/crates/v/citadel_sdk.svg)](https://crates.io/crates/citadel_sdk) -[![codecov](https://codecov.io/gh/Avarok-Cybersecurity/Lusna/branch/master/graph/badge.svg?token=J739KOHOZR)](https://codecov.io/gh/Avarok-Cybersecurity/Lusna) +[![Crates.io](https://img.shields.io/crates/v/citadel_sdk.svg)](https://crates.io/crates/citadel_sdk) +[![codecov](https://codecov.io/gh/Avarok-Cybersecurity/Citadel-Protocol/branch/master/graph/badge.svg?token=J739KOHOZR)](https://app.codecov.io/gh/Avarok-Cybersecurity/Citadel-Protocol) [![Build docs](https://github.com/Avarok-Cybersecurity/Citadel-Protocol/actions/workflows/deploy.yml/badge.svg)](https://avarok-cybersecurity.github.io/Citadel-Protocol/docs/) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE-APACHE) -[![Slack](https://img.shields.io/badge/Slack-4A154B?style=for-the-badge&logo=slack&logoColor=white)](https://avarokcybersecurity.slack.com) +![Downloads](https://img.shields.io/crates/d/citadel_sdk?style=flat-square) +[![Upload Coverage Report](https://github.com/Avarok-Cybersecurity/Citadel-Protocol/actions/workflows/upload_cov.yaml/badge.svg)](https://github.com/Avarok-Cybersecurity/Citadel-Protocol/actions/workflows/upload_cov.yaml) + +## ๐ŸŒ Platform Support ![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black) ![macOS](https://img.shields.io/badge/mac%20os-000000?style=for-the-badge&logo=macos&logoColor=F0F0F0) ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white) ![iOS](https://img.shields.io/badge/iOS-000000?style=for-the-badge&logo=ios&logoColor=white) ![Android](https://img.shields.io/badge/Android-3DDC84?style=for-the-badge&logo=android&logoColor=white) +![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white) + +# ๐Ÿฐ Citadel Protocol + +A post-quantum secure networking protocol that makes developing hyper-secure client-server and P2P applications easy. Built with 100% safe Rust, it provides a robust foundation for creating secure, high-performance network applications with built-in NAT traversal and post-quantum cryptography using a very low memory footprint. + +## ๐Ÿ“‘ Table of Contents +- [๐ŸŒŸ Key Features](#-key-features) +- [๐Ÿš€ Quick Start](#-quick-start) +- [๐Ÿ”’ Security Architecture](#-security-architecture) +- [๐Ÿ“‚ Remote Encrypted Virtual Filesystem](#-remote-encrypted-virtual-filesystem) +- [โšก Threading Modes](#-threading-modes) +- [๐Ÿ’พ Backend Storage](#-backend-storage) +- [๐Ÿ“š Documentation](#-documentation) +- [๐Ÿ“œ Patent and Open Source](#-patent-and-open-source-commitment) +- [๐Ÿงช Testing](#-testing) +- [๐Ÿ›ก๏ธ Security Considerations](#๏ธ-security-considerations) +- [๐Ÿค Contributing](#-contributing) +- [โš–๏ธ License](#๏ธ-license) +- [๐Ÿ“ž Contact](#-contact) +- [๐ŸŽฏ Examples](#-examples) + +## ๐ŸŒŸ Key Features + +- ๐Ÿ”’ [Advanced Post-Quantum Security](#-advanced-post-quantum-security) - Novel multi-layered ratcheting algorithm +- ๐Ÿ›ก๏ธ [Customizable Security Modes](#๏ธ-security-modes) - Balance between security and performance +- ๐Ÿ“‚ [Remote Encrypted Virtual Filesystem](#-remote-encrypted-virtual-filesystem) - Secure remote storage solution +- โšก [Flexible Threading Modes](#-threading-modes) - Single and multi-threaded operation +- ๐Ÿ’พ [Multiple Backend Options](#-backend-storage) - Various storage solutions +- ๐ŸŒ Built-in NAT Traversal - No port forwarding required +- ๐Ÿ“ฑ Cross-Platform Support - Run anywhere +- ๐Ÿš€ High Performance - Low latency, minimal resource usage +- ๐Ÿ” Zero Trust Architecture - End-to-end encryption + +## ๐Ÿ” Advanced Post-Quantum Security + +Multiple Key Encapsulation Mechanism (KEM) families: +- [Kyber](https://pq-crystals.org/kyber/) (default) - NIST standardized +- [NTRU](https://ntru.org/) (Sntrup761) + +Novel Multi-layered Security Architecture: +- [Patent-pending](#-patent-and-open-source-commitment) multi-layered ratcheting algorithm +- Per-message re-keying mechanism +- Multi-layered key exchange protocol +- Multi-layered encryption with customizable algorithms +- Encryption algorithms: + - AES-256-GCM + - ChaCha20-Poly1305 + - [Ascon-80pq](https://ascon.iaik.tugraz.at/) + - Novel Kyber "scramcryption" for enhanced security +- [Customizable Security Modes](#๏ธ-security-modes): + - *True* Perfect Forward Secrecy (PFS) mode with advanced ratcheting + - Best-effort Mode (BEM) for high-throughput scenarios + - Configurable security levels and algorithm combinations -### A post-quantum signal-like protocol that makes developing hyper-secure client-to-server and p2p applications easy +## ๐ŸŒ Flexible Network Architecture +- [Client-Server and P2P support](#-quick-start) +- Built-in NAT traversal with STUN/TURN capabilities +- Multiple transport protocols: + - TCP + - TLS (default) + - [QUIC](https://www.chromium.org/quic/) +- [WebRTC](https://webrtc.org/) compatibility (optional feature) -# Whitepaper -The whitepaper for the Citadel Protocol can be found in the repository [here](The_Citadel_Protocol.pdf). Note: this whitepaper has not been updated since July 2022. While the protocol is very similar to what is covered in the whitepaper, it has since evolved. The whitepaper will be synced to the source code in the near future. +## โšก Advanced Features +- [Remote Encrypted Virtual Filesystem (RE-VFS)](#-remote-encrypted-virtual-filesystem) +- [Device-dependent and credential-based authentication](#-security-architecture) +- Automatic peer discovery -# Documentation -For examples on building applications, please check [the docs](https://avarok-cybersecurity.github.io/Citadel-Protocol/docs/) +## ๐Ÿ’พ [Backend Storage Options](#-backend-storage) +- Local filesystem (default) +- [Redis](https://redis.io/) support +- SQL support ([MySQL](https://www.mysql.com/), [PostgreSQL](https://www.postgresql.org/), [SQLite](https://www.sqlite.org/)) -## Build instructions -OpenSSL and Clang are required in order to compile the libraries. View the CI files in .github for an example of getting the code to compile on a bare machine. -Alternatively, you can run the following command to setup the environment +## ๐Ÿš€ Quick Start -```shell +### ๐Ÿ“‹ Prerequisites + +- Rust toolchain +- OpenSSL +- Clang + +### ๐Ÿ“ฅ Installation + +1. Add to your `Cargo.toml`: +```toml +[dependencies] +citadel_sdk = "latest_version" +``` + +2. Setup the development environment: +```bash cargo make install ``` -## Testing instructions -When running unit tests inside `citadel_sdk`, you **must** use the Makefile. The Makefile contains special -flags and environmental variables set to interface with `cargo test`. First, install cargo make: +### ๐Ÿ’ป Basic Usage -```shell -cargo install --force cargo-make +#### ๐Ÿ–ฅ๏ธ Server Example +```rust +use citadel_sdk::prelude::*; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let server = NodeBuilder::default() + .with_node_type(NodeType::server("127.0.0.1:25021")?) + .build(EmptyKernel::default())?; + + server.await?; + Ok(()) +} ``` -To run tests locally with limited setup, run: +#### ๐Ÿ“ฑ Client Example +```rust +use citadel_sdk::prelude::*; +use futures::StreamExt; -```shell -cargo make test-local +#[tokio::main] +async fn main() -> Result<(), Box> { + let client_kernel = SingleClientServerConnectionKernel::new_register_defaults( + "John Doe", + "john.doe", + "password", + "127.0.0.1:25021", + |connect_success, remote| async move { + let (sink, mut stream) = connect_success.channel.split(); + while let Some(message) = stream.next().await { + // Handle incoming messages + } + Ok(()) + } + )?; + + let client = NodeBuilder::default().build(client_kernel)?; + client.await?; + Ok(()) +} ``` -To run a comprehensive set of tests that require a SQL and/or redis server set up (please check the description in `Makefile.toml` for help setting up the environment variables), -run: +## ๐Ÿ”’ Security Architecture -```shell -cargo make test +The Citadel Protocol implements a novel multi-layered security approach that goes beyond traditional encryption methods: + +### ๐Ÿ”„ Multi-layered Ratcheting +- Implements an advanced patent-pending ratcheting algorithm that operates across multiple security layers +- Each layer maintains its own independent key schedule +- Provides enhanced forward secrecy by frequently rotating keys at different intervals +- Resistant against quantum attacks through post-quantum primitives + +### ๐Ÿ›ก๏ธ Security Modes +- *True* Perfect Forward Secrecy (PFS): + - Enforces re-keying on a per-message basis + - Guarantees maximum security for messaging applications + - Each message uses a new key derived from the previous state + - Complete forward secrecy at message granularity +- Best-effort Mode (BEM): + - Optimized for high-performance scenarios + - Re-keys as frequently as possible without blocking message transmission + - Maintains security while prioritizing throughput + - Ideal for streaming and high-bandwidth applications + +### ๐Ÿ”‘ Multi-layered Key Exchange +- Multiple independent key exchanges occur simultaneously +- Combines post-quantum KEMs with traditional algorithms +- Provides defense in depth against both classical and quantum attacks +- Configurable algorithm selection for each layer + +### โš™๏ธ Customizable Security Levels +- Flexible security modes to balance performance and security +- Perfect Forward Secrecy (PFS) mode with advanced ratcheting +- Best-effort Mode (BEM) for high-performance requirements +- Configurable algorithm combinations per security layer + +## โšก Threading Modes + +The Citadel Protocol provides flexible threading configurations to accommodate different performance requirements and use cases: + +### Single-Threaded Mode (Default) +- ๐Ÿš€ Optimized for low-latency and minimal resource usage +- ๐Ÿ“‰ Extremely low memory footprint +- โšก Rapid message processing with zero thread context switching +- ๐ŸŽฏ Ideal for: + - Edge devices and IoT applications + - Real-time communication systems + - Memory-constrained environments + - Applications prioritizing consistent low latency + +### Multi-Threaded Mode +- ๐Ÿ”„ Parallel processing for high-throughput scenarios +- ๐ŸŒ Enhanced scalability for concurrent connections +- ๐Ÿ’ช Optimal CPU utilization across multiple cores +- ๐ŸŽฏ Perfect for: + - Server applications handling numerous concurrent clients + - High-traffic network services + - CPU-intensive processing tasks + - Systems requiring maximum throughput + +Enable multi-threaded mode by setting the appropriate feature flag: + +```toml +[dependencies] +citadel_sdk = { version = "latest_version", features = ["multi-threaded"] } ``` -## WASM (dev only WIP) -The target triple `wasm32-wasi` is a WIP for support. These commands should be executed in order to compile to wasm +## ๐Ÿ“‚ Remote Encrypted Virtual Filesystem + +The Remote Encrypted Virtual Filesystem (RE-VFS) is a unique feature that enables secure remote data storage with unprecedented security guarantees: + +### ๐ŸŒŸ Key Features +- Store encrypted data on any remote node (peer or server) +- Physical separation of data and decryption keys +- Requires compromising both storage location and client for data access +- Perfect for distributed secure storage solutions + +### ๐Ÿ”’ Security Architecture +- Data is encrypted locally using Kyber public key encryption +- Decryption key is never stored with the data +- Uses Kyber scramcryption for minimal ciphertext size +- Optional multiple encryption layers for enhanced security + +### ๐ŸŽฏ Use Cases +- Secure cloud storage alternatives +- Distributed backup systems +- P2P file sharing with enhanced security +- Secure document management systems + +### ๐Ÿ’ป Example Usage +```rust +use citadel_sdk::fs; + +async fn store_file(remote: &mut NodeRemote) -> Result<(), Error> { + // Write file with reinforced security + fs::write_with_security_level( + remote, + "local_file.pdf", + SecurityLevel::Reinforced, + "/virtual/path/output.pdf" + ).await?; + + // Read file back + let local_path = fs::read(remote, "/virtual/path/output.pdf").await?; + Ok(()) +} +``` + +## ๐Ÿ’พ Backend Storage + +The Citadel Protocol offers flexible data persistence options to suit various deployment scenarios: + +### ๐Ÿ“ˆ Available Backends +- **๐Ÿ”’ In-Memory Storage**: + - Fastest performance + - Perfect for temporary sessions + - Ideal for testing and development + +- **๐Ÿ’ป Filesystem Backend** (default): + - Persistent storage using local filesystem + - Automatic file management + - Suitable for single-node deployments + +- **๐Ÿ“ˆ SQL Databases**: + - MySQL: Enterprise-grade reliability + - PostgreSQL: Advanced features and scalability + - SQLite: Embedded database option + +- **๐Ÿ“ˆ Redis Backend**: + - High-performance caching + - Distributed deployment support + - Perfect for session management + +### ๐Ÿ“Š Features +- Seamless switching between backends +- Automatic data serialization/deserialization +- Concurrent access support +- Transaction support (where applicable) +- Built-in connection pooling + +## ๐Ÿ“š Documentation + +- [๐Ÿ“– SDK Documentation](https://avarok-cybersecurity.github.io/Citadel-Protocol/docs/) +- [๐Ÿ“š API Reference](https://docs.rs/citadel_sdk) +- [๐Ÿ“ Examples](./examples/README.md) +- [๐Ÿ“„ Technical Architecture](The_Citadel_Protocol.pdf) + +## ๐Ÿ“œ Patent and Open Source Commitment + +The Citadel Protocol's core technology is a [patent-pending innovative security architecture](https://image-ppubs.uspto.gov/dirsearch-public/print/downloadPdf/20230403261) that combines multiple novel features into a unique, highly secure communication system. Despite the patent protection, we remain committed to keeping this technology free and open source for the benefit of the entire community. This approach ensures that: + +- The protocol remains freely available for everyone to use +- The patent serves to protect the technology from being closed-source or restricted +- Innovation and security improvements can continue to be community-driven +- The core technology stays accessible while being legally protected from potential abuse + +## ๐Ÿงช Testing + +The project includes comprehensive test suites. Use `cargo-make` for running tests: + ```bash -# Allows execution of `cargo wasi test --package citadel_pqcrypto` -cargo install cargo-wasi -# install wasmtime -curl https://wasmtime.dev/install.sh -sSf | bash -# get the include/build files -wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sysroot-12.0.tar.gz -tar -xvzf wasi-sysroot-12.0.tar.gz -rm wasi-sysroot-12.0.tar.gz -# Set environment variables -export WASI_SDK_DIR="$(pwd)/wasi-sysroot" -export WASMTIME_HOME="$(pwd)/.wasmtime" -export PATH="$WASMTIME_HOME/bin:$PATH" -export RUSTFLAGS="--cfg tokio_unstable" -# If on Mac M1, make sure to use the clang/ar provided by homebrew. Make sure to replace -export PATH="/opt/homebrew/Cellar/llvm//bin/:$PATH" -export AR="/opt/homebrew/Cellar/llvm//bin/llvm-ar" -export CC="/opt/homebrew/Cellar/llvm//bin/clang" +# Install cargo-make +cargo install --force cargo-make + +# Run local tests +cargo make test-local + +# Run comprehensive tests (requires SQL/Redis setup) +cargo make test ``` -Additionally, the feature `wasm` should be enabled when checking/compiling. +## ๐Ÿ›ก๏ธ Security Considerations + +While the Citadel Protocol implements cutting-edge security features: + +- The project is pending third-party security audits +- Core cryptographic primitives come from verified [Open Quantum Safe (OQS)](https://openquantumsafe.org/) and [PQClean](https://github.com/PQClean/PQClean) projects +- For maximum security, consider using hybrid cryptography with TLS/QUIC as underlying protocols + +## ๐Ÿค Contributing + +Contributions are welcome! Here's how you can help: + +1. Fork the repository +2. Create a feature branch +3. Make your changes +4. Submit a pull request + +Please ensure your code: +- Follows Rust best practices +- Includes appropriate tests +- Is properly documented +- Passes all CI checks + +## โš–๏ธ License -# Disclaimer -This project has not (yet) been audited by a third party. While some of the underlying cryptographic primitives come from the verified -Open Quantum Safe (OQS) project and/or the PQClean project, the Kyber library has not yet received an audit (the known answer tests pass, however). +This project is dual-licensed for maximum permissibility under: +- [MIT License](LICENSE-MIT) +- [Apache License 2.0](LICENSE-APACHE) -As such, we recommend that, if you choose to use this library and accept the risks associated with its use, you use hybrid cryptography by using either -TLS or QUIC as an underlying protocol to ensure that the protocol is at least as secure as elliptical curve cryptography. +## ๐Ÿ“ž Contact -# Authors +- [๐ŸŒ Website](https://avarok.net) +- [๐Ÿ’ฌ Slack Community](https://avarokcybersecurity.slack.com) +- [๐Ÿ“ GitHub Issues](https://github.com/Avarok-Cybersecurity/Citadel-Protocol/issues) -[Thomas Braun](https://thomaspbraun.com) - Founder -# Contributing +## ๐Ÿ‘ฅ Maintainers -Contributions are welcome! I have been the only developer for the past 5 years, and, need more people to help make the ecosystem flourish. \ No newline at end of file +- [๐Ÿ‘จโ€๐Ÿ’ป Thomas Braun](https://thomaspbraun.com) - Inventor and Core Developer +- [๐Ÿ‘จโ€๐Ÿ’ป Donovan Tjemmes](https://github.com/Tjemmmic) - Developer \ No newline at end of file diff --git a/async_ip/Cargo.toml b/async_ip/Cargo.toml index 919c9fb9c..637baf0f6 100644 --- a/async_ip/Cargo.toml +++ b/async_ip/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "async_ip" -version = "0.11.1" +version = "0.11.3" authors = ["Thomas Braun "] edition = "2021" description = "An asynchronous client used to obtain one's global Ipv6 or Ipv4 address" diff --git a/citadel_crypt/Cargo.toml b/citadel_crypt/Cargo.toml index e8ee56f0f..bc6f81742 100644 --- a/citadel_crypt/Cargo.toml +++ b/citadel_crypt/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "citadel_crypt" -version = "0.11.1" +version = "0.11.3" authors = ["Thomas Braun "] description = "Higher-level cryptographic library for the Citadel Protocol" edition = "2021" diff --git a/citadel_io/Cargo.toml b/citadel_io/Cargo.toml index 76bdf018f..8d30670f1 100644 --- a/citadel_io/Cargo.toml +++ b/citadel_io/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "citadel_io" -version = "0.11.1" +version = "0.11.3" authors = ["Thomas Braun "] edition = "2021" description = "Underlying runtime for interfacing with I/O for std/wasm targets" diff --git a/citadel_logging/Cargo.toml b/citadel_logging/Cargo.toml index 845c3218e..beaaf17f5 100644 --- a/citadel_logging/Cargo.toml +++ b/citadel_logging/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "citadel_logging" -version = "0.11.1" +version = "0.11.3" authors = ["Thomas Braun "] edition = "2021" description = "logging library for the Citadel Protocol" diff --git a/citadel_pqcrypto/Cargo.toml b/citadel_pqcrypto/Cargo.toml index fd7d0c147..c9fb5a811 100644 --- a/citadel_pqcrypto/Cargo.toml +++ b/citadel_pqcrypto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "citadel_pqcrypto" -version = "0.11.1" +version = "0.11.3" authors = ["Thomas Braun "] description = "Lower-level cryptographic library for the Citadel Protocol" edition = "2021" diff --git a/citadel_proto/Cargo.toml b/citadel_proto/Cargo.toml index ebcde4271..1755e0dc1 100644 --- a/citadel_proto/Cargo.toml +++ b/citadel_proto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "citadel_proto" -version = "0.11.1" +version = "0.11.3" authors = ["Thomas Braun "] description = "Networking library for the Citadel Protocol" edition = "2021" diff --git a/citadel_sdk/Cargo.toml b/citadel_sdk/Cargo.toml index 07771e34c..3ab239a18 100644 --- a/citadel_sdk/Cargo.toml +++ b/citadel_sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "citadel_sdk" -version = "0.11.1" +version = "0.11.3" authors = ["Thomas Braun "] description = "High-level library to build applications on the Citadel Protocol" edition = "2021" diff --git a/citadel_types/Cargo.toml b/citadel_types/Cargo.toml index 3831360cc..966d4ba6d 100644 --- a/citadel_types/Cargo.toml +++ b/citadel_types/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "citadel_types" -version = "0.11.1" +version = "0.11.3" authors = ["Thomas Braun "] description = "Types for the citadel protocol" edition = "2021" diff --git a/citadel_user/Cargo.toml b/citadel_user/Cargo.toml index 265a710b0..252a54f24 100644 --- a/citadel_user/Cargo.toml +++ b/citadel_user/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "citadel_user" -version = "0.11.1" +version = "0.11.3" authors = ["Thomas Braun "] description = "User backend library for the Citadel Protocol" edition = "2021" diff --git a/citadel_wire/Cargo.toml b/citadel_wire/Cargo.toml index 37ff63653..7bb4c4b21 100644 --- a/citadel_wire/Cargo.toml +++ b/citadel_wire/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "citadel_wire" -version = "0.11.1" +version = "0.11.3" authors = ["Thomas Braun "] description = "NAT traversal and wire support for the Citadel Protocol" edition = "2021" @@ -60,7 +60,7 @@ rustls-pemfile = { workspace = true } tokio-rustls = { workspace = true } [dev-dependencies] -citadel_logging = { path = "../citadel_logging" } +citadel_logging = { workspace = true } rand = "0.8.5" tokio-util = "0.7.4" rstest = { workspace = true } diff --git a/firebase-rtdb/Cargo.toml b/firebase-rtdb/Cargo.toml index 06ce658e4..a4a3564a1 100644 --- a/firebase-rtdb/Cargo.toml +++ b/firebase-rtdb/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "firebase-rtdb" -version = "0.11.1" +version = "0.11.3" authors = ["Thomas Braun "] description = "Firebase client for the Citadel Protocol" edition = "2021" diff --git a/netbeam/Cargo.toml b/netbeam/Cargo.toml index 8bec920d5..1b1f458d0 100644 --- a/netbeam/Cargo.toml +++ b/netbeam/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "netbeam" -version = "0.11.1" +version = "0.11.3" description = "a pure-rust asynchronous network synchronization crate (using tokio) that recreates familiar asynchronous paradigms but in a network context" authors = ["Thomas Braun "] edition = "2021"