cryptofun/ecdsa/ecdsa_test.go
ecdsa/ecdsa_test.goRaw
1package ecdsa
2
3import (
4 "math/big"
5 "testing"
6
7 "github.com/arnaucube/cryptofun/ecc"
8 "github.com/stretchr/testify/assert"
9)
10
11func TestNewECDSA(t *testing.T) {
12 ec := ecc.NewEC(big.NewInt(int64(1)), big.NewInt(int64(18)), big.NewInt(int64(19)))
13 g := ecc.Point{big.NewInt(int64(7)), big.NewInt(int64(11))}
14 dsa, err := NewDSA(ec, g)
15 assert.Nil(t, err)
16
17 privK := big.NewInt(int64(5))
18 pubK, err := dsa.PubK(privK)
19 assert.Nil(t, err)
20
21 if !pubK.Equal(ecc.Point{big.NewInt(int64(13)), big.NewInt(int64(9))}) {
22 t.Errorf("pubK!=(13, 9)")
23 }
24}
25
26func TestECDSASignAndVerify(t *testing.T) {
27 ec := ecc.NewEC(big.NewInt(int64(1)), big.NewInt(int64(18)), big.NewInt(int64(19)))
28 g := ecc.Point{big.NewInt(int64(7)), big.NewInt(int64(11))}
29 dsa, err := NewDSA(ec, g)
30 assert.Nil(t, err)
31
32 privK := big.NewInt(int64(5))
33 pubK, err := dsa.PubK(privK)
34 assert.Nil(t, err)
35
36 hashval := big.NewInt(int64(40))
37 r := big.NewInt(int64(11))
38
39 sig, err := dsa.Sign(hashval, privK, r)
40 assert.Nil(t, err)
41
42 verified, err := dsa.Verify(hashval, sig, pubK)
43 assert.True(t, verified)
44}