1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//! Layer-3 substrate-Term verbs per [Wiki ADR-024][09-adr-024] +
//! [Wiki ADR-055][09-adr-055] + [Wiki ADR-056][09-adr-056].
//!
//! Per ADR-056 the ψ-residuals discipline applies only to the route
//! body's syntactic surface; verb bodies admit the full substrate
//! vocabulary including `hash(...)` axis invocations and `concat(...)`.
//! This unblocks the canonical cryptographic compound verbs the wiki
//! commits to per ADR-031: HMAC, HKDF, ECDSA, Merkle-tree construction.
//!
//! # Verbs shipped
//!
//! - [`merkle_reduce_pair`] — Merkle-tree internal-node reducer
//! `H(left || right)` over a `partition_product(Digest32, Digest32)`
//! input. Composes `hash(concat(input.0, input.1))`. This is the
//! reducer that drives any Merkle-tree `tree_fold` composition.
//! - [`hmac_inner_prep`] — HMAC inner-hash step
//! `H(K_ipad || message)`. The full HMAC composition
//! `H(K_opad || H(K_ipad || message))` chains two instances of this
//! verb plus an outer key prep — the wiki names this as the
//! canonical prism-crypto verb roster's HMAC realization per
//! ADR-031.
//!
//! [09-adr-024]: https://github.com/UOR-Foundation/UOR-Framework/wiki/09-Architecture-Decisions
//! [09-adr-055]: https://github.com/UOR-Foundation/UOR-Framework/wiki/09-Architecture-Decisions
//! [09-adr-056]: https://github.com/UOR-Foundation/UOR-Framework/wiki/09-Architecture-Decisions
use ;
use crateDigest;
/// 32-byte digest leaf (alias for the parametric `Digest<32>`).
pub type Digest32 = ;
/// 64-byte block leaf for HMAC's keyed-prefix composition.
pub type HmacBlock64 = ;
partition_product!;
verb!
partition_product!;
verb!