uor_addr/codemodule/
pipeline.rs1pub use crate::outcome::{AddressOutcome, AddressWitness, VerifyError};
17
18#[derive(Debug, Clone, Copy, PartialEq, Eq)]
20pub enum AddressFailure {
21 InvalidAst,
23 PipelineFailure,
26}
27
28use crate::codemodule::model::{
29 AddressModel, AddressModelBlake3, AddressModelKeccak256, AddressModelSha3_256,
30 AddressModelSha512,
31};
32use crate::codemodule::value::CodeModuleCarrier;
33use crate::sexp::SExprCanon;
34use prism::pipeline::PrismModel;
35
36pub fn address(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
45 SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidAst)?;
46 let canon = SExprCanon::new(input_bytes);
47 let grounded = AddressModel::forward(CodeModuleCarrier::new(&canon))
48 .map_err(|_| AddressFailure::PipelineFailure)?;
49 AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
50}
51
52pub fn address_blake3(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
59 SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidAst)?;
60 let canon = SExprCanon::new(input_bytes);
61 let grounded = AddressModelBlake3::forward(CodeModuleCarrier::new(&canon))
62 .map_err(|_| AddressFailure::PipelineFailure)?;
63 AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
64}
65
66pub fn address_sha3_256(input_bytes: &[u8]) -> Result<AddressOutcome<73>, AddressFailure> {
73 SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidAst)?;
74 let canon = SExprCanon::new(input_bytes);
75 let grounded = AddressModelSha3_256::forward(CodeModuleCarrier::new(&canon))
76 .map_err(|_| AddressFailure::PipelineFailure)?;
77 AddressOutcome::<73>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
78}
79
80pub fn address_keccak256(input_bytes: &[u8]) -> Result<AddressOutcome<74>, AddressFailure> {
87 SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidAst)?;
88 let canon = SExprCanon::new(input_bytes);
89 let grounded = AddressModelKeccak256::forward(CodeModuleCarrier::new(&canon))
90 .map_err(|_| AddressFailure::PipelineFailure)?;
91 AddressOutcome::<74>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
92}
93
94pub fn address_sha512(input_bytes: &[u8]) -> Result<AddressOutcome<135, 64>, AddressFailure> {
102 SExprCanon::validate(input_bytes).map_err(|_| AddressFailure::InvalidAst)?;
103 let canon = SExprCanon::new(input_bytes);
104 let grounded = AddressModelSha512::forward(CodeModuleCarrier::new(&canon))
105 .map_err(|_| AddressFailure::PipelineFailure)?;
106 AddressOutcome::<135, 64>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
107}