DC-CRYPTO-09
DC derived enforcedSum6KES expanded signing-key serde and period inference. raw_serialize_signing_key_kes / raw_deserialize_signing_key_kes are byte-identical to Haskell's rawSerialiseSignKeyKES / rawDeserialiseSignKeyKES for Sum6KES Ed25519DSIGN. The on-disk format is exactly 608 bytes; any other payload size fails closed via KesParseError::WrongPayloadSize. current_period is uniquely inferable from which sub-seeds are zeroed in the tree (no heuristic; exactly one valid period or a closed parse error) — implemented per the proof obligation at docs/clusters/PHASE4-N-P/period-from-zeroed-sum6-tree-shape-proof.md. Round-trip preserves period; serialize → deserialize → serialize yields byte-identical output for every period 0..=63. Malformed sub-trees (truncated child skey, wrong VK length at any recursion level, inconsistent vk0/vk1 hashes, leaf-all-zero) → closed KesParseError variant; no best-effort guesswork.
- Source
docs/clusters/PHASE4-N-P/cluster.md; docs/planning/phase4-n-p-invariants.md §1 (I3, I5); §2 (N2, N3, N4, N5); docs/clusters/PHASE4-N-P/period-from-zeroed-sum6-tree-shape-proof.md
- Introduced in
- PHASE4-N-P
Enforcement trace
Code
Tests 15
- sum6_raw_serialize_signing_key_kes_size_is_608
- sum6_raw_serialize_signature_kes_size_is_448
- sum6_skey_round_trip_at_every_period_0_to_63
- sum6_signature_round_trip_at_every_period
- period_from_zeroed_sum6_tree_shape_agrees_with_update_kes_chain
- period_from_zeroed_sum6_tree_shape_rejects_leaf_all_zero
- raw_deserialize_signing_key_kes_rejects_wrong_payload_size
- raw_deserialize_signing_key_kes_rejects_leaf_all_zero
- raw_deserialize_signing_key_kes_rejects_inconsistent_vk_left_at_level_6
- raw_deserialize_signing_key_kes_rejects_inconsistent_vk_right_at_level_6
- raw_deserialize_signature_kes_rejects_wrong_payload_size
- cardano_cli_corpus_skey_round_trips_through_ade_serde
- cardano_cli_corpus_skey_period_inference_is_zero
- cardano_cli_corpus_negative_flip_one_byte_in_vk_left_fail_closed
- cardano_cli_corpus_constants_have_expected_sizes