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 }