Skip to main content

ratify_protocol/
lib.rs

1//! Ratify Protocol v1 — Rust reference SDK.
2//!
3//! A cryptographic trust protocol for human-agent and agent-agent interactions
4//! as agents start to transact. Every signature is hybrid Ed25519 + ML-DSA-65
5//! (FIPS 204): quantum-safe by design.
6//!
7//! See docs/EXPLAINED.md and docs/AGENT_TO_AGENT.md in the repository for
8//! architecture, threat model, and agent-to-agent patterns.
9//!
10//! # `no_std` support
11//!
12//! Disable the default `std` feature to use this crate without the standard
13//! library. An `alloc` crate is required. I/O, `SystemTime`, and `serde_json`
14//! support are only available with `std`.
15
16#![cfg_attr(not(feature = "std"), no_std)]
17extern crate alloc;
18
19pub mod canonical;
20pub mod constraints;
21pub mod crypto;
22pub mod receipts;
23pub mod scope;
24pub mod types;
25pub mod verify;
26
27pub use canonical::{base64_std_decode, base64_std_encode, hex_decode, hex_encode};
28#[cfg(feature = "std")]
29pub use canonical::canonical_json;
30pub use crypto::{
31    chain_hash, challenge_sign_bytes, challenge_sign_bytes_with_session_context,
32    challenge_sign_bytes_with_stream, delegation_sign_bytes, derive_id, generate_challenge,
33    generate_hybrid_keypair, issue_delegation, issue_key_rotation_statement, issue_revocation_list,
34    issue_revocation_push, issue_session_token, issue_witness_entry, key_rotation_sign_bytes,
35    revocation_push_sign_bytes, revocation_sign_bytes, session_token_sign_bytes, sign_both,
36    sign_challenge, sign_challenge_with_session_context, sign_challenge_with_stream,
37    sign_transaction_receipt_party, transaction_receipt_sign_bytes, verify_both,
38    verify_challenge_signature, verify_challenge_signature_with_session_context,
39    verify_challenge_signature_with_stream, verify_delegation_signature,
40    verify_delegation_signature_e, verify_key_rotation_statement, verify_revocation_list,
41    verify_revocation_push, verify_session_token, verify_session_token_e, verify_witness_entry,
42    witness_entry_sign_bytes,
43};
44#[cfg(feature = "std")]
45pub use crypto::{generate_agent, generate_human_root};
46pub use scope::{
47    expand_scopes, has_scope, intersect_scopes, is_sensitive, validate_scopes, CUSTOM_SCOPE_PREFIX,
48    SCOPE_COMMS_CALENDAR_READ, SCOPE_COMMS_CALENDAR_WRITE, SCOPE_COMMS_EMAIL_DELETE,
49    SCOPE_COMMS_EMAIL_READ, SCOPE_COMMS_EMAIL_SEND, SCOPE_COMMS_MESSAGE_DELETE,
50    SCOPE_COMMS_MESSAGE_READ, SCOPE_COMMS_MESSAGE_SEND, SCOPE_CONTRACT_READ, SCOPE_CONTRACT_SIGN,
51    SCOPE_DATA_DELETE, SCOPE_DATA_EXPORT, SCOPE_DATA_READ, SCOPE_DATA_SHARE, SCOPE_DATA_WRITE,
52    SCOPE_EXECUTE_CODE, SCOPE_EXECUTE_TOOL, SCOPE_FILES_READ, SCOPE_FILES_WRITE,
53    SCOPE_GENERATE_CONTENT, SCOPE_GENERATE_DEEPFAKE, SCOPE_IDENTITY_DELEGATE, SCOPE_IDENTITY_PROVE,
54    SCOPE_MEETING_ATTEND, SCOPE_MEETING_CHAT, SCOPE_MEETING_RECORD, SCOPE_MEETING_SHARE_SCREEN,
55    SCOPE_MEETING_SPEAK, SCOPE_MEETING_VIDEO, SCOPE_PAYMENTS_AUTHORIZE, SCOPE_PAYMENTS_RECEIVE,
56    SCOPE_PAYMENTS_SEND, SCOPE_TRANSACT_PURCHASE, SCOPE_TRANSACT_SELL,
57};
58pub use receipts::{
59    bundle_hash, issue_policy_verdict, issue_verification_receipt,
60    policy_verdict_sign_bytes_buf, receipt_hash, verification_receipt_sign_bytes_buf,
61    verifier_context_hash, verify_policy_verdict, verify_verification_receipt,
62};
63pub use types::{
64    AgentIdentity, Anchor, AnchorResolver, AuditProvider, Constraint, ConstraintEvaluator,
65    DelegationCert, HumanRoot, HybridPrivateKey, HybridPublicKey, HybridSignature, IdentityStatus,
66    KeyRotationStatement, PolicyProvider, PolicyVerdict, ProofBundle, ReceiptParty,
67    ReceiptPartySignature, RevocationList, RevocationProvider, RevocationPush, SessionToken,
68    StreamContext, TransactionReceipt, TransactionReceiptResult, VerificationReceipt,
69    VerifierContext, VerifyOptions, VerifyResult, WitnessEntry, CHALLENGE_WINDOW_SECONDS,
70    ED25519_PUBLIC_KEY_SIZE, ED25519_SIGNATURE_SIZE, MAX_DELEGATION_CHAIN_DEPTH,
71    MLDSA65_PUBLIC_KEY_SIZE, MLDSA65_SIGNATURE_SIZE, PROTOCOL_VERSION,
72};
73pub use verify::{verify_bundle, verify_streamed_turn, verify_transaction_receipt};