[][src]Struct indy_crypto::cl::prover::Prover

pub struct Prover {}

Credentials owner that can proof and partially disclose the credentials to verifier.

Methods

impl Prover
[src]

Creates a master secret.

Example

use indy_crypto::cl::prover::Prover;

let _master_secret = Prover::new_master_secret().unwrap();

Creates blinded master secret for given issuer key and master secret.

Arguments

  • credential_pub_key - Credential public keys.
  • credential_key_correctness_proof - Credential key correctness proof.
  • credential_values - Credential values.
  • credential_nonce - Nonce used for creation of blinded_credential_secrets_correctness_proof.

Example

use indy_crypto::cl::new_nonce;
use indy_crypto::cl::issuer::Issuer;
use indy_crypto::cl::prover::Prover;

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_elements = 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_elements, false).unwrap();

let master_secret = Prover::new_master_secret().unwrap();
let credential_nonce = new_nonce().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();
let cred_values = credential_values_builder.finalize().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,
                                &cred_values,
                                &credential_nonce).unwrap();

Updates the credential signature by a master secret blinding data.

Arguments

  • credential_signature - Credential signature generated by Issuer.
  • credential_values - Credential values.
  • signature_correctness_proof - Credential signature correctness proof.
  • credential_secrets_blinding_factors - Master secret blinding data.
  • credential_pub_key - Credential public key.
  • nonce - Nonce was used by Issuer for the creation of signature_correctness_proof.
  • rev_key_pub - (Optional) Revocation registry public key.
  • rev_reg - (Optional) Revocation registry.
  • witness - (Optional) Witness.

Example

use indy_crypto::cl::new_nonce;
use indy_crypto::cl::issuer::Issuer;
use indy_crypto::cl::prover::Prover;

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 credential_nonce = new_nonce().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 (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();

Creates and returns proof builder.

The purpose of proof builder is building of proof entity according to the given request .

Example

use indy_crypto::cl::prover::Prover;

let _proof_builder = Prover::new_proof_builder();

Auto Trait Implementations

impl Send for Prover

impl Sync for Prover

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

Performs the conversion.

impl<T> From for T
[src]

Performs the conversion.

impl<T, U> TryFrom for T where
    T: From<U>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<T> Borrow for T where
    T: ?Sized
[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut for T where
    T: ?Sized
[src]

Mutably borrows from an owned value. Read more

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

🔬 This is a nightly-only experimental API. (get_type_id)

this method will likely be replaced by an associated static

Gets the TypeId of self. Read more

impl<T> Same for T

Should always be Self