-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathverifier_test.go
More file actions
118 lines (99 loc) · 2.22 KB
/
verifier_test.go
File metadata and controls
118 lines (99 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package securelog
import (
"os"
"testing"
"time"
)
func TestSemiTrustedVerifier(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "securelog-verifier-*")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(tmpDir)
store, err := OpenFileStore(tmpDir)
if err != nil {
t.Fatal(err)
}
defer store.(*fileStore).Close()
logger, err := New(Config{AnchorEvery: 10}, store)
if err != nil {
t.Fatal(err)
}
a0, _ := logger.GetInitialKeys()
// Append entries
for i := 0; i < 25; i++ {
_, err := logger.Append([]byte("test message"), time.Now())
if err != nil {
t.Fatal(err)
}
}
// Create verifier
verifier := NewSemiTrustedVerifier(store)
// Verify from anchor
anchor, found, err := store.AnchorAt(10)
if err != nil {
t.Fatal(err)
}
if !found {
t.Fatal("Expected anchor at 10")
}
err = verifier.VerifyFromAnchor(anchor)
if err != nil {
t.Fatalf("VerifyFromAnchor failed: %v", err)
}
// Also test from beginning
err = verifier.VerifyFromAnchor(Anchor{
Index: 0,
Key: a0,
TagV: [32]byte{},
TagT: [32]byte{},
})
if err != nil {
t.Fatalf("VerifyFromAnchor from beginning failed: %v", err)
}
}
func TestTrustedVerifier(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "securelog-trusted-*")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(tmpDir)
store, err := OpenFileStore(tmpDir)
if err != nil {
t.Fatal(err)
}
defer store.(*fileStore).Close()
logger, err := New(Config{AnchorEvery: 10}, store)
if err != nil {
t.Fatal(err)
}
_, b0 := logger.GetInitialKeys()
// Append entries
for i := 0; i < 25; i++ {
_, err := logger.Append([]byte("test message"), time.Now())
if err != nil {
t.Fatal(err)
}
}
// Create trusted verifier
verifier := NewTrustedVerifier(store, b0)
// Verify all
err = verifier.VerifyAll()
if err != nil {
t.Fatalf("VerifyAll failed: %v", err)
}
// Verify from beginning using B_0
var zeroTag [32]byte
err = verifier.VerifyFromAnchor(0, b0, zeroTag)
if err != nil {
t.Fatalf("VerifyFromAnchor from beginning failed: %v", err)
}
// Verify we can also check an anchor exists (even though we don't use it for T-chain)
_, found, err := store.AnchorAt(10)
if err != nil {
t.Fatal(err)
}
if !found {
t.Fatal("Expected anchor at 10")
}
}