uor_addr/sexp/
pipeline.rs1pub use crate::outcome::{AddressOutcome, AddressWitness, VerifyError};
14
15#[derive(Debug, Clone, Copy, PartialEq, Eq)]
17pub enum AddressFailure {
18 InvalidSExpr,
20 PipelineFailure,
23}
24
25use crate::sexp::model::{
26 AddressModel, AddressModelBlake3, AddressModelKeccak256, AddressModelSha3_256,
27 AddressModelSha512,
28};
29use crate::sexp::value::{SExprCanon, SExprValue};
30use prism::pipeline::PrismModel;
31
32pub fn address(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
41 SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidSExpr)?;
42 let canon = SExprCanon::new(input_bytes);
43 let grounded = AddressModel::forward(SExprValue::new(&canon))
44 .map_err(|_| AddressFailure::PipelineFailure)?;
45 AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
46}
47
48pub fn address_blake3(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
55 SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidSExpr)?;
56 let canon = SExprCanon::new(input_bytes);
57 let grounded = AddressModelBlake3::forward(SExprValue::new(&canon))
58 .map_err(|_| AddressFailure::PipelineFailure)?;
59 AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
60}
61
62pub fn address_sha3_256(input_bytes: &[u8]) -> Result<AddressOutcome<73>, AddressFailure> {
69 SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidSExpr)?;
70 let canon = SExprCanon::new(input_bytes);
71 let grounded = AddressModelSha3_256::forward(SExprValue::new(&canon))
72 .map_err(|_| AddressFailure::PipelineFailure)?;
73 AddressOutcome::<73>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
74}
75
76pub fn address_keccak256(input_bytes: &[u8]) -> Result<AddressOutcome<74>, AddressFailure> {
83 SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidSExpr)?;
84 let canon = SExprCanon::new(input_bytes);
85 let grounded = AddressModelKeccak256::forward(SExprValue::new(&canon))
86 .map_err(|_| AddressFailure::PipelineFailure)?;
87 AddressOutcome::<74>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
88}
89
90pub fn address_sha512(input_bytes: &[u8]) -> Result<AddressOutcome<135, 64>, AddressFailure> {
98 SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidSExpr)?;
99 let canon = SExprCanon::new(input_bytes);
100 let grounded = AddressModelSha512::forward(SExprValue::new(&canon))
101 .map_err(|_| AddressFailure::PipelineFailure)?;
102 AddressOutcome::<135, 64>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
103}