MCPcopy Create free account
hub / github.com/docknetwork/crypto / pseudonym

Function pseudonym

syra/src/pseudonym.rs:425–492  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

423
424 #[test]
425 fn pseudonym() {
426 let mut rng = StdRng::seed_from_u64(0u64);
427
428 let params = SetupParams::<Bls12_381>::new::<Blake2b512>(b"test");
429 let prepared_params = PreparedSetupParams::<Bls12_381>::from(params.clone());
430
431 // Signer's setup
432 let isk = IssuerSecretKey::new(&mut rng);
433 let ipk = IssuerPublicKey::new(&mut rng, &isk, &params);
434 let prepared_ipk = PreparedIssuerPublicKey::new(ipk.clone(), params.clone());
435
436 // Signer creates user secret key
437 let user_id = compute_random_oracle_challenge::<Fr, Blake2b512>(b"low entropy user-id");
438
439 let start = Instant::now();
440 let usk = UserSecretKey::new(user_id, &isk, prepared_params.clone());
441 println!("Time to create user secret key {:?}", start.elapsed());
442
443 let start = Instant::now();
444 usk.verify(user_id, &ipk, prepared_params.clone()).unwrap();
445 println!("Time to verify user secret key {:?}", start.elapsed());
446
447 // Verifier gives message and context to user
448 let context = b"test-context";
449 let msg = b"test-message";
450
451 // Generate Z from context
452 let Z = affine_group_elem_from_try_and_incr::<G1Affine, Blake2b512>(context);
453
454 // User generates a pseudonym
455 let start = Instant::now();
456 let protocol = PseudonymGenProtocol::init(
457 &mut rng,
458 Z.clone(),
459 user_id.clone(),
460 None,
461 &usk,
462 prepared_ipk.clone(),
463 prepared_params.clone(),
464 );
465 let mut chal_bytes = vec![];
466 protocol
467 .challenge_contribution(&Z, &mut chal_bytes)
468 .unwrap();
469 // Add message to the transcript (message contributes to challenge)
470 chal_bytes.extend_from_slice(msg);
471 let challenge_prover = compute_random_oracle_challenge::<Fr, Blake2b512>(&chal_bytes);
472 let proof = protocol.gen_proof(&challenge_prover);
473 println!("Time to create proof {:?}", start.elapsed());
474 println!("Size of proof {} bytes", proof.compressed_size());
475
476 // Verifier checks the correctness of the pseudonym
477 let start = Instant::now();
478 let mut chal_bytes = vec![];
479 proof.challenge_contribution(&Z, &mut chal_bytes).unwrap();
480 // Add message to the transcript (message contributes to challenge)
481 chal_bytes.extend_from_slice(msg);
482 let challenge_verifier = compute_random_oracle_challenge::<Fr, Blake2b512>(&chal_bytes);

Callers

nothing calls this directly

Calls 4

cloneMethod · 0.80
verifyMethod · 0.45
gen_proofMethod · 0.45

Tested by

no test coverage detected