commit:     daec48a7895d7a4b04d55ddf35397fb07b48f68b
Author:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Sat May  4 03:22:15 2019 +0000
Commit:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Sat May  4 03:22:15 2019 +0000
URL:        https://gitweb.gentoo.org/proj/qa-scripts.git/commit/?id=daec48a7

keyrings: prepare to flip to new scripts

Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>

 create-dev-keyrings.bash             |  5 +++++
 keyrings-export-keys.gentoo.org.bash | 18 ++++++++++++++++++
 keyrings-import-keys.gentoo.org.bash | 23 +++++++++++++++++++++++
 keyrings-import-sks.bash             | 23 +++++++++++++++++++++++
 keyrings.inc.bash                    | 29 +++++++++++++++++++----------
 5 files changed, 88 insertions(+), 10 deletions(-)

diff --git a/create-dev-keyrings.bash b/create-dev-keyrings.bash
index 3f65550..f2772d8 100755
--- a/create-dev-keyrings.bash
+++ b/create-dev-keyrings.bash
@@ -11,6 +11,9 @@ source "${BASEDIR}"/keyrings.inc.bash
 set -e
 export_ldap_data_to_env
 
+export KEYSERVERS=( "${KS_SKS}" "${KS_GENTOO}" )
+export KEYSERVER_TIMEOUT=20m
+
 grab_keys "${SYSTEM_KEYS[@]}"
 export_keys "${OUTPUT_DIR}"/service-keys.gpg \
        "${SYSTEM_KEYS[@]}"
@@ -39,6 +42,8 @@ export_keys "${OUTPUT_DIR}"/all-devs.gpg \
        "${RETIRED_DEVS[@]}"
 
 # Populate keys.gentoo.org with the keys we have, since they might have come 
from SKS
+export KEYSERVERS=( "${KS_GENTOO}" )
+export KEYSERVER_TIMEOUT=20m
 push_keys "${SYSTEM_KEYS[@]}"
 push_keys "${COMMITTING_DEVS[@]}"
 push_keys "${NONCOMMITTING_DEVS[@]}"

diff --git a/keyrings-export-keys.gentoo.org.bash 
b/keyrings-export-keys.gentoo.org.bash
new file mode 100755
index 0000000..38a3478
--- /dev/null
+++ b/keyrings-export-keys.gentoo.org.bash
@@ -0,0 +1,18 @@
+#!/bin/bash
+# Export key updates to Keyservers: keys.gentoo.org
+
+OUTPUT_DIR=${1:-.}
+BASEDIR="$(dirname "$0")"
+source "${BASEDIR}"/keyrings.inc.bash
+
+set -e
+export_ldap_data_to_env
+
+export KEYSERVERS=( "${KS_GENTOO}" )
+export KEYSERVER_TIMEOUT=5m
+
+# Populate keys.gentoo.org with the keys we have, since they might have come 
from SKS
+push_keys "${SYSTEM_KEYS[@]}"
+push_keys "${COMMITTING_DEVS[@]}"
+push_keys "${NONCOMMITTING_DEVS[@]}"
+push_keys "${RETIRED_DEVS[@]}"

diff --git a/keyrings-import-keys.gentoo.org.bash 
b/keyrings-import-keys.gentoo.org.bash
new file mode 100755
index 0000000..3328e2c
--- /dev/null
+++ b/keyrings-import-keys.gentoo.org.bash
@@ -0,0 +1,23 @@
+#!/bin/bash
+# Import key updates from Keyservers: keys.gentoo.org
+#
+# TODO:
+# - Turn off export in this script
+
+OUTPUT_DIR=${1:-.}
+BASEDIR="$(dirname "$0")"
+source "${BASEDIR}"/keyrings.inc.bash
+
+set -e
+export_ldap_data_to_env
+
+export KEYSERVERS=( "${KS_GENTOO}" )
+export KEYSERVER_TIMEOUT=5m
+
+grab_keys "${SYSTEM_KEYS[@]}"
+grab_keys "${COMMITTING_DEVS[@]}"
+grab_keys "${NONCOMMITTING_DEVS[@]}"
+# -- not all are on keyservers
+# -- and are unlikely to turn up now
+# -- this needs to fetch from some archive instead
+grab_keys "${RETIRED_DEVS[@]}"

