gpg: Fix (quick) key generation with --always-trust.
authorJustus Winter <justus@g10code.com>
Thu, 2 Mar 2017 13:35:09 +0000 (14:35 +0100)
committerJustus Winter <justus@g10code.com>
Thu, 2 Mar 2017 13:50:23 +0000 (14:50 +0100)
* g10/keygen.c (do_generate_keypair): Only update the ownertrust if we
do have a trust database.
* g10/trustdb.c (have_trustdb): New function.
* g10/trustdb.h (have_trustdb): New prototype.
* tests/openpgp/quick-key-manipulation.scm: Remove workaround.

GnuPG-bug-id: 2695
Signed-off-by: Justus Winter <justus@g10code.com>
g10/keygen.c
g10/trustdb.c
g10/trustdb.h
tests/openpgp/quick-key-manipulation.scm

index 24cf93c..f044257 100644 (file)
@@ -4791,8 +4791,9 @@ do_generate_keypair (ctrl_t ctrl, struct para_data_s *para,
           keyid_from_pk (pk, pk->main_keyid);
           register_trusted_keyid (pk->main_keyid);
 
-          update_ownertrust (pk, ((get_ownertrust (pk) & ~TRUST_MASK)
-                                  | TRUST_ULTIMATE ));
+         if (have_trustdb ())
+           update_ownertrust (pk, ((get_ownertrust (pk) & ~TRUST_MASK)
+                                   | TRUST_ULTIMATE ));
 
           gen_standard_revoke (pk, cache_nonce);
 
index f4df4c8..7443051 100644 (file)
@@ -511,6 +511,16 @@ init_trustdb (int no_create)
 }
 
 
+/* Check whether we have a trust database, initializing it if
+   necessary if the trust model is not 'always trust'.  Returns true
+   if we do have a usable trust database.  */
+int
+have_trustdb (void)
+{
+  return init_trustdb (opt.trust_model == TM_ALWAYS) == 0;
+}
+
+
 /****************
  * Recreate the WoT but do not ask for new ownertrusts.  Special
  * feature: In batch mode and without a forced yes, this is only done
index 3088063..00be4df 100644 (file)
@@ -128,6 +128,7 @@ int setup_trustdb( int level, const char *dbname );
 void how_to_fix_the_trustdb (void);
 const char *trust_model_string (int model);
 gpg_error_t init_trustdb (int no_create);
+int have_trustdb (void);
 void tdb_check_trustdb_stale (ctrl_t ctrl);
 void sync_trustdb( void );
 
index 8ceb035..10f0bfe 100755 (executable)
 (load (with-path "time.scm"))
 (setup-environment)
 
- ;; XXX because of --always-trust, the trustdb is not created.
- ;; Therefore, we redefine GPG without --always-trust.
-(define GPG `(,(tool 'gpg) --no-permission-warning))
-
 (define (exact id)
   (string-append "=" id))