po: auto update
[gnupg.git] / g10 / sign.c
index 024dd06..095fa11 100644 (file)
@@ -281,8 +281,7 @@ do_sign (ctrl_t ctrl, PKT_public_key *pksk, PKT_signature *sig,
   /* Check compliance.  */
   if (! gnupg_digest_is_allowed (opt.compliance, 1, mdalgo))
     {
-      log_error (_ ("you may not use digest algorithm '%s'"
-                   " while in %s mode\n"),
+      log_error (_("digest algorithm '%s' may not be used in %s mode\n"),
                 gcry_md_algo_name (mdalgo),
                 gnupg_compliance_option_string (opt.compliance));
       err = gpg_error (GPG_ERR_DIGEST_ALGO);
@@ -292,13 +291,23 @@ do_sign (ctrl_t ctrl, PKT_public_key *pksk, PKT_signature *sig,
   if (! gnupg_pk_is_allowed (opt.compliance, PK_USE_SIGNING, pksk->pubkey_algo,
                              pksk->pkey, nbits_from_pk (pksk), NULL))
     {
-      log_error ("key %s not suitable for signing while in %s mode\n",
+      log_error (_("key %s may not be used for signing in %s mode\n"),
                  keystr_from_pk (pksk),
                  gnupg_compliance_option_string (opt.compliance));
       err = gpg_error (GPG_ERR_PUBKEY_ALGO);
       goto leave;
     }
 
+  if (!gnupg_rng_is_compliant (opt.compliance))
+    {
+      err = gpg_error (GPG_ERR_FORBIDDEN);
+      log_error (_("%s is not compliant with %s mode\n"),
+                 "RNG",
+                 gnupg_compliance_option_string (opt.compliance));
+      write_status_error ("random-compliance", err);
+      goto leave;
+    }
+
   print_digest_algo_note (mdalgo);
   dp = gcry_md_read  (md, mdalgo);
   sig->digest_algo = mdalgo;
@@ -763,7 +772,7 @@ write_signature_packets (ctrl_t ctrl,
                        gpg_strerror (rc));
        }
       else
-        xfree (sig);
+        free_seckey_enc (sig);
 
       if (rc)
         return rc;