github.com/incognitochain/go-incognito-sdk@v1.0.1/privacy/schnorr_test.go (about)

     1  package privacy
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestSchnorrSignature(t *testing.T) {
    10  	for i := 0; i < 100; i++ {
    11  		// generate Schnorr Private Key
    12  
    13  		privKey := new(SchnorrPrivateKey)
    14  		privKey.Set(RandomScalar(), RandomScalar())
    15  
    16  		// random message to sign
    17  		data := RandomScalar()
    18  		// sign on message
    19  		signature, err := privKey.Sign(data.ToBytesS())
    20  		assert.Equal(t, nil, err)
    21  
    22  		// convert signature to bytes array
    23  		signatureBytes := signature.Bytes()
    24  
    25  		// revert bytes array to signature
    26  		signature2 := new(SchnSignature)
    27  		signature2.SetBytes(signatureBytes)
    28  		assert.Equal(t, signature, signature2)
    29  
    30  		// verify the signature with private key
    31  		res := privKey.publicKey.Verify(signature2, data.ToBytesS())
    32  		assert.Equal(t, true, res)
    33  	}
    34  }
    35  
    36  func TestSchnorrSignatureWithoutZ2(t *testing.T) {
    37  	for i := 0; i < 100; i++ {
    38  		// generate Schnorr Private Key
    39  
    40  		privKey := new(SchnorrPrivateKey)
    41  		privKey.Set(RandomScalar(), new(Scalar).FromUint64(0))
    42  
    43  		// random message to sign
    44  		data := RandomScalar()
    45  		// sign on message
    46  		signature, err := privKey.Sign(data.ToBytesS())
    47  		assert.Equal(t, nil, err)
    48  
    49  		// convert signature to bytes array
    50  		signatureBytes := signature.Bytes()
    51  
    52  		// revert bytes array to signature
    53  		signature2 := new(SchnSignature)
    54  		signature2.SetBytes(signatureBytes)
    55  		assert.Equal(t, signature, signature2)
    56  
    57  		// verify the signature with private key
    58  		res := privKey.publicKey.Verify(signature2, data.ToBytesS())
    59  		assert.Equal(t, true, res)
    60  	}
    61  }