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