github.com/dusk-network/dusk-crypto@v0.1.3/mlsag/proof_test.go (about) 1 package mlsag 2 3 import ( 4 "testing" 5 6 ristretto "github.com/bwesterb/go-ristretto" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestAddDecoys(t *testing.T) { 11 p := Proof{} 12 assert.Equal(t, 0, len(p.pubKeysMatrix)) 13 14 for i := 0; i < 100; i++ { 15 p.AddDecoy(generateDecoy(2)) 16 assert.Equal(t, i+1, len(p.pubKeysMatrix)) 17 } 18 } 19 20 func TestAddSecretKeys(t *testing.T) { 21 22 // Add secret key, then check if corresponding pubKey gets added 23 p := Proof{} 24 25 decoy := generateDecoy(2) 26 p.AddDecoy(decoy) 27 assert.Equal(t, 1, len(p.pubKeysMatrix)) 28 29 realKeys := generateSks(2) 30 for i := range realKeys { 31 p.AddSecret(realKeys[i]) 32 } 33 34 p.addSignerPubKey() 35 36 assert.Equal(t, 2, len(p.pubKeysMatrix)) 37 38 // Check that the privKeys match the pubkeys 39 var firstPubKey, secondPubKey ristretto.Point 40 firstPubKey.ScalarMultBase(&realKeys[0]) 41 secondPubKey.ScalarMultBase(&realKeys[1]) 42 43 assert.True(t, p.pubKeysMatrix[1].keys[0] == firstPubKey) 44 assert.True(t, p.pubKeysMatrix[1].keys[1] == secondPubKey) 45 } 46 47 func generateSks(n int) PrivKeys { 48 p := PrivKeys{} 49 50 for i := 0; i < n; i++ { 51 var x ristretto.Scalar 52 x.Rand() 53 p.AddPrivateKey(x) 54 } 55 return p 56 }