github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/account/signature_test.go (about) 1 package account_test 2 3 import ( 4 "fmt" 5 "github.com/sixexorg/magnetic-ring/account" 6 "github.com/sixexorg/magnetic-ring/common" 7 "github.com/sixexorg/magnetic-ring/core/mainchain/types" 8 "github.com/sixexorg/magnetic-ring/crypto" 9 "github.com/sixexorg/magnetic-ring/signer" 10 "testing" 11 ) 12 13 func TestSignTransaction(t *testing.T) { 14 mgr, err := account.NewManager() 15 if err != nil { 16 fmt.Println("err0001-->", err) 17 return 18 } 19 password := "jjjdddkkk" 20 21 normalAccount, err := mgr.GenerateNormalAccount(password) 22 address := normalAccount.Address() 23 24 //muladdres,err := common.ToAddress("ct18x9yzad9Vx3uPyJpN65cStK813Y2S6UC") 25 muladdres, err := mgr.CreateMultipleAccount(address, nil) 26 27 tx := new(types.Transaction) 28 tx.TxData = new(types.TxData) 29 tx.TxData.From = muladdres.Address() 30 tx.Raw = []byte("this is a test raw buf") 31 32 tx.Templt = common.NewSigTmplt() 33 34 maue := make(common.Maus, 0) 35 mau := common.Mau{} 36 mau.M = 1 37 mau.Pubks = make([]common.PubHash, 0) 38 39 pubkstr := "0445d75cecf5e1ecb74ca90e3e1cec63dd00984c34b81254357697b31a43fb5663eba021949436149128a7f14635b0c953b197b42e445a4407e02c099d3c801a68" 40 puhash := common.PubHash{} 41 42 pkbuf, _ := common.Hex2Bytes(pubkstr) 43 44 t.Logf("pkbuflen=%d\n", len(pkbuf)) 45 46 copy(puhash[:], pkbuf[:]) 47 48 mau.Pubks = append(mau.Pubks, puhash) 49 50 maue = append(maue, mau) 51 52 tx.Templt.SigData = append(tx.Templt.SigData, &maue) 53 54 tx.Sigs = new(common.SigPack) 55 56 err = signer.SignTransaction(mgr, &address, tx, password) 57 if err != nil { 58 fmt.Println("oops,got an err-->", err) 59 } 60 61 rt, err := tx.VerifySignature() 62 if err != nil { 63 t.Errorf("verify err-->%v\n", err) 64 return 65 } 66 67 t.Logf("verify result-->%v\n", rt) 68 69 //address2,err := common.ToAddress("ct0x2x4jQyMfNrKn5h2ZqYb1m16gymxkmp7") 70 71 //err = signer.SignTransaction(mgr,&address2,tx,password) 72 //if err != nil { 73 // fmt.Println("oops,got an err-->",err) 74 //} 75 76 //ma,err := mgr.GetMultipleAccount(address,muladdres,password) 77 //if err != nil { 78 // t.Error("err occured when GetMultipleAccount-->",err) 79 // return 80 //} 81 82 //maiml := ma.(*account.MultipleAccountImpl) 83 84 tx.Raw = []byte("this is a test raw buf") 85 86 //signresult,err := signer.VerifyTransaction(maiml.Maus,tx) 87 88 //if err != nil { 89 // t.Error("sign error-->",signresult) 90 // return 91 //} 92 // 93 //fmt.Printf("sign result-->%t\n",signresult) 94 95 } 96 97 func TestVerifySig(t *testing.T) { 98 pubkstt := "04723F8F4DC833D7A9EC82BAE72F09B18650114A69FC87A589C4F64A2A1343A9109E0F1E5E1C4E7D113CCE5520BE34BCA41857966C68EF5E61AFDC7D3B881D3F2E" 99 100 pubkbuf, _ := common.Hex2Bytes(pubkstt) 101 102 t.Logf("pubkbuflen======>%d\n", len(pubkbuf)) 103 104 pubk, err := crypto.UnmarshalPubkey(pubkbuf) 105 106 if err != nil { 107 t.Errorf("err-->%v\n", err) 108 return 109 } 110 111 rawbuf := []byte("hello world!") 112 113 //buf := common.Sha256(rawbuf) 114 //buf := sha256.Sum256(rawbuf) 115 116 t.Logf("the buf hashed -->%X\n", rawbuf) 117 118 t.Logf("rawbuf--->%x\n", rawbuf) 119 120 sig := "2aaef1c6f7619bc0725a0d3b509241a8d30d44fdac90d98f5ae81a8d75ec26ad0a8fc00246e2eac6bd9d1ece035b962187622910bf0c9e3d762a3b913123163e" 121 122 sigbuf, _ := common.Hex2Bytes(sig) 123 124 result, err := pubk.Verify(rawbuf, sigbuf) 125 if err != nil { 126 t.Errorf("err-->%v\n", err) 127 return 128 } 129 130 t.Logf("restult-->%v\n", result) 131 132 }