Skip to content

Commit

Permalink
fixing issue in loading default providers
Browse files Browse the repository at this point in the history
  • Loading branch information
shibme committed Mar 3, 2024
1 parent 573e5d0 commit 847414d
Show file tree
Hide file tree
Showing 11 changed files with 50 additions and 90 deletions.
11 changes: 0 additions & 11 deletions .dev.sh

This file was deleted.

3 changes: 2 additions & 1 deletion cli/internal/commands/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/spf13/cobra"
"savesecrets.org/slv/core/crypto"
"savesecrets.org/slv/core/environments"
"savesecrets.org/slv/core/environments/providers"
"savesecrets.org/slv/core/input"
"savesecrets.org/slv/core/profiles"
)
Expand Down Expand Up @@ -157,7 +158,7 @@ func envNewUserCommand() *cobra.Command {
}
inputs["password"] = password
var env *environments.Environment
env, err = environments.NewEnvForProvider("password", envName, environments.USER, inputs)
env, err = providers.NewEnvForProvider("password", envName, environments.USER, inputs)
if err != nil {
exitOnError(err)
}
Expand Down
3 changes: 2 additions & 1 deletion cli/internal/commands/kms.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

"github.com/spf13/cobra"
"savesecrets.org/slv/core/environments"
"savesecrets.org/slv/core/environments/providers"
"savesecrets.org/slv/core/profiles"
)

Expand All @@ -30,7 +31,7 @@ func newKMSEnvCommand(kmsName, kmsProviderDesc string, keyIdFlag FlagDef) *cobra
inputs[kmsRSAPublicKey.name] = rsaPublicKey
}
}
env, err = environments.NewEnvForProvider(kmsName, envName, environments.SERVICE, inputs)
env, err = providers.NewEnvForProvider(kmsName, envName, environments.SERVICE, inputs)
if err != nil {
exitOnError(err)
}
Expand Down
2 changes: 1 addition & 1 deletion cli/internal/commands/vault.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ func getPublicKeys(pubKeyStrSlice []string, query string, self bool) (publicKeys
return nil, nil, err
}
}
return
return publicKeys, rootPublicKey, nil
}

