UNPKG

simple-js-pedersen-commitment

Version:
70 lines (59 loc) 2.42 kB
try { const Pedersen = require('../src/main.js') const pederson = new Pedersen( '925f15d93a513b441a78826069b4580e3ee37fc5', '959144013c88c9782d5edd2d12f54885aa4ba687' ) const secrets = {} let i = 0 while (i < 100) { const secret = pederson.newSecret() if (secret.length !== 40) { throw 'generated invalid key' } secrets[secret] = true i++ } if (Object.keys(secrets).length !== 100) { throw 'basic secret collision test failed' } let secret = '1184c47884aeead9816654a63d4209d6e8e906e29' const testA = pederson.commit('1', secret, 'e93c58e6f7f3f4b6f6f0e55f3a4191b87d58b7b1') const assertionA = [ '4b7680d6262cea707175d55e862a09ba71b55655', 'e93c58e6f7f3f4b6f6f0e55f3a4191b87d58b7b1' ] if (testA.toString() !== assertionA.toString()) { throw 'arbitrary signature test 1 failed' } const testB = pederson.commit('2', secret, 'ba1303c4f29bd959f585dc0dcfb3dbd0cebecd48') const assertionB = [ 'ff5ad287a51bffddedaf342dfa685b0cf82286ce', 'ba1303c4f29bd959f585dc0dcfb3dbd0cebecd48' ] if (testB.toString() !== assertionB.toString()) { throw 'arbitrary signature test 2 failed' } const assertionC = [ '71e6ef28ea611f23d2240e4a786edc14611c96a3', '1a34f5cabea8fce10ec76c16d09f56d894c1784f9' ] if (pederson.combine([testA, testB]).toString() !== assertionC.toString()) { throw 'arbitrary signature combination failed' } if (!pederson.verify('1', [testA], secret)) { throw 'arbitrary verification test 1 failed' } if (!pederson.verify('2', [testB], secret)) { throw 'arbitrary verification test 2 failed' } if (!pederson.verify('3', [pederson.combine([testA, testB])], secret)) { throw 'combined verifcation test failed' } const message = 'aaaaaaaaaa' const testD = pederson.commit(message, secret, 'ba1303c4f29bd959f585dc0dcfb3dbd0cebecd48') if (!pederson.verify(message, [testD], secret)) { throw 'random verification test 1 failed' } secret = pederson.newSecret() const testE = pederson.commit(message, secret) if (!pederson.verify(message, [testE], secret)) { throw 'end-to-end test failed' } console.log('✅ pedersen tests passed') } catch (error) { console.error('⚠️ failed to test pedersen commitments ', error) throw error }