From 0c458f709f8e6158639193bf4f3664562a14abf0 Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Thu, 28 Jan 2021 16:07:14 +0100 Subject: [PATCH] fix: use correct (historical) macOS keychain name --- pkg/keychain/keychain.go | 5 ---- pkg/keychain/keychain_darwin.go | 30 ++++++++++++++++++++ pkg/keychain/keychain_default.go | 33 ++++------------------ pkg/keychain/keychain_missing.go | 47 ++++++++++++++++++++++++++++++++ unreleased.md | 1 + 5 files changed, 84 insertions(+), 32 deletions(-) create mode 100644 pkg/keychain/keychain_darwin.go create mode 100644 pkg/keychain/keychain_missing.go diff --git a/pkg/keychain/keychain.go b/pkg/keychain/keychain.go index 2aeb82dd..f5e9fc2a 100644 --- a/pkg/keychain/keychain.go +++ b/pkg/keychain/keychain.go @@ -72,11 +72,6 @@ func NewKeychain(s *settings.Settings, keychainName string) (*Keychain, error) { return newKeychain(helper, hostURL(keychainName)), nil } -// hostURL uniquely identifies the app's keychain items within the system keychain. -func hostURL(keychainName string) string { - return fmt.Sprintf("protonmail/%v/users", keychainName) -} - func newKeychain(helper credentials.Helper, url string) *Keychain { return &Keychain{ helper: helper, diff --git a/pkg/keychain/keychain_darwin.go b/pkg/keychain/keychain_darwin.go new file mode 100644 index 00000000..64e325d7 --- /dev/null +++ b/pkg/keychain/keychain_darwin.go @@ -0,0 +1,30 @@ +// Copyright (c) 2021 Proton Technologies AG +// +// This file is part of ProtonMail Bridge. +// +// ProtonMail Bridge is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// ProtonMail Bridge is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with ProtonMail Bridge. If not, see . + +// +build darwin + +package keychain + +import ( + "fmt" + "strings" +) + +// hostURL uniquely identifies the app's keychain items within the system keychain. +func hostURL(keychainName string) string { + return fmt.Sprintf("ProtonMail%vService", strings.Title(keychainName)) +} diff --git a/pkg/keychain/keychain_default.go b/pkg/keychain/keychain_default.go index 0272ed1e..c7c30220 100644 --- a/pkg/keychain/keychain_default.go +++ b/pkg/keychain/keychain_default.go @@ -15,34 +15,13 @@ // You should have received a copy of the GNU General Public License // along with ProtonMail Bridge. If not, see . -// Package keychain implements a native secure password store for each platform. +// +build !darwin + package keychain -import ( - "github.com/docker/docker-credential-helpers/credentials" -) +import "fmt" -// NewMissingKeychain returns a new keychain that always returns an error. -func NewMissingKeychain() *Keychain { - return newKeychain(&missingHelper{}, "") -} - -// missingHelper is a helper which is used when no other helper is available. -// It always returns ErrNoKeychain. -type missingHelper struct{} - -func (h *missingHelper) Add(*credentials.Credentials) error { - return ErrNoKeychain -} - -func (h *missingHelper) Delete(string) error { - return ErrNoKeychain -} - -func (h *missingHelper) Get(string) (string, string, error) { - return "", "", ErrNoKeychain -} - -func (h *missingHelper) List() (map[string]string, error) { - return nil, ErrNoKeychain +// hostURL uniquely identifies the app's keychain items within the system keychain. +func hostURL(keychainName string) string { + return fmt.Sprintf("protonmail/%v/users", keychainName) } diff --git a/pkg/keychain/keychain_missing.go b/pkg/keychain/keychain_missing.go new file mode 100644 index 00000000..ab7e7dda --- /dev/null +++ b/pkg/keychain/keychain_missing.go @@ -0,0 +1,47 @@ +// Copyright (c) 2021 Proton Technologies AG +// +// This file is part of ProtonMail Bridge. +// +// ProtonMail Bridge is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// ProtonMail Bridge is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with ProtonMail Bridge. If not, see . + +package keychain + +import ( + "github.com/docker/docker-credential-helpers/credentials" +) + +// NewMissingKeychain returns a new keychain that always returns an error. +func NewMissingKeychain() *Keychain { + return newKeychain(&missingHelper{}, "") +} + +// missingHelper is a helper which is used when no other helper is available. +// It always returns ErrNoKeychain. +type missingHelper struct{} + +func (h *missingHelper) Add(*credentials.Credentials) error { + return ErrNoKeychain +} + +func (h *missingHelper) Delete(string) error { + return ErrNoKeychain +} + +func (h *missingHelper) Get(string) (string, string, error) { + return "", "", ErrNoKeychain +} + +func (h *missingHelper) List() (map[string]string, error) { + return nil, ErrNoKeychain +} diff --git a/unreleased.md b/unreleased.md index 752114de..0deef91e 100644 --- a/unreleased.md +++ b/unreleased.md @@ -12,3 +12,4 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/) ### Fixed * GODT-787 GODT-978 Fix IE and Bridge importing to sent not showing up in inbox (setting up flags properly). +* GODT-1006 Use correct macOS keychain name.