@@ -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