Skip to content

Commit

Permalink
Remove logging and disable pseudonym tests.
Browse files Browse the repository at this point in the history
- Pseudonym feature still incomplete, details on whether to
  differentiate between hidden/non-hidden pseudonym implementation
  is still TBD.
  • Loading branch information
dlongley committed Aug 19, 2024
1 parent 7ac27d1 commit 65c9fd3
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 71 deletions.
4 changes: 2 additions & 2 deletions lib/bbs/blind/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@ export function CoreBlindSign({
const msgs = message_scalars.slice(0, L);
const {Q_1} = generators;
const H = generators.H.slice(0, L);
console.log('H count', H.length);
// Identity_G1 == ciphersuite.Identity_E1
const Q_2 = blind_generators.length === 0 ?
ciphersuite.Identity_E1 : blind_generators[0];
// FIXME: determine which to use
// FIXME: determine which approach to use; there are always blind_generators
// (preferred) or sometimes there can be zero
//const Q_2 = blind_generators[0];
const commitment = deserialize_and_validate_commit({
commitment_with_proof, blind_generators, api_id, ciphersuite
Expand Down
37 changes: 0 additions & 37 deletions lib/bbs/proof.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,6 @@ export function ProofFinalize({
const mHat = undisclosed_messages.map(
(undisclosed, j) => Fr.add(m_j[j], Fr.mul(undisclosed, challenge)));
const proof = [Abar, Bbar, D, eHat, r1Hat, r3Hat, ...mHat, challenge];
console.log('all the commitments', mHat.map(c => c.toString(16)));
console.log('total number of committments', mHat.length);
return proof_to_octets({proof, ciphersuite});
}

Expand Down Expand Up @@ -179,8 +177,6 @@ export function ProofInit({
const {B, domain} = calculate_B({
PK, generators, header, messages, api_id, ciphersuite
});
console.log('proof init generated B', B.toHex());
console.log('proof init generated domain', domain.toString(16));
// `e~` expressed as `e_` here, `m~_j1` as `m_[0]`, etc. ...
const [r1, r2, e_, r1_, r3_, ...m_j] = random_scalars;
const D = B.multiply(r2);
Expand All @@ -192,11 +188,6 @@ export function ProofInit({
for(const [i, j] of undisclosed_indexes.entries()) {
T2 = T2.add(H[j].multiply(m_j[i]));
}
console.log('Abar', Abar.toHex());
console.log('Bbar', Bbar.toHex());
console.log('D', D.toHex());
console.log('T1', T1.toHex());
console.log('T2', T2.toHex());
return [Abar, Bbar, D, T1, T2, domain];
}

Expand Down Expand Up @@ -228,12 +219,8 @@ export function ProofVerifyInit({
const [Abar, Bbar, D, eHat, r1Hat, r3Hat, ...commitments] = proof;
const c = commitments.pop();
const U = commitments.length;
console.log('commitments', commitments.map(c => c.toString(16)));
const R = disclosed_indexes.length;
const L = R + U;
console.log('R', R);
console.log('U', U);
console.log('L', L);
if(disclosed_indexes.some(i => isNaN(i) || i < 0 || i > (L - 1))) {
throw new Error(
`Every index in "disclosed_indexes" must be a number >= 0 and ` +
Expand Down Expand Up @@ -264,42 +251,18 @@ export function ProofVerifyInit({
const domain = calculate_domain({
PK, generators, header, api_id, ciphersuite
});
console.log('proof verify init generated domain', domain.toString(16));
const T1 = Bbar.multiply(c).add(Abar.multiply(eHat)).add(D.multiply(r1Hat));
const {P1} = ciphersuite;
console.log('P1', P1.toHex());
console.log('Q_1', Q_1.toHex());
console.log('domain', domain.toString(16));
let Bv = P1.add(Q_1.multiply(domain));
// for each disclosed message, add matching generator * message
for(const [i, msg_i] of disclosed_messages.entries()) {
Bv = Bv.add(H[disclosed_indexes[i]].multiply(msg_i));
}
console.log('number of disclosed_messages', disclosed_messages.length);
console.log('Bv', Bv.toHex());
console.log('c', c.toString(16));
console.log('D', D.toHex());
console.log('r3Hat', r3Hat.toString(16));
let T2 = Bv.multiply(c).add(D.multiply(r3Hat));
// for each commitment (each for an undisclosed message),
// add matching generator * commitment
console.log('number of commitments', commitments.length);
for(const [j, mHat_j] of commitments.entries()) {
T2 = T2.add(H[undisclosed_indexes[j]].multiply(mHat_j));
}
/*
"A": "ad5d4ff88f21c3995c5ffffe85c3cf12c1da9af6569f7cf498b59bb6bbcb792abd739abf28ecad3afc7f31f43c1c496c",
"Abar": "b842263b0948604f224f7fa512aa28adb84747e55cf1fb68c1fe1df935a7baf549f272fa960f108e5700b11607aeb0d2",
"B": "b822ddc4e5f6f7e6926322c1b973614fc93366eb0eafb7de44c72a2b5cd8109f61c698d42c959aac590c6e05b74b5b1e",
"Bbar": "abb8ca4d57b79d632df956fbdad0a803ca1952077c70b3b028bae10d5c9f3f8aec51db8782f24437ed93ae6ee020ffae",
"D": "a22a52d03abaaf3e0bf1cd374e7d9bbcbcbd3118b2086bcacd28298a8b277fdd78b5635ae3a153ee3b9c85edfa43428f",
"T1": "b62508ef7e2e93d42e16620ceb49248f87abb6158cd91152c31332629ae2a2aad0b38e0dd9b53b19229a2466c6b4d498",
"T2": "ae911d0401a48bd09c7e3f671b58ecea21cf7211e5e84561ade54a31e596f56a5d3a00bfb8677e1080fbb7327011a8f4",
*/
console.log('Abar', Abar.toHex());
console.log('Bbar', Bbar.toHex());
console.log('D', D.toHex());
console.log('T1', T1.toHex());
console.log('T2', T2.toHex());
return [Abar, Bbar, D, T1, T2, domain];
}
16 changes: 2 additions & 14 deletions lib/bbs/pseudonym/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ export async function CoreProofGenWithPseudonym({
messages = [], disclosed_indexes = [],
api_id = new Uint8Array(), ciphersuite, mocked_random_scalars_options
} = {}) {
console.log('generator length', generators.length);
console.log('proofgen generators', generators.map(g => g.toHex()));
/* Note: The only difference between `CoreProofGenWithPseudonym` and
`CoreProofGen` is the generation of `pseudo_init_res` to be passed to
`ProofWithPseudonymChallengeCalculate`. */
Expand Down Expand Up @@ -112,7 +110,6 @@ export async function CoreProofGenWithPseudonym({
// generate `pseudonym_init_res`
const OP = ciphersuite.hash_to_curve_g1(verifier_id, api_id);
// `pid_` means `pid~` here
console.log('U+5', U+5, 'length', random_scalars.length);
const pid_ = random_scalars.at(-2);
const Ut = OP.multiply(pid_);
const pseudonym_init_res = [pseudonym, OP, Ut];
Expand Down Expand Up @@ -161,23 +158,18 @@ export function CoreProofVerifyWithPseudonym({
*/
generators = concatGenerators(generators, blind_generators);
console.log('verify generators length', generators.length);
console.log('verify generators', generators.map(g => g.toHex()));
const proof_result = octets_to_proof({proof_octets: proof, ciphersuite});
const [Abar, Bbar] = proof_result;
// `pid^` used below is the last commitment
// FIX to spec: `pid^` is the last commitment when there is more than 1
// blind generator and second to last otherwise
console.log('blind_generators.length', blind_generators.length);
// blind generator and second to last otherwise; unless this gets
// consolidated to only use the hidden version
const pidHat = proof_result.at(blind_generators.length > 1 ? -2 : -3);
const c = proof_result.at(-1);
console.log('proof_results', proof_result.slice(6).map(c => c.toString(16)));
const W = octets_to_pubkey({PK, ciphersuite});
const R = disclosed_indexes.length;
// length of commitments (proof_result has 7 values other than commitments)
const U = proof_result.length - 7;
console.log('verify proof R', R);
console.log('verify proof U', U);
if(disclosed_indexes.some(i => isNaN(i) || i < 0 || i > (R + U - 1))) {
throw new Error(
`Every index in "disclosed_indexes" (${disclosed_indexes}) ` +
Expand Down Expand Up @@ -218,9 +210,6 @@ export function CoreProofVerifyWithPseudonym({
});
if(c !== challenge) {
// proof challenge does not match
console.log('challenge does not match');
console.log('c', c.toString(16));
console.log('challenge', challenge.toString(16));
return false;
}
// performs step 9 more efficiently;
Expand All @@ -229,6 +218,5 @@ export function CoreProofVerifyWithPseudonym({
const {BP2} = ciphersuite;
const pair1 = [Abar, W];
const pair2 = [Bbar, BP2];
console.log('pairing does not match');
return ciphersuite.pairingCompare({pair1, pair2});
}
13 changes: 3 additions & 10 deletions lib/bbs/pseudonym/interface.js
Original file line number Diff line number Diff line change
Expand Up @@ -303,10 +303,6 @@ export async function ProofVerifyWithPseudonym({
const U = remainder / octet_scalar_length;
const R = disclosed_indexes.length;
const total_no_messages = R + U - 1;
console.log('U is ', U);
console.log('R is ', R);
console.log('L is ', L);
console.log('M would be', total_no_messages - L);
// note: M is set to a minimum of zero, see algorithm below for why.
const M = Math.max(0, total_no_messages - L);
//const M = total_no_messages - L;
Expand All @@ -321,7 +317,7 @@ export async function ProofVerifyWithPseudonym({
// than 1
//3. blind_generators = []
//4. if M > -1, blind_generators = create_generators(M + 1, "BLIND_" + api_id)
3. if M > -1, M = 0
3. if M < 0, M = 0 (FIXME: should be an error if M < 0)
4. blind_generators = create_generators(M + 1, "BLIND_" + api_id)
5. result = CoreProofVerifyWithPseudonym(
PK, proof,
Expand All @@ -336,9 +332,9 @@ export async function ProofVerifyWithPseudonym({
messages: disclosed_messages, api_id, ciphersuite
});
const generators = create_generators({count: L + 1, api_id, ciphersuite});
console.log('verify generator count', L + 1);
let blind_generators;
console.log('M', M);
// FIXME: less than `0` will be an error if pseudonym always uses a blind
// factor
if(M > -1) {
blind_generators = create_generators({
count: M + 1,
Expand All @@ -348,9 +344,6 @@ export async function ProofVerifyWithPseudonym({
} else {
blind_generators = [];
}
console.log('generators length', generators.length);
console.log('blind generators length', blind_generators.length);
console.log('total generators length', concatGenerators(generators, blind_generators).length);
return CoreProofVerifyWithPseudonym({
PK, proof,
pseudonym, verifier_id,
Expand Down
1 change: 0 additions & 1 deletion lib/bbs/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ export function calculate_B({
});
let B = P1.add(Q_1.multiply(domain));
let i = 0;
console.log('number of messages', messages.length);
for(const message of messages) {
if(message !== 0n) {
B = B.add(H[i++].multiply(message));
Expand Down
9 changes: 2 additions & 7 deletions test/pseudonym.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const OPERATIONS = {
ProofVerifyWithPseudonym,
};

describe.only('Pseudonym BBS test vectors', () => {
describe.skip('Pseudonym BBS test vectors', () => {
const only = CIPHERSUITES_TEST_VECTORS.filter(tv => {
return tv.fixtures.some(({only}) => only);
});
Expand Down Expand Up @@ -61,11 +61,9 @@ async function PidSignAndVerify({
test_signer_blind.should.eql(signer_blind);
}
messages = [...messages, pid];
console.log('THE MESSAGE COUNT', messages.length);
const signature = await BlindSign({
SK, PK, header, messages, signer_blind, api_id, ciphersuite
});
console.log('signature', Buffer.from(signature).toString('hex'));
const verified = await BlindVerify({
PK, signature, header,
messages, committed_messages: [],
Expand Down Expand Up @@ -97,15 +95,12 @@ async function PidVerifyAndProofGenWithPseudonym({
api_id, ciphersuite
});
verifyResult.should.equal(true);
//return ProofGenWithPseudonym({
const foo = await ProofGenWithPseudonym({
return ProofGenWithPseudonym({
PK, signature,
pseudonym, verifier_id, pid,
header, ph,
messages, disclosed_indexes,
api_id, ciphersuite,
mocked_random_scalars_options: proof_mocked_random_scalars_options
});
console.log('foo', Buffer.from(foo).toString('hex'));
return foo;
}

0 comments on commit 65c9fd3

Please sign in to comment.