1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

gpg: Fix (quick) key generation with --always-trust.

* 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>
This commit is contained in:
Justus Winter 2017-03-02 14:35:09 +01:00
parent d6f0f36876
commit 4735ab96aa
No known key found for this signature in database
GPG Key ID: DD1A52F9DA8C9020
4 changed files with 14 additions and 6 deletions

View File

@ -4791,6 +4791,7 @@ do_generate_keypair (ctrl_t ctrl, struct para_data_s *para,
keyid_from_pk (pk, pk->main_keyid); keyid_from_pk (pk, pk->main_keyid);
register_trusted_keyid (pk->main_keyid); register_trusted_keyid (pk->main_keyid);
if (have_trustdb ())
update_ownertrust (pk, ((get_ownertrust (pk) & ~TRUST_MASK) update_ownertrust (pk, ((get_ownertrust (pk) & ~TRUST_MASK)
| TRUST_ULTIMATE )); | TRUST_ULTIMATE ));

View 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 * Recreate the WoT but do not ask for new ownertrusts. Special
* feature: In batch mode and without a forced yes, this is only done * feature: In batch mode and without a forced yes, this is only done

View File

@ -128,6 +128,7 @@ int setup_trustdb( int level, const char *dbname );
void how_to_fix_the_trustdb (void); void how_to_fix_the_trustdb (void);
const char *trust_model_string (int model); const char *trust_model_string (int model);
gpg_error_t init_trustdb (int no_create); gpg_error_t init_trustdb (int no_create);
int have_trustdb (void);
void tdb_check_trustdb_stale (ctrl_t ctrl); void tdb_check_trustdb_stale (ctrl_t ctrl);
void sync_trustdb( void ); void sync_trustdb( void );

View File

@ -21,10 +21,6 @@
(load (with-path "time.scm")) (load (with-path "time.scm"))
(setup-environment) (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) (define (exact id)
(string-append "=" id)) (string-append "=" id))