Function noah_api::anon_creds::ac_commit_with_key
source · pub fn ac_commit_with_key<R: CryptoRng + RngCore>(
prng: &mut R,
user_sk: &ACUserSecretKey,
credential: &Credential,
key: &ACCommitmentKey,
msg: &[u8]
) -> Result<CommOutput<<BLSPairingEngine as Pairing>::G1, <BLSPairingEngine as Pairing>::G2, <BLSPairingEngine as Pairing>::ScalarField>>Expand description
Produce an AttrsRevealProof, bitmap indicates which attributes are revealed
Example
use rand_core::SeedableRng;
use rand_chacha::ChaChaRng;
use noah_api::anon_creds::{ac_keygen_issuer, ac_keygen_user, ac_sign, ac_commit, ac_keygen_commitment, ac_commit_with_key, Credential};
use noah_algebra::bls12_381::BLSScalar;
use noah_algebra::traits::Scalar;
let mut prng = ChaChaRng::from_seed([0u8;32]);
let num_attrs = 2;
let (issuer_sk, issuer_pk) = ac_keygen_issuer::<ChaChaRng>(&mut prng, num_attrs);
let (user_sk, user_pk) = ac_keygen_user::<ChaChaRng>(&mut prng, &issuer_pk);
let attributes = vec![10u32, 20u32];
let signature = ac_sign::<ChaChaRng, >(&mut prng, &issuer_sk, &user_pk, &attributes[..]).unwrap();
let credential = Credential{
sig:signature,
attrs:attributes,
ipk:issuer_pk,
};
let ac_key = ac_keygen_commitment::<ChaChaRng>(&mut prng);
let addr = b"some addr";
let output = ac_commit_with_key::<ChaChaRng>(&mut prng, &user_sk, &credential, &ac_key, addr).unwrap();Run