mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-07 23:27:01 +02:00
There are thorough unit tests that read the returned encrypted tokens, seal the vault, and unseal it again to ensure all works as expected.
56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package api
|
|
|
|
func (c *Sys) InitStatus() (bool, error) {
|
|
r := c.c.NewRequest("GET", "/v1/sys/init")
|
|
resp, err := c.c.RawRequest(r)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
var result InitStatusResponse
|
|
err = resp.DecodeJSON(&result)
|
|
return result.Initialized, err
|
|
}
|
|
|
|
func (c *Sys) Init(opts *InitRequest) (*InitResponse, error) {
|
|
body := map[string]interface{}{
|
|
"secret_shares": opts.SecretShares,
|
|
"secret_threshold": opts.SecretThreshold,
|
|
}
|
|
|
|
if len(opts.SecretPGPKeys) != 0 {
|
|
body["secret_pgp_keys"] = opts.SecretPGPKeys
|
|
}
|
|
|
|
r := c.c.NewRequest("PUT", "/v1/sys/init")
|
|
if err := r.SetJSONBody(body); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
resp, err := c.c.RawRequest(r)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
var result InitResponse
|
|
err = resp.DecodeJSON(&result)
|
|
return &result, err
|
|
}
|
|
|
|
type InitRequest struct {
|
|
SecretShares int
|
|
SecretThreshold int
|
|
SecretPGPKeys []string
|
|
}
|
|
|
|
type InitStatusResponse struct {
|
|
Initialized bool
|
|
}
|
|
|
|
type InitResponse struct {
|
|
Keys []string
|
|
RootToken string `json:"root_token"`
|
|
}
|