@@ -122,6 +122,30 @@ func TestEncodeDecodeWIF(t *testing.T) {
122122 wif : "5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTj" ,
123123 err : address .ErrChecksumMismatch ,
124124 },
125+ {
126+ // A WIF encoding a private key of zero, which is
127+ // outside the valid range [1, N-1] for a secp256k1
128+ // private key.
129+ name : "decodeZeroPrivKeyWif" ,
130+ wif : "5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAbuatmU" ,
131+ err : ErrMalformedPrivateKey ,
132+ },
133+ {
134+ // A WIF encoding a private key equal to the group order
135+ // N, which is outside the valid range [1, N-1].
136+ name : "decodeOrderNPrivKeyWif" ,
137+ wif : "5Km2kuu7vtFDPpxywn4u3NLpbr5jKpTB3jsuDU2KYEqetwr388P" ,
138+ err : ErrMalformedPrivateKey ,
139+ },
140+ {
141+ // A WIF encoding a private key of N+5, which is outside
142+ // the valid range [1, N-1]. Before validation was
143+ // added, this was silently reduced modulo N and decoded
144+ // to a different private key (5) without any error.
145+ name : "decodeAboveOrderNPrivKeyWif" ,
146+ wif : "5Km2kuu7vtFDPpxywn4u3NLpbr5jKpTB3jsuDU2KYEqeuVhzTbv" ,
147+ err : ErrMalformedPrivateKey ,
148+ },
125149 }
126150
127151 for _ , invalidCase := range invalidDecodeCases {
0 commit comments