@@ -13,7 +13,6 @@ import (
1313
1414 "github.com/docker/docker-credential-helpers/credentials"
1515 "github.com/jsipprell/keyctl"
16- "github.com/pkg/errors"
1716)
1817
1918// Keyctl based credential helper looks for a default keyring inside
@@ -36,11 +35,11 @@ func (k Keyctl) createDefaultPersistentKeyring() (string, error) {
3635 cmd .Stdout = & out
3736 err := cmd .Run ()
3837 if err != nil {
39- return "" , errors . Wrapf ( err , "cannot run keyctl command to create persistent keyring %+v : %s " , err , errout .String ())
38+ return "" , fmt . Errorf ( "cannot run keyctl command to create persistent keyring: %s : %w " , errout .String (), err )
4039 }
4140 persistentKeyringID := out .String ()
4241 if err != nil {
43- return "" , errors . Wrapf ( err , "cannot create or read persistent keyring %+v " , err )
42+ return "" , fmt . Errorf ( "cannot create or read persistent keyring: %w " , err )
4443 }
4544 return persistentKeyringID , nil
4645}
@@ -49,12 +48,12 @@ func (k Keyctl) getDefaultCredsStoreFromPersistent() (keyctl.NamedKeyring, error
4948 var out , errout bytes.Buffer
5049 persistentKeyringID , err := k .createDefaultPersistentKeyring ()
5150 if err != nil {
52- return nil , errors . Wrap ( err , "default persistent keyring cannot be created" )
51+ return nil , fmt . Errorf ( "default persistent keyring cannot be created: %w" , err )
5352 }
5453
5554 defaultSessionKeyring , err := keyctl .SessionKeyring ()
5655 if err != nil {
57- return nil , errors . New ("errors getting session keyring" )
56+ return nil , fmt . Errorf ("errors getting session keyring: %w" , err )
5857 }
5958
6059 defaultKeyring , err := keyctl .OpenKeyring (defaultSessionKeyring , defaultKeyringName )
@@ -65,13 +64,13 @@ func (k Keyctl) getDefaultCredsStoreFromPersistent() (keyctl.NamedKeyring, error
6564 cmd .Stderr = & errout
6665 err := cmd .Run ()
6766 if err != nil {
68- return nil , errors . Wrapf ( err , "cannot run keyctl command to created credstore keyring %s %s %s" , cmd .String (), errout .String (), out .String ())
67+ return nil , fmt . Errorf ( "cannot run keyctl command to created credstore keyring (%s): %s %s: %w " , cmd .String (), errout .String (), out .String (), err )
6968 }
7069 }
7170 /* Search for it again and return the default keyring*/
7271 defaultKeyring , err = keyctl .OpenKeyring (defaultSessionKeyring , defaultKeyringName )
7372 if err != nil {
74- return nil , errors . Wrap ( err , "failed to lookup default session keyring" )
73+ return nil , fmt . Errorf ( "failed to lookup default session keyring: %w" , err )
7574 }
7675
7776 return defaultKeyring , nil
@@ -80,25 +79,32 @@ func (k Keyctl) getDefaultCredsStoreFromPersistent() (keyctl.NamedKeyring, error
8079// getDefaultCredsStore is a helper function to get the default credsStore keyring
8180func (k Keyctl ) getDefaultCredsStore () (keyctl.NamedKeyring , error ) {
8281 if persistent == 1 {
83- return k .getDefaultCredsStoreFromPersistent ()
82+ cs , err := k .getDefaultCredsStoreFromPersistent ()
83+ if err != nil {
84+ return nil , err
85+ }
86+ if cs == nil {
87+ return nil , fmt .Errorf ("nil credstore" )
88+ }
89+ return cs , err
8490 }
8591 defaultSessionKeyring , err := keyctl .SessionKeyring ()
8692 if err != nil {
87- return nil , errors . Wrap ( err , "error getting session keyring" )
93+ return nil , fmt . Errorf ( "error getting session keyring: %w" , err )
8894 }
8995
9096 defaultKeyring , err := keyctl .OpenKeyring (defaultSessionKeyring , defaultKeyringName )
9197 if err != nil || defaultKeyring == nil {
9298 if defaultKeyring == nil {
9399 defaultKeyring , err = keyctl .CreateKeyring (defaultSessionKeyring , defaultKeyringName )
94100 if err != nil {
95- return nil , errors . Wrap ( err , "failed to create default credsStore keyring" )
101+ return nil , fmt . Errorf ( "failed to create default credsStore keyring: %w" , err )
96102 }
97103 }
98104 }
99105
100106 if defaultKeyring == nil {
101- return nil , errors . Wrap ( errors . New ( "" ), " nil credstore" )
107+ return nil , fmt . Errorf ( " nil credstore" )
102108 }
103109
104110 return defaultKeyring , nil
@@ -107,29 +113,29 @@ func (k Keyctl) getDefaultCredsStore() (keyctl.NamedKeyring, error) {
107113// Add adds new credentials to the keychain.
108114func (k Keyctl ) Add (creds * credentials.Credentials ) error {
109115 defaultKeyring , err := k .getDefaultCredsStore ()
110- if err != nil || defaultKeyring == nil {
111- return errors . Wrapf ( err , "failed to create credsStore entry for %s" , creds .ServerURL )
116+ if err != nil {
117+ return fmt . Errorf ( "failed to create credsStore entry for %s: %w " , creds .ServerURL , err )
112118 }
113119
114120 // create a child keyring under default for given url
115121 encoded := base64 .URLEncoding .EncodeToString ([]byte (strings .TrimSuffix (creds .ServerURL , "\n " )))
116122 urlKeyring , err := keyctl .CreateKeyring (defaultKeyring , encoded )
117123 if err != nil {
118- return errors . Wrapf ( err , "failed to create keyring for %s" , creds .ServerURL )
124+ return fmt . Errorf ( "failed to create keyring for %s: %w " , creds .ServerURL , err )
119125 }
120126
121127 _ , err = urlKeyring .Add (creds .Username , []byte (creds .Secret ))
122128 if err != nil {
123- return errors . Wrapf ( err , "failed to add creds to keryring for %s with error : %+v " , creds .ServerURL , err )
129+ return fmt . Errorf ( "failed to add creds to keryring for %s: %w " , creds .ServerURL , err )
124130 }
125131 return err
126132}
127133
128134// searchHelper function searches for an url inside the default keyring.
129135func (k Keyctl ) searchHelper (serverURL string ) (keyctl.NamedKeyring , string , error ) {
130136 defaultKeyring , err := k .getDefaultCredsStore ()
131- if err != nil || defaultKeyring == nil {
132- return nil , "" , fmt .Errorf ("searchHelper failed: cannot read defaultCredsStore" )
137+ if err != nil {
138+ return nil , "" , fmt .Errorf ("searchHelper failed: cannot read defaultCredsStore: %w" , err )
133139 }
134140
135141 encoded := base64 .URLEncoding .EncodeToString ([]byte (strings .TrimSuffix (serverURL , "\n " )))
@@ -166,21 +172,21 @@ func (k Keyctl) searchHelper(serverURL string) (keyctl.NamedKeyring, string, err
166172// Get returns the username and secret to use for a given registry server URL.
167173func (k Keyctl ) Get (serverURL string ) (string , string , error ) {
168174 if serverURL == "" {
169- return "" , "" , errors . New ("missing server url" )
175+ return "" , "" , fmt . Errorf ("missing server url" )
170176 }
171177
172178 serverURL = strings .TrimSuffix (serverURL , "\n " )
173179 urlKeyring , searchData , err := k .searchHelper (serverURL )
174180 if err != nil {
175- return "" , "" , errors . Wrapf ( err , "url not found by searchHelper: %s err: %v " , serverURL , err )
181+ return "" , "" , fmt . Errorf ( "url (%s) not found by searchHelper: %w " , serverURL , err )
176182 }
177183 key , err := urlKeyring .Search (searchData )
178184 if err != nil {
179- return "" , "" , errors . Wrapf ( err , "url not found in %+v" , urlKeyring )
185+ return "" , "" , fmt . Errorf ( "url (%s) not found in %+v: %w " , serverURL , urlKeyring , err )
180186 }
181187 secret , err := key .Get ()
182188 if err != nil {
183- return "" , "" , errors . Wrapf ( err , "failed to read credentials for %s:%s " , serverURL , searchData )
189+ return "" , "" , fmt . Errorf ( "failed to read credentials for url (%s): %s: %w " , serverURL , searchData , err )
184190 }
185191
186192 return searchData , string (secret ), nil
@@ -191,7 +197,7 @@ func (k Keyctl) Delete(serverURL string) error {
191197 serverURL = strings .TrimSuffix (serverURL , "\n " )
192198 urlKeyring , searchData , err := k .searchHelper (serverURL )
193199 if err != nil {
194- return errors . Wrapf ( err , "cannot find server url %s " , serverURL )
200+ return fmt . Errorf ( "cannot find server url (%s): %w " , serverURL , err )
195201 }
196202
197203 key , err := urlKeyring .Search (searchData )
@@ -209,9 +215,9 @@ func (k Keyctl) Delete(serverURL string) error {
209215 fmt .Printf ("cannot list keyring %s" , urlKeyring .Name ())
210216 }
211217 if len (refs ) == 0 {
212- keyctl .UnlinkKeyring (urlKeyring )
218+ _ = keyctl .UnlinkKeyring (urlKeyring )
213219 } else {
214- return errors . Wrapf ( err , "Canot remove keyring as its not empty %s" , urlKeyring .Name ())
220+ return fmt . Errorf ( "canot remove keyring as its not empty %s" , urlKeyring .Name ())
215221 }
216222
217223 return err
@@ -220,8 +226,8 @@ func (k Keyctl) Delete(serverURL string) error {
220226// List returns the stored URLs and corresponding usernames for a given credentials label
221227func (k Keyctl ) List () (map [string ]string , error ) {
222228 defaultKeyring , err := k .getDefaultCredsStore ()
223- if err != nil || defaultKeyring == nil {
224- return nil , errors . Wrap ( err , "List() failed: cannot read default credStore" )
229+ if err != nil {
230+ return nil , fmt . Errorf ( " failed to list credentials : cannot read default credStore: %w" , err )
225231 }
226232
227233 resp := map [string ]string {}
0 commit comments