func vaultNewCommand() *cobra.Command {
Expand Down
19 changes: 7 additions & 12 deletions core/environments/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,13 @@ import (
)

const (
envDefStringAbbrev = "EDS" // Environment Definition String
envSecretBindingAbbrev = "ESB" // Environment Secret Binding
EnvironmentKey crypto.KeyType = 'E'
USER EnvType = "user"
SERVICE EnvType = "service"
ROOT EnvType = "root"
slvPrefix = config.AppNameUpperCase
selfEnvFileName = ".self"
envDefStringAbbrev = "EDS" // Environment Definition String
EnvironmentKey crypto.KeyType = 'E'
USER EnvType = "user"
SERVICE EnvType = "service"
ROOT EnvType = "root"
slvPrefix = config.AppNameUpperCase
selfEnvFileName = ".self"
)

var (
Expand All @@ -26,10 +25,6 @@ var (
errManifestNotFound = errors.New("manifest not found")
errWritingManifest = errors.New("error in writing manifest")
errRootExistsAlready = errors.New("root environment exists already")
errProviderUnknown = errors.New("unknown provider")
errInvalidEnvSecretBindingFormat = errors.New("invalid environment secret binding format")
errEnvSecretBindingUnspecified = errors.New("environment secret binding unspecified")
errProviderRegisteredAlready = errors.New("env secret provider registered already")
errMarkingSelfEnvBindingNotFound = errors.New("error in marking environment as self - env secret binding not found")
errMarkingSelfNonUserEnv = errors.New("error in marking environment as self - non user environment")
)
12 changes: 0 additions & 12 deletions core/environments/providers/commons.go

This file was deleted.

11 changes: 11 additions & 0 deletions core/environments/providers/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,14 @@ package providers

import (
"errors"

"savesecrets.org/slv/core/config"
)

const (
envSecretBindingAbbrev = "ESB" // Environment Secret Binding
slvPrefix = config.AppNameUpperCase

// Password Provider Constants
passwordProviderName = "password"

Expand All @@ -26,6 +31,12 @@ const (
var (
defaultProvidersRegistered = false

// Provider Base Errors
errProviderUnknown = errors.New("unknown provider")
errInvalidEnvSecretBindingFormat = errors.New("invalid environment secret binding format")
errEnvSecretBindingUnspecified = errors.New("environment secret binding unspecified")
errProviderRegisteredAlready = errors.New("env secret provider registered already")

// KMS Provider Errors
errInvalidRSAPublicKey = errors.New("invalid RSA public key")
errSealedSecretKeyRef = errors.New("invalid sealed secret key from provider binding")
Expand Down
10 changes: 10 additions & 0 deletions core/environments/providers/defaults.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package providers

func loadDefaultProviders() {
if !defaultProvidersRegistered {
registerProvider(passwordProviderName, bindWithPassword, unBindWithPassword, true)
registerProvider(awsProviderName, bindWithAWSKMS, unBindFromAWSKMS, true)
registerProvider(gcpProviderName, bindWithGCP, unBindWithGCP, true)
defaultProvidersRegistered = true
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package environments
package providers

import (
"fmt"
"strings"

"savesecrets.org/slv/core/commons"
"savesecrets.org/slv/core/crypto"
"savesecrets.org/slv/core/environments"
)

type Bind func(inputs map[string][]byte) (publicKey *crypto.PublicKey, ref map[string][]byte, err error)
Expand Down Expand Up @@ -45,21 +46,27 @@ func envSecretBindingFromString(envSecretBindingStr string) (*envSecretBinding,
return binding, nil
}

func RegisterEnvSecretProvider(name string, bind Bind, unbind UnBind, refRequired bool) error {
if _, ok := providerMap[name]; ok {
return errProviderRegisteredAlready
}
func registerProvider(name string, bind Bind, unbind UnBind, refRequired bool) {
providerMap[name] = &provider{
Name: name,
bind: &bind,
unbind: &unbind,
refRequired: refRequired,
}
}

func RegisterEnvSecretProvider(name string, bind Bind, unbind UnBind, refRequired bool) error {
loadDefaultProviders()
if _, ok := providerMap[name]; ok {
return errProviderRegisteredAlready
}
registerProvider(name, bind, unbind, refRequired)
return nil
}

func NewEnvForProvider(providerName, envName string, envType EnvType,
inputs map[string][]byte) (*Environment, error) {
func NewEnvForProvider(providerName, envName string, envType environments.EnvType,
inputs map[string][]byte) (*environments.Environment, error) {
loadDefaultProviders()
provider, ok := providerMap[providerName]
if !ok {
return nil, errProviderUnknown
Expand All @@ -68,7 +75,7 @@ func NewEnvForProvider(providerName, envName string, envType EnvType,
if err != nil {
return nil, err
}
env, err := NewEnvironmentForPublicKey(envName, envType, publicKey)
env, err := environments.NewEnvironmentForPublicKey(envName, envType, publicKey)
if err != nil {
return nil, err
}
Expand All @@ -86,6 +93,7 @@ func NewEnvForProvider(providerName, envName string, envType EnvType,
}

func GetSecretKeyFromSecretBinding(envSecretBindingStr string) (secretKey *crypto.SecretKey, err error) {
loadDefaultProviders()
if envSecretBindingStr == "" {
var providersWithoutRef []provider
for _, provider := range providerMap {
Expand Down
3 changes: 1 addition & 2 deletions secretkey.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,7 @@ func GetSecretKey() (*crypto.SecretKey, error) {
}
}
if envSecretBindingStr != "" {
providers.LoadDefaultProviders()
secretKey, err = environments.GetSecretKeyFromSecretBinding(envSecretBindingStr)
secretKey, err = providers.GetSecretKeyFromSecretBinding(envSecretBindingStr)
}
if secretKey == nil && err == nil {
err = errEnvironmentAccessNotFound
Expand Down
42 changes: 0 additions & 42 deletions test_cli.sh

This file was deleted.

0 comments on commit 847414d

Please sign in to comment.