-
Notifications
You must be signed in to change notification settings - Fork 1
/
reenroll.go
90 lines (73 loc) · 1.8 KB
/
reenroll.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
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package command
import (
"fmt"
"path/filepath"
"github.com/cloudflare/cfssl/log"
"github.com/hyperledger/fabric-ca/api"
"github.com/hyperledger/fabric-ca/lib"
"github.com/pkg/errors"
"github.com/spf13/cobra"
)
func (c *ClientCmd) newReenrollCommand() *cobra.Command {
reenrollCmd := &cobra.Command{
Use: "reenroll",
Short: "Reenroll an identity",
Long: "Reenroll an identity with Fabric CA server",
// PreRunE block for this command will check to make sure enrollment
// information exists before running the command
PreRunE: func(cmd *cobra.Command, args []string) error {
if len(args) > 0 {
return errors.Errorf(extraArgsError, args, cmd.UsageString())
}
err := c.ConfigInit()
if err != nil {
return err
}
log.Debugf("Client configuration settings: %+v", c.clientCfg)
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
err := c.runReenroll()
if err != nil {
return err
}
return nil
},
}
return reenrollCmd
}
// The client reenroll main logic
func (c *ClientCmd) runReenroll() error {
log.Debug("Entered runReenroll")
client := lib.Client{
HomeDir: filepath.Dir(c.cfgFileName),
Config: c.clientCfg,
}
id, err := client.LoadMyIdentity()
if err != nil {
return err
}
req := &api.ReenrollmentRequest{
Label: c.clientCfg.Enrollment.Label,
Profile: c.clientCfg.Enrollment.Profile,
CSR: &c.clientCfg.CSR,
CAName: c.clientCfg.CAName,
}
resp, err := id.Reenroll(req)
if err != nil {
return errors.WithMessage(err, fmt.Sprintf("Failed to reenroll '%s'", id.GetName()))
}
err = resp.Identity.Store()
if err != nil {
return err
}
err = storeCAChain(c.clientCfg, &resp.CAInfo)
if err != nil {
return err
}
return nil
}