BLS: simple sign and verify using ostracon library

* FIXME: when a signature verification fails, an error is printed.
This commit is contained in:
Daniel Cason
2022-04-19 14:54:29 +02:00
parent 18ad380271
commit a5f9732ba0
2 changed files with 22 additions and 1 deletions
+1 -1
View File
@@ -359,7 +359,7 @@ func TestSignAndValidateBLS12(t *testing.T) {
msg := crypto.CRandBytes(128)
sig, err := privKey.Sign(msg)
require.Nil(t, err)
fmt.Printf("restoring signature: %x\n", sig)
//fmt.Printf("restoring signature: %x\n", sig)
// Test the signature
assert.True(t, pubKey.VerifySignature(msg, sig))
+21
View File
@@ -4,6 +4,7 @@ import (
"testing"
"github.com/tendermint/tendermint/crypto/bls/blst"
"github.com/tendermint/tendermint/crypto/bls/ostracon"
"github.com/tendermint/tendermint/crypto/ed25519"
)
@@ -47,6 +48,26 @@ func TestBlstSignVerify(t *testing.T) {
}
}
func TestOstraconSignVerify(t *testing.T) {
m := []byte("a test message to be signed")
privKey := ostracon.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 {