[-]
[+]
|
Changed |
gpg2.spec
|
|
[-]
[+]
|
Added |
gnupg-2.0.13-ccid-driver-fix.diff
^
|
@@ -0,0 +1,41 @@
+--- scd/ccid-driver.c.orig 2009-07-30 11:21:13.000000000 +0200
++++ scd/ccid-driver.c 2009-11-27 22:05:08.000000000 +0100
+@@ -74,8 +74,6 @@
+ # include <config.h>
+ #endif
+
+-#if defined(HAVE_LIBUSB) || defined(TEST)
+-
+ #include <errno.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -94,7 +92,14 @@
+ #include "ccid-driver.h"
+
+ #define DRVNAME "ccid-driver: "
+-
++static int debug_level; /* Flag to control the debug output.
++ 0 = No debugging
++ 1 = USB I/O info
++ 2 = T=1 protocol tracing
++ */
++
++#if defined(HAVE_LIBUSB) || defined(TEST)
++#include <usb.h>
+
+ /* Depending on how this source is used we either define our error
+ output to go to stderr or to the jnlib based logging functions. We
+@@ -270,13 +275,6 @@
+
+
+ static int initialized_usb; /* Tracks whether USB has been initialized. */
+-static int debug_level; /* Flag to control the debug output.
+- 0 = No debugging
+- 1 = USB I/O info
+- 2 = Level 1 + T=1 protocol tracing
+- 3 = Level 2 + USB/I/O tracing of SlotStatus.
+- */
+-
+
+ static unsigned int compute_edc (const unsigned char *data, size_t datalen,
+ int use_crc);
|
[-]
[+]
|
Added |
gnupg-2.0.13-files_are_digests.patch
^
|
@@ -0,0 +1,167 @@
+--- gnupg-2.0.13/g10/gpg.c.orig 2009-08-05 12:09:24.000000000 +0200
++++ gnupg-2.0.13/g10/gpg.c 2009-11-27 21:59:54.000000000 +0100
+@@ -338,6 +338,7 @@
+ oTTYtype,
+ oLCctype,
+ oLCmessages,
++ oFilesAreDigests,
+ oXauthority,
+ oGroup,
+ oUnGroup,
+@@ -712,6 +713,7 @@
+ ARGPARSE_s_s (oTTYtype, "ttytype", "@"),
+ ARGPARSE_s_s (oLCctype, "lc-ctype", "@"),
+ ARGPARSE_s_s (oLCmessages, "lc-messages","@"),
++ ARGPARSE_s_s (oFilesAreDigests, "files-are-digests","@"),
+ ARGPARSE_s_s (oXauthority, "xauthority", "@"),
+ ARGPARSE_s_s (oGroup, "group", "@"),
+ ARGPARSE_s_s (oUnGroup, "ungroup", "@"),
+@@ -2851,6 +2853,8 @@
+ case oLCctype: opt.lc_ctype = pargs.r.ret_str; break;
+ case oLCmessages: opt.lc_messages = pargs.r.ret_str; break;
+
++ case oFilesAreDigests: opt.files_are_digests = 1; break;
++
+ case oGroup: add_group(pargs.r.ret_str); break;
+ case oUnGroup: rm_group(pargs.r.ret_str); break;
+ case oNoGroups:
+diff -ur gnupg-2.0.9.orig/g10/options.h gnupg-2.0.9/g10/options.h
+--- gnupg-2.0.9.orig/g10/options.h 2007-11-15 19:49:41.000000000 +0100
++++ gnupg-2.0.9/g10/options.h 2008-08-22 15:48:19.000000000 +0200
+@@ -196,6 +196,7 @@
+ int no_auto_check_trustdb;
+ int preserve_permissions;
+ int no_homedir_creation;
++ int files_are_digests;
+ struct groupitem *grouplist;
+ int mangle_dos_filenames;
+ int enable_progress_filter;
+diff -ur gnupg-2.0.9.orig/g10/sign.c gnupg-2.0.9/g10/sign.c
+--- gnupg-2.0.9.orig/g10/sign.c 2007-12-12 10:25:28.000000000 +0100
++++ gnupg-2.0.9/g10/sign.c 2008-08-22 17:05:24.000000000 +0200
+@@ -664,8 +664,12 @@
+ mk_notation_policy_etc (sig, NULL, sk);
+ }
+
+- hash_sigversion_to_magic (md, sig);
+- gcry_md_final (md);
++ if (!opt.files_are_digests) {
++ hash_sigversion_to_magic (md, sig);
++ gcry_md_final (md);
++ } else if (sig->version >= 4) {
++ log_bug("files-are-digests doesn't work with v4 sigs\n");
++ }
+
+ rc = do_sign( sk, sig, md, hash_for (sk) );
+ gcry_md_close (md);
+@@ -721,7 +725,9 @@
+ SK_LIST sk_list = NULL;
+ SK_LIST sk_rover = NULL;
+ int multifile = 0;
++ u32 create_time=make_timestamp();
+ u32 duration=0;
++ int sigclass = 0x00;
+
+ pfx = new_progress_context ();
+ afx = new_armor_context ();
+@@ -738,7 +744,16 @@
+ fname = NULL;
+
+ if( fname && filenames->next && (!detached || encryptflag) )
+- log_bug("multiple files can only be detached signed");
++ log_bug("multiple files can only be detached signed\n");
++
++ if (opt.files_are_digests && (multifile || !fname))
++ log_bug("files-are-digests only works with one file\n");
++ if (opt.files_are_digests && !detached)
++ log_bug("files-are-digests can only write detached signatures\n");
++ if (opt.files_are_digests && !opt.def_digest_algo)
++ log_bug("files-are-digests needs --digest-algo\n");
++ if (opt.files_are_digests && opt.textmode)
++ log_bug("files-are-digests doesn't work with --textmode\n");
+
+ if(encryptflag==2
+ && (rc=setup_symkey(&efx.symkey_s2k,&efx.symkey_dek)))
+@@ -766,7 +781,7 @@
+ goto leave;
+
+ /* prepare iobufs */
+- if( multifile ) /* have list of filenames */
++ if( multifile || opt.files_are_digests) /* have list of filenames */
+ inp = NULL; /* we do it later */
+ else {
+ inp = iobuf_open(fname);
+@@ -899,7 +914,7 @@
+ gcry_md_enable (mfx.md, hash_for(sk));
+ }
+
+- if( !multifile )
++ if( !multifile && !opt.files_are_digests )
+ iobuf_push_filter( inp, md_filter, &mfx );
+
+ if( detached && !encryptflag && !RFC1991 )
+@@ -954,6 +969,8 @@
+
+ write_status_begin_signing (mfx.md);
+
++ sigclass = opt.textmode && !outfile? 0x01 : 0x00;
++
+ /* Setup the inner packet. */
+ if( detached ) {
+ if( multifile ) {
+@@ -994,6 +1011,46 @@
+ if( opt.verbose )
+ putc( '\n', stderr );
+ }
++ else if (opt.files_are_digests) {
++ byte *mdb, ts[5];
++ size_t mdlen;
++ const char *fp;
++ int c, d;
++
++ gcry_md_final(mfx.md);
++ /* this assumes md_read returns the same buffer */
++ mdb = gcry_md_read(mfx.md, opt.def_digest_algo);
++/* (void)md_asn_oid(opt.def_digest_algo, (size_t)0, &mdlen);
++ if (strlen(fname) != mdlen * 2 + 11)
++ log_bug("digests must be %d + @ + 5 bytes\n",(long)mdlen);a
++*/
++ d = -1;
++ for (fp = fname ; *fp; ) {
++ c = *fp++;
++ if (c >= '0' && c <= '9')
++ c -= '0';
++ else if (c >= 'a' && c <= 'f')
++ c -= 'a' - 10;
++ else if (c >= 'A' && c <= 'F')
++ c -= 'A' - 10;
++ else
++ log_bug("filename is not hex\n");
++ if (d >= 0) {
++ *mdb++ = d << 4 | c;
++ c = -1;
++ if (--mdlen == 0) {
++ mdb = ts;
++ if (*fp++ != '@')
++ log_bug("missing time separator\n");
++ }
++ }
++ d = c;
++ }
++ sigclass = ts[0];
++ if (sigclass != 0x00 && sigclass != 0x01)
++ log_bug("bad cipher class\n");
++ create_time = buffer_to_u32(ts + 1);
++ }
+ else {
+ /* read, so that the filter can calculate the digest */
+ while( iobuf_get(inp) != -1 )
+@@ -1011,7 +1068,7 @@
+
+ /* write the signatures */
+ rc = write_signature_packets (sk_list, out, mfx.md,
+- opt.textmode && !outfile? 0x01 : 0x00,
++ sigclass,
+ 0, duration, detached ? 'D':'S');
+ if( rc )
+ goto leave;
|
[-]
[+]
|
Added |
gnupg-2.0.13_1.patch
^
|
@@ -0,0 +1,27 @@
+--- gnupg-2.0.13/g10/gpg.c.orig 2009-08-05 12:09:24.000000000 +0200
++++ gnupg-2.0.13/g10/gpg.c 2009-11-27 21:59:54.000000000 +0100
+@@ -338,6 +338,7 @@
+ oTTYtype,
+ oLCctype,
+ oLCmessages,
++ oFilesAreDigests,
+ oXauthority,
+ oGroup,
+ oUnGroup,
+@@ -712,6 +713,7 @@
+ ARGPARSE_s_s (oTTYtype, "ttytype", "@"),
+ ARGPARSE_s_s (oLCctype, "lc-ctype", "@"),
+ ARGPARSE_s_s (oLCmessages, "lc-messages","@"),
++ ARGPARSE_s_s (oFilesAreDigests, "files-are-digests","@"),
+ ARGPARSE_s_s (oXauthority, "xauthority", "@"),
+ ARGPARSE_s_s (oGroup, "group", "@"),
+ ARGPARSE_s_s (oUnGroup, "ungroup", "@"),
+@@ -2851,6 +2853,8 @@
+ case oLCctype: opt.lc_ctype = pargs.r.ret_str; break;
+ case oLCmessages: opt.lc_messages = pargs.r.ret_str; break;
+
++ case oFilesAreDigests: opt.files_are_digests = 1; break;
++
+ case oGroup: add_group(pargs.r.ret_str); break;
+ case oUnGroup: rm_group(pargs.r.ret_str); break;
+ case oNoGroups:
|
[-]
[+]
|
Added |
gnupg-2.0.13_2.patch
^
|
@@ -0,0 +1,140 @@
+diff -ur gnupg-2.0.9.orig/g10/options.h gnupg-2.0.9/g10/options.h
+--- gnupg-2.0.9.orig/g10/options.h 2007-11-15 19:49:41.000000000 +0100
++++ gnupg-2.0.9/g10/options.h 2008-08-22 15:48:19.000000000 +0200
+@@ -196,6 +196,7 @@
+ int no_auto_check_trustdb;
+ int preserve_permissions;
+ int no_homedir_creation;
++ int files_are_digests;
+ struct groupitem *grouplist;
+ int mangle_dos_filenames;
+ int enable_progress_filter;
+diff -ur gnupg-2.0.9.orig/g10/sign.c gnupg-2.0.9/g10/sign.c
+--- gnupg-2.0.9.orig/g10/sign.c 2007-12-12 10:25:28.000000000 +0100
++++ gnupg-2.0.9/g10/sign.c 2008-08-22 17:05:24.000000000 +0200
+@@ -664,8 +664,12 @@
+ mk_notation_policy_etc (sig, NULL, sk);
+ }
+
+- hash_sigversion_to_magic (md, sig);
+- gcry_md_final (md);
++ if (!opt.files_are_digests) {
++ hash_sigversion_to_magic (md, sig);
++ gcry_md_final (md);
++ } else if (sig->version >= 4) {
++ log_bug("files-are-digests doesn't work with v4 sigs\n");
++ }
+
+ rc = do_sign( sk, sig, md, hash_for (sk) );
+ gcry_md_close (md);
+@@ -721,7 +725,9 @@
+ SK_LIST sk_list = NULL;
+ SK_LIST sk_rover = NULL;
+ int multifile = 0;
++ u32 create_time=make_timestamp();
+ u32 duration=0;
++ int sigclass = 0x00;
+
+ pfx = new_progress_context ();
+ afx = new_armor_context ();
+@@ -738,7 +744,16 @@
+ fname = NULL;
+
+ if( fname && filenames->next && (!detached || encryptflag) )
+- log_bug("multiple files can only be detached signed");
++ log_bug("multiple files can only be detached signed\n");
++
++ if (opt.files_are_digests && (multifile || !fname))
++ log_bug("files-are-digests only works with one file\n");
++ if (opt.files_are_digests && !detached)
++ log_bug("files-are-digests can only write detached signatures\n");
++ if (opt.files_are_digests && !opt.def_digest_algo)
++ log_bug("files-are-digests needs --digest-algo\n");
++ if (opt.files_are_digests && opt.textmode)
++ log_bug("files-are-digests doesn't work with --textmode\n");
+
+ if(encryptflag==2
+ && (rc=setup_symkey(&efx.symkey_s2k,&efx.symkey_dek)))
+@@ -766,7 +781,7 @@
+ goto leave;
+
+ /* prepare iobufs */
+- if( multifile ) /* have list of filenames */
++ if( multifile || opt.files_are_digests) /* have list of filenames */
+ inp = NULL; /* we do it later */
+ else {
+ inp = iobuf_open(fname);
+@@ -899,7 +914,7 @@
+ gcry_md_enable (mfx.md, hash_for(sk));
+ }
+
+- if( !multifile )
++ if( !multifile && !opt.files_are_digests )
+ iobuf_push_filter( inp, md_filter, &mfx );
+
+ if( detached && !encryptflag && !RFC1991 )
+@@ -954,6 +969,8 @@
+
+ write_status_begin_signing (mfx.md);
+
++ sigclass = opt.textmode && !outfile? 0x01 : 0x00;
++
+ /* Setup the inner packet. */
+ if( detached ) {
+ if( multifile ) {
+@@ -994,6 +1011,46 @@
+ if( opt.verbose )
+ putc( '\n', stderr );
+ }
++ else if (opt.files_are_digests) {
++ byte *mdb, ts[5];
++ size_t mdlen;
++ const char *fp;
++ int c, d;
++
++ gcry_md_final(mfx.md);
++ /* this assumes md_read returns the same buffer */
++ mdb = gcry_md_read(mfx.md, opt.def_digest_algo);
++/* (void)md_asn_oid(opt.def_digest_algo, (size_t)0, &mdlen);
++ if (strlen(fname) != mdlen * 2 + 11)
++ log_bug("digests must be %d + @ + 5 bytes\n",(long)mdlen);a
++*/
++ d = -1;
++ for (fp = fname ; *fp; ) {
++ c = *fp++;
++ if (c >= '0' && c <= '9')
++ c -= '0';
++ else if (c >= 'a' && c <= 'f')
++ c -= 'a' - 10;
++ else if (c >= 'A' && c <= 'F')
++ c -= 'A' - 10;
++ else
++ log_bug("filename is not hex\n");
++ if (d >= 0) {
++ *mdb++ = d << 4 | c;
++ c = -1;
++ if (--mdlen == 0) {
++ mdb = ts;
++ if (*fp++ != '@')
++ log_bug("missing time separator\n");
++ }
++ }
++ d = c;
++ }
++ sigclass = ts[0];
++ if (sigclass != 0x00 && sigclass != 0x01)
++ log_bug("bad cipher class\n");
++ create_time = buffer_to_u32(ts + 1);
++ }
+ else {
+ /* read, so that the filter can calculate the digest */
+ while( iobuf_get(inp) != -1 )
+@@ -1011,7 +1068,7 @@
+
+ /* write the signatures */
+ rc = write_signature_packets (sk_list, out, mfx.md,
+- opt.textmode && !outfile? 0x01 : 0x00,
++ sigclass,
+ 0, duration, detached ? 'D':'S');
+ if( rc )
+ goto leave;
|
|
Added |
gnupg-2.0.13.tar.bz2
^
|