You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
#!/bin/sh
|
|
|
|
pgp_id="7088C7421873E0DB97FF17C2245CAB70B4C225E9"
|
|
ssh_keygrip="149F16412997785363112F3DBD713BC91D51B831"
|
|
|
|
set -eu
|
|
|
|
check_bin() {
|
|
if ! which "$1" > /dev/null; then
|
|
echo "'$1' is not available" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
check_bin gpg
|
|
check_bin pinentry
|
|
echo "GPG and Pinentry located" >&2
|
|
|
|
if ! gpg -k "$pgp_id" > /dev/null 2> /dev/null; then
|
|
echo "Downloading public key" >&2
|
|
gpg --receive-keys "$pgp_id"
|
|
fi
|
|
if ! gpg -K "$pgp_id" > /dev/null 2> /dev/null; then
|
|
echo "Searching card for private keystubs" >&2
|
|
gpg --card-status
|
|
fi
|
|
|
|
if ! grep -q "pinentry-program" ~/.gnupg/gpg-agent.conf 2>/dev/null; then
|
|
echo "pinentry-program $(readlink -f "$(which pinentry)")" >> ~/.gnupg/gpg-agent.conf
|
|
fi
|
|
if ! grep -q "enable-ssh-support" ~/.gnupg/gpg-agent.conf 2>/dev/null; then
|
|
echo "enable-ssh-support" >> ~/.gnupg/gpg-agent.conf
|
|
fi
|
|
if ! grep -q "$ssh_keygrip" ~/.gnupg/sshcontrol 2>/dev/null; then
|
|
echo "$ssh_keygrip" >> ~/.gnupg/sshcontrol
|
|
fi
|
|
|
|
echo "GPG configured" >&2
|
|
|
|
gpgconf --kill gpg-agent
|
|
gpgconf --launch gpg-agent
|
|
gpg-connect-agent updatestartuptty /bye
|
|
|
|
echo "GPG Agent restarted" >&2
|
|
|