No description
Find a file
faicel b12e02f755
All checks were successful
Create prerelease tag on dev / tag_prerelease (push) Successful in 6s
Create Forgejo release on tag / release_on_tag (push) Successful in 1m37s
Merge pull request 'Update sigil version to 0.2.1-rc.5 in Cargo.toml and Cargo.lock for improved stability and features.' (#9) from pairing into dev
Reviewed-on: #9
2026-03-17 16:05:08 +00:00
.cargo Enhance CI workflows: add support for stable and RC crate publishing, update Cargo.toml configuration for new registry 2026-03-17 10:10:00 +01:00
.claude Update sigil version to 0.2.1-rc.1 and enhance handshake implementation to include session key expiration. Modify ECIES plaintext structure to accommodate new key expiration timestamp, and update related tests and CI workflows accordingly. 2026-03-17 16:56:21 +01:00
.forgejo Update sigil version to 0.2.1-rc.1 and enhance handshake implementation to include session key expiration. Modify ECIES plaintext structure to accommodate new key expiration timestamp, and update related tests and CI workflows accordingly. 2026-03-17 16:56:21 +01:00
scripts init 2026-03-08 13:38:40 +01:00
src Update sigil version to 0.2.1-rc.1 and enhance handshake implementation to include session key expiration. Modify ECIES plaintext structure to accommodate new key expiration timestamp, and update related tests and CI workflows accordingly. 2026-03-17 16:56:21 +01:00
.gitignore update version 2026-03-12 17:34:56 +01:00
Cargo.lock Update sigil version to 0.2.1-rc.5 in Cargo.toml and Cargo.lock for improved stability and features. 2026-03-17 17:02:16 +01:00
Cargo.toml Update sigil version to 0.2.1-rc.5 in Cargo.toml and Cargo.lock for improved stability and features. 2026-03-17 17:02:16 +01:00
CHANGELOG.md update version 2026-03-12 17:34:56 +01:00
LICENSE init 2026-03-08 13:38:40 +01:00
README.md init 2026-03-08 13:38:40 +01:00

sigil

no_std Rust library for secure device communication over LoRa: messaging, encryption, init flows, key derivation, and events.


What is a Sigil?

Sigil (from Latin sigillum, “seal”) traditionally denotes a symbol or mark that represents an identity, intent, or authority—like a seal on a document. In this project, sigil is the “seal” of your device stack: the layer that defines how devices identify, authenticate, and exchange encrypted messages over LoRa. The crate provides the communication primitives (init, keys, crypto, events) so that each device can act as a distinct, recognizable identity in the network—hence the name.


Features

  • com — Communication over LoRa: read/write of encrypted messages, header validation, key callbacks.
  • models — Shared message and protocol models (e.g. MessageSchema, events, init request/response).

Build with default features or enable only what you need.


Usage

Add to your Cargo.toml (adjust registry and version as needed):

[dependencies]
sigil = { version = "0.1", registry = "forgejo", default-features = false, features = ["com"] }

Example: read and decrypt a message with Sigil::read, using your own header validation and key lookup:

use sigil::Sigil;

// With a LoRa controller, delay, and callbacks for header validation and key lookup:
let msg = Sigil::read(
    &mut lora,
    &mut delay,
    |header| { /* validate header */ true },
    |msg_type, source| { /* return Some(key) or None */ None },
    timestamp,
)?;

See the public API docs and com::init, com::keys, and crypto modules for encryption, key derivation (e.g. HKDF via KeyManager), and init flows.


Project structure

sigil/
├── src/
│   ├── lib.rs
│   ├── com/           # Communication over LoRa
│   │   ├── init/      # Init flows (gateway, sensor)
│   │   ├── keys/      # Key management (e.g. KeyManager, HKDF)
│   │   ├── event/     # Event handling
│   │   └── error/
│   ├── models/        # Shared message and protocol models
│   │   └── common/
│   └── crypto/        # ChaCha20-Poly1305 encrypt/decrypt
├── scripts/
│   └── test.sh        # Runs cargo test
├── Cargo.toml
├── LICENSE
└── README.md

Status

Early development. API may change. Suitable for evaluation and integration in embedded LoRa stacks.


License

Personal Use Only — Non-Commercial. See LICENSE for full terms and disclaimers.