stegoeggo 0.2.3

Rights-reservation metadata and AI-training restriction notices for images, with optional steganographic markers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use super::claim::ProvenanceClaim;

/// Canonical JSON serialization for provenance claims.
///
/// Produces deterministic JSON with sorted keys, no whitespace,
/// and null omission. This form is used for hashing and signing.
#[must_use]
pub fn canonical_json(claim: &ProvenanceClaim) -> Vec<u8> {
    claim.canonical_bytes()
}

/// Verify that canonical bytes are stable across calls.
#[must_use]
pub fn verify_canonical_stability(claim: &ProvenanceClaim) -> bool {
    let bytes1 = canonical_json(claim);
    let bytes2 = canonical_json(claim);
    bytes1 == bytes2
}