29 lines
1.5 KiB
Rust
29 lines
1.5 KiB
Rust
// file: crates/ksp-raw-transaction-lib/tests/security_hardening.rs
|
|
// version: 2
|
|
|
|
//! Adversarial canaries for the common RAW Transaction foundation.
|
|
|
|
#[test]
|
|
fn pre_002_signature_errors_never_echo_hostile_input() {
|
|
let hostile = format!("{}0", "A".repeat(63));
|
|
let result = ksp_raw_transaction_lib::parse_raw_transaction_signature(hostile.as_str());
|
|
assert!(result.is_err());
|
|
if let std::result::Result::Err(error) = result {
|
|
assert_eq!(error.code(), ksp_raw_transaction_lib::ERROR_CODE_RAW_TRANSACTION_SIGNATURE_INVALID);
|
|
assert!(!std::format!("{error:?}").contains(hostile.as_str()));
|
|
assert!(!error.to_string().contains(hostile.as_str()));
|
|
}
|
|
return;
|
|
}
|
|
|
|
#[test]
|
|
fn pre_002_public_error_codes_are_stable_and_domain_scoped() {
|
|
assert_eq!(ksp_raw_transaction_lib::ERROR_CODE_RAW_TRANSACTION_CANONICALIZATION_INVALID.domain(), "raw_transaction");
|
|
assert_eq!(ksp_raw_transaction_lib::ERROR_CODE_RAW_TRANSACTION_CANONICALIZATION_INVALID.code(), "canonicalization_invalid");
|
|
assert_eq!(ksp_raw_transaction_lib::ERROR_CODE_RAW_TRANSACTION_MATERIAL_INVALID.domain(), "raw_transaction");
|
|
assert_eq!(ksp_raw_transaction_lib::ERROR_CODE_RAW_TRANSACTION_MATERIAL_INVALID.code(), "material_invalid");
|
|
assert_eq!(ksp_raw_transaction_lib::ERROR_CODE_RAW_TRANSACTION_SIGNATURE_INVALID.domain(), "raw_transaction");
|
|
assert_eq!(ksp_raw_transaction_lib::ERROR_CODE_RAW_TRANSACTION_SIGNATURE_INVALID.code(), "signature_invalid");
|
|
return;
|
|
}
|