g10: Unattended key generation "Key-Grip" and "Subkey-Grip".
[gnupg.git] / g10 / passphrase.c
index ccd232a..a498f62 100644 (file)
 #endif
 
 #include "gpg.h"
-#include "util.h"
+#include "../common/util.h"
 #include "options.h"
-#include "ttyio.h"
+#include "../common/ttyio.h"
 #include "keydb.h"
 #include "main.h"
-#include "i18n.h"
-#include "status.h"
+#include "../common/i18n.h"
+#include "../common/status.h"
 #include "call-agent.h"
 #include "../common/shareddefs.h"
 
@@ -166,6 +166,9 @@ read_passphrase_from_fd( int fd )
   int i, len;
   char *pw;
 
+  if (! gnupg_fd_valid (fd))
+    log_fatal ("passphrase-fd is invalid: %s\n", strerror (errno));
+
   if ( !opt.batch && opt.pinentry_mode != PINENTRY_MODE_LOOPBACK)
     { /* Not used but we have to do a dummy read, so that it won't end
          up at the begin of the message if the quite usual trick to
@@ -319,8 +322,8 @@ passphrase_to_dek (int cipher_algo, STRING2KEY *s2k,
       log_assert (create && !nocache);
       /* This is used for the old rfc1991 mode
        * Note: This must match the code in encode.c with opt.rfc1991 set */
+      memset (&help_s2k, 0, sizeof (help_s2k));
       s2k = &help_s2k;
-      s2k->mode = 0;
       s2k->hash_algo = S2K_DIGEST_ALGO;
     }
 
@@ -438,12 +441,13 @@ passphrase_to_dek (int cipher_algo, STRING2KEY *s2k,
 /* Emit the USERID_HINT and the NEED_PASSPHRASE status messages.
    MAINKEYID may be NULL. */
 void
-emit_status_need_passphrase (u32 *keyid, u32 *mainkeyid, int pubkey_algo)
+emit_status_need_passphrase (ctrl_t ctrl,
+                             u32 *keyid, u32 *mainkeyid, int pubkey_algo)
 {
   char buf[50];
   char *us;
 
-  us = get_long_user_id_string (keyid);
+  us = get_long_user_id_string (ctrl, keyid);
   write_status_text (STATUS_USERID_HINT, us);
   xfree (us);
 
@@ -463,7 +467,7 @@ emit_status_need_passphrase (u32 *keyid, u32 *mainkeyid, int pubkey_algo)
    MODE describes the use of the key description; use one of the
    FORMAT_KEYDESC_ macros. */
 char *
-gpg_format_keydesc (PKT_public_key *pk, int mode, int escaped)
+gpg_format_keydesc (ctrl_t ctrl, PKT_public_key *pk, int mode, int escaped)
 {
   char *uid;
   size_t uidlen;
@@ -481,7 +485,7 @@ gpg_format_keydesc (PKT_public_key *pk, int mode, int escaped)
                && pk->keyid[1] != pk->main_keyid[1]);
   algo_name = openpgp_pk_algo_name (pk->pubkey_algo);
   timestr = strtimestamp (pk->timestamp);
-  uid = get_user_id (is_subkey? pk->main_keyid:pk->keyid, &uidlen);
+  uid = get_user_id (ctrl, is_subkey? pk->main_keyid:pk->keyid, &uidlen);
 
   orig_codeset = i18n_switchto_utf8 ();