/
main.go
109 lines (87 loc) · 2.21 KB
/
main.go
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
package main
import (
"./lib"
"./proverInitPhase"
"./proverProofPhase"
"./verifierProofPhase"
"crypto/hmac"
"crypto/sha256"
"encoding/base64"
"encoding/hex"
"fmt"
"os"
"strconv"
"unsafe"
)
const (
readbitlen int64 = 10
)
func ComputeHmacSha256(message string, secret string) string {
key := []byte(secret)
h := hmac.New(sha256.New, key)
h.Write([]byte(message))
// fmt.Println(h.Sum(nil))
sha := hex.EncodeToString(h.Sum(nil))
// fmt.Println(sha)
// hex.EncodeToString(h.Sum(nil))
return base64.StdEncoding.EncodeToString([]byte(sha))
}
func file2Bytes(filename string) ([]byte, error) {
// File
file, err := os.Open(filename)
if err != nil {
return nil, err
}
defer file.Close()
// FileInfo:
stats, err := file.Stat()
if err != nil {
return nil, err
}
// []byte
data := make([]byte, stats.Size())
count, err := file.Read(data)
if err != nil {
return nil, err
}
fmt.Printf("read file %s len: %d \n", filename, count)
return data, nil
}
var (
size int64
path string
identity string
)
func generateIndentity(){
publicKey := lib.GetECCPublicKeyByte("eccpublic.pem")
identity = lib.GetSHA256HashCode(publicKey)
fmt.Println("user identity is ", identity)
}
func TestSha256Time(){
var identity string="c472b3aeaf26ef4ceed0c3b2403b530c7a57962ee2bda1d6edafdc0ef04afc12345678901234567890123456789012";
var tyrnum int64= 1023
var trys string
trys += identity
trys += strconv.FormatInt(tyrnum, 10)
lib.GetSHA256HashCode([]byte(trys))
}
func usage(){
fmt.Println("./main.exe proverinit")
fmt.Println("./main.exe proverproof")
fmt.Println("./main.exe proververify")
}
func main() {
proverInitPhase.TestGenerateBlock()
generateIndentity()
proverInitPhase.GenerateEvidenceFile(identity)
publicKey := lib.GetECCPublicKeyByte("eccpublic.pem")
identity := lib.GetSHA256HashCode(publicKey)
fmt.Println("user identity is ", identity)
var ch string = "12345678901234567890123456789014"
filename:="5K"
var readbitlen int64=10
node := proverProofPhase.GenerateMerkleTree(filename,readbitlen,identity,ch)
fmt.Println("Information transmitted is ", node)
fmt.Println("Size of information transmitted is ", unsafe.Sizeof(node))
verifierProofPhase.Verify(node,filename,identity,readbitlen,ch)
}