BLS: simple sign and verify using blst library

This commit is contained in:
Daniel Cason
2022-04-19 14:38:48 +02:00
parent d12b3538a8
commit 006ebf50df

View File

@@ -3,6 +3,7 @@ package bls
import (
"testing"
"github.com/tendermint/tendermint/crypto/bls/blst"
"github.com/tendermint/tendermint/crypto/ed25519"
)
@@ -26,6 +27,26 @@ func TestEd25519SignVerify(t *testing.T) {
}
}
func TestBlstSignVerify(t *testing.T) {
m := []byte("a test message to be signed")
privKey := blst.GenPrivKey()
pubKey := privKey.PubKey()
sig, err := privKey.Sign(m)
if err != nil {
t.Error("Unexpected nil signature or error", m, sig, err)
}
if !pubKey.VerifySignature(m, sig) {
t.Error("Failed to verify signature produced by the key", m, sig)
}
if pubKey.VerifySignature(scrambleBytes(m), sig) {
t.Error("Unexpected to verify scrambled message", scrambleBytes(m), sig)
}
if pubKey.VerifySignature(m, scrambleBytes(sig)) {
t.Error("Unexpected to verify scrambled signature", m, scrambleBytes(sig))
}
}
// Scrambles a byte array, currently just flipping a bit.
// TODO: implement a more complex scrambling method.
func scrambleBytes(b []byte) []byte {