github.com/bytom/bytom@v1.1.2-0.20221014091027-bbcba3df6075/crypto/ed25519/ecmath/point_test.go (about)

     1  package ecmath
     2  
     3  import "testing"
     4  
     5  // base is the ed25519 base point
     6  var base Point
     7  
     8  func init() {
     9  	base.ScMulBase(&One)
    10  }
    11  
    12  func TestBasePointArith(t *testing.T) {
    13  	var base1 Point
    14  	base1.ScMul(&base, &One)
    15  	if !base.ConstTimeEqual(&base1) {
    16  		ebase := base.Encode()
    17  		ebase1 := base1.Encode()
    18  		t.Errorf("base [%x] != 1*base [%x]", ebase[:], ebase1[:])
    19  	}
    20  
    21  	Two := One
    22  	Two.Add(&Two, &One)
    23  
    24  	base2a := base
    25  	base2a.Add(&base2a, &base)
    26  
    27  	base2b := base
    28  	base2b.ScMul(&base2b, &Two)
    29  
    30  	if !base2a.ConstTimeEqual(&base2b) {
    31  		ebase2a := base2a.Encode()
    32  		ebase2b := base2b.Encode()
    33  		t.Errorf("base+base [%x] != 2*base [%x] (1)", ebase2a[:], ebase2b[:])
    34  	}
    35  
    36  	var base2c Point
    37  	base2c.ScMulBase(&Two)
    38  
    39  	if !base2a.ConstTimeEqual(&base2c) {
    40  		ebase2a := base2a.Encode()
    41  		ebase2c := base2c.Encode()
    42  		t.Errorf("base+base [%x] != 2*base [%x] (2)", ebase2a[:], ebase2c[:])
    43  	}
    44  }