diff --git a/keyrings-import-sks.bash b/keyrings-import-sks.bash
new file mode 100755
index 0000000..3d04ebc
--- /dev/null
+++ b/keyrings-import-sks.bash
@@ -0,0 +1,23 @@
+#!/bin/bash
+# Import key updates from Keyservers
+#
+# TODO:
+# - Turn off export in this script
+
+OUTPUT_DIR=${1:-.}
+BASEDIR="$(dirname "$0")"
+source "${BASEDIR}"/keyrings.inc.bash
+
+set -e
+export_ldap_data_to_env
+
+export KEYSERVER=( ${KS_SKS} )
+export KEYSERVER_TIMEOUT=20m
+
+grab_keys "${SYSTEM_KEYS[@]}"
+grab_keys "${COMMITTING_DEVS[@]}"
+grab_keys "${NONCOMMITTING_DEVS[@]}"
+# -- not all are on keyservers
+# -- and are unlikely to turn up now
+# -- this needs to fetch from some archive instead
+#grab_keys "${RETIRED_DEVS[@]}"

diff --git a/keyrings.inc.bash b/keyrings.inc.bash
index 052550d..427a6f2 100644
--- a/keyrings.inc.bash
+++ b/keyrings.inc.bash
@@ -9,12 +9,7 @@ RETIRED_RULE='(!(gentooStatus=active))'
 
 KS_GENTOO=hkps://keys.gentoo.org/
 KS_SKS=hkps://hkps.pool.sks-keyservers.net/
-
-GPG_TMPDIR=$(mktemp -d)
-clean_tmp() {
-       rm -rf "$GPG_TMPDIR"
-}
-trap clean_tmp EXIT
+KEYSERVERS=( ) # empty by default
 
 # grab_ldap_fingerprints <ldap-rule>
 grab_ldap_fingerprints() {
@@ -30,9 +25,11 @@ grab_keys() {
        local missing=()
        local remaining=( "${@}" )
 
+       KEYSERVER_TIMEOUT=${KEYSERVER_TIMEOUT:=1m}
        while :; do
-               timeout 5m  gpg --keyserver $KS_GENTOO -q --recv-keys 
"${remaining[@]}" || :
-               timeout 20m gpg --keyserver $KS_SKS -q --recv-keys 
"${remaining[@]}" || :
+               for ks in "${KEYSERVERS[@]}" ; do
+                       timeout ${KEYSERVER_TIMEOUT}  gpg --keyserver "$ks" -q 
--recv-keys "${remaining[@]}" || :
+               done
                missing=()
                for key in "${remaining[@]}"; do
                        gpg --list-public "${key}" &>/dev/null || missing+=( 
"${key}" )
@@ -58,12 +55,24 @@ grab_keys() {
 push_keys() {
        # Only send keys that we have
        local remaining=( $(gpg --with-colon --list-public "${@}" | sed -n 
'/^pub/{n; /fpr/p }' |cut -d: -f10) )
-       timeout 5m  gpg --keyserver $KS_GENTOO -q --send-keys "${remaining[@]}" 
|| :
-       #timeout 5m  gpg --keyserver $KS_SKS -q --send-keys "${remaining[@]}" 
|| :
+       KEYSERVER_TIMEOUT=${KEYSERVER_TIMEOUT:=1m}
+       for ks in "${KEYSERVERS[@]}" ; do
+               timeout 5m  ${KEYSERVER_TIMEOUT} g --keyserver "$ks" -q 
--send-keys "${remaining[@]}" || :
+       done
+}
+
+
+clean_tmp() {
+       [ -n "$GPG_TMPDIR" ] && [ -d "$GPG_TMPDIR" ] && rm -rf "$GPG_TMPDIR"
+}
+setup_tmp() {
+       export GPG_TMPDIR=$(mktemp -d)
+       trap clean_tmp EXIT
 }
 
 export_keys() {
        DST="$1"
+       setup_tmp
        TMP="${GPG_TMPDIR}"/$(basename "${DST}")
        # Must not exist, otherwise GPG will give error
        [[ -f "${TMP}" ]] && rm -f "${TMP}"

Reply via email to