aboutsummaryrefslogtreecommitdiffstats
path: root/g10/pkclist.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/pkclist.c')
-rw-r--r--g10/pkclist.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/g10/pkclist.c b/g10/pkclist.c
index f753eb6fc..3fd22549c 100644
--- a/g10/pkclist.c
+++ b/g10/pkclist.c
@@ -41,6 +41,25 @@
static int
do_we_trust( PKT_public_cert *pkc, int trustlevel )
{
+ int rc;
+
+ if( trustlevel & TRUST_NO_PUBKEY ) {
+ /* No pubkey in trustDB: Insert and check again */
+ rc = insert_trust_record( pkc );
+ if( rc ) {
+ log_error("failed to insert it into the trustdb: %s\n",
+ g10_errstr(rc) );
+ return 0; /* no */
+ }
+ rc = check_pkc_trust( pkc, &trustlevel );
+ if( rc )
+ log_fatal("trust check after insert failed: %s\n",
+ g10_errstr(rc) );
+ if( trustlevel & TRUST_NO_PUBKEY )
+ log_bug(NULL);
+ }
+
+
/* Eventuell fragen falls der trustlevel nicht ausreichend ist */
@@ -90,6 +109,7 @@ build_pkc_list( STRLIST remusr, PKC_LIST *ret_pkc_list )
remusr->d, g10_errstr(rc) );
}
else if( do_we_trust( pkc, trustlevel ) ) {
+ /* note: do_we_trust may have changed the trustlevel */
PKC_LIST r;
r = m_alloc( sizeof *r );