[−][src]Struct indy_crypto::cl::prover::Prover
Credentials owner that can proof and partially disclose the credentials to verifier.
Methods
impl Prover
[src]
pub fn new_master_secret() -> IndyCryptoResult<MasterSecret>
[src]
Creates a master secret.
Example
use indy_crypto::cl::prover::Prover; let _master_secret = Prover::new_master_secret().unwrap();
pub fn blind_credential_secrets(
credential_pub_key: &CredentialPublicKey,
credential_key_correctness_proof: &CredentialKeyCorrectnessProof,
credential_values: &CredentialValues,
credential_nonce: &Nonce
) -> IndyCryptoResult<(BlindedCredentialSecrets, CredentialSecretsBlindingFactors, BlindedCredentialSecretsCorrectnessProof)>
[src]
credential_pub_key: &CredentialPublicKey,
credential_key_correctness_proof: &CredentialKeyCorrectnessProof,
credential_values: &CredentialValues,
credential_nonce: &Nonce
) -> IndyCryptoResult<(BlindedCredentialSecrets, CredentialSecretsBlindingFactors, BlindedCredentialSecretsCorrectnessProof)>
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();
pub fn process_credential_signature(
credential_signature: &mut CredentialSignature,
credential_values: &CredentialValues,
signature_correctness_proof: &SignatureCorrectnessProof,
credential_secrets_blinding_factors: &CredentialSecretsBlindingFactors,
credential_pub_key: &CredentialPublicKey,
nonce: &Nonce,
rev_key_pub: Option<&RevocationKeyPublic>,
rev_reg: Option<&RevocationRegistry>,
witness: Option<&Witness>
) -> IndyCryptoResult<()>
[src]
credential_signature: &mut CredentialSignature,
credential_values: &CredentialValues,
signature_correctness_proof: &SignatureCorrectnessProof,
credential_secrets_blinding_factors: &CredentialSecretsBlindingFactors,
credential_pub_key: &CredentialPublicKey,
nonce: &Nonce,
rev_key_pub: Option<&RevocationKeyPublic>,
rev_reg: Option<&RevocationRegistry>,
witness: Option<&Witness>
) -> IndyCryptoResult<()>
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();
pub fn new_proof_builder() -> IndyCryptoResult<ProofBuilder>
[src]
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
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From for T
[src]
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
🔬 This is a nightly-only experimental API. (
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
🔬 This is a nightly-only experimental API. (
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Same for T
type Output = T
Should always be Self