Imported Upstream version 2.0.28 upstream/2.0.28
authorDongHun Kwak <dh0128.kwak@samsung.com>
Tue, 9 Feb 2021 06:59:47 +0000 (15:59 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Tue, 9 Feb 2021 06:59:47 +0000 (15:59 +0900)
60 files changed:
NEWS
agent/agent.h
agent/call-pinentry.c
agent/command-ssh.c
agent/command.c
agent/divert-scd.c
agent/findkey.c
agent/genkey.c
agent/gpg-agent.c
configure.ac
doc/DETAILS
doc/gpg-agent.texi
doc/gpgsm.texi
g10/armor.c
g10/free-packet.c
g10/getkey.c
g10/gpg.c
g10/mainproc.c
g10/parse-packet.c
jnlib/argparse.c
jnlib/argparse.h
po/be.po
po/ca.po
po/cs.po
po/da.po
po/de.po
po/el.po
po/eo.po
po/es.po
po/et.po
po/fi.po
po/fr.po
po/gl.po
po/hu.po
po/id.po
po/it.po
po/ja.po
po/nb.po
po/nl.po
po/pl.po
po/pt.po
po/pt_BR.po
po/ro.po
po/ru.po
po/sk.po
po/sv.po
po/tr.po
po/uk.po
po/zh_CN.po
po/zh_TW.po
scd/apdu.c
scd/app-common.h
scd/ccid-driver.c
scd/pcsc-wrapper.c
sm/certreqgen.c
sm/gpgsm.c
tools/gpg-connect-agent.c
tools/gpgconf-comp.c
tools/gpgtar-extract.c
tools/rfc822parse.c

diff --git a/NEWS b/NEWS
index d647e30..d86126e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,24 @@
+Noteworthy changes in version 2.0.28 (2015-06-02)
+-------------------------------------------------
+
+ * agent: Added support for an external password manager.
+
+ * gpg: New command --list-gcrypt-config.
+
+ * gpg: Issue NEWSIG status lines during signature verification.
+
+ * gpgsm: The default hash algo for a CSR is now SHA-256 and the
+   default encryption algo is AES-128.
+
+ * scdaemon: Allow PC/SC reader selection by partial name match.
+
+ * gpgtar: Fix extracting files with a size of a multiple of 512.
+
+ * Fixed several other bugs.
+
+ * Libgcrypt 1.5 is now required.
+
+
 Noteworthy changes in version 2.0.27 (2015-02-18)
 -------------------------------------------------
 
index 938a9aa..f81743f 100644 (file)
@@ -104,6 +104,12 @@ struct
   int ignore_cache_for_signing;
   int allow_mark_trusted;
   int allow_preset_passphrase;
+
+  /* Allow the use of an external password cache.  If this option is
+     enabled (which is the default) we send an option to Pinentry
+     to allow it to enable such a cache.  */
+  int allow_external_cache;
+
   int keep_tty;      /* Don't switch the TTY (for pinentry) on request */
   int keep_display;  /* Don't switch the DISPLAY (for pinentry) on request */
   int ssh_support;   /* Enable ssh-agent emulation.  */
@@ -273,16 +279,20 @@ int pinentry_active_p (ctrl_t ctrl, int waitseconds);
 int agent_askpin (ctrl_t ctrl,
                   const char *desc_text, const char *prompt_text,
                   const char *inital_errtext,
-                  struct pin_entry_info_s *pininfo);
+                  struct pin_entry_info_s *pininfo,
+                  const char *keyinfo, cache_mode_t cache_mode);
 int agent_get_passphrase (ctrl_t ctrl, char **retpass,
                           const char *desc, const char *prompt,
-                          const char *errtext, int with_qualitybar);
+                          const char *errtext, int with_qualitybar,
+                         const char *keyinfo, cache_mode_t cache_mode);
 int agent_get_confirmation (ctrl_t ctrl, const char *desc, const char *ok,
                            const char *notokay, int with_cancel);
 int agent_show_message (ctrl_t ctrl, const char *desc, const char *ok_btn);
 int agent_popup_message_start (ctrl_t ctrl,
                                const char *desc, const char *ok_btn);
 void agent_popup_message_stop (ctrl_t ctrl);
+int agent_clear_passphrase (ctrl_t ctrl,
+                           const char *keyinfo, cache_mode_t cache_mode);
 
 
 /*-- cache.c --*/
index c945c13..5686998 100644 (file)
@@ -147,7 +147,7 @@ agent_reset_query (ctrl_t ctrl)
    disconnect that pinentry - we do this after the unlock so that a
    stalled pinentry does not block other threads.  Fixme: We should
    have a timeout in Assuan for the disconnect operation. */
