-
Notifications
You must be signed in to change notification settings - Fork 41
/
setup_create_diddoc.go
107 lines (87 loc) · 2.69 KB
/
setup_create_diddoc.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
package setup
import (
"crypto/ed25519"
"github.com/cheqd/cheqd-node/x/did/types"
"github.com/cheqd/cheqd-node/x/did/utils"
"github.com/google/uuid"
)
func (s *TestSetup) CreateDid(payload *types.MsgCreateDidDocPayload, signInputs []SignInput) (*types.MsgCreateDidDocResponse, error) {
signBytes := payload.GetSignBytes()
signatures := make([]*types.SignInfo, 0, len(signInputs))
for _, input := range signInputs {
signature := ed25519.Sign(input.Key, signBytes)
signatures = append(signatures, &types.SignInfo{
VerificationMethodId: input.VerificationMethodID,
Signature: signature,
})
}
msg := &types.MsgCreateDidDoc{
Payload: payload,
Signatures: signatures,
}
return s.MsgServer.CreateDidDoc(s.StdCtx, msg)
}
func (s *TestSetup) BuildDidDocWithCustomDID(did string) DidDocInfo {
_, _, collectionID := utils.MustSplitDID(did)
keyPair := GenerateKeyPair()
keyID := did + "#key-1"
msg := &types.MsgCreateDidDocPayload{
Id: did,
VerificationMethod: []*types.VerificationMethod{
{
Id: keyID,
VerificationMethodType: types.Ed25519VerificationKey2020Type,
Controller: did,
VerificationMaterial: GenerateEd25519VerificationKey2020VerificationMaterial(keyPair.Public),
},
},
Authentication: []string{keyID},
VersionId: uuid.NewString(),
}
signInput := SignInput{
VerificationMethodID: keyID,
Key: keyPair.Private,
}
return DidDocInfo{
Did: did,
CollectionID: collectionID,
KeyPair: keyPair,
KeyID: keyID,
Msg: msg,
SignInput: signInput,
}
}
func (s *TestSetup) BuildDidDocWithCustomID(uuid string) DidDocInfo {
did := "did:cheqd:" + DidNamespace + ":" + uuid
return s.BuildDidDocWithCustomDID(did)
}
func (s *TestSetup) BuildSimpleDidDoc() DidDocInfo {
did := GenerateDID(Base58_16bytes)
return s.BuildDidDocWithCustomDID(did)
}
func (s *TestSetup) CreateCustomDidDoc(info DidDocInfo) CreatedDidDocInfo {
created, err := s.CreateDid(info.Msg, []SignInput{info.SignInput})
if err != nil {
panic(err)
}
return CreatedDidDocInfo{
DidDocInfo: info,
VersionID: created.Value.Metadata.VersionId,
}
}
func (s *TestSetup) CreateSimpleDid() CreatedDidDocInfo {
did := s.BuildSimpleDidDoc()
return s.CreateCustomDidDoc(did)
}
func (s *TestSetup) CreateDidDocWithExternalControllers(controllers []string, signInputs []SignInput) CreatedDidDocInfo {
did := s.BuildSimpleDidDoc()
did.Msg.Controller = append(did.Msg.Controller, controllers...)
created, err := s.CreateDid(did.Msg, append(signInputs, did.SignInput))
if err != nil {
panic(err)
}
return CreatedDidDocInfo{
DidDocInfo: did,
VersionID: created.Value.Metadata.VersionId,
}
}