@@ -61,6 +61,13 @@ type testCase struct {
6161 wantSuccess bool
6262}
6363
64+ func signAndPack (tb testing.TB , priv * ecdsa.PrivateKey , hash [32 ]byte ) []byte {
65+ tb .Helper ()
66+ r , s , err := ecdsa .Sign (rand .Reader , priv , hash [:])
67+ require .NoError (tb , err , "ecdsa.Sign()" )
68+ return Pack (hash , r , s , & priv .PublicKey )
69+ }
70+
6471func TestPrecompile (t * testing.T ) {
6572 assert .Equal (t , params .P256VerifyGas , Precompile {}.RequiredGas (nil ), "RequiredGas()" )
6673
@@ -100,8 +107,7 @@ func TestPrecompile(t *testing.T) {
100107 _ , err := rand .Read (toSign [:])
101108 require .NoErrorf (t , err , "crypto/rand.Read(%T)" , toSign )
102109
103- in , err := Sign (priv , toSign )
104- require .NoErrorf (t , err , "Sign([P256 key], %#x)" , toSign )
110+ in := signAndPack (t , priv , toSign )
105111 tests = append (tests , testCase {
106112 name : "fuzz_valid" ,
107113 in : in ,
@@ -256,24 +262,3 @@ func TestViaEVM(t *testing.T) {
256262 require .NoError (t , err )
257263 assert .Equal (t , []byte {31 : 1 }, got )
258264}
259-
260- // A badCurve will cause [ecdsa.Sign] to return an error due to a zero
261- // parameter.
262- type badCurve struct {
263- elliptic.Curve
264- }
265-
266- func (badCurve ) Params () * elliptic.CurveParams {
267- return & elliptic.CurveParams {
268- N : big .NewInt (0 ),
269- }
270- }
271-
272- func TestSignPropagatesError (t * testing.T ) {
273- priv , err := ecdsa .GenerateKey (elliptic .P256 (), rand .Reader )
274- require .NoError (t , err , "ecdsa.GenerateKey()" )
275- priv .Curve = badCurve {}
276-
277- _ , err = Sign (priv , [32 ]byte {})
278- require .ErrorContains (t , err , "zero" , "Sign([private key with zero-param curve])" )
279- }
0 commit comments