[pacman-dev] [PATCH] pacman-key: hanlde local signing of multiple keys

Allan McRae allan at archlinux.org
Tue Jun 19 00:56:43 EDT 2012


gpg --lsign-key does not like being given multiple keys to sign.

Signed-off-by: Allan McRae <allan at archlinux.org>
---
 scripts/pacman-key.sh.in | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/scripts/pacman-key.sh.in b/scripts/pacman-key.sh.in
index e5b6021..d2389b0 100644
--- a/scripts/pacman-key.sh.in
+++ b/scripts/pacman-key.sh.in
@@ -301,7 +301,6 @@ populate_keyring() {
 	if (( ${#trusted_ids[@]} > 0 )); then
 		msg "$(gettext "Locally signing trusted keys in keyring...")"
 		for key_id in "${!trusted_ids[@]}"; do
-			msg2 "$(gettext "Locally signing key %s...")" "${key_id}"
 			lsign_keys "${key_id}"
 		done
 		msg "$(gettext "Importing owner trust values...")"
@@ -440,10 +439,19 @@ list_sigs() {
 
 lsign_keys() {
 	check_keyids_exist
-	# we cannot use --yes here as gpg would still ask for confirmation if a key has more than one uid
-	printf 'y\ny\n' | LANG=C "${GPG_PACMAN[@]}" --command-fd 0 --quiet --batch --lsign-key "$@" 2>/dev/null
-	if (( PIPESTATUS[1] )); then
-		error "$(gettext "A specified key could not be locally signed.")"
+
+	local ret=0
+	for key_id in "$@"; do
+		msg2 "$(gettext "Locally signing key %s...")" "${key_id}"
+		# we cannot use --yes here as gpg would still ask for confirmation if a key has more than one uid
+		printf 'y\ny\n' | LANG=C "${GPG_PACMAN[@]}" --command-fd 0 --quiet --batch --lsign-key "${key_id}" 2>/dev/null
+		if (( PIPESTATUS[1] )); then
+			error "$(gettext "%s could not be locally signed.")" "${key_id}"
+			ret=1
+		fi
+	done
+
+	if (( ret )); then
 		exit 1
 	fi
 }
-- 
1.7.11



More information about the pacman-dev mailing list