uor_addr/asn1/
pipeline.rs1pub use crate::outcome::{AddressOutcome, AddressWitness, VerifyError};
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq)]
19pub enum AddressFailure {
20 InvalidDer,
22 PipelineFailure,
25}
26
27use crate::asn1::model::{
28 AddressModel, AddressModelBlake3, AddressModelKeccak256, AddressModelSha3_256,
29 AddressModelSha512,
30};
31use crate::asn1::value::{validate_der, Asn1Carrier};
32use prism::pipeline::PrismModel;
33
34pub fn address(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
43 validate_der(input_bytes).map_err(|_| AddressFailure::InvalidDer)?;
44 let grounded = AddressModel::forward(Asn1Carrier::new(input_bytes))
45 .map_err(|_| AddressFailure::PipelineFailure)?;
46 AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
47}
48
49pub fn address_blake3(input_bytes: &[u8]) -> Result<AddressOutcome<71>, AddressFailure> {
56 validate_der(input_bytes).map_err(|_| AddressFailure::InvalidDer)?;
57 let grounded = AddressModelBlake3::forward(Asn1Carrier::new(input_bytes))
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 validate_der(input_bytes).map_err(|_| AddressFailure::InvalidDer)?;
70 let grounded = AddressModelSha3_256::forward(Asn1Carrier::new(input_bytes))
71 .map_err(|_| AddressFailure::PipelineFailure)?;
72 AddressOutcome::<73>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
73}
74
75pub fn address_keccak256(input_bytes: &[u8]) -> Result<AddressOutcome<74>, AddressFailure> {
82 validate_der(input_bytes).map_err(|_| AddressFailure::InvalidDer)?;
83 let grounded = AddressModelKeccak256::forward(Asn1Carrier::new(input_bytes))
84 .map_err(|_| AddressFailure::PipelineFailure)?;
85 AddressOutcome::<74>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
86}
87
88pub fn address_sha512(input_bytes: &[u8]) -> Result<AddressOutcome<135, 64>, AddressFailure> {
96 validate_der(input_bytes).map_err(|_| AddressFailure::InvalidDer)?;
97 let grounded = AddressModelSha512::forward(Asn1Carrier::new(input_bytes))
98 .map_err(|_| AddressFailure::PipelineFailure)?;
99 AddressOutcome::<135, 64>::from_grounded(&grounded).map_err(|_| AddressFailure::PipelineFailure)
100}