/
secrethelper.go
72 lines (59 loc) · 2.88 KB
/
secrethelper.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
// Copyright (c) IOTIC LABS LIMITED. All rights reserved. Licensed under the Apache License, Version 2.0.
package test
import (
"context"
"github.com/Iotic-Labs/iotics-identity-go/pkg/advancedapi"
"github.com/Iotic-Labs/iotics-identity-go/pkg/crypto"
"github.com/Iotic-Labs/iotics-identity-go/pkg/identity"
"github.com/Iotic-Labs/iotics-identity-go/pkg/proof"
"github.com/Iotic-Labs/iotics-identity-go/pkg/register"
)
func HelperGetRegisterDocumentFromSecret(keypair *crypto.KeyPair, name string, purpose identity.DidType) (*register.RegisterDocument, *register.Issuer) {
identifier, _ := identity.MakeIdentifier(keypair.PublicKeyBytes)
issuer, _ := register.NewIssuer(identifier, name)
newProof, _ := proof.NewProof(keypair.PrivateKey, issuer.Did, issuer.Name, []byte(identifier))
opts := []register.RegisterDocumentOpts{
register.AddRootParams(identifier, purpose, newProof.Signature, false),
register.AddPublicKey(name, keypair.PublicKeyBase58, false),
}
registerDocument, _ := register.NewRegisterDocument(opts)
return registerDocument, issuer
}
func HelperGetRegisterDocument() (*register.RegisterDocument, *register.Issuer, *crypto.KeyPair) {
identifier, _ := identity.MakeIdentifier(ValidKeyPair.PublicKeyBytes)
name := "#user-name"
name2 := "#name2"
issuer, _ := register.NewIssuer(identifier, name)
proof, _ := proof.NewProof(ValidPrivateKey, issuer.Did, issuer.Name, []byte(identifier))
opts := []register.RegisterDocumentOpts{
register.AddRootParams(identifier, identity.User, proof.Signature, false),
register.AddPublicKey(name, ValidKeyPair.PublicKeyBase58, false),
register.AddAuthenticationKey(name2, ValidKeyPair2.PublicKeyBase58, false),
}
registerDocument, _ := register.NewRegisterDocument(opts)
return registerDocument, issuer, ValidKeyPair
}
func SetupIdentitiesForAuth(resolver register.ResolverClient, control bool, auth bool) (register.RegisteredIdentity, register.RegisteredIdentity) {
ctx := context.TODO()
userSecret, _ := crypto.NewDefaultKeyPairSecrets(ValidBip39Seed32B, "iotics/0/user/00")
userKeypair, _ := crypto.GetKeyPair(userSecret)
userIdentity, _, _ := advancedapi.CreateNewIdentityAndRegister(ctx, resolver, identity.User, userKeypair, "#user", true)
agentSecret, _ := crypto.NewDefaultKeyPairSecrets(ValidBip39Seed32B, "iotics/0/agent/00")
agentKeypair, _ := crypto.GetKeyPair(agentSecret)
agentIdentity, _, _ := advancedapi.CreateNewIdentityAndRegister(ctx, resolver, identity.Agent, agentKeypair, "#agent", true)
opts := advancedapi.DelegationOpts{
ResolverClient: resolver,
DelegatingKeyPair: userKeypair,
DelegatingDid: userIdentity.Did(),
SubjectKeyPair: agentKeypair,
SubjectDid: agentIdentity.Did(),
}
if control {
opts.Name = "#delegCtrl"
_ = advancedapi.DelegateControl(ctx, opts)
} else if auth {
opts.Name = "#delegAuth"
_ = advancedapi.DelegateAuthentication(ctx, opts)
}
return userIdentity, agentIdentity
}