Skip to main content

codec_jcs/
lib.rs

1// SPDX-FileCopyrightText: Copyright © 2026 ReallyMe LLC. All rights reserved
2//
3// SPDX-License-Identifier: Apache-2.0
4
5//! JSON Canonicalization Scheme helpers.
6//!
7//! Object member ordering and finite floating-point formatting follow RFC
8//! 8785. The raw-text API rejects duplicate object member names and malformed
9//! JSON. Integer tokens that `serde_json` retains exactly as `i64` or `u64`
10//! are additionally rejected outside `[-(2^53)+1, (2^53)-1]`; integer-valued
11//! binary64 numbers are subject to the same local policy. Non-integer binary64
12//! numbers follow RFC 8785's ECMAScript rounding semantics.
13
14mod canonicalize;
15mod error;
16mod parse_json;
17
18pub use canonicalize::{canonicalize_json_text, canonicalize_trusted_json_value};
19pub use error::JcsError;
20
21/// Maximum array/object nesting depth accepted by [`canonicalize_trusted_json_value`].
22///
23/// Defense in depth: `serde_json`'s parser already caps nesting, but a
24/// caller may hand in a `Value` built by other means, so canonicalization
25/// enforces its own bound rather than trusting the input's provenance.
26pub const MAX_NESTING_DEPTH: usize = 128;