diff --git a/go.mod b/go.mod index cdbbdca8..d7a0231c 100644 --- a/go.mod +++ b/go.mod @@ -124,5 +124,5 @@ replace ( github.com/emersion/go-message => github.com/ProtonMail/go-message v0.13.1-0.20230526094639-b62c999c85b7 github.com/emersion/go-smtp => github.com/ProtonMail/go-smtp v0.0.0-20231109081432-2b3d50599865 github.com/go-resty/resty/v2 => github.com/LBeernaertProton/resty/v2 v2.0.0-20231129100320-dddf8030d93a - github.com/keybase/go-keychain => github.com/cuthix/go-keychain v0.0.0-20230517073537-fc1740a83768 + github.com/keybase/go-keychain => github.com/cuthix/go-keychain v0.0.0-20240103134243-0b6a41580b77 ) diff --git a/go.sum b/go.sum index a92efc52..43f960f3 100644 --- a/go.sum +++ b/go.sum @@ -107,8 +107,8 @@ github.com/cucumber/godog v0.12.5/go.mod h1:u6SD7IXC49dLpPN35kal0oYEjsXZWee4pW6T github.com/cucumber/messages-go/v16 v16.0.0/go.mod h1:EJcyR5Mm5ZuDsKJnT2N9KRnBK30BGjtYotDKpwQ0v6g= github.com/cucumber/messages-go/v16 v16.0.1 h1:fvkpwsLgnIm0qugftrw2YwNlio+ABe2Iu94Ap8GMYIY= github.com/cucumber/messages-go/v16 v16.0.1/go.mod h1:EJcyR5Mm5ZuDsKJnT2N9KRnBK30BGjtYotDKpwQ0v6g= -github.com/cuthix/go-keychain v0.0.0-20230517073537-fc1740a83768 h1:Jrcoxtrk4qpuzKIYPlEkjIK0M+bABs0oW2QzrOuwlzk= -github.com/cuthix/go-keychain v0.0.0-20230517073537-fc1740a83768/go.mod h1:ZoZU1fnBy3mOLWr3Pg+Y2+nTKtu6ypDte2kZg9HvSwY= +github.com/cuthix/go-keychain v0.0.0-20240103134243-0b6a41580b77 h1:sdB/yJMbubPQothFl6KYCOrMBRgy0pZbBXIWoJqSFLo= +github.com/cuthix/go-keychain v0.0.0-20240103134243-0b6a41580b77/go.mod h1:ZoZU1fnBy3mOLWr3Pg+Y2+nTKtu6ypDte2kZg9HvSwY= github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= diff --git a/internal/app/vault.go b/internal/app/vault.go index 4d98ad4b..eaa2b310 100644 --- a/internal/app/vault.go +++ b/internal/app/vault.go @@ -104,14 +104,11 @@ func loadVaultKey(vaultDir string, keychains *keychain.List) ([]byte, error) { return nil, fmt.Errorf("could not create keychain: %w", err) } - has, err := vault.HasVaultKey(kc) + key, err := vault.GetVaultKey(kc) if err != nil { - return nil, fmt.Errorf("could not check for vault key: %w", err) + logrus.WithError(err).Warn("Not possible to retrieve vault key, generating new") + return vault.NewVaultKey(kc) } - if has { - return vault.GetVaultKey(kc) - } - - return vault.NewVaultKey(kc) + return key, nil } diff --git a/internal/vault/helper.go b/internal/vault/helper.go index a784ec2e..b0a965eb 100644 --- a/internal/vault/helper.go +++ b/internal/vault/helper.go @@ -28,7 +28,6 @@ import ( "github.com/ProtonMail/gopenpgp/v2/crypto" "github.com/ProtonMail/proton-bridge/v3/pkg/keychain" - "golang.org/x/exp/slices" ) const vaultSecretName = "bridge-vault-key" @@ -69,15 +68,6 @@ func SetHelper(vaultDir, helper string) error { return os.WriteFile(getKeychainPrefPath(vaultDir), b, 0o600) } -func HasVaultKey(kc *keychain.Keychain) (bool, error) { - secrets, err := kc.List() - if err != nil { - return false, fmt.Errorf("could not list keychain: %w", err) - } - - return slices.Contains(secrets, vaultSecretName), nil -} - func GetVaultKey(kc *keychain.Keychain) ([]byte, error) { _, keyEnc, err := kc.Get(vaultSecretName) if err != nil {