1#![allow(clippy::module_name_repetitions)]
9
10mod error;
11mod ids;
12pub mod keys;
13mod message;
14pub mod pow;
15mod signing;
16
17pub use error::CoreError;
18pub use ids::{AgentPubkey, BlobId, ChannelId, MessageId, NetworkId, Nonce, Seq};
19pub use keys::{
20 derive_auth_mldsa, derive_identity_ed25519, AuthKeyPair, MLDSA65SigningKey, SEED_BYTES,
21};
22pub use message::{Channel, ChannelKind, Message, MessageType};
23pub use signing::{
24 body_sha256_b64url, build_header_value, build_sealed_header_value, canonical_query_string,
25 canonical_string, derive_sealed_post_key, ml_dsa_sign, ml_dsa_verify, parse_header_value,
26 parse_sealed_header_value, post_canonical_string, sealed_canonical_string, sealed_token_mac,
27 sign_post, verify_post, verify_sealed_token, verify_signature, MlDsaError, ParsedSealed,
28 ParsedSignature, SealedTokenError, SignatureParseError, SignatureVerifyError,
29 EMPTY_BODY_SHA256, ML_DSA_PUBKEY_BYTES, ML_DSA_SIG_BYTES, POST_CONTEXT, SEALED_KEY_BYTES,
30 SEALED_LABEL, SEALED_SIGNATURE_VERSION, SIGNATURE_HEADER, SIGNATURE_VERSION,
31};
32
33pub const TIMESTAMP_WINDOW_SECS: i64 = 60;
35
36pub const NONCE_RETENTION_SECS: i64 = 120;
40
41pub const MAX_TEXT_CONTENT_BYTES: usize = 4096;
43
44pub const MAX_MLS_CONTENT_BYTES: usize = 1024 * 1024;
47
48pub const MAX_IDEMPOTENCY_KEY_BYTES: usize = 128;
50
51pub const MAX_INTRO_BYTES: usize = 280;
53
54pub const MAX_POST_CONTENT_BYTES: usize = 16 * 1024;
56
57pub const MAX_REACTION_BYTES: usize = 32;
59
60pub const IDEMPOTENCY_RETENTION_SECS: i64 = 24 * 60 * 60;