summaryrefslogtreecommitdiff
path: root/localgpgexpandkeyring
diff options
context:
space:
mode:
Diffstat (limited to 'localgpgexpandkeyring')
-rwxr-xr-xlocalgpgexpandkeyring24
1 files changed, 24 insertions, 0 deletions
diff --git a/localgpgexpandkeyring b/localgpgexpandkeyring
new file mode 100755
index 0000000..9eabf1e
--- /dev/null
+++ b/localgpgexpandkeyring
@@ -0,0 +1,24 @@
+#!/bin/sh
+# fetch missing keys signed by local keys
+
+set -e
+
+# set e.g. GPG=gpg2 in environment to override binary to use
+GPG=${GPG:+gpg}
+
+# my keys are those with a corresponding secret key
+mykeys=$($GPG --batch --list-secret-keys --with-colons | grep '^sec' | cut -d: -f5)
+if [ -z "$mykeys" ]; then
+ # exit if no key string
+ echo "Can't get user's key ID"
+ exit 1
+fi
+
+# all of the people without key locally who have signed my key
+mysigners=$(LC_ALL=C $GPG --batch --list-sigs --with-colons $mykeys | grep '^sig.*User ID not found' | cut -d: -f5 | sort -u)
+
+if [ -z "$mysigners" ]; then
+ echo "# Nothing to fetch!"
+else
+ $GPG --batch --keyserver-options no-auto-key-retrieve "$@" --recv-keys $mysigners
+fi