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:55:06 +0000 (21:55 -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 4cc813c..b2c8f0e 100644 (file)
@@ -1,6 +1,6 @@
 /* sign.c - sign data
  * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- *               2007, 2010 Free Software Foundation, Inc.
+ *               2007, 2010, 2012 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -1576,7 +1576,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 || !pksk)
@@ -1584,6 +1584,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 ();