gpg: Cache keybox searches.
[gnupg.git] / g10 / pubkey-enc.c
index 1b94af5..a69536e 100644 (file)
@@ -77,6 +77,9 @@ get_session_key (PKT_pubkey_enc * k, DEK * dek)
   PKT_public_key *sk = NULL;
   int rc;
 
+  if (DBG_CLOCK)
+    log_clock ("get_session_key enter");
+
   rc = openpgp_pk_test_algo2 (k->pubkey_algo, PUBKEY_USAGE_ENC);
   if (rc)
     goto leave;
@@ -97,8 +100,7 @@ get_session_key (PKT_pubkey_enc * k, DEK * dek)
 
       for (;;)
         {
-          if (sk)
-            free_public_key (sk);
+          free_public_key (sk);
           sk = xmalloc_clear (sizeof *sk);
           rc = enum_secret_keys (&enum_context, sk);
           if (rc)
@@ -111,13 +113,15 @@ get_session_key (PKT_pubkey_enc * k, DEK * dek)
           if (!(sk->pubkey_usage & PUBKEY_USAGE_ENC))
             continue;
           keyid_from_pk (sk, keyid);
-          log_info (_("anonymous recipient; trying secret key %s ...\n"),
-                    keystr (keyid));
+          if (!opt.quiet)
+            log_info (_("anonymous recipient; trying secret key %s ...\n"),
+                      keystr (keyid));
 
           rc = get_it (k, dek, sk, keyid);
           if (!rc)
             {
-              log_info (_("okay, we are the anonymous recipient.\n"));
+              if (!opt.quiet)
+                log_info (_("okay, we are the anonymous recipient.\n"));
               break;
             }
           else if (gpg_err_code (rc) == GPG_ERR_FULLY_CANCELED)
@@ -127,8 +131,9 @@ get_session_key (PKT_pubkey_enc * k, DEK * dek)
     }
 
 leave:
-  if (sk)
-    free_public_key (sk);
+  free_public_key (sk);
+  if (DBG_CLOCK)
+    log_clock ("get_session_key leave");
   return rc;
 }
 
@@ -149,6 +154,9 @@ get_it (PKT_pubkey_enc *enc, DEK *dek, PKT_public_key *sk, u32 *keyid)
   size_t fpn;
   const int pkalgo = map_pk_openpgp_to_gcry (sk->pubkey_algo);
 
+  if (DBG_CLOCK)
+    log_clock ("decryption start");
+
   /* Get the keygrip.  */
   err = hexkeygrip_from_pk (sk, &keygrip);
   if (err)
@@ -292,8 +300,6 @@ get_it (PKT_pubkey_enc *enc, DEK *dek, PKT_public_key *sk, u32 *keyid)
 
   dek->keylen = nframe - (n + 1) - 2;
   dek->algo = frame[n++];
-  if (dek->algo == CIPHER_ALGO_IDEA)
-    write_status (STATUS_RSA_OR_IDEA);
   err = openpgp_cipher_test_algo (dek->algo);
   if (err)
     {
@@ -302,8 +308,6 @@ get_it (PKT_pubkey_enc *enc, DEK *dek, PKT_public_key *sk, u32 *keyid)
           log_info (_("cipher algorithm %d%s is unknown or disabled\n"),
                     dek->algo,
                     dek->algo == CIPHER_ALGO_IDEA ? " (IDEA)" : "");
-          if (dek->algo == CIPHER_ALGO_IDEA)
-            idea_cipher_warn (0);
         }
       dek->algo = 0;
       goto leave;
@@ -325,6 +329,8 @@ get_it (PKT_pubkey_enc *enc, DEK *dek, PKT_public_key *sk, u32 *keyid)
       err = gpg_error (GPG_ERR_WRONG_SECKEY);
       goto leave;
     }
+  if (DBG_CLOCK)
+    log_clock ("decryption ready");
   if (DBG_CIPHER)
     log_printhex ("DEK is:", dek->key, dek->keylen);