pub use crate::outcome::{AddressOutcome, AddressWitness, VerifyError};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AddressFailure {
InvalidCbor,
PipelineFailure,
}
#[cfg(feature = "alloc")]
use crate::cbor::model::{
AddressModel, AddressModelBlake3, AddressModelKeccak256, AddressModelSha3_256,
AddressModelSha512,
};
#[cfg(feature = "alloc")]
use crate::cbor::value::{canonicalize, CborCarrier};
#[cfg(feature = "alloc")]
use prism::pipeline::PrismModel;
#[cfg(feature = "alloc")]
pub fn address(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
let canonical = canonicalize(input_bytes).map_err(|_| AddressFailure::InvalidCbor)?;
let grounded = AddressModel::forward(CborCarrier::new(&canonical))
.map_err(|_| AddressFailure::PipelineFailure)?;
AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
}
#[cfg(feature = "alloc")]
pub fn address_blake3(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
let canonical = canonicalize(input_bytes).map_err(|_| AddressFailure::InvalidCbor)?;
let grounded = AddressModelBlake3::forward(CborCarrier::new(&canonical))
.map_err(|_| AddressFailure::PipelineFailure)?;
AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
}
#[cfg(feature = "alloc")]
pub fn address_sha3_256(input_bytes: &[u8]) -> Result<AddressOutcome<73>, AddressFailure> {
let canonical = canonicalize(input_bytes).map_err(|_| AddressFailure::InvalidCbor)?;
let grounded = AddressModelSha3_256::forward(CborCarrier::new(&canonical))
.map_err(|_| AddressFailure::PipelineFailure)?;
AddressOutcome::<73>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
}
#[cfg(feature = "alloc")]
pub fn address_keccak256(input_bytes: &[u8]) -> Result<AddressOutcome<74>, AddressFailure> {
let canonical = canonicalize(input_bytes).map_err(|_| AddressFailure::InvalidCbor)?;
let grounded = AddressModelKeccak256::forward(CborCarrier::new(&canonical))
.map_err(|_| AddressFailure::PipelineFailure)?;
AddressOutcome::<74>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
}
#[cfg(feature = "alloc")]
pub fn address_sha512(input_bytes: &[u8]) -> Result<AddressOutcome<135, 64>, AddressFailure> {
let canonical = canonicalize(input_bytes).map_err(|_| AddressFailure::InvalidCbor)?;
let grounded = AddressModelSha512::forward(CborCarrier::new(&canonical))
.map_err(|_| AddressFailure::PipelineFailure)?;
AddressOutcome::<135, 64>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
}