mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-12-29 10:05:16 +00:00
67 lines
1.8 KiB
Go
67 lines
1.8 KiB
Go
|
//
|
||
|
// Copyright Coinbase, Inc. All Rights Reserved.
|
||
|
//
|
||
|
// SPDX-License-Identifier: Apache-2.0
|
||
|
//
|
||
|
|
||
|
package v0
|
||
|
|
||
|
import (
|
||
|
"crypto/sha256"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/btcsuite/btcd/btcec"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
|
||
|
"source.quilibrium.com/quilibrium/monorepo/nekryptology/pkg/core/curves"
|
||
|
)
|
||
|
|
||
|
func TestSign(t *testing.T) {
|
||
|
params, err := NewParams(btcec.S256(), curves.NewK256Scalar())
|
||
|
require.NoError(t, err)
|
||
|
alice := NewAlice(params)
|
||
|
bob := NewBob(params)
|
||
|
|
||
|
alicePipe, bobPipe := NewPipeWrappers()
|
||
|
require.NoError(t, testDKG(alice, bob, alicePipe, bobPipe))
|
||
|
require.NoError(t, testSign(alice, bob, alicePipe, bobPipe))
|
||
|
}
|
||
|
|
||
|
func BenchmarkSign(b *testing.B) {
|
||
|
params, err := NewParams(btcec.S256(), curves.NewK256Scalar())
|
||
|
require.NoError(b, err)
|
||
|
alice := NewAlice(params)
|
||
|
bob := NewBob(params)
|
||
|
alicePipe, bobPipe := NewPipeWrappers()
|
||
|
require.NoError(b, testDKG(alice, bob, alicePipe, bobPipe))
|
||
|
b.ResetTimer()
|
||
|
bytes := 0
|
||
|
for n := 0; n < b.N; n++ {
|
||
|
alicePipe, bobPipe = NewPipeWrappers()
|
||
|
require.NoError(b, testSign(alice, bob, alicePipe, bobPipe))
|
||
|
bytes += alicePipe.exchanged
|
||
|
}
|
||
|
b.ReportMetric(float64(bytes)/float64(b.N), "bytes/op")
|
||
|
}
|
||
|
|
||
|
// Helper function that runs signing
|
||
|
func testSign(alice *Alice, bob *Bob, alicePipe *pipeWrapper, bobPipe *pipeWrapper) error {
|
||
|
// ^^^ a bit clunky that we have to pass these in, but i don't see an easier way as far as benchmarking the bytes
|
||
|
errors := make(chan error, 2) // warning: if one party errors, the other will sit there forever. add timeouts.
|
||
|
|
||
|
m := []byte("Our mission is to increase economic freedom in the world.")
|
||
|
digest := sha256.Sum256(m)
|
||
|
go func() {
|
||
|
errors <- alice.Sign(digest[:], alicePipe)
|
||
|
}()
|
||
|
go func() {
|
||
|
errors <- bob.Sign(digest[:], bobPipe)
|
||
|
}()
|
||
|
for i := 0; i < 2; i++ {
|
||
|
if err := <-errors; err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
return nil
|
||
|
}
|