/
dcm_create.go
86 lines (74 loc) · 2.62 KB
/
dcm_create.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
package dcm
import (
"encoding/json"
"fmt"
"net/http"
"github.com/pkg/errors"
"gopkg.in/urfave/cli.v2"
"github.com/VirgilSecurity/virgil-cli/client"
"github.com/VirgilSecurity/virgil-cli/models"
"github.com/VirgilSecurity/virgil-cli/utils"
)
func Create(vcli *client.VirgilHTTPClient) *cli.Command {
return &cli.Command{
Name: "create",
Aliases: []string{"c"},
Usage: "Create new dcm certificate",
Flags: []cli.Flag{
&cli.StringFlag{Name: "name", Usage: "dsm certificate name"},
&cli.StringFlag{Name: "encrypt-pub-key", Usage: "encrypt public key"},
&cli.StringFlag{Name: "app-token", Usage: "application token"},
&cli.StringFlag{Name: "verify-pub-key", Usage: "verify public key"}},
Action: func(context *cli.Context) (err error) {
name := utils.ReadFlagOrConsoleValue(context, "name", "Enter dsm certificate name")
encryptPubKey := utils.ReadFlagOrConsoleValue(context, "encrypt-pub-key", "Enter encrypt public key")
verifyPubKey := utils.ReadFlagOrConsoleValue(context, "verify-pub-key", "Enter verify public key")
defaultApp, _ := utils.LoadDefaultApp()
defaultAppToken := ""
if defaultApp != nil {
defaultAppToken = defaultApp.Token
}
appToken := utils.ReadFlagOrDefault(context, "app-token", defaultAppToken)
if appToken == "" {
return errors.New("Please, specify app-token (flag --app-token)")
}
dcm, err := DsmCreateFunc(name, encryptPubKey, verifyPubKey, appToken, vcli)
if err != nil {
return err
}
serialized, err := json.MarshalIndent(dcm, "", "\t")
if err != nil {
return err
}
fmt.Println(string(serialized))
return
},
}
}
func DsmCreateFunc(
name string,
encryptPubKey string,
verifyPubKey string,
appToken string,
vcli *client.VirgilHTTPClient,
) (resp models.DcmCertificateCreateResponse, err error) {
req := &models.DcmCertificateCreateRequest{
Name: name,
EncryptPublicKey: encryptPubKey,
VerifyPublicKey: verifyPubKey,
}
_, _, err = utils.SendWithCheckRetry(vcli, http.MethodPost, "/scms/dcm", req, &resp, appToken)
return
}
//CMD: virgil scms dcm create --name "My first DCM certificate" --encrypt-pub-key BASE64 --verfiy-pub-key BASE64
//URL : https://api.virgilsecurity.com/v1/scms/{APPLICATION_ID}/dcm
//METHOD: POST
//BODY: {"name":"My first DCM certificate","encrypt_public_key":"BASE64","verify_public_key":"BASE64"}
//RESP BODY: {
// "name": "human name for DCM certificate",
// "certificate": "BASE64",
// "eca_address": "https://api.virgilsecurity.com/scms/v1",
// "eca_certificate": "BASE64",
// "ra_address": "https://api.virgilsecurity.com/scms/v1",
// "lccf": "BASE64",
//}