diff --git a/credentials/credentials.go b/credentials/credentials.go index 3c4eec7..e25103e 100644 --- a/credentials/credentials.go +++ b/credentials/credentials.go @@ -12,11 +12,16 @@ import ( // Credentials holds the information shared between docker and the credentials store. type Credentials struct { + Label string ServerURL string Username string Secret string } +// Docker credentials should be labeled as such in credential stores, this label +// allow us to filter out non-Docker credentials at lookup +const CredsLabel = "Docker Credentials" + // Serve initializes the credentials helper and parses the action argument. // This function is designed to be called from a command line interface. // It uses os.Args[1] as the key for the action. @@ -72,6 +77,8 @@ func Store(helper Helper, reader io.Reader) error { return err } + creds.Label = CredsLabel + return helper.Add(&creds) } @@ -133,7 +140,7 @@ func Erase(helper Helper, reader io.Reader) error { //List returns all the serverURLs of keys in //the OS store as a list of strings func List(helper Helper, writer io.Writer) error { - accts, err := helper.List() + accts, err := helper.List(CredsLabel) if err != nil { return err } diff --git a/credentials/credentials_test.go b/credentials/credentials_test.go index 6b8bbe1..3c2ca52 100644 --- a/credentials/credentials_test.go +++ b/credentials/credentials_test.go @@ -36,7 +36,7 @@ func (m *memoryStore) Get(serverURL string) (string, string, error) { return c.Username, c.Secret, nil } -func (m *memoryStore) List() (map[string]string, error) { +func (m *memoryStore) List(credsLabel string) (map[string]string, error) { //Simply a placeholder to let memoryStore be a valid implementation of Helper interface return nil, nil } diff --git a/credentials/helper.go b/credentials/helper.go index 135acd2..fad53ee 100644 --- a/credentials/helper.go +++ b/credentials/helper.go @@ -9,6 +9,7 @@ type Helper interface { // Get retrieves credentials from the store. // It returns username and secret as strings. Get(serverURL string) (string, string, error) - // List returns the stored serverURLs and their associated usernames. - List() (map[string]string, error) + // List returns the stored serverURLs and their associated usernames + // for a given credentials label. + List(credsLabel string) (map[string]string, error) }