/
generatecredentials.go
76 lines (61 loc) · 1.98 KB
/
generatecredentials.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
package credhub
import (
"bytes"
"encoding/json"
"net/http"
)
// Generate will create a credential in Credhub. Currently does not work for the
// Value or JSON credential types. See https://credhub-api.cfapps.io/#generate-credentials
// for more information about available parameters.
func (c *Client) Generate(name string, credentialType CredentialType, parameters map[string]interface{}) (*Credential, error) {
reqBody := make(map[string]interface{})
reqBody["name"] = name
reqBody["type"] = credentialType
reqBody["parameters"] = parameters
buf, err := json.Marshal(reqBody)
if err != nil {
return nil, err
}
var req *http.Request
req, err = http.NewRequest("POST", c.url+"/api/v1/data", bytes.NewBuffer(buf))
if err != nil {
return nil, err
}
req.Header.Add("Content-Type", "application/json")
resp, err := c.hc.Do(req)
if err != nil {
return nil, err
}
cred := new(Credential)
unmarshaller := json.NewDecoder(resp.Body)
err = unmarshaller.Decode(cred)
return cred, err
}
// Regenerate will generate new values for credentials using the same parameters
// as the stored value. All RSA and SSH credentials may be regenerated. Password
// and user credentials must have been generated to enable regeneration.
// Statically set certificates may be regenerated if they are self-signed or if
// the CA name has been set to a stored CA certificate.
func (c *Client) Regenerate(name string) (*Credential, error) {
reqBody := struct {
Name string `json:"name"`
}{
Name: name,
}
// there's no way that this will ever return an error, so ignore the error
buf, _ := json.Marshal(reqBody)
var req *http.Request
req, err := http.NewRequest("POST", c.url+"/api/v1/data/regenerate", bytes.NewBuffer(buf))
if err != nil {
return nil, err
}
req.Header.Add("Content-Type", "application/json")
resp, err := c.hc.Do(req)
if err != nil {
return nil, err
}
cred := new(Credential)
unmarshaller := json.NewDecoder(resp.Body)
err = unmarshaller.Decode(cred)
return cred, err
}