diff --git a/pkg/config/v2.go b/pkg/config/v2.go index 538db154..acacb6e2 100644 --- a/pkg/config/v2.go +++ b/pkg/config/v2.go @@ -32,23 +32,38 @@ type Network struct { } type Wired struct { - DHCPEnabled bool `yaml:"dhcpEnabled"` - IPSyncEnabled bool `yaml:"ipSyncEnabled"` - SharedStaticIP bool `yaml:"sharedStaticIP"` - IPAddress string `yaml:"ipAddress"` - SubnetMask string `yaml:"subnetMask"` - DefaultGateway string `yaml:"defaultGateway"` - PrimaryDNS string `yaml:"primaryDNS"` - SecondaryDNS string `yaml:"secondaryDNS"` - Authentication string `yaml:"authentication"` + DHCPEnabled bool `yaml:"dhcpEnabled"` + IPSyncEnabled bool `yaml:"ipSyncEnabled"` + SharedStaticIP bool `yaml:"sharedStaticIP"` + IPAddress string `yaml:"ipAddress"` + SubnetMask string `yaml:"subnetMask"` + DefaultGateway string `yaml:"defaultGateway"` + PrimaryDNS string `yaml:"primaryDNS"` + SecondaryDNS string `yaml:"secondaryDNS"` + Authentication string `yaml:"authentication"` + IEEE8021x IEEE8021x `yaml:"ieee8021x"` } type Wireless struct { - Profiles []string `yaml:"profiles"` + Profiles []WirelessProfile `yaml:"profiles"` } -type Authentication struct { - Profiles []string `yaml:"profiles"` +type WirelessProfile struct { + SSID string `yaml:"ssid"` + Password string `yaml:"password"` + AuthenticationMethod string `yaml:"authenticationMethod"` + EncryptionMethod string `yaml:"encryptionMethod"` + Priority int `yaml:"priority"` + IEEE8021x IEEE8021x `yaml:"ieee8021x"` +} + +type IEEE8021x struct { + Username string `yaml:"username"` + Password string `yaml:"password"` + AuthenticationProtocol int `yaml:"authenticationProtocol"` + ClientCert string `yaml:"clientCert"` + CACert string `yaml:"caCert"` + PrivateKey string `yaml:"privateKey"` } type TLS struct { diff --git a/pkg/security/decrypt_test.go b/pkg/security/decrypt_test.go index 74bf1682..70ab0296 100644 --- a/pkg/security/decrypt_test.go +++ b/pkg/security/decrypt_test.go @@ -43,7 +43,24 @@ var ( Authentication: "", }, Wireless: config.Wireless{ - Profiles: []string{}, + Profiles: []config.WirelessProfile{ + { + SSID: "SSID", + Password: "Password", + AuthenticationMethod: "WPA3 SAE", + EncryptionMethod: "CCMP", + Priority: 1, + IEEE8021x: config.IEEE8021x{ + ProfileName: "", + AuthenticationProtocol: 0, + Username: "", + Password: "", + ClientCert: "", + PrivateKey: "", + CACert: "", + }, + }, + }, }, }, Authentication: config.Authentication{ diff --git a/pkg/security/storage.go b/pkg/security/storage.go index 2ec4c530..39730f98 100644 --- a/pkg/security/storage.go +++ b/pkg/security/storage.go @@ -6,7 +6,7 @@ import ( // Storage struct to hold the service name and keyring interface -// NewStorage function to create a new Storage instance with a keyring interface (for testing) +// NewStorage function to create a new Storage instance with a keyring interface (for testing). func NewStorage(serviceName string, kr Keyring) Storage { return Storage{ ServiceName: serviceName, @@ -21,22 +21,24 @@ func NewKeyRingStorage(serviceName string) Storage { } } -// SetKeyValue method to set a key-value pair in the keyring +// SetKeyValue method to set a key-value pair in the keyring. func (s Storage) SetKeyValue(key, value string) error { err := s.Keyring.Set(s.ServiceName, keyring.Item{ Key: key, Data: []byte(value), }) + return err } -// GetKeyValue method to get a value from the keyring by key +// GetKeyValue method to get a value from the keyring by key. func (s Storage) GetKeyValue(key string) (string, error) { data, err := s.Keyring.Get(s.ServiceName, key) + return string(data.Data), err } -// Set method to set a key-value pair in the real keyring +// Set method to set a key-value pair in the real keyring. func (r RealKeyring) Set(serviceName string, item keyring.Item) error { kr, err := keyring.Open(keyring.Config{ ServiceName: serviceName, @@ -44,10 +46,11 @@ func (r RealKeyring) Set(serviceName string, item keyring.Item) error { if err != nil { return err } + return kr.Set(item) } -// Get method to get a value from the real keyring by key +// Get method to get a value from the real keyring by key. func (r RealKeyring) Get(serviceName, key string) (keyring.Item, error) { kr, err := keyring.Open(keyring.Config{ ServiceName: serviceName, @@ -55,5 +58,6 @@ func (r RealKeyring) Get(serviceName, key string) (keyring.Item, error) { if err != nil { return keyring.Item{}, err } + return kr.Get(key) } diff --git a/pkg/security/testing/encryptedConfig.yaml b/pkg/security/testing/encryptedConfig.yaml index 663d72a9..a0261af6 100644 --- a/pkg/security/testing/encryptedConfig.yaml +++ b/pkg/security/testing/encryptedConfig.yaml @@ -1 +1 @@ -AAAAAAAAAAAAAAAACCK0c+Szra0BnRFT6juBsoI79nMUrqw6WxhxebiLr9T0fTuO2p8mDgjmEFl55xYL+RzFLZYK0U5BsXML9UgG/Gy8suVzTJLnwDXn5wbxk3qygvQdEpjvCuTuvzjMIJuiZPqhRY/egujIVNG24YEpbyAKkqKMUgRR7v4xHyrzfiwISxej0BO9yvPtVncGV1BXwZAUrEp42lEVVmpxqaW+HkEx0He3uhS8GtbfFgErI0V6lij+DbbWOOGC6+fuF2G7CaOiAPxD779bbBttxt53ceB+cZKKhjJxgVeCjBlFsKmJ/xdmcg+sZwMZnxPzIf8S5W92prKgeMh4t56EC5BIMxsgobB/S4YKsD7aAsnzbBsPmCkQvKUAsqaD5c9eDZZF8KX/TSfk4rWtzW/hq+B5ZUX9IAzjrFsLm49YiDXxHdLyZtFL99WTMdwx8yIhJntJSDvGurYcNCFRhUDgNoghYWZ8yyuUxi1OcQRSDaduqFW7QqT9QZV0nPgH6fsrMog1iR/ZuhtKAK7Uc4Kbdl/F/U2kpL5vMbq/7AeTd4VaCxpVrCjwljjRvEhbeAtoyZaQBuA4VAmEJyPghF8w1TG50gvXcYnG469hIxVnSAGxbSriXi/K2JjRgg/FQAAWiz4YeAMdXFPk8X1C2sueVQ1hbE58HDHL6EvLtpsap28IsWvEOnBKy8wA0N7J+PeBhHbbAnj3sDgJy8Xf/wra7mG9HAxoh9lA3+pyeXIp9Z3mwxCRQSpdJnGOCwg8JUNYuWgTQ7sW2ImkB0Fyg6DVIJqUesKeFJYWRnNBae2yqpINqXRm3pokeHWOd2/89BSbwXh6vwBnpYR1+pOsP6FxWYe5OKniDHLQSyd7bKpQ9TZob8/SPXgYQwB1Dc3P2AzjrTYJ1TQrojwQMEXT2DvBPKBP0BQEAcgEBmn0SQNTXulTsnf0LQg5YgFtgYOZmiJdSY8+bghlnvrflpom4iTqloR+oRZ0tjYR/RJrojC7GXAHldZXraHEahb8TGCzWFmj4vNnPTFOvHl+hVy+7b6rg4iVwHXOuOSEfEZwiqrEfxK6UrGm17CQfAiTkjdNu6kDhBuCLbFJ/2An7P0H8MvWYAuy8oHb0Hq/ktk/6+Y6mPmqnmfWrladLOaP39Og4kdpKXrUS+9yHuI6U8Kkr9JPsAcl2+fQNcK7uzii/o6sggFxM6YaEQuo7d/5ydYr8GVdfRMSkfN4JPkMrK/lpnS961gj6paZRJL97V9YHfxb43uSaiO49yncKaDqoCbWhC/QeFDKUuD1EHCNhgdOOwKeU5bC/Ozj646tDXhuDoxkBWaW+tIVFpxhWrIZDVA55sjiqc9O+xtfYWFkJ6WNq8owRTKqVeCnuCAm6KEgqX980SURCG6xfJDCevqHXShpzM5De20QwEEE9dFVOk8eppgWo98ZpfXLkEBfGu2K5sdYb36fC5kFRw8EgXfqTrVZvgmRB5HKu6fDVplLT+g+/cKLBgt6Syy0pdjaVlV0Wew6eOXgIeAHrUzlQom/eX5VIZQ9M2HKcGd1bYECB/Au19rQUMhS/DcsB7N1IBrbJUC6QG+RthnPHvj+5ODNaz/e95IUHXK1o2EkOykfn2YpRjyiTTOejQY= \ No newline at end of file +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 \ No newline at end of file diff --git a/pkg/security/types.go b/pkg/security/types.go index aca29cfc..f284487b 100644 --- a/pkg/security/types.go +++ b/pkg/security/types.go @@ -32,5 +32,4 @@ type Keyring interface { } // RealKeyring struct to implement the Keyring interface using the real keyring package. -type RealKeyring struct { -} +type RealKeyring struct{}