diff --git a/internal/vault/unlockers.go b/internal/vault/unlockers.go index 5ec4161..598e2c6 100644 --- a/internal/vault/unlockers.go +++ b/internal/vault/unlockers.go @@ -89,18 +89,17 @@ func (v *Vault) GetCurrentUnlocker() (secret.Unlocker, error) { // Create unlocker instance using direct constructors with filesystem var unlocker secret.Unlocker - // Convert our metadata to secret.UnlockerMetadata - secretMetadata := secret.UnlockerMetadata(metadata) + // Use metadata directly as it's already the correct type switch metadata.Type { case "passphrase": secret.Debug("Creating passphrase unlocker instance", "unlocker_type", metadata.Type) - unlocker = secret.NewPassphraseUnlocker(v.fs, unlockerDir, secretMetadata) + unlocker = secret.NewPassphraseUnlocker(v.fs, unlockerDir, metadata) case "pgp": secret.Debug("Creating PGP unlocker instance", "unlocker_type", metadata.Type) - unlocker = secret.NewPGPUnlocker(v.fs, unlockerDir, secretMetadata) + unlocker = secret.NewPGPUnlocker(v.fs, unlockerDir, metadata) case "keychain": secret.Debug("Creating keychain unlocker instance", "unlocker_type", metadata.Type) - unlocker = secret.NewKeychainUnlocker(v.fs, unlockerDir, secretMetadata) + unlocker = secret.NewKeychainUnlocker(v.fs, unlockerDir, metadata) default: secret.Debug("Unsupported unlocker type", "type", metadata.Type) return nil, fmt.Errorf("unsupported unlocker type: %s", metadata.Type) @@ -212,18 +211,15 @@ func (v *Vault) RemoveUnlocker(unlockerID string) error { unlockerDirPath = filepath.Join(unlockersDir, file.Name()) - // Convert our metadata to secret.UnlockerMetadata - secretMetadata := secret.UnlockerMetadata(metadata) - // Create the appropriate unlocker instance var tempUnlocker secret.Unlocker switch metadata.Type { case "passphrase": - tempUnlocker = secret.NewPassphraseUnlocker(v.fs, unlockerDirPath, secretMetadata) + tempUnlocker = secret.NewPassphraseUnlocker(v.fs, unlockerDirPath, metadata) case "pgp": - tempUnlocker = secret.NewPGPUnlocker(v.fs, unlockerDirPath, secretMetadata) + tempUnlocker = secret.NewPGPUnlocker(v.fs, unlockerDirPath, metadata) case "keychain": - tempUnlocker = secret.NewKeychainUnlocker(v.fs, unlockerDirPath, secretMetadata) + tempUnlocker = secret.NewKeychainUnlocker(v.fs, unlockerDirPath, metadata) default: continue } @@ -286,18 +282,15 @@ func (v *Vault) SelectUnlocker(unlockerID string) error { unlockerDirPath := filepath.Join(unlockersDir, file.Name()) - // Convert our metadata to secret.UnlockerMetadata - secretMetadata := secret.UnlockerMetadata(metadata) - // Create the appropriate unlocker instance var tempUnlocker secret.Unlocker switch metadata.Type { case "passphrase": - tempUnlocker = secret.NewPassphraseUnlocker(v.fs, unlockerDirPath, secretMetadata) + tempUnlocker = secret.NewPassphraseUnlocker(v.fs, unlockerDirPath, metadata) case "pgp": - tempUnlocker = secret.NewPGPUnlocker(v.fs, unlockerDirPath, secretMetadata) + tempUnlocker = secret.NewPGPUnlocker(v.fs, unlockerDirPath, metadata) case "keychain": - tempUnlocker = secret.NewKeychainUnlocker(v.fs, unlockerDirPath, secretMetadata) + tempUnlocker = secret.NewKeychainUnlocker(v.fs, unlockerDirPath, metadata) default: continue } @@ -419,11 +412,8 @@ func (v *Vault) CreatePassphraseUnlocker(passphrase string) (*secret.PassphraseU return nil, fmt.Errorf("failed to write encrypted long-term private key: %w", err) } - // Convert our metadata to secret.UnlockerMetadata for the constructor - secretMetadata := secret.UnlockerMetadata(metadata) - // Create the unlocker instance - unlocker := secret.NewPassphraseUnlocker(v.fs, unlockerDir, secretMetadata) + unlocker := secret.NewPassphraseUnlocker(v.fs, unlockerDir, metadata) // Select this unlocker as current if err := v.SelectUnlocker(unlocker.GetID()); err != nil {