shared.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // this file contains the functions for managing shared secrets
  2. package goStrongswanVici
  3. import (
  4. "fmt"
  5. )
  6. type Key struct {
  7. ID string `json:"id,omitempty"`
  8. Typ string `json:"type"`
  9. Data string `json:"data"`
  10. Owners []string `json:"owners"`
  11. }
  12. type UnloadKeyRequest struct {
  13. ID string `json:"id"`
  14. }
  15. type keyList struct {
  16. Keys []string `json:"keys"`
  17. }
  18. // load a shared secret into the IKE daemon
  19. func (c *ClientConn) LoadShared(key *Key) error {
  20. requestMap := &map[string]interface{}{}
  21. err := ConvertToGeneral(key, requestMap)
  22. if err != nil {
  23. return fmt.Errorf("error creating request: %v", err)
  24. }
  25. msg, err := c.Request("load-shared", *requestMap)
  26. if msg["success"] != "yes" {
  27. return fmt.Errorf("unsuccessful loadSharedKey: %v", msg["errmsg"])
  28. }
  29. return nil
  30. }
  31. // unload (delete) a shared secret from the IKE daemon
  32. func (c *ClientConn) UnloadShared(key *UnloadKeyRequest) error {
  33. requestMap := &map[string]interface{}{}
  34. err := ConvertToGeneral(key, requestMap)
  35. if err != nil {
  36. return fmt.Errorf("error creating request: %v", err)
  37. }
  38. msg, err := c.Request("unload-shared", *requestMap)
  39. if msg["success"] != "yes" {
  40. return fmt.Errorf("unsuccessful loadSharedKey: %v", msg["errmsg"])
  41. }
  42. return nil
  43. }
  44. // get a the names of the shared secrets currently loaded
  45. func (c *ClientConn) GetShared() ([]string, error) {
  46. msg, err := c.Request("get-shared", nil)
  47. if err != nil {
  48. fmt.Errorf("Error making request: %v", err)
  49. return nil, err
  50. }
  51. keys := &keyList{}
  52. err = ConvertFromGeneral(msg, keys)
  53. if err != nil {
  54. fmt.Errorf("Error converting data: %v", err)
  55. }
  56. return keys.Keys, err
  57. }