This repo contains libraries, tools, samples and examples for developers who wish to work with the atPlatform from Rust code.
It currently has limited functionality with minimal tests.
The following need to be installed:
rust
- Installation instructionsopenssl
libssl-dev
pkg-config
Send data to an atSign - cargo run --example send_data_example <path-to-at-keys> <message> <atSign-of-sender> <atSign-of-receiver>
path-to-at-keys
- Absolute path to the.atKeys
of the sendermessage
- Text data to send to receiveratSign-of-sender
- The name of the atSign (without@
) who is sending the dataatSign-of-receiver
- The name of the atSign (without@
) who is receiving the data
RUST_LOG=info cargo run --example send_data_example ~/.atsign/keys/@aliens12_key.atKeys hello_there aliens12 virgogigantic64
Fetch data from an atSign - cargo run --example fetch_data_example <path-to-at-keys> <atSign-of-receiver> <atSign-of-sender>
path-to-at-keys
- Absolute path to the.atKeys
of the receiveratSign-of-receiver
- The name of the atSign (without@
) who is receiving the dataatSign-of-sender
- The name of the atSign (without@
) who is sending the data
RUST_LOG=info cargo run --example fetch_data_example ~/.atsign/keys/@virgogigantic64_key.atKeys virgogigantic64 aliens12
at_client
- What consumers of the library will mostly interact withat_secrets
- Struct for constructing secrets from a fileat_chops
(Cryptographic and Hashing Operations (CHOPS))utils.rs
- Contains the generic, low level crypto operationsat_chops.rs
- Contains the specific combination of crypto operations that the client and verbs can use
verbs
- Contains a trait that all verbs have to implement. Verbs execute the atProtocol verbs by taking in arguments from the client.
This library uses the log
crate. This means implementors of this library can use something like env_logger
and get info from the library.
All of our software is open with intent. We welcome contributions - we want pull requests, and we want to hear about issues. See also CONTRIBUTING.md.
- Notifications using the
monitor
verb - Interoperability with other SDKs
-
no_std
implementation - Distribute to
crates.io
- Support for
async
runtime - Add default implementations for TLS connection on multiple platforms (ESP32, Linux, Pico W)