blob: 67a63119d20d7319876b7e8b6ae75b4b756ecc43 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#!/bin/sh
# Copyright (C) 2013 g10 Code GmbH
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved. This file is
# distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY, to the extent permitted by law; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
if [ -z "$(command -v gpg-connect-agent$EXEEXT)" ]; then
echo "gpg-agent not installed and thus not started" >&2
exit 0;
fi
GPG_AGENT_INFO=
export GPG_AGENT_INFO
GPG_AGENT=$(which gpg-agent$EXEEXT)
token=$(echo "gpgme-$(pwd)" | tr ' ' '_')
if [ "$1" = "--stop" ]; then
RES=$(gpg-connect-agent$EXEEXT --no-autostart "getval $token" /bye 2>/dev/null | tr -d '\r' | head -1)
if [ "$RES" != "D set" ]; then
echo "gpg-agent not running" >&2
exit 0
fi
echo "stopping gpg-agent " >&2
gpg-connect-agent$EXEEXT KILLAGENT /bye >/dev/null 2>&1
exit 0
fi
RES=$(gpg-connect-agent$EXEEXT --no-autostart "getval $token" /bye 2>/dev/null | tr -d '\r' | head -1)
if [ "$RES" = "D set" ]; then
echo "gpg-agent already running" >&2
exit 0
fi
echo "starting gpg-agent.." >&2
# GnuPG prior to 2.1.12 needs --allow-loopback-pinentry for the
# loopback entry to work. Old versions do not understand this though,
# so we need to be careful.
if "$GPG_AGENT" --gpgconf-test --allow-loopback-pinentry &&
test -f "$GNUPGHOME/gpg-agent.conf" &&
! grep -q allow-loopback-pinentry "$GNUPGHOME/gpg-agent.conf"; then
echo allow-loopback-pinentry >> "$GNUPGHOME/gpg-agent.conf"
fi
gpg-connect-agent$EXEEXT --agent-program="${GPG_AGENT}|--debug-quick-random" "putval $token set" /bye
if [ $? -ne 0 ]; then
echo "error starting gpg-agent" >&2
exit 1
fi
RES=$(gpg-connect-agent$EXEEXT "getval $token" /bye 2>/dev/null | tr -d '\r' | head -1)
if [ "$RES" != "D set" ]; then
echo "error starting gpg-agent" >&2
exit 1
fi
exit 0
|