Honor --cert-digest-algo when recreating a cert.
authorDavid Shaw <dshaw@jabberwocky.com>
Wed, 1 Feb 2012 02:30:05 +0000 (21:30 -0500)
committerDavid Shaw <dshaw@jabberwocky.com>
Wed, 1 Feb 2012 02:41:03 +0000 (21:41 -0500)
* g10/sign.c (update_keysig_packet): Honor --cert-digest-algo when
  recreating a cert.

This is used by various things in --edit-key like setpref, primary,
etc.  Suggested by Christian Aistleitner.

g10/sign.c

index 94e107c..8d280ed 100644 (file)
@@ -1,6 +1,6 @@
 /* sign.c - sign data
  * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- *               2007 Free Software Foundation, Inc.
+ *               2007, 2010, 2012 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -1504,7 +1504,7 @@ update_keysig_packet( PKT_signature **ret_sig,
                       void *opaque )
 {
     PKT_signature *sig;
-    int rc=0;
+    int rc=0, digest_algo;
     gcry_md_hd_t md;
 
     if ((!orig_sig || !pk || !sk)
@@ -1512,6 +1512,11 @@ update_keysig_packet( PKT_signature **ret_sig,
        || (orig_sig->sig_class == 0x18 && !subpk))
       return G10ERR_GENERAL;
 
+    if ( opt.cert_digest_algo )
+      digest_algo = opt.cert_digest_algo;
+    else
+      digest_algo = orig_sig->digest_algo;
+
     if ( gcry_md_open (&md, orig_sig->digest_algo, 0 ) )
       BUG ();