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 }