g10: If iobuf_seek fails when reading from the cache, do a hard read.
[gnupg.git] / g10 / sign.c
index 2724513..7a8d697 100644 (file)
@@ -294,8 +294,13 @@ do_sign (PKT_public_key *pksk, PKT_signature *sig,
 
   /* Check that the signature verification worked and nothing is
    * fooling us e.g. by a bug in the signature create code or by
 
   /* Check that the signature verification worked and nothing is
    * fooling us e.g. by a bug in the signature create code or by
-   * deliberately introduced faults.  */
-  if (!err && !opt.no_sig_create_check)
+   * deliberately introduced faults.  Because Libgcrypt 1.7 does this
+   * for RSA internally there is no need to do it here again.  */
+  if (!err
+#if GCRYPT_VERSION_NUMBER >= 0x010700 /* Libgcrypt >= 1.7 */
+        && !is_RSA (pksk->pubkey_algo)
+#endif /* Libgcrypt >= 1.7 */
+      )
     {
       PKT_public_key *pk = xmalloc_clear (sizeof *pk);
 
     {
       PKT_public_key *pk = xmalloc_clear (sizeof *pk);
 
@@ -312,12 +317,12 @@ do_sign (PKT_public_key *pksk, PKT_signature *sig,
         }
       if (err)
         log_error (_("checking created signature failed: %s\n"),
         }
       if (err)
         log_error (_("checking created signature failed: %s\n"),
-                   g10_errstr (err));
+                   gpg_strerror (err));
       free_public_key (pk);
     }
 
   if (err)
       free_public_key (pk);
     }
 
   if (err)
-    log_error (_("signing failed: %s\n"), g10_errstr (err));
+    log_error (_("signing failed: %s\n"), gpg_strerror (err));
   else
     {
       if (opt.verbose)
   else
     {
       if (opt.verbose)
@@ -573,7 +578,7 @@ write_onepass_sig_packets (SK_LIST sk_list, IOBUF out, int sigclass )
         free_packet (&pkt);
         if (rc) {
             log_error ("build onepass_sig packet failed: %s\n",
         free_packet (&pkt);
         if (rc) {
             log_error ("build onepass_sig packet failed: %s\n",
-                       g10_errstr(rc));
+                       gpg_strerror (rc));
             return rc;
         }
     }
             return rc;
         }
     }
@@ -637,7 +642,7 @@ write_plaintext_packet (IOBUF out, IOBUF inp, const char *fname, int ptmode)
         /*cfx.datalen = filesize? calc_packet_length( &pkt ) : 0;*/
         if( (rc = build_packet (out, &pkt)) )
             log_error ("build_packet(PLAINTEXT) failed: %s\n",
         /*cfx.datalen = filesize? calc_packet_length( &pkt ) : 0;*/
         if( (rc = build_packet (out, &pkt)) )
             log_error ("build_packet(PLAINTEXT) failed: %s\n",
-                       g10_errstr(rc) );
+                       gpg_strerror (rc) );
         pt->buf = NULL;
     }
     else {
         pt->buf = NULL;
     }
     else {
@@ -1021,7 +1026,7 @@ sign_file (ctrl_t ctrl, strlist_t filenames, int detached, strlist_t locusr,
                  }
                 handle_progress (pfx, inp, sl->d);
                if( opt.verbose )
                  }
                 handle_progress (pfx, inp, sl->d);
                if( opt.verbose )
-                   fprintf(stderr, " '%s'", sl->d );
+                  log_printf (" '%s'", sl->d );
                if(opt.textmode)
                  {
                    memset( &tfx, 0, sizeof tfx);
                if(opt.textmode)
                  {
                    memset( &tfx, 0, sizeof tfx);
@@ -1033,7 +1038,7 @@ sign_file (ctrl_t ctrl, strlist_t filenames, int detached, strlist_t locusr,
                iobuf_close(inp); inp = NULL;
            }
            if( opt.verbose )
                iobuf_close(inp); inp = NULL;
            }
            if( opt.verbose )
-               putc( '\n', stderr );
+              log_printf ("\n");
        }
        else {
            /* read, so that the filter can calculate the digest */
        }
        else {
            /* read, so that the filter can calculate the digest */
@@ -1325,7 +1330,7 @@ sign_symencrypt_file (const char *fname, strlist_t locusr)
        pkt.pkttype = PKT_SYMKEY_ENC;
        pkt.pkt.symkey_enc = enc;
        if( (rc = build_packet( out, &pkt )) )
        pkt.pkttype = PKT_SYMKEY_ENC;
        pkt.pkt.symkey_enc = enc;
        if( (rc = build_packet( out, &pkt )) )
-           log_error("build symkey packet failed: %s\n", g10_errstr(rc) );
+           log_error("build symkey packet failed: %s\n", gpg_strerror (rc) );
        xfree(enc);
     }
 
        xfree(enc);
     }
 
@@ -1520,7 +1525,7 @@ update_keysig_packet( PKT_signature **ret_sig,
     if ((!orig_sig || !pk || !pksk)
        || (orig_sig->sig_class >= 0x10 && orig_sig->sig_class <= 0x13 && !uid)
        || (orig_sig->sig_class == 0x18 && !subpk))
     if ((!orig_sig || !pk || !pksk)
        || (orig_sig->sig_class >= 0x10 && orig_sig->sig_class <= 0x13 && !uid)
        || (orig_sig->sig_class == 0x18 && !subpk))
-      return G10ERR_GENERAL;
+      return GPG_ERR_GENERAL;
 
     if ( opt.cert_digest_algo )
       digest_algo = opt.cert_digest_algo;
 
     if ( opt.cert_digest_algo )
       digest_algo = opt.cert_digest_algo;