diff --git a/clients/tauri-client/src-tauri/src/main.rs b/clients/tauri-client/src-tauri/src/main.rs index f09a125450..e705218f2f 100644 --- a/clients/tauri-client/src-tauri/src/main.rs +++ b/clients/tauri-client/src-tauri/src/main.rs @@ -9,7 +9,8 @@ use tokio::sync::RwLock; use url::Url; use coconut_interface::{ - self, hash_to_scalar, Attribute, Credential, Parameters, Signature, Theta, VerificationKey, + self, hash_to_scalar, Attribute, Bytable, Credential, Parameters, Signature, Theta, + VerificationKey, }; use credentials::{obtain_aggregate_signature, obtain_aggregate_verification_key}; diff --git a/common/coconut-interface/src/lib.rs b/common/coconut-interface/src/lib.rs index 2704ac4db7..7e8ca5db7e 100644 --- a/common/coconut-interface/src/lib.rs +++ b/common/coconut-interface/src/lib.rs @@ -37,11 +37,13 @@ impl Credential { pub fn verify(&self, verification_key: &VerificationKey) -> bool { let params = Parameters::new(self.n_params).unwrap(); - let public_attributes = self - .public_attributes - .iter() - .map(hash_to_scalar) - .collect::>(); + let mut public_attributes = vec![]; + for attr in &self.public_attributes { + match Attribute::try_from_byte_slice(attr) { + Ok(attr) => public_attributes.push(attr), + Err(_) => return false, + } + } nymcoconut::verify_credential(¶ms, verification_key, &self.theta, &public_attributes) } } diff --git a/common/nymcoconut/src/lib.rs b/common/nymcoconut/src/lib.rs index 491a8e8fe1..936b27005f 100644 --- a/common/nymcoconut/src/lib.rs +++ b/common/nymcoconut/src/lib.rs @@ -5,6 +5,7 @@ use std::convert::TryInto; use bls12_381::Scalar; +pub use crate::traits::Bytable; pub use elgamal::elgamal_keygen; pub use elgamal::ElGamalKeyPair; pub use elgamal::PublicKey; @@ -28,8 +29,6 @@ pub use scheme::SignatureShare; pub use traits::Base58; pub use utils::hash_to_scalar; -use crate::traits::Bytable; - pub mod elgamal; mod error; mod impls;