[Pgp-tools-commit] r439 - in trunk: caff debian

Franck Joncourt thialme-guest at alioth.debian.org
Sun Aug 30 10:12:07 UTC 2009


Author: thialme-guest
Date: 2009-08-30 10:12:07 +0000 (Sun, 30 Aug 2009)
New Revision: 439

Modified:
   trunk/caff/caff
   trunk/debian/changelog
Log:
* caff: Updated check for the local-user keyids.
  + Moved the current check to a new function get_local_user_keys().
  + Warned the user if a local-user keyid is not listed as a keyid in
    ./caffrc. (Closes: #540165).



Modified: trunk/caff/caff
===================================================================
--- trunk/caff/caff	2009-07-27 18:07:08 UTC (rev 438)
+++ trunk/caff/caff	2009-08-30 10:12:07 UTC (rev 439)
@@ -328,6 +328,17 @@
 my $VERSION = "0.0.0.$REVISION_NUMER";
 
 
+##
+# Display an error message on STDERR and then exit.
+#
+# @param $exitcode exit code status to use to end the program
+# @param $line     error message to display on STDERR
+#
+sub myerror($$) {
+	my ($exitcode, $line) = @_;
+	print "[ERROR] $line\n";	
+	exit $exitcode;
+};
 
 sub mywarn($) {
 	my ($line) = @_;
@@ -891,7 +902,64 @@
 	return $signed_by_me;
 };
 
+##
+# Check the local user keys.
+#
+# This function checks if the keyids defined through the --local-user
+# command line option or set in .caffrc are valid and known to be one of the
+# keyids listed in ./caffrc. The last check ensure we have those keyids
+# available in the caff's gnupghome directory.
+#
+# @return an array containing the local user keys\n
+#         (undef) if no key has been specified
+#
+sub get_local_user_keys()
+{
+	my @local_user = ();
+	my @key_list;
+	
+	# No user-defined key id has been specified by the user, no need for
+	# further checks
+	if (!$CONFIG{'local-user'}) {
+		return (undef);
+	}	
+	
+	# Parse the list of keys
+	if (ref($CONFIG{'local-user'})) {
+		@key_list = @{$CONFIG{'local-user'}};
+	}
+	else {
+		@key_list = split /\s*,\s*/, $CONFIG{'local-user'};
+	}
 
+	# Check every key defined by the user...
+	for my $user_key (@key_list) {
+		
+		$user_key =~ s/^0x//i;
+		$user_key = uc($user_key);
+		
+		unless ($user_key =~ m/^([A-F0-9]{8}|[A-F0-9]{16}|[A-F0-9]{40})$/) {
+			mywarn "Local-user $user_key is not a valid keyid.";
+			next;
+		}
+		
+		unless (grep (/$user_key$/, @{$CONFIG{'keyid'}})) {
+			mywarn "Local-user $user_key is not defined as one of your keyid in ./caffrc (it will not be used).";
+			next;
+		}
+		
+		push (@local_user, $user_key);
+	}
+
+	# If no local-user key are valid, there is no need to go further
+	unless (defined $local_user[0]) {
+		myerror	(1, "None of the local-user keys seem to be known as a keyid listed in ./caffrc.");
+	}
+
+	return @local_user;
+}
+
+
 ###################
 # argument handling
 ###################
@@ -1074,25 +1142,9 @@
 	$CONFIG{'no-sign'} = ! ask("Continue with signing?", 1);
 }
 	
-unless ($CONFIG{'no-sign'}) {
-	my @local_user;
-	if ($CONFIG{'local-user'}) {
-		if (ref($CONFIG{'local-user'})) {
-			@local_user = @{$CONFIG{'local-user'}};
-		} else {
-			@local_user = split /\s*,\s*/, $CONFIG{'local-user'};
-		};
-		foreach (@local_user) {
-			s/^0x//i;
-			unless (/^([A-F0-9]{8}|[A-F0-9]{16}|[A-F0-9]{40})$/i) {
-				print STDERR "Local-user $_ is not a keyid.\n";
-				usage(\*STDERR, 1);
-			};
-			$_ = uc($_);
-		};
-	} else {
-		@local_user = (undef);
-	};
+unless ($CONFIG{'no-sign'})
+{
+	my @local_user = &get_local_user_keys();
 
 	info("Sign the following keys according to your policy, then exit gpg with 'save' after signing each key");
 	for my $keyid (@keyids_ok) {

Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog	2009-07-27 18:07:08 UTC (rev 438)
+++ trunk/debian/changelog	2009-08-30 10:12:07 UTC (rev 439)
@@ -5,6 +5,10 @@
     + Added patch from Roland Rosenfeld to support RIPEMD160 checksum.
       (Closes: #533747).
     + Updated man page to mention support for SHA256 and RIPEMD160 checksum.
+  * caff: Updated check for the local-user keyids.
+    + Moved the current check to a new function get_local_user_keys().
+    + Warned the user if a local-user keyid is not listed as a keyid in
+      ./caffrc. (Closes: #540165).
 
   * Bumped Standards-Version up to 3.8.2 (no changes).
 




More information about the Pgp-tools-commit mailing list