+list_keys_from_keyring() {
+ local KEYRINGFILE="$1"
+ shift
+ # don't show the error message if this keyring doesn't include the key
+ $GPG_CMD --keyring "$KEYRINGFILE" --batch --list-keys "$@" 2>/dev/null || true
+}
+
+fingerprint_keys_from_keyring() {
+ local KEYRINGFILE="$1"
+ shift
+ # don't show the error message if this keyring doesn't include the fingerprint
+ $GPG_CMD --keyring "$KEYRINGFILE" --batch --fingerprint "$@" 2>/dev/null || true
+}
+
+import_keys_from_keyring() {
+ local IMPORT="$1"
+ local KEYRINGFILE="$2"
+ $GPG_CMD --keyring "$KEYRINGFILE" --batch --import "$IMPORT" >/dev/null 2>&1
+}
+
+setup_merged_keyring() {
+ local TRUSTEDFILE_BAK="$TRUSTEDFILE"
+ TRUSTEDFILE='/dev/null'
+ foreach_keyring_do 'import_keys_from_keyring' "${GPGHOMEDIR}/trusted.gpg"
+ TRUSTEDFILE="$TRUSTEDFILE_BAK"
+ # mark it as non-writeable so users get errors if gnupg tries to modify it
+ if [ -s "${GPGHOMEDIR}/trusted.gpg" ]; then
+ chmod -w "${GPGHOMEDIR}/trusted.gpg"
+ GPG="$GPG --keyring ${GPGHOMEDIR}/trusted.gpg"
+ fi
+ if [ -r "$TRUSTEDFILE" ]; then
+ GPG="$GPG --keyring $TRUSTEDFILE --primary-keyring $TRUSTEDFILE"
+ fi
+}
+
+