Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit fe93b61

Browse files
author
shadowy-pycoder
committed
Added tests for message verification errors
1 parent 1af5e7a commit fe93b61

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

‎bmt/main_test.go‎

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,3 +746,73 @@ func TestVerifyMessage(t *testing.T) {
746746
})
747747
}
748748
}
749+
750+
func TestVerifyMessageErr(t *testing.T) {
751+
var testcases = []struct {
752+
name string
753+
message *BitcoinMessage
754+
electrum bool
755+
errMsg string
756+
}{
757+
{
758+
name: "signature decode error",
759+
message: &BitcoinMessage{
760+
Address: "1JeARtmwjd8smhvVcS7PW9dG7rhDXJZ4ao",
761+
Data: Message,
762+
Signature: []byte("tests")},
763+
electrum: false,
764+
errMsg: "decode error",
765+
},
766+
{
767+
name: "signature is too short",
768+
message: &BitcoinMessage{
769+
Address: "1JeARtmwjd8smhvVcS7PW9dG7rhDXJZ4ao",
770+
Data: Message,
771+
Signature: []byte("test")},
772+
electrum: false,
773+
errMsg: "signature must be 65 bytes long",
774+
},
775+
{
776+
name: "signature has an unsupported header",
777+
message: &BitcoinMessage{
778+
Address: "1JeARtmwjd8smhvVcS7PW9dG7rhDXJZ4ao",
779+
Data: Message,
780+
Signature: []byte("LwM/bGa3Vl4lZF+G12+gMMw9AeowJq0+UHMW557DuP3LcVafaeiX91w6u1/aj9TNj6/3GkHsqYtMl2X40YHL/qQ=")},
781+
electrum: false,
782+
errMsg: "header byte out of range",
783+
},
784+
{
785+
name: "signature r-value is out of range",
786+
message: &BitcoinMessage{
787+
Address: "1JeARtmwjd8smhvVcS7PW9dG7rhDXJZ4ao",
788+
Data: Message,
789+
Signature: []byte("IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")},
790+
electrum: false,
791+
errMsg: "r-value out of range",
792+
},
793+
{
794+
name: "signature s-value is out of range",
795+
message: &BitcoinMessage{
796+
Address: "1JeARtmwjd8smhvVcS7PW9dG7rhDXJZ4ao",
797+
Data: Message,
798+
Signature: []byte("IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")},
799+
electrum: false,
800+
errMsg: "s-value out of range",
801+
},
802+
{
803+
name: "signature has a header of Taproot address type",
804+
message: &BitcoinMessage{
805+
Address: "1JeARtmwjd8smhvVcS7PW9dG7rhDXJZ4ao",
806+
Data: Message,
807+
Signature: []byte("LgM/bGa3Vl4lZF+G12+gMMw9AeowJq0+UHMW557DuP3LcVafaeiX91w6u1/aj9TNj6/3GkHsqYtMl2X40YHL/qQ=")},
808+
electrum: false,
809+
errMsg: "unknown address type",
810+
},
811+
}
812+
for _, testcase := range testcases {
813+
t.Run(testcase.name, func(t *testing.T) {
814+
_, err := VerifyMessage(testcase.message, testcase.electrum)
815+
require.EqualError(t, err, testcase.errMsg)
816+
})
817+
}
818+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /