[−][src]Struct wedpr_indy_crypto::cl::verifier::ProofVerifier
Implementations
impl ProofVerifier
[src]
pub fn add_sub_proof_request(
&mut self,
sub_proof_request: &SubProofRequest,
credential_schema: &CredentialSchema,
non_credential_schema: &NonCredentialSchema,
credential_pub_key: &CredentialPublicKey,
rev_key_pub: Option<&RevocationKeyPublic>,
rev_reg: Option<&RevocationRegistry>
) -> Result<(), IndyCryptoError>
[src]
&mut self,
sub_proof_request: &SubProofRequest,
credential_schema: &CredentialSchema,
non_credential_schema: &NonCredentialSchema,
credential_pub_key: &CredentialPublicKey,
rev_key_pub: Option<&RevocationKeyPublic>,
rev_reg: Option<&RevocationRegistry>
) -> Result<(), IndyCryptoError>
Add sub proof request to proof verifier. The order of sub-proofs is important: both Prover and Verifier should use the same order.
Arguments
proof_verifier
- Proof verifier.credential_schema
- Credential schema.credential_pub_key
- Credential public key.rev_reg_pub
- Revocation registry public key.sub_proof_request
- Requested attributes and predicates instance pointer.
#Example
use indy_crypto::cl::issuer::Issuer; use indy_crypto::cl::verifier::Verifier; let mut credential_schema_builder = Issuer::new_credential_schema_builder().unwrap(); credential_schema_builder.add_attr("sex").unwrap(); let credential_schema = credential_schema_builder.finalize().unwrap(); let mut non_credential_schema_builder = Issuer::new_non_credential_schema_builder().unwrap(); non_credential_schema_builder.add_attr("master_secret").unwrap(); let non_credential_schema = non_credential_schema_builder.finalize().unwrap(); let (credential_pub_key, credential_priv_key, cred_key_correctness_proof) = Issuer::new_credential_def(&credential_schema, &non_credential_schema, false).unwrap(); let (credential_pub_key, _credential_priv_key, _credential_key_correctness_proof) = Issuer::new_credential_def(&credential_schema, &non_credential_schema, false).unwrap(); let mut sub_proof_request_builder = Verifier::new_sub_proof_request_builder().unwrap(); sub_proof_request_builder.add_revealed_attr("sex").unwrap(); let sub_proof_request = sub_proof_request_builder.finalize().unwrap(); let mut proof_verifier = Verifier::new_proof_verifier().unwrap(); proof_verifier.add_sub_proof_request(&sub_proof_request, &credential_schema, &non_credential_schema, &credential_pub_key, None, None).unwrap();
pub fn verify(
&self,
proof: &Proof,
nonce: &Nonce
) -> Result<bool, IndyCryptoError>
[src]
&self,
proof: &Proof,
nonce: &Nonce
) -> Result<bool, IndyCryptoError>
Verifies proof.
Arguments
proof_verifier
- Proof verifier.proof
- Proof generated by Prover.nonce
- Nonce.
#Example
use indy_crypto::cl::new_nonce; use indy_crypto::cl::issuer::Issuer; use indy_crypto::cl::prover::Prover; use indy_crypto::cl::verifier::Verifier; let mut credential_schema_builder = Issuer::new_credential_schema_builder().unwrap(); credential_schema_builder.add_attr("sex").unwrap(); let credential_schema = credential_schema_builder.finalize().unwrap(); let mut non_credential_schema_builder = Issuer::new_non_credential_schema_builder().unwrap(); non_credential_schema_builder.add_attr("master_secret").unwrap(); let non_credential_schema = non_credential_schema_builder.finalize().unwrap(); let (credential_pub_key, credential_priv_key, cred_key_correctness_proof) = Issuer::new_credential_def(&credential_schema, &non_credential_schema, false).unwrap(); let master_secret = Prover::new_master_secret().unwrap(); let mut credential_values_builder = Issuer::new_credential_values_builder().unwrap(); credential_values_builder.add_value_hidden("master_secret", &master_secret.value().unwrap()).unwrap(); credential_values_builder.add_dec_known("sex", "5944657099558967239210949258394887428692050081607692519917050011144233115103").unwrap(); let credential_values = credential_values_builder.finalize().unwrap(); let credential_nonce = new_nonce().unwrap(); let (blinded_credential_secrets, credential_secrets_blinding_factors, blinded_credential_secrets_correctness_proof) = Prover::blind_credential_secrets(&credential_pub_key, &cred_key_correctness_proof, &credential_values, &credential_nonce).unwrap(); let credential_issuance_nonce = new_nonce().unwrap(); let (mut credential_signature, signature_correctness_proof) = Issuer::sign_credential("CnEDk9HrMnmiHXEV1WFgbVCRteYnPqsJwrTdcZaNhFVW", &blinded_credential_secrets, &blinded_credential_secrets_correctness_proof, &credential_nonce, &credential_issuance_nonce, &credential_values, &credential_pub_key, &credential_priv_key).unwrap(); Prover::process_credential_signature(&mut credential_signature, &credential_values, &signature_correctness_proof, &credential_secrets_blinding_factors, &credential_pub_key, &credential_issuance_nonce, None, None, None).unwrap(); let mut sub_proof_request_builder = Verifier::new_sub_proof_request_builder().unwrap(); sub_proof_request_builder.add_revealed_attr("sex").unwrap(); let sub_proof_request = sub_proof_request_builder.finalize().unwrap(); let mut proof_builder = Prover::new_proof_builder().unwrap(); proof_builder.add_common_attribute("master_secret").unwrap(); proof_builder.add_sub_proof_request(&sub_proof_request, &credential_schema, &non_credential_schema, &credential_signature, &credential_values, &credential_pub_key, None, None).unwrap(); let proof_request_nonce = new_nonce().unwrap(); let proof = proof_builder.finalize(&proof_request_nonce).unwrap(); let mut proof_verifier = Verifier::new_proof_verifier().unwrap(); proof_verifier.add_sub_proof_request(&sub_proof_request, &credential_schema, &non_credential_schema, &credential_pub_key, None, None).unwrap(); assert!(proof_verifier.verify(&proof, &proof_request_nonce).unwrap());
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for ProofVerifier
[src]
impl Send for ProofVerifier
[src]
impl Sync for ProofVerifier
[src]
impl Unpin for ProofVerifier
[src]
impl UnwindSafe for ProofVerifier
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,