1#![cfg_attr(not(target_arch = "wasm32"), allow(dead_code))]
64
65#[cfg(target_arch = "wasm32")]
66mod component {
67 use std::string::ToString;
68 use std::vec::Vec;
69
70 wit_bindgen::generate!({
78 world: "uor-addr",
79 path: "wit/uor-addr.wit",
80 generate_all,
81 });
82
83 use exports::uor::addr::kappa::{
84 AddressError, Grounded, Guest, GuestGrounded, HashAlgorithm, KappaLabel, VerifyError,
85 };
86
87 pub struct UorAddrComponent;
89
90 enum AnyOutcome {
103 W71(uor_addr::AddressOutcome<71>),
104 W73(uor_addr::AddressOutcome<73>),
105 W74(uor_addr::AddressOutcome<74>),
106 W512(uor_addr::AddressOutcome<135, 64>),
107 }
108
109 impl From<uor_addr::AddressOutcome<71>> for AnyOutcome {
110 fn from(o: uor_addr::AddressOutcome<71>) -> Self {
111 Self::W71(o)
112 }
113 }
114 impl From<uor_addr::AddressOutcome<73>> for AnyOutcome {
115 fn from(o: uor_addr::AddressOutcome<73>) -> Self {
116 Self::W73(o)
117 }
118 }
119 impl From<uor_addr::AddressOutcome<74>> for AnyOutcome {
120 fn from(o: uor_addr::AddressOutcome<74>) -> Self {
121 Self::W74(o)
122 }
123 }
124 impl From<uor_addr::AddressOutcome<135, 64>> for AnyOutcome {
125 fn from(o: uor_addr::AddressOutcome<135, 64>) -> Self {
126 Self::W512(o)
127 }
128 }
129
130 impl AnyOutcome {
131 fn label(&self) -> String {
132 match self {
133 Self::W71(o) => o.address.as_str().to_string(),
134 Self::W73(o) => o.address.as_str().to_string(),
135 Self::W74(o) => o.address.as_str().to_string(),
136 Self::W512(o) => o.address.as_str().to_string(),
137 }
138 }
139 fn fingerprint(&self) -> Vec<u8> {
140 match self {
141 Self::W71(o) => o.witness.content_fingerprint().to_vec(),
142 Self::W73(o) => o.witness.content_fingerprint().to_vec(),
143 Self::W74(o) => o.witness.content_fingerprint().to_vec(),
144 Self::W512(o) => o.witness.content_fingerprint().to_vec(),
145 }
146 }
147 fn verify(&self) -> Result<String, uor_addr::VerifyError> {
148 match self {
149 Self::W71(o) => o.witness.verify().map(|l| l.as_str().to_string()),
150 Self::W73(o) => o.witness.verify().map(|l| l.as_str().to_string()),
151 Self::W74(o) => o.witness.verify().map(|l| l.as_str().to_string()),
152 Self::W512(o) => o.witness.verify().map(|l| l.as_str().to_string()),
153 }
154 }
155 }
156
157 pub struct GroundedImpl {
158 outcome: AnyOutcome,
159 }
160
161 impl GuestGrounded for GroundedImpl {
162 fn kappa_label(&self) -> KappaLabel {
163 self.outcome.label()
164 }
165
166 fn content_fingerprint(&self) -> Vec<u8> {
167 self.outcome.fingerprint()
169 }
170
171 fn verify(&self) -> Result<KappaLabel, VerifyError> {
172 self.outcome.verify().map_err(map_verify_error)
178 }
179 }
180
181 fn map_verify_error(e: uor_addr::VerifyError) -> VerifyError {
182 match e {
185 uor_addr::VerifyError::ReplayFailed => VerifyError::EmptyTrace,
186 uor_addr::VerifyError::FingerprintMismatch => VerifyError::OutOfOrderEvent,
187 }
188 }
189
190 macro_rules! map_addr {
197 ($result:expr, $err_ty:path, $invalid:path) => {
198 match $result {
199 Ok(outcome) => Ok(outcome.address.as_str().to_string()),
200 Err($invalid) => Err(AddressError::InvalidInput),
201 Err(<$err_ty>::PipelineFailure) => Err(AddressError::PipelineFailure),
202 }
203 };
204 }
205
206 macro_rules! map_witness {
207 ($result:expr, $err_ty:path, $invalid:path) => {
208 match $result {
209 Ok(outcome) => Ok(Grounded::new(GroundedImpl {
210 outcome: outcome.into(),
211 })),
212 Err($invalid) => Err(AddressError::InvalidInput),
213 Err(<$err_ty>::PipelineFailure) => Err(AddressError::PipelineFailure),
214 }
215 };
216 }
217
218 fn map_compose_failure(e: uor_addr::composition::CompositionFailure) -> AddressError {
226 match e {
227 uor_addr::composition::CompositionFailure::PipelineFailure => {
228 AddressError::PipelineFailure
229 }
230 _ => AddressError::InvalidInput,
231 }
232 }
233
234 fn compose1_label<const N: usize, const FP: usize>(
236 operand: &str,
237 f: impl Fn(
238 &uor_addr::KappaLabel<N>,
239 )
240 -> Result<uor_addr::AddressOutcome<N, FP>, uor_addr::composition::CompositionFailure>,
241 ) -> Result<KappaLabel, AddressError> {
242 let l = uor_addr::KappaLabel::<N>::from_bytes(operand.as_bytes())
243 .map_err(|_| AddressError::InvalidInput)?;
244 f(&l)
245 .map(|o| o.address.as_str().to_string())
246 .map_err(map_compose_failure)
247 }
248
249 fn compose1_witness<const N: usize, const FP: usize>(
251 operand: &str,
252 f: impl Fn(
253 &uor_addr::KappaLabel<N>,
254 )
255 -> Result<uor_addr::AddressOutcome<N, FP>, uor_addr::composition::CompositionFailure>,
256 ) -> Result<Grounded, AddressError>
257 where
258 AnyOutcome: From<uor_addr::AddressOutcome<N, FP>>,
259 {
260 let l = uor_addr::KappaLabel::<N>::from_bytes(operand.as_bytes())
261 .map_err(|_| AddressError::InvalidInput)?;
262 f(&l)
263 .map(|o| Grounded::new(GroundedImpl { outcome: o.into() }))
264 .map_err(map_compose_failure)
265 }
266
267 fn compose2_label<const N: usize, const FP: usize>(
269 left: &str,
270 right: &str,
271 f: impl Fn(
272 &uor_addr::KappaLabel<N>,
273 &uor_addr::KappaLabel<N>,
274 )
275 -> Result<uor_addr::AddressOutcome<N, FP>, uor_addr::composition::CompositionFailure>,
276 ) -> Result<KappaLabel, AddressError> {
277 let la = uor_addr::KappaLabel::<N>::from_bytes(left.as_bytes())
278 .map_err(|_| AddressError::InvalidInput)?;
279 let ra = uor_addr::KappaLabel::<N>::from_bytes(right.as_bytes())
280 .map_err(|_| AddressError::InvalidInput)?;
281 f(&la, &ra)
282 .map(|o| o.address.as_str().to_string())
283 .map_err(map_compose_failure)
284 }
285
286 fn compose2_witness<const N: usize, const FP: usize>(
288 left: &str,
289 right: &str,
290 f: impl Fn(
291 &uor_addr::KappaLabel<N>,
292 &uor_addr::KappaLabel<N>,
293 )
294 -> Result<uor_addr::AddressOutcome<N, FP>, uor_addr::composition::CompositionFailure>,
295 ) -> Result<Grounded, AddressError>
296 where
297 AnyOutcome: From<uor_addr::AddressOutcome<N, FP>>,
298 {
299 let la = uor_addr::KappaLabel::<N>::from_bytes(left.as_bytes())
300 .map_err(|_| AddressError::InvalidInput)?;
301 let ra = uor_addr::KappaLabel::<N>::from_bytes(right.as_bytes())
302 .map_err(|_| AddressError::InvalidInput)?;
303 f(&la, &ra)
304 .map(|o| Grounded::new(GroundedImpl { outcome: o.into() }))
305 .map_err(map_compose_failure)
306 }
307
308 impl Guest for UorAddrComponent {
309 type Grounded = GroundedImpl;
310
311 fn json_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
314 map_addr!(
315 uor_addr::json::address(&input),
316 uor_addr::json::AddressFailure,
317 uor_addr::json::AddressFailure::InvalidJson
318 )
319 }
320
321 fn sexp_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
322 map_addr!(
323 uor_addr::sexp::address(&input),
324 uor_addr::sexp::AddressFailure,
325 uor_addr::sexp::AddressFailure::InvalidSExpr
326 )
327 }
328
329 fn xml_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
330 map_addr!(
331 uor_addr::xml::address(&input),
332 uor_addr::xml::AddressFailure,
333 uor_addr::xml::AddressFailure::InvalidXml
334 )
335 }
336
337 fn asn1_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
338 map_addr!(
339 uor_addr::asn1::address(&input),
340 uor_addr::asn1::AddressFailure,
341 uor_addr::asn1::AddressFailure::InvalidDer
342 )
343 }
344
345 fn ring_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
346 map_addr!(
347 uor_addr::ring::address(&input),
348 uor_addr::ring::AddressFailure,
349 uor_addr::ring::AddressFailure::InvalidRingElement
350 )
351 }
352
353 fn codemodule_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
354 map_addr!(
355 uor_addr::codemodule::address(&input),
356 uor_addr::codemodule::AddressFailure,
357 uor_addr::codemodule::AddressFailure::InvalidAst
358 )
359 }
360
361 fn cbor_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
362 map_addr!(
363 uor_addr::cbor::address(&input),
364 uor_addr::cbor::AddressFailure,
365 uor_addr::cbor::AddressFailure::InvalidCbor
366 )
367 }
368
369 fn schema_photo_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
370 map_addr!(
371 uor_addr::schema::photo::address(&input),
372 uor_addr::schema::photo::AddressFailure,
373 uor_addr::schema::photo::AddressFailure::SchemaViolation
374 )
375 }
376
377 fn schema_document_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
378 map_addr!(
379 uor_addr::schema::document::address(&input),
380 uor_addr::schema::document::AddressFailure,
381 uor_addr::schema::document::AddressFailure::SchemaViolation
382 )
383 }
384
385 fn schema_codemodule_signed_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
386 map_addr!(
387 uor_addr::schema::codemodule_signed::address(&input),
388 uor_addr::schema::codemodule_signed::AddressFailure,
389 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
390 )
391 }
392
393 fn json_address_with_witness(input: Vec<u8>) -> Result<Grounded, AddressError> {
396 map_witness!(
397 uor_addr::json::address(&input),
398 uor_addr::json::AddressFailure,
399 uor_addr::json::AddressFailure::InvalidJson
400 )
401 }
402
403 fn sexp_address_with_witness(input: Vec<u8>) -> Result<Grounded, AddressError> {
404 map_witness!(
405 uor_addr::sexp::address(&input),
406 uor_addr::sexp::AddressFailure,
407 uor_addr::sexp::AddressFailure::InvalidSExpr
408 )
409 }
410
411 fn xml_address_with_witness(input: Vec<u8>) -> Result<Grounded, AddressError> {
412 map_witness!(
413 uor_addr::xml::address(&input),
414 uor_addr::xml::AddressFailure,
415 uor_addr::xml::AddressFailure::InvalidXml
416 )
417 }
418
419 fn asn1_address_with_witness(input: Vec<u8>) -> Result<Grounded, AddressError> {
420 map_witness!(
421 uor_addr::asn1::address(&input),
422 uor_addr::asn1::AddressFailure,
423 uor_addr::asn1::AddressFailure::InvalidDer
424 )
425 }
426
427 fn ring_address_with_witness(input: Vec<u8>) -> Result<Grounded, AddressError> {
428 map_witness!(
429 uor_addr::ring::address(&input),
430 uor_addr::ring::AddressFailure,
431 uor_addr::ring::AddressFailure::InvalidRingElement
432 )
433 }
434
435 fn codemodule_address_with_witness(input: Vec<u8>) -> Result<Grounded, AddressError> {
436 map_witness!(
437 uor_addr::codemodule::address(&input),
438 uor_addr::codemodule::AddressFailure,
439 uor_addr::codemodule::AddressFailure::InvalidAst
440 )
441 }
442
443 fn cbor_address_with_witness(input: Vec<u8>) -> Result<Grounded, AddressError> {
444 map_witness!(
445 uor_addr::cbor::address(&input),
446 uor_addr::cbor::AddressFailure,
447 uor_addr::cbor::AddressFailure::InvalidCbor
448 )
449 }
450
451 fn schema_photo_address_with_witness(input: Vec<u8>) -> Result<Grounded, AddressError> {
452 map_witness!(
453 uor_addr::schema::photo::address(&input),
454 uor_addr::schema::photo::AddressFailure,
455 uor_addr::schema::photo::AddressFailure::SchemaViolation
456 )
457 }
458
459 fn schema_document_address_with_witness(input: Vec<u8>) -> Result<Grounded, AddressError> {
460 map_witness!(
461 uor_addr::schema::document::address(&input),
462 uor_addr::schema::document::AddressFailure,
463 uor_addr::schema::document::AddressFailure::SchemaViolation
464 )
465 }
466
467 fn schema_codemodule_signed_address_with_witness(
468 input: Vec<u8>,
469 ) -> Result<Grounded, AddressError> {
470 map_witness!(
471 uor_addr::schema::codemodule_signed::address(&input),
472 uor_addr::schema::codemodule_signed::AddressFailure,
473 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
474 )
475 }
476
477 fn gguf_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
480 map_addr!(
481 uor_addr::gguf::address(&input),
482 uor_addr::gguf::AddressFailure,
483 uor_addr::gguf::AddressFailure::InvalidGguf
484 )
485 }
486
487 fn gguf_address_with_witness(input: Vec<u8>) -> Result<Grounded, AddressError> {
488 map_witness!(
489 uor_addr::gguf::address(&input),
490 uor_addr::gguf::AddressFailure,
491 uor_addr::gguf::AddressFailure::InvalidGguf
492 )
493 }
494
495 fn onnx_address(input: Vec<u8>) -> Result<KappaLabel, AddressError> {
498 map_addr!(
499 uor_addr::onnx::address(&input),
500 uor_addr::onnx::AddressFailure,
501 uor_addr::onnx::AddressFailure::InvalidOnnx
502 )
503 }
504
505 fn onnx_address_with_witness(input: Vec<u8>) -> Result<Grounded, AddressError> {
506 map_witness!(
507 uor_addr::onnx::address(&input),
508 uor_addr::onnx::AddressFailure,
509 uor_addr::onnx::AddressFailure::InvalidOnnx
510 )
511 }
512
513 fn json_address_with_hash(
516 input: Vec<u8>,
517 algo: HashAlgorithm,
518 ) -> Result<KappaLabel, AddressError> {
519 match algo {
520 HashAlgorithm::Sha256 => map_addr!(
521 uor_addr::json::address(&input),
522 uor_addr::json::AddressFailure,
523 uor_addr::json::AddressFailure::InvalidJson
524 ),
525 HashAlgorithm::Blake3 => map_addr!(
526 uor_addr::json::address_blake3(&input),
527 uor_addr::json::AddressFailure,
528 uor_addr::json::AddressFailure::InvalidJson
529 ),
530 HashAlgorithm::Sha3256 => map_addr!(
531 uor_addr::json::address_sha3_256(&input),
532 uor_addr::json::AddressFailure,
533 uor_addr::json::AddressFailure::InvalidJson
534 ),
535 HashAlgorithm::Keccak256 => map_addr!(
536 uor_addr::json::address_keccak256(&input),
537 uor_addr::json::AddressFailure,
538 uor_addr::json::AddressFailure::InvalidJson
539 ),
540 HashAlgorithm::Sha512 => map_addr!(
541 uor_addr::json::address_sha512(&input),
542 uor_addr::json::AddressFailure,
543 uor_addr::json::AddressFailure::InvalidJson
544 ),
545 }
546 }
547
548 fn json_address_with_witness_hash(
549 input: Vec<u8>,
550 algo: HashAlgorithm,
551 ) -> Result<Grounded, AddressError> {
552 match algo {
553 HashAlgorithm::Sha256 => map_witness!(
554 uor_addr::json::address(&input),
555 uor_addr::json::AddressFailure,
556 uor_addr::json::AddressFailure::InvalidJson
557 ),
558 HashAlgorithm::Blake3 => map_witness!(
559 uor_addr::json::address_blake3(&input),
560 uor_addr::json::AddressFailure,
561 uor_addr::json::AddressFailure::InvalidJson
562 ),
563 HashAlgorithm::Sha3256 => map_witness!(
564 uor_addr::json::address_sha3_256(&input),
565 uor_addr::json::AddressFailure,
566 uor_addr::json::AddressFailure::InvalidJson
567 ),
568 HashAlgorithm::Keccak256 => map_witness!(
569 uor_addr::json::address_keccak256(&input),
570 uor_addr::json::AddressFailure,
571 uor_addr::json::AddressFailure::InvalidJson
572 ),
573 HashAlgorithm::Sha512 => map_witness!(
574 uor_addr::json::address_sha512(&input),
575 uor_addr::json::AddressFailure,
576 uor_addr::json::AddressFailure::InvalidJson
577 ),
578 }
579 }
580
581 fn sexp_address_with_hash(
582 input: Vec<u8>,
583 algo: HashAlgorithm,
584 ) -> Result<KappaLabel, AddressError> {
585 match algo {
586 HashAlgorithm::Sha256 => map_addr!(
587 uor_addr::sexp::address(&input),
588 uor_addr::sexp::AddressFailure,
589 uor_addr::sexp::AddressFailure::InvalidSExpr
590 ),
591 HashAlgorithm::Blake3 => map_addr!(
592 uor_addr::sexp::address_blake3(&input),
593 uor_addr::sexp::AddressFailure,
594 uor_addr::sexp::AddressFailure::InvalidSExpr
595 ),
596 HashAlgorithm::Sha3256 => map_addr!(
597 uor_addr::sexp::address_sha3_256(&input),
598 uor_addr::sexp::AddressFailure,
599 uor_addr::sexp::AddressFailure::InvalidSExpr
600 ),
601 HashAlgorithm::Keccak256 => map_addr!(
602 uor_addr::sexp::address_keccak256(&input),
603 uor_addr::sexp::AddressFailure,
604 uor_addr::sexp::AddressFailure::InvalidSExpr
605 ),
606 HashAlgorithm::Sha512 => map_addr!(
607 uor_addr::sexp::address_sha512(&input),
608 uor_addr::sexp::AddressFailure,
609 uor_addr::sexp::AddressFailure::InvalidSExpr
610 ),
611 }
612 }
613
614 fn sexp_address_with_witness_hash(
615 input: Vec<u8>,
616 algo: HashAlgorithm,
617 ) -> Result<Grounded, AddressError> {
618 match algo {
619 HashAlgorithm::Sha256 => map_witness!(
620 uor_addr::sexp::address(&input),
621 uor_addr::sexp::AddressFailure,
622 uor_addr::sexp::AddressFailure::InvalidSExpr
623 ),
624 HashAlgorithm::Blake3 => map_witness!(
625 uor_addr::sexp::address_blake3(&input),
626 uor_addr::sexp::AddressFailure,
627 uor_addr::sexp::AddressFailure::InvalidSExpr
628 ),
629 HashAlgorithm::Sha3256 => map_witness!(
630 uor_addr::sexp::address_sha3_256(&input),
631 uor_addr::sexp::AddressFailure,
632 uor_addr::sexp::AddressFailure::InvalidSExpr
633 ),
634 HashAlgorithm::Keccak256 => map_witness!(
635 uor_addr::sexp::address_keccak256(&input),
636 uor_addr::sexp::AddressFailure,
637 uor_addr::sexp::AddressFailure::InvalidSExpr
638 ),
639 HashAlgorithm::Sha512 => map_witness!(
640 uor_addr::sexp::address_sha512(&input),
641 uor_addr::sexp::AddressFailure,
642 uor_addr::sexp::AddressFailure::InvalidSExpr
643 ),
644 }
645 }
646
647 fn xml_address_with_hash(
648 input: Vec<u8>,
649 algo: HashAlgorithm,
650 ) -> Result<KappaLabel, AddressError> {
651 match algo {
652 HashAlgorithm::Sha256 => map_addr!(
653 uor_addr::xml::address(&input),
654 uor_addr::xml::AddressFailure,
655 uor_addr::xml::AddressFailure::InvalidXml
656 ),
657 HashAlgorithm::Blake3 => map_addr!(
658 uor_addr::xml::address_blake3(&input),
659 uor_addr::xml::AddressFailure,
660 uor_addr::xml::AddressFailure::InvalidXml
661 ),
662 HashAlgorithm::Sha3256 => map_addr!(
663 uor_addr::xml::address_sha3_256(&input),
664 uor_addr::xml::AddressFailure,
665 uor_addr::xml::AddressFailure::InvalidXml
666 ),
667 HashAlgorithm::Keccak256 => map_addr!(
668 uor_addr::xml::address_keccak256(&input),
669 uor_addr::xml::AddressFailure,
670 uor_addr::xml::AddressFailure::InvalidXml
671 ),
672 HashAlgorithm::Sha512 => map_addr!(
673 uor_addr::xml::address_sha512(&input),
674 uor_addr::xml::AddressFailure,
675 uor_addr::xml::AddressFailure::InvalidXml
676 ),
677 }
678 }
679
680 fn xml_address_with_witness_hash(
681 input: Vec<u8>,
682 algo: HashAlgorithm,
683 ) -> Result<Grounded, AddressError> {
684 match algo {
685 HashAlgorithm::Sha256 => map_witness!(
686 uor_addr::xml::address(&input),
687 uor_addr::xml::AddressFailure,
688 uor_addr::xml::AddressFailure::InvalidXml
689 ),
690 HashAlgorithm::Blake3 => map_witness!(
691 uor_addr::xml::address_blake3(&input),
692 uor_addr::xml::AddressFailure,
693 uor_addr::xml::AddressFailure::InvalidXml
694 ),
695 HashAlgorithm::Sha3256 => map_witness!(
696 uor_addr::xml::address_sha3_256(&input),
697 uor_addr::xml::AddressFailure,
698 uor_addr::xml::AddressFailure::InvalidXml
699 ),
700 HashAlgorithm::Keccak256 => map_witness!(
701 uor_addr::xml::address_keccak256(&input),
702 uor_addr::xml::AddressFailure,
703 uor_addr::xml::AddressFailure::InvalidXml
704 ),
705 HashAlgorithm::Sha512 => map_witness!(
706 uor_addr::xml::address_sha512(&input),
707 uor_addr::xml::AddressFailure,
708 uor_addr::xml::AddressFailure::InvalidXml
709 ),
710 }
711 }
712
713 fn asn1_address_with_hash(
714 input: Vec<u8>,
715 algo: HashAlgorithm,
716 ) -> Result<KappaLabel, AddressError> {
717 match algo {
718 HashAlgorithm::Sha256 => map_addr!(
719 uor_addr::asn1::address(&input),
720 uor_addr::asn1::AddressFailure,
721 uor_addr::asn1::AddressFailure::InvalidDer
722 ),
723 HashAlgorithm::Blake3 => map_addr!(
724 uor_addr::asn1::address_blake3(&input),
725 uor_addr::asn1::AddressFailure,
726 uor_addr::asn1::AddressFailure::InvalidDer
727 ),
728 HashAlgorithm::Sha3256 => map_addr!(
729 uor_addr::asn1::address_sha3_256(&input),
730 uor_addr::asn1::AddressFailure,
731 uor_addr::asn1::AddressFailure::InvalidDer
732 ),
733 HashAlgorithm::Keccak256 => map_addr!(
734 uor_addr::asn1::address_keccak256(&input),
735 uor_addr::asn1::AddressFailure,
736 uor_addr::asn1::AddressFailure::InvalidDer
737 ),
738 HashAlgorithm::Sha512 => map_addr!(
739 uor_addr::asn1::address_sha512(&input),
740 uor_addr::asn1::AddressFailure,
741 uor_addr::asn1::AddressFailure::InvalidDer
742 ),
743 }
744 }
745
746 fn asn1_address_with_witness_hash(
747 input: Vec<u8>,
748 algo: HashAlgorithm,
749 ) -> Result<Grounded, AddressError> {
750 match algo {
751 HashAlgorithm::Sha256 => map_witness!(
752 uor_addr::asn1::address(&input),
753 uor_addr::asn1::AddressFailure,
754 uor_addr::asn1::AddressFailure::InvalidDer
755 ),
756 HashAlgorithm::Blake3 => map_witness!(
757 uor_addr::asn1::address_blake3(&input),
758 uor_addr::asn1::AddressFailure,
759 uor_addr::asn1::AddressFailure::InvalidDer
760 ),
761 HashAlgorithm::Sha3256 => map_witness!(
762 uor_addr::asn1::address_sha3_256(&input),
763 uor_addr::asn1::AddressFailure,
764 uor_addr::asn1::AddressFailure::InvalidDer
765 ),
766 HashAlgorithm::Keccak256 => map_witness!(
767 uor_addr::asn1::address_keccak256(&input),
768 uor_addr::asn1::AddressFailure,
769 uor_addr::asn1::AddressFailure::InvalidDer
770 ),
771 HashAlgorithm::Sha512 => map_witness!(
772 uor_addr::asn1::address_sha512(&input),
773 uor_addr::asn1::AddressFailure,
774 uor_addr::asn1::AddressFailure::InvalidDer
775 ),
776 }
777 }
778
779 fn ring_address_with_hash(
780 input: Vec<u8>,
781 algo: HashAlgorithm,
782 ) -> Result<KappaLabel, AddressError> {
783 match algo {
784 HashAlgorithm::Sha256 => map_addr!(
785 uor_addr::ring::address(&input),
786 uor_addr::ring::AddressFailure,
787 uor_addr::ring::AddressFailure::InvalidRingElement
788 ),
789 HashAlgorithm::Blake3 => map_addr!(
790 uor_addr::ring::address_blake3(&input),
791 uor_addr::ring::AddressFailure,
792 uor_addr::ring::AddressFailure::InvalidRingElement
793 ),
794 HashAlgorithm::Sha3256 => map_addr!(
795 uor_addr::ring::address_sha3_256(&input),
796 uor_addr::ring::AddressFailure,
797 uor_addr::ring::AddressFailure::InvalidRingElement
798 ),
799 HashAlgorithm::Keccak256 => map_addr!(
800 uor_addr::ring::address_keccak256(&input),
801 uor_addr::ring::AddressFailure,
802 uor_addr::ring::AddressFailure::InvalidRingElement
803 ),
804 HashAlgorithm::Sha512 => map_addr!(
805 uor_addr::ring::address_sha512(&input),
806 uor_addr::ring::AddressFailure,
807 uor_addr::ring::AddressFailure::InvalidRingElement
808 ),
809 }
810 }
811
812 fn ring_address_with_witness_hash(
813 input: Vec<u8>,
814 algo: HashAlgorithm,
815 ) -> Result<Grounded, AddressError> {
816 match algo {
817 HashAlgorithm::Sha256 => map_witness!(
818 uor_addr::ring::address(&input),
819 uor_addr::ring::AddressFailure,
820 uor_addr::ring::AddressFailure::InvalidRingElement
821 ),
822 HashAlgorithm::Blake3 => map_witness!(
823 uor_addr::ring::address_blake3(&input),
824 uor_addr::ring::AddressFailure,
825 uor_addr::ring::AddressFailure::InvalidRingElement
826 ),
827 HashAlgorithm::Sha3256 => map_witness!(
828 uor_addr::ring::address_sha3_256(&input),
829 uor_addr::ring::AddressFailure,
830 uor_addr::ring::AddressFailure::InvalidRingElement
831 ),
832 HashAlgorithm::Keccak256 => map_witness!(
833 uor_addr::ring::address_keccak256(&input),
834 uor_addr::ring::AddressFailure,
835 uor_addr::ring::AddressFailure::InvalidRingElement
836 ),
837 HashAlgorithm::Sha512 => map_witness!(
838 uor_addr::ring::address_sha512(&input),
839 uor_addr::ring::AddressFailure,
840 uor_addr::ring::AddressFailure::InvalidRingElement
841 ),
842 }
843 }
844
845 fn codemodule_address_with_hash(
846 input: Vec<u8>,
847 algo: HashAlgorithm,
848 ) -> Result<KappaLabel, AddressError> {
849 match algo {
850 HashAlgorithm::Sha256 => map_addr!(
851 uor_addr::codemodule::address(&input),
852 uor_addr::codemodule::AddressFailure,
853 uor_addr::codemodule::AddressFailure::InvalidAst
854 ),
855 HashAlgorithm::Blake3 => map_addr!(
856 uor_addr::codemodule::address_blake3(&input),
857 uor_addr::codemodule::AddressFailure,
858 uor_addr::codemodule::AddressFailure::InvalidAst
859 ),
860 HashAlgorithm::Sha3256 => map_addr!(
861 uor_addr::codemodule::address_sha3_256(&input),
862 uor_addr::codemodule::AddressFailure,
863 uor_addr::codemodule::AddressFailure::InvalidAst
864 ),
865 HashAlgorithm::Keccak256 => map_addr!(
866 uor_addr::codemodule::address_keccak256(&input),
867 uor_addr::codemodule::AddressFailure,
868 uor_addr::codemodule::AddressFailure::InvalidAst
869 ),
870 HashAlgorithm::Sha512 => map_addr!(
871 uor_addr::codemodule::address_sha512(&input),
872 uor_addr::codemodule::AddressFailure,
873 uor_addr::codemodule::AddressFailure::InvalidAst
874 ),
875 }
876 }
877
878 fn codemodule_address_with_witness_hash(
879 input: Vec<u8>,
880 algo: HashAlgorithm,
881 ) -> Result<Grounded, AddressError> {
882 match algo {
883 HashAlgorithm::Sha256 => map_witness!(
884 uor_addr::codemodule::address(&input),
885 uor_addr::codemodule::AddressFailure,
886 uor_addr::codemodule::AddressFailure::InvalidAst
887 ),
888 HashAlgorithm::Blake3 => map_witness!(
889 uor_addr::codemodule::address_blake3(&input),
890 uor_addr::codemodule::AddressFailure,
891 uor_addr::codemodule::AddressFailure::InvalidAst
892 ),
893 HashAlgorithm::Sha3256 => map_witness!(
894 uor_addr::codemodule::address_sha3_256(&input),
895 uor_addr::codemodule::AddressFailure,
896 uor_addr::codemodule::AddressFailure::InvalidAst
897 ),
898 HashAlgorithm::Keccak256 => map_witness!(
899 uor_addr::codemodule::address_keccak256(&input),
900 uor_addr::codemodule::AddressFailure,
901 uor_addr::codemodule::AddressFailure::InvalidAst
902 ),
903 HashAlgorithm::Sha512 => map_witness!(
904 uor_addr::codemodule::address_sha512(&input),
905 uor_addr::codemodule::AddressFailure,
906 uor_addr::codemodule::AddressFailure::InvalidAst
907 ),
908 }
909 }
910
911 fn cbor_address_with_hash(
912 input: Vec<u8>,
913 algo: HashAlgorithm,
914 ) -> Result<KappaLabel, AddressError> {
915 match algo {
916 HashAlgorithm::Sha256 => map_addr!(
917 uor_addr::cbor::address(&input),
918 uor_addr::cbor::AddressFailure,
919 uor_addr::cbor::AddressFailure::InvalidCbor
920 ),
921 HashAlgorithm::Blake3 => map_addr!(
922 uor_addr::cbor::address_blake3(&input),
923 uor_addr::cbor::AddressFailure,
924 uor_addr::cbor::AddressFailure::InvalidCbor
925 ),
926 HashAlgorithm::Sha3256 => map_addr!(
927 uor_addr::cbor::address_sha3_256(&input),
928 uor_addr::cbor::AddressFailure,
929 uor_addr::cbor::AddressFailure::InvalidCbor
930 ),
931 HashAlgorithm::Keccak256 => map_addr!(
932 uor_addr::cbor::address_keccak256(&input),
933 uor_addr::cbor::AddressFailure,
934 uor_addr::cbor::AddressFailure::InvalidCbor
935 ),
936 HashAlgorithm::Sha512 => map_addr!(
937 uor_addr::cbor::address_sha512(&input),
938 uor_addr::cbor::AddressFailure,
939 uor_addr::cbor::AddressFailure::InvalidCbor
940 ),
941 }
942 }
943
944 fn cbor_address_with_witness_hash(
945 input: Vec<u8>,
946 algo: HashAlgorithm,
947 ) -> Result<Grounded, AddressError> {
948 match algo {
949 HashAlgorithm::Sha256 => map_witness!(
950 uor_addr::cbor::address(&input),
951 uor_addr::cbor::AddressFailure,
952 uor_addr::cbor::AddressFailure::InvalidCbor
953 ),
954 HashAlgorithm::Blake3 => map_witness!(
955 uor_addr::cbor::address_blake3(&input),
956 uor_addr::cbor::AddressFailure,
957 uor_addr::cbor::AddressFailure::InvalidCbor
958 ),
959 HashAlgorithm::Sha3256 => map_witness!(
960 uor_addr::cbor::address_sha3_256(&input),
961 uor_addr::cbor::AddressFailure,
962 uor_addr::cbor::AddressFailure::InvalidCbor
963 ),
964 HashAlgorithm::Keccak256 => map_witness!(
965 uor_addr::cbor::address_keccak256(&input),
966 uor_addr::cbor::AddressFailure,
967 uor_addr::cbor::AddressFailure::InvalidCbor
968 ),
969 HashAlgorithm::Sha512 => map_witness!(
970 uor_addr::cbor::address_sha512(&input),
971 uor_addr::cbor::AddressFailure,
972 uor_addr::cbor::AddressFailure::InvalidCbor
973 ),
974 }
975 }
976
977 fn schema_photo_address_with_hash(
978 input: Vec<u8>,
979 algo: HashAlgorithm,
980 ) -> Result<KappaLabel, AddressError> {
981 match algo {
982 HashAlgorithm::Sha256 => map_addr!(
983 uor_addr::schema::photo::address(&input),
984 uor_addr::schema::photo::AddressFailure,
985 uor_addr::schema::photo::AddressFailure::SchemaViolation
986 ),
987 HashAlgorithm::Blake3 => map_addr!(
988 uor_addr::schema::photo::address_blake3(&input),
989 uor_addr::schema::photo::AddressFailure,
990 uor_addr::schema::photo::AddressFailure::SchemaViolation
991 ),
992 HashAlgorithm::Sha3256 => map_addr!(
993 uor_addr::schema::photo::address_sha3_256(&input),
994 uor_addr::schema::photo::AddressFailure,
995 uor_addr::schema::photo::AddressFailure::SchemaViolation
996 ),
997 HashAlgorithm::Keccak256 => map_addr!(
998 uor_addr::schema::photo::address_keccak256(&input),
999 uor_addr::schema::photo::AddressFailure,
1000 uor_addr::schema::photo::AddressFailure::SchemaViolation
1001 ),
1002 HashAlgorithm::Sha512 => map_addr!(
1003 uor_addr::schema::photo::address_sha512(&input),
1004 uor_addr::schema::photo::AddressFailure,
1005 uor_addr::schema::photo::AddressFailure::SchemaViolation
1006 ),
1007 }
1008 }
1009
1010 fn schema_photo_address_with_witness_hash(
1011 input: Vec<u8>,
1012 algo: HashAlgorithm,
1013 ) -> Result<Grounded, AddressError> {
1014 match algo {
1015 HashAlgorithm::Sha256 => map_witness!(
1016 uor_addr::schema::photo::address(&input),
1017 uor_addr::schema::photo::AddressFailure,
1018 uor_addr::schema::photo::AddressFailure::SchemaViolation
1019 ),
1020 HashAlgorithm::Blake3 => map_witness!(
1021 uor_addr::schema::photo::address_blake3(&input),
1022 uor_addr::schema::photo::AddressFailure,
1023 uor_addr::schema::photo::AddressFailure::SchemaViolation
1024 ),
1025 HashAlgorithm::Sha3256 => map_witness!(
1026 uor_addr::schema::photo::address_sha3_256(&input),
1027 uor_addr::schema::photo::AddressFailure,
1028 uor_addr::schema::photo::AddressFailure::SchemaViolation
1029 ),
1030 HashAlgorithm::Keccak256 => map_witness!(
1031 uor_addr::schema::photo::address_keccak256(&input),
1032 uor_addr::schema::photo::AddressFailure,
1033 uor_addr::schema::photo::AddressFailure::SchemaViolation
1034 ),
1035 HashAlgorithm::Sha512 => map_witness!(
1036 uor_addr::schema::photo::address_sha512(&input),
1037 uor_addr::schema::photo::AddressFailure,
1038 uor_addr::schema::photo::AddressFailure::SchemaViolation
1039 ),
1040 }
1041 }
1042
1043 fn schema_document_address_with_hash(
1044 input: Vec<u8>,
1045 algo: HashAlgorithm,
1046 ) -> Result<KappaLabel, AddressError> {
1047 match algo {
1048 HashAlgorithm::Sha256 => map_addr!(
1049 uor_addr::schema::document::address(&input),
1050 uor_addr::schema::document::AddressFailure,
1051 uor_addr::schema::document::AddressFailure::SchemaViolation
1052 ),
1053 HashAlgorithm::Blake3 => map_addr!(
1054 uor_addr::schema::document::address_blake3(&input),
1055 uor_addr::schema::document::AddressFailure,
1056 uor_addr::schema::document::AddressFailure::SchemaViolation
1057 ),
1058 HashAlgorithm::Sha3256 => map_addr!(
1059 uor_addr::schema::document::address_sha3_256(&input),
1060 uor_addr::schema::document::AddressFailure,
1061 uor_addr::schema::document::AddressFailure::SchemaViolation
1062 ),
1063 HashAlgorithm::Keccak256 => map_addr!(
1064 uor_addr::schema::document::address_keccak256(&input),
1065 uor_addr::schema::document::AddressFailure,
1066 uor_addr::schema::document::AddressFailure::SchemaViolation
1067 ),
1068 HashAlgorithm::Sha512 => map_addr!(
1069 uor_addr::schema::document::address_sha512(&input),
1070 uor_addr::schema::document::AddressFailure,
1071 uor_addr::schema::document::AddressFailure::SchemaViolation
1072 ),
1073 }
1074 }
1075
1076 fn schema_document_address_with_witness_hash(
1077 input: Vec<u8>,
1078 algo: HashAlgorithm,
1079 ) -> Result<Grounded, AddressError> {
1080 match algo {
1081 HashAlgorithm::Sha256 => map_witness!(
1082 uor_addr::schema::document::address(&input),
1083 uor_addr::schema::document::AddressFailure,
1084 uor_addr::schema::document::AddressFailure::SchemaViolation
1085 ),
1086 HashAlgorithm::Blake3 => map_witness!(
1087 uor_addr::schema::document::address_blake3(&input),
1088 uor_addr::schema::document::AddressFailure,
1089 uor_addr::schema::document::AddressFailure::SchemaViolation
1090 ),
1091 HashAlgorithm::Sha3256 => map_witness!(
1092 uor_addr::schema::document::address_sha3_256(&input),
1093 uor_addr::schema::document::AddressFailure,
1094 uor_addr::schema::document::AddressFailure::SchemaViolation
1095 ),
1096 HashAlgorithm::Keccak256 => map_witness!(
1097 uor_addr::schema::document::address_keccak256(&input),
1098 uor_addr::schema::document::AddressFailure,
1099 uor_addr::schema::document::AddressFailure::SchemaViolation
1100 ),
1101 HashAlgorithm::Sha512 => map_witness!(
1102 uor_addr::schema::document::address_sha512(&input),
1103 uor_addr::schema::document::AddressFailure,
1104 uor_addr::schema::document::AddressFailure::SchemaViolation
1105 ),
1106 }
1107 }
1108
1109 fn schema_codemodule_signed_address_with_hash(
1110 input: Vec<u8>,
1111 algo: HashAlgorithm,
1112 ) -> Result<KappaLabel, AddressError> {
1113 match algo {
1114 HashAlgorithm::Sha256 => map_addr!(
1115 uor_addr::schema::codemodule_signed::address(&input),
1116 uor_addr::schema::codemodule_signed::AddressFailure,
1117 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
1118 ),
1119 HashAlgorithm::Blake3 => map_addr!(
1120 uor_addr::schema::codemodule_signed::address_blake3(&input),
1121 uor_addr::schema::codemodule_signed::AddressFailure,
1122 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
1123 ),
1124 HashAlgorithm::Sha3256 => map_addr!(
1125 uor_addr::schema::codemodule_signed::address_sha3_256(&input),
1126 uor_addr::schema::codemodule_signed::AddressFailure,
1127 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
1128 ),
1129 HashAlgorithm::Keccak256 => map_addr!(
1130 uor_addr::schema::codemodule_signed::address_keccak256(&input),
1131 uor_addr::schema::codemodule_signed::AddressFailure,
1132 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
1133 ),
1134 HashAlgorithm::Sha512 => map_addr!(
1135 uor_addr::schema::codemodule_signed::address_sha512(&input),
1136 uor_addr::schema::codemodule_signed::AddressFailure,
1137 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
1138 ),
1139 }
1140 }
1141
1142 fn schema_codemodule_signed_address_with_witness_hash(
1143 input: Vec<u8>,
1144 algo: HashAlgorithm,
1145 ) -> Result<Grounded, AddressError> {
1146 match algo {
1147 HashAlgorithm::Sha256 => map_witness!(
1148 uor_addr::schema::codemodule_signed::address(&input),
1149 uor_addr::schema::codemodule_signed::AddressFailure,
1150 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
1151 ),
1152 HashAlgorithm::Blake3 => map_witness!(
1153 uor_addr::schema::codemodule_signed::address_blake3(&input),
1154 uor_addr::schema::codemodule_signed::AddressFailure,
1155 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
1156 ),
1157 HashAlgorithm::Sha3256 => map_witness!(
1158 uor_addr::schema::codemodule_signed::address_sha3_256(&input),
1159 uor_addr::schema::codemodule_signed::AddressFailure,
1160 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
1161 ),
1162 HashAlgorithm::Keccak256 => map_witness!(
1163 uor_addr::schema::codemodule_signed::address_keccak256(&input),
1164 uor_addr::schema::codemodule_signed::AddressFailure,
1165 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
1166 ),
1167 HashAlgorithm::Sha512 => map_witness!(
1168 uor_addr::schema::codemodule_signed::address_sha512(&input),
1169 uor_addr::schema::codemodule_signed::AddressFailure,
1170 uor_addr::schema::codemodule_signed::AddressFailure::SchemaViolation
1171 ),
1172 }
1173 }
1174
1175 fn gguf_address_with_hash(
1176 input: Vec<u8>,
1177 algo: HashAlgorithm,
1178 ) -> Result<KappaLabel, AddressError> {
1179 match algo {
1180 HashAlgorithm::Sha256 => map_addr!(
1181 uor_addr::gguf::address(&input),
1182 uor_addr::gguf::AddressFailure,
1183 uor_addr::gguf::AddressFailure::InvalidGguf
1184 ),
1185 HashAlgorithm::Blake3 => map_addr!(
1186 uor_addr::gguf::address_blake3(&input),
1187 uor_addr::gguf::AddressFailure,
1188 uor_addr::gguf::AddressFailure::InvalidGguf
1189 ),
1190 HashAlgorithm::Sha3256 => map_addr!(
1191 uor_addr::gguf::address_sha3_256(&input),
1192 uor_addr::gguf::AddressFailure,
1193 uor_addr::gguf::AddressFailure::InvalidGguf
1194 ),
1195 HashAlgorithm::Keccak256 => map_addr!(
1196 uor_addr::gguf::address_keccak256(&input),
1197 uor_addr::gguf::AddressFailure,
1198 uor_addr::gguf::AddressFailure::InvalidGguf
1199 ),
1200 HashAlgorithm::Sha512 => map_addr!(
1201 uor_addr::gguf::address_sha512(&input),
1202 uor_addr::gguf::AddressFailure,
1203 uor_addr::gguf::AddressFailure::InvalidGguf
1204 ),
1205 }
1206 }
1207
1208 fn gguf_address_with_witness_hash(
1209 input: Vec<u8>,
1210 algo: HashAlgorithm,
1211 ) -> Result<Grounded, AddressError> {
1212 match algo {
1213 HashAlgorithm::Sha256 => map_witness!(
1214 uor_addr::gguf::address(&input),
1215 uor_addr::gguf::AddressFailure,
1216 uor_addr::gguf::AddressFailure::InvalidGguf
1217 ),
1218 HashAlgorithm::Blake3 => map_witness!(
1219 uor_addr::gguf::address_blake3(&input),
1220 uor_addr::gguf::AddressFailure,
1221 uor_addr::gguf::AddressFailure::InvalidGguf
1222 ),
1223 HashAlgorithm::Sha3256 => map_witness!(
1224 uor_addr::gguf::address_sha3_256(&input),
1225 uor_addr::gguf::AddressFailure,
1226 uor_addr::gguf::AddressFailure::InvalidGguf
1227 ),
1228 HashAlgorithm::Keccak256 => map_witness!(
1229 uor_addr::gguf::address_keccak256(&input),
1230 uor_addr::gguf::AddressFailure,
1231 uor_addr::gguf::AddressFailure::InvalidGguf
1232 ),
1233 HashAlgorithm::Sha512 => map_witness!(
1234 uor_addr::gguf::address_sha512(&input),
1235 uor_addr::gguf::AddressFailure,
1236 uor_addr::gguf::AddressFailure::InvalidGguf
1237 ),
1238 }
1239 }
1240
1241 fn onnx_address_with_hash(
1242 input: Vec<u8>,
1243 algo: HashAlgorithm,
1244 ) -> Result<KappaLabel, AddressError> {
1245 match algo {
1246 HashAlgorithm::Sha256 => map_addr!(
1247 uor_addr::onnx::address(&input),
1248 uor_addr::onnx::AddressFailure,
1249 uor_addr::onnx::AddressFailure::InvalidOnnx
1250 ),
1251 HashAlgorithm::Blake3 => map_addr!(
1252 uor_addr::onnx::address_blake3(&input),
1253 uor_addr::onnx::AddressFailure,
1254 uor_addr::onnx::AddressFailure::InvalidOnnx
1255 ),
1256 HashAlgorithm::Sha3256 => map_addr!(
1257 uor_addr::onnx::address_sha3_256(&input),
1258 uor_addr::onnx::AddressFailure,
1259 uor_addr::onnx::AddressFailure::InvalidOnnx
1260 ),
1261 HashAlgorithm::Keccak256 => map_addr!(
1262 uor_addr::onnx::address_keccak256(&input),
1263 uor_addr::onnx::AddressFailure,
1264 uor_addr::onnx::AddressFailure::InvalidOnnx
1265 ),
1266 HashAlgorithm::Sha512 => map_addr!(
1267 uor_addr::onnx::address_sha512(&input),
1268 uor_addr::onnx::AddressFailure,
1269 uor_addr::onnx::AddressFailure::InvalidOnnx
1270 ),
1271 }
1272 }
1273
1274 fn onnx_address_with_witness_hash(
1275 input: Vec<u8>,
1276 algo: HashAlgorithm,
1277 ) -> Result<Grounded, AddressError> {
1278 match algo {
1279 HashAlgorithm::Sha256 => map_witness!(
1280 uor_addr::onnx::address(&input),
1281 uor_addr::onnx::AddressFailure,
1282 uor_addr::onnx::AddressFailure::InvalidOnnx
1283 ),
1284 HashAlgorithm::Blake3 => map_witness!(
1285 uor_addr::onnx::address_blake3(&input),
1286 uor_addr::onnx::AddressFailure,
1287 uor_addr::onnx::AddressFailure::InvalidOnnx
1288 ),
1289 HashAlgorithm::Sha3256 => map_witness!(
1290 uor_addr::onnx::address_sha3_256(&input),
1291 uor_addr::onnx::AddressFailure,
1292 uor_addr::onnx::AddressFailure::InvalidOnnx
1293 ),
1294 HashAlgorithm::Keccak256 => map_witness!(
1295 uor_addr::onnx::address_keccak256(&input),
1296 uor_addr::onnx::AddressFailure,
1297 uor_addr::onnx::AddressFailure::InvalidOnnx
1298 ),
1299 HashAlgorithm::Sha512 => map_witness!(
1300 uor_addr::onnx::address_sha512(&input),
1301 uor_addr::onnx::AddressFailure,
1302 uor_addr::onnx::AddressFailure::InvalidOnnx
1303 ),
1304 }
1305 }
1306
1307 fn compose_g2(
1311 left: KappaLabel,
1312 right: KappaLabel,
1313 algo: HashAlgorithm,
1314 ) -> Result<KappaLabel, AddressError> {
1315 use uor_addr::composition as c;
1316 match algo {
1317 HashAlgorithm::Sha256 => compose2_label(&left, &right, c::compose_g2_product),
1318 HashAlgorithm::Blake3 => {
1319 compose2_label(&left, &right, c::compose_g2_product_blake3)
1320 }
1321 HashAlgorithm::Sha3256 => {
1322 compose2_label(&left, &right, c::compose_g2_product_sha3_256)
1323 }
1324 HashAlgorithm::Keccak256 => {
1325 compose2_label(&left, &right, c::compose_g2_product_keccak256)
1326 }
1327 HashAlgorithm::Sha512 => {
1328 compose2_label(&left, &right, c::compose_g2_product_sha512)
1329 }
1330 }
1331 }
1332
1333 fn compose_g2_with_witness(
1334 left: KappaLabel,
1335 right: KappaLabel,
1336 algo: HashAlgorithm,
1337 ) -> Result<Grounded, AddressError> {
1338 use uor_addr::composition as c;
1339 match algo {
1340 HashAlgorithm::Sha256 => compose2_witness(&left, &right, c::compose_g2_product),
1341 HashAlgorithm::Blake3 => {
1342 compose2_witness(&left, &right, c::compose_g2_product_blake3)
1343 }
1344 HashAlgorithm::Sha3256 => {
1345 compose2_witness(&left, &right, c::compose_g2_product_sha3_256)
1346 }
1347 HashAlgorithm::Keccak256 => {
1348 compose2_witness(&left, &right, c::compose_g2_product_keccak256)
1349 }
1350 HashAlgorithm::Sha512 => {
1351 compose2_witness(&left, &right, c::compose_g2_product_sha512)
1352 }
1353 }
1354 }
1355
1356 fn compose_f4(
1357 operand: KappaLabel,
1358 algo: HashAlgorithm,
1359 ) -> Result<KappaLabel, AddressError> {
1360 use uor_addr::composition as c;
1361 match algo {
1362 HashAlgorithm::Sha256 => compose1_label(&operand, c::compose_f4_quotient),
1363 HashAlgorithm::Blake3 => compose1_label(&operand, c::compose_f4_quotient_blake3),
1364 HashAlgorithm::Sha3256 => compose1_label(&operand, c::compose_f4_quotient_sha3_256),
1365 HashAlgorithm::Keccak256 => {
1366 compose1_label(&operand, c::compose_f4_quotient_keccak256)
1367 }
1368 HashAlgorithm::Sha512 => compose1_label(&operand, c::compose_f4_quotient_sha512),
1369 }
1370 }
1371
1372 fn compose_f4_with_witness(
1373 operand: KappaLabel,
1374 algo: HashAlgorithm,
1375 ) -> Result<Grounded, AddressError> {
1376 use uor_addr::composition as c;
1377 match algo {
1378 HashAlgorithm::Sha256 => compose1_witness(&operand, c::compose_f4_quotient),
1379 HashAlgorithm::Blake3 => compose1_witness(&operand, c::compose_f4_quotient_blake3),
1380 HashAlgorithm::Sha3256 => {
1381 compose1_witness(&operand, c::compose_f4_quotient_sha3_256)
1382 }
1383 HashAlgorithm::Keccak256 => {
1384 compose1_witness(&operand, c::compose_f4_quotient_keccak256)
1385 }
1386 HashAlgorithm::Sha512 => compose1_witness(&operand, c::compose_f4_quotient_sha512),
1387 }
1388 }
1389
1390 fn compose_e6(
1391 operand: KappaLabel,
1392 algo: HashAlgorithm,
1393 ) -> Result<KappaLabel, AddressError> {
1394 use uor_addr::composition as c;
1395 match algo {
1396 HashAlgorithm::Sha256 => compose1_label(&operand, c::compose_e6_filtration),
1397 HashAlgorithm::Blake3 => compose1_label(&operand, c::compose_e6_filtration_blake3),
1398 HashAlgorithm::Sha3256 => {
1399 compose1_label(&operand, c::compose_e6_filtration_sha3_256)
1400 }
1401 HashAlgorithm::Keccak256 => {
1402 compose1_label(&operand, c::compose_e6_filtration_keccak256)
1403 }
1404 HashAlgorithm::Sha512 => compose1_label(&operand, c::compose_e6_filtration_sha512),
1405 }
1406 }
1407
1408 fn compose_e6_with_witness(
1409 operand: KappaLabel,
1410 algo: HashAlgorithm,
1411 ) -> Result<Grounded, AddressError> {
1412 use uor_addr::composition as c;
1413 match algo {
1414 HashAlgorithm::Sha256 => compose1_witness(&operand, c::compose_e6_filtration),
1415 HashAlgorithm::Blake3 => {
1416 compose1_witness(&operand, c::compose_e6_filtration_blake3)
1417 }
1418 HashAlgorithm::Sha3256 => {
1419 compose1_witness(&operand, c::compose_e6_filtration_sha3_256)
1420 }
1421 HashAlgorithm::Keccak256 => {
1422 compose1_witness(&operand, c::compose_e6_filtration_keccak256)
1423 }
1424 HashAlgorithm::Sha512 => {
1425 compose1_witness(&operand, c::compose_e6_filtration_sha512)
1426 }
1427 }
1428 }
1429
1430 fn compose_e7(
1431 operand: KappaLabel,
1432 algo: HashAlgorithm,
1433 ) -> Result<KappaLabel, AddressError> {
1434 use uor_addr::composition as c;
1435 match algo {
1436 HashAlgorithm::Sha256 => compose1_label(&operand, c::compose_e7_augmentation),
1437 HashAlgorithm::Blake3 => {
1438 compose1_label(&operand, c::compose_e7_augmentation_blake3)
1439 }
1440 HashAlgorithm::Sha3256 => {
1441 compose1_label(&operand, c::compose_e7_augmentation_sha3_256)
1442 }
1443 HashAlgorithm::Keccak256 => {
1444 compose1_label(&operand, c::compose_e7_augmentation_keccak256)
1445 }
1446 HashAlgorithm::Sha512 => {
1447 compose1_label(&operand, c::compose_e7_augmentation_sha512)
1448 }
1449 }
1450 }
1451
1452 fn compose_e7_with_witness(
1453 operand: KappaLabel,
1454 algo: HashAlgorithm,
1455 ) -> Result<Grounded, AddressError> {
1456 use uor_addr::composition as c;
1457 match algo {
1458 HashAlgorithm::Sha256 => compose1_witness(&operand, c::compose_e7_augmentation),
1459 HashAlgorithm::Blake3 => {
1460 compose1_witness(&operand, c::compose_e7_augmentation_blake3)
1461 }
1462 HashAlgorithm::Sha3256 => {
1463 compose1_witness(&operand, c::compose_e7_augmentation_sha3_256)
1464 }
1465 HashAlgorithm::Keccak256 => {
1466 compose1_witness(&operand, c::compose_e7_augmentation_keccak256)
1467 }
1468 HashAlgorithm::Sha512 => {
1469 compose1_witness(&operand, c::compose_e7_augmentation_sha512)
1470 }
1471 }
1472 }
1473
1474 fn compose_e8(
1475 operand: KappaLabel,
1476 algo: HashAlgorithm,
1477 ) -> Result<KappaLabel, AddressError> {
1478 use uor_addr::composition as c;
1479 match algo {
1480 HashAlgorithm::Sha256 => compose1_label(&operand, c::compose_e8_embedding),
1481 HashAlgorithm::Blake3 => compose1_label(&operand, c::compose_e8_embedding_blake3),
1482 HashAlgorithm::Sha3256 => {
1483 compose1_label(&operand, c::compose_e8_embedding_sha3_256)
1484 }
1485 HashAlgorithm::Keccak256 => {
1486 compose1_label(&operand, c::compose_e8_embedding_keccak256)
1487 }
1488 HashAlgorithm::Sha512 => compose1_label(&operand, c::compose_e8_embedding_sha512),
1489 }
1490 }
1491
1492 fn compose_e8_with_witness(
1493 operand: KappaLabel,
1494 algo: HashAlgorithm,
1495 ) -> Result<Grounded, AddressError> {
1496 use uor_addr::composition as c;
1497 match algo {
1498 HashAlgorithm::Sha256 => compose1_witness(&operand, c::compose_e8_embedding),
1499 HashAlgorithm::Blake3 => compose1_witness(&operand, c::compose_e8_embedding_blake3),
1500 HashAlgorithm::Sha3256 => {
1501 compose1_witness(&operand, c::compose_e8_embedding_sha3_256)
1502 }
1503 HashAlgorithm::Keccak256 => {
1504 compose1_witness(&operand, c::compose_e8_embedding_keccak256)
1505 }
1506 HashAlgorithm::Sha512 => compose1_witness(&operand, c::compose_e8_embedding_sha512),
1507 }
1508 }
1509 }
1510
1511 export!(UorAddrComponent);
1512}