github.com/incognitochain/go-incognito-sdk@v1.0.1/privacy/zkp/serialnumbernoprivacy/serialnumbernoprivacy_test.go (about) 1 package serialnumbernoprivacy 2 3 import ( 4 "fmt" 5 "github.com/incognitochain/go-incognito-sdk/privacy" 6 "github.com/incognitochain/go-incognito-sdk/privacy/zkp/utils" 7 "github.com/stretchr/testify/assert" 8 "testing" 9 ) 10 11 func TestPKSNNoPrivacy(t *testing.T) { 12 for i := 0; i < 1000; i++ { 13 // prepare witness for Serial number no privacy protocol 14 sk := privacy.GeneratePrivateKey(privacy.RandBytes(10)) 15 skScalar := new(privacy.Scalar).FromBytesS(sk) 16 if skScalar.ScalarValid() == false { 17 fmt.Println("Invalid key value") 18 } 19 20 pk := privacy.GeneratePublicKey(sk) 21 pkPoint, err := new(privacy.Point).FromBytesS(pk) 22 if err != nil { 23 fmt.Println("Invalid point key valu") 24 } 25 SND := privacy.RandomScalar() 26 27 serialNumber := new(privacy.Point).Derive(privacy.PedCom.G[privacy.PedersenPrivateKeyIndex], skScalar, SND) 28 29 witness := new(SNNoPrivacyWitness) 30 witness.Set(serialNumber, pkPoint, SND, skScalar) 31 32 // proving 33 proof, err := witness.Prove(nil) 34 assert.Equal(t, nil, err) 35 36 //validate sanity proof 37 isValidSanity := proof.ValidateSanity() 38 assert.Equal(t, true, isValidSanity) 39 40 // verify proof 41 res, err := proof.Verify(nil) 42 assert.Equal(t, true, res) 43 assert.Equal(t, nil, err) 44 45 // convert proof to bytes array 46 proofBytes := proof.Bytes() 47 assert.Equal(t, utils.SnNoPrivacyProofSize, len(proofBytes)) 48 49 // new SNPrivacyProof to set bytes array 50 proof2 := new(SNNoPrivacyProof).Init() 51 err = proof2.SetBytes(proofBytes) 52 assert.Equal(t, nil, err) 53 assert.Equal(t, proof, proof2) 54 55 // verify proof 56 res2, err := proof2.Verify(nil) 57 assert.Equal(t, true, res2) 58 assert.Equal(t, nil, err) 59 } 60 61 }