@@ -55,7 +55,7 @@ func runDaemon(cmd *Command, args []string) *ErrorStatus {
5555 if os .Getenv ("KNOX_MACHINE_AUTH" ) == "" {
5656 hostname , err := os .Hostname ()
5757 if err != nil {
58- return & ErrorStatus {fmt .Errorf ("You 're on a host with no name: %s " , err . Error () ), false }
58+ return & ErrorStatus {fmt .Errorf ("you 're on a host with no name: %w " , err ), false }
5959 }
6060 os .Setenv ("KNOX_MACHINE_AUTH" , hostname )
6161 }
@@ -90,7 +90,7 @@ func (d *daemon) loop(refresh time.Duration) {
9090
9191 watcher , err := fsnotify .NewWatcher ()
9292 if err != nil {
93- fatalf ("Unable to watch files: %s " , err . Error () )
93+ fatalf ("unable to watch files: %v " , err )
9494 }
9595 watcher .Add (d .registerFilename ())
9696
@@ -100,7 +100,7 @@ func (d *daemon) loop(refresh time.Duration) {
100100 err := d .update ()
101101 if err != nil {
102102 d .updateErrCount ++
103- logf ("Failed to update keys: %s " , err . Error () )
103+ logf ("failed to update keys: %v " , err )
104104 } else {
105105 d .successCount ++
106106 }
@@ -125,29 +125,29 @@ func (d *daemon) loop(refresh time.Duration) {
125125func (d * daemon ) initialize () error {
126126 err := os .MkdirAll (d .dir , defaultDirPermission )
127127 if err != nil {
128- return fmt .Errorf ("Failed to initialize /var/lib/knox (run 'sudo mkdir /var/lib/knox'?): %s " , err . Error () )
128+ return fmt .Errorf ("failed to initialize /var/lib/knox (run 'sudo mkdir /var/lib/knox'?): %w " , err )
129129 }
130130
131131 // Need to chmod due to a umask set on masterless puppet machines
132132 err = os .Chmod (d .dir , defaultDirPermission )
133133 if err != nil {
134- return fmt .Errorf ("Failed to open up directory permissions: %s " , err . Error () )
134+ return fmt .Errorf ("failed to open up directory permissions: %w " , err )
135135 }
136136 err = os .MkdirAll (d .keyDir (), defaultDirPermission )
137137 if err != nil {
138- return fmt .Errorf ("Failed to make key folders: %s " , err . Error () )
138+ return fmt .Errorf ("failed to make key folders: %w " , err )
139139 }
140140
141141 // Need to chmod due to a umask set on masterless puppet machines
142142 err = os .Chmod (d .keyDir (), defaultDirPermission )
143143 if err != nil {
144- return fmt .Errorf ("Failed to open up directory permissions: %s " , err . Error () )
144+ return fmt .Errorf ("failed to open up directory permissions: %w " , err )
145145 }
146146 _ , err = os .Stat (d .registerFilename ())
147147 if os .IsNotExist (err ) {
148148 err := os .WriteFile (d .registerFilename (), []byte {}, defaultFilePermission )
149149 if err != nil {
150- return fmt .Errorf ("Failed to initialize registered key file: %s " , err . Error () )
150+ return fmt .Errorf ("failed to initialize registered key file: %w " , err )
151151 }
152152 } else if err != nil {
153153 return err
@@ -156,7 +156,7 @@ func (d *daemon) initialize() error {
156156 // Need to chmod due to a umask set on masterless puppet machines
157157 err = os .Chmod (d .registerFilename (), defaultFilePermission )
158158 if err != nil {
159- return fmt .Errorf ("Failed to open up register file permissions: %s " , err . Error () )
159+ return fmt .Errorf ("failed to open up register file permissions: %w " , err )
160160 }
161161 d .registerKeyFile = NewKeysFile (d .registerFilename ())
162162 return nil
@@ -196,7 +196,7 @@ func (d *daemon) update() error {
196196 key , err := d .cli .CacheGetKey (keyID )
197197 if err != nil {
198198 // Keep going in spite of failure
199- logf ("error getting cache key: %s " , err )
199+ logf ("error getting cache key: %v " , err )
200200 // Remove existing cached key with invalid format (saved with previous version clients)
201201 if _ , err = os .Stat (d .keyFilename (keyID )); err == nil {
202202 d .deleteKey (keyID )
@@ -222,7 +222,7 @@ func (d *daemon) update() error {
222222 if err != nil {
223223 // Keep going in spite of failure
224224 d .getKeyErrCount ++
225- logf ("error processing key: %s " , err )
225+ logf ("error processing key: %v " , err )
226226 }
227227 }
228228 }
@@ -270,11 +270,13 @@ func (d daemon) keyFilename(id string) string {
270270func (d daemon ) processKey (keyID string ) error {
271271 key , err := d .cli .NetworkGetKey (keyID )
272272 if err != nil {
273- if err .Error () == "User or machine not authorized" || err .Error () == "Key identifer does not exist" {
273+ errMsg := err .Error ()
274+ // Check for authorization or key not found errors (using contains for more robust matching)
275+ if strings .Contains (errMsg , "User or machine not authorized" ) || strings .Contains (errMsg , "Key identifier does not exist" ) {
274276 // This removes keys that do not exist or the machine is unauthorized to access
275277 d .registerKeyFile .Remove ([]string {keyID })
276278 }
277- return fmt .Errorf ("Error getting key %s: %s " , keyID , err . Error () )
279+ return fmt .Errorf ("error getting key %s: %w " , keyID , err )
278280 }
279281 // Do not cache any new keys if they have invalid content
280282 if key .ID == "" || key .ACL == nil || key .VersionList == nil || key .VersionHash == "" {
@@ -284,42 +286,42 @@ func (d daemon) processKey(keyID string) error {
284286 if strings .HasPrefix (keyID , tinkPrefix ) {
285287 keysetHandle , _ , err := getTinkKeysetHandleFromKnoxVersionList (key .VersionList )
286288 if err != nil {
287- return fmt .Errorf ("Error fetching keyset handle for this tink key %s: %s " , keyID , err . Error () )
289+ return fmt .Errorf ("error fetching keyset handle for this tink key %s: %w " , keyID , err )
288290 }
289291 tinkKeyset , err := convertTinkKeysetHandleToBytes (keysetHandle )
290292 if err != nil {
291- return fmt .Errorf ("Error converting tink keyset handle to bytes %s: %s " , keyID , err . Error () )
293+ return fmt .Errorf ("error converting tink keyset handle to bytes %s: %w " , keyID , err )
292294 }
293295 key .TinkKeyset = base64 .StdEncoding .EncodeToString (tinkKeyset )
294296 }
295297
296298 b , err := json .Marshal (key )
297299 if err != nil {
298- return fmt .Errorf ("Error marshalling key %s: %s " , keyID , err . Error () )
300+ return fmt .Errorf ("error marshalling key %s: %w " , keyID , err )
299301 }
300302 // Write to tmpfile, mv to normal location. Close + rm on failures
301303 tmpFile , err := os .CreateTemp (d .dir , fmt .Sprintf (".*.%s.tmp" , keyID ))
302304 if err != nil {
303- return fmt .Errorf ("Error opening tmp file for key %s: %s " , keyID , err . Error () )
305+ return fmt .Errorf ("error opening tmp file for key %s: %w " , keyID , err )
304306 }
305307 _ , err = tmpFile .Write (b )
306308 if err != nil {
307309 tmpFile .Close ()
308310 os .Remove (tmpFile .Name ())
309- return fmt .Errorf ("Error writing key %s to file: %s " , keyID , err . Error () )
311+ return fmt .Errorf ("error writing key %s to file: %w " , keyID , err )
310312 }
311313 // Done writing
312314 tmpFile .Close ()
313315
314316 err = os .Rename (tmpFile .Name (), d .keyFilename (keyID ))
315317 if err != nil {
316318 os .Remove (tmpFile .Name ())
317- return fmt .Errorf ("Error renaming key %s temporary file: %s " , keyID , err . Error () )
319+ return fmt .Errorf ("error renaming key %s temporary file: %w " , keyID , err )
318320 }
319321
320322 err = os .Chmod (d .keyFilename (keyID ), defaultFilePermission )
321323 if err != nil {
322- return fmt .Errorf ("Failed to open up key file permissions: %s " , err . Error () )
324+ return fmt .Errorf ("failed to open up key file permissions: %w " , err )
323325 }
324326 return nil
325327}
@@ -360,7 +362,7 @@ func (k *KeysFile) Lock() error {
360362
361363 // Annotate error with path to file to make debugging easier
362364 if err != nil {
363- return fmt .Errorf ("unable to obtain lock on file '%s': %s " , k .fn , err . Error () )
365+ return fmt .Errorf ("unable to obtain lock on file '%s': %w " , k .fn , err )
364366 }
365367 return nil
366368}
@@ -371,7 +373,7 @@ func (k *KeysFile) Unlock() error {
371373
372374 // Annotate error with path to file to make debugging easier
373375 if err != nil {
374- return fmt .Errorf ("unable to release lock on file '%s': %s " , k .fn , err . Error () )
376+ return fmt .Errorf ("unable to release lock on file '%s': %w " , k .fn , err )
375377 }
376378 return nil
377379}
@@ -474,7 +476,7 @@ func identifyLockHolders(filename string) (string, error) {
474476 cmd := exec .Command ("lsof" , filename )
475477 out , err := cmd .CombinedOutput ()
476478 if err != nil {
477- return string (out ), fmt .Errorf ("error identifying lock holder: %s " , err . Error () )
479+ return string (out ), fmt .Errorf ("error identifying lock holder: %w " , err )
478480 }
479481
480482 return string (out ), nil
0 commit comments