aboutsummaryrefslogtreecommitdiffstats
path: root/g10/import.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/import.c')
-rw-r--r--g10/import.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/g10/import.c b/g10/import.c
index 12a2a099d..63d4bf9b2 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -247,6 +247,7 @@ import_one( const char *fname, KBNODE keyblock )
u32 keyid[2];
int rc = 0;
int new_key = 0;
+ int mod_key = 0;
/* get the key and print some info about it */
node = find_kbnode( keyblock, PKT_PUBLIC_KEY );
@@ -284,6 +285,7 @@ import_one( const char *fname, KBNODE keyblock )
return 0;
}
+
/* do we have this key already in one of our pubrings ? */
pk_orig = m_alloc_clear( sizeof *pk_orig );
rc = get_pubkey( pk_orig, keyid );
@@ -350,6 +352,7 @@ import_one( const char *fname, KBNODE keyblock )
if( rc )
goto leave;
if( n_uids || n_sigs || n_subk ) {
+ mod_key = 1;
/* keyblock_orig has been updated; write */
if( opt.verbose > 1 )
log_info_f(keyblock_resource_name(&kbpos),
@@ -394,6 +397,8 @@ import_one( const char *fname, KBNODE keyblock )
log_error("key %08lX: trustdb insert failed: %s\n",
(ulong)keyid[1], g10_errstr(rc) );
}
+ else if( mod_key )
+ rc = update_trustdb( new_key? pk: pk_orig);
else
rc = clear_trust_checked_flag( new_key? pk : pk_orig );
}