import { expect } from 'chai'; import { asyncEdDSA, hexToBuffer, TsRollupSigner, asyncPoseidonHash } from '../src/'; import tsAccountTestCaseList from './data/ts-account.testcase.json'; describe(`test`, function () { before(async function () { await asyncEdDSA; await asyncPoseidonHash; }); tsAccountTestCaseList.forEach(async ({ priv, tsPubKey, tsAddr, msg1, msgHash1, msg2, msgHash2, eddsaSig1, eddsaSig2 }, index) => { await asyncEdDSA; const signer = new TsRollupSigner(hexToBuffer(priv)); it(`testIndex=${index}: tsPubKey are correct`, function () { const expected = [BigInt(tsPubKey[0]), BigInt(tsPubKey[1])]; expect(signer.tsPubKey).deep.equal(expected); }); it(`testIndex=${index}: tsAddr is correct`, function () { const expected = tsAddr; expect(signer.tsAddr).deep.equal(expected); }); it(`testIndex=${index}: signPoseidonMessageHash`, function () { const signature = signer.signPoseidonMessageHash(BigInt(msgHash1)); const expected = { R8: [BigInt(eddsaSig1.R8[0]), BigInt(eddsaSig1.R8[1])], S: BigInt(eddsaSig1.S), }; expect(signature).deep.equal(expected); }); it(`testIndex=${index}: signMessage`, function () { const signature = signer.signMessage(msg1.map((v) => BigInt(v))); const expected = { R8: [BigInt(eddsaSig1.R8[0]), BigInt(eddsaSig1.R8[1])], S: BigInt(eddsaSig1.S), }; expect(signature).deep.equal(expected); }); it(`testIndex=${index}: verifySignatureFromMessage`, function () { const result = signer.verifySignatureFromMessage( msg2.map((v) => BigInt(v)), { R8: [BigInt(eddsaSig2.R8[0]), BigInt(eddsaSig2.R8[1])], S: BigInt(eddsaSig2.S), }, ); expect(result).to.equal(true); }); it(`testIndex=${index}: verifySignature`, function () { const result = signer.verifySignature(BigInt(msgHash2), { R8: [BigInt(eddsaSig2.R8[0]), BigInt(eddsaSig2.R8[1])], S: BigInt(eddsaSig2.S), }); expect(result).to.equal(true); }); }); });