Expand description
Cryptographic signature operations and utilities for AT Protocol records.
This library provides comprehensive functionality for working with AT Protocol records, including cryptographic signature creation and verification, AT-URI parsing, and datetime serialization utilities. Built on IPLD DAG-CBOR for deterministic encoding with support for P-256, P-384, and K-256 elliptic curve cryptography.
§Main Features
- Signature Operations: Create and verify cryptographic signatures following the community.lexicon.attestation.signature specification
- AT-URI Support: Parse and validate AT Protocol URIs for record identification
- DateTime Utilities: RFC 3339 datetime serialization with millisecond precision
- Type-Safe Errors: Structured error types following project conventions
§Example Usage
ⓘ
use atproto_record::attestation;
use atproto_identity::key::{identify_key, sign, to_public};
use base64::engine::general_purpose::STANDARD;
use serde_json::json;
let private_key = identify_key("did:key:zPrivate...")?;
let public_key = to_public(&private_key)?;
let key_reference = format!("{}", &public_key);
let record = json!({
"$type": "app.example.record",
"text": "Hello from attestation helpers!"
});
let sig_metadata = json!({
"$type": "com.example.inlineSignature",
"key": &key_reference,
"purpose": "demo"
});
let signing_record = attestation::prepare_signing_record(&record, &sig_metadata)?;
let cid = attestation::create_cid(&signing_record)?;
let signature_bytes = sign(&private_key, &cid.to_bytes())?;
let inline_attestation = json!({
"$type": "com.example.inlineSignature",
"key": key_reference,
"purpose": "demo",
"signature": {"$bytes": STANDARD.encode(signature_bytes)}
});
let signed = attestation::create_inline_attestation_reference(&record, &inline_attestation)?;
let reports = tokio_test::block_on(async {
attestation::verify_all_signatures(&signed, None).await
})?;
assert!(matches!(reports[0].status, attestation::VerificationStatus::Valid { .. }));Modules§
- aturi
- AT-URI parsing and validation.
- bytes
- Byte array serialization utilities.
- datetime
- DateTime serialization utilities.
- errors
- Structured error types for record operations.
- lexicon
- AT Protocol lexicon type definitions.
- tid
- Timestamp Identifier (TID) generation and parsing.
- typed
- Generic wrapper for handling lexicon types with
$typefields.