mirror of https://github.com/k3s-io/k3s
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.6 KiB
77 lines
1.6 KiB
5 years ago
|
// this file contains the functions for managing shared secrets
|
||
|
|
||
|
package goStrongswanVici
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
)
|
||
|
|
||
|
type Key struct {
|
||
|
ID string `json:"id,omitempty"`
|
||
|
Typ string `json:"type"`
|
||
|
Data string `json:"data"`
|
||
|
Owners []string `json:"owners"`
|
||
|
}
|
||
|
|
||
|
type UnloadKeyRequest struct {
|
||
|
ID string `json:"id"`
|
||
|
}
|
||
|
|
||
|
type keyList struct {
|
||
|
Keys []string `json:"keys"`
|
||
|
}
|
||
|
|
||
|
// load a shared secret into the IKE daemon
|
||
|
func (c *ClientConn) LoadShared(key *Key) error {
|
||
|
requestMap := &map[string]interface{}{}
|
||
|
|
||
|
err := ConvertToGeneral(key, requestMap)
|
||
|
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("error creating request: %v", err)
|
||
|
}
|
||
|
|
||
|
msg, err := c.Request("load-shared", *requestMap)
|
||
|
if msg["success"] != "yes" {
|
||
|
return fmt.Errorf("unsuccessful loadSharedKey: %v", msg["errmsg"])
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// unload (delete) a shared secret from the IKE daemon
|
||
|
func (c *ClientConn) UnloadShared(key *UnloadKeyRequest) error {
|
||
|
requestMap := &map[string]interface{}{}
|
||
|
|
||
|
err := ConvertToGeneral(key, requestMap)
|
||
|
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("error creating request: %v", err)
|
||
|
}
|
||
|
|
||
|
msg, err := c.Request("unload-shared", *requestMap)
|
||
|
if msg["success"] != "yes" {
|
||
|
return fmt.Errorf("unsuccessful loadSharedKey: %v", msg["errmsg"])
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// get a the names of the shared secrets currently loaded
|
||
|
func (c *ClientConn) GetShared() ([]string, error) {
|
||
|
msg, err := c.Request("get-shared", nil)
|
||
|
if err != nil {
|
||
|
fmt.Errorf("Error making request: %v", err)
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
keys := &keyList{}
|
||
|
|
||
|
err = ConvertFromGeneral(msg, keys)
|
||
|
if err != nil {
|
||
|
fmt.Errorf("Error converting data: %v", err)
|
||
|
}
|
||
|
|
||
|
return keys.Keys, err
|
||
|
}
|