aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/signature_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/signature_test.go')
-rw-r--r--crypto/signature_test.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/crypto/signature_test.go b/crypto/signature_test.go
index 5e2efc7e0..aecff76bf 100644
--- a/crypto/signature_test.go
+++ b/crypto/signature_test.go
@@ -75,6 +75,16 @@ func TestVerifySignature(t *testing.T) {
}
}
+// This test checks that VerifySignature rejects malleable signatures with s > N/2.
+func TestVerifySignatureMalleable(t *testing.T) {
+ sig := hexutil.MustDecode("0x638a54215d80a6713c8d523a6adc4e6e73652d859103a36b700851cb0e61b66b8ebfc1a610c57d732ec6e0a8f06a9a7a28df5051ece514702ff9cdff0b11f454")
+ key := hexutil.MustDecode("0x03ca634cae0d49acb401d8a4c6b6fe8c55b70d115bf400769cc1400f3258cd3138")
+ msg := hexutil.MustDecode("0xd301ce462d3e639518f482c7f03821fec1e602018630ce621e1e7851c12343a6")
+ if VerifySignature(key, msg, sig) {
+ t.Error("VerifySignature returned true for malleable signature")
+ }
+}
+
func TestDecompressPubkey(t *testing.T) {
key, err := DecompressPubkey(testpubkeyc)
if err != nil {