arnaucube
arnaucube/cryptofunPublic Self-hosted repository
cryptofun/schnorr/schnorr_test.go
schnorr/schnorr_test.goRaw
 1package schnorr
 2
 3import (
 4	"math/big"
 5	"testing"
 6
 7	"github.com/arnaucube/cryptofun/ecc"
 8	"github.com/stretchr/testify/assert"
 9)
10
11func TestHash(t *testing.T) {
12	c := ecc.Point{big.NewInt(int64(7)), big.NewInt(int64(8))} // Generator
13	h := Hash([]byte("hola"), c)
14	assert.Equal(t, h.String(), "34719153732582497359642109898768696927847420320548121616059449972754491425079")
15}
16
17func TestSign(t *testing.T) {
18	ec := ecc.NewEC(big.NewInt(int64(0)), big.NewInt(int64(7)), big.NewInt(int64(11)))
19	g := ecc.Point{big.NewInt(int64(7)), big.NewInt(int64(8))} // Generator
20	r := big.NewInt(int64(7))                                  // random r
21	schnorr, sk, err := Gen(ec, g, r)
22	assert.Nil(t, err)
23
24	m := []byte("hola")
25
26	s, rPoint, err := schnorr.Sign(sk, m)
27	assert.Nil(t, err)
28
29	verified, err := Verify(schnorr.EC, sk.PubK, m, s, rPoint)
30	assert.Nil(t, err)
31
32	assert.True(t, verified)
33}
34
35func TestSign2(t *testing.T) {
36	ec := ecc.NewEC(big.NewInt(int64(0)), big.NewInt(int64(7)), big.NewInt(int64(29)))
37	g := ecc.Point{big.NewInt(int64(11)), big.NewInt(int64(27))} // Generator
38	r := big.NewInt(int64(23))                                   // random r
39	schnorr, sk, err := Gen(ec, g, r)
40	assert.Nil(t, err)
41
42	m := []byte("hola")
43
44	s, rPoint, err := schnorr.Sign(sk, m)
45	assert.Nil(t, err)
46
47	verified, err := Verify(schnorr.EC, sk.PubK, m, s, rPoint)
48	assert.Nil(t, err)
49
50	assert.True(t, verified)
51}