-
Notifications
You must be signed in to change notification settings - Fork 0
/
local_did_test.go
91 lines (78 loc) · 2.29 KB
/
local_did_test.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
package main
import (
"crypto/ed25519"
"crypto/rand"
"encoding/base64"
"encoding/json"
"fabric-did/did"
"fabric-did/tools"
"fmt"
"testing"
"time"
)
var Issuer = make([]string, 0)
func TestCreatDid(t *testing.T) {
did.CreateDid()
}
func TestIssuerAdd(t *testing.T) {
Issuer = append(Issuer, "did:example:061dce1b6e87f6ff110d50cf2ce5bd98")
fmt.Printf("Issuer:%#v \n", Issuer)
}
func TestVC(t *testing.T) {
claim := make(map[string]interface{})
claim["name"] = "李白"
claim["age"] = "1300"
claim["poiet"] = "桃花潭水深千尺,不及汪伦送我情"
credentialSubject := did.CredentialSubject{
ID: "did:example:123",
Claim: claim,
}
now := time.Now().UnixMilli()
vc := did.VerifiableCredential{
ID: tools.GetUUID(),
Type: did.VCType,
Issuer: "did:example:061dce1b6e87f6ff110d50cf2ce5bd98",
IssuanceDate: now,
ExpirationDate: now + 60000,
CredentialSubject: credentialSubject,
Proof: did.Proof{},
}
vcBytes, _ := json.Marshal(vc)
//create issuer
issuer := did.CreateDid()
// 进行ed25519签名
privateKey := tools.Base58Decode([]byte(issuer.PrivateKey))
signature := ed25519.Sign(privateKey, vcBytes)
signatureStr := string(tools.Base58Encode(signature))
proof := did.Proof{
Creator: issuer.ID,
Signature: signatureStr,
Created: now,
Type: did.KeyType,
}
vc.Proof = proof
fmt.Printf("Create VC success:%#v \n", vc)
//验证
pk := tools.Base58Decode([]byte(issuer.Authentication.PublicKeyMultibase))
vc.Proof = did.Proof{}
vcBytes2, _ := json.Marshal(vc)
verify := ed25519.Verify(pk, vcBytes2, signature)
fmt.Println("验签结果:", verify)
}
func TestEd25519(t *testing.T) {
publicKey, privateKey, _ := ed25519.GenerateKey(rand.Reader)
msg := "abc123"
msgByte := []byte(msg)
// 进行ed25519签名
signature := ed25519.Sign(privateKey, msgByte)
// 使用公钥进行验签
verify := ed25519.Verify(publicKey, msgByte, signature)
publicKeyStr := base64.StdEncoding.EncodeToString(publicKey)
privateKeyStr := base64.StdEncoding.EncodeToString(privateKey)
id := tools.Base58Encode(publicKey)
fmt.Println("公钥:", publicKeyStr)
fmt.Println("id:", string(id))
fmt.Println("私钥", privateKeyStr)
fmt.Println("签名", signature)
fmt.Println("验签结果:", verify)
}