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  }