Expand description
§rust-sign
A document signing library using BLAKE3 hashing and Ed25519 signatures.
§Features
- BLAKE3 hashing for fast, secure document fingerprinting
- Ed25519 signatures for compact, secure digital signatures
- Multiple signatures support for multi-party signing
- JSON output with timestamps and metadata
- Streaming support for large files
§Quick Start
§Generate a Keypair
use rust_sign::KeyPair;
let keypair = KeyPair::generate();
// Save to file (optional)
// keypair.save_to_file("my_key.pem").unwrap();§Sign a Document
use rust_sign::{KeyPair, Signer};
let keypair = KeyPair::generate();
let document = b"Important document content";
let signature = Signer::new(&keypair)
.with_signer_id("alice@example.com")
.with_metadata("purpose", "contract")
.sign_bytes(document)
.unwrap();
// Save signature to file
// signature.save("document.sig").unwrap();
println!("{}", signature.to_json().unwrap());§Verify a Signature
use rust_sign::{KeyPair, Signer, Verifier};
let keypair = KeyPair::generate();
let document = b"Important document content";
let signature = Signer::new(&keypair).sign_bytes(document).unwrap();
let result = Verifier::verify_bytes(document, &signature).unwrap();
assert!(result.all_valid);
println!("All {} signatures valid!", result.valid_count());§Multiple Signatures
use rust_sign::{KeyPair, Signer, Verifier};
let alice = KeyPair::generate();
let bob = KeyPair::generate();
let document = b"Contract requiring multiple signatures";
// Alice signs first
let mut signature = Signer::new(&alice)
.with_signer_id("alice@example.com")
.sign_bytes(document)
.unwrap();
// Bob co-signs
Signer::new(&bob)
.with_signer_id("bob@example.com")
.cosign(&mut signature)
.unwrap();
// Verify all signatures
let result = Verifier::verify_bytes(document, &signature).unwrap();
assert!(result.all_valid);
assert_eq!(result.valid_count(), 2);Re-exports§
pub use error::Result;pub use error::SignError;pub use hash::hash_bytes;pub use hash::hash_file;pub use hash::hash_reader;pub use hash::DocumentHash;pub use keys::KeyPair;pub use keys::PublicKey;pub use signature::DocumentSignature;pub use signature::SignatureEntry;pub use signer::sign_bytes;pub use signer::sign_file;pub use signer::Signer;pub use verifier::verify_bytes;pub use verifier::verify_file;pub use verifier::SignatureResult;pub use verifier::VerificationResult;pub use verifier::Verifier;