satellite/orders: ensure encryption keys handles set twice

Currently flag parsing seems to call Set twice, which causes problems
with encryption keys. We can clear for every set for now.

Change-Id: Id5c695b4020194ac1c50a2da9c7d2a896cb9216f
This commit is contained in:
Egon Elbre 2020-11-23 21:24:22 +02:00
parent 575f50df84
commit 9de1617db0

View File

@ -152,11 +152,13 @@ func (keys *EncryptionKeys) Set(s string) error {
return nil return nil
} }
keys.Clear()
for _, x := range strings.Split(s, ",") { for _, x := range strings.Split(s, ",") {
x = strings.TrimSpace(x) x = strings.TrimSpace(x)
var ekey EncryptionKey var ekey EncryptionKey
if err := ekey.Set(x); err != nil { if err := ekey.Set(x); err != nil {
return ErrEncryptionKey.New("invalid keys %q: %v", s, err) return ErrEncryptionKey.New("invalid keys %q: %w", s, err)
} }
if err := keys.Add(ekey); err != nil { if err := keys.Add(ekey); err != nil {
return err return err
@ -180,7 +182,7 @@ func (keys *EncryptionKeys) Add(ekey EncryptionKey) error {
} }
if _, exists := keys.KeyByID[ekey.ID]; exists { if _, exists := keys.KeyByID[ekey.ID]; exists {
return ErrEncryptionKey.New("duplicate key identifier %q", ekey) return ErrEncryptionKey.New("duplicate key identifier %q", ekey.String())
} }
keys.List = append(keys.List, ekey) keys.List = append(keys.List, ekey)
@ -188,6 +190,13 @@ func (keys *EncryptionKeys) Add(ekey EncryptionKey) error {
return nil return nil
} }
// Clear removes all keys.
func (keys *EncryptionKeys) Clear() {
keys.Default = EncryptionKey{}
keys.List = nil
keys.KeyByID = map[EncryptionKeyID]storj.Key{}
}
// String is required for pflag.Value. // String is required for pflag.Value.
func (keys *EncryptionKeys) String() string { func (keys *EncryptionKeys) String() string {
var s strings.Builder var s strings.Builder