public function ssh_keys_list()
 {
     $keys = array();
     foreach ($this->user->getAuthorizedKeysArray() as $ssh_key_number => $ssh_key_value) {
         $keys[] = array('ssh_key_ellipsis_value' => substr($ssh_key_value, 0, 40) . '...' . substr($ssh_key_value, -40), 'ssh_key_value' => $ssh_key_value, 'ssh_key_number' => $ssh_key_number);
     }
     return $keys;
 }
 public function deleteSSHKeys(PFUser $user, array $ssh_key_index_to_delete)
 {
     $user_keys_to_keep = $user->getAuthorizedKeysArray();
     foreach ($ssh_key_index_to_delete as $ssh_key_index) {
         unset($user_keys_to_keep[$ssh_key_index]);
     }
     $this->updateUserSSHKeys($user, array_values($user_keys_to_keep));
 }
 private function getKeysFromString($keys_as_string)
 {
     $user = new PFUser();
     $user->setAuthorizedKeys($keys_as_string);
     return array_filter($user->getAuthorizedKeysArray());
 }
 private function writeSSHFile(PFUser $user, $ssh_dir)
 {
     $authorized_keys_new = "{$ssh_dir}/authorized_keys_new";
     touch($authorized_keys_new);
     $this->backend->chmod($authorized_keys_new, 0600);
     $ssh_keys = implode("\n", $user->getAuthorizedKeysArray());
     if (file_put_contents($authorized_keys_new, $ssh_keys) === false) {
         throw new RuntimeException("Unable to write authorized_keys_new file for " . $user->getUserName());
     }
     if (rename($authorized_keys_new, "{$ssh_dir}/authorized_keys") === false) {
         throw new RuntimeException("Unable to rename {$authorized_keys_new} file for " . $user->getUserName());
     }
 }