Skip to content

Instantly share code, notes, and snippets.

@cyberdelia
Last active March 23, 2023 23:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cyberdelia/91f7ec06a745310cec0615820ead8652 to your computer and use it in GitHub Desktop.
Save cyberdelia/91f7ec06a745310cec0615820ead8652 to your computer and use it in GitHub Desktop.
Secure Agent — Authentication agent using the Secure Enclave
secure-agent --generate-completion-script fish
secure-agent --generate-completion-script bash
secure-agent --generate-completion-script zsh
function __agent_is_started -d "check if ssh agent is already started"
if begin; test -f $SSH_ENV; and test -z "$SSH_AGENT_PID"; end
source $SSH_ENV > /dev/null
end
if test -z "$SSH_AGENT_PID"
return 1
end
ps -p $SSH_AGENT_PID > /dev/null
return $status
end
function __agent_start -d "start a new ssh agent"
secure-agent daemon > $SSH_ENV
chmod 600 $SSH_ENV
source $SSH_ENV > /dev/null
true
end
function fish_ssh_agent --description "start ssh-agent if not started yet, or uses already started ssh-agent."
if test -z "$SSH_ENV"
set -xg SSH_ENV $HOME/.ssh/environment
end
if not __agent_is_started
__agent_start
end
end
fish_ssh_agent
function start_ssh_agent() {
secure-agent daemon | head -n 2 >! $ssh_environment
chmod 600 $ssh_environment
source $ssh_environment > /dev/null
}
ssh_environment="$HOME/.ssh/environment"
if [[ -f "$ssh_environment" ]]; then
source $ssh_environment > /dev/null
ps x | grep secure-agent | grep -q $SSH_AGENT_PID || {
start_ssh_agent
}
else
start_ssh_agent
fi
unset ssh_environment
unfunction start_ssh_agent
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment