code: func idKeyData(id string) [][]byte {
  	idPath, err := filepath.Abs(id)
  	if err != nil {
  		return nil
  	}
  
  	var fileData [][]byte
  
  	paths := []string{idPath}
  
  	if !strings.HasSuffix(idPath, ".pub") {
  		paths = append(paths, idPath+".pub")
  	}
  
  	for _, p := range paths {
  		d, err := ioutil.ReadFile(p)
  		if err != nil {
  			log.Printf("[DEBUG] error reading %q: %s", p, err)
  			continue
  		}
  		log.Printf("[DEBUG] found identity data at %q", p)
  		fileData = append(fileData, d)
  	}
  
  	return fileData
  }
docs: // Try to read an id file using the id as the file path. Also read the .pub
  // file if it exists, as the id file may be encrypted. Return only the file
  // data read. We don't need to know what data came from which path, as we will
  // try parsing each as a private key, a public key and an authorized key
  // regardless.