// 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; }