arnaucube
arnaucube/go-iden3-cryptoPublic Self-hosted repository
Add babujub eddsa benchmarks
Eduard S eduard@iden3.io
Mon, 16 Dec 2019 13:36:43 +0100
commit

53b9050d0a4c912dc66ea1201823f8c8ace4096c

parent

a5b6afcb1621bcb24811582f0f1969cc04720628

1 files changed, 51 insertions(+), 0 deletions(-)

jump to
M babyjub/eddsa_test.go → babyjub/eddsa_test.go

@@ -141,3 +141,54 @@ ok := pk.VerifyMimc7(msg, sig2)

assert.Equal(t, true, ok) } } + +func BenchmarkBabyjubEddsa(b *testing.B) { + var k PrivateKey + hex.Decode(k[:], []byte("0001020304050607080900010203040506070809000102030405060708090001")) + pk := k.Public() + + const n = 256 + + msgBuf, err := hex.DecodeString("00010203040506070809") + if err != nil { + panic(err) + } + msg := utils.SetBigIntFromLEBytes(new(big.Int), msgBuf) + var msgs [n]*big.Int + for i := 0; i < n; i++ { + msgs[i] = new(big.Int).Add(msg, big.NewInt(int64(i))) + } + var sigs [n]*Signature + + b.Run("SignMimc7", func(b *testing.B) { + for i := 0; i < b.N; i++ { + k.SignMimc7(msgs[i%n]) + } + }) + + for i := 0; i < n; i++ { + sigs[i%n] = k.SignMimc7(msgs[i%n]) + } + + b.Run("VerifyMimc7", func(b *testing.B) { + for i := 0; i < b.N; i++ { + pk.VerifyMimc7(msgs[i%n], sigs[i%n]) + } + }) + + b.Run("SignPoseidon", func(b *testing.B) { + for i := 0; i < b.N; i++ { + k.SignPoseidon(msgs[i%n]) + } + }) + + for i := 0; i < n; i++ { + sigs[i%n] = k.SignPoseidon(msgs[i%n]) + } + + b.Run("VerifyPoseidon", func(b *testing.B) { + for i := 0; i < b.N; i++ { + pk.VerifyPoseidon(msgs[i%n], sigs[i%n]) + } + }) +}