0.3.17-pre.002

This commit is contained in:
2026-09-24 10:55:34 +02:00
parent a60397f08e
commit c56ae68834
15 changed files with 1995 additions and 17 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-store-api/tests/security_hardening.rs
// version: 3
// version: 4
//! Adversarial and retention-race canaries for the Store API RAW foundation.
@@ -166,3 +166,62 @@ fn v0_3_8_pre_003_inspection_summaries_and_counts_reject_payload_shaped_or_incon
assert!(ksp_store_api::RawInspectionPage::<u64>::try_new(std::vec::Vec::new(), 1, 2).is_err());
return;
}
#[test]
fn v0_3_17_pre_002_variant_detail_debug_keeps_complete_payload_material_redacted() {
let network = match ksp_store_api::RawNetworkId::new("mainnet".to_owned()) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let transaction_reference = ksp_store_api::RawTransactionReference::new(network, ksp_store_api::RawTransactionSignature::new([0x71_u8; 64]));
let variant_id = match ksp_store_api::RawTransactionVariantId::try_new(1) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let variant_reference = ksp_store_api::RawTransactionVariantReference::new(transaction_reference.clone(), variant_id);
let format = match ksp_store_api::RawFormatId::new("ksp.solana.raw_transaction".to_owned()) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let created_at = match ksp_store_api::RawTimestamp::from_unix_millis(1_000) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let payload_bytes = HOSTILE_MARKER.as_bytes().to_vec().into_boxed_slice();
let payload_size = match u64::try_from(payload_bytes.len()) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let summary = ksp_store_api::RawTransactionVariantSummary::try_new(
variant_reference,
ksp_store_api::RawTransactionVariantOrigin::Native,
77,
std::option::Option::None,
format.clone(),
1,
ksp_store_api::RawRetentionState::Full,
std::option::Option::Some(payload_size),
true,
1,
created_at,
);
let summary = match summary {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let payload = ksp_store_api::RawPayload::try_new(format, 1, payload_bytes, ksp_store_api::RawContentHash::new([0x72_u8; 32]));
let payload = match payload {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let transaction = ksp_store_api::RawTransaction::new(transaction_reference, 77, std::option::Option::None, payload);
let detail = ksp_store_api::RawTransactionVariantDetail::try_new(summary, std::option::Option::Some(transaction));
let detail = match detail {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let debug = std::format!("{detail:?}");
assert!(!debug.contains(HOSTILE_MARKER));
assert!(!debug.contains("payload: ["));
return;
}