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}