OSDN Git Service

Remove dashboard && Make test OK.
[bytom/bytom.git] / blockchain / pseudohsm / pseudohsm_test.go
1 package pseudohsm
2
3 import (
4         "testing"
5         _"github.com/davecgh/go-spew/spew"
6         "github.com/bytom/errors"
7 )
8
9 const dirPath = "testdata/pseudo"
10
11
12 func TestPseudoHSMChainKDKeys(t *testing.T) {
13         hsm , _:= New(dirPath)
14         xpub, err := hsm.XCreate("password", "")
15         if err != nil {
16                 t.Fatal(err)
17         }
18         xpub2, err := hsm.XCreate("nopassword", "bytom")
19         if err != nil {
20                 t.Fatal(err)
21         }
22         msg := []byte("In the face of ignorance and resistance I wrote financial systems into existence")
23         sig, err := hsm.XSign(xpub.XPub, nil, msg, "password")
24         if err != nil {
25                 t.Fatal(err)
26         }
27         if !xpub.XPub.Verify(msg, sig) {
28                 t.Error("expected verify to succeed")
29         }
30         if xpub2.XPub.Verify(msg, sig) {
31                 t.Error("expected verify with wrong pubkey to fail")
32         }
33         path := [][]byte{{3, 2, 6, 3, 8, 2, 7}}
34         sig, err = hsm.XSign(xpub2.XPub, path, msg, "nopassword")
35         if err != nil {
36                 t.Fatal(err)
37         }
38         if xpub2.XPub.Verify(msg, sig) {
39                 t.Error("expected verify with underived pubkey of sig from derived privkey to fail")
40         }
41         if !xpub2.XPub.Derive(path).Verify(msg, sig) {
42                 t.Error("expected verify with derived pubkey of sig from derived privkey to succeed")
43         }
44 /*      xpubs, _, err := hsm.ListKeys(0, 100)
45         if err != nil {
46                 t.Fatal(err)
47         }
48         if len(xpubs) != 2 {
49                 t.Error("expected 2 entries in the db")
50         }*/
51         err = hsm.UpdateAlias(xpub.XPub, "password", "updatealias")
52         if err != nil {
53                 t.Fatal(err)
54         }
55         err = hsm.ResetPassword(xpub2.XPub, "nopassword", "1password")
56         if err != nil {
57                 t.Fatal(err)
58         }
59         err = hsm.XDelete(xpub.XPub, "password")
60         if err != nil {
61                 t.Fatal(err)
62         }
63         err = hsm.XDelete(xpub2.XPub, "1password")
64         if err != nil {
65                 t.Fatal(err)
66         }
67 }
68
69 func TestKeyWithEmptyAlias(t *testing.T) {
70         hsm, _:= New(dirPath)
71         for i := 0; i < 2; i++ {
72                 xpub, err := hsm.XCreate("xx", "")
73                 if errors.Root(err) != nil {
74                         t.Fatal(err)
75                 }
76                 err = hsm.XDelete(xpub.XPub, "xx")
77                 if err != nil {
78                         t.Fatal(err)
79                 }
80         }
81 }
82
83
84 func BenchmarkSign(b *testing.B) {
85         b.StopTimer()
86         auth := "nowpasswd"
87
88         hsm, _:= New(dirPath)
89         xpub, err := hsm.XCreate(auth, "")
90         if err != nil {
91                 b.Fatal(err)
92         }
93
94         msg := []byte("In the face of ignorance and resistance I wrote financial systems into existence")
95
96         b.StartTimer()
97         for i := 0; i < b.N; i++ {
98                 _, err := hsm.XSign(xpub.XPub, nil, msg, auth)
99                 if err != nil {
100                         b.Fatal(err)
101                 }
102         }
103         err = hsm.XDelete(xpub.XPub, auth)
104         if err != nil {
105                 b.Fatal(err)
106         }
107 }