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  }