| Crates.io | anproto |
| lib.rs | anproto |
| version | 0.1.0 |
| created_at | 2025-09-04 07:29:08.47587+00 |
| updated_at | 2025-09-04 07:29:08.47587+00 |
| description | Rust implementation of ANProto: the Authenticated and Non-networked protocol |
| homepage | https://github.com/vic/anproto-rs |
| repository | https://github.com/vic/anproto-rs |
| max_upload_size | |
| id | 1823798 |
| size | 28,338 |
Rust implementation of ANProto: the Authenticated and Non-networked protocol or ANother protocol.
ANProto is a protocol for authenticated, non-networked messages using ed25519 signatures, timestamps, and SHA-256 hashes, all base64-encoded.
Add to your Cargo.toml:
gen() -> Result<String, String>: Generates an ed25519 keypair, returns base64(public + secret).hash(data: &str) -> String: Computes SHA-256 of data, returns base64 hash.sign(hash: &str, key: &str) -> Result<String, String>: Signs (timestamp + hash) with the secret key, returns base64(public + signature + timestamp + hash).open(signed_message: &str) -> Result<String, String>: Verifies the signature and returns (timestamp + hash) if valid.Run the example:
cargo run --example example
This matches the output of the JavaScript implementation in ANProto/node_ex.js.
Run tests:
cargo test
Apache 2.0