From c356aefc9dd00d10dbc22b72576f3bf1c140b87d Mon Sep 17 00:00:00 2001 From: chris erway Date: Tue, 7 Dec 2021 13:27:47 -0500 Subject: [PATCH 1/4] TestEcdsa: fix flaky "tampering" of public key --- data/transactions/logic/evalCrypto_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/transactions/logic/evalCrypto_test.go b/data/transactions/logic/evalCrypto_test.go index 25a89992ae..5bd035000b 100644 --- a/data/transactions/logic/evalCrypto_test.go +++ b/data/transactions/logic/evalCrypto_test.go @@ -212,7 +212,7 @@ byte 0x%s &&` pkTampered1 := make([]byte, len(pk)) copy(pkTampered1, pk) - pkTampered1[0] = 0 + pkTampered1[0] += byte(1) pkTampered2 := make([]byte, len(pk)) copy(pkTampered2, pk[1:]) From e35fa51430a853eaf3cb6eaf64cb30d454f73204 Mon Sep 17 00:00:00 2001 From: chris erway Date: Tue, 7 Dec 2021 13:36:10 -0500 Subject: [PATCH 2/4] clarify byte overflow with comment --- data/transactions/logic/evalCrypto_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/transactions/logic/evalCrypto_test.go b/data/transactions/logic/evalCrypto_test.go index 5bd035000b..740726851a 100644 --- a/data/transactions/logic/evalCrypto_test.go +++ b/data/transactions/logic/evalCrypto_test.go @@ -212,7 +212,7 @@ byte 0x%s &&` pkTampered1 := make([]byte, len(pk)) copy(pkTampered1, pk) - pkTampered1[0] += byte(1) + pkTampered1[0] += byte(1) // intentional overflow pkTampered2 := make([]byte, len(pk)) copy(pkTampered2, pk[1:]) From 9d3def3f228913e185b5f6d30438275bdb729da9 Mon Sep 17 00:00:00 2001 From: chris erway Date: Tue, 7 Dec 2021 13:42:39 -0500 Subject: [PATCH 3/4] fix another tampered[0] = 0 --- data/transactions/logic/evalCrypto_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/transactions/logic/evalCrypto_test.go b/data/transactions/logic/evalCrypto_test.go index 740726851a..308885acf6 100644 --- a/data/transactions/logic/evalCrypto_test.go +++ b/data/transactions/logic/evalCrypto_test.go @@ -256,7 +256,7 @@ ecdsa_verify Secp256k1 rTampered := make([]byte, len(r)) copy(rTampered, pk) - rTampered[0] = 0 + rTampered[0] += byte(1) // intentional overflow var verifyTests = []struct { data string From 710037e0e18e8410c02b8ac16f7dfb693316a0ee Mon Sep 17 00:00:00 2001 From: chris erway Date: Wed, 8 Dec 2021 15:50:41 -0500 Subject: [PATCH 4/4] fix ecdsa decompress pkTampered2 test case --- data/transactions/logic/evalCrypto_test.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/data/transactions/logic/evalCrypto_test.go b/data/transactions/logic/evalCrypto_test.go index 308885acf6..5362fbf4cc 100644 --- a/data/transactions/logic/evalCrypto_test.go +++ b/data/transactions/logic/evalCrypto_test.go @@ -212,9 +212,9 @@ byte 0x%s &&` pkTampered1 := make([]byte, len(pk)) copy(pkTampered1, pk) - pkTampered1[0] += byte(1) // intentional overflow - pkTampered2 := make([]byte, len(pk)) - copy(pkTampered2, pk[1:]) + pkTampered1[0] = 0 // first byte is a prefix of either 0x02 or 0x03 + pkTampered2 := make([]byte, len(pk)-1) // must be 33 bytes length + copy(pkTampered2, pk) var decompressTests = []struct { key []byte @@ -224,8 +224,9 @@ byte 0x%s {pkTampered1, false}, {pkTampered2, false}, } - for _, test := range decompressTests { + for i, test := range decompressTests { t.Run(fmt.Sprintf("decompress/pass=%v", test.pass), func(t *testing.T) { + t.Log("decompressTests i", i) src := fmt.Sprintf(source, hex.EncodeToString(test.key), hex.EncodeToString(x), hex.EncodeToString(y)) if test.pass { testAccepts(t, src, 5) @@ -255,7 +256,7 @@ ecdsa_verify Secp256k1 v := int(sign[64]) rTampered := make([]byte, len(r)) - copy(rTampered, pk) + copy(rTampered, r) rTampered[0] += byte(1) // intentional overflow var verifyTests = []struct {