github.com/incognitochain/go-incognito-sdk@v1.0.1/privacy/zkp/serialnumberprivacy/serialnumberprivacy_test.go (about) 1 package serialnumberprivacy 2 3 import ( 4 "fmt" 5 "testing" 6 "time" 7 8 "github.com/incognitochain/go-incognito-sdk/privacy" 9 "github.com/incognitochain/go-incognito-sdk/privacy/zkp/utils" 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestPKSNPrivacy(t *testing.T) { 14 for i := 0; i < 1000; i++ { 15 sk := privacy.GeneratePrivateKey(privacy.RandBytes(31)) 16 skScalar := new(privacy.Scalar).FromBytesS(sk) 17 if skScalar.ScalarValid() == false { 18 fmt.Println("Invalid scala key value") 19 } 20 21 SND := privacy.RandomScalar() 22 rSK := privacy.RandomScalar() 23 rSND := privacy.RandomScalar() 24 25 serialNumber := new(privacy.Point).Derive(privacy.PedCom.G[privacy.PedersenPrivateKeyIndex], skScalar, SND) 26 comSK := privacy.PedCom.CommitAtIndex(skScalar, rSK, privacy.PedersenPrivateKeyIndex) 27 comSND := privacy.PedCom.CommitAtIndex(SND, rSND, privacy.PedersenSndIndex) 28 29 stmt := new(SerialNumberPrivacyStatement) 30 stmt.Set(serialNumber, comSK, comSND) 31 32 witness := new(SNPrivacyWitness) 33 witness.Set(stmt, skScalar, rSK, SND, rSND) 34 35 // proving 36 start := time.Now() 37 proof, err := witness.Prove(nil) 38 assert.Equal(t, nil, err) 39 40 end := time.Since(start) 41 fmt.Printf("Serial number proving time: %v\n", end) 42 43 //validate sanity proof 44 isValidSanity := proof.ValidateSanity() 45 assert.Equal(t, true, isValidSanity) 46 47 // convert proof to bytes array 48 proofBytes := proof.Bytes() 49 assert.Equal(t, utils.SnPrivacyProofSize, len(proofBytes)) 50 51 // new SNPrivacyProof to set bytes array 52 proof2 := new(SNPrivacyProof).Init() 53 err = proof2.SetBytes(proofBytes) 54 assert.Equal(t, nil, err) 55 assert.Equal(t, proof, proof2) 56 57 start = time.Now() 58 res, err := proof2.Verify(nil) 59 end = time.Since(start) 60 fmt.Printf("Serial number verification time: %v\n", end) 61 assert.Equal(t, true, res) 62 assert.Equal(t, nil, err) 63 } 64 }