From 031437decf99b92d791e860934faa8074b9df81e Mon Sep 17 00:00:00 2001 From: "Owain G. Ainsworth" Date: Tue, 18 Jun 2013 00:17:32 +0100 Subject: [PATCH] test 0 length numbers (disallowed) and coordinates of 0 (also) --- signature_test.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ test_coverage.txt | 8 ++++---- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/signature_test.go b/signature_test.go index 91ee9963..c52b3425 100644 --- a/signature_test.go +++ b/signature_test.go @@ -205,6 +205,51 @@ var signatureTests = []signatureTest{ }, isValid: false, }, + signatureTest{ + name: "0 len X.", + sig: []byte{0x30, 0x24, 0x02, 0x00, 0x02, 0x20, 0x18, 0x15, + 0x22, 0xec, 0x8e, 0xca, 0x07, 0xde, 0x48, 0x60, 0xa4, + 0xac, 0xdd, 0x12, 0x90, 0x9d, 0x83, 0x1c, 0xc5, 0x6c, + 0xbb, 0xac, 0x46, 0x22, 0x08, 0x22, 0x21, 0xa8, 0x76, + 0x8d, 0x1d, 0x09, + }, + isValid: false, + }, + signatureTest{ + name: "0 len Y.", + sig: []byte{0x30, 0x24, 0x02, 0x20, 0x4e, 0x45, 0xe1, 0x69, + 0x32, 0xb8, 0xaf, 0x51, 0x49, 0x61, 0xa1, 0xd3, 0xa1, + 0xa2, 0x5f, 0xdf, 0x3f, 0x4f, 0x77, 0x32, 0xe9, 0xd6, + 0x24, 0xc6, 0xc6, 0x15, 0x48, 0xab, 0x5f, 0xb8, 0xcd, + 0x41, 0x02, 0x00, + }, + isValid: false, + }, + // We don't test for negative numbers here because there isn't a way + // that is the same between openssl and go that will mark a number as + // negative. The Go ASN.1 parser marks numbers as negative when openssl + // does not (it doesn't handle negative numbers that I can tell at all. + // therefore we only check for the coordinates being zero. + signatureTest{ + name: "X == 0", + sig: []byte{0x30, 0x25, 0x02, 0x01, 0x00, 0x02, 0x20, 0x18, + 0x15, 0x22, 0xec, 0x8e, 0xca, 0x07, 0xde, 0x48, 0x60, + 0xa4, 0xac, 0xdd, 0x12, 0x90, 0x9d, 0x83, 0x1c, 0xc5, + 0x6c, 0xbb, 0xac, 0x46, 0x22, 0x08, 0x22, 0x21, 0xa8, + 0x76, 0x8d, 0x1d, 0x09, + }, + isValid: false, + }, + signatureTest{ + name: "Y == 0.", + sig: []byte{0x30, 0x25, 0x02, 0x20, 0x4e, 0x45, 0xe1, 0x69, + 0x32, 0xb8, 0xaf, 0x51, 0x49, 0x61, 0xa1, 0xd3, 0xa1, + 0xa2, 0x5f, 0xdf, 0x3f, 0x4f, 0x77, 0x32, 0xe9, 0xd6, + 0x24, 0xc6, 0xc6, 0x15, 0x48, 0xab, 0x5f, 0xb8, 0xcd, + 0x41, 0x02, 0x01, 0x00, + }, + isValid: false, + }, } func TestSignatures(t *testing.T) { diff --git a/test_coverage.txt b/test_coverage.txt index 50b6fed5..92ee58d5 100644 --- a/test_coverage.txt +++ b/test_coverage.txt @@ -1,20 +1,20 @@ +github.com/conformal/btcec/signature.go ParseSignature 100.00% (41/41) github.com/conformal/btcec/btcec.go KoblitzCurve.doubleJacobian 100.00% (21/21) github.com/conformal/btcec/btcec.go KoblitzCurve.ScalarMult 100.00% (9/9) -github.com/conformal/btcec/btcec.go KoblitzCurve.IsOnCurve 100.00% (7/7) github.com/conformal/btcec/btcec.go initS256 100.00% (7/7) +github.com/conformal/btcec/btcec.go KoblitzCurve.IsOnCurve 100.00% (7/7) github.com/conformal/btcec/btcec.go zForAffine 100.00% (4/4) -github.com/conformal/btcec/btcec.go KoblitzCurve.QPlus1Div4 100.00% (3/3) github.com/conformal/btcec/btcec.go KoblitzCurve.Add 100.00% (3/3) +github.com/conformal/btcec/btcec.go KoblitzCurve.QPlus1Div4 100.00% (3/3) github.com/conformal/btcec/btcec.go S256 100.00% (2/2) github.com/conformal/btcec/btcec.go KoblitzCurve.Params 100.00% (1/1) github.com/conformal/btcec/btcec.go KoblitzCurve.ScalarBaseMult 100.00% (1/1) github.com/conformal/btcec/btcec.go initAll 100.00% (1/1) github.com/conformal/btcec/pubkey.go isOdd 100.00% (1/1) github.com/conformal/btcec/pubkey.go ParsePubKey 96.88% (31/32) -github.com/conformal/btcec/signature.go ParseSignature 95.12% (39/41) github.com/conformal/btcec/btcec.go KoblitzCurve.addJacobian 91.67% (55/60) github.com/conformal/btcec/btcec.go KoblitzCurve.affineFromJacobian 90.00% (9/10) github.com/conformal/btcec/btcec.go KoblitzCurve.Double 0.00% (0/2) -github.com/conformal/btcec ------------------------------- 94.63% (194/205) +github.com/conformal/btcec ------------------------------- 95.61% (196/205)