[interchange-cvs] interchange - ramoore modified lib/Vend/Order.pm

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Sat Apr 5 20:10:00 2003


User:      ramoore
Date:      2003-04-06 01:09:33 GMT
Modified:  lib/Vend Order.pm
Log:
Update pgp_encrypt to accept multiple encryption keys.  Keys should be
passed as a space or comma separated list.

Revision  Changes    Path
2.50      +26 -12    interchange/lib/Vend/Order.pm


rev 2.50, prev_rev 2.49
Index: Order.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Order.pm,v
retrieving revision 2.49
retrieving revision 2.50
diff -u -r2.49 -r2.50
--- Order.pm	2 Apr 2003 19:08:29 -0000	2.49
+++ Order.pm	6 Apr 2003 01:09:33 -0000	2.50
@@ -1,6 +1,6 @@
 # Vend::Order - Interchange order routing routines
 #
-# $Id: Order.pm,v 2.49 2003/04/02 19:08:29 mheins Exp $
+# $Id: Order.pm,v 2.50 2003/04/06 01:09:33 ramoore Exp $
 #
 # Copyright (C) 1996-2001 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -28,7 +28,7 @@
 package Vend::Order;
 require Exporter;
 
-$VERSION = substr(q$Revision: 2.49 $, 10);
+$VERSION = substr(q$Revision: 2.50 $, 10);
 
 @ISA = qw(Exporter);
 
@@ -863,8 +863,17 @@
 #::logDebug("called pgp_encrypt key=$key cmd=$cmd");
 	$cmd = $Vend::Cfg->{EncryptProgram} unless $cmd;
 	$key = $Vend::Cfg->{EncryptKey}	    unless $key;
+#::logDebug("pgp_encrypt using key=$key cmd=$cmd");
+
+	$key =~ s/,/ /g;	# turn commas to spaces
+	$key =~ s/^\s+//;	# strip leading spaces
+	$key =~ s/\s+$//;	# strip trailing spaces
+	$key =~ s/\s+/ /g;	# convert multiple spaces to single spaces
+
+	my @keys = split /\s/, $key;		
+
+	my $keyparam;
 
-	
 	if("\L$cmd" eq 'none') {
 		return ::errmsg("NEED ENCRYPTION ENABLED.");
 	}
@@ -872,25 +881,30 @@
 		return ::errmsg("NEED ENCRYPTION KEY POINTER.");
 	}
 	elsif($cmd =~ m{^(?:/\S+/)?\bgpg$}) {
-		$cmd .= " --batch --always-trust -e -a -r '%s'";
+		$cmd .= " --batch --always-trust -e -a ";
+		$keyparam = ' -r ';
 	}
 	elsif($cmd =~ m{^(?:/\S+/)?pgpe$}) {
-		$cmd .= " -fat -r '%s'";
+		$cmd .= " -fat ";
+		$keyparam = ' -r ';
 	}
 	elsif($cmd =~ m{^(?:/\S+/)?\bpgp$}) {
-		$cmd .= " -fat - '%s'";
+		$cmd .= " -fat - ";
+		$keyparam = ' ';
 	}
 
 	if($cmd =~ /[;|]/) {
 		die ::errmsg("Illegal character in encryption command: %s", $cmd);
 	}
 
-	if($key) {
-		$cmd =~ s/%%/:~PERCENT~:/g;
-		$key =~ s/'/\\'/g;
-		$cmd =~ s/%s/$key/g;
-		$cmd =~ s/:~PERCENT~:/%/g;
-	}
+
+	$cmd =~ s/%%/:~PERCENT~:/g;
+
+	foreach my $thiskey (@keys) {
+		$thiskey =~ s/'/\\'/g;
+		$cmd .= "$keyparam '$thiskey' ";
+	}  
+	$cmd =~ s/:~PERCENT~:/%/g;
 
 #::logDebug("after  pgp_encrypt key=$key cmd=$cmd");