github.com/piotrnar/gocoin@v0.0.0-20240512203912-faa0448c5e96/lib/secp256k1/multi_test.go (about)

     1  package secp256k1
     2  
     3  import (
     4  	"encoding/hex"
     5  	"math/rand"
     6  	"testing"
     7  )
     8  
     9  /*
    10  Test strings, that will cause failure
    11  */
    12  
    13  //problem seckeys
    14  var _test_seckey []string = []string{
    15  	"08efb79385c9a8b0d1c6f5f6511be0c6f6c2902963d874a3a4bacc18802528d3",
    16  	"78298d9ecdc0640c9ae6883201a53f4518055442642024d23c45858f45d0c3e6",
    17  	"04e04fe65bfa6ded50a12769a3bd83d7351b2dbff08c9bac14662b23a3294b9e",
    18  	"2f5141f1b75747996c5de77c911dae062d16ae48799052c04ead20ccd5afa113",
    19  }
    20  
    21  func RandBytes(n int) []byte {
    22  	b := make([]byte, n, n)
    23  
    24  	for i := 0; i < n; i++ {
    25  		b[i] = byte(rand.Intn(256))
    26  	}
    27  	return b
    28  }
    29  
    30  //tests some keys that should work
    31  func Test_Abnormal_Keys1(t *testing.T) {
    32  
    33  	for i := 0; i < len(_test_seckey); i++ {
    34  
    35  		seckey1, _ := hex.DecodeString(_test_seckey[i])
    36  
    37  		pubkey1 := make([]byte, 33)
    38  
    39  		ret := BaseMultiply(seckey1, pubkey1)
    40  
    41  		if ret == false {
    42  			t.Errorf("base multiplication fail")
    43  		}
    44  		//func BaseMultiply(k, out []byte) bool {
    45  
    46  		var pubkey2 XY
    47  		ret = pubkey2.ParsePubkey(pubkey1)
    48  		if ret == false {
    49  			t.Errorf("pubkey parse fail")
    50  		}
    51  
    52  		if pubkey2.IsValid() == false {
    53  			t.Errorf("pubkey is not valid")
    54  		}
    55  
    56  	}
    57  }
    58  
    59  //tests random keys
    60  func Test_Abnormal_Keys2(t *testing.T) {
    61  	for i := 0; i < 64*1024; i++ {
    62  
    63  		seckey1 := RandBytes(32)
    64  
    65  		pubkey1 := make([]byte, 33)
    66  
    67  		ret := BaseMultiply(seckey1, pubkey1)
    68  
    69  		if ret == false {
    70  			t.Error("base multiplication fail")
    71  		}
    72  		//func BaseMultiply(k, out []byte) bool {
    73  
    74  		var pubkey2 XY
    75  		ret = pubkey2.ParsePubkey(pubkey1)
    76  		if ret == false {
    77  			t.Error("pubkey parse fail")
    78  		}
    79  
    80  		if pubkey2.IsValid() == false {
    81  			t.Error("pubkey is not valid for", hex.EncodeToString(seckey1))
    82  		}
    83  	}
    84  }