Skip to content

Commit

Permalink
feat: drop support dedicated encryption key
Browse files Browse the repository at this point in the history
  • Loading branch information
vitalvas committed Mar 31, 2024
1 parent 48308be commit c0c7e1f
Show file tree
Hide file tree
Showing 7 changed files with 20 additions and 40 deletions.
14 changes: 4 additions & 10 deletions internal/commands/cmd_init.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,6 @@ var initCmd = &cli.Command{
Usage: "Encryption key for key (generated if not set)",
EnvVars: []string{"GOPASS_ENCRYPTION_KEY"},
},
&cli.StringFlag{
Name: "encryption-value",
Usage: "Encryption key for value (generated if not set)",
EnvVars: []string{"GOPASS_ENCRYPTION_VALUE"},
},
},
Action: func(c *cli.Context) error {
parsed, err := url.Parse(c.String("store-uri"))
Expand Down Expand Up @@ -70,10 +65,9 @@ var initCmd = &cli.Command{
}

vaultConfig := vault.Config{
Name: c.String("vault"),
Address: parsed.String(),
EncryptionKey: c.String("encryption-key"),
EncryptionValue: c.String("encryption-value"),
Name: c.String("vault"),
Address: parsed.String(),
EncryptionKey: c.String("encryption-key"),
}

if len(vaultConfig.EncryptionKey) <= 8 {
Expand Down Expand Up @@ -102,7 +96,7 @@ var initCmd = &cli.Command{
return fmt.Errorf("failed to write vault config: %w", err)
}

enc, err := encryptor.NewEncryptor(vaultConfig.EncryptionKey, vaultConfig.EncryptionValue)
enc, err := encryptor.NewEncryptor(vaultConfig.EncryptionKey)
if err != nil {
return fmt.Errorf("failed to create encryptor: %w", err)
}
Expand Down
2 changes: 1 addition & 1 deletion internal/commands/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func vaultLoader(_ *cli.Context) error {

func encryptLoader(_ *cli.Context) error {
var err error
encrypt, err = encryptor.NewEncryptor(vaultConfig.EncryptionKey, vaultConfig.EncryptionValue)
encrypt, err = encryptor.NewEncryptor(vaultConfig.EncryptionKey)
if err != nil {
return fmt.Errorf("failed to create encryptor: %w", err)
}
Expand Down
19 changes: 5 additions & 14 deletions pkg/encryptor/encryptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,12 @@ type Encryptor struct {
valueAead cipher.AEAD
}

func NewEncryptor(keySecret, valueSecret string) (*Encryptor, error) {
func NewEncryptor(keySecret string) (*Encryptor, error) {
if keySecret == "" {
return nil, errors.New("no key encryption key")
}

keySecretBytes := []byte(keySecret)
valueSecretBytes := []byte(valueSecret)

keyHash := blake2b.Sum256(keySecretBytes)

Expand All @@ -28,19 +27,11 @@ func NewEncryptor(keySecret, valueSecret string) (*Encryptor, error) {
return nil, err
}

var valueSecretKey []byte
valueHash := blake2b.Sum256(
append(keySecretBytes, keyHash[:]...),
)

if valueSecretBytes != nil {
valueHash := blake2b.Sum256(valueSecretBytes)
valueSecretKey = valueHash[:32]

} else {
valueHash := blake2b.Sum256(
append(keySecretBytes, keyHash[:]...),
)

valueSecretKey = valueHash[:32]
}
valueSecretKey := valueHash[:32]

valueAead, err := chacha20poly1305.NewX(valueSecretKey)
if err != nil {
Expand Down
10 changes: 3 additions & 7 deletions pkg/encryptor/encryptor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,19 @@ import "testing"

const (
testEncryptKey = "t7SxRu9tFGK%Y!cE9PMv#kUR"
testEncryptVal = "UzhGnM9pJQ_wrYZc*DUv69*q"
)

func TestNewEncryptor(t *testing.T) {
for _, tc := range []struct {
name string
key string
val string
err bool
}{
{"+key;+val", testEncryptKey, testEncryptVal, false},
{"-key;+val", "", testEncryptVal, true},
{"+key;-val", testEncryptKey, "", false},
{"-key;-val", "", "", true},
{"+key", testEncryptKey, false},
{"-key", "", true},
} {
t.Run(tc.name, func(t *testing.T) {
_, err := NewEncryptor(tc.key, tc.val)
_, err := NewEncryptor(tc.key)
if tc.err && err == nil {
t.Fatalf("expected error, got nil")
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/encryptor/key_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
)

func TestEncryptKey(t *testing.T) {
enc, err := NewEncryptor(testEncryptKey, testEncryptVal)
enc, err := NewEncryptor(testEncryptKey)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
Expand Down Expand Up @@ -40,7 +40,7 @@ func TestEncryptKey(t *testing.T) {
}

func TestDecryptKey(t *testing.T) {
enc, err := NewEncryptor(testEncryptKey, testEncryptVal)
enc, err := NewEncryptor(testEncryptKey)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/encryptor/value_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

func TestEncryptValue(t *testing.T) {
enc, err := NewEncryptor(testEncryptKey, testEncryptVal)
enc, err := NewEncryptor(testEncryptKey)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
Expand Down Expand Up @@ -43,7 +43,7 @@ func TestEncryptValue(t *testing.T) {
}

func TestDecryptValue(t *testing.T) {
enc, err := NewEncryptor(testEncryptKey, testEncryptVal)
enc, err := NewEncryptor(testEncryptKey)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
Expand Down
7 changes: 3 additions & 4 deletions pkg/vault/config.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package vault

type Config struct {
Name string `json:"name"`
Address string `json:"address"`
EncryptionKey string `json:"encryption_key"`
EncryptionValue string `json:"encryption_value,omitempty"`
Name string `json:"name"`
Address string `json:"address"`
EncryptionKey string `json:"encryption_key"`
}

0 comments on commit c0c7e1f

Please sign in to comment.