uor_addr/cbor/
pipeline.rs1pub use crate::outcome::{AddressOutcome, AddressWitness, VerifyError};
20
21#[derive(Debug, Clone, Copy, PartialEq, Eq)]
23pub enum AddressFailure {
24 InvalidCbor,
28 PipelineFailure,
31}
32
33#[cfg(feature = "alloc")]
34use crate::cbor::model::{
35 AddressModel, AddressModelBlake3, AddressModelKeccak256, AddressModelSha3_256,
36 AddressModelSha512,
37};
38#[cfg(feature = "alloc")]
39use crate::cbor::value::{canonicalize, CborCarrier};
40#[cfg(feature = "alloc")]
41use prism::pipeline::PrismModel;
42
43#[cfg(feature = "alloc")]
52pub fn address(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
53 let canonical = canonicalize(input_bytes).map_err(|_| AddressFailure::InvalidCbor)?;
54 let grounded = AddressModel::forward(CborCarrier::new(&canonical))
55 .map_err(|_| AddressFailure::PipelineFailure)?;
56 AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
57}
58
59#[cfg(feature = "alloc")]
66pub fn address_blake3(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
67 let canonical = canonicalize(input_bytes).map_err(|_| AddressFailure::InvalidCbor)?;
68 let grounded = AddressModelBlake3::forward(CborCarrier::new(&canonical))
69 .map_err(|_| AddressFailure::PipelineFailure)?;
70 AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
71}
72
73#[cfg(feature = "alloc")]
80pub fn address_sha3_256(input_bytes: &[u8]) -> Result<AddressOutcome<73>, AddressFailure> {
81 let canonical = canonicalize(input_bytes).map_err(|_| AddressFailure::InvalidCbor)?;
82 let grounded = AddressModelSha3_256::forward(CborCarrier::new(&canonical))
83 .map_err(|_| AddressFailure::PipelineFailure)?;
84 AddressOutcome::<73>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
85}
86
87#[cfg(feature = "alloc")]
94pub fn address_keccak256(input_bytes: &[u8]) -> Result<AddressOutcome<74>, AddressFailure> {
95 let canonical = canonicalize(input_bytes).map_err(|_| AddressFailure::InvalidCbor)?;
96 let grounded = AddressModelKeccak256::forward(CborCarrier::new(&canonical))
97 .map_err(|_| AddressFailure::PipelineFailure)?;
98 AddressOutcome::<74>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
99}
100
101#[cfg(feature = "alloc")]
109pub fn address_sha512(input_bytes: &[u8]) -> Result<AddressOutcome<135, 64>, AddressFailure> {
110 let canonical = canonicalize(input_bytes).map_err(|_| AddressFailure::InvalidCbor)?;
111 let grounded = AddressModelSha512::forward(CborCarrier::new(&canonical))
112 .map_err(|_| AddressFailure::PipelineFailure)?;
113 AddressOutcome::<135, 64>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
114}