commit 15c708bc49ccf84943384049525427a307beb1f0
parent c7746c1d9565f9b3bba84afc64b05b644a30a724
Author: triesap <tyson@radroots.org>
Date: Tue, 19 May 2026 23:34:04 +0000
cli: report sp1 receipt metadata failures
- map invalid sp1 proof metadata reasons
- keep sp1 metadata output non-cryptographic
- harden hyf typed-client test timeout
- cover receipt reason-code mappings
Diffstat:
2 files changed, 40 insertions(+), 3 deletions(-)
diff --git a/src/runtime/hyf.rs b/src/runtime/hyf.rs
@@ -906,9 +906,10 @@ mod tests {
None,
&HyfEmptyInput::default(),
);
- let response = HyfClient::new(executable)
- .capabilities()
- .expect("capabilities");
+ let response =
+ HyfClient::with_timeouts(executable, Duration::from_secs(5), Duration::from_secs(5))
+ .capabilities()
+ .expect("capabilities");
assert_eq!(request["capability"], "sys.capabilities");
assert_eq!(request["input"], serde_json::json!({}));
diff --git a/src/runtime/validation_receipt.rs b/src/runtime/validation_receipt.rs
@@ -652,12 +652,24 @@ fn validation_receipt_invalid_reason_code(
RadrootsValidationReceiptError::InvalidProofMetadata("proof.material") => {
"sp1_proof_material_missing"
}
+ RadrootsValidationReceiptError::InvalidProofMetadata("proof.inline_proof_base64") => {
+ "sp1_inline_proof_invalid"
+ }
+ RadrootsValidationReceiptError::InvalidProofMetadata("proof.proof_reference") => {
+ "sp1_proof_reference_invalid"
+ }
RadrootsValidationReceiptError::TagMismatch("public_values_hash") => {
"public_values_hash_mismatch"
}
RadrootsValidationReceiptError::ExpectedBindingMismatch("public_values_hash") => {
"public_values_hash_mismatch"
}
+ RadrootsValidationReceiptError::ExpectedBindingMismatch("program_hash") => {
+ "sp1_program_hash_mismatch"
+ }
+ RadrootsValidationReceiptError::ExpectedBindingMismatch("verifying_key_hash") => {
+ "sp1_verifying_key_hash_mismatch"
+ }
_ => "validation_receipt_invalid",
}
}
@@ -768,5 +780,29 @@ mod tests {
)),
"public_values_hash_mismatch"
);
+ assert_eq!(
+ validation_receipt_invalid_reason_code(
+ &RadrootsValidationReceiptError::InvalidProofMetadata("proof.inline_proof_base64")
+ ),
+ "sp1_inline_proof_invalid"
+ );
+ assert_eq!(
+ validation_receipt_invalid_reason_code(
+ &RadrootsValidationReceiptError::InvalidProofMetadata("proof.proof_reference")
+ ),
+ "sp1_proof_reference_invalid"
+ );
+ assert_eq!(
+ validation_receipt_invalid_reason_code(
+ &RadrootsValidationReceiptError::ExpectedBindingMismatch("program_hash")
+ ),
+ "sp1_program_hash_mismatch"
+ );
+ assert_eq!(
+ validation_receipt_invalid_reason_code(
+ &RadrootsValidationReceiptError::ExpectedBindingMismatch("verifying_key_hash")
+ ),
+ "sp1_verifying_key_hash_mismatch"
+ );
}
}