-static int 
+static int
 unlock_pinentry (int rc)
 {
   assuan_context_t ctx = entry_ctx;
@@ -185,7 +185,7 @@ atfork_cb (void *opaque, int where)
     {
       int iterator = 0;
       const char *name, *assname, *value;
-      
+
       gcry_control (GCRYCTL_TERM_SECMEM);
 
       while ((name = session_env_list_stdenvnames (&iterator, &assname)))
@@ -194,7 +194,7 @@ atfork_cb (void *opaque, int where)
              ones which do have an assuan name but are conveyed using
              environment variables, update the environment of the
              forked process.  */
-          if (!assname 
+          if (!assname
               || !strcmp (name, "XAUTHORITY")
               || !strcmp (name, "PINENTRY_USER_DATA"))
             {
@@ -260,12 +260,12 @@ start_pinentry (ctrl_t ctrl)
   entry_owner = ctrl;
 
   if (entry_ctx)
-    return 0; 
+    return 0;
 
   if (opt.verbose)
     log_info ("starting a new PIN Entry\n");
 
-#ifdef HAVE_W32_SYSTEM      
+#ifdef HAVE_W32_SYSTEM
   fflush (stdout);
   fflush (stderr);
 #endif
@@ -310,7 +310,7 @@ start_pinentry (ctrl_t ctrl)
     }
   else
     argv[1] = NULL;
-  
+
   i=0;
   if (!opt.running_detached)
     {
@@ -346,12 +346,13 @@ start_pinentry (ctrl_t ctrl)
   if (DBG_ASSUAN)
     log_debug ("connection to PIN entry established\n");
 
-  rc = assuan_transact (entry_ctx, 
+  rc = assuan_transact (entry_ctx,
                         opt.no_grab? "OPTION no-grab":"OPTION grab",
                         NULL, NULL, NULL, NULL, NULL, NULL);
   if (rc)
     return unlock_pinentry (rc);
 
+
   value = session_env_getenv (ctrl->session_env, "GPG_TTY");
   if (value)
     {
@@ -399,10 +400,26 @@ start_pinentry (ctrl_t ctrl)
        return unlock_pinentry (rc);
     }
 
+  if (opt.allow_external_cache)
+    {
+      /* Indicate to the pinentry that it may read from an external cache.
+
+         It is essential that the pinentry respect this.  If the
+         cached password is not up to date and retry == 1, then, using
+         a version of GPG Agent that doesn't support this, won't issue
+         another pin request and the user won't get a chance to
+         correct the password.  */
+      rc = assuan_transact (entry_ctx, "OPTION allow-external-password-cache",
+                            NULL, NULL, NULL, NULL, NULL, NULL);
+      if (rc && gpg_err_code (rc) != GPG_ERR_UNKNOWN_OPTION)
+        return unlock_pinentry (rc);
+    }
+
+
   {
     /* Provide a few default strings for use by the pinentries.  This
        may help a pinentry to avoid implementing localization code.  */
-    static struct { const char *key, *value; } tbl[] = {
+    static struct { const char *key, *value; int mode; } tbl[] = {
       /* TRANSLATORS: These are labels for buttons etc used in
          Pinentries.  An underscore indicates that the next letter
          should be used as an accelerator.  Double the underscore for
@@ -410,7 +427,14 @@ start_pinentry (ctrl_t ctrl)
          the second vertical bar.  */
       { "ok",     N_("|pinentry-label|_OK") },
       { "cancel", N_("|pinentry-label|_Cancel") },
+      { "yes",    N_("|pinentry-label|_Yes") },
+      { "no",     N_("|pinentry-label|_No") },
       { "prompt", N_("|pinentry-label|PIN:") },
+      { "pwmngr", N_("|pinentry-label|_Save in password manager") },
+      { "cf-visi",N_("Do you really want to make your "
+                     "passphrase visible on the screen?") },
+      { "tt-visi",N_("|pinentry-tt|Make passphrase visible") },
+      { "tt-hide",N_("|pinentry-tt|Hide passphrase") },
       { NULL, NULL}
     };
     char *optstr;
@@ -430,7 +454,7 @@ start_pinentry (ctrl_t ctrl)
       }
   }
 
-  
+
   /* Tell the pinentry the name of a file it shall touch after having
      messed with the tty.  This is optional and only supported by
      newer pinentries and thus we do no error checking. */
@@ -442,7 +466,7 @@ start_pinentry (ctrl_t ctrl)
   if (tmpstr)
     {
       char *optstr;
-      
+
       if (asprintf (&optstr, "OPTION touch-file=%s", tmpstr ) < 0 )
         ;
       else
@@ -458,7 +482,7 @@ start_pinentry (ctrl_t ctrl)
      it will send the pid back and we will use an inquire to notify
      our client.  The client may answer the inquiry either with END or
      with CAN to cancel the pinentry. */
-  rc = assuan_transact (entry_ctx, "GETINFO pid", 
+  rc = assuan_transact (entry_ctx, "GETINFO pid",
                         getinfo_pid_cb, &pinentry_pid,
                         NULL, NULL, NULL, NULL);
   if (rc)
@@ -544,7 +568,7 @@ all_digitsp( const char *s)
   for (; *s && *s >= '0' && *s <= '9'; s++)
     ;
   return !*s;
-}  
+}
 
 
 /* Return a new malloced string by unescaping the string S.  Escaping
@@ -563,7 +587,7 @@ unescape_passphrase_string (const unsigned char *s)
   while (*s && !spacep (s))
     {
       if (*s == '%' && s[1] && s[2])
-        { 
+        {
           s++;
           *d = xtoi_2 (s);
           if (!*d)
@@ -579,7 +603,7 @@ unescape_passphrase_string (const unsigned char *s)
       else
         *d++ = *s++;
     }
-  *d = 0; 
+  *d = 0;
   return buffer;
 }
 
@@ -621,7 +645,7 @@ inq_quality (void *opaque, const char *line)
       line += 7;
       while (*line == ' ')
         line++;
-      
+
       pin = unescape_passphrase_string (line);
       if (!pin)
         rc = gpg_error_from_syserror ();
@@ -653,7 +677,7 @@ setup_qualitybar (void)
   char line[ASSUAN_LINELENGTH];
   char *tmpstr, *tmpstr2;
   const char *tooltip;
-  
+
   /* TRANSLATORS: This string is displayed by Pinentry as the label
      for the quality bar.  */
   tmpstr = try_percent_escape (_("Quality:"), "\t\r\n\f\v");
@@ -666,7 +690,7 @@ setup_qualitybar (void)
     ; /* Ignore Unknown Command from old Pinentry versions.  */
   else if (rc)
     return rc;
-  
+
   tmpstr2 = gnupg_get_help_string ("pinentry.qualitybar.tooltip", 0);
   if (tmpstr2)
     tooltip = tmpstr2;
@@ -700,15 +724,36 @@ setup_qualitybar (void)
 }
 
 
+enum
+  {
+    PINENTRY_STATUS_PASSWORD_FROM_CACHE = 1 << 9
+  };
+
+/* Check the button_info line for a close action.  Also check for the
+   PIN_REPEATED flag.  */
+static gpg_error_t
+pinentry_status_cb (void *opaque, const char *line)
+{
+  unsigned int *flag = opaque;
+
+  if (strcmp (line, "PASSWORD_FROM_CACHE") == 0)
+    {
+      *flag |= PINENTRY_STATUS_PASSWORD_FROM_CACHE;
+    }
+
+  return 0;
+}
 \f
 /* Call the Entry and ask for the PIN.  We do check for a valid PIN
    number here and repeat it as long as we have invalid formed
-   numbers. */
+   numbers.  KEYINFO and CACHEMODE are used to tell pinentry something
+   about the key. */
 int
 agent_askpin (ctrl_t ctrl,
               const char *desc_text, const char *prompt_text,
               const char *initial_errtext,
-              struct pin_entry_info_s *pininfo)
+              struct pin_entry_info_s *pininfo,
+              const char *keyinfo, cache_mode_t cache_mode)
 {
   int rc;
   char line[ASSUAN_LINELENGTH];
@@ -716,6 +761,7 @@ agent_askpin (ctrl_t ctrl,
   const char *errtext = NULL;
   int is_pin = 0;
   int saveflag;
+  unsigned int pinentry_status;
 
   if (opt.batch)
     return 0; /* fixme: we should return BAD PIN */
@@ -738,6 +784,25 @@ agent_askpin (ctrl_t ctrl,
   if (rc)
     return rc;
 
+  /* If we have a KEYINFO string and are normal, user, or ssh cache
+     mode, we tell that the Pinentry so it may use it for own caching
+     purposes.  Most pinentries won't have this implemented and thus
+     we do not error out in this case.  */
+  if (keyinfo && (cache_mode == CACHE_MODE_NORMAL
+                  || cache_mode == CACHE_MODE_USER
+                  || cache_mode == CACHE_MODE_SSH))
+    snprintf (line, DIM(line)-1, "SETKEYINFO %c/%s",
+             cache_mode == CACHE_MODE_USER? 'u' :
+             cache_mode == CACHE_MODE_SSH? 's' : 'n',
+             keyinfo);
+  else
+    snprintf (line, DIM(line)-1, "SETKEYINFO --clear");
+
+  rc = assuan_transact (entry_ctx, line,
+                       NULL, NULL, NULL, NULL, NULL, NULL);
+  if (rc && gpg_err_code (rc) != GPG_ERR_ASS_UNKNOWN_CMD)
+    return unlock_pinentry (rc);
+
   snprintf (line, DIM(line)-1, "SETDESC %s", desc_text);
   line[DIM(line)-1] = 0;
   rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -762,7 +827,7 @@ agent_askpin (ctrl_t ctrl,
     }
 
   if (initial_errtext)
-    { 
+    {
       snprintf (line, DIM(line)-1, "SETERROR %s", initial_errtext);
       line[DIM(line)-1] = 0;
       rc = assuan_transact (entry_ctx, line,
@@ -779,7 +844,7 @@ agent_askpin (ctrl_t ctrl,
       parm.buffer = (unsigned char*)pininfo->pin;
 
       if (errtext)
-        { 
+        {
           /* TRANSLATORS: The string is appended to an error message in
              the pinentry.  The %s is the actual error message, the
              two %d give the current and maximum number of tries. */
@@ -792,11 +857,13 @@ agent_askpin (ctrl_t ctrl,
             return unlock_pinentry (rc);
           errtext = NULL;
         }
-      
+
       saveflag = assuan_get_flag (entry_ctx, ASSUAN_CONFIDENTIAL);
       assuan_begin_confidential (entry_ctx);
+      pinentry_status = 0;
       rc = assuan_transact (entry_ctx, "GETPIN", getpin_cb, &parm,
-                            inq_quality, entry_ctx, NULL, NULL);
+                            inq_quality, entry_ctx,
+                           pinentry_status_cb, &pinentry_status);
       assuan_set_flag (entry_ctx, ASSUAN_CONFIDENTIAL, saveflag);
       /* Most pinentries out in the wild return the old Assuan error code
          for canceled which gets translated to an assuan Cancel error and
@@ -840,6 +907,11 @@ agent_askpin (ctrl_t ctrl,
 
       if (!errtext)
         return unlock_pinentry (0); /* okay, got a PIN or passphrase */
+
+      if ((pinentry_status & PINENTRY_STATUS_PASSWORD_FROM_CACHE))
+       /* The password was read from the cache.  Don't count this
+          against the retry count.  */
+       pininfo->failed_tries --;
     }
 
   return unlock_pinentry (gpg_error (pininfo->min_digits? GPG_ERR_BAD_PIN
@@ -849,11 +921,12 @@ agent_askpin (ctrl_t ctrl,
 
 \f
 /* Ask for the passphrase using the supplied arguments.  The returned
-   passphrase needs to be freed by the caller. */
-int 
+   passphrase needs to be freed by the caller.  */
+int
 agent_get_passphrase (ctrl_t ctrl,
                       char **retpass, const char *desc, const char *prompt,
-                      const char *errtext, int with_qualitybar)
+                      const char *errtext, int with_qualitybar,
+                     const char *keyinfo, cache_mode_t cache_mode)
 {
 
   int rc;
@@ -863,7 +936,7 @@ agent_get_passphrase (ctrl_t ctrl,
 
   *retpass = NULL;
   if (opt.batch)
-    return gpg_error (GPG_ERR_BAD_PASSPHRASE); 
+    return gpg_error (GPG_ERR_BAD_PASSPHRASE);
 
   rc = start_pinentry (ctrl);
   if (rc)
@@ -873,6 +946,26 @@ agent_get_passphrase (ctrl_t ctrl,
     prompt = desc && strstr (desc, "PIN")? "PIN": _("Passphrase");
 
 
+  /* If we have a KEYINFO string and are normal, user, or ssh cache
+     mode, we tell that the Pinentry so it may use it for own caching
+     purposes.  Most pinentries won't have this implemented and thus
+     we do not error out in this case.  */
+  if (keyinfo && (cache_mode == CACHE_MODE_NORMAL
+                  || cache_mode == CACHE_MODE_USER
+                  || cache_mode == CACHE_MODE_SSH))
+    snprintf (line, DIM(line)-1, "SETKEYINFO %c/%s",
+             cache_mode == CACHE_MODE_USER? 'u' :
+             cache_mode == CACHE_MODE_SSH? 's' : 'n',
+             keyinfo);
+  else
+    snprintf (line, DIM(line)-1, "SETKEYINFO --clear");
+
+  rc = assuan_transact (entry_ctx, line,
+                       NULL, NULL, NULL, NULL, NULL, NULL);
+  if (rc && gpg_err_code (rc) != GPG_ERR_ASS_UNKNOWN_CMD)
+    return unlock_pinentry (rc);
+
+
   if (desc)
     snprintf (line, DIM(line)-1, "SETDESC %s", desc);
   else
@@ -936,9 +1029,9 @@ agent_get_passphrase (ctrl_t ctrl,
    displayed to allow the user to easily return a GPG_ERR_CANCELED.
    if the Pinentry does not support this, the user can still cancel by
    closing the Pinentry window.  */
-int 
+int
 agent_get_confirmation (ctrl_t ctrl,
-                        const char *desc, const char *ok, 
+                        const char *desc, const char *ok,
                         const char *notok, int with_cancel)
 {
   int rc;
@@ -1012,7 +1105,7 @@ agent_get_confirmation (ctrl_t ctrl,
    text OK_BTN (which may be NULL to use the default of "OK") and waut
    for the user to hit this button.  The return value is not
    relevant.  */
-int 
+int
 agent_show_message (ctrl_t ctrl, const char *desc, const char *ok_btn)
 {
   int rc;
@@ -1046,7 +1139,7 @@ agent_show_message (ctrl_t ctrl, const char *desc, const char *ok_btn)
       if (rc)
         return unlock_pinentry (rc);
     }
-  
+
   rc = assuan_transact (entry_ctx, "CONFIRM --one-button", NULL, NULL, NULL,
                         NULL, NULL, NULL);
   if (rc && gpg_err_source (rc) && gpg_err_code (rc) == GPG_ERR_ASS_CANCELED)
@@ -1066,7 +1159,7 @@ popup_message_thread (void *arg)
      allow the use of old Pinentries.  Those old Pinentries will then
      show an additional Cancel button but that is mostly a visual
      annoyance. */
-  assuan_transact (entry_ctx, "CONFIRM --one-button", 
+  assuan_transact (entry_ctx, "CONFIRM --one-button",
                    NULL, NULL, NULL, NULL, NULL, NULL);
   popup_finished = 1;
   return NULL;
@@ -1079,7 +1172,7 @@ popup_message_thread (void *arg)
    as the message is not anymore required because the message is
    system modal and all other attempts to use the pinentry will fail
    (after a timeout). */
-int 
+int
 agent_popup_message_start (ctrl_t ctrl, const char *desc, const char *ok_btn)
 {
   int rc;
@@ -1140,7 +1233,7 @@ agent_popup_message_stop (ctrl_t ctrl)
   if (!popup_tid || !entry_ctx)
     {
       log_debug ("agent_popup_message_stop called with no active popup\n");
-      return; 
+      return;
     }
 
   pid = assuan_get_pid (entry_ctx);
@@ -1155,7 +1248,7 @@ agent_popup_message_stop (ctrl_t ctrl)
           && pid != 0)
     {
       HANDLE process = (HANDLE) pid;
-      
+
       /* Arbitrary error code.  */
       TerminateProcess (process, 1);
     }
@@ -1185,3 +1278,28 @@ agent_popup_message_stop (ctrl_t ctrl)
 }
 
 
+int
+agent_clear_passphrase (ctrl_t ctrl,
+                       const char *keyinfo, cache_mode_t cache_mode)
+{
+  int rc;
+  char line[ASSUAN_LINELENGTH];
+
+  if (! (keyinfo && (cache_mode == CACHE_MODE_NORMAL
+                    || cache_mode == CACHE_MODE_USER
+                    || cache_mode == CACHE_MODE_SSH)))
+    return gpg_error (GPG_ERR_NOT_SUPPORTED);
+
+  rc = start_pinentry (ctrl);
+  if (rc)
+    return rc;
+
+  snprintf (line, DIM(line)-1, "CLEARPASSPHRASE %c/%s",
+           cache_mode == CACHE_MODE_USER? 'u' :
+           cache_mode == CACHE_MODE_SSH? 's' : 'n',
+           keyinfo);
+  rc = assuan_transact (entry_ctx, line,
+                       NULL, NULL, NULL, NULL, NULL, NULL);
+
+  return unlock_pinentry (rc);
+}
index 3583ea0..2aacecc 100644 (file)
@@ -1113,7 +1113,7 @@ ssh_search_control_file (ssh_control_file_t cf,
   /* We need to make sure that HEXGRIP is all uppercase.  The easiest
      way to do this and also check its length is by copying to a
      second buffer. */
-  for (i=0, s=hexgrip; i < 40; s++, i++)
+  for (i=0, s=hexgrip; i < 40 && *s; s++, i++)
     uphexgrip[i] = *s >= 'a'? (*s & 0xdf): *s;
   uphexgrip[i] = 0;
   if (i != 40)
@@ -2881,7 +2881,7 @@ ssh_identity_register (ctrl_t ctrl, gcry_sexp_t key, int ttl, int confirm)
   pi2->check_cb_arg = pi->pin;
 
  next_try:
-  err = agent_askpin (ctrl, description, NULL, initial_errtext, pi);
+  err = agent_askpin (ctrl, description, NULL, initial_errtext, pi, NULL, 0);
   initial_errtext = NULL;
   if (err)
     goto out;
@@ -2889,7 +2889,7 @@ ssh_identity_register (ctrl_t ctrl, gcry_sexp_t key, int ttl, int confirm)
   /* Unless the passphrase is empty, ask to confirm it.  */
   if (pi->pin && *pi->pin)
     {
-      err = agent_askpin (ctrl, description2, NULL, NULL, pi2);
+      err = agent_askpin (ctrl, description2, NULL, NULL, pi2, NULL, 0);
       if (err == -1)
        { /* The re-entered one did not match and the user did not
             hit cancel. */
index 2405c54..9393212 100644 (file)
@@ -1245,7 +1245,7 @@ cmd_get_passphrase (assuan_context_t ctx, char *line)
   if (!strcmp (desc, "X"))
     desc = NULL;
 
-  pw = cacheid ? agent_get_cache (cacheid, CACHE_MODE_NORMAL, &cache_marker)
+  pw = cacheid ? agent_get_cache (cacheid, CACHE_MODE_USER, &cache_marker)
                : NULL;
   if (pw)
     {
@@ -1269,8 +1269,8 @@ cmd_get_passphrase (assuan_context_t ctx, char *line)
 
     next_try:
       rc = agent_get_passphrase (ctrl, &response, desc, prompt,
-                                 repeat_errtext? repeat_errtext:errtext,
-                                 opt_qualbar);
+                                repeat_errtext? repeat_errtext:errtext,
+                                opt_qualbar, cacheid, CACHE_MODE_USER);
       xfree (repeat_errtext);
       repeat_errtext = NULL;
       if (!rc)
@@ -1287,7 +1287,8 @@ cmd_get_passphrase (assuan_context_t ctx, char *line)
               char *response2;
 
               rc = agent_get_passphrase (ctrl, &response2, desc2, prompt,
-                                         errtext, 0);
+                                         errtext, 0,
+                                        cacheid, CACHE_MODE_USER);
               if (rc)
                 break;
               if (strcmp (response2, response))
@@ -1329,6 +1330,7 @@ static const char hlp_clear_passphrase[] =
 static gpg_error_t
 cmd_clear_passphrase (assuan_context_t ctx, char *line)
 {
+  ctrl_t ctrl = assuan_get_pointer (ctx);
   char *cacheid = NULL;
   char *p;
 
@@ -1343,6 +1345,9 @@ cmd_clear_passphrase (assuan_context_t ctx, char *line)
     return set_error (GPG_ERR_ASS_PARAMETER, "invalid length of cacheID");
 
   agent_put_cache (cacheid, CACHE_MODE_USER, NULL, 0);
+
+  agent_clear_passphrase (ctrl, cacheid, CACHE_MODE_USER);
+
   return 0;
 }
 
index 1f36f6e..34ef498 100644 (file)
@@ -266,7 +266,7 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
 
   if (any_flags)
     {
-      rc = agent_askpin (ctrl, info, prompt, again_text, pi);
+      rc = agent_askpin (ctrl, info, prompt, again_text, pi, NULL, 0);
       again_text = NULL;
       if (!rc && newpin)
         {
@@ -288,7 +288,7 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
                               is_puk?
                               _("Repeat this PUK"):
                               _("Repeat this PIN")),
-                             prompt, NULL, pi2);
+                             prompt, NULL, pi2, NULL, 0);
           if (!rc && strcmp (pi->pin, pi2->pin))
             {
               again_text = (resetcode? 
@@ -312,7 +312,7 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
                      info? info:"",
                      info? "')":"") < 0)
         desc = NULL;
-      rc = agent_askpin (ctrl, desc?desc:info, prompt, NULL, pi);
+      rc = agent_askpin (ctrl, desc?desc:info, prompt, NULL, pi, NULL, 0);
       xfree (desc);
     }
 
index 550e403..6d85cfd 100644 (file)
@@ -393,7 +393,7 @@ unprotect (ctrl_t ctrl, const char *desc_text,
   arg.change_required = 0;
   pi->check_cb_arg = &arg;
 
-  rc = agent_askpin (ctrl, desc_text, NULL, NULL, pi);
+  rc = agent_askpin (ctrl, desc_text, NULL, NULL, pi, hexgrip, cache_mode);
   if (!rc)
     {
       assert (arg.unprotected_key);
index d5af9e0..65477ad 100644 (file)
@@ -321,7 +321,7 @@ agent_genkey (ctrl_t ctrl, const char *keyparam, size_t keyparamlen,
     pi2->check_cb_arg = pi->pin;
 
   next_try:
-    rc = agent_askpin (ctrl, text1, NULL, initial_errtext, pi);
+    rc = agent_askpin (ctrl, text1, NULL, initial_errtext, pi, NULL, 0);
     initial_errtext = NULL;
     if (!rc)
       {
@@ -333,7 +333,7 @@ agent_genkey (ctrl_t ctrl, const char *keyparam, size_t keyparamlen,
           }
         if (pi->pin && *pi->pin)
           {
-            rc = agent_askpin (ctrl, text2, NULL, NULL, pi2);
+            rc = agent_askpin (ctrl, text2, NULL, NULL, pi2, NULL, 0);
             if (rc == -1)
               { /* The re-entered one did not match and the user did not
                    hit cancel. */
@@ -443,7 +443,7 @@ agent_protect_and_store (ctrl_t ctrl, gcry_sexp_t s_skey)
     pi2->check_cb_arg = pi->pin;
 
   next_try:
-    rc = agent_askpin (ctrl, text1, NULL, initial_errtext, pi);
+    rc = agent_askpin (ctrl, text1, NULL, initial_errtext, pi, NULL, 0);
     initial_errtext = NULL;
     if (!rc)
       {
@@ -456,7 +456,7 @@ agent_protect_and_store (ctrl_t ctrl, gcry_sexp_t s_skey)
         /* Unless the passphrase is empty, ask to confirm it.  */
         if (pi->pin && *pi->pin)
           {
-            rc = agent_askpin (ctrl, text2, NULL, NULL, pi2);
+            rc = agent_askpin (ctrl, text2, NULL, NULL, pi2, NULL, 0);
             if (rc == -1)
               { /* The re-entered one did not match and the user did not
                    hit cancel. */
index bf2a26d..479f918 100644 (file)
@@ -114,6 +114,7 @@ enum cmd_and_opt_values
   oAllowMarkTrusted,
   oNoAllowMarkTrusted,
   oAllowPresetPassphrase,
+  oNoAllowExternalCache,
   oKeepTTY,
   oKeepDISPLAY,
   oSSHSupport,
@@ -198,6 +199,8 @@ static ARGPARSE_OPTS opts[] = {
       "@"
 #endif
   },
+  { oNoAllowExternalCache, "no-allow-external-cache", 0,
+            N_("disallow the use of an external password cache") },
   { oWriteEnvFile, "write-env-file", 2|8,
             N_("|FILE|write environment settings also to FILE")},
   {0}
@@ -509,6 +512,7 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread)
       opt.ignore_cache_for_signing = 0;
       opt.allow_mark_trusted = 1;
       opt.disable_scdaemon = 0;
+      opt.allow_external_cache = 1;
       return 1;
     }
 
@@ -571,6 +575,9 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread)
 
     case oAllowPresetPassphrase: opt.allow_preset_passphrase = 1; break;
 
+    case oNoAllowExternalCache: opt.allow_external_cache = 0;
+      break;
+
     default:
       return 0; /* not handled */
     }
@@ -969,6 +976,8 @@ main (int argc, char **argv )
               GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME);
       printf ("no-allow-mark-trusted:%lu:\n",
               GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME);
+      printf ("no-allow-external-cache:%lu:\n",
+              GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME);
       printf ("disable-scdaemon:%lu:\n",
               GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME);
 #ifdef HAVE_W32_SYSTEM
index f07f345..c93e762 100644 (file)
@@ -26,7 +26,7 @@ min_automake_version="1.14"
 # (git tag -s gnupg-2.n.m) and run "./autogen.sh --force".  Please
 # bump the version number immediately *after* the release and do
 # another commit and push so that the git magic is able to work.
-m4_define([mym4_version], [2.0.27])
+m4_define([mym4_version], [2.0.28])
 
 # Below is m4 magic to extract and compute the git revision number,
 # the decimalized short revision number, a beta version string and a
@@ -47,7 +47,7 @@ AC_INIT([gnupg],[mym4_full_version], [http://bugs.gnupg.org])
 NEED_GPG_ERROR_VERSION=1.11
 
 NEED_LIBGCRYPT_API=1
-NEED_LIBGCRYPT_VERSION=1.4.0
+NEED_LIBGCRYPT_VERSION=1.5.0
 
 NEED_LIBASSUAN_API=2
 NEED_LIBASSUAN_VERSION=2.0.0
index 927cc61..65974dd 100644 (file)
@@ -219,9 +219,9 @@ more arguments in future versions.
 
 
     NEWSIG
-        May be issued right before a signature verification starts.  This
-        is useful to define a context for parsing ERROR status
-        messages.  No arguments are currently defined.
+        Is issued right before a signature verification starts.  This is
+        useful to define a context for parsing ERROR status messages.  No
+        arguments are currently defined.
 
     GOODSIG  <long_keyid_or_fpr>  <username>
        The signature with the keyid is good.  For each signature only
index c3dfd82..b7b0d4c 100644 (file)
@@ -352,6 +352,17 @@ Allow clients to use the loopback pinentry features; see the option
 @option{pinentry-mode} for details.
 @end ifset
 
+@item --no-allow-external-cache
+@opindex no-allow-external-cache
+Tell Pinentry not to enable features which use an external cache for
+passphrases.
+
+Some desktop environments prefer to unlock all
+credentials with one master password and may have installed a Pinentry
+which employs an additional external cache to implement such a policy.
+By using this option the Pinentry is advised not to make use of such a
+cache and instead always ask the user for the requested passphrase.
+
 @item --ignore-cache-for-signing
 @opindex ignore-cache-for-signing
 This option will let @command{gpg-agent} bypass the passphrase cache for all
@@ -713,6 +724,7 @@ again.  Only certain options are honored: @code{quiet},
 @code{verbose}, @code{debug}, @code{debug-all}, @code{debug-level},
 @code{no-grab}, @code{pinentry-program}, @code{default-cache-ttl},
 @code{max-cache-ttl}, @code{ignore-cache-for-signing},
+@code{no-allow-external-cache},
 @code{allow-mark-trusted}, @code{disable-scdaemon}, and
 @code{disable-check-own-socket}.  @code{scdaemon-program} is also
 supported but due to the current implementation, which calls the
index 078d2ad..b0882b8 100644 (file)
@@ -609,7 +609,7 @@ certificates starting with the signer cert.  The default is -2.
 Use the cipher algorithm with the ASN.1 object identifier @var{oid} for
 encryption.  For convenience the strings @code{3DES}, @code{AES} and
 @code{AES256} may be used instead of their OIDs.  The default is
-@code{3DES} (1.2.840.113549.3.7).
+@code{AES} (2.16.840.1.101.3.4.1.2).
 
 @item --digest-algo @code{name}
 Use @code{name} as the message digest algorithm.  Usually this
@@ -1127,7 +1127,7 @@ keygrip with a @samp{&}.
 Use @var{hash-algo} for this CSR or certificate.  The supported hash
 algorithms are: @samp{sha1}, @samp{sha256}, @samp{sha384} and
 @samp{sha512}; they may also be specified with uppercase letters.  The
-default is @samp{sha1}.
+default is @samp{sha256}.
 
 @end table
 
index 6c0013d..de1726d 100644 (file)
@@ -534,9 +534,6 @@ check_input( armor_filter_context_t *afx, IOBUF a )
             /* This is probably input from a keyserver helper and we
                have not yet seen an error line.  */
             afx->key_failed_code = parse_key_failed_line (line+4, len-4);
-            log_debug ("armor-keys-failed (%.*s) ->%d\n",
-                       (int)len, line,
-                       afx->key_failed_code);
           }
        if( i >= 0 && !(afx->only_keyblocks && i != 1 && i != 5 && i != 6 )) {
            hdr_line = i;
index 85f23ce..9b42cfd 100644 (file)
@@ -452,11 +452,14 @@ cmp_public_keys( PKT_public_key *a, PKT_public_key *b )
        return -1;
 
     n = pubkey_get_npkey( b->pubkey_algo );
-    if( !n )
-       return -1; /* can't compare due to unknown algorithm */
-    for(i=0; i < n; i++ ) {
-       if( mpi_cmp( a->pkey[i], b->pkey[i] ) )
-           return -1;
+    if( !n ) { /* unknown algorithm, rest is in opaque MPI */
+       if( mpi_cmp( a->pkey[0], b->pkey[0] ) )
+           return -1; /* can't compare due to unknown algorithm */
+    } else {
+       for(i=0; i < n; i++ ) {
+           if( mpi_cmp( a->pkey[i], b->pkey[i] ) )
+               return -1;
+       }
     }
 
     return 0;
@@ -479,11 +482,14 @@ cmp_secret_keys( PKT_secret_key *a, PKT_secret_key *b )
        return -1;
 
     n = pubkey_get_npkey( b->pubkey_algo );
-    if( !n )
-       return -1; /* can't compare due to unknown algorithm */
-    for(i=0; i < n; i++ ) {
-       if( mpi_cmp( a->skey[i], b->skey[i] ) )
+    if( !n ) { /* unknown algorithm, rest is in opaque MPI */
+       if( mpi_cmp( a->skey[0], b->skey[0] ) )
            return -1;
+    } else {
+       for(i=0; i < n; i++ ) {
+           if( mpi_cmp( a->skey[i], b->skey[i] ) )
+               return -1;
+       }
     }
 
     return 0;
index 8b3cf2d..a27c8e2 100644 (file)
@@ -500,7 +500,19 @@ get_seckey( PKT_secret_key *sk, u32 *keyid )
     ctx.req_usage = sk->req_usage;
     rc = lookup( &ctx, &kb, 1 );
     if ( !rc ) {
+        u32 skid[2];
+
         sk_from_block ( &ctx, sk, kb );
+        keyid_from_sk ( sk, skid );
+        /*
+         * Make sure it's exact match of keyid.
+         * If not, it's secret subkey with no public key.
+         */
+        if (!(keyid[0] == skid[0] && keyid[1] == skid[1])) {
+          log_error (_("key %s: secret key without public key"
+                       " - skipped\n"), keystr(keyid));
+          rc = G10ERR_NO_PUBKEY;
+        }
     }
     get_seckey_end( &ctx );
     release_kbnode ( kb );
index 576b88e..060495e 100644 (file)
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -109,6 +109,7 @@ enum cmd_and_opt_values
     aSignKey,
     aLSignKey,
     aListConfig,
+    aListGcryptConfig,
     aGPGConfList,
     aGPGConfTest,
     aListPackets,
@@ -431,6 +432,7 @@ static ARGPARSE_OPTS opts[] = {
   ARGPARSE_c (aChangePIN,  "change-pin", N_("change a card's PIN")),
 #endif
   ARGPARSE_c (aListConfig, "list-config", "@"),
+  ARGPARSE_c (aListGcryptConfig, "list-gcrypt-config", "@"),
   ARGPARSE_c (aGPGConfList, "gpgconf-list", "@" ),
   ARGPARSE_c (aGPGConfTest, "gpgconf-test", "@" ),
   ARGPARSE_c (aListPackets, "list-packets","@"),
@@ -2153,6 +2155,7 @@ main (int argc, char **argv)
          {
          case aCheckKeys:
          case aListConfig:
+         case aListGcryptConfig:
           case aGPGConfList:
           case aGPGConfTest:
          case aListPackets:
@@ -4064,6 +4067,13 @@ main (int argc, char **argv)
        }
        break;
 
+      case aListGcryptConfig:
+        /* Fixme: It would be nice to integrate that with
+           --list-config but unfortunately there is no way yet to have
+           libgcrypt print it to an estream for further parsing.  */
+        gcry_control (GCRYCTL_PRINT_CONFIG, stdout);
+        break;
+
       case aListPackets:
        opt.list_packets=2;
       default:
index 6288030..17d40de 100644 (file)
@@ -387,9 +387,9 @@ proc_pubkey_enc( CTX c, PACKET *pkt )
            xfree(c->dek); c->dek = NULL;
        }
     }
-    else if( is_ELGAMAL(enc->pubkey_algo)
-             || enc->pubkey_algo == PUBKEY_ALGO_DSA
-             || is_RSA(enc->pubkey_algo)
+    else if( enc->pubkey_algo == PUBKEY_ALGO_ELGAMAL_E
+             || enc->pubkey_algo == PUBKEY_ALGO_RSA
+             || enc->pubkey_algo == PUBKEY_ALGO_RSA_E
              || enc->pubkey_algo == PUBKEY_ALGO_ELGAMAL) {
       /* Note that we also allow type 20 Elgamal keys for decryption.
          There are still a couple of those keys in active use as a
@@ -1604,6 +1604,8 @@ check_sig_and_print( CTX c, KBNODE node )
 
   }
 
+  write_status_text (STATUS_NEWSIG, NULL);
+
   /* (Indendation below not yet changed to GNU style.) */
 
     astr = openpgp_pk_algo_name ( sig->pubkey_algo );
index 5a98961..a8f9d99 100644 (file)
@@ -1828,6 +1828,12 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
        byte temp[16];
         size_t snlen = 0;
 
+        if (pktlen < 1)
+          {
+            rc = GPG_ERR_INV_PACKET;
+            goto leave;
+          }
+
        if( !npkey ) {
            sk->skey[0] = gcry_mpi_set_opaque (NULL, read_rest(inp, pktlen, 0),
                                                pktlen*8 );
@@ -1836,7 +1842,9 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
        }
 
        for(i=0; i < npkey; i++ ) {
-           n = pktlen; sk->skey[i] = mpi_read(inp, &n, 0 ); pktlen -=n;
+           n = pktlen;
+            sk->skey[i] = mpi_read(inp, &n, 0 );
+            pktlen -=n;
            if( list_mode ) {
                fprintf (listfp,   "\tskey[%d]: ", i);
                mpi_print(listfp, sk->skey[i], mpi_print_mode  );
@@ -1847,7 +1855,8 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
        }
         if (rc) /* one of the MPIs were bad */
             goto leave;
-       sk->protect.algo = iobuf_get_noeof(inp); pktlen--;
+       sk->protect.algo = iobuf_get_noeof(inp);
+        pktlen--;
         sk->protect.sha1chk = 0;
        if( sk->protect.algo ) {
            sk->is_protected = 1;
@@ -1858,12 +1867,15 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
                    goto leave;
                }
                 sk->protect.sha1chk = (sk->protect.algo == 254);
-               sk->protect.algo = iobuf_get_noeof(inp); pktlen--;
+               sk->protect.algo = iobuf_get_noeof(inp);
+                pktlen--;
                /* Note that a sk->protect.algo > 110 is illegal, but
                   I'm not erroring on it here as otherwise there
                   would be no way to delete such a key. */
-               sk->protect.s2k.mode  = iobuf_get_noeof(inp); pktlen--;
-               sk->protect.s2k.hash_algo = iobuf_get_noeof(inp); pktlen--;
+               sk->protect.s2k.mode  = iobuf_get_noeof(inp);
+                pktlen--;
+               sk->protect.s2k.hash_algo = iobuf_get_noeof(inp);
+                pktlen--;
                /* check for the special GNU extension */
                if( is_v4 && sk->protect.s2k.mode == 101 ) {
                    for(i=0; i < 4 && pktlen; i++, pktlen-- )
@@ -2013,6 +2025,11 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
            /* ugly; the length is encrypted too, so we read all
             * stuff up to the end of the packet into the first
             * skey element */
+           if (pktlen < 2) /* At least two bytes for the length.  */
+             {
+                rc = GPG_ERR_INV_PACKET;
+                goto leave;
+             }
            sk->skey[npkey] = gcry_mpi_set_opaque (NULL,
                                                    read_rest(inp, pktlen, 0),
                                                    pktlen*8);
@@ -2029,6 +2046,11 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
                         fprintf (listfp,   "\tskey[%d]: [encrypted]\n", i);
                 }
                 else {
+                    if (pktlen < 2) /* At least two bytes for the length.  */
+                      {
+                        rc = GPG_ERR_INV_PACKET;
+                        goto leave;
+                     }
                     n = pktlen;
                     sk->skey[i] = mpi_read(inp, &n, 0 );
                     pktlen -=n;
@@ -2045,7 +2067,13 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
             if (rc)
                 goto leave;
 
-           sk->csum = read_16(inp); pktlen -= 2;
+            if (pktlen < 2)
+              {
+                rc = GPG_ERR_INV_PACKET;
+                goto leave;
+              }
+           sk->csum = read_16(inp);
+            pktlen -= 2;
            if( list_mode ) {
                fprintf (listfp, "\tchecksum: %04hx\n", sk->csum);
            }
@@ -2057,6 +2085,12 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
     else {
        PKT_public_key *pk = pkt->pkt.public_key;
 
+        if (pktlen < 1)
+          {
+            rc = GPG_ERR_INV_PACKET;
+            goto leave;
+          }
+
        if( !npkey ) {
            pk->pkey[0] = gcry_mpi_set_opaque ( NULL,
                                                 read_rest(inp, pktlen, 0),
@@ -2066,7 +2100,9 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
        }
 
        for(i=0; i < npkey; i++ ) {
-           n = pktlen; pk->pkey[i] = mpi_read(inp, &n, 0 ); pktlen -=n;
+           n = pktlen;
+            pk->pkey[i] = mpi_read(inp, &n, 0 );
+            pktlen -=n;
            if( list_mode ) {
                fprintf (listfp,   "\tpkey[%d]: ", i);
                mpi_print(listfp, pk->pkey[i], mpi_print_mode  );
index 184b0f6..49f50ec 100644 (file)
@@ -27,6 +27,9 @@
 #include <stdlib.h>
 #include <ctype.h>
 #include <string.h>
+#include <stdarg.h>
+#include <limits.h>
+#include <errno.h>
 
 #include "libjnlib-config.h"
 #include "mischelp.h"
@@ -198,6 +201,8 @@ initialize( ARGPARSE_ARGS *arg, const char *filename, unsigned *lineno )
             s = _("keyword too long");
           else if ( arg->r_opt == ARGPARSE_MISSING_ARG )
             s = _("missing argument");
+          else if ( arg->r_opt == ARGPARSE_INVALID_ARG )
+            s = _("invalid argument");
           else if ( arg->r_opt == ARGPARSE_INVALID_COMMAND )
             s = _("invalid command");
           else if ( arg->r_opt == ARGPARSE_INVALID_ALIAS )
@@ -214,6 +219,8 @@ initialize( ARGPARSE_ARGS *arg, const char *filename, unsigned *lineno )
 
           if ( arg->r_opt == ARGPARSE_MISSING_ARG )
             jnlib_log_error (_("missing argument for option \"%.50s\"\n"), s);
+          else if ( arg->r_opt == ARGPARSE_INVALID_ARG )
+            jnlib_log_error (_("invalid argument for option \"%.50s\"\n"), s);
           else if ( arg->r_opt == ARGPARSE_UNEXPECTED_ARG )
             jnlib_log_error (_("option \"%.50s\" does not expect an "
                                "argument\n"), s );
@@ -524,7 +531,7 @@ optfile_parse (FILE *fp, const char *filename, unsigned *lineno,
                             p[strlen(p)-1] = 0;
                         }
                       if (!set_opt_arg (arg, opts[idx].flags, p))
-                       jnlib_free(buffer);
+                        jnlib_free(buffer);
                     }
                 }
               break;
@@ -966,23 +973,54 @@ arg_parse( ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts)
 }
 
 
-
+/* Returns: -1 on error, 0 for an integer type and 1 for a non integer
+   type argument.  */
 static int
-set_opt_arg(ARGPARSE_ARGS *arg, unsigned flags, char *s)
+set_opt_arg (ARGPARSE_ARGS *arg, unsigned flags, char *s)
 {
   int base = (flags & ARGPARSE_OPT_PREFIX)? 0 : 10;
+  long l;
 
   switch ( (arg->r_type = (flags & ARGPARSE_TYPE_MASK)) )
     {
-    case ARGPARSE_TYPE_INT:
-      arg->r.ret_int = (int)strtol(s,NULL,base);
-      return 0;
     case ARGPARSE_TYPE_LONG:
-      arg->r.ret_long= strtol(s,NULL,base);
+    case ARGPARSE_TYPE_INT:
+      errno = 0;
+      l = strtol (s, NULL, base);
+      if ((l == LONG_MIN || l == LONG_MAX) && errno == ERANGE)
+        {
+          arg->r_opt = ARGPARSE_INVALID_ARG;
+          return -1;
+        }
+      if (arg->r_type == ARGPARSE_TYPE_LONG)
+        arg->r.ret_long = l;
+      else if ( (l < 0 && l < INT_MIN) || l > INT_MAX )
+        {
+          arg->r_opt = ARGPARSE_INVALID_ARG;
+          return -1;
+        }
+      else
+        arg->r.ret_int = (int)l;
       return 0;
+
     case ARGPARSE_TYPE_ULONG:
-      arg->r.ret_ulong= strtoul(s,NULL,base);
+      while (isascii (*s) && isspace(*s))
+        s++;
+      if (*s == '-')
+        {
+          arg->r.ret_ulong = 0;
+          arg->r_opt = ARGPARSE_INVALID_ARG;
+          return -1;
+        }
+      errno = 0;
+      arg->r.ret_ulong = strtoul (s, NULL, base);
+      if (arg->r.ret_ulong == ULONG_MAX && errno == ERANGE)
+        {
+          arg->r_opt = ARGPARSE_INVALID_ARG;
+          return -1;
+        }
       return 0;
+
     case ARGPARSE_TYPE_STRING:
     default:
       arg->r.ret_str = s;
index dd9b30b..74f2040 100644 (file)
@@ -177,6 +177,7 @@ typedef struct
 #define ARGPARSE_AMBIGUOUS_COMMAND (-9)
 #define ARGPARSE_INVALID_ALIAS     (-10)
 #define ARGPARSE_OUT_OF_CORE       (-11)
+#define ARGPARSE_INVALID_ARG       (-12)
 
 
 int arg_parse( ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts);
index d5ab9cd..2478aef 100644 (file)
--- a/po/be.po
+++ b/po/be.po
@@ -30,9 +30,30 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "паказаць сьпіс ключоў і ID карыстальнікаў"
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "нерэчаісны пароль"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -351,6 +372,10 @@ msgstr ""
 msgid "enable putty support"
 msgstr ""
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "Паўтарыце пароль\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1503,6 +1528,10 @@ msgid "[User ID not found]"
 msgstr ""
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr ""
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
 
@@ -1526,10 +1555,6 @@ msgstr ""
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "%s: немагчыма стварыць тэчку: %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr ""
-
 #, fuzzy
 msgid "make a signature"
 msgstr "зрабіць адчэплены подпіс"
@@ -5131,6 +5156,10 @@ msgid "missing argument"
 msgstr ""
 
 #, fuzzy
+msgid "invalid argument"
+msgstr "паказаць ключы й адбіткі пальцаў"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "несумяшчальныя загады\n"
 
@@ -5150,6 +5179,10 @@ msgstr "недапушчальныя выбары імпартаваньня\n"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "недапушчальныя выбары імпартаваньня\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -6737,9 +6770,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "памылка стварэньня файла"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "нерэчаісны пароль"
-
 #~ msgid "file close error"
 #~ msgstr "памылка зачыненьня файла"
 
index 76f2a17..bf9b79d 100644 (file)
--- a/po/ca.po
+++ b/po/ca.po
@@ -50,9 +50,31 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to create a sign and encrypt key? "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Segur que voleu crear una clau de signatura i xifratge? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "la contrasenya és invàlida"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -391,6 +413,10 @@ msgstr "no és suportat"
 msgid "enable putty support"
 msgstr "no és suportat"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "error en la creació de la contrasenya: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1623,6 +1649,10 @@ msgstr ""
 msgid "[User ID not found]"
 msgstr "[No s'ha trobat l'id d'usuari]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "clau %08lX: clau secreta sense clau pública - es descarta\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1649,10 +1679,6 @@ msgstr ""
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "s'usarà la clau secundària %08lX en lloc de la primària %08lX\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "clau %08lX: clau secreta sense clau pública - es descarta\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "|[fitxer]|crea una signatura"
@@ -5625,6 +5651,11 @@ msgid "missing argument"
 msgstr "l'argument és invàlid"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "l'armadura és invàlida"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "les ordres entren en conflicte\n"
 
@@ -5648,6 +5679,10 @@ msgstr "opcions d'importació no vàlides\n"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opcions d'importació no vàlides\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7726,9 +7761,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "el paquet és invàlid"
 
-#~ msgid "invalid armor"
-#~ msgstr "l'armadura és invàlida"
-
 #~ msgid "no such user id"
 #~ msgstr "no s'ha trobat l'id de l'usuari"
 
@@ -7753,9 +7785,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "error en la creació del fitxer"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "la contrasenya és invàlida"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "l'algoritme de clau pública no és implementat"
 
@@ -8520,9 +8549,6 @@ msgstr ""
 #~ msgid "%s: error checking key: %s\n"
 #~ msgstr "%s: error en la comprovació de la clau: %s\n"
 
-#~ msgid "Do you really want to create a sign and encrypt key? "
-#~ msgstr "Segur que voleu crear una clau de signatura i xifratge? "
-
 #~ msgid "Do you really need such a large keysize? "
 #~ msgstr "Realment necessiteu una clau tan llarga? "
 
index 35b1e29..15a90d9 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
@@ -52,9 +52,37 @@ msgstr "|pinentry-label|_OK"
 msgid "|pinentry-label|_Cancel"
 msgstr "|pinentry-label|_Zrušit"
 
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
 msgid "|pinentry-label|PIN:"
 msgstr "|pinentry-label|PIN:"
 
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_Zrušit"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Opravdu chcete revokovat vybrané podklíče? (a/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "nesprávné heslo"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -380,6 +408,11 @@ msgstr "zapnout podporu pro OpenSSH"
 msgid "enable putty support"
 msgstr "zapnout podporu pro PuTTY"
 
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "nedovolit opakovat stará hesla"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "|SOUBOR|zapsat nastavení prostředí též do SOUBORU"
 
@@ -1510,6 +1543,10 @@ msgid "[User ID not found]"
 msgstr "[ID uživatele nenalezeno]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "klíč %s: tajný klíč bez klíče veřejného – přeskočeno\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "„%s“ automaticky získáno přes %s\n"
 
@@ -1533,10 +1570,6 @@ msgstr "neexistuje tajný podklíč pro veřejný klíč %s – ignorováno\n"
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "používám podklíč %s místo primárního klíče %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "klíč %s: tajný klíč bez klíče veřejného – přeskočeno\n"
-
 msgid "make a signature"
 msgstr "vytvořit podpis"
 
@@ -5263,6 +5296,11 @@ msgstr "klíčové slovo je příliš dlouhé"
 msgid "missing argument"
 msgstr "postrádám argument"
 
+#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "neplatný způsob reprezentace v ASCII"
+
 msgid "invalid command"
 msgstr "neplatný příkaz"
 
@@ -5279,6 +5317,11 @@ msgstr "neplatný parametr"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr "postrádám argument u volby „%.50s“\n"
 
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "postrádám argument u volby „%.50s“\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "volba „%.50s“ nečeká argument\n"
@@ -8360,9 +8403,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "neplatný paket"
 
-#~ msgid "invalid armor"
-#~ msgstr "neplatný způsob reprezentace v ASCII"
-
 #~ msgid "no such user id"
 #~ msgstr "neexistuje uživatel s tímto id"
 
@@ -8384,9 +8424,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "chyba při vytváření souboru"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "nesprávné heslo"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "algoritmus veřejného klíče není implementován"
 
index 54d5f5f..0d5c736 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -39,9 +39,37 @@ msgstr "_O.k."
 msgid "|pinentry-label|_Cancel"
 msgstr "_Afbryd"
 
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "_O.k."
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "_O.k."
+
 msgid "|pinentry-label|PIN:"
 msgstr "PIN:"
 
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "_Afbryd"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Vil du virkelig tilbagekalde de valgte undernøgler? (j/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Indtast ny adgangsfrase"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -365,6 +393,11 @@ msgstr "aktiver ssh-understøttelse"
 msgid "enable putty support"
 msgstr "aktiver putty-understøttelse"
 
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "tillad ikke genbrug af gamle adgangsfraser"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "|FIL|skriv også miljøindstillinger til FIL"
 
@@ -1498,6 +1531,10 @@ msgid "[User ID not found]"
 msgstr "[Bruger-id blev ikke fundet]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "nøgle %s: hemmelig nøgle uden offentlig nøgle - udeladt\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "hentede automatisk »%s« via %s\n"
 
@@ -1520,10 +1557,6 @@ msgstr "ingen hemmelig undernøgle for offentlig undernøgle %s - ignorerer\n"
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "bruger undernøgle %s i stedet for primær nøgle %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "nøgle %s: hemmelig nøgle uden offentlig nøgle - udeladt\n"
-
 msgid "make a signature"
 msgstr "opret en underskrift"
 
@@ -5247,6 +5280,11 @@ msgstr "nøgleord er for langt"
 msgid "missing argument"
 msgstr "manglende parameter"
 
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "ugyldig værdi\n"
+
 msgid "invalid command"
 msgstr "ugyldig kommando"
 
@@ -5263,6 +5301,11 @@ msgstr "ugyldig indstilling"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr "manglende parameter for indstilling »%.50s«\n"
 
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "manglende parameter for indstilling »%.50s«\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "tilvalg »%.50s« forventer ikke et argument\n"
index a79fad8..681c6de 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnupg-2.0.18\n"
 "Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"PO-Revision-Date: 2015-02-18 12:52+0100\n"
+"PO-Revision-Date: 2015-06-02 13:13+0200\n"
 "Last-Translator: Werner Koch <wk@gnupg.org>\n"
 "Language-Team: German <de@li.org>\n"
 "Language: de\n"
@@ -33,9 +33,29 @@ msgstr "_OK"
 msgid "|pinentry-label|_Cancel"
 msgstr "_Abbrechen"
 
+msgid "|pinentry-label|_Yes"
+msgstr "_Ja"
+
+msgid "|pinentry-label|_No"
+msgstr "_Nein"
+
 msgid "|pinentry-label|PIN:"
 msgstr "PIN:"
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr "Im Passwordmanager _speichern"
+
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr ""
+"Möchten Sie die eingegebene Passphrase wirklich auf dem Bildschirm sichtbar "
+"machen?"
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr "Die Passphrase sichtbar machen"
+
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Passphrase unsichtbar machen"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -365,6 +385,9 @@ msgstr "Die ssh-agent Komponente anschalten"
 msgid "enable putty support"
 msgstr "Die Pageant Komponente anschalten"
 
+msgid "disallow the use of an external password cache"
+msgstr "Verbiete die Verwendung eines externen Passwordmanagers"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "|DATEI|Schreibe die Umgebungsvariablen auf DATEI"
 
@@ -1522,6 +1545,11 @@ msgid "[User ID not found]"
 msgstr "[User-ID nicht gefunden]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr ""
+"Schlüssel %s: geheimer Schlüssel ohne öffentlichen Schlüssel - übersprungen\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "`%s' automatisch via %s geholt\n"
 
@@ -1546,11 +1574,6 @@ msgstr ""
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "der Unterschlüssel %s wird anstelle des Hauptschlüssels %s verwendet\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr ""
-"Schlüssel %s: geheimer Schlüssel ohne öffentlichen Schlüssel - übersprungen\n"
-
 msgid "make a signature"
 msgstr "Eine Signatur erzeugen"
 
@@ -5366,6 +5389,9 @@ msgstr "Schlüsselwort ist zu lang"
 msgid "missing argument"
 msgstr "Fehlendes Argument"
 
+msgid "invalid argument"
+msgstr "Ungültiges Argument"
+
 msgid "invalid command"
 msgstr "Ungültiger Befehl"
 
@@ -5383,6 +5409,10 @@ msgid "missing argument for option \"%.50s\"\n"
 msgstr "Fehlendes Argument für Option \"%.50s\"\n"
 
 #, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "Ungültiges Argument für Option \"%.50s\"\n"
+
+#, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "Option \"%.50s\" erwartet kein Argument\n"
 
index 7c32bb9..e094b07 100644 (file)
--- a/po/el.po
+++ b/po/el.po
@@ -31,9 +31,30 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Óßãïõñá èÝëåôå íá áíáêëçèïýí ôá åðéëåãìÝíá êëåéäéÜ; "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "ìç Ýãêõñç öñÜóç êëåéäß"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -362,6 +383,10 @@ msgstr "
 msgid "enable putty support"
 msgstr "äåí õðïóôçñßæåôáé"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "óöÜëìá óôç äçìéïõñãßá ôçò öñÜóçò êëåéäß: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1568,6 +1593,10 @@ msgstr "
 msgid "[User ID not found]"
 msgstr "[User id äåí âñÝèçêå]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "êëåéäß %08lX: ìõóôéêü êëåéäß ÷ùñßò äçìüóéï - ðáñáëåßöèçêå\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1593,10 +1622,6 @@ msgstr "
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "÷ñÞóç ôïõ äåõôåñåýïíôïò êëåéäéïý %08lX áíôß ôïõ ðñùôåýïíôïò %08lX\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "êëåéäß %08lX: ìõóôéêü êëåéäß ÷ùñßò äçìüóéï - ðáñáëåßöèçêå\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "äçìéïõñãßá ìéáò ìç ðñïóáñôçìÝíçò õðïãñáöÞò"
@@ -5495,6 +5520,11 @@ msgid "missing argument"
 msgstr "ìç Ýãêõñï üñéóìá"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "ìç Ýãêõñç èùñÜêéóç"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "óõãêñïõüìåíåò åíôïëÝò\n"
 
@@ -5514,6 +5544,10 @@ msgstr "
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "ìç Ýãêõñåò åðéëïãÝò åéãáãùãÞò\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7554,9 +7588,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "ìç Ýãêõñï ðáêÝôï"
 
-#~ msgid "invalid armor"
-#~ msgstr "ìç Ýãêõñç èùñÜêéóç"
-
 #~ msgid "no such user id"
 #~ msgstr "Üãíùóôç ôáõôüôçôá ÷ñÞóôç (user id)"
 
@@ -7581,9 +7612,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "óöÜëìá äçìéïõñãßáò áñ÷åßïõ"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "ìç Ýãêõñç öñÜóç êëåéäß"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "ìç õëïðïéçìÝíïò áëãüñéèìïò äçìïóßïõ êëåéäéïý"
 
index cac36b8..a6e7818 100644 (file)
--- a/po/eo.po
+++ b/po/eo.po
@@ -31,9 +31,31 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to create a sign and encrypt key? "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Æu vi vere volas krei subskriban kaj æifran þlosilon? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "nevalida pasfrazo"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -362,6 +384,10 @@ msgstr "ne realigita"
 msgid "enable putty support"
 msgstr "ne realigita"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "eraro dum kreado de pasfrazo: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1557,6 +1583,10 @@ msgstr "tro da registroj en pk-staplo - mal
 msgid "[User ID not found]"
 msgstr "[Uzantidentigilo ne trovita]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "þlosilo %08lX: sekreta þlosilo sen publika þlosilo - ignorita\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1581,10 +1611,6 @@ msgstr "estas sekreta 
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "uzas flankan þlosilon %08lX anstataý la æefa þlosilo %08lX\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "þlosilo %08lX: sekreta þlosilo sen publika þlosilo - ignorita\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "fari apartan subskribon"
@@ -5446,6 +5472,11 @@ msgid "missing argument"
 msgstr "nevalida argumento"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "nevalida kiraso"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "malkongruaj komandoj\n"
 
@@ -5465,6 +5496,10 @@ msgstr "nevalida kiraso"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "nevalida kiraso"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7448,9 +7483,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "nevalida paketo"
 
-#~ msgid "invalid armor"
-#~ msgstr "nevalida kiraso"
-
 #~ msgid "no such user id"
 #~ msgstr "uzantidentigilo ne ekzistas"
 
@@ -7475,9 +7507,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "eraro æe kreo de dosiero"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "nevalida pasfrazo"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "nerealigita publikþlosila metodo"
 
@@ -8395,9 +8424,6 @@ msgstr ""
 #~ msgid "For info see http://www.gnupg.org"
 #~ msgstr "Por informoj vidu http://www.gnupg.org"
 
-#~ msgid "Do you really want to create a sign and encrypt key? "
-#~ msgstr "Æu vi vere volas krei subskriban kaj æifran þlosilon? "
-
 #~ msgid "can't lock keyring `%s': %s\n"
 #~ msgstr "ne povas þlosi la þlosilaron '%s': %s\n"
 
index f6cbb81..7fe8148 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -37,9 +37,37 @@ msgstr "|pinentry-label|_OK"
 msgid "|pinentry-label|_Cancel"
 msgstr "|pinentry-label|_Cancelar"
 
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
 msgid "|pinentry-label|PIN:"
 msgstr "|pinentry-label|PIN:"
 
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_Cancelar"
+
+#, fuzzy
+#| msgid "Do you really want to create a sign and encrypt key? "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "¿De verdad quiere crear una clave de firma y cifrado? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "frase contraseña incorrecta"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -378,6 +406,11 @@ msgstr "permitir emulación de ssh-agent"
 msgid "enable putty support"
 msgstr "no disponible"
 
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "no permite reusar antiguas frases contraseña"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "|FICHERO|escribir variables de entorno también en FICHERO"
 
@@ -1522,6 +1555,10 @@ msgid "[User ID not found]"
 msgstr "[ID de usuario no encontrado]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "clave %s: clave secreta sin clave pública - omitida\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "recuperado automáticamente `%s' vía %s\n"
 
@@ -1544,10 +1581,6 @@ msgstr "no hay subclave secreta para la subclave pública %s - ignorada\n"
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "usando subclave %s en vez de clave primaria %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "clave %s: clave secreta sin clave pública - omitida\n"
-
 msgid "make a signature"
 msgstr "crea una firma"
 
@@ -5274,6 +5307,11 @@ msgstr "palabra clave demasiado larga"
 msgid "missing argument"
 msgstr "falta el parámetro"
 
+#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armadura inválida"
+
 msgid "invalid command"
 msgstr "orden inválida"
 
@@ -5290,6 +5328,11 @@ msgstr "opción inválida"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr "falta parámetro para la opción \"%.50s\"\n"
 
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "falta parámetro para la opción \"%.50s\"\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "la opción \"%.50s\" no necesita parámetros\n"
@@ -7337,9 +7380,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "paquete inválido"
 
-#~ msgid "invalid armor"
-#~ msgstr "armadura inválida"
-
 #~ msgid "no such user id"
 #~ msgstr "no existe el ID de usuario"
 
@@ -7364,9 +7404,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "error al crear fichero"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "frase contraseña incorrecta"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "algoritmo de clave pública no implementado"
 
@@ -8126,9 +8163,6 @@ msgstr ""
 #~ msgid "%s: error checking key: %s\n"
 #~ msgstr "%s: error comprobando la clave: %s\n"
 
-#~ msgid "Do you really want to create a sign and encrypt key? "
-#~ msgstr "¿De verdad quiere crear una clave de firma y cifrado? "
-
 #~ msgid "Do you really need such a large keysize? "
 #~ msgstr "¿De verdad necesita una clave tan grande? "
 
index 1027083..ba781a7 100644 (file)
--- a/po/et.po
+++ b/po/et.po
@@ -29,9 +29,30 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Kas te tõesti soovite valitud võtmeid tühistada? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "vigane parool"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -359,6 +380,10 @@ msgstr "ei ole toetatud"
 msgid "enable putty support"
 msgstr "ei ole toetatud"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "viga parooli loomisel: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1556,6 +1581,10 @@ msgstr "avalike v
 msgid "[User ID not found]"
 msgstr "[Kasutaja id puudub]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "võti %08lX: salajane võti avaliku võtmeta - jätsin vahele\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1582,10 +1611,6 @@ msgstr "avalikul alamv
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "kasutan sekundaarset võtit %08lX primaarse võtme %08lX asemel\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "võti %08lX: salajane võti avaliku võtmeta - jätsin vahele\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "loo eraldiseisev allkiri"
@@ -5414,6 +5439,11 @@ msgid "missing argument"
 msgstr "vigane argument"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "vigane pakend"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "vastuolulised käsud\n"
 
@@ -5433,6 +5463,10 @@ msgstr "vigased impordi v
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "vigased impordi võtmed\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7451,9 +7485,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "vigane pakett"
 
-#~ msgid "invalid armor"
-#~ msgstr "vigane pakend"
-
 #~ msgid "no such user id"
 #~ msgstr "sellist kasutaja id pole"
 
@@ -7478,9 +7509,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "viga faili loomisel"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "vigane parool"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "realiseerimata avaliku võtme algoritm"
 
index b7fb5d0..6b3d566 100644 (file)
--- a/po/fi.po
+++ b/po/fi.po
@@ -45,9 +45,30 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Haluatko varmasti mitätöidä valitut avaimet? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "väärä salasana"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -375,6 +396,10 @@ msgstr "ei tuettu"
 msgid "enable putty support"
 msgstr "ei tuettu"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "virhe luotaessa salasanaa: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1573,6 +1598,12 @@ msgstr "pk-välimuistissa on liian monta kohdetta - poistettu käytöstä\n"
 msgid "[User ID not found]"
 msgstr "[Käyttäjätunnusta ei löytynyt]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr ""
+"avain %08lX: salaisella avaimella ei ole vastaavaa \n"
+"julkista avainta - ohitetaan\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1599,12 +1630,6 @@ msgid "using subkey %s instead of primary key %s\n"
 msgstr ""
 "käytetään toissijaista avainta %08lX ensisijaisen avaimen %08lX sijasta\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr ""
-"avain %08lX: salaisella avaimella ei ole vastaavaa \n"
-"julkista avainta - ohitetaan\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "tee erillinen allekirjoitus"
@@ -5478,6 +5503,11 @@ msgid "missing argument"
 msgstr "virheellinen argumentti"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "virheellinen ascii-koodaus"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "ristiriitainen komento\n"
 
@@ -5497,6 +5527,10 @@ msgstr "virheelliset tuontivalitsimet\n"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "virheelliset tuontivalitsimet\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7537,9 +7571,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "virheellinen paketti"
 
-#~ msgid "invalid armor"
-#~ msgstr "virheellinen ascii-koodaus"
-
 #~ msgid "no such user id"
 #~ msgstr "käyttäjätunnusta ei löydy"
 
@@ -7564,9 +7595,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "virhe tiedostoa luotaessa"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "väärä salasana"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "julkisen avaimen algoritmi ei ole käytössä"
 
index 4fced13..a640f2e 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -32,9 +32,37 @@ msgstr "|pinentry-label|_OK"
 msgid "|pinentry-label|_Cancel"
 msgstr "|pinentry-label|_Annuler"
 
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
 msgid "|pinentry-label|PIN:"
 msgstr "|pinentry-label|Code personnel :"
 
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_Annuler"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Voulez-vous vraiment révoquer les sous-clefs sélectionnées ? (o/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "phrase de passe incorrecte"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -361,6 +389,11 @@ msgstr "activer la prise en charge de SSH"
 msgid "enable putty support"
 msgstr "activer la prise en charge de putty"
 
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "ne pas autoriser la réutilisation d'anciennes phrases secrètes"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "|FICHIER|écrire aussi les réglages d'env. dans FICHIER"
 
@@ -1523,6 +1556,10 @@ msgid "[User ID not found]"
 msgstr "[identité introuvable]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "clef %s : clef secrète sans clef publique — ignorée\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "« %s » automatiquement récupéré par %s\n"
 
@@ -1549,10 +1586,6 @@ msgstr ""
 "utilisation de la sous-clef %s à la place de la clef\n"
 "principale %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "clef %s : clef secrète sans clef publique — ignorée\n"
-
 msgid "make a signature"
 msgstr "faire une signature"
 
@@ -5396,6 +5429,11 @@ msgstr "mot-clef trop long"
 msgid "missing argument"
 msgstr "argument manquant"
 
+#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armure incorrecte"
+
 msgid "invalid command"
 msgstr "commande incorrecte"
 
@@ -5412,6 +5450,11 @@ msgstr "option incorrecte"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr "argument manquant pour l'option « %.50s »\n"
 
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "argument manquant pour l'option « %.50s »\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "l'option « %.50s » n'attend pas d'argument\n"
@@ -7381,9 +7424,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "paquet incorrect"
 
-#~ msgid "invalid armor"
-#~ msgstr "armure incorrecte"
-
 #~ msgid "no such user id"
 #~ msgstr "cette identité n'existe pas"
 
@@ -7405,9 +7445,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "erreur de création de fichier"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "phrase de passe incorrecte"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "algorithme de clef publique non implémenté"
 
index ce71bb6..3c62fc8 100644 (file)
--- a/po/gl.po
+++ b/po/gl.po
@@ -29,9 +29,31 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to create a sign and encrypt key? "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "¿Seguro que quere crear unha chave para asinar e cifrar? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "contrasinal incorrecto"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -362,6 +384,10 @@ msgstr "non est
 msgid "enable putty support"
 msgstr "non está soportado"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "erro ao crea-lo contrasinal: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1568,6 +1594,10 @@ msgstr "demasiadas entradas na cach
 msgid "[User ID not found]"
 msgstr "[Non se atopou o id de usuario]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "chave %08lX: chave secreta sen chave pública - omitida\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1594,10 +1624,6 @@ msgstr ""
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "emprégase a chave secundaria %08lX no canto da primaria %08lX\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "chave %08lX: chave secreta sen chave pública - omitida\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "facer unha sinatura separada"
@@ -5482,6 +5508,11 @@ msgid "missing argument"
 msgstr "argumento non válido"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armadura non válida"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "comandos conflictivos\n"
 
@@ -5501,6 +5532,10 @@ msgstr "opci
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opcións de importación non válidas\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7560,9 +7595,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "paquete non válido"
 
-#~ msgid "invalid armor"
-#~ msgstr "armadura non válida"
-
 #~ msgid "no such user id"
 #~ msgstr "non hai tal id de usuario"
 
@@ -7587,9 +7619,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "erro de creación de ficheiro"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "contrasinal incorrecto"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "algoritmo de chave pública non implementado"
 
@@ -8432,9 +8461,6 @@ msgstr ""
 #~ msgid "%s: error checking key: %s\n"
 #~ msgstr "%s: erro ao verifica-la chave: %s\n"
 
-#~ msgid "Do you really want to create a sign and encrypt key? "
-#~ msgstr "¿Seguro que quere crear unha chave para asinar e cifrar? "
-
 #~ msgid "Do you really need such a large keysize? "
 #~ msgstr "¿Está seguro de precisar un tamaño de chave tan grande? "
 
index 8a29491..f763ca5 100644 (file)
--- a/po/hu.po
+++ b/po/hu.po
@@ -29,9 +29,30 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Valóban visszavonja a kijelölt kulcsokat? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "érvénytelen jelszó"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -359,6 +380,10 @@ msgstr "nem t
 msgid "enable putty support"
 msgstr "nem támogatott"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "Hiba a jelszó létrehozásakor: %s.\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1552,6 +1577,10 @@ msgstr "T
 msgid "[User ID not found]"
 msgstr "[ismeretlen kulcs]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "%08lX kulcs: titkos kulcs nyilvános kulcs nélkül - kihagytam.\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1579,10 +1608,6 @@ msgstr ""
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "A %08lX másodlagos kulcsot használjuk a %08lX elsõdleges helyett.\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "%08lX kulcs: titkos kulcs nyilvános kulcs nélkül - kihagytam.\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "különálló aláírás készítése"
@@ -5446,6 +5471,11 @@ msgid "missing argument"
 msgstr "érvénytelen argumentum"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "érvénytelen páncél"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "Egymásnak ellentmondó parancsok!\n"
 
@@ -5465,6 +5495,10 @@ msgstr "
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "Érvénytelen import opciók!\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7497,9 +7531,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "érvénytelen csomag"
 
-#~ msgid "invalid armor"
-#~ msgstr "érvénytelen páncél"
-
 #~ msgid "no such user id"
 #~ msgstr "nincs ilyen felhasználói azonosító"
 
@@ -7524,9 +7555,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "állománylétrehozási hiba"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "érvénytelen jelszó"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "nem megvalósított nyilvános kulcsú algoritmus"
 
index e428b5c..53d8174 100644 (file)
--- a/po/id.po
+++ b/po/id.po
@@ -34,9 +34,30 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Anda ingin membatalkan kunci terpilih ini? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "passphrase tidak valid"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -364,6 +385,10 @@ msgstr "tidak didukung"
 msgid "enable putty support"
 msgstr "tidak didukung"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "kesalahan penciptaan passphrase: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1560,6 +1585,10 @@ msgstr "terlalu banyak masukan dalam pk cache - ditiadakan\n"
 msgid "[User ID not found]"
 msgstr "[User id tidak ditemukan]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "kunci %08lX: kunci rahasia tanpa kunci publik - dilewati\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1584,10 +1613,6 @@ msgstr "tidak ada subkey rahasia untuk subkey publik %08lX. diabaikan\n"
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "menggunakan kunci sekunder %08lX bukannya kunci primer %08lX\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "kunci %08lX: kunci rahasia tanpa kunci publik - dilewati\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "buat detached signature"
@@ -5443,6 +5468,11 @@ msgid "missing argument"
 msgstr "argumen tidak valid"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armor tidak valid"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "perintah saling konflik\n"
 
@@ -5462,6 +5492,10 @@ msgstr "opsi impor tidak valid\n"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opsi impor tidak valid\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7498,9 +7532,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "paket tidak valid"
 
-#~ msgid "invalid armor"
-#~ msgstr "armor tidak valid"
-
 #~ msgid "no such user id"
 #~ msgstr "tidak ada user id tsb"
 
@@ -7525,9 +7556,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "kesalahan buat file"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "passphrase tidak valid"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "algoritma pubkey belum diimplementasikan"
 
index d640dac..dc61449 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -29,9 +29,30 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Vuoi davvero revocare le chiavi selezionate? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "passphrase non valida"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -359,6 +380,10 @@ msgstr "non gestito"
 msgid "enable putty support"
 msgstr "non gestito"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "errore nella creazione della passhprase: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1565,6 +1590,10 @@ msgstr "troppe voci nella pk cache - disabilitata\n"
 msgid "[User ID not found]"
 msgstr "[User ID non trovato]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "chiave %08lX: chiave segreta senza chiave pubblica - saltata\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1590,10 +1619,6 @@ msgstr ""
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "uso la chiave secondaria %08lX invece della chiave primaria %08lX\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "chiave %08lX: chiave segreta senza chiave pubblica - saltata\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "fai una firma separata"
@@ -5484,6 +5509,11 @@ msgid "missing argument"
 msgstr "argomento non valido"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armatura non valida"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "comandi in conflitto\n"
 
@@ -5504,6 +5534,10 @@ msgstr "opzioni di importazione non valide\n"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opzioni di importazione non valide\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7555,9 +7589,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "pacchetto non valido"
 
-#~ msgid "invalid armor"
-#~ msgstr "armatura non valida"
-
 #~ msgid "no such user id"
 #~ msgstr "l'user id non esiste"
 
@@ -7582,9 +7613,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "errore durante la creazione del file"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "passphrase non valida"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "algoritmo della chiave pubblica non implementato"
 
index 9a9309b..ad88b43 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -7,9 +7,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU gnupg 2.0.26\n"
+"Project-Id-Version: GNU gnupg 2.0.27\n"
 "Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"PO-Revision-Date: 2014-11-18 11:04+0900\n"
+"PO-Revision-Date: 2015-06-02 13:05+0200\n"
 "Last-Translator: NIIBE Yutaka <gniibe@fsij.org>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
 "Language: ja\n"
@@ -33,9 +33,37 @@ msgstr "|pinentry-label|_OK"
 msgid "|pinentry-label|_Cancel"
 msgstr "|pinentry-label|_キャンセル"
 
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
 msgid "|pinentry-label|PIN:"
 msgstr "|pinentry-label|PIN:"
 
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_キャンセル"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "選択した副鍵を本当に失効しますか? (y/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "新しいパスフレーズを入力してください"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -348,6 +376,11 @@ msgstr "sshサポートを有効にする"
 msgid "enable putty support"
 msgstr "puttyサポートを有効にする"
 
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "古いパスフレーズを再使用することを認めない"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "|FILE|FILEに環境変数の設定も書き出す"
 
@@ -1469,6 +1502,10 @@ msgid "[User ID not found]"
 msgstr "[ユーザIDが見つかりません]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "鍵%s: 公開鍵のない秘密鍵です - スキップします\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "「%s」を %s から自動取得\n"
 
@@ -1491,10 +1528,6 @@ msgstr "公開副鍵%sにたいする秘密副鍵がありません - 無視\n"
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "副鍵%s(主鍵%sではなく)を用います\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "鍵%s: 公開鍵のない秘密鍵です - スキップします\n"
-
 msgid "make a signature"
 msgstr "署名を作成"
 
@@ -3083,12 +3116,10 @@ msgstr ""
 "              ユーザIDが主になると仮定する場合があります。\n"
 
 msgid "WARNING: Your encryption subkey expires soon.\n"
-msgstr ""
+msgstr "*警告*: 暗号副鍵がもうすぐ期限切れとなります。\n"
 
-#, fuzzy
-#| msgid "You can't change the expiration date of a v3 key\n"
 msgid "You may want to change its expiration date too.\n"
-msgstr "v3鍵の有効期限は変更できません\n"
+msgstr "有効期限の変更も検討ください。\n"
 
 msgid ""
 "WARNING: This is a PGP2-style key.  Adding a photo ID may cause some "
@@ -3097,7 +3128,7 @@ msgid ""
 msgstr ""
 "*警告*: これはPGP2形式の鍵です。フォトIDの追加で、一部のバージョンのPGPで"
 "は、\n"
-"      この鍵を拒否するかもしれません。\n"
+"        この鍵を拒否するかもしれません。\n"
 
 msgid "Are you sure you still want to add it? (y/N) "
 msgstr "それでも追加したいですか? (y/N) "
@@ -5149,6 +5180,11 @@ msgstr "キーワードが長すぎます"
 msgid "missing argument"
 msgstr "引数ありません"
 
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "無効な値\n"
+
 msgid "invalid command"
 msgstr "無効なコマンド"
 
@@ -5165,6 +5201,11 @@ msgstr "無効なオプション"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr "オプション\"%.50s\"に引数がありません\n"
 
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "オプション\"%.50s\"に引数がありません\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "オプション\"%.50s\"は引数をとりません\n"
index 6cdc17b..98fbbc2 100644 (file)
--- a/po/nb.po
+++ b/po/nb.po
@@ -33,9 +33,31 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Vil du virkelig oppheve de valgte undernøklene? (j/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "ugyldig passfrase"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 #, fuzzy
@@ -367,6 +389,10 @@ msgstr ""
 msgid "enable putty support"
 msgstr ""
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "feil ved opprettelse av passfrase: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1515,6 +1541,10 @@ msgid "[User ID not found]"
 msgstr "[Brukerid ikke funnet]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "nøkkel %s: hemmelig nøkkel uten offentlig nøkkel - hoppet over\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
 
@@ -1538,10 +1568,6 @@ msgstr "ingen hemmelig undern
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "bruker undernøkkel %s i stedet for primærnøkkel %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "nøkkel %s: hemmelig nøkkel uten offentlig nøkkel - hoppet over\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "|[fil]|lage en signatur"
@@ -5206,6 +5232,11 @@ msgid "missing argument"
 msgstr "ugydig argument"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "ugyldig beskyttelse"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "Admin-reservert kommando\n"
 
@@ -5225,6 +5256,10 @@ msgstr "ugyldige listevalg\n"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "ugyldige listevalg\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -6998,9 +7033,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "ugyldig pakke"
 
-#~ msgid "invalid armor"
-#~ msgstr "ugyldig beskyttelse"
-
 #~ msgid "no such user id"
 #~ msgstr "det finnes ingen slik brukerid"
 
@@ -7019,9 +7051,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "feil ved opprettelse av fil"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "ugyldig passfrase"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "uimplementert pubkey-algoritme"
 
index c999b34..f2a839c 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -54,9 +54,37 @@ msgstr "|pinentry-label|_OK"
 msgid "|pinentry-label|_Cancel"
 msgstr "|pinentry-label|_Annuleren"
 
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
 msgid "|pinentry-label|PIN:"
 msgstr "|pinentry-label|Pincode:"
 
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_Annuleren"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Wilt U de geselecteerde subsleutels echt intrekken? (j/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "ongeldige wachtwoordzin"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -386,6 +414,11 @@ msgstr "ssh-ondersteuning mogelijk maken"
 msgid "enable putty support"
 msgstr "putty-ondersteuning mogelijk maken"
 
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "laat het opnieuw gebruiken van oude wachtwoordzinnen niet toe"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "|BESTAND|schrijf omgevingsinstellingen ook weg naar BESTAND"
 
@@ -1543,6 +1576,10 @@ msgid "[User ID not found]"
 msgstr "[Gebruikers-ID niet gevonden]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "sleutel %s: geheime sleutel zonder publieke sleutel - overgeslagen\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "`%s' automatisch opgehaald via %s\n"
 
@@ -1566,10 +1603,6 @@ msgstr "geen geheime subsleutel voor publieke subsleutel %s - overgeslagen\n"
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "subsleutel %s wordt gebruikt in plaats van primaire sleutel %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "sleutel %s: geheime sleutel zonder publieke sleutel - overgeslagen\n"
-
 msgid "make a signature"
 msgstr "maak een ondertekening"
 
@@ -5449,6 +5482,11 @@ msgstr "sleutelwoord is te lang"
 msgid "missing argument"
 msgstr "ontbrekende parameter"
 
+#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "ongeldig harnas"
+
 msgid "invalid command"
 msgstr "ongeldig commando"
 
@@ -5465,6 +5503,11 @@ msgstr "ongeldige optie"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr "ontbrekende parameter voor optie \"%.50s\"\n"
 
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "ontbrekende parameter voor optie \"%.50s\"\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "optie \"%.50s\" verwacht geen parameter\n"
@@ -7467,9 +7510,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "ongeldig pakket"
 
-#~ msgid "invalid armor"
-#~ msgstr "ongeldig harnas"
-
 #~ msgid "no such user id"
 #~ msgstr "een dergelijk gebruikers-id bestaat niet"
 
@@ -7491,9 +7531,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "fout bij het aanmaken van het bestand"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "ongeldige wachtwoordzin"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "niet geïmplementeerd algoritme voor de publieke sleutel"
 
index eb5f449..f1efab6 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -33,9 +33,37 @@ msgstr "|pinentry-label|_OK"
 msgid "|pinentry-label|_Cancel"
 msgstr "|pinentry-label|_Anuluj"
 
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
 msgid "|pinentry-label|PIN:"
 msgstr "|pinentry-label|PIN:"
 
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_Anuluj"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Czy na pewno chcesz unieważnić wybrane podklucze? (t/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Wprowadź nowe hasło"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -357,6 +385,11 @@ msgstr "włączenie obsługi ssh"
 msgid "enable putty support"
 msgstr "włączenie obsługi putty"
 
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "nie zezwalanie na ponowne użycie starych haseł"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "|PLIK|zapis ustawień środowiska także do PLIKU"
 
@@ -1485,6 +1518,10 @@ msgid "[User ID not found]"
 msgstr "[brak identyfikatora użytkownika]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "klucz %s: klucz tajny bez klucza jawnego - pominięty\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "automatycznie pobrano `%s' poprzez %s\n"
 
@@ -1508,10 +1545,6 @@ msgstr "brak prywatnego odpowiednika podklucza publicznego %s - pominięty\n"
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "używany jest podklucz %s zamiast klucza głównego %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "klucz %s: klucz tajny bez klucza jawnego - pominięty\n"
-
 msgid "make a signature"
 msgstr "złożenie podpisu"
 
@@ -5285,6 +5318,11 @@ msgstr "słowo kluczowe zbyt długie"
 msgid "missing argument"
 msgstr "brak argumentu"
 
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "niepoprawna wartość\n"
+
 msgid "invalid command"
 msgstr "błędne polecenie"
 
@@ -5301,6 +5339,11 @@ msgstr "błędna opcja"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr "brak argumentu dla opcji ,,%.50s''\n"
 
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "brak argumentu dla opcji ,,%.50s''\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "opcja ,,%.50s'' nie może mieć argumentów\n"
index 650f169..1ebd6ab 100644 (file)
--- a/po/pt.po
+++ b/po/pt.po
@@ -32,9 +32,30 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Você quer realmente revogar as chaves selecionadas? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "frase-secreta inválida"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -363,6 +384,10 @@ msgstr "n
 msgid "enable putty support"
 msgstr "não suportado"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "erro na criação da frase secreta: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1559,6 +1584,10 @@ msgstr "entradas demais no cache pk - desactivado\n"
 msgid "[User ID not found]"
 msgstr "[Utilizador não encontrado]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1583,10 +1612,6 @@ msgstr "h
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "usando chave secundária %08lX ao invés de chave primária %08lX\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "fazer uma assinatura separada"
@@ -5449,6 +5474,11 @@ msgid "missing argument"
 msgstr "argumento inválido"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armadura inválida"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "comandos em conflito\n"
 
@@ -5468,6 +5498,10 @@ msgstr "op
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opções de importação inválidas\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7492,9 +7526,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "pacote inválido"
 
-#~ msgid "invalid armor"
-#~ msgstr "armadura inválida"
-
 #~ msgid "no such user id"
 #~ msgstr "identificador de utilizador inexistente"
 
@@ -7519,9 +7550,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "erro na criação do ficheiro"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "frase-secreta inválida"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "algoritmo de chave pública não implementado"
 
index a6c6f92..579ea19 100644 (file)
@@ -36,9 +36,31 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to create a sign and encrypt key? "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Você realmente quer criar uma chave para assinatura e criptografia? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "frase secreta inválida"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -369,6 +391,10 @@ msgstr "n
 msgid "enable putty support"
 msgstr "não suportado"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "erro na criação da frase secreta: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1566,6 +1592,10 @@ msgstr "entradas demais no cache pk - desativado\n"
 msgid "[User ID not found]"
 msgstr "[usuário não encontrado]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1590,10 +1620,6 @@ msgstr "h
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "usando chave secundária %08lX ao invés de chave primária %08lX\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "fazer uma assinatura separada"
@@ -5457,6 +5483,11 @@ msgid "missing argument"
 msgstr "argumento inválido"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armadura inválida"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "comandos conflitantes\n"
 
@@ -5476,6 +5507,10 @@ msgstr "armadura inv
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "armadura inválida"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7324,9 +7359,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "pacote inválido"
 
-#~ msgid "invalid armor"
-#~ msgstr "armadura inválida"
-
 #~ msgid "no such user id"
 #~ msgstr "identificador de usuário inexistente"
 
@@ -7351,9 +7383,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "erro na criação de arquivo"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "frase secreta inválida"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "algoritmo de chave pública não implementado"
 
@@ -8269,10 +8298,6 @@ msgstr ""
 #~ "usuário `%s' não encontrado no banco de dados de confiabilidade - "
 #~ "inserindo\n"
 
-#~ msgid "Do you really want to create a sign and encrypt key? "
-#~ msgstr ""
-#~ "Você realmente quer criar uma chave para assinatura e criptografia? "
-
 #~ msgid "no default public keyring\n"
 #~ msgstr "sem chaveiro público padrão\n"
 
index e0d5907..5ddab61 100644 (file)
--- a/po/ro.po
+++ b/po/ro.po
@@ -33,9 +33,31 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Doriþi într-adevãr sã revocaþi subcheile selectate? (d/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "frazã-parolã invalidã"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 #, fuzzy
@@ -373,6 +395,10 @@ msgstr "nu este suportat(
 msgid "enable putty support"
 msgstr "nu este suportat(ã)"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "eroare la crearea frazei-parolã: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1542,6 +1568,10 @@ msgid "[User ID not found]"
 msgstr "[ID utilizator nu a fost gãsit]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "cheia %s: cheie secretã fãrã cheie publicã - sãritã\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
 
@@ -1565,10 +1595,6 @@ msgstr "nici o subcheie secret
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "folosim subcheia %s în loc de cheia primarã %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "cheia %s: cheie secretã fãrã cheie publicã - sãritã\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "|[fiºier]|creazã o semnãturã"
@@ -5354,6 +5380,11 @@ msgid "missing argument"
 msgstr "argument invalid"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armurã invalidã"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "Comandã numai-administrare\n"
 
@@ -5373,6 +5404,10 @@ msgstr "op
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opþiuni enumerare invalide\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7449,9 +7484,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "pachet invalid"
 
-#~ msgid "invalid armor"
-#~ msgstr "armurã invalidã"
-
 #~ msgid "no such user id"
 #~ msgstr "nu existã acest id utilizator"
 
@@ -7476,9 +7508,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "eroare creare fiºier"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "frazã-parolã invalidã"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "algoritm pubkey neimplementat"
 
index ca64d97..e50702a 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -4,14 +4,14 @@
 #              !-- no such user (2011-01-11)
 # Thanks Pawel I. Shajdo <pshajdo@gmail.com>.
 # Thanks Cmecb for the inspiration.
-# Ineiev <ineiev@gnu.org>, 2014
+# Ineiev <ineiev@gnu.org>, 2014, 2015
 #
 # Designated-Translator: none
 msgid ""
 msgstr ""
 "Project-Id-Version: GnuPG 2.0.10\n"
 "Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"PO-Revision-Date: 2014-11-18 17:16+0000\n"
+"PO-Revision-Date: 2015-02-14 17:16+0000\n"
 "Last-Translator: Ineiev <ineiev@gnu.org>\n"
 "Language-Team: Russian <gnupg-ru@gnupg.org>\n"
 "Language: ru\n"
@@ -122,7 +122,7 @@ msgstr "ошибка получения основного аутентифик
 
 #, c-format
 msgid "no suitable card key found: %s\n"
-msgstr "в карте не найдено подходящего ключа: %s\n"
+msgstr "на карте не найдено подходящего ключа: %s\n"
 
 #, c-format
 msgid "shadowing the key failed: %s\n"
@@ -920,13 +920,13 @@ msgid "armor: %s\n"
 msgstr "текстовый формат: %s\n"
 
 msgid "invalid armor header: "
-msgstr "непÑ\80авилÑ\8cный текстовый заголовок: "
+msgstr "недопÑ\83Ñ\81Ñ\82имый текстовый заголовок: "
 
 msgid "armor header: "
 msgstr "текстовый заголовок: "
 
 msgid "invalid clearsig header\n"
-msgstr "непÑ\80авилÑ\8cный заголовок текстовой подписи\n"
+msgstr "недопÑ\83Ñ\81Ñ\82имый заголовок текстовой подписи\n"
 
 msgid "unknown armor header: "
 msgstr "неизвестный текстовый заголовок: "
@@ -938,7 +938,7 @@ msgid "unexpected armor: "
 msgstr "неожиданный текстовый формат: "
 
 msgid "invalid dash escaped line: "
-msgstr "непÑ\80авилÑ\8cнÑ\8bй Ð¾Ñ\82Ñ\81Ñ\82Ñ\83п Ð¸Ð· Ð¼Ð¸Ð½Ñ\83Ñ\81ов: "
+msgstr "недопÑ\83Ñ\81Ñ\82имаÑ\8f Ñ\81Ñ\82Ñ\80ока, Ð²Ñ\8bделеннаÑ\8f Ð´ÐµÑ\84иÑ\81ами: "
 
 #, c-format
 msgid "invalid radix64 character %02X skipped\n"
@@ -968,7 +968,7 @@ msgstr "не найдено данных формата OpenPGP.\n"
 
 #, c-format
 msgid "invalid armor: line longer than %d characters\n"
-msgstr "непÑ\80авилÑ\8cный текстовый формат: строка длиннее %d символов\n"
+msgstr "недопÑ\83Ñ\81Ñ\82имый текстовый формат: строка длиннее %d символов\n"
 
 msgid ""
 "quoted printable character in armor - probably a buggy MTA has been used\n"
@@ -1008,7 +1008,7 @@ msgid "OpenPGP card no. %s detected\n"
 msgstr "Обнаружена карта OpenPGP номер %s\n"
 
 msgid "can't do this in batch mode\n"
-msgstr "невозможно Ñ\81делаÑ\82Ñ\8c Ñ\8dÑ\82о Ð² Ð¿Ð°ÐºÐµÑ\82ном Ñ\80ежиме\n"
+msgstr "в Ð¿Ð°ÐºÐµÑ\82ном Ñ\80ежиме Ñ\8dÑ\82о Ð´ÐµÐ¹Ñ\81Ñ\82вие Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾\n"
 
 msgid "This command is only available for version 2 cards\n"
 msgstr "Эта команда доступна только для карт версии 2.\n"
@@ -1032,13 +1032,13 @@ msgid "unspecified"
 msgstr "не указан"
 
 msgid "not forced"
-msgstr "не принудителен"
+msgstr "не принудительный"
 
 msgid "forced"
-msgstr "принудителен"
+msgstr "принудительный"
 
 msgid "Error: Only plain ASCII is currently allowed.\n"
-msgstr "Ошибка: Допустим только чистый ASCII.\n"
+msgstr "Ошибка: Допустим только простой текст ASCII.\n"
 
 msgid "Error: The \"<\" character may not be used.\n"
 msgstr "Ошибка: Нельзя использовать символ \"<\"\n"
@@ -1076,7 +1076,7 @@ msgid "error writing `%s': %s\n"
 msgstr "ошибка записи `%s': %s\n"
 
 msgid "Login data (account name): "
-msgstr "Учетная запись (имя):"
+msgstr "Учетная запись (имя): "
 
 #, c-format
 msgid "Error: Login data too long (limit is %d characters).\n"
@@ -1109,7 +1109,7 @@ msgid "CA fingerprint: "
 msgstr "отпечаток центра сертификации: "
 
 msgid "Error: invalid formatted fingerprint.\n"
-msgstr "Ð\9eÑ\88ибка: Ð½ÐµÐ¿Ñ\80авилÑ\8cный формат отпечатка.\n"
+msgstr "Ð\9eÑ\88ибка: Ð½ÐµÐ´Ð¾Ð¿Ñ\83Ñ\81Ñ\82имый формат отпечатка.\n"
 
 #, c-format
 msgid "key operation not possible: %s\n"
@@ -1163,7 +1163,7 @@ msgid "error changing size of key %d to %u bits: %s\n"
 msgstr "ошибка изменения размера ключа %d до %u бит: %s\n"
 
 msgid "Make off-card backup of encryption key? (Y/n) "
-msgstr "Сделать архивную копию ключа шифрования вне карты? (Y/n)"
+msgstr "Сделать архивную копию ключа шифрования вне карты? (Y/n) "
 
 msgid "NOTE: keys are already stored on the card!\n"
 msgstr "ЗАМЕЧАНИЕ: ключи уже хранятся на карте!\n"
@@ -1231,7 +1231,7 @@ msgid "change URL to retrieve key"
 msgstr "изменить URL получения ключа"
 
 msgid "fetch the key specified in the card URL"
-msgstr "запросить ключ, указанный по заданному картой URL"
+msgstr "запросить ключ по заданному картой URL"
 
 msgid "change the login name"
 msgstr "изменить имя учетной записи"
@@ -1297,17 +1297,17 @@ msgid "can't do this in batch mode without \"--yes\"\n"
 msgstr "не могу выполнить в пакетном режиме без \"--yes\"\n"
 
 msgid "Delete this key from the keyring? (y/N) "
-msgstr "Удалить данный ключ из таблицы? (y/N)"
+msgstr "Удалить данный ключ из таблицы? (y/N) "
 
 msgid "This is a secret key! - really delete? (y/N) "
-msgstr "Это закрытый ключ! - все равно удалить? (y/N)"
+msgstr "Это закрытый ключ! - все равно удалить? (y/N) "
 
 #, c-format
 msgid "deleting keyblock failed: %s\n"
 msgstr "сбой при удалении блока ключа: %s\n"
 
 msgid "ownertrust information cleared\n"
-msgstr "информация о доверии владельцу стерта\n"
+msgstr "сведения о доверии владельцу сброшены\n"
 
 #, c-format
 msgid "there is a secret key for public key \"%s\"!\n"
@@ -1352,21 +1352,19 @@ msgstr ""
 msgid ""
 "WARNING: forcing symmetric cipher %s (%d) violates recipient preferences\n"
 msgstr ""
-"Ð\92Ð\9dÐ\98Ð\9cÐ\90Ð\9dÐ\98Ð\95: Ð¸Ñ\81полÑ\8cзование Ñ\81иммеÑ\82Ñ\80иÑ\87ного Ñ\88иÑ\84Ñ\80а %s (%d) Ð¿Ñ\80оÑ\82ивоÑ\80еÑ\87ит\n"
-"          предпочтениям получателя\n"
+"Ð\92Ð\9dÐ\98Ð\9cÐ\90Ð\9dÐ\98Ð\95: Ð¸Ñ\81полÑ\8cзование Ñ\81иммеÑ\82Ñ\80иÑ\87ного Ñ\88иÑ\84Ñ\80а %s (%d) Ð½Ð°Ñ\80Ñ\83Ñ\88ает\n"
+"          предпочтения получателя\n"
 
 #, c-format
 msgid ""
 "WARNING: forcing compression algorithm %s (%d) violates recipient "
 "preferences\n"
-msgstr ""
-"ВНИМАНИЕ: сжатие алгоритмом %s (%d) противоречит предпочтениям получателя\n"
+msgstr "ВНИМАНИЕ: сжатие алгоритмом %s (%d) нарушает предпочтения получателя\n"
 
 #, c-format
 msgid "forcing symmetric cipher %s (%d) violates recipient preferences\n"
 msgstr ""
-"использование симметричного шифра %s (%d) противоречит предпочтениям "
-"получателя\n"
+"использование симметричного шифра %s (%d) нарушает предпочтения получателя\n"
 
 #, c-format
 msgid "you may not use %s while in %s mode\n"
@@ -1403,8 +1401,7 @@ msgstr ""
 
 msgid "this platform requires temporary files when calling external programs\n"
 msgstr ""
-"на данной платформе требуется использование временных файлов при вызове "
-"внешних программ\n"
+"на данной платформе при вызове внешних программ требуются временные файлы\n"
 
 #, c-format
 msgid "unable to execute program `%s': %s\n"
@@ -1446,7 +1443,7 @@ msgid "export revocation keys marked as \"sensitive\""
 msgstr "экспортировать ключи отзыва, помеченные как `особо важные'"
 
 msgid "remove the passphrase from exported subkeys"
-msgstr "удалить пароль из выбранных подключей"
+msgstr "удалить фразу-пароль из выбранных подключей"
 
 msgid "remove unusable parts from key during export"
 msgstr "удалить при экспорте непригодные части ключа"
@@ -2167,7 +2164,7 @@ msgid "create a public key when importing a secret key"
 msgstr "создать открытый ключ при импорте закрытого ключа"
 
 msgid "only accept updates to existing keys"
-msgstr "пÑ\80оводиÑ\82Ñ\8c Ñ\82олÑ\8cко Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ\8f Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89иÑ\85 ÐºÐ»Ñ\8eÑ\87ей"
+msgstr "обновлÑ\8fÑ\82Ñ\8c Ñ\82олÑ\8cко Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89ие ÐºÐ»Ñ\8eÑ\87и"
 
 msgid "remove unusable parts from key after import"
 msgstr "удалить после импорта непригодные части ключа"
@@ -2181,7 +2178,7 @@ msgstr "пропущен блок типа %d\n"
 
 #, c-format
 msgid "%lu keys processed so far\n"
-msgstr "%lu ключей обработано\n"
+msgstr "обработано %lu ключей\n"
 
 #, c-format
 msgid "Total number processed: %lu\n"
@@ -2268,14 +2265,12 @@ msgstr "крайне желательно, чтобы Вы обновили св
 
 msgid "re-distribute this key to avoid potential algorithm mismatch problems\n"
 msgstr ""
-"распространили этот ключ, чтобы избежать потенциальных проблем несовпадения "
-"алгоритмов\n"
+"распространили этот ключ во избежание возможных нестыковок алгоритмов\n"
 
 #, c-format
 msgid "you can update your preferences with: gpg --edit-key %s updpref save\n"
 msgstr ""
-"Вы можете обновить список предпочтений командой\n"
-"    gpg --edit-key %s updpref save\n"
+"свои предпочтения можно обновить командой gpg --edit-key %s updpref save\n"
 
 #, c-format
 msgid "key %s: no user ID\n"
@@ -2290,7 +2285,7 @@ msgstr "исключен фильтром импорта"
 
 #, c-format
 msgid "key %s: PKS subkey corruption repaired\n"
-msgstr "ключ %s: PKS повреждение подключа исправлено\n"
+msgstr "ключ %s: повреждение подключа PKS исправлено\n"
 
 #, c-format
 msgid "key %s: accepted non self-signed user ID \"%s\"\n"
@@ -2301,7 +2296,7 @@ msgid "key %s: no valid user IDs\n"
 msgstr "ключ %s: нет действительных ID пользователя\n"
 
 msgid "this may be caused by a missing self-signature\n"
-msgstr "пÑ\80иÑ\87иной Ñ\8dÑ\82ого Ð¼Ð¾Ð¶ÐµÑ\82 Ð±Ñ\8bÑ\82Ñ\8c Ð¾Ñ\82Ñ\81Ñ\83Ñ\82Ñ\81Ñ\82вие самоподписи\n"
+msgstr "можеÑ\82 Ð±Ñ\8bÑ\82Ñ\8c, Ð¸Ð·-за Ð¾Ñ\82Ñ\81Ñ\83Ñ\82Ñ\81Ñ\82виÑ\8f самоподписи\n"
 
 #, c-format
 msgid "key %s: public key not found: %s\n"
@@ -2333,11 +2328,11 @@ msgstr "ключ %s: не совпадает с нашей копией\n"
 
 #, c-format
 msgid "key %s: can't locate original keyblock: %s\n"
-msgstr "клÑ\8eÑ\87 %s: Ð½Ðµ Ð½Ð°Ñ\85ожÑ\83 Ð¾Ñ\80игиналÑ\8cнÑ\8bй Ð±Ð»Ð¾Ðº ÐºÐ»Ñ\8eÑ\87ей: %s\n"
+msgstr "клÑ\8eÑ\87 %s: Ð¾Ñ\80игиналÑ\8cнÑ\8bй Ð±Ð»Ð¾Ðº ÐºÐ»Ñ\8eÑ\87ей Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½: %s\n"
 
 #, c-format
 msgid "key %s: can't read original keyblock: %s\n"
-msgstr "клÑ\8eÑ\87 %s: Ð½Ðµ Ð¼Ð¾Ð³Ñ\83 Ð¿Ñ\80оÑ\87иÑ\82аÑ\82Ñ\8c Ð¾Ñ\80игиналÑ\8cнÑ\8bй Ð±Ð»Ð¾Ðº ÐºÐ»Ñ\8eÑ\87ей: %s\n"
+msgstr "клÑ\8eÑ\87 %s: Ð¾Ñ\80игиналÑ\8cнÑ\8bй Ð±Ð»Ð¾Ðº ÐºÐ»Ñ\8eÑ\87ей Ð½Ðµ Ñ\87иÑ\82аеÑ\82Ñ\81Ñ\8f: %s\n"
 
 #, c-format
 msgid "key %s: \"%s\" 1 new user ID\n"
@@ -2388,7 +2383,7 @@ msgid "secret key %s: %s\n"
 msgstr "закрытый ключ %s: %s\n"
 
 msgid "importing secret keys not allowed\n"
-msgstr "импоÑ\80Ñ\82 Ð·Ð°ÐºÑ\80Ñ\8bÑ\82ого ÐºÐ»Ñ\8eÑ\87а Ð½Ðµ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½\n"
+msgstr "импоÑ\80Ñ\82 Ð·Ð°ÐºÑ\80Ñ\8bÑ\82ого ÐºÐ»Ñ\8eÑ\87а Ð½Ðµ Ð´Ð¾Ð¿Ñ\83Ñ\81каеÑ\82Ñ\81Ñ\8f\n"
 
 #, c-format
 msgid "key %s: secret key with invalid cipher %d - skipped\n"
@@ -2408,7 +2403,7 @@ msgstr "ключ %s: уже есть в таблице закрытых ключ
 
 #, c-format
 msgid "key %s: secret key not found: %s\n"
-msgstr "клÑ\8eÑ\87 %s: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ð·Ð°ÐºÑ\80Ñ\8bÑ\82Ñ\8bй ÐºÐ»Ñ\8eÑ\87: %s\n"
+msgstr "клÑ\8eÑ\87 %s: Ð·Ð°ÐºÑ\80Ñ\8bÑ\82Ñ\8bй ÐºÐ»Ñ\8eÑ\87 Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½: %s\n"
 
 #, c-format
 msgid "key %s: no public key - can't apply revocation certificate\n"
@@ -2420,7 +2415,7 @@ msgstr "ключ %s: неправильный сертификат отзыва:
 
 #, c-format
 msgid "key %s: \"%s\" revocation certificate imported\n"
-msgstr "ключ %s: \"%s\" сертификат отзыва импортирован\n"
+msgstr "ключ %s: сертификат отзыва \"%s\" импортирован\n"
 
 #, c-format
 msgid "key %s: no user ID for signature\n"
@@ -2450,7 +2445,7 @@ msgstr "ключ %s: нет подключа для связывания клю
 
 #, c-format
 msgid "key %s: invalid subkey binding\n"
-msgstr "клÑ\8eÑ\87 %s: Ð½ÐµÐ¿Ñ\80авилÑ\8cная связь подключей\n"
+msgstr "клÑ\8eÑ\87 %s: Ð½ÐµÐ´Ð¾Ð¿Ñ\83Ñ\81Ñ\82имая связь подключей\n"
 
 #, c-format
 msgid "key %s: removed multiple subkey binding\n"
@@ -2462,7 +2457,7 @@ msgstr "ключ %s: нет подключа для отзывающего кл
 
 #, c-format
 msgid "key %s: invalid subkey revocation\n"
-msgstr "клÑ\8eÑ\87 %s: Ð½ÐµÐ¿Ñ\80авилÑ\8cный отзыв подключа\n"
+msgstr "клÑ\8eÑ\87 %s: Ð½ÐµÐ²ÐµÑ\80ный отзыв подключа\n"
 
 # test it
 #, c-format
@@ -2511,7 +2506,7 @@ msgstr "ВНИМАНИЕ: ключ %s, возможно, отозван: клю
 
 #, c-format
 msgid "key %s: \"%s\" revocation certificate added\n"
-msgstr "ключ %s: \"%s\" добавлен сертификат отзыва\n"
+msgstr "ключ %s: добавлен сертификат отзыва \"%s\"\n"
 
 #, c-format
 msgid "key %s: direct key signature added\n"
@@ -2522,10 +2517,10 @@ msgstr ""
 "ЗАМЕЧАНИЕ: серийный номер ключа не соответствует номеру ключа на карте\n"
 
 msgid "NOTE: primary key is online and stored on card\n"
-msgstr "Ð\97Ð\90Ð\9cÐ\95ЧÐ\90Ð\9dÐ\98Ð\95: Ð³Ð»Ð°Ð²Ð½Ñ\8bй ÐºÐ»Ñ\8eÑ\87 Ð³Ð¾Ñ\82ов Ð¸ Ñ\81оÑ\85Ñ\80анен Ð² карте\n"
+msgstr "Ð\97Ð\90Ð\9cÐ\95ЧÐ\90Ð\9dÐ\98Ð\95: Ð³Ð»Ð°Ð²Ð½Ñ\8bй ÐºÐ»Ñ\8eÑ\87 Ð³Ð¾Ñ\82ов Ð¸ Ñ\81оÑ\85Ñ\80анен Ð½Ð° карте\n"
 
 msgid "NOTE: secondary key is online and stored on card\n"
-msgstr "Ð\97Ð\90Ð\9cÐ\95ЧÐ\90Ð\9dÐ\98Ð\95: Ð²Ñ\82оÑ\80иÑ\87нÑ\8bй ÐºÐ»Ñ\8eÑ\87 Ð³Ð¾Ñ\82ов Ð¸ Ñ\81оÑ\85Ñ\80анен Ð² карте\n"
+msgstr "Ð\97Ð\90Ð\9cÐ\95ЧÐ\90Ð\9dÐ\98Ð\95: Ð²Ñ\82оÑ\80иÑ\87нÑ\8bй ÐºÐ»Ñ\8eÑ\87 Ð³Ð¾Ñ\82ов Ð¸ Ñ\81оÑ\85Ñ\80анен Ð½Ð° карте\n"
 
 #, c-format
 msgid "error creating keyring `%s': %s\n"
@@ -2677,7 +2672,7 @@ msgid "\"%s\" was already signed by key %s\n"
 msgstr "\"%s\" уже подписан ключом %s\n"
 
 msgid "Do you want to sign it again anyway? (y/N) "
-msgstr "Вы все равно хотите снова подписать его? (y/N)"
+msgstr "Вы все равно хотите снова подписать его? (y/N) "
 
 #, c-format
 msgid "Nothing to sign with key %s\n"
@@ -2697,11 +2692,10 @@ msgstr ""
 msgid ""
 "You may not make an OpenPGP signature on a PGP 2.x key while in --pgp2 "
 "mode.\n"
-msgstr ""
-"Вы не можете сделать подпись OpenPGP на ключе PGP 2.x в режиме --pgp2.\n"
+msgstr "Подпись OpenPGP на ключе PGP 2.x в режиме --pgp2 делать нельзя.\n"
 
 msgid "This would make the key unusable in PGP 2.x.\n"
-msgstr "ЭÑ\82о Ñ\81делаеÑ\82 ÐºÐ»Ñ\8eÑ\87 Ð½ÐµÑ\81овмеÑ\81Ñ\82имÑ\8bм с PGP 2.x.\n"
+msgstr "Ð\9aлÑ\8eÑ\87 Ñ\81Ñ\82ал Ð±Ñ\8b Ð½ÐµÑ\81овмеÑ\81Ñ\82им с PGP 2.x.\n"
 
 msgid ""
 "How carefully have you verified the key you are about to sign actually "
@@ -2709,7 +2703,7 @@ msgid ""
 "to the person named above?  If you don't know what to answer, enter \"0\".\n"
 msgstr ""
 "Насколько хорошо Вы проверили, что ключ действительно принадлежит\n"
-"Ñ\83казанномÑ\83 Ð²Ñ\8bÑ\88е Ñ\87еловекÑ\83? Ð\95Ñ\81ли Ð\92Ñ\8b Ð½Ðµ Ð·Ð½Ð°ÐµÑ\82е, Ñ\87Ñ\82о Ð¾Ñ\82веÑ\82иÑ\82Ñ\8c, Ð²Ð²ÐµÐ´Ð¸Ñ\82е \"0\".\n"
+"указанному выше человеку? Если не знаете, что ответить, введите \"0\".\n"
 
 #, c-format
 msgid "   (0) I will not answer.%s\n"
@@ -2735,7 +2729,7 @@ msgid ""
 "Are you sure that you want to sign this key with your\n"
 "key \"%s\" (%s)\n"
 msgstr ""
-"УвеÑ\80енÑ\8b Ð»Ð¸ Ð\92ы, что хотите подписать этот ключ\n"
+"Ð\92Ñ\8b Ñ\83веÑ\80ены, что хотите подписать этот ключ\n"
 "своим ключом \"%s\" (%s)?\n"
 
 msgid "This will be a self-signature.\n"
@@ -2763,15 +2757,15 @@ msgid "I have checked this key very carefully.\n"
 msgstr "Этот ключ проверен мной очень тщательно.\n"
 
 msgid "Really sign? (y/N) "
-msgstr "Действительно подписать? (y/N)"
+msgstr "Действительно подписать? (y/N) "
 
 #, c-format
 msgid "signing failed: %s\n"
-msgstr "не Ñ\83далоÑ\81Ñ\8c Ð¿Ð¾Ð´Ð¿Ð¸Ñ\81аÑ\82ь: %s\n"
+msgstr "подпиÑ\81аÑ\82Ñ\8c Ð½Ðµ Ñ\83далоÑ\81ь: %s\n"
 
 msgid "Key has only stub or on-card key items - no passphrase to change.\n"
 msgstr ""
-"Ð\92 ÐºÐ»Ñ\8eÑ\87е Ñ\82олÑ\8cко Ð·Ð°Ð³Ð¾Ñ\82овка Ð¸Ð»Ð¸ Ñ\8dлеменÑ\82Ñ\8b Ð´Ð»Ñ\8f ÐºÐ°Ñ\80Ñ\82Ñ\8b - Ð½ÐµÑ\82 Ð¿Ð°Ñ\80олÑ\8f Ð´Ð»Ñ\8f Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f.\n"
+"Ð\92 ÐºÐ»Ñ\8eÑ\87е Ñ\82олÑ\8cко Ð·Ð°Ð³Ð¾Ñ\82овка Ð¸Ð»Ð¸ Ñ\8dлеменÑ\82Ñ\8b Ð´Ð»Ñ\8f ÐºÐ°Ñ\80Ñ\82Ñ\8b - Ð¿Ð°Ñ\80олÑ\8f Ð´Ð»Ñ\8f Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ð½ÐµÑ\82.\n"
 
 msgid "This key is not protected.\n"
 msgstr "Данный ключ не защищен.\n"
@@ -2787,7 +2781,7 @@ msgstr "Ключ защищен.\n"
 
 #, c-format
 msgid "Can't edit this key: %s\n"
-msgstr "Ð\9dе Ð¼Ð¾Ð³Ñ\83 Ñ\80едакÑ\82иÑ\80оваÑ\82Ñ\8c Ð´Ð°Ð½Ð½Ñ\8bй ÐºÐ»Ñ\8eÑ\87: %s\n"
+msgstr "Ð\94аннÑ\8bй ÐºÐ»Ñ\8eÑ\87 Ð½Ðµ Ñ\80едакÑ\82иÑ\80Ñ\83еÑ\82Ñ\81Ñ\8f: %s\n"
 
 msgid ""
 "Enter the new passphrase for this secret key.\n"
@@ -2807,7 +2801,7 @@ msgstr ""
 "\n"
 
 msgid "Do you really want to do this? (y/N) "
-msgstr "Вы все равно хотите этого? (y/N)"
+msgstr "Вы все равно хотите этого? (y/N) "
 
 msgid "moving a key signature to the correct place\n"
 msgstr "перемещение подписи ключа в нужное место\n"
@@ -2898,7 +2892,7 @@ msgid "set a notation for the selected user IDs"
 msgstr "установить примечание для выбранных ID пользователя"
 
 msgid "change the passphrase"
-msgstr "сменить пароль"
+msgstr "сменить фразу-пароль"
 
 msgid "change the ownertrust"
 msgstr "изменить уровень доверия владельцу"
@@ -2913,7 +2907,7 @@ msgid "revoke key or selected subkeys"
 msgstr "отозвать ключ или выбранные подключи"
 
 msgid "enable key"
-msgstr "включить ключ"
+msgstr "подключить ключ"
 
 msgid "disable key"
 msgstr "отключить ключ"
@@ -2947,7 +2941,7 @@ msgid ""
 "  a `t' for trust signatures (tsign), an `nr' for non-revocable signatures\n"
 "  (nrsign), or any combination thereof (ltsign, tnrsign, etc.).\n"
 msgstr ""
-"* Ð\9aоманда `sign' Ð¼Ð¾Ð¶ÐµÑ\82 Ð¸Ð¼ÐµÑ\82Ñ\8c Ð¿Ñ\80еÑ\84икÑ\81 `l' (локальные подписи, lsign),\n"
+"* Ð£ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\8b `sign' Ð¼Ð¾Ð¶ÐµÑ\82 Ð±Ñ\8bÑ\82Ñ\8c Ð¿Ñ\80иÑ\81Ñ\82авка `l' (локальные подписи, lsign),\n"
 "  `t' (подписи доверия, tsign), `nr' (неотзываемые, \n"
 "  nrsign) или любое их сочетание (ltsign, tnrsign и т.д.).\n"
 
@@ -2955,14 +2949,14 @@ msgid "Key is revoked."
 msgstr "Ключ отозван."
 
 msgid "Really sign all user IDs? (y/N) "
-msgstr "Действительно подписать все ID пользователя? (y/N)"
+msgstr "Действительно подписать все ID пользователя? (y/N) "
 
 msgid "Hint: Select the user IDs to sign\n"
 msgstr "Подсказка: Выберите ID пользователей для подписи\n"
 
 #, c-format
 msgid "Unknown signature type `%s'\n"
-msgstr "неизвестный тип подписи `%s'\n"
+msgstr "Ð\9dеизвестный тип подписи `%s'\n"
 
 #, c-format
 msgid "This command is not allowed while in %s mode.\n"
@@ -2975,15 +2969,15 @@ msgid "You can't delete the last user ID!\n"
 msgstr "Вы не можете удалить последний ID пользователя!\n"
 
 msgid "Really remove all selected user IDs? (y/N) "
-msgstr "Действительно удалить все выбранные ID пользователей? (y/N)"
+msgstr "Действительно удалить все выбранные ID пользователей? (y/N) "
 
 msgid "Really remove this user ID? (y/N) "
-msgstr "Действительно удалить этот ID пользователя? (y/N)"
+msgstr "Действительно удалить этот ID пользователя? (y/N) "
 
 #. TRANSLATORS: Please take care: This is about
 #. moving the key and not about removing it.
 msgid "Really move the primary key? (y/N) "
-msgstr "Действительно удалить главный ключ? (y/N)"
+msgstr "Действительно удалить главный ключ? (y/N) "
 
 msgid "You must select exactly one key.\n"
 msgstr "Вы должны выбрать хотя бы один ключ.\n"
@@ -3053,7 +3047,7 @@ msgid "update secret failed: %s\n"
 msgstr "сбой при обновлении закрытого ключа: %s\n"
 
 msgid "Key not changed so no update needed.\n"
-msgstr "ключ не изменялся - обновление не нужно.\n"
+msgstr "Ð\9aлюч не изменялся - обновление не нужно.\n"
 
 msgid "Digest: "
 msgstr "Хэш-функции: "
@@ -3087,19 +3081,19 @@ msgstr "(особо важный)"
 
 #, c-format
 msgid "created: %s"
-msgstr "создан: %s"
+msgstr "      создан: %s"
 
 #, c-format
 msgid "revoked: %s"
-msgstr "отозван: %s"
+msgstr "     отозван: %s"
 
 #, c-format
 msgid "expired: %s"
-msgstr "просрочен с: %s"
+msgstr " просрочен с: %s"
 
 #, c-format
 msgid "expires: %s"
-msgstr "срок действия истекает: %s"
+msgstr "    годен до: %s"
 
 #, c-format
 msgid "usage: %s"
@@ -3142,12 +3136,10 @@ msgstr ""
 "пользователя.\n"
 
 msgid "WARNING: Your encryption subkey expires soon.\n"
-msgstr ""
+msgstr "ВНИМАНИЕ: Срок годности Вашего подключа скоро истечет.\n"
 
-#, fuzzy
-#| msgid "You can't change the expiration date of a v3 key\n"
 msgid "You may want to change its expiration date too.\n"
-msgstr "Ð\9dелÑ\8cзÑ\8f Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ\82Ñ\8c Ñ\81Ñ\80ок Ð´ÐµÐ¹Ñ\81Ñ\82виÑ\8f ÐºÐ»Ñ\8eÑ\87а v3\n"
+msgstr "Ð\92озможно, Ð½Ð°Ð´Ð¾ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ\82Ñ\8c Ð¸ ÐµÐ³Ð¾ Ñ\81Ñ\80ок Ð´ÐµÐ¹Ñ\81Ñ\82виÑ\8f.\n"
 
 msgid ""
 "WARNING: This is a PGP2-style key.  Adding a photo ID may cause some "
@@ -3266,7 +3258,7 @@ msgid "subkey %s does not sign and so does not need to be cross-certified\n"
 msgstr "подключ %s не для подписей, он не нуждается в перекрестном заверении\n"
 
 msgid "Please select exactly one user ID.\n"
-msgstr "Ð\92Ñ\8bбеÑ\80иÑ\82е Ñ\82олÑ\8cко один ID пользователя.\n"
+msgstr "Ð\92Ñ\8bбеÑ\80иÑ\82е Ñ\80овно один ID пользователя.\n"
 
 #, c-format
 msgid "skipping v3 self-signature on user ID \"%s\"\n"
@@ -3396,7 +3388,7 @@ msgstr "неверный размер ключа; используется %u б
 
 #, c-format
 msgid "keysize rounded up to %u bits\n"
-msgstr "Ñ\80азмеÑ\80 ÐºÐ»Ñ\8eÑ\87а Ð¿Ñ\80иведен Ðº %u Ð±Ð¸Ñ\82ам\n"
+msgstr "Ñ\80азмеÑ\80 ÐºÐ»Ñ\8eÑ\87а Ð¾ÐºÑ\80Ñ\83глен Ð²Ð²ÐµÑ\80Ñ\85 Ð´Ð¾ %u Ð±Ð¸Ñ\82\n"
 
 msgid ""
 "WARNING: some OpenPGP programs can't handle a DSA key with this digest size\n"
@@ -3431,10 +3423,10 @@ msgstr "11223300"
 
 #, c-format
 msgid "Possible actions for a %s key: "
-msgstr "Возможные действия для ключа %s:"
+msgstr "Возможные действия для ключа %s: "
 
 msgid "Current allowed actions: "
-msgstr "Допустимы действия:"
+msgstr "Допустимы действия: "
 
 #, c-format
 msgid "   (%c) Toggle the sign capability\n"
@@ -3489,7 +3481,7 @@ msgstr "   (%d) RSA (с требуемыми возможностями)\n"
 
 #, c-format
 msgid "%s keys may be between %u and %u bits long.\n"
-msgstr "клÑ\8eÑ\87и %s Ð¼Ð¾Ð³Ñ\83Ñ\82 Ð¸Ð¼ÐµÑ\82Ñ\8c Ð´Ð»Ð¸Ð½Ñ\83 от %u до %u бит.\n"
+msgstr "длина ÐºÐ»Ñ\8eÑ\87ей %s Ð¼Ð¾Ð¶ÐµÑ\82 Ð±Ñ\8bÑ\82Ñ\8c от %u до %u бит.\n"
 
 #, c-format
 msgid "What keysize do you want for the subkey? (%u) "
@@ -3513,10 +3505,10 @@ msgid ""
 msgstr ""
 "Выберите срок действия ключа.\n"
 "         0 = без ограничения срока действия\n"
-"      <n>  = срок действия - n дней\n"
-"      <n>w = срок действия - n недель\n"
-"      <n>m = срок действия - n месяцев\n"
-"      <n>y = срок действия - n лет\n"
+"      <n>  = срок действия ключа - n дней\n"
+"      <n>w = срок действия ключа - n недель\n"
+"      <n>m = срок действия ключа - n месяцев\n"
+"      <n>y = срок действия ключа - n лет\n"
 
 msgid ""
 "Please specify how long the signature should be valid.\n"
@@ -3551,7 +3543,7 @@ msgstr "Срок действия подписи не ограничен\n"
 
 #, c-format
 msgid "Key expires at %s\n"
-msgstr "Ключ действителен до: %s\n"
+msgstr "Ключ действителен до %s\n"
 
 #, c-format
 msgid "Signature expires at %s\n"
@@ -3698,8 +3690,8 @@ msgid ""
 "generator a better chance to gain enough entropy.\n"
 msgstr ""
 "Необходимо получить много случайных чисел. Желательно, чтобы Вы\n"
-"выполняли некоторые другие действия (печать на клавиатуре, движения мыши,\n"
-"обÑ\80аÑ\89ениÑ\8f Ðº Ð´Ð¸Ñ\81кам) Ð² Ð¿Ñ\80оÑ\86еÑ\81Ñ\81е Ð³ÐµÐ½ÐµÑ\80аÑ\86ии; это даст генератору\n"
+"в процессе генерации выполняли какие-то другие действия (печать\n"
+"на ÐºÐ»Ð°Ð²Ð¸Ð°Ñ\82Ñ\83Ñ\80е, Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ\8f Ð¼Ñ\8bÑ\88и, Ð¾Ð±Ñ\80аÑ\89ениÑ\8f Ðº Ð´Ð¸Ñ\81кам); это даст генератору\n"
 "случайных чисел больше возможностей получить достаточное количество "
 "энтропии.\n"
 
@@ -3712,7 +3704,7 @@ msgstr "сохранение открытого ключа в `%s'\n"
 
 #, c-format
 msgid "writing secret key stub to `%s'\n"
-msgstr "Ñ\81оÑ\85Ñ\80анение Ð·Ð°Ð³Ð»Ñ\83Ñ\88ки закрытого ключа в `%s'\n"
+msgstr "Ñ\81оÑ\85Ñ\80анение Ð·Ð°Ð³Ð¾Ñ\82овки закрытого ключа в `%s'\n"
 
 #, c-format
 msgid "writing secret key to `%s'\n"
@@ -3784,7 +3776,7 @@ msgid "never     "
 msgstr "никогда   "
 
 msgid "Critical signature policy: "
-msgstr "Ð\9aÑ\80иÑ\82иÑ\87еÑ\81кие Ð¿Ñ\80авила Ð´Ð»Ñ\8f Ð¿Ð¾Ð´Ð¿Ð¸Ñ\81и: "
+msgstr "Критические правила подписи: "
 
 msgid "Signature policy: "
 msgstr "Правила подписи: "
@@ -3880,7 +3872,7 @@ msgstr "учитывать набор записей PKA при получени
 #, c-format
 msgid "WARNING: keyserver option `%s' is not used on this platform\n"
 msgstr ""
-"Ð\92Ð\9dÐ\98Ð\9cÐ\90Ð\9dÐ\98Ð\95: Ð¿Ð°Ñ\80амеÑ\82Ñ\80 Ñ\81еÑ\80веÑ\80а ÐºÐ»Ñ\8eÑ\87ей `%s' Ð½Ðµ Ð¸Ñ\81полÑ\8cзÑ\83еÑ\82Ñ\81Ñ\8f Ð½Ð° Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¿Ð»Ð°Ñ\82Ñ\84оÑ\80ме\n"
+"Ð\92Ð\9dÐ\98Ð\9cÐ\90Ð\9dÐ\98Ð\95: Ð¿Ð°Ñ\80амеÑ\82Ñ\80 Ñ\81еÑ\80веÑ\80а ÐºÐ»Ñ\8eÑ\87ей `%s' Ð½Ð° Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¿Ð»Ð°Ñ\82Ñ\84оÑ\80ме Ð½Ðµ Ð¸Ñ\81полÑ\8cзÑ\83еÑ\82Ñ\81Ñ\8f\n"
 
 msgid "disabled"
 msgstr "отключен"
@@ -3902,7 +3894,7 @@ msgstr "ключ не найден на сервере ключей\n"
 
 #, c-format
 msgid "requesting key %s from %s server %s\n"
-msgstr "запрашиваю ключ %s с %s сервера %s\n"
+msgstr "запрашиваю ключ %s с сервера %s %s\n"
 
 #, c-format
 msgid "requesting key %s from %s\n"
@@ -3910,7 +3902,7 @@ msgstr "получение ключа %s с %s\n"
 
 #, c-format
 msgid "searching for names from %s server %s\n"
-msgstr "поиск имен на %s сервере %s\n"
+msgstr "поиск имен на сервере %s %s\n"
 
 #, c-format
 msgid "searching for names from %s\n"
@@ -3918,7 +3910,7 @@ msgstr "поиск имен на %s\n"
 
 #, c-format
 msgid "sending key %s to %s server %s\n"
-msgstr "отправка ключа %s на %s сервер %s\n"
+msgstr "отправка ключа %s на сервер %s %s\n"
 
 #, c-format
 msgid "sending key %s to %s\n"
@@ -3926,7 +3918,7 @@ msgstr "отправка ключа %s на %s\n"
 
 #, c-format
 msgid "searching for \"%s\" from %s server %s\n"
-msgstr "поиск \"%s\" на %s сервере %s\n"
+msgstr "поиск \"%s\" на сервере %s %s\n"
 
 #, c-format
 msgid "searching for \"%s\" from %s\n"
@@ -3943,10 +3935,6 @@ msgstr "ВНИМАНИЕ: обработчик сервера ключей от
 msgid "keyserver did not send VERSION\n"
 msgstr "сервер ключей не прислал VERSION\n"
 
-#, c-format
-msgid "keyserver communications error: %s\n"
-msgstr "ошибка связи с сервером ключей: %s\n"
-
 msgid "no keyserver known (use option --keyserver)\n"
 msgstr "не заданы серверы ключей (используйте --keyserver)\n"
 
@@ -3972,6 +3960,10 @@ msgid "keyserver internal error\n"
 msgstr "внутренняя ошибка сервера ключей\n"
 
 #, c-format
+msgid "keyserver communications error: %s\n"
+msgstr "ошибка связи с сервером ключей: %s\n"
+
+#, c-format
 msgid "\"%s\" not a key ID: skipping\n"
 msgstr "\"%s\" не идентификатор ключа: пропущен\n"
 
@@ -4005,7 +3997,7 @@ msgstr "сеансовый ключ зашифрован по %s\n"
 
 #, c-format
 msgid "passphrase generated with unknown digest algorithm %d\n"
-msgstr "пароль создан с незнакомой хэш-функцией %d\n"
+msgstr "фраза-пароль создана с незнакомой хэш-функцией %d\n"
 
 #, c-format
 msgid "public key is %s\n"
@@ -4016,7 +4008,7 @@ msgstr "данные зашифрованы открытым ключом: хо
 
 #, c-format
 msgid "encrypted with %u-bit %s key, ID %s, created %s\n"
-msgstr "зашифровано %u-битным ключом %s, с ID %s, созданным %s\n"
+msgstr "зашифровано %u-битным ключом %s с ID %s, созданным %s\n"
 
 #, c-format
 msgid "      \"%s\"\n"
@@ -4157,7 +4149,7 @@ msgstr ""
 
 #, c-format
 msgid "standalone signature of class 0x%02x\n"
-msgstr "самостоятельная подпись класса 0x%02x\n"
+msgstr "отдельная подпись класса 0x%02x\n"
 
 msgid "old style (PGP 2.x) signature\n"
 msgstr "подпись старого типа (PGP 2.x)\n"
@@ -4217,7 +4209,7 @@ msgstr "ВНИМАНИЕ: параметр \"%s\" не рекомендуетс
 
 #, c-format
 msgid "please use \"%s%s\" instead\n"
-msgstr "используйте \"%s%s\" взамен\n"
+msgstr "используйте вместо этого \"%s%s\"\n"
 
 #, c-format
 msgid "WARNING: \"%s\" is a deprecated command - do not use it\n"
@@ -4324,7 +4316,7 @@ msgstr ""
 "создан %s%s.\n"
 
 msgid "Enter passphrase\n"
-msgstr "Введите пароль\n"
+msgstr "Введите фразу-пароль\n"
 
 msgid "cancelled by user\n"
 msgstr "прервано пользователем\n"
@@ -4333,7 +4325,8 @@ msgstr "прервано пользователем\n"
 msgid ""
 "You need a passphrase to unlock the secret key for\n"
 "user: \"%s\"\n"
-msgstr "Необходим пароль для доступа к закрытому ключу пользователя: \"%s\"\n"
+msgstr ""
+"Необходима фраза-пароль для доступа к закрытому ключу пользователя: \"%s\"\n"
 
 #, c-format
 msgid "%u-bit %s key, ID %s, created %s"
@@ -4357,11 +4350,11 @@ msgstr ""
 "его размер! Рекомендуется размер около 240x288.\n"
 
 msgid "Enter JPEG filename for photo ID: "
-msgstr "Введите имя JPEG файла для фотоидентификатора: "
+msgstr "Введите имя файла JPEG для фотоидентификатора: "
 
 #, c-format
 msgid "unable to open JPEG file `%s': %s\n"
-msgstr "Ð\9dе могу открыть файл JPEG `%s': %s\n"
+msgstr "не могу открыть файл JPEG `%s': %s\n"
 
 #, c-format
 msgid "This JPEG is really large (%d bytes) !\n"
@@ -4736,7 +4729,7 @@ msgstr "Отмена"
 
 #, c-format
 msgid "(Probably you want to select %d here)\n"
-msgstr "(Ð\92озможно, Ð\92Ñ\8b Ñ\85оÑ\82иÑ\82е Ð·Ð´ÐµÑ\81Ñ\8c Ð²Ñ\8bбÑ\80аÑ\82Ñ\8c %d)\n"
+msgstr "(СкоÑ\80ее Ð²Ñ\81его, Ð\92Ñ\8b Ð·Ð´ÐµÑ\81Ñ\8c Ð²Ñ\8bбеÑ\80еÑ\82е %d)\n"
 
 msgid "Enter an optional description; end it with an empty line:\n"
 msgstr "Введите необязательное пояснение; закончите пустой строкой:\n"
@@ -4839,7 +4832,7 @@ msgstr "ЗАМЕЧАНИЕ: ключ для подписей %s отозван\n
 #, c-format
 msgid "assuming bad signature from key %s due to an unknown critical bit\n"
 msgstr ""
-"предполагается плохая подпись ключа %s из-за неизвестного критического бита\n"
+"подпись ключа %s считается плохой из-за неизвестного критического бита\n"
 
 #, c-format
 msgid "key %s: no subkey for subkey revocation signature\n"
@@ -5079,7 +5072,7 @@ msgstr "ключ %s: принят как доверенный ключ\n"
 
 #, c-format
 msgid "key %s occurs more than once in the trustdb\n"
-msgstr "клÑ\8eÑ\87 %s Ð²Ñ\81Ñ\82Ñ\80еÑ\87аеÑ\82Ñ\81Ñ\8f Ð±Ð¾Ð»ÐµÐµ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ\80аза Ð² Ñ\82аблиÑ\86е Ð´Ð¾Ð²ÐµÑ\80иÑ\8f\n"
+msgstr "клÑ\8eÑ\87 %s Ð²Ñ\81Ñ\82Ñ\80еÑ\87аеÑ\82Ñ\81Ñ\8f Ð² Ñ\82аблиÑ\86е Ð´Ð¾Ð²ÐµÑ\80иÑ\8f Ð±Ð¾Ð»ÐµÐµ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ\80аза\n"
 
 #, c-format
 msgid "key %s: no public key for trusted key - skipped\n"
@@ -5200,14 +5193,13 @@ msgstr "открытый ключ для абсолютно доверенног
 # check it
 #, c-format
 msgid "%d marginal(s) needed, %d complete(s) needed, %s trust model\n"
-msgstr ""
-"%d ограниченных необходимо, %d выполненных необходимо, модель доверия %s\n"
+msgstr "требуется %d с ограниченным доверием, %d с полным, модель доверия %s\n"
 
 #, c-format
 msgid ""
 "depth: %d  valid: %3d  signed: %3d  trust: %d-, %dq, %dn, %dm, %df, %du\n"
 msgstr ""
-"глÑ\83бина: %d  ÐºÐ¾Ñ\80Ñ\80екÑ\82нÑ\8bÑ\85: %3d  Ð¿Ð¾Ð´Ð¿Ð¸Ñ\81аннÑ\8bÑ\85: %3d  Ð´Ð¾Ð²ÐµÑ\80иÑ\8f: %d-, %dq, %dn, %dm, "
+"глÑ\83бина: %d  Ð²ÐµÑ\80нÑ\8bÑ\85: %3d  Ð¿Ð¾Ð´Ð¿Ð¸Ñ\81аннÑ\8bÑ\85: %3d  Ð´Ð¾Ð²ÐµÑ\80ие: %d-, %dq, %dn, %dm, "
 "%df, %du\n"
 
 #, c-format
@@ -5226,7 +5218,7 @@ msgstr ""
 
 #, c-format
 msgid "input line %u too long or missing LF\n"
-msgstr "входная строка %u слишком длинная или пропущен перевод строки\n"
+msgstr "слишком длинная входная строка %u или пропущен перевод строки\n"
 
 #, c-format
 msgid "can't open fd %d: %s\n"
@@ -5550,7 +5542,7 @@ msgstr ""
 
 #, c-format
 msgid "can't access %s - invalid OpenPGP card?\n"
-msgstr "нет доступа %s - неработоспособная карта OpenPGP?\n"
+msgstr "нет доступа %s - непригодная карта OpenPGP?\n"
 
 msgid "||Please enter your PIN at the reader's pinpad"
 msgstr "||Введите PIN на клавиатуре считывателя"
@@ -5850,8 +5842,8 @@ msgid ""
 "S/N %s, ID 0x%08lX,\n"
 "created %s, expires %s.\n"
 msgstr ""
-"Введите фразу-пароль для доступа к закрытому ключу к сертификату X.509:\"%s"
-"\"\n"
+"Введите фразу-пароль для доступа к закрытому ключу сертификата X.509:\n"
+"\"%s\"\n"
 "S/N %s, ID 0x%08lX,\n"
 "создан %s, истекает %s.\n"
 
@@ -6430,7 +6422,7 @@ msgid "|N|set minimal required length for new passphrases to N"
 msgstr "|N|установить минимальную длину фразы-пароля равной N"
 
 msgid "|N|require at least N non-alpha characters for a new passphrase"
-msgstr "|n|Ñ\82Ñ\80ебоваÑ\82Ñ\8c Ð½Ðµ Ð¼ÐµÐ½ÐµÐµ N Ð½ÐµÐ°Ð»Ñ\84авиÑ\82нÑ\8bÑ\85 Ñ\81имволов Ð´Ð»Ñ\8f Ð½Ð¾Ð²Ð¾Ð¹ Ñ\84Ñ\80азÑ\8b-паÑ\80олÑ\8f"
+msgstr "|n|Ñ\82Ñ\80ебоваÑ\82Ñ\8c Ð´Ð»Ñ\8f Ð½Ð¾Ð²Ð¾Ð¹ Ñ\84Ñ\80азÑ\8b-паÑ\80олÑ\8f Ð½Ðµ Ð¼ÐµÐ½ÐµÐµ N Ð½ÐµÐ°Ð»Ñ\84авиÑ\82нÑ\8bÑ\85 Ñ\81имволов"
 
 msgid "|FILE|check new passphrases against pattern in FILE"
 msgstr "|FILE|проверять новую фразу-пароль по файлу образцов FILE"
index b715a11..23bac58 100644 (file)
--- a/po/sk.po
+++ b/po/sk.po
@@ -32,9 +32,30 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Skutoène chcete revokova» vybrané kµúèe? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "nesprávne heslo"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -362,6 +383,10 @@ msgstr "nepodporovan
 msgid "enable putty support"
 msgstr "nepodporované"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "chyba pri vytváraní hesla: %s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1560,6 +1585,10 @@ msgstr "pr
 msgid "[User ID not found]"
 msgstr "[User id not found]"
 
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "kµúè %08lX: tajný kµúè bez verejného kµúèa - preskoèené\n"
+
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr ""
@@ -1586,10 +1615,6 @@ msgstr "existuje tajn
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "pou¾ívam sekundárny kµúè %08lX namiesto primárneho kµúèa %08lX\n"
 
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "kµúè %08lX: tajný kµúè bez verejného kµúèa - preskoèené\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "vytvori» podpis oddelený od dokumentu"
@@ -5462,6 +5487,11 @@ msgid "missing argument"
 msgstr "neplatný argument"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "neplatný spôsob reprezentácie v ASCII"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "konfliktné príkazy\n"
 
@@ -5481,6 +5511,10 @@ msgstr "neplatn
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "neplatný parameter pre import\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7516,9 +7550,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "neplatný paket"
 
-#~ msgid "invalid armor"
-#~ msgstr "neplatný spôsob reprezentácie v ASCII"
-
 #~ msgid "no such user id"
 #~ msgstr "u¾ívateµ s týmto id neexistuje"
 
@@ -7543,9 +7574,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "chyba pri vytváraní súboru"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "nesprávne heslo"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "algoritmus verejného kµúèa nie je implementovaný"
 
index 4c42193..3e8b6cd 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -48,9 +48,37 @@ msgstr "_OK"
 msgid "|pinentry-label|_Cancel"
 msgstr "_Avbryt"
 
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "_OK"
+
 msgid "|pinentry-label|PIN:"
 msgstr "PIN-kod:"
 
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "_Avbryt"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Vill du verkligen spärra de valda undernycklarna? (j/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Ange ny lösenfras"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -382,6 +410,11 @@ msgstr "aktivera ssh-agent-emulering"
 msgid "enable putty support"
 msgstr ""
 
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "tillåt inte återanvändning av gamla lösenfraser"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "|FIL|skriv även miljöinställningar till FIL"
 
@@ -1533,6 +1566,10 @@ msgid "[User ID not found]"
 msgstr "[Användaridentiteten hittades inte]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "nyckel %s: hemlig nyckel utan publik nyckel - hoppades över\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "hämtade \"%s\" automatiskt via %s\n"
 
@@ -1556,10 +1593,6 @@ msgstr "ingen hemlig undernyckel för publika undernyckeln %s - hoppar över\n"
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "använder undernyckeln %s istället för primära nyckeln %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "nyckel %s: hemlig nyckel utan publik nyckel - hoppades över\n"
-
 msgid "make a signature"
 msgstr "skapa en signatur"
 
@@ -5393,6 +5426,11 @@ msgstr "nyckelordet är för långt"
 msgid "missing argument"
 msgstr "argument saknas"
 
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "ogiltigt värde\n"
+
 msgid "invalid command"
 msgstr "ogiltigt kommando"
 
@@ -5409,6 +5447,11 @@ msgstr "ogiltig flagga"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr "argument för flaggan \"%.50s\" saknas\n"
 
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "argument för flaggan \"%.50s\" saknas\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "flaggan \"%.50s\" förväntar sig inte ett argument\n"
index 8fb4bff..889f532 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -32,9 +32,33 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr ""
+"Seçili yardımcı anahtarları gerçekten yürürlükten kaldırmak istiyor musunuz? "
+"(e/H ya da y/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Yeni anahtar parolasını giriniz"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -357,6 +381,11 @@ msgstr "ssh-agent öykünümü etkinleşir"
 msgid "enable putty support"
 msgstr ""
 
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "eski anahtar parolalarının yeniden kullanılmasına izin vermez"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "|DOSYA|ortam ayarlarını ayrıca DOSYAya da yazar"
 
@@ -1496,6 +1525,10 @@ msgid "[User ID not found]"
 msgstr "[Kullanıcı kimliği yok]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "anahtar %s: genel anahtarsız gizli anahtar - atlandı\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "`%s' %s üzerinden özdevinimli olarak alındı\n"
 
@@ -1520,10 +1553,6 @@ msgstr ""
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "yardımcı anahtar %s, asıl anahtar %s yerine kullanılıyor\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "anahtar %s: genel anahtarsız gizli anahtar - atlandı\n"
-
 msgid "make a signature"
 msgstr "bir imza yapar"
 
@@ -5317,6 +5346,11 @@ msgstr "anahtar sözcük çok uzun"
 msgid "missing argument"
 msgstr "eksik değiştirge"
 
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "değer hatalı\n"
+
 msgid "invalid command"
 msgstr "geçersiz komut"
 
@@ -5333,6 +5367,11 @@ msgstr "geçersiz seçenek"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr "\"%.50s\" seçeneği için değiştirge eksik\n"
 
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "\"%.50s\" seçeneği için değiştirge eksik\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "\"%.50s\" seçeneğinin değiştirge ihtiyacı yok\n"
index 32400e2..77998ae 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
@@ -33,9 +33,37 @@ msgstr "_Гаразд"
 msgid "|pinentry-label|_Cancel"
 msgstr "_Скасувати"
 
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "_Гаразд"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "_Гаразд"
+
 msgid "|pinentry-label|PIN:"
 msgstr "Пінкод:"
 
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "_Скасувати"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Ви справді бажаєте відкликати позначені підключі? (y/N або т/Н) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Вкажіть новий пароль"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -363,6 +391,11 @@ msgstr "увімкнути підтримку ssh"
 msgid "enable putty support"
 msgstr "увімкнути підтримку putty"
 
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "не дозволяти повторне використання старих паролів"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "записати параметри середовища і до файла"
 
@@ -1511,6 +1544,10 @@ msgid "[User ID not found]"
 msgstr "[Ідентифікатор не знайдено]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "ключ %s: закритий ключ без відкритого ключа — пропущено\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "автоматично отримано «%s» за допомогою %s\n"
 
@@ -1535,10 +1572,6 @@ msgstr "немає закритого підключа для відкритог
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "використовуємо підключ %s замість основного ключа %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "ключ %s: закритий ключ без відкритого ключа — пропущено\n"
-
 msgid "make a signature"
 msgstr "створити підпис"
 
@@ -5322,6 +5355,11 @@ msgstr "занадто довге ключове слово"
 msgid "missing argument"
 msgstr "не вистачає аргументу"
 
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "некоректне значення\n"
+
 msgid "invalid command"
 msgstr "некоректна команда"
 
@@ -5338,6 +5376,11 @@ msgstr "некоректний параметр"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr "не вказано аргументу до параметра «%.50s»\n"
 
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "не вказано аргументу до параметра «%.50s»\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "для параметра «%.50s» аргументи не потрібно вказувати\n"
index d8dfc34..8ab5db7 100644 (file)
@@ -34,9 +34,31 @@ msgstr ""
 msgid "|pinentry-label|_Cancel"
 msgstr ""
 
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
 msgid "|pinentry-label|PIN:"
 msgstr ""
 
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "您真的要吊销选定的子钥吗?(y/N)"
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "无效的密码"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 #, fuzzy
@@ -371,6 +393,10 @@ msgstr "未被支持"
 msgid "enable putty support"
 msgstr "未被支持"
 
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "生成密码的时候发生错误:%s\n"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
@@ -1517,6 +1543,10 @@ msgid "[User ID not found]"
 msgstr "[找不到用户标识]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "密钥 %s:无相应公钥的私钥――已跳过\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "自动获取‘%s’,通过 %s\n"
 
@@ -1540,10 +1570,6 @@ msgstr "公钥 %s 没有相对应的私钥――忽略\n"
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "使用子钥 %s 而非主钥 %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "密钥 %s:无相应公钥的私钥――已跳过\n"
-
 #, fuzzy
 msgid "make a signature"
 msgstr "|[文件名]|生成一份签名"
@@ -5190,6 +5216,11 @@ msgid "missing argument"
 msgstr "无效的参数"
 
 #, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "无效的 ASCII 封装格式"
+
+#, fuzzy
 msgid "invalid command"
 msgstr "仅供管理员使用的命令\n"
 
@@ -5209,6 +5240,10 @@ msgstr "无效的列表选项\n"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "无效的列表选项\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr ""
@@ -7220,9 +7255,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "无效包"
 
-#~ msgid "invalid armor"
-#~ msgstr "无效的 ASCII 封装格式"
-
 #~ msgid "no such user id"
 #~ msgstr "没有这个用户标识"
 
@@ -7244,9 +7276,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "文件建立错误"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "无效的密码"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "未实现的公钥算法"
 
index 2941a86..f8192f6 100644 (file)
@@ -35,9 +35,37 @@ msgstr "|pinentry-label|_OK"
 msgid "|pinentry-label|_Cancel"
 msgstr "|pinentry-label|取消 (_C)"
 
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
 msgid "|pinentry-label|PIN:"
 msgstr "|pinentry-label|個人識別碼 (PIN):"
 
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|取消 (_C)"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "你真的想要撤銷所選的子鑰嗎? (y/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "無效的密語"
+
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
 msgid "Quality:"
@@ -342,6 +370,11 @@ msgstr "啟用 ssh 支援"
 msgid "enable putty support"
 msgstr "啟用 putty 支援"
 
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "不允許重複使用舊密語"
+
 msgid "|FILE|write environment settings also to FILE"
 msgstr "|檔案|將環境設定也寫至指定檔案"
 
@@ -1449,6 +1482,10 @@ msgid "[User ID not found]"
 msgstr "[找不到使用者 ID]"
 
 #, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "金鑰 %s: 祇有私鑰而沒有公鑰 - 已跳過\n"
+
+#, c-format
 msgid "automatically retrieved `%s' via %s\n"
 msgstr "已自動取回 `%s' (經由 %s )\n"
 
@@ -1471,10 +1508,6 @@ msgstr "公鑰 %s 沒有相對應的私鑰 - 正在忽略\n"
 msgid "using subkey %s instead of primary key %s\n"
 msgstr "使用子鑰 %s 來替換主鑰 %s\n"
 
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "金鑰 %s: 祇有私鑰而沒有公鑰 - 已跳過\n"
-
 msgid "make a signature"
 msgstr "建立簽章"
 
@@ -5103,6 +5136,11 @@ msgstr "關鍵字太長"
 msgid "missing argument"
 msgstr "無效的引數"
 
+#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "無效的封裝"
+
 msgid "invalid command"
 msgstr "無效的指令"
 
@@ -5119,6 +5157,11 @@ msgstr "無效的選項"
 msgid "missing argument for option \"%.50s\"\n"
 msgstr "\"%.50s\" 選項遺失了引數\n"
 
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "\"%.50s\" 選項遺失了引數\n"
+
 #, c-format
 msgid "option \"%.50s\" does not expect an argument\n"
 msgstr "\"%.50s\" 選項沒料到會有引數\n"
@@ -7038,9 +7081,6 @@ msgstr ""
 #~ msgid "invalid packet"
 #~ msgstr "無效的封包"
 
-#~ msgid "invalid armor"
-#~ msgstr "無效的封裝"
-
 #~ msgid "no such user id"
 #~ msgstr "沒有這個使用者 ID"
 
@@ -7059,9 +7099,6 @@ msgstr ""
 #~ msgid "file create error"
 #~ msgstr "檔案建立錯誤"
 
-#~ msgid "invalid passphrase"
-#~ msgstr "無效的密語"
-
 #~ msgid "unimplemented pubkey algorithm"
 #~ msgstr "尚未實做的公鑰演算法"
 
index 5ce7f94..72b291e 100644 (file)
@@ -1269,7 +1269,7 @@ control_pcsc_direct (int slot, pcsc_dword_t ioctl_code,
   long err;
 
   err = pcsc_control (reader_table[slot].pcsc.card, ioctl_code,
-                      cntlbuf, len, buffer, *buflen, buflen);
+                      cntlbuf, len, buffer, buflen? *buflen:0, buflen);
   if (err)
     {
       log_error ("pcsc_control failed: %s (0x%lx)\n",
@@ -1337,14 +1337,18 @@ control_pcsc_wrapped (int slot, pcsc_dword_t ioctl_code,
 
   full_len = len;
 
-  n = *buflen < len ? *buflen : len;
+  if (buflen)
+    n = *buflen < len ? *buflen : len;
+  else
+    n = 0;
   if ((i=readn (slotp->pcsc.rsp_fd, buffer, n, &len)) || len != n)
     {
       log_error ("error receiving PC/SC CONTROL response: %s\n",
                  i? strerror (errno) : "premature EOF");
       goto command_failed;
     }
-  *buflen = n;
+  if (buflen)
+    *buflen = n;
 
   full_len -= len;
   if (full_len)
@@ -1866,7 +1870,8 @@ open_pcsc_reader_direct (const char *portstr)
   long err;
   int slot;
   char *list = NULL;
-  pcsc_dword_t nreader, listlen;
+  char *rdrname = NULL;
+  pcsc_dword_t nreader;
   char *p;
 
   slot = new_reader_slot ();
@@ -1913,24 +1918,27 @@ open_pcsc_reader_direct (const char *portstr)
       return -1;
     }
 
-  listlen = nreader;
   p = list;
   while (nreader)
     {
       if (!*p && !p[1])
         break;
-      if (*p)
-        log_info ("detected reader `%s'\n", p);
+      log_info ("detected reader `%s'\n", p);
       if (nreader < (strlen (p)+1))
         {
           log_error ("invalid response from pcsc_list_readers\n");
           break;
         }
+      if (!rdrname && portstr && !strncmp (p, portstr, strlen (portstr)))
+        rdrname = p;
       nreader -= strlen (p)+1;
       p += strlen (p) + 1;
     }
 
-  reader_table[slot].rdrname = xtrymalloc (strlen (portstr? portstr : list)+1);
+  if (!rdrname)
+    rdrname = list;
+
+  reader_table[slot].rdrname = xtrystrdup (rdrname);
   if (!reader_table[slot].rdrname)
     {
       log_error ("error allocating memory for reader name\n");
@@ -1939,7 +1947,6 @@ open_pcsc_reader_direct (const char *portstr)
       unlock_slot (slot);
       return -1;
     }
-  strcpy (reader_table[slot].rdrname, portstr? portstr : list);
   xfree (list);
   list = NULL;
 
@@ -3674,9 +3681,9 @@ send_le (int slot, int class, int ins, int p0, int p1,
           apdu[apdulen++] = ins;
           apdu[apdulen++] = p0;
           apdu[apdulen++] = p1;
-          apdu[apdulen++] = 0;  /* Z byte: Extended length marker.  */
-          if (lc >= 0)
+          if (lc > 0)
             {
+              apdu[apdulen++] = 0;  /* Z byte: Extended length marker.  */
               apdu[apdulen++] = ((lc >> 8) & 0xff);
               apdu[apdulen++] = (lc & 0xff);
               memcpy (apdu+apdulen, data, lc);
@@ -3685,6 +3692,8 @@ send_le (int slot, int class, int ins, int p0, int p1,
             }
           if (le != -1)
             {
+              if (lc <= 0)
+                apdu[apdulen++] = 0;  /* Z byte: Extended length marker.  */
               apdu[apdulen++] = ((le >> 8) & 0xff);
               apdu[apdulen++] = (le & 0xff);
             }
index 4b2e13e..e48db3c 100644 (file)
@@ -64,10 +64,10 @@ struct app_ctx_s {
   size_t serialnolen;      /* Length in octets of serialnumber. */
   const char *apptype;
   unsigned int card_version;
-  int did_chv1;
-  int force_chv1;   /* True if the card does not cache CHV1. */
-  int did_chv2;
-  int did_chv3;
+  unsigned int did_chv1:1;
+  unsigned int force_chv1:1;   /* True if the card does not cache CHV1. */
+  unsigned int did_chv2:1;
+  unsigned int did_chv3:1;
   struct app_local_s *app_local;  /* Local to the application. */
   struct {
     void (*deinit) (app_t app);
index a179aa8..490569f 100644 (file)
 
 #define DRVNAME "ccid-driver: "
 
+/* Max length of buffer with out CCID message header of 10-byte
+   Sending: 547 for RSA-4096 key import
+        APDU size = 540 (24+4+256+256)
+        commnd + lc + le = 4 + 3 + 0
+   Sending: write data object of cardholder certificate
+        APDU size = 2048
+        commnd + lc + le = 4 + 3 + 0
+   Receiving: 2048 for cardholder certificate
+*/
+#define CCID_MAX_BUF (2048+7+10)
 
 /* Depending on how this source is used we either define our error
    output to go to stderr or to the jnlib based logging functions.  We
@@ -270,7 +280,7 @@ struct ccid_driver_s
   unsigned char t1_nr;
   unsigned char nonnull_nad;
   int max_ifsd;
-  int ifsd;
+  int max_ccid_msglen;
   int ifsc;
   unsigned char apdu_level:2;     /* Reader supports short APDU level
                                      exchange.  With a value of 2 short
@@ -749,7 +759,7 @@ prepare_special_transport (ccid_driver_t handle)
   handle->nonnull_nad = 0;
   handle->auto_ifsd = 0;
   handle->max_ifsd = 32;
-  handle->ifsd = 0;
+  handle->max_ccid_msglen = CCID_MAX_BUF;
   handle->has_pinpad = 0;
   handle->apdu_level = 0;
   switch (handle->id_product)
@@ -781,7 +791,6 @@ parse_ccid_descriptor (ccid_driver_t handle,
   handle->nonnull_nad = 0;
   handle->auto_ifsd = 0;
   handle->max_ifsd = 32;
-  handle->ifsd = 0;
   handle->has_pinpad = 0;
   handle->apdu_level = 0;
   handle->auto_voltage = 0;
@@ -922,6 +931,7 @@ parse_ccid_descriptor (ccid_driver_t handle,
 
   us = convert_le_u32(buf+44);
   DEBUGOUT_1 ("  dwMaxCCIDMsgLen     %5u\n", us);
+  handle->max_ccid_msglen = us;
 
   DEBUGOUT (  "  bClassGetResponse    ");
   if (buf[48] == 0xff)
@@ -2831,109 +2841,101 @@ is_exlen_apdu (const unsigned char *apdu, size_t apdulen)
 /* Helper for ccid_transceive used for APDU level exchanges.  */
 static int
 ccid_transceive_apdu_level (ccid_driver_t handle,
-                            const unsigned char *apdu_buf, size_t apdu_buflen,
+                            const unsigned char *apdu_buf, size_t apdu_len,
                             unsigned char *resp, size_t maxresplen,
                             size_t *nresp)
 {
   int rc;
-  unsigned char send_buffer[10+261+300], recv_buffer[10+261+300];
-  const unsigned char *apdu;
-  size_t apdulen;
-  unsigned char *msg;
+  unsigned char msg[CCID_MAX_BUF];
+  const unsigned char *apdu_p;
+  size_t apdu_part_len;
   size_t msglen;
   unsigned char seqno;
   int bwi = 4;
+  unsigned char chain = 0;
 
-  msg = send_buffer;
+  if (apdu_len == 0 || apdu_len > sizeof (msg) - 10)
+    return CCID_DRIVER_ERR_INV_VALUE; /* Invalid length. */
 
-  apdu = apdu_buf;
-  apdulen = apdu_buflen;
-  assert (apdulen);
+  apdu_p = apdu_buf;
+  while (1)
+    {
+      apdu_part_len = apdu_len;
+      if (apdu_part_len > handle->max_ccid_msglen - 10)
+        {
+          apdu_part_len = handle->max_ccid_msglen - 10;
+          chain |= 0x01;
+        }
 
-  /* The maximum length for a short APDU T=1 block is 261.  For an
-     extended APDU T=1 block the maximum length 65544; however
-     extended APDU exchange level is not fully supported yet.  */
-  if (apdulen > sizeof (send_buffer) - 10)
-    return CCID_DRIVER_ERR_INV_VALUE; /* Invalid length. */
+      msg[0] = PC_to_RDR_XfrBlock;
+      msg[5] = 0; /* slot */
+      msg[6] = seqno = handle->seqno++;
+      msg[7] = bwi;
+      msg[8] = chain;
+      msg[9] = 0;
+      memcpy (msg+10, apdu_p, apdu_part_len);
+      set_msg_len (msg, apdu_part_len);
+      msglen = 10 + apdu_part_len;
 
-  msg[0] = PC_to_RDR_XfrBlock;
-  msg[5] = 0; /* slot */
-  msg[6] = seqno = handle->seqno++;
-  msg[7] = bwi; /* bBWI */
-  msg[8] = 0; /* RFU */
-  msg[9] = 0; /* RFU */
-  memcpy (msg+10, apdu, apdulen);
-  set_msg_len (msg, apdulen);
-  msglen = 10 + apdulen;
+      rc = bulk_out (handle, msg, msglen, 0);
+      if (rc)
+        return rc;
 
-  rc = bulk_out (handle, msg, msglen, 0);
-  if (rc)
-    return rc;
+      apdu_p += apdu_part_len;
+      apdu_len -= apdu_part_len;
 
-  msg = recv_buffer;
-  rc = bulk_in (handle, msg, sizeof recv_buffer, &msglen,
-                RDR_to_PC_DataBlock, seqno, 5000, 0);
-  if (rc)
-    return rc;
+      rc = bulk_in (handle, msg, sizeof msg, &msglen,
+                    RDR_to_PC_DataBlock, seqno, 5000, 0);
+      if (rc)
+        return rc;
+
+      if (!(chain & 0x01))
+        break;
 
-  if (msg[9] == 1)
+      chain = 0x02;
+    }
+
+  apdu_len = 0;
+  while (1)
     {
-      size_t total_msglen = msglen;
+      apdu_part_len = msglen - 10;
+      if (resp && apdu_len + apdu_part_len <= maxresplen)
+        memcpy (resp + apdu_len, msg+10, apdu_part_len);
+      apdu_len += apdu_part_len;
 
-      while (1)
-        {
-          unsigned char status;
+      if (!(msg[9] & 0x01))
+        break;
 
-          msg = recv_buffer + total_msglen;
+      msg[0] = PC_to_RDR_XfrBlock;
+      msg[5] = 0; /* slot */
+      msg[6] = seqno = handle->seqno++;
+      msg[7] = bwi;
+      msg[8] = 0x10;                /* Request next data block */
+      msg[9] = 0;
+      set_msg_len (msg, 0);
+      msglen = 10;
 
-          msg[0] = PC_to_RDR_XfrBlock;
-          msg[5] = 0; /* slot */
-          msg[6] = seqno = handle->seqno++;
-          msg[7] = bwi; /* bBWI */
-          msg[8] = 0x10;                /* Request next data block */
-          msg[9] = 0;
-          set_msg_len (msg, 0);
-          msglen = 10;
-
-          rc = bulk_out (handle, msg, msglen, 0);
-          if (rc)
-            return rc;
-
-          rc = bulk_in (handle, msg, sizeof recv_buffer - total_msglen, &msglen,
-                        RDR_to_PC_DataBlock, seqno, 5000, 0);
-          if (rc)
-            return rc;
-          status = msg[9];
-          memmove (msg, msg+10, msglen - 10);
-          total_msglen += msglen - 10;
-          if (total_msglen >= sizeof recv_buffer)
-            return CCID_DRIVER_ERR_OUT_OF_CORE;
-
-          if (status == 0x02)
-            break;
-        }
+      rc = bulk_out (handle, msg, msglen, 0);
+      if (rc)
+        return rc;
 
-      apdu = recv_buffer + 10;
-      apdulen = total_msglen - 10;
-    }
-  else
-    {
-      apdu = msg + 10;
-      apdulen = msglen - 10;
+      rc = bulk_in (handle, msg, sizeof msg, &msglen,
+                    RDR_to_PC_DataBlock, seqno, 5000, 0);
+      if (rc)
+        return rc;
     }
 
   if (resp)
     {
-      if (apdulen > maxresplen)
+      if (apdu_len > maxresplen)
         {
           DEBUGOUT_2 ("provided buffer too short for received data "
                       "(%u/%u)\n",
-                      (unsigned int)apdulen, (unsigned int)maxresplen);
+                      (unsigned int)apdu_len, (unsigned int)maxresplen);
           return CCID_DRIVER_ERR_INV_VALUE;
         }
 
-      memcpy (resp, apdu, apdulen);
-      *nresp = apdulen;
+      *nresp = apdu_len;
     }
 
   return 0;
index 4dc44ee..b83e218 100644 (file)
@@ -406,8 +406,9 @@ static void
 handle_open (unsigned char *argbuf, size_t arglen)
 {
   long err;
-  const char * portstr;
+  const char *portstr;
   char *list = NULL;
+  char *rdrname = NULL;
   pcsc_dword_t nreader, atrlen;
   char *p;
   pcsc_dword_t card_state, card_protocol;
@@ -416,7 +417,10 @@ handle_open (unsigned char *argbuf, size_t arglen)
   /* Make sure there is only the port string */
   if (arglen != strlen ((char*)argbuf))
     bad_request ("OPEN");
-  portstr = (char*)argbuf;
+  if (arglen == 0)
+    portstr = NULL;
+  else
+    portstr = (char*)argbuf;
 
   if (driver_is_open)
     {
@@ -466,17 +470,21 @@ handle_open (unsigned char *argbuf, size_t arglen)
           fprintf (stderr, PGM": invalid response from pcsc_list_readers\n");
           break;
         }
+      if (!rdrname && portstr && !strncmp (p, portstr, strlen (portstr)))
+        rdrname = p;
       nreader -= strlen (p)+1;
       p += strlen (p) + 1;
     }
 
-  current_rdrname = malloc (strlen (portstr && *portstr? portstr:list)+1);
+  if (!rdrname)
+    rdrname = list;
+
+  current_rdrname = strdup (rdrname);
   if (!current_rdrname)
     {
       fprintf (stderr, PGM": error allocating memory for reader name\n");
       exit (1);
     }
-  strcpy (current_rdrname, portstr && *portstr? portstr:list);
   free (list);
 
   err = pcsc_connect (pcsc_context,
index c3f3165..ab8fbc8 100644 (file)
@@ -611,7 +611,7 @@ create_request (ctrl_t ctrl,
   if (err)
     return err;
 
-  rc = gcry_md_open (&md, GCRY_MD_SHA1, 0);
+  rc = gcry_md_open (&md, GCRY_MD_SHA256, 0);
   if (rc)
     {
       log_error ("md_open failed: %s\n", gpg_strerror (rc));
index 855de83..ef01a5c 100644 (file)
@@ -931,7 +931,7 @@ main ( int argc, char **argv)
 
   /* Note: If you change this default cipher algorithm , please
      remember to update the Gpgconflist entry as well.  */
-  opt.def_cipher_algoid = "3DES";  /*des-EDE3-CBC*/
+  opt.def_cipher_algoid = "AES";
 
   opt.homedir = default_homedir ();
 
@@ -1652,7 +1652,7 @@ main ( int argc, char **argv)
 #ifndef HAVE_W32_SYSTEM
         printf ("prefer-system-dirmngr:%lu:\n", GC_OPT_FLAG_NONE);
 #endif
-        printf ("cipher-algo:%lu:\"3DES:\n", GC_OPT_FLAG_DEFAULT);
+        printf ("cipher-algo:%lu:\"AES:\n", GC_OPT_FLAG_DEFAULT);
         printf ("p12-charset:%lu:\n", GC_OPT_FLAG_DEFAULT);
         printf ("default-key:%lu:\n", GC_OPT_FLAG_DEFAULT);
         printf ("encrypt-to:%lu:\n", GC_OPT_FLAG_DEFAULT);
index 4acda01..142bd30 100644 (file)
@@ -499,8 +499,8 @@ arithmetic_op (int operator, const char *operands)
      percent ARGS
      percent+ ARGS
            Escape the args using the percent style.  Tabs, formfeeds,
-           linefeeds and carriage returns are also escaped.
-           "percent+" also maps spaces to plus characters.
+           linefeeds, carriage return, and the plus sign are also
+           escaped.  "percent+" also maps spaces to plus characters.
 
      errcode ARG
            Assuming ARG is an integer, return the gpg-error code.
@@ -592,12 +592,12 @@ get_var_ext (const char *name)
   else if ( (s - name) == 7 && !strncmp (name, "percent", 7))
     {
       s++;
-      result = percent_escape (s, "\t\r\n\f\v");
+      result = percent_escape (s, "+\t\r\n\f\v");
     }
   else if ( (s - name) == 8 && !strncmp (name, "percent+", 8))
     {
       s++;
-      result = percent_escape (s, "\t\r\n\f\v");
+      result = percent_escape (s, "+\t\r\n\f\v");
       for (p=result; *p; p++)
         if (*p == ' ')
           *p = '+';
index 4993989..2454f93 100644 (file)
@@ -532,6 +532,9 @@ static gc_option_t gc_options_gpg_agent[] =
    { "ignore-cache-for-signing", GC_OPT_FLAG_RUNTIME,
      GC_LEVEL_BASIC, "gnupg", "do not use the PIN cache when signing",
      GC_ARG_TYPE_NONE, GC_BACKEND_GPG_AGENT },
+   { "no-allow-external-cache", GC_OPT_FLAG_RUNTIME,
+     GC_LEVEL_BASIC, "gnupg", "disallow the use of an external password cache",
+     GC_ARG_TYPE_NONE, GC_BACKEND_GPG_AGENT },
    { "no-allow-mark-trusted", GC_OPT_FLAG_RUNTIME,
      GC_LEVEL_ADVANCED, "gnupg", "disallow clients to mark keys as \"trusted\"",
      GC_ARG_TYPE_NONE, GC_BACKEND_GPG_AGENT },
index 736c7fc..b0d31e0 100644 (file)
@@ -73,7 +73,11 @@ extract_regular (estream_t stream, const char *dirname,
       if (err)
         goto leave;
       n++;
-      nbytes = (n < hdr->nrecords)? RECORDSIZE : (hdr->size % RECORDSIZE);
+      if (n < hdr->nrecords || (hdr->size && !(hdr->size % RECORDSIZE)))
+        nbytes = RECORDSIZE;
+      else
+        nbytes = (hdr->size % RECORDSIZE);
+
       nwritten = es_fwrite (record, 1, nbytes, outfp);
       if (nwritten != nbytes)
         {
index 8fbe3c2..7895e0b 100644 (file)
@@ -808,10 +808,12 @@ parse_field (HDR_LINE hdr)
   s++; /* Move over the colon. */
   for (;;)
     {
-      if (!*s)
+      while (!*s)
        {
          if (!hdr->next || !hdr->next->cont)
-           break;
+            return tok; /* Ready.  */
+
+          /* Next item is a header continuation line.  */
          hdr = hdr->next;
          s = hdr->line;
        }
@@ -824,10 +826,11 @@ parse_field (HDR_LINE hdr)
          invalid = 0;
          for (s++;; s++)
            {
-             if (!*s)
+             while (!*s)
                {
                  if (!hdr->next || !hdr->next->cont)
-                   break;
+                   goto oparen_out;
+                  /* Next item is a header continuation line.  */
                  hdr = hdr->next;
                  s = hdr->line;
                }
@@ -849,6 +852,7 @@ parse_field (HDR_LINE hdr)
              else if (*s == '\"')
                in_quote = 1;
            }
+        oparen_out:
          if (!*s)
            ; /* Actually this is an error, but we don't care about it. */
          else
@@ -880,6 +884,7 @@ parse_field (HDR_LINE hdr)
                    
              if (*s2 || !hdr->next || !hdr->next->cont)
                break;
+              /* Next item is a header continuation line.  */
              hdr = hdr->next;
              s = hdr->line;
            }
@@ -931,8 +936,7 @@ parse_field (HDR_LINE hdr)
          s++;
        }
     }
-
-  return tok;
+  /*NOTREACHED*/
 
  failure:
   {