]> git.llucax.com Git - software/mutt-debian.git/commitdiff
upstream/547980-smime_keys-chaining.patch: support certificate chaining in smime_keys...
authorAntonio Radici <antonio@dyne.org>
Sat, 6 Feb 2010 17:53:21 +0000 (17:53 +0000)
committerAntonio Radici <antonio@dyne.org>
Sat, 6 Feb 2010 17:53:21 +0000 (17:53 +0000)
debian/changelog
debian/patches/series
debian/patches/upstream/547980-smime_keys-chaining.patch [new file with mode: 0644]

index 02b4ff1f26b3ff74c5cc8997b11b4a5277045742..835fef31bee168a65af988c1760d1de3ef95f211 100644 (file)
@@ -15,6 +15,8 @@ mutt (1.5.20-7) unstable; urgency=low
       (Closes: 545316)
     + upstream/568295-references.patch: preserve the References header if the
       In-Reply-To is not initially present (Closes: 568295)
+    + upstream/547980-smime_keys-chaining.patch: support certificate chaining in
+      smime_keys (Closes: 547980, 549006)
     + debian-specific/Muttrc: set time_inc to be 250ms (Closes: 537746)
   * debian/control: 
     + bumping Standards-Version to 3.8.4, nothing to be done
index 8f1ad7ed71a7a026fc240e88084dc4cd08fda194..3ecd15ae143d9594388f6800aa296abe8dcb9985 100644 (file)
@@ -34,9 +34,6 @@ upstream/533459-unmailboxes.patch
 upstream/533439-mbox-time.patch
 upstream/531430-imapuser.patch
 upstream/534543-imap-port.patch
-
-# the following two patches are also in upstream hg repo
-# plese drop them if there is a new release
 upstream/538128-mh-folder-access.patch
 upstream/537818-emptycharset.patch
 upstream/535096-pop-port.patch
@@ -57,6 +54,7 @@ upstream/557395-muttrc-crypto.patch
 upstream/545316-header-color.patch
 upstream/568295-references.patch
 
+upstream/547980-smime_keys-chaining.patch
 misc/hyphen-as-minus.patch
 #misc/manpage-typos.patch
 misc/smime_keys-manpage.patch
diff --git a/debian/patches/upstream/547980-smime_keys-chaining.patch b/debian/patches/upstream/547980-smime_keys-chaining.patch
new file mode 100644 (file)
index 0000000..50ff9b5
--- /dev/null
@@ -0,0 +1,84 @@
+To suppose certificate chaining in smime_keys, see upstream
+http://bugs.mutt.org/3339
+
+--- a/smime_keys.pl
++++ b/smime_keys.pl
+@@ -81,6 +81,30 @@
+ # OPS
+ #
++ 
++sub get_certs {
++    my $file = shift;
++    return undef unless (defined($file) && -e $file);
++
++    open IN, "<$file";
++
++    my @certs = ();
++    my $in_cert = 0;
++    my $cert = q{};
++    while ( <IN> ) {
++        $in_cert = 1 if ( /^-----BEGIN CERTIFICATE-----$/ );
++        $cert .= $_;
++
++        if ( /^-----END CERTIFICATE-----$/ )  {
++            push @certs, $cert;
++            $cert = q{};
++            $in_cert = 0;
++        }
++    }
++
++    return @certs;
++}
++
+ if(@ARGV == 1 and $ARGV[0] eq "init") {
+     init_paths;
+ }
+@@ -91,13 +115,27 @@
+     change_label($ARGV[1]);
+ }
+ elsif(@ARGV == 2 and $ARGV[0] eq "add_cert") {
+-    my $format = -B $ARGV[1] ? 'DER' : 'PEM'; 
+-    my $cmd = "$opensslbin x509 -noout -hash -in $ARGV[1] -inform $format";
+-    my $cert_hash = `$cmd`;
+-    $? and die "'$cmd' returned $?";
+-    chomp($cert_hash); 
+-    my $label = query_label;
+-    &add_certificate($ARGV[1], \$cert_hash, 1, $label, '?');
++    foreach my $cert ( get_certs( $ARGV[1] ) ) {
++
++        my $file = sprintf( '/tmp/smime-%d.%d', $$, int(rand( 999999 ) ) );
++        print STDERR "TMPFILE: $file\n";
++        if ( -e $file ) {
++            die( "ERROR: TMPFILE $file existss?!?!" );
++        }
++        open OUT, ">$file";
++        print OUT $cert;
++        close OUT;
++
++        my $format = -B $file ? 'DER' : 'PEM'; 
++        my $cmd = "$opensslbin x509 -noout -hash -in $file -inform $format";
++
++        my $cert_hash = `$cmd`;
++        $? and die "'$cmd' returned $?";
++        chomp($cert_hash); 
++        my $label = query_label;
++        &add_certificate($ARGV[1], \$cert_hash, 1, $label, '?');
++        unlink $file;
++    }
+ }
+ elsif(@ARGV == 2 and $ARGV[0] eq "add_pem") {
+     -e $ARGV[1] and -s $ARGV[1] or die("$ARGV[1] is nonexistent or empty.");
+@@ -381,9 +419,10 @@
+     print "the key ID. This has to be _one_ word (no whitespaces).\n\n";
+     print "Enter label: ";
+-    chomp($input = <STDIN>);
++    $input = <STDIN>;
++    chomp($input) if ( defined($input) );
+-    my ($label, $junk) = split(/\s/, $input, 2);     
++    my ($label, $junk) = split(/\s/, $input, 2) if ( defined($input) );
+     
+     defined $junk 
+         and print "\nUsing '$label' as label; ignoring '$junk'\n";