github.com/dusk-network/dusk-crypto@v0.1.3/rangeproof/pedersen/pedersen_test.go (about) 1 package pedersen_test 2 3 import ( 4 "bytes" 5 "math/big" 6 "testing" 7 8 ristretto "github.com/bwesterb/go-ristretto" 9 "github.com/dusk-network/dusk-crypto/rangeproof/pedersen" 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestPedersenScalar(t *testing.T) { 14 ped := pedersen.New([]byte("random data")) 15 16 s := ristretto.Scalar{} 17 s.Rand() 18 19 commitment := ped.CommitToScalar(s) 20 21 assert.NotEqual(t, nil, commitment) 22 23 } 24 25 func TestEncodeDecode(t *testing.T) { 26 s := ristretto.Scalar{} 27 s.Rand() 28 29 c := pedersen.New([]byte("rand")).CommitToScalar(s) 30 assert.True(t, c.Equals(c)) 31 32 buf := &bytes.Buffer{} 33 err := c.Encode(buf) 34 assert.Nil(t, err) 35 36 var decC pedersen.Commitment 37 err = decC.Decode(buf) 38 assert.Nil(t, err) 39 40 ok := decC.EqualValue(c) 41 assert.True(t, ok) 42 43 } 44 45 func TestPedersenVector(t *testing.T) { 46 ped := pedersen.New([]byte("some data")) 47 // ped.BaseVector.Compute(4) // since values are not precomputed, we will compute two of them here 48 var one ristretto.Scalar 49 one.SetOne() 50 51 var two ristretto.Scalar 52 two.SetBigInt(big.NewInt(2)) 53 54 vec1 := []ristretto.Scalar{one, one} 55 vec2 := []ristretto.Scalar{two, two} 56 57 comm := ped.CommitToVectors(vec1, vec2) 58 59 blind := comm.BlindingFactor 60 61 H0 := ped.BlindPoint // blind 62 H1 := ped.BaseVector.Bases[0] 63 H2 := ped.BaseVector.Bases[1] 64 65 ped = pedersen.New(append(ped.GenData, uint8(1))) 66 67 ped.BaseVector.Compute(4) // since values are not precomputed, we will compute two of them here 68 69 B0 := ped.BaseVector.Bases[0] 70 B1 := ped.BaseVector.Bases[1] 71 72 var H0blind ristretto.Point 73 H0blind.ScalarMult(&H0, &blind) 74 75 var H1one ristretto.Point 76 H1one.ScalarMult(&H1, &one) 77 78 var H2one ristretto.Point 79 H2one.ScalarMult(&H2, &one) 80 81 var B0two ristretto.Point 82 B0two.ScalarMult(&B0, &two) 83 84 var B1two ristretto.Point 85 B1two.ScalarMult(&B1, &two) 86 87 var expected ristretto.Point 88 expected.Add(&H0blind, &H1one) 89 expected.Add(&expected, &H2one) 90 expected.Add(&expected, &B0two) 91 expected.Add(&expected, &B1two) 92 93 assert.Equal(t, expected.Bytes(), []byte(comm.Value.Bytes())) 94 }