Merge branch 'master' into key-storage-work
authorWerner Koch <wk@gnupg.org>
Tue, 12 Feb 2013 18:17:42 +0000 (19:17 +0100)
committerWerner Koch <wk@gnupg.org>
Tue, 12 Feb 2013 18:17:42 +0000 (19:17 +0100)
43 files changed:
NEWS
agent/agent.h
agent/call-pinentry.c
agent/call-scd.c
agent/command.c
agent/divert-scd.c
agent/protect.c
common/Makefile.am
common/agent-opt.c [new file with mode: 0644]
common/shareddefs.h [new file with mode: 0644]
common/status.h
configure.ac
doc/DETAILS
doc/gpg.texi
doc/help.ja.txt
doc/scdaemon.texi
g10/call-agent.c
g10/call-agent.h
g10/card-util.c
g10/gpg.c
g10/keydb.h
g10/main.h
g10/options.h
g10/passphrase.c
g10/pubkey-enc.c
g10/server.c
g10/sign.c
po/ja.po
scd/apdu.c
scd/apdu.h
scd/app-dinsig.c
scd/app-nks.c
scd/app-openpgp.c
scd/app.c
scd/ccid-driver.c
scd/ccid-driver.h
scd/command.c
scd/iso7816.c
scd/iso7816.h
scd/sc-copykeys.c
scd/scdaemon.c
scd/scdaemon.h
tools/gpgconf-comp.c

diff --git a/NEWS b/NEWS
index a8352ca..370d9c4 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,15 @@ Noteworthy changes in version 2.1.0beta4 (unreleased)
 
  * The hash algorithm is now printed for sig records in key listings.
 
+ * New option --pinentry-mode for GPG.
+
+ * New option --enable-pinpad-varlen for scdaemon.
+
+ * Rename option --disable-pinpad for scdaemon (was: --disable-keypad).
+
+ * Better support fo CCID readers.  Now, internal CCID driver supports
+   readers with no auto configuration feature.
+
 
 Noteworthy changes in version 2.1.0beta3 (2011-12-20)
 -----------------------------------------------------
index 45bc507..030b295 100644 (file)
@@ -34,6 +34,7 @@
 #include "../common/membuf.h"
 #include "../common/sysutils.h" /* (gnupg_fd_t) */
 #include "../common/session-env.h"
+#include "../common/shareddefs.h"
 
 /* To convey some special hash algorithms we use algorithm numbers
    reserved for application use. */
 #define MAX_DIGEST_LEN 64
 
 
-/* Values for the pinentry mode.  */
-typedef enum
-  {
-    PINENTRY_MODE_ASK = 0, /* Ask via pinentry (default).  */
-    PINENTRY_MODE_CANCEL,  /* Always return a cancel error.  */
-    PINENTRY_MODE_ERROR,   /* Return error code for no pinentry.  */
-    PINENTRY_MODE_LOOPBACK,/* Use an inquiry to get the value.    */
-  }
-pinentry_mode_t;
-
 
 /* A large struct name "opt" to keep global flags */
 struct
@@ -421,6 +412,8 @@ int divert_pkdecrypt (ctrl_t ctrl,
                       char **r_buf, size_t *r_len);
 int divert_generic_cmd (ctrl_t ctrl,
                         const char *cmdline, void *assuan_context);
+int divert_writekey (ctrl_t ctrl, int force, const char *serialno,
+                     const char *id, const char *keydata, size_t keydatalen);
 
 
 /*-- call-scd.c --*/
@@ -454,6 +447,11 @@ int agent_card_pkdecrypt (ctrl_t ctrl,
 int agent_card_readcert (ctrl_t ctrl,
                          const char *id, char **r_buf, size_t *r_buflen);
 int agent_card_readkey (ctrl_t ctrl, const char *id, unsigned char **r_buf);
+int agent_card_writekey (ctrl_t ctrl, int force, const char *serialno,
+                         const char *id, const char *keydata,
+                         size_t keydatalen,
+                         int (*getpin_cb)(void *, const char *, char*, size_t),
+                         void *getpin_cb_arg);
 gpg_error_t agent_card_getattr (ctrl_t ctrl, const char *name, char **result);
 int agent_card_scd (ctrl_t ctrl, const char *cmdline,
                     int (*getpin_cb)(void *, const char *, char*, size_t),
index c37831a..c6b6b52 100644 (file)
@@ -1266,9 +1266,9 @@ agent_popup_message_stop (ctrl_t ctrl)
 
   /* Now wait for the thread to terminate. */
   rc = npth_join (popup_tid, NULL);
-  if (!rc)
+  if (rc)
     log_debug ("agent_popup_message_stop: pth_join failed: %s\n",
-               strerror (errno));
+               strerror (rc));
   /* Thread IDs are opaque, but we try our best here by resetting it
      to the same content that a static global variable has.  */
   memset (&popup_tid, '\0', sizeof (popup_tid));
index 2bda377..cbe4d1c 100644 (file)
@@ -722,7 +722,7 @@ inq_needpin (void *opaque, const char *line)
         rc = assuan_send_data (parm->ctx, pin, pinlen);
       xfree (pin);
     }
-  else if (!strncmp (line, "POPUPKEYPADPROMPT", 17)
+  else if (!strncmp (line, "POPUPPINPADPROMPT", 17)
            && (line[17] == ' ' || !line[17]))
     {
       line += 17;
@@ -731,7 +731,7 @@ inq_needpin (void *opaque, const char *line)
 
       rc = parm->getpin_cb (parm->getpin_cb_arg, line, NULL, 1);
     }
-  else if (!strncmp (line, "DISMISSKEYPADPROMPT", 19)
+  else if (!strncmp (line, "DISMISSPINPADPROMPT", 19)
            && (line[19] == ' ' || !line[19]))
     {
       rc = parm->getpin_cb (parm->getpin_cb_arg, "", NULL, 0);
@@ -1050,6 +1050,64 @@ agent_card_readkey (ctrl_t ctrl, const char *id, unsigned char **r_buf)
 }
 
 
+struct writekey_parm_s
+{
+  assuan_context_t ctx;
+  int (*getpin_cb)(void *, const char *, char*, size_t);
+  void *getpin_cb_arg;
+  assuan_context_t passthru;
+  int any_inq_seen;
+  /**/
+  const unsigned char *keydata;
+  size_t keydatalen;
+};
+
+/* Handle a KEYDATA inquiry.  Note, we only send the data,
+   assuan_transact takes care of flushing and writing the end */
+static gpg_error_t
+inq_writekey_parms (void *opaque, const char *line)
+{
+  struct writekey_parm_s *parm = opaque;
+
+  if (!strncmp (line, "KEYDATA", 7) && (line[7]==' '||!line[7]))
+    return assuan_send_data (parm->ctx, parm->keydata, parm->keydatalen);
+  else
+    return inq_needpin (opaque, line);
+}
+
+
+int
+agent_card_writekey (ctrl_t ctrl,  int force, const char *serialno,
+                     const char *id, const char *keydata, size_t keydatalen,
+                     int (*getpin_cb)(void *, const char *, char*, size_t),
+                     void *getpin_cb_arg)
+{
+  int rc;
+  char line[ASSUAN_LINELENGTH];
+  struct writekey_parm_s parms;
+
+  (void)serialno;
+  rc = start_scd (ctrl);
+  if (rc)
+    return rc;
+
+  snprintf (line, DIM(line)-1, "WRITEKEY %s%s", force ? "--force " : "", id);
+  line[DIM(line)-1] = 0;
+  parms.ctx = ctrl->scd_local->ctx;
+  parms.getpin_cb = getpin_cb;
+  parms.getpin_cb_arg = getpin_cb_arg;
+  parms.passthru = 0;
+  parms.any_inq_seen = 0;
+  parms.keydata = keydata;
+  parms.keydatalen = keydatalen;
+
+  rc = assuan_transact (ctrl->scd_local->ctx, line, NULL, NULL,
+                        inq_writekey_parms, &parms, NULL, NULL);
+  if (parms.any_inq_seen && (gpg_err_code(rc) == GPG_ERR_CANCELED ||
+                             gpg_err_code(rc) == GPG_ERR_ASS_CANCELED))
+    rc = cancel_inquire (ctrl, rc);
+  return unlock_scd (ctrl, rc);
+}
 \f
 /* Type used with the card_getattr_cb.  */
 struct card_getattr_parm_s {
index 3ba921b..2844398 100644 (file)
@@ -2119,9 +2119,133 @@ cmd_export_key (assuan_context_t ctx, char *line)
 
   return leave_cmd (ctx, err);
 }
+\f
+static const char hlp_keytocard[] =
+  "KEYTOCARD [--force] <hexstring_with_keygrip> <serialno> <id> <timestamp>\n"
+  "\n";
+static gpg_error_t
+cmd_keytocard (assuan_context_t ctx, char *line)
+{
+  ctrl_t ctrl = assuan_get_pointer (ctx);
+  int force;
+  gpg_error_t err = 0;
+  unsigned char grip[20];
+  gcry_sexp_t s_skey = NULL;
+  gcry_sexp_t s_pkey = NULL;
+  unsigned char *keydata;
+  size_t keydatalen, timestamplen;
+  const char *serialno, *timestamp_str, *id;
+  unsigned char *shadow_info;
+  unsigned char *shdkey;
+  time_t timestamp;
+
+  force = has_option (line, "--force");
+  line = skip_options (line);
 
+  err = parse_keygrip (ctx, line, grip);
+  if (err)
+    return err;
 
+  if (agent_key_available (grip))
+    return gpg_error (GPG_ERR_NO_SECKEY);
+
+  line += 40;
+  while (*line && (*line == ' ' || *line == '\t'))
+    line++;
+  serialno = line;
+  while (*line && (*line != ' ' && *line != '\t'))
+    line++;
+  if (!*line)
+    return gpg_error (GPG_ERR_MISSING_VALUE);
+  *line = '\0';
+  line++;
+  while (*line && (*line == ' ' || *line == '\t'))
+    line++;
+  id = line;
+  while (*line && (*line != ' ' && *line != '\t'))
+    line++;
+  if (!*line)
+    return gpg_error (GPG_ERR_MISSING_VALUE);
+  *line = '\0';
+  line++;
+  while (*line && (*line == ' ' || *line == '\t'))
+    line++;
+  timestamp_str = line;
+  while (*line && (*line != ' ' && *line != '\t'))
+    line++;
+  if (*line)
+    *line = '\0';
+  timestamplen = line - timestamp_str;
+  if (timestamplen != 15)
+    return gpg_error (GPG_ERR_INV_VALUE);
 
+  err = agent_key_from_file (ctrl, NULL, ctrl->server_local->keydesc, grip,
+                             NULL, CACHE_MODE_IGNORE, NULL, &s_skey, NULL);
+  if (err)
+    return err;
+  if (!s_skey)
+    /* Key is on a smartcard already.  */
+    return gpg_error (GPG_ERR_UNUSABLE_SECKEY);
+
+  keydatalen =  gcry_sexp_sprint (s_skey, GCRYSEXP_FMT_CANON, NULL, 0);
+  keydata = xtrymalloc_secure (keydatalen + 30);
+  if (keydata == NULL)
+    {
+      gcry_sexp_release (s_skey);
+      return gpg_error_from_syserror ();
+    }
+
+  gcry_sexp_sprint (s_skey, GCRYSEXP_FMT_CANON, keydata, keydatalen);
+  gcry_sexp_release (s_skey);
+  /* Add timestamp "created-at" in the private key */
+  timestamp = isotime2epoch (timestamp_str);
+  snprintf (keydata+keydatalen-1, 30, "(10:created-at10:%010lu))", timestamp);
+  keydatalen += 10 + 19 - 1;
+  err = divert_writekey (ctrl, force, serialno, id, keydata, keydatalen);
+  if (err)
+    {
+      xfree (keydata);
+      goto leave;
+    }
+  xfree (keydata);
+
+  err = agent_public_key_from_file (ctrl, grip, &s_pkey);
+  if (err)
+    goto leave;
+
+  shadow_info = make_shadow_info (serialno, id);
+  if (!shadow_info)
+    {
+      err = gpg_error (GPG_ERR_ENOMEM);
+      gcry_sexp_release (s_pkey);
+      goto leave;
+    }
+  keydatalen = gcry_sexp_sprint (s_pkey, GCRYSEXP_FMT_CANON, NULL, 0);
+  keydata = xtrymalloc (keydatalen);
+  if (keydata == NULL)
+    {
+      err = gpg_error_from_syserror ();
+      gcry_sexp_release (s_pkey);
+      goto leave;
+    }
+  gcry_sexp_sprint (s_pkey, GCRYSEXP_FMT_CANON, keydata, keydatalen);
+  gcry_sexp_release (s_pkey);
+  err = agent_shadow_key (keydata, shadow_info, &shdkey);
+  xfree (keydata);
+  xfree (shadow_info);
+  if (err)
+    {
+      log_error ("shadowing the key failed: %s\n", gpg_strerror (err));
+      goto leave;
+    }
+
+  keydatalen = gcry_sexp_canon_len (shdkey, 0, NULL, NULL);
+  err = agent_write_private_key (grip, shdkey, keydatalen, 1);
+  xfree (shdkey);
+
+ leave:
+  return leave_cmd (ctx, err);
+}
 \f
 static const char hlp_getval[] =
   "GETVAL <key>\n"
@@ -2548,21 +2672,13 @@ option_handler (assuan_context_t ctx, const char *key, const char *value)
     ctrl->server_local->allow_pinentry_notify = 1;
   else if (!strcmp (key, "pinentry-mode"))
     {
-      if (!strcmp (value, "ask") || !strcmp (value, "default"))
-        ctrl->pinentry_mode = PINENTRY_MODE_ASK;
-      else if (!strcmp (value, "cancel"))
-        ctrl->pinentry_mode = PINENTRY_MODE_CANCEL;
-      else if (!strcmp (value, "error"))
-        ctrl->pinentry_mode = PINENTRY_MODE_ERROR;
-      else if (!strcmp (value, "loopback"))
-        {
-          if (opt.allow_loopback_pinentry)
-            ctrl->pinentry_mode = PINENTRY_MODE_LOOPBACK;
-          else
-            err = gpg_error (GPG_ERR_NOT_SUPPORTED);
-        }
-      else
+      int tmp = parse_pinentry_mode (value);
+      if (tmp == -1)
         err = gpg_error (GPG_ERR_INV_VALUE);
+      else if (tmp == PINENTRY_MODE_LOOPBACK && !opt.allow_loopback_pinentry)
+        err = gpg_error (GPG_ERR_NOT_SUPPORTED);
+      else
+        ctrl->pinentry_mode = tmp;
     }
   else if (!strcmp (key, "cache-ttl-opt-preset"))
     {
@@ -2682,6 +2798,7 @@ register_commands (assuan_context_t ctx)
     { "KILLAGENT",      cmd_killagent,  hlp_killagent },
     { "RELOADAGENT",    cmd_reloadagent,hlp_reloadagent },
     { "GETINFO",        cmd_getinfo,   hlp_getinfo },
+    { "KEYTOCARD",      cmd_keytocard, hlp_keytocard },
     { NULL }
   };
   int i, rc;
index 656d5cd..5fb037e 100644 (file)
@@ -223,7 +223,7 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
   else if (info && *info == '|')
     log_debug ("pin_cb called without proper PIN info hack\n");
 
-  /* If BUF has been passed as NULL, we are in keypad mode: The
+  /* If BUF has been passed as NULL, we are in pinpad mode: The
      callback opens the popup and immediatley returns. */
   if (!buf)
     {
@@ -239,7 +239,7 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
               char *desc;
 
               if ( asprintf (&desc,
-                             _("%s%%0A%%0AUse the reader's keypad for input."),
+                             _("%s%%0A%%0AUse the reader's pinpad for input."),
                              info) < 0 )
                 rc = gpg_error_from_syserror ();
               else
@@ -442,6 +442,13 @@ divert_pkdecrypt (ctrl_t ctrl,
   return rc;
 }
 
+int
+divert_writekey (ctrl_t ctrl, int force, const char *serialno,
+                 const char *id, const char *keydata, size_t keydatalen)
+{
+  return agent_card_writekey (ctrl, force, serialno, id, keydata, keydatalen,
+                              getpin_cb, ctrl);
+}
 
 int
 divert_generic_cmd (ctrl_t ctrl, const char *cmdline, void *assuan_context)
index d26573d..3e2cbb9 100644 (file)
@@ -1075,7 +1075,11 @@ hash_passphrase (const char *passphrase, int hashalgo,
                  unsigned long s2kcount,
                  unsigned char *key, size_t keylen)
 {
-
+  /* The key derive function does not support a zero length string for
+     the passphrase in the S2K modes.  Return a better suited error
+     code than GPG_ERR_INV_DATA.  */
+  if (!passphrase || !*passphrase)
+    return gpg_error (GPG_ERR_NO_PASSPHRASE);
   return gcry_kdf_derive (passphrase, strlen (passphrase),
                           s2kmode == 3? GCRY_KDF_ITERSALTED_S2K :
                           s2kmode == 1? GCRY_KDF_SALTED_S2K :
index e0f4b80..ff8fee3 100644 (file)
@@ -59,6 +59,7 @@ common_sources = \
        util.h i18n.c i18n.h \
        estream.c estream.h estream-printf.c estream-printf.h \
        status.c status.h\
+       shareddefs.h \
        openpgpdefs.h \
        gc-opt-flags.h \
        keyserver.h \
@@ -92,6 +93,7 @@ common_sources = \
        userids.c userids.h \
        openpgp-oid.c \
        ssh-utils.c ssh-utils.h \
+       agent-opt.c \
        helpfile.c
 
 # To make the code easier to read we have split home some code into
diff --git a/common/agent-opt.c b/common/agent-opt.c
new file mode 100644 (file)
index 0000000..4317ba3
--- /dev/null
@@ -0,0 +1,71 @@
+/* agent-opt.c - Helper for certain agent options
+ * Copyright (C) 2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GnuPG.
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of either
+ *
+ *   - the GNU Lesser General Public License as published by the Free
+ *     Software Foundation; either version 3 of the License, or (at
+ *     your option) any later version.
+ *
+ * or
+ *
+ *   - the GNU General Public License as published by the Free
+ *     Software Foundation; either version 2 of the License, or (at
+ *     your option) any later version.
+ *
+ * or both in parallel, as here.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "shareddefs.h"
+
+
+/* Parse VALUE and return an integer representing a pinentry_mode_t.
+   (-1) is returned for an invalid VALUE.  */
+int
+parse_pinentry_mode (const char *value)
+{
+  int result;
+
+  if (!strcmp (value, "ask") || !strcmp (value, "default"))
+    result = PINENTRY_MODE_ASK;
+  else if (!strcmp (value, "cancel"))
+    result = PINENTRY_MODE_CANCEL;
+  else if (!strcmp (value, "error"))
+    result = PINENTRY_MODE_ERROR;
+  else if (!strcmp (value, "loopback"))
+    result = PINENTRY_MODE_LOOPBACK;
+  else
+    result = -1;
+
+  return result;
+}
+
+/* Return the string representation for the pinentry MODE.  Returns
+   "?" for an invalid mode.  */
+const char *
+str_pinentry_mode (pinentry_mode_t mode)
+{
+  switch (mode)
+    {
+    case PINENTRY_MODE_ASK:      return "ask";
+    case PINENTRY_MODE_CANCEL:   return "cancel";
+    case PINENTRY_MODE_ERROR:    return "error";
+    case PINENTRY_MODE_LOOPBACK: return "loopback";
+    }
+ return "?";
+}
diff --git a/common/shareddefs.h b/common/shareddefs.h
new file mode 100644 (file)
index 0000000..604b7e9
--- /dev/null
@@ -0,0 +1,48 @@
+/* shareddefs.h - Constants and helpers useful for all modules
+ * Copyright (C) 2013 Free Software Foundation, Inc.
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of either
+ *
+ *   - the GNU Lesser General Public License as published by the Free
+ *     Software Foundation; either version 3 of the License, or (at
+ *     your option) any later version.
+ *
+ * or
+ *
+ *   - the GNU General Public License as published by the Free
+ *     Software Foundation; either version 2 of the License, or (at
+ *     your option) any later version.
+ *
+ * or both in parallel, as here.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GNUPG_COMMON_SHAREDDEFS_H
+#define GNUPG_COMMON_SHAREDDEFS_H
+
+/* Values for the pinentry mode.  */
+typedef enum
+  {
+    PINENTRY_MODE_ASK = 0, /* Ask via pinentry (default).  */
+    PINENTRY_MODE_CANCEL,  /* Always return a cancel error.  */
+    PINENTRY_MODE_ERROR,   /* Return error code for no pinentry.  */
+    PINENTRY_MODE_LOOPBACK /* Use an inquiry to get the value.    */
+  }
+pinentry_mode_t;
+
+
+/*-- agent-opt.c --*/
+int parse_pinentry_mode (const char *value);
+const char *str_pinentry_mode (pinentry_mode_t mode);
+
+
+
+#endif /*GNUPG_COMMON_SHAREDDEFS_H*/
index b6ac779..9219bf4 100644 (file)
@@ -84,8 +84,6 @@ enum
     STATUS_NOTATION_NAME,
     STATUS_NOTATION_DATA,
     STATUS_POLICY_URL,
-    STATUS_BEGIN_STREAM,
-    STATUS_END_STREAM,
     STATUS_KEY_CREATED,
     STATUS_USERID_HINT,
     STATUS_UNEXPECTED,
@@ -97,7 +95,6 @@ enum
     STATUS_ALREADY_SIGNED,
     STATUS_KEYEXPIRED,
     STATUS_KEYREVOKED,
-    STATUS_SIGEXPIRED,
     STATUS_EXPSIG,
     STATUS_EXPKEYSIG,
 
@@ -125,6 +122,8 @@ enum
     STATUS_TRUNCATED,
     STATUS_MOUNTPOINT,
 
+    STATUS_PINENTRY_LAUNCHED,
+
     STATUS_ERROR,
     STATUS_SUCCESS
 };
index db51121..5881df1 100644 (file)
@@ -1519,7 +1519,7 @@ fi
 build_scdaemon_extra=""
 if test "$build_scdaemon" = "yes"; then
   if test $have_libusb = no; then
-     build_scdaemon_extra="${tmp}without internal CCID driver"
+     build_scdaemon_extra="without internal CCID driver"
   fi
   if test -n "$build_scdaemon_extra"; then
      build_scdaemon_extra="(${build_scdaemon_extra})"
index 4e87394..a52979f 100644 (file)
@@ -1,11 +1,26 @@
-                                                              -*- text -*-
-Format of colon listings
-========================
-First an example:
-
+# doc/DETAILS                                                -*- org -*-
+#+TITLE: GnuPG Details
+# Globally disable superscripts and subscripts:
+#+OPTIONS: ^:{}
+#
+
+# Note: This file uses org-mode; it should be easy to read as plain
+# text but be aware of some markup peculiarities: Verbatim code is
+# enclosed in #+begin-example, #+end-example blocks or marked by a
+# colon as the first non-white-space character, words bracketed with
+# equal signs indicate a monospace font, and the usual /italics/,
+# *bold*, and _underline_ conventions are recognized.
+
+This is the DETAILS file for GnuPG which specifies some internals and
+parts of the external API for GPG and GPGSM.
+
+* Format of the colon listings
+  The format is a based on colon separated record, each recods starts
+  with a tag string and extends to the end of the line.  Here is an
+  example:
+#+begin_example
 $ gpg --with-colons --list-keys \
       --with-fingerprint --with-fingerprint wk@gnupg.org
-
 pub:f:1024:17:6C7EE1B8621CC013:899817715:1055898235::m:::scESC:
 fpr:::::::::ECAF7590EB3443B5C7CF3ACB6C7EE1B8621CC013:
 uid:f::::::::Werner Koch <wk@g10code.com>:
@@ -14,801 +29,884 @@ sub:f:1536:16:06AD222CADF6A6E1:919537416:1036177416:::::e:
 fpr:::::::::CF8BCC4B18DE08FCD8A1615906AD222CADF6A6E1:
 sub:r:1536:20:5CE086B5B5A18FF4:899817788:1025961788:::::esc:
 fpr:::::::::AB059359A3B81F410FCFF97F5CE086B5B5A18FF4:
+#+end_example
+
+The double =--with-fingerprint= prints the fingerprint for the subkeys
+too.  Old versions of gpg used a lighly different format and required
+the use of the option =--fixed-list-mode= to conform to format
+described here.
+
+** Description of the fields
+*** Field 1 - Type of record
+
+    - pub :: Public key
+    - crt :: X.509 certificate
+    - crs :: X.509 certificate and private key available
+    - sub :: Subkey (secondary key)
+    - sec :: Secret key
+    - ssb :: Secret subkey (secondary key)
+    - uid :: User id (only field 10 is used).
+    - uat :: User attribute (same as user id except for field 10).
+    - sig :: Signature
+    - rev :: Revocation signature
+    - fpr :: Fingerprint (fingerprint is in field 10)
+    - pkd :: Public key data [*]
+    - grp :: Keygrip
+    - rvk :: Revocation key
+    - tru :: Trust database information [*]
+    - spk :: Signature subpacket [*]
+    - cfg :: Configuration data [*]
+
+    Records marked with an asterisk are described at [[*Special%20field%20formats][*Special fields]].
+
+*** Field 2 - Validity
+
+    This is a letter describing the computed validity of a key.
+    Currently this is a single letter, but be prepared that additional
+    information may follow in some future versions. Note that GnuPG <
+    2.1 does not set this field for secret key listings.
+
+    - o :: Unknown (this key is new to the system)
+    - i :: The key is invalid (e.g. due to a missing self-signature)
+    - d :: The key has been disabled
+          (deprecated - use the 'D' in field 12 instead)
+    - r :: The key has been revoked
+    - e :: The key has expired
+    - - :: Unknown validity (i.e. no value assigned)
+    - q :: Undefined validity.  '-' and 'q' may safely be treated as
+           the same value for most purposes
+    - n :: The key is not valid
+    - m :: The key is marginal valid.
+    - f :: The key is fully valid
+    - u :: The key is ultimately valid.  This often means that the
+           secret key is available, but any key may be marked as
+           ultimately valid.
+    - w :: The key has a well known private part.
+    - s :: The key has special validity.  This means that it might be
+           self-signed and expected to be used in the STEED sytem.
+
+    If the validity information is given for a UID or UAT record, it
+    describes the validity calculated based on this user ID.  If given
+    for a key record it describes the validity taken from the best
+    rated user ID.
+
+    For X.509 certificates a 'u' is used for a trusted root
+    certificate (i.e. for the trust anchor) and an 'f' for all other
+    valid certificates.
+
+*** Field 3 - Key length
+
+    The length of key in bits.
+
+*** Field 4 - Public key algorithm
+
+    The values here are those from the OpenPGP specs or if they are
+    greather than 255 the algorithm ids as used by Libgcrypt.
+
+*** Field 5 - KeyID
+
+    This is the 64 bit keyid as specified by OpenPGP and the last 64
+    bit of the SHA-1 fingerprint of an X.509 certifciate.
+
+*** Field 6 - Creation date
+
+    The creation date of the key is given in UTC.  For UID and UAT
+    records, this is used for the self-signature date.  Note that the
+    date is usally printed in seconds since epoch, however, we are
+    migrating to an ISO 8601 format (e.g. "19660205T091500").  This is
+    currently only relevant for X.509.  A simple way to detect the new
+    format is to scan for the 'T'.  Note that old versions of gpg
+    without using the =--fixed-list-mode= option used a "yyyy-mm-tt"
+    format.
+
+*** Field 7 - Expiration date
+
+    Key or UID/UAT expiration date or empty if it does not expire.
+
+*** Field 8 - Certificate S/N, UID hash, trust signature info
+
+    Used for serial number in crt records.  For UID and UAT records,
+    this is a hash of the user ID contents used to represent that
+    exact user ID.  For trust signatures, this is the trust depth
+    seperated by the trust value by a space.
+
+*** Field 9 -  Ownertrust
+
+    This is only used on primary keys.  This is a single letter, but
+    be prepared that additional information may follow in future
+    versions.  For trust signatures with a regular expression, this is
+    the regular expression value, quoted as in field 10.
+
+*** Field 10 - User-ID
+    The value is quoted like a C string to avoid control characters
+    (the colon is quoted =\x3a=).  For a "pub" record this field is
+    not used on --fixed-list-mode.  A UAT record puts the attribute
+    subpacket count here, a space, and then the total attribute
+    subpacket size.  In gpgsm the issuer name comes here.  A FPR
+    record stores the fingerprint here.  The fingerprint of a
+    revocation key is stored here.
+*** Field 11 - Signature class
+
+    Signature class as per RFC-4880.  This is a 2 digit hexnumber
+    followed by either the letter 'x' for an exportable signature or
+    the letter 'l' for a local-only signature.  The class byte of an
+    revocation key is also given here, 'x' and 'l' is used the same
+    way.  This field if not used for X.509.
 
-The double --with-fingerprint prints the fingerprint for the subkeys
-too. --fixed-list-mode is the modern listing way printing dates in
-seconds since Epoch and does not merge the first userID with the pub
-record; gpg2 does this by default and the option is a dummy.
-
-
- 1. Field:  Type of record
-           pub = public key
-            crt = X.509 certificate
-            crs = X.509 certificate and private key available
-           sub = subkey (secondary key)
-           sec = secret key
-           ssb = secret subkey (secondary key)
-           uid = user id (only field 10 is used).
-           uat = user attribute (same as user id except for field 10).
-            sig = signature
-            rev = revocation signature
-           fpr = fingerprint: (fingerprint is in field 10)
-           pkd = public key data (special field format, see below)
-            grp = keygrip
-            rvk = revocation key
-            tru = trust database information
-            spk = signature subpacket
-
- 2. Field:  A letter describing the calculated validity. This is a single
-           letter, but be prepared that additional information may follow
-           in some future versions. (not used for secret keys)
-               o = Unknown (this key is new to the system)
-                i = The key is invalid (e.g. due to a missing self-signature)
-               d = The key has been disabled
-                   (deprecated - use the 'D' in field 12 instead)
-               r = The key has been revoked
-               e = The key has expired
-               - = Unknown validity (i.e. no value assigned)
-               q = Undefined validity
-                   '-' and 'q' may safely be treated as the same
-                   value for most purposes
-               n = The key is not valid
-               m = The key is marginal valid.
-               f = The key is fully valid
-               u = The key is ultimately valid.  This often means
-                   that the secret key is available, but any key may
-                   be marked as ultimately valid.
-                w = The key has a well known private part.
-                s = The key has special validity.  This means that it
-                    might be self-signed and expected to be used in
-                    the STEED sytem.
-
-            If the validity information is given for a UID or UAT
-            record, it describes the validity calculated based on this
-            user ID.  If given for a key record it describes the best
-            validity taken from the best rated user ID.
-
-            For X.509 certificates a 'u' is used for a trusted root
-            certificate (i.e. for the trust anchor) and an 'f' for all
-            other valid certificates.
-
- 3. Field:  length of key in bits.
-
- 4. Field:  Algorithm: 1 = RSA
-                      16 = Elgamal (encrypt only)
-                      17 = DSA (sometimes called DH, sign only)
-                      20 = Elgamal (sign and encrypt - don't use them!)
-           (for other id's see include/cipher.h)
-
- 5. Field:  KeyID
-
- 6. Field:  Creation Date (in UTC).  For UID and UAT records, this is
-            the self-signature date.  Note that the date is usally
-            printed in seconds since epoch, however, we are migrating
-            to an ISO 8601 format (e.g. "19660205T091500").  This is
-            currently only relevant for X.509.  A simple way to detect
-            the new format is to scan for the 'T'.
-
- 7. Field:  Key or user ID/user attribute expiration date or empty if none.
-
- 8. Field:  Used for serial number in crt records (used to be the Local-ID).
-            For UID and UAT records, this is a hash of the user ID contents
-            used to represent that exact user ID.  For trust signatures,
-            this is the trust depth seperated by the trust value by a
-            space.
-
- 9. Field:  Ownertrust (primary public keys only)
-           This is a single letter, but be prepared that additional
-           information may follow in some future versions.  For trust
-           signatures with a regular expression, this is the regular
-           expression value, quoted as in field 10.
-
-10. Field:  User-ID.  The value is quoted like a C string to avoid
-           control characters (the colon is quoted "\x3a").
-            For a "pub" record this field is not used on --fixed-list-mode.
-            A UAT record puts the attribute subpacket count here, a
-           space, and then the total attribute subpacket size.
-            In gpgsm the issuer name comes here
-            An FPR record stores the fingerprint here.
-            The fingerprint of an revocation key is stored here.
-
-11. Field:  Signature class as per RFC-4880.  This is a 2 digit
-            hexnumber followed by either the letter 'x' for an
-            exportable signature or the letter 'l' for a local-only
-            signature.  The class byte of an revocation key is also
-            given here, 'x' and 'l' is used the same way.  IT is not
-            used for X.509.
-
-12. Field:  Key capabilities:
-                e = encrypt
-                s = sign
-                c = certify
-                a = authentication
-           A key may have any combination of them in any order.  In
-           addition to these letters, the primary key has uppercase
-           versions of the letters to denote the _usable_
-           capabilities of the entire key, and a potential letter 'D'
-           to indicate a disabled key.
-
-13. Field:  Used in FPR records for S/MIME keys to store the
-            fingerprint of the issuer certificate.  This is useful to
-            build the certificate path based on certificates stored in
-            the local keyDB; it is only filled if the issuer
-            certificate is available. The root has been reached if
-            this is the same string as the fingerprint. The advantage
-            of using this value is that it is guaranteed to have been
-            been build by the same lookup algorithm as gpgsm uses.
-            For "uid" records this lists the preferences in the same
-            way the gpg's --edit-key menu does.
-           For "sig" records, this is the fingerprint of the key that
-           issued the signature.  Note that this is only filled in if
-           the signature verified correctly.  Note also that for
-           various technical reasons, this fingerprint is only
-           available if --no-sig-cache is used.
-
-14. Field   Flag field used in the --edit menu output:
-
-15. Field   Used in sec/sbb to print the serial number of a token
-            (internal protect mode 1002) or a '#' if that key is a
-            simple stub (internal protect mode 1001)
-16. Field:  For sig records, this is the used hash algorithm:
-                2 = SHA-1
-                8 = SHA-256
-           (for other id's see include/cipher.h)
-
-All dates are displayed in the format yyyy-mm-dd unless you use the
-option --fixed-list-mode in which case they are displayed as seconds
-since Epoch.  More fields may be added later, so parsers should be
-prepared for this. When parsing a number the parser should stop at the
-first non-number character so that additional information can later be
-added.
-
-If field 1 has the tag "pkd", a listing looks like this:
-pkd:0:1024:B665B1435F4C2 .... FF26ABB:
-    !  !   !-- the value
-    !  !------ for information number of bits in the value
-    !--------- index (eg. DSA goes from 0 to 3: p,q,g,y)
-
-
-Example for a "tru" trust base record:
-
-   tru:o:0:1166697654:1:3:1:5
-
- The fields are:
-
- 2: Reason for staleness of trust.  If this field is empty, then the
-    trustdb is not stale.  This field may have multiple flags in it:
-
-    o: Trustdb is old
-    t: Trustdb was built with a different trust model than the one we
-       are using now.
-
- 3: Trust model:
-    0: Classic trust model, as used in PGP 2.x.
-    1: PGP trust model, as used in PGP 6 and later.  This is the same
-       as the classic trust model, except for the addition of trust
-       signatures.
-
-    GnuPG before version 1.4 used the classic trust model by default.
-    GnuPG 1.4 and later uses the PGP trust model by default.
-
- 4: Date trustdb was created in seconds since 1970-01-01.
- 5: Date trustdb will expire in seconds since 1970-01-01.
- 6: Number of marginally trusted users to introduce a new key signer
-    (gpg's option --marginals-needed)
- 7: Number of completely trusted users to introduce a new key signer.
-    (gpg's option --completes-needed)
- 8: Maximum depth of a certification chain.
-    *gpg's option --max-cert-depth)
-
-The "spk" signature subpacket records have the fields:
-
- 2: Subpacket number as per RFC-4880 and later.
- 3: Flags in hex.  Currently the only two bits assigned are 1, to
-    indicate that the subpacket came from the hashed part of the
-    signature, and 2, to indicate the subpacket was marked critical.
- 4: Length of the subpacket.  Note that this is the length of the
-    subpacket, and not the length of field 5 below.  Due to the need
-    for %-encoding, the length of field 5 may be up to 3x this value.
- 5: The subpacket data.  Printable ASCII is shown as ASCII, but other
-    values are rendered as %XX where XX is the hex value for the byte.
-
-
-Format of the "--status-fd" output
-==================================
-Every line is prefixed with "[GNUPG:] ", followed by a keyword with
-the type of the status line and a some arguments depending on the
-type (maybe none); an application should always be prepared to see
-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.
-
-    GOODSIG  <long_keyid_or_fpr>  <username>
-       The signature with the keyid is good.  For each signature only
-        one of the codes GOODSIG, BADSIG, EXPSIG, EXPKEYSIG, REVKEYSIG
-        or ERRSIG will be emitted.  In the past they were used as a
-        marker for a new signature; new code should use the NEWSIG
-        status instead.  The username is the primary one encoded in
-        UTF-8 and %XX escaped. The fingerprint may be used instead of
-        the long keyid if it is available.  This is the case with CMS
-        and might eventually also be available for OpenPGP.
-
-    EXPSIG  <long_keyid_or_fpr>  <username>
-       The signature with the keyid is good, but the signature is
-       expired. The username is the primary one encoded in UTF-8 and
-       %XX escaped. The fingerprint may be used instead of the long
-       keyid if it is available.  This is the case with CMS and might
-       eventually also be available for OpenPGP.
-
-    EXPKEYSIG  <long_keyid_or_fpr> <username>
-        The signature with the keyid is good, but the signature was
-       made by an expired key. The username is the primary one
-       encoded in UTF-8 and %XX escaped.  The fingerprint may be used
-       instead of the long keyid if it is available.  This is the
-       case with CMS and might eventually also be available for
-       OpenPGP.
-
-    REVKEYSIG  <long_keyid_or_fpr>  <username>
-       The signature with the keyid is good, but the signature was
-       made by a revoked key. The username is the primary one encoded
-       in UTF-8 and %XX escaped. The fingerprint may be used instead
-       of the long keyid if it is available.  This is the case with
-       CMS and might eventually also be available for OpenPGP.
-
-    BADSIG  <long_keyid_or_fpr>  <username>
-       The signature with the keyid has not been verified okay.  The
-        username is the primary one encoded in UTF-8 and %XX
-        escaped. The fingerprint may be used instead of the long keyid
-        if it is available.  This is the case with CMS and might
-        eventually also be available for OpenPGP.
-
-    ERRSIG  <long_keyid_or_fpr>  <pubkey_algo> <hash_algo> \
-           <sig_class> <timestamp> <rc>
-       It was not possible to check the signature.  This may be
-       caused by a missing public key or an unsupported algorithm.  A
-       RC of 4 indicates unknown algorithm, a 9 indicates a missing
-       public key. The other fields give more information about this
-       signature.  sig_class is a 2 byte hex-value.  The fingerprint
-       may be used instead of the long keyid if it is available.
-       This is the case with CMS and might eventually also be
-       available for OpenPGP.
-
-        Note, that TIMESTAMP may either be a number with seconds since
-        epoch or an ISO 8601 string which can be detected by the
-        presence of the letter 'T' inside.
-
-    VALIDSIG   <fingerprint in hex> <sig_creation_date> <sig-timestamp>
-               <expire-timestamp>  <sig-version> <reserved> <pubkey-algo>
-               <hash-algo> <sig-class> [ <primary-key-fpr> ]
-
-       The signature with the keyid is good. This is the same as
-       GOODSIG but has the fingerprint as the argument. Both status
-       lines are emitted for a good signature.  All arguments here
-       are on one long line.  sig-timestamp is the signature creation
-       time in seconds after the epoch. expire-timestamp is the
-       signature expiration time in seconds after the epoch (zero
-       means "does not expire"). sig-version, pubkey-algo, hash-algo,
-       and sig-class (a 2-byte hex value) are all straight from the
-       signature packet.  PRIMARY-KEY-FPR is the fingerprint of the
-       primary key or identical to the first argument.  This is
-       useful to get back to the primary key without running gpg
-       again for this purpose.
-
-        The primary-key-fpr parameter is used for OpenPGP and not
-        available for CMS signatures.  The sig-version as well as the
-        sig class is not defined for CMS and currently set to 0 and 00.
-
-        Note, that *-TIMESTAMP may either be a number with seconds
-        since epoch or an ISO 8601 string which can be detected by the
-        presence of the letter 'T' inside.
-
-    SIG_ID  <radix64_string>  <sig_creation_date>  <sig-timestamp>
-       This is emitted only for signatures of class 0 or 1 which
-       have been verified okay.  The string is a signature id
-       and may be used in applications to detect replay attacks
-       of signed messages.  Note that only DLP algorithms give
-       unique ids - others may yield duplicated ones when they
-       have been created in the same second.
-
-        Note, that SIG-TIMESTAMP may either be a number with seconds
-        since epoch or an ISO 8601 string which can be detected by the
-        presence of the letter 'T' inside.
-
-    ENC_TO  <long_keyid>  <keytype>  <keylength>
-       The message is encrypted to this LONG_KEYID.  KEYTYPE is the
-       numerical value of the public key algorithm or 0 if it is not
-       known, KEYLENGTH is the length of the key or 0 if it is not
-       known (which is currently always the case).  Gpg prints this
-       line always; Gpgsm only if it knows the certificate.
-
-    NODATA  <what>
-       No data has been found. Codes for what are:
-           1 - No armored data.
-           2 - Expected a packet but did not found one.
-           3 - Invalid packet found, this may indicate a non OpenPGP
-                message.
-            4 - signature expected but not found
-       You may see more than one of these status lines.
-
-    UNEXPECTED <what>
-        Unexpected data has been encountered
-            0 - not further specified
-
-
-    TRUST_UNDEFINED <error token>
-    TRUST_NEVER     <error token>
-    TRUST_MARGINAL  [0  [<validation_model>]]
-    TRUST_FULLY     [0  [<validation_model>]]
-    TRUST_ULTIMATE  [0  [<validation_model>]]
-       For good signatures one of these status lines are emitted to
-       indicate the validity of the key used to create the signature.
-       The error token values are currently only emitted by gpgsm.
-       VALIDATION_MODEL describes the algorithm used to check the
-       validity of the key.  The defaults are the standard Web of
-       Trust model for gpg and the the standard X.509 model for
-       gpgsm.  The defined values are
-
-           "pgp"   for the standard PGP WoT.
-          "shell" for the standard X.509 model.
-          "chain" for the chain model.
-           "steed" for the STEED model.
-
-        Note that we use the term "TRUST_" in the status names for
-        historic reasons; we now speak of validity.
-
-    PKA_TRUST_GOOD <mailbox>
-    PKA_TRUST_BAD  <mailbox>
-        Depending on the outcome of the PKA check one of the above
-        status codes is emitted in addition to a TRUST_* status.
-        Without PKA info available or
-
-    KEYEXPIRED <expire-timestamp>
-       The key has expired.  expire-timestamp is the expiration time
-       in seconds since Epoch.  This status line is not very useful
-       because it will also be emitted for expired subkeys even if
-       this subkey is not used.  To check whether a key used to sign
-       a message has expired, the EXPKEYSIG status line is to be
-       used.
-
-        Note, that TIMESTAMP may either be a number with seconds since
-        epoch or an ISO 8601 string which can be detected by the
-        presence of the letter 'T' inside.
-
-    KEYREVOKED
-       The used key has been revoked by its owner.  No arguments yet.
-
-    BADARMOR
-       The ASCII armor is corrupted.  No arguments yet.
-
-    RSA_OR_IDEA
-       Obsolete.  This status message used to be emitted for requests
-        to use the IDEA or RSA algorithms.  It has been dropped from
-        GnuPG 2.1 after the respective patents expired.
-
-    SHM_INFO
-    SHM_GET
-    SHM_GET_BOOL
-    SHM_GET_HIDDEN
-
-    GET_BOOL
-    GET_LINE
-    GET_HIDDEN
-    GOT_IT
-
-    NEED_PASSPHRASE <long main keyid> <long keyid> <keytype> <keylength>
-       Issued whenever a passphrase is needed.
-       keytype is the numerical value of the public key algorithm
-       or 0 if this is not applicable, keylength is the length
-       of the key or 0 if it is not known (this is currently always the case).
-
-    NEED_PASSPHRASE_SYM <cipher_algo> <s2k_mode> <s2k_hash>
-       Issued whenever a passphrase for symmetric encryption is needed.
-
-    NEED_PASSPHRASE_PIN <card_type> <chvno> [<serialno>]
-        Issued whenever a PIN is requested to unlock a card.
-
-    MISSING_PASSPHRASE
-       No passphrase was supplied.  An application which encounters this
-       message may want to stop parsing immediately because the next message
-       will probably be a BAD_PASSPHRASE.  However, if the application
-       is a wrapper around the key edit menu functionality it might not
-       make sense to stop parsing but simply ignoring the following
-       BAD_PASSPHRASE.
-
-    BAD_PASSPHRASE <long keyid>
-       The supplied passphrase was wrong or not given.  In the latter case
-       you may have seen a MISSING_PASSPHRASE.
-
-    GOOD_PASSPHRASE
-       The supplied passphrase was good and the secret key material
-       is therefore usable.
-
-    NO_PUBKEY  <long keyid>
-    NO_SECKEY  <long keyid>
-       The key is not available
-
-    IMPORT_CHECK <long keyid> <fingerprint> <user ID>
-        This status is emitted in interactive mode right before
-        the "import.okay" prompt.
-
-    IMPORTED   <long keyid>  <username>
-       The keyid and name of the signature just imported
-
-    IMPORT_OK  <reason> [<fingerprint>]
-        The key with the primary key's FINGERPRINT has been imported.
-        Reason flags:
-          0 := Not actually changed
-          1 := Entirely new key.
-          2 := New user IDs
-          4 := New signatures
-          8 := New subkeys
-         16 := Contains private key.
-        The flags may be ORed.
-
-    IMPORT_PROBLEM <reason> [<fingerprint>]
-        Issued for each import failure.  Reason codes are:
-          0 := "No specific reason given".
-          1 := "Invalid Certificate".
-          2 := "Issuer Certificate missing".
-          3 := "Certificate Chain too long".
-          4 := "Error storing certificate".
-
-    IMPORT_RES <count> <no_user_id> <imported> <imported_rsa> <unchanged>
-       <n_uids> <n_subk> <n_sigs> <n_revoc> <sec_read> <sec_imported>
-        <sec_dups> <skipped_new_keys> <not_imported>
-       Final statistics on import process (this is one long line)
-
-    FILE_START <what> <filename>
-       Start processing a file <filename>.  <what> indicates the performed
-       operation:
-           1 - verify
-            2 - encrypt
-            3 - decrypt
-
-    FILE_DONE
-       Marks the end of a file processing which has been started
-       by FILE_START.
-
-    BEGIN_DECRYPTION
-    END_DECRYPTION
-       Mark the start and end of the actual decryption process.  These
-       are also emitted when in --list-only mode.
-
-    DECRYPTION_INFO <mdc_method> <sym_algo>
-        Print information about the symmetric encryption algorithm and
-        the MDC method.  This will be emitted even if the decryption
-        fails.
-
-    DECRYPTION_FAILED
-       The symmetric decryption failed - one reason could be a wrong
-       passphrase for a symmetrical encrypted message.
-
-    DECRYPTION_OKAY
-       The decryption process succeeded.  This means, that either the
-       correct secret key has been used or the correct passphrase
-       for a conventional encrypted message was given.  The program
-       itself may return an errorcode because it may not be possible to
-       verify a signature for some reasons.
-
-    BEGIN_ENCRYPTION  <mdc_method> <sym_algo>
-    END_ENCRYPTION
-       Mark the start and end of the actual encryption process.
-
-    BEGIN_SIGNING
-       Mark the start of the actual signing process. This may be used
-       as an indication that all requested secret keys are ready for
-       use.
-
-    DELETE_PROBLEM reason_code
-       Deleting a key failed.  Reason codes are:
-           1 - No such key
-           2 - Must delete secret key first
-            3 - Ambigious specification
-
-    PROGRESS what char cur total
-       Used by the primegen and Public key functions to indicate progress.
-       "char" is the character displayed with no --status-fd enabled, with
-       the linefeed replaced by an 'X'.  "cur" is the current amount
-       done and "total" is amount to be done; a "total" of 0 indicates that
-       the total amount is not known.  The condition
-           TOATL && CUR == TOTAL
-        may be used to detect the end of an operation.
-        Well known values for WHAT:
-             "pk_dsa"   - DSA key generation
-             "pk_elg"   - Elgamal key generation
-             "primegen" - Prime generation
-             "need_entropy" - Waiting for new entropy in the RNG
-             "file:XXX" - processing file XXX
-                          (note that current gpg versions leave out the
-                           "file:" prefix).
-             "tick"     - generic tick without any special meaning - useful
-                          for letting clients know that the server is
-                          still working.
-             "starting_agent" - A gpg-agent was started because it is not
-                          running as a daemon.
-             "learncard"  Send by the agent and gpgsm while learing
-                         the data of a smartcard.
-             "card_busy"  A smartcard is still working
-
-    SIG_CREATED <type> <pubkey algo> <hash algo> <class> <timestamp> <key fpr>
-       A signature has been created using these parameters.
-           type:  'D' = detached
-                  'C' = cleartext
-                  'S' = standard
-                  (only the first character should be checked)
-           class: 2 hex digits with the signature class
-
-        Note, that TIMESTAMP may either be a number with seconds since
-        epoch or an ISO 8601 string which can be detected by the
-        presence of the letter 'T' inside.
-
-    KEY_CREATED <type> <fingerprint> [<handle>]
-        A key has been created
-            type: 'B' = primary and subkey
-                  'P' = primary
-                  'S' = subkey
-        The fingerprint is one of the primary key for type B and P and
-        the one of the subkey for S.  Handle is an arbitrary
-        non-whitespace string used to match key parameters from batch
-        key creation run.
-
-    KEY_NOT_CREATED [<handle>]
-        The key from batch run has not been created due to errors.
-
-
-    SESSION_KEY  <algo>:<hexdigits>
-       The session key used to decrypt the message.  This message will
-       only be emitted when the special option --show-session-key
-       is used.  The format is suitable to be passed to the option
-       --override-session-key
-
-    NOTATION_NAME <name>
-    NOTATION_DATA <string>
-        name and string are %XX escaped; the data may be split
-        among several NOTATION_DATA lines.
-
-    USERID_HINT <long main keyid> <string>
-        Give a hint about the user ID for a certain keyID.
-
-    POLICY_URL <string>
-        string is %XX escaped
-
-    BEGIN_STREAM
-    END_STREAM
-        Issued by pipemode.
-
-    INV_RECP <reason> <requested_recipient>
-    INV_SGNR <reason> <requested_sender>
-        Issued for each unusable recipient/sender. The reasons codes
-        currently in use are:
-          0 := "No specific reason given".
-          1 := "Not Found"
-          2 := "Ambigious specification"
-          3 := "Wrong key usage"
-          4 := "Key revoked"
-          5 := "Key expired"
-          6 := "No CRL known"
-          7 := "CRL too old"
-          8 := "Policy mismatch"
-          9 := "Not a secret key"
-        10 := "Key not trusted"
-         11 := "Missing certificate"
-         12 := "Missing issuer certificate"
-
-        Note that for historical reasons the INV_RECP status is also
-        used for gpgsm's SIGNER command where it relates to signer's
-        of course.  Newer GnuPG versions are using INV_SGNR;
-        applications should ignore the INV_RECP during the sender's
-        command processing once they have seen an INV_SGNR.  We use
-        different code so that we can distinguish them while doing an
-        encrypt+sign.
-
-
-    NO_RECP <reserved>
-    NO_SGNR <reserved>
-        Issued when no recipients/senders are usable.
-
-    ALREADY_SIGNED <long-keyid>
-        Warning: This is experimental and might be removed at any time.
-
-    TRUNCATED <maxno>
-        The output was truncated to MAXNO items.  This status code is issued
-        for certain external requests
-
-    ERROR <error location> <error code> [<more>]
-
-        This is a generic error status message, it might be followed
-        by error location specific data. <error code> and
-        <error_location> should not contain spaces.  The error code is
-        a either a string commencing with a letter or such a string
-        prefixed with a numerical error code and an underscore; e.g.:
-        "151011327_EOF".
-
-    SUCCESS [<location>]
-        Postive confirimation that an operation succeeded.  <location>
-        is optional but if given should not contain spaces.
-        Used only with a few commands.
-
-
-    ATTRIBUTE <fpr> <octets> <type> <index> <count>
-             <timestamp> <expiredate> <flags>
-       This is one long line issued for each attribute subpacket when
-       an attribute packet is seen during key listing.  <fpr> is the
-       fingerprint of the key. <octets> is the length of the
-       attribute subpacket. <type> is the attribute type
-       (1==image). <index>/<count> indicates that this is the Nth
-       indexed subpacket of count total subpackets in this attribute
-       packet.  <timestamp> and <expiredate> are from the
-       self-signature on the attribute packet.  If the attribute
-       packet does not have a valid self-signature, then the
-       timestamp is 0.  <flags> are a bitwise OR of:
-               0x01 = this attribute packet is a primary uid
-               0x02 = this attribute packet is revoked
-               0x04 = this attribute packet is expired
-
-    CARDCTRL <what> [<serialno>]
-        This is used to control smartcard operations.
-        Defined values for WHAT are:
-           1 = Request insertion of a card.  Serialnumber may be given
-               to request a specific card.  Used by gpg 1.4 w/o scdaemon.
-           2 = Request removal of a card.  Used by gpg 1.4 w/o scdaemon.
-           3 = Card with serialnumber detected
-           4 = No card available.
-           5 = No card reader available
-           6 = No card support available
-
-    PLAINTEXT <format> <timestamp> <filename>
-        This indicates the format of the plaintext that is about to be
-        written.  The format is a 1 byte hex code that shows the
-        format of the plaintext: 62 ('b') is binary data, 74 ('t') is
-        text data with no character set specified, and 75 ('u') is
-        text data encoded in the UTF-8 character set.  The timestamp
-        is in seconds since the epoch.  If a filename is available it
-        gets printed as the third argument, percent-escaped as usual.
-
-    PLAINTEXT_LENGTH <length>
-        This indicates the length of the plaintext that is about to be
-        written.  Note that if the plaintext packet has partial length
-        encoding it is not possible to know the length ahead of time.
-        In that case, this status tag does not appear.
-
-    SIG_SUBPACKET <type> <flags> <len> <data>
-        This indicates that a signature subpacket was seen.  The
-        format is the same as the "spk" record above.
-
-    SC_OP_FAILURE [<code>]
-        An operation on a smartcard definitely failed.  Currently
-        there is no indication of the actual error code, but
-        application should be prepared to later accept more arguments.
-        Defined values for CODE are:
-           0 - unspecified error (identically to a missing CODE)
-           1 - canceled
-           2 - bad PIN
-
-    SC_OP_SUCCESS
-        A smart card operaion succeeded.  This status is only printed
-        for certain operation and is mostly useful to check whether a
-        PIN change really worked.
-
-    BACKUP_KEY_CREATED fingerprint fname
-        A backup key named FNAME has been created for the key with
-        KEYID.
-
-    MOUNTPOINT <name>
-        NAME is a percent-plus escaped filename describing the
-        mountpoint for the current operation (e.g. g13 --mount).  This
-        may either be the specified mountpoint or one randomly choosen
-        by g13.
-
-
-Status lines which are not anymore used:
-
-    SIGEXPIRED removed on 2011-02-04.
-       This is deprecated in favor of KEYEXPIRED.
-
-
-
-
-Format of the "--attribute-fd" output
-=====================================
-
-When --attribute-fd is set, during key listings (--list-keys,
---list-secret-keys) GnuPG dumps each attribute packet to the file
-descriptor specified.  --attribute-fd is intended for use with
---status-fd as part of the required information is carried on the
-ATTRIBUTE status tag (see above).
-
-The contents of the attribute data is specified by RFC 4880.  For
-convenience, here is the Photo ID format, as it is currently the only
-attribute defined:
-
-   Byte 0-1:  The length of the image header.  Due to a historical
-              accident (i.e. oops!) back in the NAI PGP days, this is
-              a little-endian number.  Currently 16 (0x10 0x00).
-
-   Byte 2:    The image header version.  Currently 0x01.
+*** Field 12 - Key capabilities
 
-   Byte 3:    Encoding format.  0x01 == JPEG.
+    The defined capabilities are:
 
-   Byte 4-15: Reserved, and currently unused.
+    - e :: Encrypt
+    - s :: Sign
+    - c :: Certify
+    - a :: Authentication
 
-   All other data after this header is raw image (JPEG) data.
+    A key may have any combination of them in any order.  In addition
+    to these letters, the primary key has uppercase versions of the
+    letters to denote the _usable_ capabilities of the entire key, and
+    a potential letter 'D' to indicate a disabled key.
 
+*** Field 13 - Issuer certificate fingerprint or other info
 
-Format of the "--list-config" output
-====================================
+    Used in FPR records for S/MIME keys to store the fingerprint of
+    the issuer certificate.  This is useful to build the certificate
+    path based on certificates stored in the local key database it is
+    only filled if the issuer certificate is available. The root has
+    been reached if this is the same string as the fingerprint. The
+    advantage of using this value is that it is guaranteed to have
+    been been build by the same lookup algorithm as gpgsm uses.
 
---list-config outputs information about the GnuPG configuration for
-the benefit of frontends or other programs that call GnuPG.  There are
-several list-config items, all colon delimited like the rest of the
---with-colons output.  The first field is always "cfg" to indicate
-configuration information.  The second field is one of (with
-examples):
+    For "uid" records this field lists the preferences in the same way
+    gpg's --edit-key menu does.
 
-version: the third field contains the version of GnuPG.
+    For "sig" records, this is the fingerprint of the key that issued
+    the signature.  Note that this is only filled in if the signature
+    verified correctly.  Note also that for various technical reasons,
+    this fingerprint is only available if --no-sig-cache is used.
 
-   cfg:version:1.3.5
+*** Field 14 - Flag field
 
-pubkey: the third field contains the public key algorithmdcaiphers
-       this version of GnuPG supports, separated by semicolons.  The
-       algorithm numbers are as specified in RFC-4880.  Note that in
-       contrast to the --status-fd interface these are _not_ the
-       Libgcrypt identifiers.
+    Flag field used in the --edit menu output
 
-   cfg:pubkey:1;2;3;16;17
+*** Field 15 - S/N of a token
 
-cipher: the third field contains the symmetric ciphers this version of
-       GnuPG supports, separated by semicolons.  The cipher numbers
-       are as specified in RFC-4880.
+    Used in sec/sbb to print the serial number of a token (internal
+    protect mode 1002) or a '#' if that key is a simple stub (internal
+    protect mode 1001)
 
-   cfg:cipher:2;3;4;7;8;9;10
+*** Field 16 - Hash algorithm
 
-digest: the third field contains the digest (hash) algorithms this
-       version of GnuPG supports, separated by semicolons.  The
-       digest numbers are as specified in RFC-4880.
+    For sig records, this is the used hash algorithm.  For example:
+    2 = SHA-1, 8 = SHA-256.
 
-   cfg:digest:1;2;3;8;9;10
+** Special fields
 
-compress: the third field contains the compression algorithms this
-         version of GnuPG supports, separated by semicolons.  The
-         algorithm numbers are as specified in RFC-4880.
-
-   cfg:compress:0;1;2;3
-
-group: the third field contains the name of the group, and the fourth
-       field contains the values that the group expands to, separated
-       by semicolons.
-
-For example, a group of:
-   group mynames = paige 0x12345678 joe patti
-
-would result in:
-   cfg:group:mynames:patti;joe;0x12345678;paige
-
-
-Key generation
-==============
-See the Libcrypt manual.
+*** PKD - Public key data
 
+    If field 1 has the tag "pkd", a listing looks like this:
+#+begin_example
+pkd:0:1024:B665B1435F4C2 .... FF26ABB:
+    !  !   !-- the value
+    !  !------ for information number of bits in the value
+    !--------- index (eg. DSA goes from 0 to 3: p,q,g,y)
+#+end_example
 
-Unattended key generation
-=========================
-The the manual for a description.
+*** TRU - Trust database information
+    Example for a "tru" trust base record:
+#+begin_example
+    tru:o:0:1166697654:1:3:1:5
+#+end_example
 
+    - Field 2 :: Reason for staleness of trust.  If this field is
+                 empty, then the trustdb is not stale.  This field may
+                 have multiple flags in it:
 
-Layout of the TrustDB
-=====================
-The TrustDB is built from fixed length records, where the first byte
-describes the record type.  All numeric values are stored in network
-byte order. The length of each record is 40 bytes. The first record of
-the DB is always of type 1 and this is the only record of this type.
+                 - o :: Trustdb is old
+                 - t :: Trustdb was built with a different trust model
+                        than the one we are using now.
 
-FIXME:  The layout changed, document it here.
+    - Field 3 :: Trust model
 
+                 - 0 :: Classic trust model, as used in PGP 2.x.
+                 - 1 :: PGP trust model, as used in PGP 6 and later.
+                        This is the same as the classic trust model,
+                        except for the addition of trust signatures.
+
+                 GnuPG before version 1.4 used the classic trust model
+                 by default. GnuPG 1.4 and later uses the PGP trust
+                 model by default.
+
+    - Field 4 :: Date trustdb was created in seconds since Epoch.
+    - Field 5 :: Date trustdb will expire in seconds since Epoch.
+    - Field 6 :: Number of marginally trusted users to introduce a new
+                 key signer (gpg's option --marginals-needed).
+    - Field 7 :: Number of completely trusted users to introduce a new
+                 key signer.  (gpg's option --completes-needed)
+
+    - Field 8 :: Maximum depth of a certification chain. (gpg's option
+                 --max-cert-depth)
+
+*** SPK - Signature subpacket records
+
+    - Field 2 :: Subpacket number as per RFC-4880 and later.
+    - Field 3 :: Flags in hex.  Currently the only two bits assigned
+                 are 1, to indicate that the subpacket came from the
+                 hashed part of the signature, and 2, to indicate the
+                 subpacket was marked critical.
+    - Field 4 :: Length of the subpacket.  Note that this is the
+                 length of the subpacket, and not the length of field
+                 5 below.  Due to the need for %-encoding, the length
+                 of field 5 may be up to 3x this value.
+    - Field 5 :: The subpacket data.  Printable ASCII is shown as
+                 ASCII, but other values are rendered as %XX where XX
+                 is the hex value for the byte.
+
+*** CFG - Configuration data
+
+    --list-config outputs information about the GnuPG configuration
+    for the benefit of frontends or other programs that call GnuPG.
+    There are several list-config items, all colon delimited like the
+    rest of the --with-colons output.  The first field is always "cfg"
+    to indicate configuration information.  The second field is one of
+    (with examples):
+
+    - version :: The third field contains the version of GnuPG.
+
+                 : cfg:version:1.3.5
+
+    - pubkey :: The third field contains the public key algorithms
+                this version of GnuPG supports, separated by
+                semicolons.  The algorithm numbers are as specified in
+                RFC-4880.  Note that in contrast to the --status-fd
+                interface these are _not_ the Libgcrypt identifiers.
+
+                 : cfg:pubkey:1;2;3;16;17
+
+    - cipher :: The third field contains the symmetric ciphers this
+                version of GnuPG supports, separated by semicolons.
+                The cipher numbers are as specified in RFC-4880.
+
+                 : cfg:cipher:2;3;4;7;8;9;10
+
+    - digest :: The third field contains the digest (hash) algorithms
+                this version of GnuPG supports, separated by
+                semicolons.  The digest numbers are as specified in
+                RFC-4880.
+
+                 : cfg:digest:1;2;3;8;9;10
+
+    - compress :: The third field contains the compression algorithms
+                  this version of GnuPG supports, separated by
+                  semicolons.  The algorithm numbers are as specified
+                  in RFC-4880.
+
+                 : cfg:compress:0;1;2;3
+
+    - group :: The third field contains the name of the group, and the
+               fourth field contains the values that the group expands
+               to, separated by semicolons.
+
+               For example, a group of:
+                 : group mynames = paige 0x12345678 joe patti
+               would result in:
+                 : cfg:group:mynames:patti;joe;0x12345678;paige
+
+
+* Format of the --status-fd output
+
+  Every line is prefixed with "[GNUPG:] ", followed by a keyword with
+  the type of the status line and some arguments depending on the type
+  (maybe none); an application should always be prepared to see more
+  arguments in future versions.
+
+** General status codes
+*** 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.
+
+*** GOODSIG  <long_keyid_or_fpr>  <username>
+    The signature with the keyid is good.  For each signature only one
+    of the codes GOODSIG, BADSIG, EXPSIG, EXPKEYSIG, REVKEYSIG or
+    ERRSIG will be emitted.  In the past they were used as a marker
+    for a new signature; new code should use the NEWSIG status
+    instead.  The username is the primary one encoded in UTF-8 and %XX
+    escaped. The fingerprint may be used instead of the long keyid if
+    it is available.  This is the case with CMS and might eventually
+    also be available for OpenPGP.
+
+*** EXPSIG  <long_keyid_or_fpr>  <username>
+    The signature with the keyid is good, but the signature is
+    expired. The username is the primary one encoded in UTF-8 and %XX
+    escaped. The fingerprint may be used instead of the long keyid if
+    it is available.  This is the case with CMS and might eventually
+    also be available for OpenPGP.
+
+*** EXPKEYSIG  <long_keyid_or_fpr> <username>
+    The signature with the keyid is good, but the signature was made
+    by an expired key. The username is the primary one encoded in
+    UTF-8 and %XX escaped.  The fingerprint may be used instead of the
+    long keyid if it is available.  This is the case with CMS and
+    might eventually also be available for OpenPGP.
+
+*** REVKEYSIG  <long_keyid_or_fpr>  <username>
+    The signature with the keyid is good, but the signature was made
+    by a revoked key. The username is the primary one encoded in UTF-8
+    and %XX escaped. The fingerprint may be used instead of the long
+    keyid if it is available.  This is the case with CMS and might
+    eventually also beñ available for OpenPGP.
+
+*** BADSIG  <long_keyid_or_fpr>  <username>
+    The signature with the keyid has not been verified okay.  The
+    username is the primary one encoded in UTF-8 and %XX escaped. The
+    fingerprint may be used instead of the long keyid if it is
+    available.  This is the case with CMS and might eventually also be
+    available for OpenPGP.
+
+*** ERRSIG  <keyid>  <pkalgo> <hashalgo> <sig_class> <time> <rc>
+    It was not possible to check the signature.  This may be caused by
+    a missing public key or an unsupported algorithm.  A RC of 4
+    indicates unknown algorithm, a 9 indicates a missing public
+    key. The other fields give more information about this signature.
+    sig_class is a 2 byte hex-value.  The fingerprint may be used
+    instead of the keyid if it is available.  This is the case with
+    gpgsm and might eventually also be available for OpenPGP.
+
+    Note, that TIME may either be the number of seconds since Epoch or
+    the letter 'T'.
+    an ISO 8601 string.  The latter can be detected by the presence of
+
+*** VALIDSIG <args>
+
+    The args are:
+
+    - <fingerprint_in_hex>
+    - <sig_creation_date>
+    - <sig-timestamp>
+    - <expire-timestamp>
+    - <sig-version>
+    - <reserved>
+    - <pubkey-algo>
+    - <hash-algo>
+    - <sig-class>
+    - [ <primary-key-fpr> ]
+
+    This status indicates that the signature is good. This is the same
+    as GOODSIG but has the fingerprint as the argument. Both status
+    lines are emitted for a good signature.  All arguments here are on
+    one long line.  sig-timestamp is the signature creation time in
+    seconds after the epoch. expire-timestamp is the signature
+    expiration time in seconds after the epoch (zero means "does not
+    expire"). sig-version, pubkey-algo, hash-algo, and sig-class (a
+    2-byte hex value) are all straight from the signature packet.
+    PRIMARY-KEY-FPR is the fingerprint of the primary key or identical
+    to the first argument.  This is useful to get back to the primary
+    key without running gpg again for this purpose.
+
+    The primary-key-fpr parameter is used for OpenPGP and not
+    class is not defined for CMS and currently set to 0 and 00.
+    available for CMS signatures.  The sig-version as well as the sig
+
+    Note, that *-TIMESTAMP may either be a number of seconds since
+    Epoch or an ISO 8601 string which can be detected by the presence
+    of the letter 'T'.
+
+*** SIG_ID  <radix64_string>  <sig_creation_date>  <sig-timestamp>
+    This is emitted only for signatures of class 0 or 1 which have
+    been verified okay.  The string is a signature id and may be used
+    in applications to detect replay attacks of signed messages.  Note
+    that only DLP algorithms give unique ids - others may yield
+    duplicated ones when they have been created in the same second.
+
+    Note, that SIG-TIMESTAMP may either be a number of seconds since
+    Epoch or an ISO 8601 string which can be detected by the presence
+    of the letter 'T'.
+
+*** ENC_TO  <long_keyid>  <keytype>  <keylength>
+    The message is encrypted to this LONG_KEYID.  KEYTYPE is the
+    numerical value of the public key algorithm or 0 if it is not
+    known, KEYLENGTH is the length of the key or 0 if it is not known
+    (which is currently always the case).  Gpg prints this line
+    always; Gpgsm only if it knows the certificate.
+
+*** BEGIN_DECRYPTION
+    Mark the start of the actual decryption process.  This is also
+    emitted when in --list-only mode.
+*** END_DECRYPTION
+    Mark the end of the actual decryption process.  This are also
+    emitted when in --list-only mode.
+*** DECRYPTION_INFO <mdc_method> <sym_algo>
+    Print information about the symmetric encryption algorithm and the
+    MDC method.  This will be emitted even if the decryption fails.
+
+*** DECRYPTION_FAILED
+    The symmetric decryption failed - one reason could be a wrong
+    passphrase for a symmetrical encrypted message.
+
+*** DECRYPTION_OKAY
+    The decryption process succeeded.  This means, that either the
+    correct secret key has been used or the correct passphrase for a
+    conventional encrypted message was given.  The program itself may
+    return an errorcode because it may not be possible to verify a
+    signature for some reasons.
+
+*** SESSION_KEY <algo>:<hexdigits>
+    The session key used to decrypt the message.  This message will
+    only be emitted when the special option --show-session-key is
+    used.  The format is suitable to be passed to the option
+    --override-session-key
+
+*** BEGIN_ENCRYPTION  <mdc_method> <sym_algo>
+    Mark the start of the actual encryption process.
+
+*** END_ENCRYPTION
+    Mark the end of the actual encryption process.
+
+*** FILE_START <what> <filename>
+    Start processing a file <filename>.  <what> indicates the performed
+    operation:
+    - 1 :: verify
+    - 2 :: encrypt
+    - 3 :: decrypt
+
+*** FILE_DONE
+    Marks the end of a file processing which has been started
+    by FILE_START.
+
+*** BEGIN_SIGNING
+    Mark the start of the actual signing process. This may be used as
+    an indication that all requested secret keys are ready for use.
+
+*** ALREADY_SIGNED <long-keyid>
+    Warning: This is experimental and might be removed at any time.
+
+*** SIG_CREATED <type> <pk_algo> <hash_algo> <class> <timestamp> <keyfpr>
+    A signature has been created using these parameters.
+    Values for type <type> are:
+      - D :: detached
+      - C :: cleartext
+      - S :: standard
+    (only the first character should be checked)
+
+    <class> are 2 hex digits with the OpenPGP signature class.
+
+    Note, that TIMESTAMP may either be a number of seconds since Epoch
+    or an ISO 8601 string which can be detected by the presence of the
+    letter 'T'.
+
+*** NOTATION_
+    There are actually two related status codes to convey notation
+    data:
+
+    - NOTATION_NAME <name>
+    - NOTATION_DATA <string>
+
+    <name> and <string> are %XX escaped; the data may be split among
+    several NOTATION_DATA lines.
+
+*** POLICY_URL <string>
+    Note that URL in <string> is %XX escaped.
+
+*** PLAINTEXT <format> <timestamp> <filename>
+    This indicates the format of the plaintext that is about to be
+    written.  The format is a 1 byte hex code that shows the format of
+    the plaintext: 62 ('b') is binary data, 74 ('t') is text data with
+    no character set specified, and 75 ('u') is text data encoded in
+    the UTF-8 character set.  The timestamp is in seconds since the
+    epoch.  If a filename is available it gets printed as the third
+    argument, percent-escaped as usual.
+
+*** PLAINTEXT_LENGTH <length>
+    This indicates the length of the plaintext that is about to be
+    written.  Note that if the plaintext packet has partial length
+    encoding it is not possible to know the length ahead of time.  In
+    that case, this status tag does not appear.
+
+*** ATTRIBUTE <arguments>
+    The list or argemnts are:
+    - <fpr>
+    - <octets>
+    - <type>
+    - <index>
+    - <count>
+    - <timestamp>
+    - <expiredate>
+    - <flags>
+
+    This is one long line issued for each attribute subpacket when an
+    attribute packet is seen during key listing.  <fpr> is the
+    fingerprint of the key.  <octets> is the length of the attribute
+    subpacket.  <type> is the attribute type (e.g. 1 for an image).
+    <index> and <count> indicate that this is the N-th indexed
+    subpacket of count total subpackets in this attribute packet.
+    <timestamp> and <expiredate> are from the self-signature on the
+    attribute packet.  If the attribute packet does not have a valid
+    self-signature, then the timestamp is 0.  <flags> are a bitwise OR
+    of:
+    - 0x01 :: this attribute packet is a primary uid
+    - 0x02 :: this attribute packet is revoked
+    - 0x04 :: this attribute packet is expired
+
+*** SIG_SUBPACKET <type> <flags> <len> <data>
+    This indicates that a signature subpacket was seen.  The format is
+    the same as the "spk" record above.
+
+** Key related
+*** INV_RECP, INV_SGNR
+    The two similar status codes:
+
+    - INV_RECP <reason> <requested_recipient>
+    - INV_SGNR <reason> <requested_sender>
+
+    are issued for each unusable recipient/sender. The reasons codes
+    currently in use are:
+
+       -  0 :: No specific reason given
+       -  1 :: Not Found
+       -  2 :: Ambigious specification
+       -  3 :: Wrong key usage
+       -  4 :: Key revoked
+       -  5 :: Key expired
+       -  6 :: No CRL known
+       -  7 :: CRL too old
+       -  8 :: Policy mismatch
+       -  9 :: Not a secret key
+       - 10 :: Key not trusted
+       - 11 :: Missing certificate
+       - 12 :: Missing issuer certificate
+
+    Note that for historical reasons the INV_RECP status is also used
+    for gpgsm's SIGNER command where it relates to signer's of course.
+    Newer GnuPG versions are using INV_SGNR; applications should
+    ignore the INV_RECP during the sender's command processing once
+    they have seen an INV_SGNR.  Different codes are used so that they
+    can be distinguish while doing an encrypt+sign operation.
+*** NO_RECP <reserved>
+    Issued if no recipients are usable.
+
+*** NO_SGNR <reserved>
+    Issued if no senders are usable.
+
+*** KEYEXPIRED <expire-timestamp>
+    The key has expired.  expire-timestamp is the expiration time in
+    seconds since Epoch.  This status line is not very useful because
+    it will also be emitted for expired subkeys even if this subkey is
+    not used.  To check whether a key used to sign a message has
+    expired, the EXPKEYSIG status line is to be used.
+
+    Note, that the TIMESTAMP may either be a number of seconds since
+    Epoch or an ISO 8601 string which can be detected by the presence
+    of the letter 'T'.
+
+*** KEYREVOKED
+    The used key has been revoked by its owner.  No arguments yet.
+
+*** NO_PUBKEY  <long keyid>
+    The public key is not available
+
+*** NO_SECKEY  <long keyid>
+    The secret key is not available
+
+*** KEY_CREATED <type> <fingerprint> [<handle>]
+    A key has been created.  Values for <type> are:
+      - B :: primary and subkey
+      - P :: primary
+      - S :: subkey
+    The fingerprint is one of the primary key for type B and P and the
+    one of the subkey for S.  Handle is an arbitrary non-whitespace
+    string used to match key parameters from batch key creation run.
+
+*** KEY_NOT_CREATED [<handle>]
+    The key from batch run has not been created due to errors.
+
+*** TRUST_
+    These are several similar status codes:
+
+    - TRUST_UNDEFINED <error_token>
+    - TRUST_NEVER     <error_token>
+    - TRUST_MARGINAL  [0  [<validation_model>]]
+    - TRUST_FULLY     [0  [<validation_model>]]
+    - TRUST_ULTIMATE  [0  [<validation_model>]]
+
+    For good signatures one of these status lines are emitted to
+    indicate the validity of the key used to create the signature.
+    The error token values are currently only emitted by gpgsm.
+
+    VALIDATION_MODEL describes the algorithm used to check the
+    validity of the key.  The defaults are the standard Web of Trust
+    model for gpg and the the standard X.509 model for gpgsm.  The
+    defined values are
+
+       - pgp   :: The standard PGP WoT.
+       - shell :: The standard X.509 model.
+       - chain :: The chain model.
+       - steed :: The STEED model.
+
+    Note that the term =TRUST_= in the status names is used for
+    historic reasons; we now speak of validity.
+
+*** PKA_TRUST_
+    This is is one:
+
+    - PKA_TRUST_GOOD <mailbox>
+    - PKA_TRUST_BAD  <mailbox>
+
+    Depending on the outcome of the PKA check one of the above status
+    codes is emitted in addition to a =TRUST_*= status.
+
+** Remote control
+*** GET_BOOL, GET_LINE, GET_HIDDEN, GOT_IT
+
+    These status line are used with --command-fd for interactive
+    control of the process.
+
+*** USERID_HINT <long main keyid> <string>
+    Give a hint about the user ID for a certain keyID.
+
+*** NEED_PASSPHRASE <long keyid> <long main keyid> <keytype> <keylength>
+    Issued whenever a passphrase is needed.  KEYTYPE is the numerical
+    value of the public key algorithm or 0 if this is not applicable,
+    KEYLENGTH is the length of the key or 0 if it is not known (this
+    is currently always the case).
+
+*** NEED_PASSPHRASE_SYM <cipher_algo> <s2k_mode> <s2k_hash>
+    Issued whenever a passphrase for symmetric encryption is needed.
+
+*** NEED_PASSPHRASE_PIN <card_type> <chvno> [<serialno>]
+    Issued whenever a PIN is requested to unlock a card.
+
+*** MISSING_PASSPHRASE
+    No passphrase was supplied.  An application which encounters this
+    message may want to stop parsing immediately because the next
+    message will probably be a BAD_PASSPHRASE.  However, if the
+    application is a wrapper around the key edit menu functionality it
+    might not make sense to stop parsing but simply ignoring the
+    following BAD_PASSPHRASE.
+
+*** BAD_PASSPHRASE <long keyid>
+    The supplied passphrase was wrong or not given.  In the latter
+    case you may have seen a MISSING_PASSPHRASE.
+
+*** GOOD_PASSPHRASE
+    The supplied passphrase was good and the secret key material
+    is therefore usable.
+
+** Import/Export
+*** IMPORT_CHECK <long keyid> <fingerprint> <user ID>
+    This status is emitted in interactive mode right before
+    the "import.okay" prompt.
+
+*** IMPORTED   <long keyid>  <username>
+    The keyid and name of the signature just imported
+
+*** IMPORT_OK  <reason> [<fingerprint>]
+    The key with the primary key's FINGERPRINT has been imported.
+    REASON flags are:
+
+    - 0 :: Not actually changed
+    - 1 :: Entirely new key.
+    - 2 :: New user IDs
+    - 4 :: New signatures
+    - 8 :: New subkeys
+    - 16 :: Contains private key.
+
+    The flags may be ORed.
+
+*** IMPORT_PROBLEM <reason> [<fingerprint>]
+    Issued for each import failure.  Reason codes are:
+
+    - 0 :: No specific reason given.
+    - 1 :: Invalid Certificate.
+    - 2 :: Issuer Certificate missing.
+    - 3 :: Certificate Chain too long.
+    - 4 :: Error storing certificate.
+
+*** IMPORT_RES <args>
+    Final statistics on import process (this is one long line). The
+    args are a list of unsigned numbers separated by white space:
+
+    - <count>
+    - <no_user_id>
+    - <imported>
+    - <imported_rsa>
+    - <unchanged>
+    - <n_uids>
+    - <n_subk>
+    - <n_sigs>
+    - <n_revoc>
+    - <sec_read>
+    - <sec_imported>
+    - <sec_dups>
+    - <skipped_new_keys>
+    - <not_imported>
+
+** Smartcard related
+*** CARDCTRL <what> [<serialno>]
+    This is used to control smartcard operations.  Defined values for
+    WHAT are:
+
+      - 1 :: Request insertion of a card.  Serialnumber may be given
+             to request a specific card.  Used by gpg 1.4 w/o
+             scdaemon
+      - 2 :: Request removal of a card.  Used by gpg 1.4 w/o scdaemon.
+      - 3 :: Card with serialnumber detected
+      - 4 :: No card available
+      - 5 :: No card reader available
+      - 6 :: No card support available
+
+*** SC_OP_FAILURE [<code>]
+    An operation on a smartcard definitely failed.  Currently there is
+    no indication of the actual error code, but application should be
+    prepared to later accept more arguments.  Defined values for
+    <code> are:
+
+      - 0 :: unspecified error (identically to a missing CODE)
+      - 1 :: canceled
+      - 2 :: bad PIN
+
+*** SC_OP_SUCCESS
+    A smart card operaion succeeded.  This status is only printed for
+    certain operation and is mostly useful to check whether a PIN
+    change really worked.
+
+** Miscellaneous status codes
+*** NODATA  <what>
+    No data has been found.  Codes for WHAT are:
+
+    - 1 :: No armored data.
+    - 2 :: Expected a packet but did not found one.
+    - 3 :: Invalid packet found, this may indicate a non OpenPGP
+           message.
+    - 4 :: Signature expected but not found
+
+    You may see more than one of these status lines.
+
+*** UNEXPECTED <what>
+    Unexpected data has been encountered.  Codes for WHAT are:
+    - 0 :: Not further specified
+
+*** TRUNCATED <maxno>
+    The output was truncated to MAXNO items.  This status code is
+    issued for certain external requests.
+
+*** ERROR <error location> <error code> [<more>]
+    This is a generic error status message, it might be followed by
+    error location specific data. <error code> and <error_location>
+    should not contain spaces.  The error code is a either a string
+    commencing with a letter or such a string prefixed with a
+    numerical error code and an underscore; e.g.: "151011327_EOF".
+
+*** SUCCESS [<location>]
+    Postive confirimation that an operation succeeded.  <location> is
+    optional but if given should not contain spaces.  Used only with a
+    few commands.
+
+*** BADARMOR
+    The ASCII armor is corrupted.  No arguments yet.
+
+*** DELETE_PROBLEM <reason_code>
+    Deleting a key failed.  Reason codes are:
+    - 1 :: No such key
+    - 2 :: Must delete secret key first
+    - 3 :: Ambigious specification
+
+*** PROGRESS <what> <char> <cur> <total>
+    Used by the primegen and Public key functions to indicate
+    progress.  <char> is the character displayed with no --status-fd
+    enabled, with the linefeed replaced by an 'X'.  <cur> is the
+    current amount done and <total> is amount to be done; a <total> of
+    0 indicates that the total amount is not known. The condition
+      :       TOTAL && CUR == TOTAL
+    may be used to detect the end of an operation.
+
+    Well known values for WHAT are:
+
+           - pk_dsa   :: DSA key generation
+           - pk_elg   :: Elgamal key generation
+           - primegen :: Prime generation
+           - need_entropy :: Waiting for new entropy in the RNG
+           - tick :: Generic tick without any special meaning - useful
+                     for letting clients know that the server is still
+                     working.
+           - starting_agent :: A gpg-agent was started because it is not
+                                running as a daemon.
+           - learncard :: Send by the agent and gpgsm while learing
+                          the data of a smartcard.
+           - card_busy :: A smartcard is still working
+
+*** BACKUP_KEY_CREATED <fingerprint> <fname>
+    A backup of a key identified by <fingerprint> has been writte to
+    the file <fname>; <fname> is percent-escaped.
+
+*** MOUNTPOINT <name>
+    <name> is a percent-plus escaped filename describing the
+    mountpoint for the current operation (e.g. used by "g13 --mount").
+    This may either be the specified mountpoint or one randomly
+    choosen by g13.
+
+*** PINENTRY_LAUNCHED <pid>
+    This status line is emitted by gpg to notify a client that a
+    Pinentry has been launched.  <pid> is the PID of the Pinentry.  It
+    may be used to display a hint to the user but can't be used to
+    synchronize with Pinentry.  Note that there is also an Assuan
+    inquiry line with the same name used internally or, if enabled,
+    send to the client instead of this status line.  Such an inquiry
+    may be used to sync with Pinentry
+
+** Obsolete status codes
+*** SIGEXPIRED
+    Removed on 2011-02-04.  This is deprecated in favor of KEYEXPIRED.
+*** RSA_OR_IDEA
+    Obsolete.  This status message used to be emitted for requests to
+    use the IDEA or RSA algorithms.  It has been dropped from GnuPG
+    2.1 after the respective patents expired.
+*** SHM_INFO, SHM_GET, SHM_GET_BOOL, SHM_GET_HIDDEN
+    These were used for the ancient shared memory based co-processing.
+*** BEGIN_STREAM, END_STREAM
+    Used to issued by the experimental pipemode.
+
+
+* Format of the --attribute-fd output
+
+  When --attribute-fd is set, during key listings (--list-keys,
+  --list-secret-keys) GnuPG dumps each attribute packet to the file
+  descriptor specified.  --attribute-fd is intended for use with
+  --status-fd as part of the required information is carried on the
+  ATTRIBUTE status tag (see above).
+
+  The contents of the attribute data is specified by RFC 4880.  For
+  convenience, here is the Photo ID format, as it is currently the
+  only attribute defined:
+
+  - Byte 0-1 :: The length of the image header.  Due to a historical
+                accident (i.e. oops!) back in the NAI PGP days, this
+                is a little-endian number.  Currently 16 (0x10 0x00).
+
+  - Byte 2 :: The image header version.  Currently 0x01.
+
+  - Byte 3 :: Encoding format.  0x01 == JPEG.
+
+  - Byte 4-15 :: Reserved, and currently unused.
+
+  All other data after this header is raw image (JPEG) data.
+
+
+* Unattended key generation
+
+   Please see the GnuPG manual for a description.
+
+
+* Layout of the TrustDB
+
+  The TrustDB is built from fixed length records, where the first byte
+  describes the record type.  All numeric values are stored in network
+  byte order. The length of each record is 40 bytes. The first record
+  of the DB is always of type 1 and this is the only record of this
+  type.
+
+  FIXME:  The layout changed, document it here.
+#+begin_example
   Record type 0:
   --------------
     Unused record, can be reused for any purpose.
@@ -1008,119 +1106,119 @@ FIXME:  The layout changed, document it here.
      1 byte  value 254
      1 byte  reserved (0)
      1 u32   next_free
+#+end_example
 
 
+* GNU extensions to the S2K algorithm
 
-GNU extensions to the S2K algorithm
-===================================
-S2K mode 101 is used to identify these extensions.
-After the hash algorithm the 3 bytes "GNU" are used to make
-clear that these are extensions for GNU, the next bytes gives the
-GNU protection mode - 1000.  Defined modes are:
-  1001 - do not store the secret part at all
-  1002 - a stub to access smartcards (not used in 1.2.x)
-
+  S2K mode 101 is used to identify these extensions.
+  After the hash algorithm the 3 bytes "GNU" are used to make
+  clear that these are extensions for GNU, the next bytes gives the
+  GNU protection mode - 1000.  Defined modes are:
+  - 1001 :: Do not store the secret part at all.
+  - 1002 :: A stub to access smartcards (not used in 1.2.x)
 
+* Keyserver helper message format
 
-Other Notes
-===========
-    * For packet version 3 we calculate the keyids this way:
-       RSA     := low 64 bits of n
-       ELGAMAL := build a v3 pubkey packet (with CTB 0x99) and calculate
-                  a rmd160 hash value from it. This is used as the
-                  fingerprint and the low 64 bits are the keyid.
+  The keyserver may be contacted by a Unix Domain socket or via TCP.
 
-    * Revocation certificates consist only of the signature packet;
-      "import" knows how to handle this.  The rationale behind it is
-      to keep them small.
+  The format of a request is:
+#+begin_example
+  command-tag
+  "Content-length:" digits
+  CRLF
+#+end_example
 
+  Where command-tag is
 
-OIDs below the GnuPG arc:
-=========================
+#+begin_example
+  NOOP
+  GET <user-name>
+  PUT
+  DELETE <user-name>
+#+end_example
 
- 1.3.6.1.4.1.11591.2          GnuPG
- 1.3.6.1.4.1.11591.2.1          notation
- 1.3.6.1.4.1.11591.2.1.1          pkaAddress
- 1.3.6.1.4.1.11591.2.2          X.509 extensions
- 1.3.6.1.4.1.11591.2.2.1          standaloneCertificate
- 1.3.6.1.4.1.11591.2.2.2          wellKnownPrivateKey
- 1.3.6.1.4.1.11591.2.12242973   invalid encoded OID
-
-
-
-Keyserver Message Format
-=========================
-
-The keyserver may be contacted by a Unix Domain socket or via TCP.
+The format of a response is:
 
-The format of a request is:
+#+begin_example
+  "GNUPG/1.0" status-code status-text
+  "Content-length:" digits
+  CRLF
+#+end_example
+followed by <digits> bytes of data
 
-====
-command-tag
-"Content-length:" digits
-CRLF
-=======
+Status codes are:
 
-Where command-tag is
+  - 1xx :: Informational - Request received, continuing process
 
-NOOP
-GET <user-name>
-PUT
-DELETE <user-name>
+  - 2xx :: Success - The action was successfully received, understood,
+           and accepted
 
+  - 4xx :: Client Error - The request contains bad syntax or cannot be
+           fulfilled
 
-The format of a response is:
+  - 5xx :: Server Error - The server failed to fulfill an apparently
+           valid request
 
-======
-"GNUPG/1.0" status-code status-text
-"Content-length:" digits
-CRLF
-============
-followed by <digits> bytes of data
 
+* Object identifiers
 
-Status codes are:
+  OIDs below the GnuPG arc:
 
-     o 1xx: Informational - Request received, continuing process
+#+begin_example
+  1.3.6.1.4.1.11591.2          GnuPG
+  1.3.6.1.4.1.11591.2.1          notation
+  1.3.6.1.4.1.11591.2.1.1          pkaAddress
+  1.3.6.1.4.1.11591.2.2          X.509 extensions
+  1.3.6.1.4.1.11591.2.2.1          standaloneCertificate
+  1.3.6.1.4.1.11591.2.2.2          wellKnownPrivateKey
+  1.3.6.1.4.1.11591.2.12242973   invalid encoded OID
+#+end_example
 
-     o 2xx: Success - The action was successfully received, understood,
-       and accepted
 
-     o 4xx: Client Error - The request contains bad syntax or cannot be
-       fulfilled
 
-     o 5xx: Server Error - The server failed to fulfill an apparently
-       valid request
+* Miscellaneous notes
 
+** v3 fingerprints
+   For packet version 3 we calculate the keyids this way:
+    - RSA :: Low 64 bits of n
+    - ELGAMAL :: Build a v3 pubkey packet (with CTB 0x99) and
+                 calculate a RMD160 hash value from it. This is used
+                 as the fingerprint and the low 64 bits are the keyid.
 
+** Simplified revocation certificates
+  Revocation certificates consist only of the signature packet;
+  "--import" knows how to handle this.  The rationale behind it is to
+  keep them small.
 
-Documentation on HKP (the http keyserver protocol):
+** Documentation on HKP (the http keyserver protocol):
 
-A minimalistic HTTP server on port 11371 recognizes a GET for /pks/lookup.
-The standard http URL encoded query parameters are this (always key=value):
+   A minimalistic HTTP server on port 11371 recognizes a GET for
+   /pks/lookup.  The standard http URL encoded query parameters are
+   this (always key=value):
 
-- op=index (like pgp -kv), op=vindex (like pgp -kvv) and op=get (like
-  pgp -kxa)
+   - op=index (like pgp -kv), op=vindex (like pgp -kvv) and op=get (like
+     pgp -kxa)
 
-- search=<stringlist>. This is a list of words that must occur in the key.
-  The words are delimited with space, points, @ and so on. The delimiters
-  are not searched for and the order of the words doesn't matter (but see
-  next option).
+   - search=<stringlist>. This is a list of words that must occur in the key.
+     The words are delimited with space, points, @ and so on. The delimiters
+     are not searched for and the order of the words doesn't matter (but see
+     next option).
 
-- exact=on. This switch tells the hkp server to only report exact matching
-  keys back. In this case the order and the "delimiters" are important.
+   - exact=on. This switch tells the hkp server to only report exact matching
+     keys back. In this case the order and the "delimiters" are important.
 
-- fingerprint=on. Also reports the fingerprints when used with 'index' or
-  'vindex'
+   - fingerprint=on. Also reports the fingerprints when used with 'index' or
+     'vindex'
 
-The keyserver also recognizes http-POSTs to /pks/add. Use this to upload
-keys.
+   The keyserver also recognizes http-POSTs to /pks/add. Use this to upload
+   keys.
 
 
-A better way to do this would be a request like:
+   A better way to do this would be a request like:
 
-   /pks/lookup/<gnupg_formatierte_user_id>?op=<operation>
+      /pks/lookup/<gnupg_formatierte_user_id>?op=<operation>
 
-This can be implemented using Hurd's translator mechanism.
-However, I think the whole key server stuff has to be re-thought;
-I have some ideas and probably create a white paper.
+   This can be implemented using Hurd's translator mechanism.
+   However, I think the whole key server stuff has to be re-thought;
+   I have some ideas and probably create a white paper.
index d679000..cf647e1 100644 (file)
@@ -2611,6 +2611,26 @@ Note that this passphrase is only used if the option @option{--batch}
 has also been given.  This is different from @command{gpg}.
 @end ifclear
 
+@ifset gpgtwoone
+@item --pinentry-mode @code{mode}
+@opindex pinentry-mode
+Set the pinentry mode to @code{mode}.  Allowed values for @code{mode}
+are:
+@table @asis
+  @item default
+  Use the default of the agent, which is @code{ask}.
+  @item ask
+  Force the use of the Pinentry.
+  @item cancel
+  Emulate use of Pinentry's cancel button.
+  @item error
+  Return a Pinentry error (``No Pinentry'').
+  @item loopback
+  Redirect Pinentry queries to the caller.  Note that in contrast to
+  Pinentry the user is not prompted again if he enters a bad password.
+@end table
+@end ifset
+
 @item --command-fd @code{n}
 @opindex command-fd
 This is a replacement for the deprecated shared-memory IPC mode.
index 36c9ffb..0a538b8 100644 (file)
@@ -1,4 +1,4 @@
-# help..txt -  GnuPG online help
+# help.ja.txt - Japanese GnuPG online help
 # Copyright (C) 2007 Free Software Foundation, Inc.
 #
 # This file is part of GnuPG.
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, see <http://www.gnu.org/licenses/>.
 
+.#pinentry.qualitybar.tooltip
+# [ このエントリは有効にするには、上記のキーの # を削除してください。]
+# これは例です。
+このバーは、入力されたパスフレーズの品質を示しています。
 
-.#gpg.edit_ownertrust.value
-# fixme: Please translate and remove the hash mark from the key line.
-It's up to you to assign a value here; this value will never be exported
-to any 3rd party.  We need it to implement the web-of-trust; it has nothing
-to do with the (implicitly created) web-of-certificates.
+バーが赤い色となっている場合、GnuPGはパスフレーズが弱すぎると判断し、受
+け付けません。管理者にパスフレーズの制限の設定について詳細を問い合わせ
+てください。
 .
 
-.#gpg.edit_ownertrust.set_ultimate.okay
-# fixme: Please translate and remove the hash mark from the key line.
-To build the Web-of-Trust, GnuPG needs to know which keys are
-ultimately trusted - those are usually the keys for which you have
-access to the secret key.  Answer "yes" to set this key to
-ultimately trusted
+.gnupg.agent-problem
+# There was a problem accessing or starting the agent.
+動作中のGpg-Agentへの接続ができなかったか、通信の問題が発生しました。
 
+システムは、Gpg-Agentと呼ばれるバックグラウンド・プロセスを利用し、秘密
+鍵とパスフレーズの問い合わせを処理します。このエージェントは通常、ユー
+ザがログインするときに開始され、ログインしている間、動いています。もし、
+エージェントが利用可能でない場合、システムは、その場でエージェントの起
+動を試しますが、この場合、機能がやや制限され、若干の問題がある場合があ
+ります。
+
+もしかしたら、管理者に問い合わせて、この問題をどのように解決したら良い
+か聞いた方が良いかもしれません。とりあえずの方策としては、一度ログアウ
+トしてもう一度ログインし、改善が見られるか試してみることがあります。も
+し、これがうまくいくようであれば管理者に報告してください。それはおそら
+く、ソフトウェアのバグであることを示していますので。
 .
 
-.#gpg.untrusted_key.override
-# fixme: Please translate and remove the hash mark from the key line.
-If you want to use this untrusted key anyway, answer "yes".
+
+.gnupg.dirmngr-problem
+# There was a problen accessing the dirmngr.
+動作中のDirmngrへの接続ができなかったか、通信の問題が発生しました。
+
+証明書失効リスト(CRL)を検索し、OCSPの懸賞とLDAPサーバを通じて鍵を検索す
+るため、システムは、Dirmngrと呼ばれる外部サービス・プログラムを利用しま
+す。Dirmngrは通常、システムサービス(daemon)として実効されます、一般ユー
+ザは気にする必要はありません。問題がある場合、システムは、要求に応じて、
+Dirmngrを起動することがありますが、これは対応策であり、性能に制限が生じ
+ます。
+
+この問題がある場合、システム管理者に連絡し、どのように進めたら良いか問
+い合わせてください。とりあえずの解決策としては、gpgsmの設定でCRLの検証
+を停止させることが考えられます。
 .
 
-.#gpg.pklist.user_id.enter
-# fixme: Please translate and remove the hash mark from the key line.
-Enter the user ID of the addressee to whom you want to send the message.
+
+.gpg.edit_ownertrust.value
+ここでの値の指定は、あなたに任されています。この値は、第三者に開示され
+ることは決してありません。ウェブ・オブ・トラストを実装するためにこの値
+が必要となりますが、(暗黙的に作られる)証明書の網には何も関係しません。
 .
 
-.#gpg.keygen.algo
-# fixme: Please translate and remove the hash mark from the key line.
-Select the algorithm to use.
+.gpg.edit_ownertrust.set_ultimate.okay
+ウェブ・オブ・トラストを構築するためにGnuPGは、どの鍵が究極的に信頼でき
+るかを知る必要があります。その鍵は通常は、あなたが秘密鍵へアクセスでき
+るものです。この鍵が究極的に信頼できる場合、"yes" と答えてください。
+.
 
-DSA (aka DSS) is the Digital Signature Algorithm and can only be used
-for signatures.
 
-Elgamal is an encrypt-only algorithm.
+.gpg.untrusted_key.override
+この信頼されてない鍵をどちらにせよ使いたい場合、"yes" と答えてください。
+.
 
-RSA may be used for signatures or encryption.
+.gpg.pklist.user_id.enter
+このメッセージを送りたい宛先のユーザIDを入力してください。
+.
 
-The first (primary) key must always be a key which is capable of signing.
+.gpg.keygen.algo
+使用するアルゴリズムを選択してください。
+
+DSA (別名 DSS)は電子署名アルゴリズムであり、署名にのみ使えます。
+
+Elgamal は暗号化のみのアルゴリズムです。
+
+RSA は署名と暗号化のどちらにも使えます。
+
+主鍵は常に、署名が可能の鍵である必要があります。
 .
 
-.#gpg.keygen.algo.rsa_se
-# fixme: Please translate and remove the hash mark from the key line.
-In general it is not a good idea to use the same key for signing and
-encryption.  This algorithm should only be used in certain domains.
-Please consult your security expert first.
+
+.gpg.keygen.algo.rsa_se
+一般的に、署名と暗号化に同一の鍵を用いることは良いことではありません。
+このアルゴリズムはある特定の領域だけに使うべきです。まず、セキュリティ
+の専門家に相談してください。
 .
 
-.#gpg.keygen.size
-# fixme: Please translate and remove the hash mark from the key line.
-Enter the size of the key
+
+.gpg.keygen.size
+鍵の長さを入力してください。
+
+提案されたデフォルトが通常良い選択です。
+
+大きな鍵長を使いたい場合、たとえば4096ビットなど、本当に意味があるか再
+検討してください。こちらのウェブページを見るのも良いと思います:
+http://www.xkcd.com/538/
 .
 
-.#gpg.keygen.size.huge.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" or "no"
+.gpg.keygen.size.huge.okay
+"yes" か "no" で答えてください。
 .
 
-.#gpg.keygen.size.large.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" or "no"
+
+.gpg.keygen.size.large.okay
+"yes" か "no" で答えてください。
 .
 
-.#gpg.keygen.valid
-# fixme: Please translate and remove the hash mark from the key line.
-Enter the required value as shown in the prompt.
-It is possible to enter a ISO date (YYYY-MM-DD) but you won't
-get a good error response - instead the system tries to interpret
-the given value as an interval.
+
+.gpg.keygen.valid
+プロンプトで示された必要な値を入力してください。ISO形式の日付
+(YYYY-MM-DD)の入力が可能ですが、良いエラー対応が得られないかもしれませ
+ん。システムが与えられた値を期間と解釈することがあります。.
 .
 
-.#gpg.keygen.valid.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" or "no"
+.gpg.keygen.valid.okay
+"yes" か "no" で答えてください。
 .
 
-.#gpg.keygen.name
-# fixme: Please translate and remove the hash mark from the key line.
-Enter the name of the key holder
+
+.gpg.keygen.name
+鍵の持ち主の名前を入力してください。
+文字 "<" と ">" は許されていません。
+例: Heinrich Heine
 .
 
-.#gpg.keygen.email
-# fixme: Please translate and remove the hash mark from the key line.
-please enter an optional but highly suggested email address
+
+.gpg.keygen.email
+オプションですが推奨される電子メールアドレスを入力してください。
+例: heinrichh@duesseldorf.de
 .
 
-.#gpg.keygen.comment
-# fixme: Please translate and remove the hash mark from the key line.
-Please enter an optional comment
+.gpg.keygen.comment
+オプションのコメントを入力してください。
+文字 "(" と ")" は許されていません。
+一般的にコメントは必要ではありません。
 .
 
-.#gpg.keygen.userid.cmd
-# fixme: Please translate and remove the hash mark from the key line.
-N  to change the name.
-C  to change the comment.
-E  to change the email address.
-O  to continue with key generation.
-Q  to to quit the key generation.
+
+.gpg.keygen.userid.cmd
+# (Keep a leading empty line)
+
+N  名前の変更。
+C  コメントの変更。
+E  電子メールアドレスの変更。
+O  鍵生成に進む。
+Q  鍵生成を止める。
 .
 
-.#gpg.keygen.sub.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" (or just "y") if it is okay to generate the sub key.
+.gpg.keygen.sub.okay
+副鍵を生成してよければ、"yes" (あるいは単に "y") と答えてください。
 .
 
-.#gpg.sign_uid.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" or "no"
+.gpg.sign_uid.okay
+"yes" か "no" で答えてください。
 .
 
-.#gpg.sign_uid.class
-# fixme: Please translate and remove the hash mark from the key line.
-When you sign a user ID on a key, you should first verify that the key
-belongs to the person named in the user ID.  It is useful for others to
-know how carefully you verified this.
+.gpg.sign_uid.class
+ある鍵のユーザIDに署名するとき、あなたは、まず、その鍵がそのユーザIDの
+人に属するかどうかを確認しなければなりません。あなたがどれくらいこれを
+慎重に確認したかについて、ほかの人が知ることは有用です。
 
-"0" means you make no particular claim as to how carefully you verified the
-    key.
+"0" は、どれくらい慎重に確認したかについて特になにも主張しないことを意味します。
 
-"1" means you believe the key is owned by the person who claims to own it
-    but you could not, or did not verify the key at all.  This is useful for
-    a "persona" verification, where you sign the key of a pseudonymous user.
+"1" は、あなたは、主張するその人が所有する鍵であると考えるが、その鍵について、
+    確認できなかった、あるいはしなかったことを意味します。これは、ペンネームの
+    ユーザの鍵に署名するような "persona" 確認に有用です。
 
-"2" means you did casual verification of the key.  For example, this could
-    mean that you verified the key fingerprint and checked the user ID on the
-    key against a photo ID.
+"2" は、その鍵に対し、通常の検証を行ったことを意味します。たとえば、鍵
+    のフィンガープリントを確認し、写真付きIDでユーザIDを確認したことを
+    意味します。
 
-"3" means you did extensive verification of the key.  For example, this could
-    mean that you verified the key fingerprint with the owner of the key in
-    person, and that you checked, by means of a hard to forge document with a
-    photo ID (such as a passport) that the name of the key owner matches the
-    name in the user ID on the key, and finally that you verified (by exchange
-    of email) that the email address on the key belongs to the key owner.
+"3" は、その鍵に対し、広範な検証を行ったことを意味します。たとえば、鍵
+    のフィンガープリントを対面で確認し、パスポートなど偽造することが難
+    しい写真付きIDでユーザIDを確認し、所有者の名前が鍵のユーザIDに適合
+    し、メールの交換で、メールアドレスが所有者に属することを確認したこ
+    とを意味します。
 
-Note that the examples given above for levels 2 and 3 are *only* examples.
-In the end, it is up to you to decide just what "casual" and "extensive"
-mean to you when you sign other keys.
+上記のレベル2とレベル3で示した例は、単に例であることに注意してください。
+結局は、ほかの鍵に署名するとき、なにがあなたにとって「通常」で、なにが
+「広範」かをを決めるのは、あなた自身に任されています。
 
-If you don't know what the right answer is, answer "0".
+正しい答えがなにかわからないときは "0" と答えてください。
 .
 
-.#gpg.change_passwd.empty.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" or "no"
+.gpg.change_passwd.empty.okay
+"yes" か "no" で答えてください。
 .
 
-.#gpg.keyedit.save.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" or "no"
+
+.gpg.keyedit.save.okay
+"yes" か "no" で答えてください。
 .
 
-.#gpg.keyedit.cancel.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" or "no"
+
+.gpg.keyedit.cancel.okay
+"yes" か "no" で答えてください。
 .
 
-.#gpg.keyedit.sign_all.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" if you want to sign ALL the user IDs
+.gpg.keyedit.sign_all.okay
+すべてのユーザIDに対して署名したい場合、"yes"と答えてください。
 .
 
-.#gpg.keyedit.remove.uid.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" if you really want to delete this user ID.
-All certificates are then also lost!
+.gpg.keyedit.remove.uid.okay
+このユーザIDを本当に削除したい場合、"yes"と答えてください。
+そうすると全部の証明書が失われます!
 .
 
-.#gpg.keyedit.remove.subkey.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" if it is okay to delete the subkey
+.gpg.keyedit.remove.subkey.okay
+副鍵を削除してよい場合、"yes"と答えてください。
 .
 
-.#gpg.keyedit.delsig.valid
-# fixme: Please translate and remove the hash mark from the key line.
-This is a valid signature on the key; you normally don't want
-to delete this signature because it may be important to establish a
-trust connection to the key or another key certified by this key.
+
+.gpg.keyedit.delsig.valid
+これは、この鍵の有効な署名です。通常、この署名を削除することは望まない
+でしょう。この鍵(または、この鍵で証明された別の鍵)への信頼のコネクショ
+ンが成立することが重要となる場合があるからです。
 .
 
-.#gpg.keyedit.delsig.unknown
-# fixme: Please translate and remove the hash mark from the key line.
-This signature can't be checked because you don't have the
-corresponding key.  You should postpone its deletion until you
-know which key was used because this signing key might establish
-a trust connection through another already certified key.
+.gpg.keyedit.delsig.unknown
+この署名は検証できませんでした。対応する鍵を持っていないからです。どの
+鍵が使われたかわかるまでこの削除を延期すべきです。この署名の鍵は、別の
+すでに証明された鍵を通じて信頼のコネクションを成立することがあるからで
+す。
 .
 
-.#gpg.keyedit.delsig.invalid
-# fixme: Please translate and remove the hash mark from the key line.
-The signature is not valid.  It does make sense to remove it from
-your keyring.
+.gpg.keyedit.delsig.invalid
+この署名は有効ではありません。鍵リングから削除することに意味があります。
 .
 
-.#gpg.keyedit.delsig.selfsig
-# fixme: Please translate and remove the hash mark from the key line.
-This is a signature which binds the user ID to the key. It is
-usually not a good idea to remove such a signature.  Actually
-GnuPG might not be able to use this key anymore.  So do this
-only if this self-signature is for some reason not valid and
-a second one is available.
+.gpg.keyedit.delsig.selfsig
+これはこのユーザIDとこの鍵とを結ぶ署名です。通常、このような署名を削除
+することは良いことではありません。実際、GnuPGはこの鍵を使うことができな
+くなってしまうかもしれません。ですから、この自己署名がなんらかの理由に
+よって無効であり、第二のものが利用可能である場合にだけ、実行してくださ
+い。
 .
 
-.#gpg.keyedit.updpref.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Change the preferences of all user IDs (or just of the selected ones)
-to the current list of preferences.  The timestamp of all affected
-self-signatures will be advanced by one second.
+.gpg.keyedit.updpref.okay
+すべてのユーザID(もしくは単に選択された一つ)の優先指定を現行の優先指定
+に変更します。すべての関係する自己署名のタイムスタンプは、一秒進んだも
+のとなります。
+.
 
+.gpg.passphrase.enter
+# (keep a leading empty line)
+
+パスフレーズを入力してください。秘密の文です。
 .
 
-.#gpg.passphrase.enter
-# fixme: Please translate and remove the hash mark from the key line.
-Please enter the passhrase; this is a secret sentence 
 
+.gpg.passphrase.repeat
+もう一度パスフレーズを入力し、間違いなく入力されたことを確認してください。
 .
 
-.#gpg.passphrase.repeat
-# fixme: Please translate and remove the hash mark from the key line.
-Please repeat the last passphrase, so you are sure what you typed in.
+.gpg.detached_signature.filename
+署名が適用されるファイルの名前を与えてください。
 .
 
-.#gpg.detached_signature.filename
-# fixme: Please translate and remove the hash mark from the key line.
-Give the name of the file to which the signature applies
+.gpg.openfile.overwrite.okay
+# openfile.c (overwrite_filep)
+ファイルを上書きしてよければ、"yes"と答えてください。
 .
 
-.#gpg.openfile.overwrite.okay
-# fixme: Please translate and remove the hash mark from the key line.
-Answer "yes" if it is okay to overwrite the file
+.gpg.openfile.askoutname
+# openfile.c (ask_outfile_name)
+新しいファイル名を入力してください。単にEnterを打つと、カッコで示された
+デフォルトのファイルが使われます。
 .
 
-.#gpg.openfile.askoutname
-# fixme: Please translate and remove the hash mark from the key line.
-Please enter a new filename. If you just hit RETURN the default
-file (which is shown in brackets) will be used.
+.gpg.ask_revocation_reason.code
+# revoke.c (ask_revocation_reason)
+証明書の理由を指定します。下記のリストから選択してください:
+  "鍵が危うくなった"
+      承認していない人があなたの秘密鍵へのアクセスを得たと考える理由が
+      ある場合に、これを指定します。
+  "鍵を取り替えた"
+      新しい鍵でこの鍵を置き換えた場合に、これを指定します。
+  "鍵はもう使われない"
+      この鍵を使わなくなった場合に、これを指定します。
+  "ユーザIDが無効となった"
+      ユーザIDをもはや使うべきでない場合に、これを指定します。通常、こ
+      れは、電子メールアドレスが無効となった場合です。
 .
 
-.#gpg.ask_revocation_reason.code
-# fixme: Please translate and remove the hash mark from the key line.
-You should specify a reason for the certification.  Depending on the
-context you have the ability to choose from this list:
-  "Key has been compromised"
-      Use this if you have a reason to believe that unauthorized persons
-      got access to your secret key.
-  "Key is superseded"
-      Use this if you have replaced this key with a newer one.
-  "Key is no longer used"
-      Use this if you have retired this key.
-  "User ID is no longer valid"
-      Use this to state that the user ID should not longer be used;
-      this is normally used to mark an email address invalid.
 
+.gpg.ask_revocation_reason.text
+# revoke.c (ask_revocation_reason)
+必要であれば、この失効証明書を発行する理由を記述する文章を入力する
+ことができます。この文章は簡潔にしてください。空行は文章の終わりを
+意味します。
 .
 
-.#gpg.ask_revocation_reason.text
-# fixme: Please translate and remove the hash mark from the key line.
-If you like, you can enter a text describing why you issue this
-revocation certificate.  Please keep this text concise.
-An empty line ends the text.
 
+.gpgsm.root-cert-not-trusted
+# This text gets displayed by the audit log if
+# a root certificates was not trusted.
+ルート証明書(信頼の拠り所)が信頼できるとされていません。設定にもよりま
+すが、そのルート証明書を信頼できるものと指定するように既に問われたかも
+しれませんし、手動でGnuPGがその証明書を信頼できると扱うように設定する必
+要があります。信頼できる証明書は、GnuPGのホームディレクトリのファイル
+trustlist.txt に設定します。疑問のある場合、システム管理者にこの証明書
+を信頼してよいものかどうか問い合わせてください。
 .
 
 
+.gpgsm.crl-problem
+# This tex is displayed by the audit log for problems with
+# the CRL or OCSP checking.
+設定によりますが、CRLの取得か、OCSP検証の際に問題が起きました。これが動
+かない場合、実に様々な理由がありえます。解決策は、マニュアルを見てくだ
+さい。
+.
+
 
 # Local variables:
 # mode: fundamental
index 200fed8..ed2cc51 100644 (file)
@@ -287,10 +287,18 @@ Note that with the current version of Scdaemon the card is powered
 down immediately at the next timer tick for any value of @var{n} other
 than 0.
 
-
-@item --disable-keypad
-@opindex disable-keypad
-Even if a card reader features a keypad, do not try to use it.
+@item --enable-pinpad-varlen
+@opindex enable-pinpad-varlen
+Please specify this option when the card reader supports variable
+length input for pinpad (default is no).  For known readers listed in
+ccid-driver, this option is not needed.  Note that if your card reader
+doesn't supports variable length input but you want to use it, you
+need to specify your pinpad request on your card.
+
+
+@item --disable-pinpad
+@opindex disable-pinpad
+Even if a card reader features a pinpad, do not try to use it.
 
 
 @item --deny-admin
index 55637e4..85a3f28 100644 (file)
@@ -1,6 +1,6 @@
 /* call-agent.c - Divert GPG operations to the agent.
  * Copyright (C) 2001, 2002, 2003, 2006, 2007, 2008, 2009,
- *               2010, 2011 Free Software Foundation, Inc.
+ *               2010, 2011, 2013 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
 #include "sysutils.h"
 #include "call-agent.h"
 #include "status.h"
+#include "../common/shareddefs.h"
 
 #ifndef DBG_ASSUAN
 # define DBG_ASSUAN 1
 #endif
 
+#define CONTROL_D ('D' - 'A' + 1)
+
+
 static assuan_context_t agent_ctx = NULL;
 static int did_early_card_test;
 
-struct cipher_parm_s
+struct default_inq_parm_s
 {
   ctrl_t ctrl;
   assuan_context_t ctx;
+  struct {
+    u32 *keyid;
+    u32 *mainkeyid;
+    int pubkey_algo;
+  } keyinfo;
+};
+
+struct cipher_parm_s
+{
+  struct default_inq_parm_s *dflt;
+  assuan_context_t ctx;
   unsigned char *ciphertext;
   size_t ciphertextlen;
 };
 
 struct writecert_parm_s
 {
-  assuan_context_t ctx;
+  struct default_inq_parm_s *dflt;
   const unsigned char *certdata;
   size_t certdatalen;
 };
 
 struct writekey_parm_s
 {
-  assuan_context_t ctx;
+  struct default_inq_parm_s *dflt;
   const unsigned char *keydata;
   size_t keydatalen;
 };
 
 struct genkey_parm_s
 {
-  ctrl_t ctrl;
-  assuan_context_t ctx;
+  struct default_inq_parm_s *dflt;
   const char *keyparms;
 };
 
 struct import_key_parm_s
 {
-  ctrl_t ctrl;
-  assuan_context_t ctx;
+  struct default_inq_parm_s *dflt;
   const void *key;
   size_t keylen;
 };
@@ -161,6 +174,19 @@ start_agent (ctrl_t ctrl, int for_card)
              here used to indirectly enable GPG_ERR_FULLY_CANCELED.  */
           assuan_transact (agent_ctx, "OPTION agent-awareness=2.1.0",
                            NULL, NULL, NULL, NULL, NULL, NULL);
+          /* Pass on the pinentry mode.  */
+          if (opt.pinentry_mode)
+            {
+              char *tmp = xasprintf ("OPTION pinentry-mode=%s",
+                                     str_pinentry_mode (opt.pinentry_mode));
+              rc = assuan_transact (agent_ctx, tmp,
+                               NULL, NULL, NULL, NULL, NULL, NULL);
+              xfree (tmp);
+              if (rc)
+                log_error ("setting pinentry mode '%s' failed: %s\n",
+                           str_pinentry_mode (opt.pinentry_mode),
+                           gpg_strerror (rc));
+            }
 
         }
     }
@@ -307,20 +333,46 @@ get_serialno_cb (void *opaque, const char *line)
 static gpg_error_t
 default_inq_cb (void *opaque, const char *line)
 {
-  (void)opaque;
+  gpg_error_t err = 0;
+  struct default_inq_parm_s *parm = opaque;
 
   if (!strncmp (line, "PINENTRY_LAUNCHED", 17) && (line[17]==' '||!line[17]))
     {
-      /* There is no working server mode yet thus we use
-         AllowSetForegroundWindow window right here.  We might want to
-         do this anyway in case gpg is called on the console. */
-      gnupg_allow_set_foregound_window ((pid_t)strtoul (line+17, NULL, 10));
+      err = gpg_proxy_pinentry_notify (parm->ctrl, line);
+      if (err)
+        log_error (_("failed to proxy %s inquiry to client\n"),
+                   "PINENTRY_LAUNCHED");
       /* We do not pass errors to avoid breaking other code.  */
     }
+  else if (!strncmp (line, "PASSPHRASE", 10) && (line[10]==' '||!line[10])
+           && opt.pinentry_mode == PINENTRY_MODE_LOOPBACK)
+    {
+      if (have_static_passphrase ())
+        {
+          const char *s = get_static_passphrase ();
+          err = assuan_send_data (parm->ctx, s, strlen (s));
+        }
+      else
+        {
+          char *pw;
+
+          if (parm->keyinfo.keyid)
+            emit_status_need_passphrase (parm->keyinfo.keyid,
+                                         parm->keyinfo.mainkeyid,
+                                         parm->keyinfo.pubkey_algo);
+          pw = cpr_get_hidden ("passphrase.enter", _("Enter passphrase: "));
+          cpr_kill_prompt ();
+          if (*pw == CONTROL_D && !pw[1])
+            err = gpg_error (GPG_ERR_CANCELED);
+          else
+            err = assuan_send_data (parm->ctx, pw, strlen (pw));
+          xfree (pw);
+        }
+    }
   else
     log_debug ("ignoring gpg-agent inquiry '%s'\n", line);
 
-  return 0;
+  return err;
 }
 
 
@@ -515,6 +567,9 @@ int
 agent_learn (struct agent_card_info_s *info)
 {
   int rc;
+  struct default_inq_parm_s parm;
+
+  memset (&parm, 0, sizeof parm);
 
   rc = start_agent (NULL, 1);
   if (rc)
@@ -532,10 +587,10 @@ agent_learn (struct agent_card_info_s *info)
   if (rc)
     return rc;
 
-
+  parm.ctx = agent_ctx;
   memset (info, 0, sizeof *info);
   rc = assuan_transact (agent_ctx, "SCD LEARN --force",
-                        dummy_data_cb, NULL, default_inq_cb, NULL,
+                        dummy_data_cb, NULL, default_inq_cb, &parm,
                         learn_status_cb, info);
   /* Also try to get the key attributes.  */
   if (!rc)
@@ -544,6 +599,30 @@ agent_learn (struct agent_card_info_s *info)
   return rc;
 }
 
+
+int
+agent_keytocard (const char *hexgrip, int keyno, int force,
+                 const char *serialno, const char *timestamp)
+{
+  int rc;
+  char line[ASSUAN_LINELENGTH];
+
+  snprintf (line, DIM(line)-1, "KEYTOCARD %s%s %s OPENPGP.%d %s",
+            force?"--force ": "", hexgrip, serialno, keyno, timestamp);
+  line[DIM(line)-1] = 0;
+
+  rc = start_agent (NULL, 1);
+  if (rc)
+    return rc;
+
+  rc = assuan_transact (agent_ctx, line, NULL, NULL, default_inq_cb,
+                        NULL, NULL, NULL);
+  if (rc)
+    return rc;
+
+  return rc;
+}
+\f
 /* Call the agent to retrieve a data object.  This function returns
    the data in the same structure as used by the learn command.  It is
    allowed to update such a structure using this commmand. */
@@ -552,6 +631,9 @@ agent_scd_getattr (const char *name, struct agent_card_info_s *info)
 {
   int rc;
   char line[ASSUAN_LINELENGTH];
+  struct default_inq_parm_s parm;
+
+  memset (&parm, 0, sizeof parm);
 
   if (!*name)
     return gpg_error (GPG_ERR_INV_VALUE);
@@ -565,7 +647,8 @@ agent_scd_getattr (const char *name, struct agent_card_info_s *info)
   if (rc)
     return rc;
 
-  rc = assuan_transact (agent_ctx, line, NULL, NULL, default_inq_cb, NULL,
+  parm.ctx = agent_ctx;
+  rc = assuan_transact (agent_ctx, line, NULL, NULL, default_inq_cb, &parm,
                         learn_status_cb, info);
 
   return rc;
@@ -583,6 +666,9 @@ agent_scd_setattr (const char *name,
   int rc;
   char line[ASSUAN_LINELENGTH];
   char *p;
+  struct default_inq_parm_s parm;
+
+  memset (&parm, 0, sizeof parm);
 
   (void)serialno;
 
@@ -614,8 +700,9 @@ agent_scd_setattr (const char *name,
   rc = start_agent (NULL, 1);
   if (!rc)
     {
+      parm.ctx = agent_ctx;
       rc = assuan_transact (agent_ctx, line, NULL, NULL,
-                            default_inq_cb, NULL, NULL, NULL);
+                            default_inq_cb, &parm, NULL, NULL);
     }
 
   status_sc_op_failure (rc);
@@ -635,10 +722,11 @@ inq_writecert_parms (void *opaque, const char *line)
 
   if (!strncmp (line, "CERTDATA", 8) && (line[8]==' '||!line[8]))
     {
-      rc = assuan_send_data (parm->ctx, parm->certdata, parm->certdatalen);
+      rc = assuan_send_data (parm->dflt->ctx,
+                             parm->certdata, parm->certdatalen);
     }
   else
-    rc = default_inq_cb (opaque, line);
+    rc = default_inq_cb (parm->dflt, line);
 
   return rc;
 }
@@ -652,6 +740,9 @@ agent_scd_writecert (const char *certidstr,
   int rc;
   char line[ASSUAN_LINELENGTH];
   struct writecert_parm_s parms;
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
 
   rc = start_agent (NULL, 1);
   if (rc)
@@ -661,7 +752,8 @@ agent_scd_writecert (const char *certidstr,
 
   snprintf (line, DIM(line)-1, "SCD WRITECERT %s", certidstr);
   line[DIM(line)-1] = 0;
-  parms.ctx = agent_ctx;
+  dfltparm.ctx = agent_ctx;
+  parms.dflt = &dfltparm;
   parms.certdata = certdata;
   parms.certdatalen = certdatalen;
 
@@ -683,10 +775,10 @@ inq_writekey_parms (void *opaque, const char *line)
 
   if (!strncmp (line, "KEYDATA", 7) && (line[7]==' '||!line[7]))
     {
-      rc = assuan_send_data (parm->ctx, parm->keydata, parm->keydatalen);
+      rc = assuan_send_data (parm->dflt->ctx, parm->keydata, parm->keydatalen);
     }
   else
-    rc = default_inq_cb (opaque, line);
+    rc = default_inq_cb (parm->dflt, line);
 
   return rc;
 }
@@ -700,6 +792,9 @@ agent_scd_writekey (int keyno, const char *serialno,
   int rc;
   char line[ASSUAN_LINELENGTH];
   struct writekey_parm_s parms;
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
 
   (void)serialno;
 
@@ -711,7 +806,8 @@ agent_scd_writekey (int keyno, const char *serialno,
 
   snprintf (line, DIM(line)-1, "SCD WRITEKEY --force OPENPGP.%d", keyno);
   line[DIM(line)-1] = 0;
-  parms.ctx = agent_ctx;
+  dfltparm.ctx = agent_ctx;
+  parms.dflt = &dfltparm;
   parms.keydata = keydata;
   parms.keydatalen = keydatalen;
 
@@ -836,6 +932,9 @@ agent_scd_genkey (struct agent_card_genkey_s *info, int keyno, int force,
   char line[ASSUAN_LINELENGTH];
   gnupg_isotime_t tbuf;
   struct scd_genkey_parm_s parms;
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
 
   (void)serialno;
 
@@ -857,9 +956,10 @@ agent_scd_genkey (struct agent_card_genkey_s *info, int keyno, int force,
             keyno);
   line[DIM(line)-1] = 0;
 
+  dfltparm.ctx = agent_ctx;
   memset (info, 0, sizeof *info);
   rc = assuan_transact (agent_ctx, line,
-                        NULL, NULL, default_inq_cb, NULL,
+                        NULL, NULL, default_inq_cb, &dfltparm,
                         scd_genkey_cb, &parms);
 
   xfree (parms.savedbytes);
@@ -985,19 +1085,25 @@ agent_scd_readcert (const char *certidstr,
   char line[ASSUAN_LINELENGTH];
   membuf_t data;
   size_t len;
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
 
   *r_buf = NULL;
   rc = start_agent (NULL, 1);
   if (rc)
     return rc;
 
+  dfltparm.ctx = agent_ctx;
+
   init_membuf (&data, 2048);
 
   snprintf (line, DIM(line)-1, "SCD READCERT %s", certidstr);
   line[DIM(line)-1] = 0;
   rc = assuan_transact (agent_ctx, line,
                         membuf_data_cb, &data,
-                        default_inq_cb, NULL, NULL, NULL);
+                        default_inq_cb, &dfltparm,
+                        NULL, NULL);
   if (rc)
     {
       xfree (get_membuf (&data, &len));
@@ -1028,6 +1134,9 @@ agent_scd_change_pin (int chvno, const char *serialno)
   int rc;
   char line[ASSUAN_LINELENGTH];
   const char *reset = "";
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
 
   (void)serialno;
 
@@ -1038,11 +1147,14 @@ agent_scd_change_pin (int chvno, const char *serialno)
   rc = start_agent (NULL, 1);
   if (rc)
     return rc;
+  dfltparm.ctx = agent_ctx;
 
   snprintf (line, DIM(line)-1, "SCD PASSWD %s %d", reset, chvno);
   line[DIM(line)-1] = 0;
-  rc = assuan_transact (agent_ctx, line, NULL, NULL,
-                        default_inq_cb, NULL, NULL, NULL);
+  rc = assuan_transact (agent_ctx, line,
+                        NULL, NULL,
+                        default_inq_cb, &dfltparm,
+                        NULL, NULL);
   status_sc_op_failure (rc);
   return rc;
 }
@@ -1056,16 +1168,21 @@ agent_scd_checkpin  (const char *serialno)
 {
   int rc;
   char line[ASSUAN_LINELENGTH];
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
 
   rc = start_agent (NULL, 1);
   if (rc)
     return rc;
+  dfltparm.ctx = agent_ctx;
 
   snprintf (line, DIM(line)-1, "SCD CHECKPIN %s", serialno);
   line[DIM(line)-1] = 0;
   rc = assuan_transact (agent_ctx, line,
                         NULL, NULL,
-                        default_inq_cb, NULL, NULL, NULL);
+                        default_inq_cb, &dfltparm,
+                        NULL, NULL);
   status_sc_op_failure (rc);
   return rc;
 }
@@ -1101,12 +1218,16 @@ agent_get_passphrase (const char *cache_id,
   char *arg3 = NULL;
   char *arg4 = NULL;
   membuf_t data;
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
 
   *r_passphrase = NULL;
 
   rc = start_agent (NULL, 0);
   if (rc)
     return rc;
+  dfltparm.ctx = agent_ctx;
 
   /* Check that the gpg-agent understands the repeat option.  */
   if (assuan_transact (agent_ctx,
@@ -1144,7 +1265,8 @@ agent_get_passphrase (const char *cache_id,
   init_membuf_secure (&data, 64);
   rc = assuan_transact (agent_ctx, line,
                         membuf_data_cb, &data,
-                        default_inq_cb, NULL, NULL, NULL);
+                        default_inq_cb, &dfltparm,
+                        NULL, NULL);
 
   if (rc)
     xfree (get_membuf (&data, NULL));
@@ -1171,6 +1293,9 @@ agent_clear_passphrase (const char *cache_id)
 {
   int rc;
   char line[ASSUAN_LINELENGTH];
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
 
   if (!cache_id || !*cache_id)
     return 0;
@@ -1178,11 +1303,14 @@ agent_clear_passphrase (const char *cache_id)
   rc = start_agent (NULL, 0);
   if (rc)
     return rc;
+  dfltparm.ctx = agent_ctx;
 
   snprintf (line, DIM(line)-1, "CLEAR_PASSPHRASE %s", cache_id);
   line[DIM(line)-1] = 0;
-  return assuan_transact (agent_ctx, line, NULL, NULL,
-                          default_inq_cb, NULL, NULL, NULL);
+  return assuan_transact (agent_ctx, line,
+                          NULL, NULL,
+                          default_inq_cb, &dfltparm,
+                          NULL, NULL);
 }
 
 
@@ -1194,10 +1322,14 @@ gpg_agent_get_confirmation (const char *desc)
   int rc;
   char *tmp;
   char line[ASSUAN_LINELENGTH];
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
 
   rc = start_agent (NULL, 0);
   if (rc)
     return rc;
+  dfltparm.ctx = agent_ctx;
 
   tmp = percent_plus_escape (desc);
   if (!tmp)
@@ -1206,8 +1338,10 @@ gpg_agent_get_confirmation (const char *desc)
   line[DIM(line)-1] = 0;
   xfree (tmp);
 
-  rc = assuan_transact (agent_ctx, line, NULL, NULL,
-                        default_inq_cb, NULL, NULL, NULL);
+  rc = assuan_transact (agent_ctx, line,
+                        NULL, NULL,
+                        default_inq_cb, &dfltparm,
+                        NULL, NULL);
   return rc;
 }
 
@@ -1438,11 +1572,11 @@ inq_genkey_parms (void *opaque, const char *line)
 
   if (!strncmp (line, "KEYPARAM", 8) && (line[8]==' '||!line[8]))
     {
-      err = assuan_send_data (parm->ctx,
+      err = assuan_send_data (parm->dflt->ctx,
                               parm->keyparms, strlen (parm->keyparms));
     }
   else
-    err = default_inq_cb (parm->ctrl, line);
+    err = default_inq_cb (parm->dflt, line);
 
   return err;
 }
@@ -1459,15 +1593,20 @@ agent_genkey (ctrl_t ctrl, char **cache_nonce_addr,
   gpg_error_t err;
   struct genkey_parm_s gk_parm;
   struct cache_nonce_parm_s cn_parm;
+  struct default_inq_parm_s dfltparm;
   membuf_t data;
   size_t len;
   unsigned char *buf;
   char line[ASSUAN_LINELENGTH];
 
+  memset (&dfltparm, 0, sizeof dfltparm);
+  dfltparm.ctrl = ctrl;
+
   *r_pubkey = NULL;
   err = start_agent (ctrl, 0);
   if (err)
     return err;
+  dfltparm.ctx = agent_ctx;
 
   err = assuan_transact (agent_ctx, "RESET",
                          NULL, NULL, NULL, NULL, NULL, NULL);
@@ -1475,8 +1614,7 @@ agent_genkey (ctrl_t ctrl, char **cache_nonce_addr,
     return err;
 
   init_membuf (&data, 1024);
-  gk_parm.ctrl     = ctrl;
-  gk_parm.ctx      = agent_ctx;
+  gk_parm.dflt     = &dfltparm;
   gk_parm.keyparms = keyparms;
   snprintf (line, sizeof line, "GENKEY%s%s%s",
             no_protection? " --no-protection":"",
@@ -1520,11 +1658,16 @@ agent_readkey (ctrl_t ctrl, int fromcard, const char *hexkeygrip,
   size_t len;
   unsigned char *buf;
   char line[ASSUAN_LINELENGTH];
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
+  dfltparm.ctrl = ctrl;
 
   *r_pubkey = NULL;
   err = start_agent (ctrl, 0);
   if (err)
     return err;
+  dfltparm.ctx = agent_ctx;
 
   err = assuan_transact (agent_ctx, "RESET",NULL, NULL, NULL, NULL, NULL, NULL);
   if (err)
@@ -1535,7 +1678,8 @@ agent_readkey (ctrl_t ctrl, int fromcard, const char *hexkeygrip,
   init_membuf (&data, 1024);
   err = assuan_transact (agent_ctx, line,
                          membuf_data_cb, &data,
-                         default_inq_cb, NULL, NULL, NULL);
+                         default_inq_cb, &dfltparm,
+                         NULL, NULL);
   if (err)
     {
       xfree (get_membuf (&data, &len));
@@ -1564,17 +1708,26 @@ agent_readkey (ctrl_t ctrl, int fromcard, const char *hexkeygrip,
 gpg_error_t
 agent_pksign (ctrl_t ctrl, const char *cache_nonce,
               const char *keygrip, const char *desc,
+              u32 *keyid, u32 *mainkeyid, int pubkey_algo,
               unsigned char *digest, size_t digestlen, int digestalgo,
               gcry_sexp_t *r_sigval)
 {
   gpg_error_t err;
   char line[ASSUAN_LINELENGTH];
   membuf_t data;
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
+  dfltparm.ctrl = ctrl;
+  dfltparm.keyinfo.keyid       = keyid;
+  dfltparm.keyinfo.mainkeyid   = mainkeyid;
+  dfltparm.keyinfo.pubkey_algo = pubkey_algo;
 
   *r_sigval = NULL;
   err = start_agent (ctrl, 0);
   if (err)
     return err;
+  dfltparm.ctx = agent_ctx;
 
   if (digestlen*2 + 50 > DIM(line))
     return gpg_error (GPG_ERR_GENERAL);
@@ -1612,8 +1765,9 @@ agent_pksign (ctrl_t ctrl, const char *cache_nonce,
             cache_nonce? " -- ":"",
             cache_nonce? cache_nonce:"");
   err = assuan_transact (agent_ctx, line,
-                        membuf_data_cb, &data, default_inq_cb, ctrl,
-                        NULL, NULL);
+                         membuf_data_cb, &data,
+                         default_inq_cb, &dfltparm,
+                         NULL, NULL);
   if (err)
     xfree (get_membuf (&data, NULL));
   else
@@ -1646,11 +1800,12 @@ inq_ciphertext_cb (void *opaque, const char *line)
   if (!strncmp (line, "CIPHERTEXT", 10) && (line[10]==' '||!line[10]))
     {
       assuan_begin_confidential (parm->ctx);
-      rc = assuan_send_data (parm->ctx, parm->ciphertext, parm->ciphertextlen);
+      rc = assuan_send_data (parm->dflt->ctx,
+                             parm->ciphertext, parm->ciphertextlen);
       assuan_end_confidential (parm->ctx);
     }
   else
-    rc = default_inq_cb (parm->ctrl, line);
+    rc = default_inq_cb (parm->dflt, line);
 
   return rc;
 }
@@ -1659,9 +1814,12 @@ inq_ciphertext_cb (void *opaque, const char *line)
 /* Call the agent to do a decrypt operation using the key identified
    by the hex string KEYGRIP and the input data S_CIPHERTEXT.  On the
    success the decoded value is stored verbatim at R_BUF and its
-   length at R_BUF; the callers needs to release it.  */
+   length at R_BUF; the callers needs to release it.  KEYID, MAINKEYID
+   and PUBKEY_ALGO are used to construct additional promots or status
+   messages. */
 gpg_error_t
 agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
+                 u32 *keyid, u32 *mainkeyid, int pubkey_algo,
                  gcry_sexp_t s_ciphertext,
                  unsigned char **r_buf, size_t *r_buflen)
 {
@@ -1670,6 +1828,13 @@ agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
   membuf_t data;
   size_t n, len;
   char *p, *buf, *endp;
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
+  dfltparm.ctrl = ctrl;
+  dfltparm.keyinfo.keyid       = keyid;
+  dfltparm.keyinfo.mainkeyid   = mainkeyid;
+  dfltparm.keyinfo.pubkey_algo = pubkey_algo;
 
   if (!keygrip || strlen(keygrip) != 40 || !s_ciphertext || !r_buf || !r_buflen)
     return gpg_error (GPG_ERR_INV_VALUE);
@@ -1678,6 +1843,7 @@ agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
   err = start_agent (ctrl, 0);
   if (err)
     return err;
+  dfltparm.ctx = agent_ctx;
 
   err = assuan_transact (agent_ctx, "RESET",
                          NULL, NULL, NULL, NULL, NULL, NULL);
@@ -1703,7 +1869,7 @@ agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
   {
     struct cipher_parm_s parm;
 
-    parm.ctrl = ctrl;
+    parm.dflt = &dfltparm;
     parm.ctx = agent_ctx;
     err = make_canon_sexp (s_ciphertext, &parm.ciphertext, &parm.ciphertextlen);
     if (err)
@@ -1772,11 +1938,16 @@ agent_keywrap_key (ctrl_t ctrl, int forexport, void **r_kek, size_t *r_keklen)
   size_t len;
   unsigned char *buf;
   char line[ASSUAN_LINELENGTH];
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
+  dfltparm.ctrl = ctrl;
 
   *r_kek = NULL;
   err = start_agent (ctrl, 0);
   if (err)
     return err;
+  dfltparm.ctx = agent_ctx;
 
   snprintf (line, DIM(line)-1, "KEYWRAP_KEY %s",
             forexport? "--export":"--import");
@@ -1784,7 +1955,8 @@ agent_keywrap_key (ctrl_t ctrl, int forexport, void **r_kek, size_t *r_keklen)
   init_membuf_secure (&data, 64);
   err = assuan_transact (agent_ctx, line,
                          membuf_data_cb, &data,
-                         default_inq_cb, ctrl, NULL, NULL);
+                         default_inq_cb, &dfltparm,
+                         NULL, NULL);
   if (err)
     {
       xfree (get_membuf (&data, &len));
@@ -1809,10 +1981,10 @@ inq_import_key_parms (void *opaque, const char *line)
 
   if (!strncmp (line, "KEYDATA", 7) && (line[7]==' '||!line[7]))
     {
-      err = assuan_send_data (parm->ctx, parm->key, parm->keylen);
+      err = assuan_send_data (parm->dflt->ctx, parm->key, parm->keylen);
     }
   else
-    err = default_inq_cb (parm->ctrl, line);
+    err = default_inq_cb (parm->dflt, line);
 
   return err;
 }
@@ -1827,10 +1999,15 @@ agent_import_key (ctrl_t ctrl, const char *desc, char **cache_nonce_addr,
   struct import_key_parm_s parm;
   struct cache_nonce_parm_s cn_parm;
   char line[ASSUAN_LINELENGTH];
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
+  dfltparm.ctrl = ctrl;
 
   err = start_agent (ctrl, 0);
   if (err)
     return err;
+  dfltparm.ctx = agent_ctx;
 
   if (desc)
     {
@@ -1842,8 +2019,7 @@ agent_import_key (ctrl_t ctrl, const char *desc, char **cache_nonce_addr,
         return err;
     }
 
-  parm.ctrl   = ctrl;
-  parm.ctx    = agent_ctx;
+  parm.dflt   = &dfltparm;
   parm.key    = key;
   parm.keylen = keylen;
 
@@ -1853,7 +2029,8 @@ agent_import_key (ctrl_t ctrl, const char *desc, char **cache_nonce_addr,
   cn_parm.cache_nonce_addr = cache_nonce_addr;
   cn_parm.passwd_nonce_addr = NULL;
   err = assuan_transact (agent_ctx, line,
-                         NULL, NULL, inq_import_key_parms, &parm,
+                         NULL, NULL,
+                         inq_import_key_parms, &parm,
                          cache_nonce_status_cb, &cn_parm);
   return err;
 }
@@ -1875,12 +2052,17 @@ agent_export_key (ctrl_t ctrl, const char *hexkeygrip, const char *desc,
   size_t len;
   unsigned char *buf;
   char line[ASSUAN_LINELENGTH];
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
+  dfltparm.ctrl = ctrl;
 
   *r_result = NULL;
 
   err = start_agent (ctrl, 0);
   if (err)
     return err;
+  dfltparm.ctx = agent_ctx;
 
   if (desc)
     {
@@ -1901,7 +2083,7 @@ agent_export_key (ctrl_t ctrl, const char *hexkeygrip, const char *desc,
   cn_parm.passwd_nonce_addr = NULL;
   err = assuan_transact (agent_ctx, line,
                          membuf_data_cb, &data,
-                         default_inq_cb, ctrl,
+                         default_inq_cb, &dfltparm,
                          cache_nonce_status_cb, &cn_parm);
   if (err)
     {
@@ -1931,14 +2113,20 @@ agent_passwd (ctrl_t ctrl, const char *hexkeygrip, const char *desc,
   gpg_error_t err;
   struct cache_nonce_parm_s cn_parm;
   char line[ASSUAN_LINELENGTH];
+  struct default_inq_parm_s dfltparm;
+
+  memset (&dfltparm, 0, sizeof dfltparm);
+  dfltparm.ctrl = ctrl;
 
   err = start_agent (ctrl, 0);
   if (err)
     return err;
+  dfltparm.ctx = agent_ctx;
 
   if (!hexkeygrip || strlen (hexkeygrip) != 40)
     return gpg_error (GPG_ERR_INV_VALUE);
 
+
   if (desc)
     {
       snprintf (line, DIM(line)-1, "SETKEYDESC %s", desc);
@@ -1957,7 +2145,7 @@ agent_passwd (ctrl_t ctrl, const char *hexkeygrip, const char *desc,
   cn_parm.cache_nonce_addr = cache_nonce_addr;
   cn_parm.passwd_nonce_addr = passwd_nonce_addr;
   err = assuan_transact (agent_ctx, line, NULL, NULL,
-                         default_inq_cb, ctrl,
+                         default_inq_cb, &dfltparm,
                          cache_nonce_status_cb, &cn_parm);
   return err;
 }
index 43de14f..ab1d41a 100644 (file)
@@ -81,6 +81,10 @@ int agent_learn (struct agent_card_info_s *info);
 /* Update INFO with the attribute NAME. */
 int agent_scd_getattr (const char *name, struct agent_card_info_s *info);
 
+/* Send the KEYTOCARD command. */
+int agent_keytocard (const char *hexgrip, int keyno, int force,
+                     const char *serialno, const char *timestamp);
+
 /* Send a SETATTR command to the SCdaemon. */
 int agent_scd_setattr (const char *name,
                        const unsigned char *value, size_t valuelen,
@@ -155,12 +159,14 @@ gpg_error_t agent_readkey (ctrl_t ctrl, int fromcard, const char *hexkeygrip,
 /* Create a signature.  */
 gpg_error_t agent_pksign (ctrl_t ctrl, const char *cache_nonce,
                           const char *hexkeygrip, const char *desc,
+                          u32 *keyid, u32 *mainkeyid, int pubkey_algo,
                           unsigned char *digest, size_t digestlen,
                           int digestalgo,
                           gcry_sexp_t *r_sigval);
 
 /* Decrypt a ciphertext.  */
 gpg_error_t agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
+                             u32 *keyid, u32 *mainkeyid, int pubkey_algo,
                              gcry_sexp_t s_ciphertext,
                              unsigned char **r_buf, size_t *r_buflen);
 
index 8358685..75208cc 100644 (file)
@@ -1264,6 +1264,7 @@ replace_existing_key_p (struct agent_card_info_s *info, int keyno)
       if ( !cpr_get_answer_is_yes( "cardedit.genkeys.replace_key",
                                   _("Replace existing key? (y/N) ")))
         return -1;
+      return 1;
     }
   return 0;
 }
@@ -1484,7 +1485,7 @@ card_generate_subkey (KBNODE pub_keyblock)
       tty_printf(_("Invalid selection.\n"));
     }
 
-  if (replace_existing_key_p (&info, keyno))
+  if (replace_existing_key_p (&info, keyno) < 0)
     {
       err = gpg_error (GPG_ERR_CANCELED);
       goto leave;
@@ -1531,152 +1532,99 @@ card_generate_subkey (KBNODE pub_keyblock)
 int
 card_store_subkey (KBNODE node, int use)
 {
-  log_info ("FIXME: card_store_subkey has not yet been implemented\n");
-/*   struct agent_card_info_s info; */
-/*   int okay = 0; */
-/*   int rc; */
-/*   int keyno, i; */
-/*   PKT_secret_key *copied_sk = NULL; */
-/*   PKT_secret_key *sk; */
-/*   size_t n; */
-/*   const char *s; */
-/*   int allow_keyno[3]; */
-/*   unsigned int nbits; */
-
-
-/*   assert (node->pkt->pkttype == PKT_SECRET_KEY */
-/*           || node->pkt->pkttype == PKT_SECRET_SUBKEY); */
-/*   sk = node->pkt->pkt.secret_key; */
-
-/*   if (get_info_for_key_operation (&info)) */
-/*     return 0; */
-
-/*   if (!info.extcap.ki) */
-/*     { */
-/*       tty_printf ("The card does not support the import of keys\n"); */
-/*       tty_printf ("\n"); */
-/*       goto leave; */
-/*     } */
-
-/*   show_card_key_info (&info); */
-
-/*   nbits = nbits_from_sk (sk); */
-
-/*   if (!is_RSA (sk->pubkey_algo) || (!info.is_v2 && nbits != 1024) ) */
-/*     { */
-/*       tty_printf ("You may only store a 1024 bit RSA key on the card\n"); */
-/*       tty_printf ("\n"); */
-/*       goto leave; */
-/*     } */
-
-/*   allow_keyno[0] = (!use || (use & (PUBKEY_USAGE_SIG))); */
-/*   allow_keyno[1] = (!use || (use & (PUBKEY_USAGE_ENC))); */
-/*   allow_keyno[2] = (!use || (use & (PUBKEY_USAGE_SIG|PUBKEY_USAGE_AUTH))); */
-
-/*   tty_printf (_("Please select where to store the key:\n")); */
-
-/*   if (allow_keyno[0]) */
-/*     tty_printf (_("   (1) Signature key\n")); */
-/*   if (allow_keyno[1]) */
-/*     tty_printf (_("   (2) Encryption key\n")); */
-/*   if (allow_keyno[2]) */
-/*     tty_printf (_("   (3) Authentication key\n")); */
-
-/*   for (;;)  */
-/*     { */
-/*       char *answer = cpr_get ("cardedit.genkeys.storekeytype", */
-/*                               _("Your selection? ")); */
-/*       cpr_kill_prompt(); */
-/*       if (*answer == CONTROL_D || !*answer) */
-/*         { */
-/*           xfree (answer); */
-/*           goto leave; */
-/*         } */
-/*       keyno = *answer? atoi(answer): 0; */
-/*       xfree(answer); */
-/*       if (keyno >= 1 && keyno <= 3 && allow_keyno[keyno-1]) */
-/*         { */
-/*           if (info.is_v2 && !info.extcap.aac  */
-/*               && info.key_attr[keyno-1].nbits != nbits) */
-/*             { */
-/*               tty_printf ("Key does not match the card's capability.\n"); */
-/*             } */
-/*           else */
-/*             break; /\* Okay. *\/ */
-/*         } */
-/*       else */
-/*         tty_printf(_("Invalid selection.\n")); */
-/*     } */
-
-/*   if (replace_existing_key_p (&info, keyno)) */
-/*     goto leave; */
-
-/*   /\* Unprotect key.  *\/ */
-/*   switch (is_secret_key_protected (sk) ) */
-/*     { */
-/*     case 0: /\* Not protected. *\/ */
-/*       break; */
-/*     case -1: */
-/*       log_error (_("unknown key protection algorithm\n")); */
-/*       goto leave; */
-/*     default: */
-/*       if (sk->protect.s2k.mode == 1001) */
-/*         { */
-/*           log_error (_("secret parts of key are not available\n")); */
-/*           goto leave; */
-/*     } */
-/*       if (sk->protect.s2k.mode == 1002) */
-/*         { */
-/*           log_error (_("secret key already stored on a card\n")); */
-/*           goto leave; */
-/*     } */
-/*       /\* We better copy the key before we unprotect it.  *\/ */
-/*       copied_sk = sk = copy_secret_key (NULL, sk); */
-/*       rc = 0/\*check_secret_key (sk, 0)*\/; */
-/*       if (rc) */
-/*         goto leave; */
-/*     } */
-
-/* #warning code save_unprotected_key_to_card */
-/*   /\* rc = save_unprotected_key_to_card (sk, keyno); *\/ */
-/*   /\* if (rc) *\/ */
-/*   /\*   { *\/ */
-/*   /\*     log_error (_("error writing key to card: %s\n"), gpg_strerror (rc)); *\/ */
-/*   /\*     goto leave; *\/ */
-/*   /\*   } *\/ */
-
-/*   /\* Get back to the maybe protected original secret key.  *\/ */
-/*   if (copied_sk) */
-/*     { */
-/*       free_secret_key (copied_sk); */
-/*       copied_sk = NULL;  */
-/*     } */
-/*   sk = node->pkt->pkt.secret_key; */
-
-/*   /\* Get rid of the secret key parameters and store the serial numer. *\/ */
-/*   n = pubkey_get_nskey (sk->pubkey_algo); */
-/*   for (i=pubkey_get_npkey (sk->pubkey_algo); i < n; i++) */
-/*     { */
-/*       gcry_mpi_release (sk->skey[i]); */
-/*       sk->skey[i] = NULL; */
-/*     } */
-/*   i = pubkey_get_npkey (sk->pubkey_algo); */
-/*   sk->skey[i] = gcry_mpi_set_opaque (NULL, xstrdup ("dummydata"), 10*8); */
-/*   sk->is_protected = 1; */
-/*   sk->protect.s2k.mode = 1002; */
-/*   s = info.serialno; */
-/*   for (sk->protect.ivlen=0; sk->protect.ivlen < 16 && *s && s[1]; */
-/*        sk->protect.ivlen++, s += 2) */
-/*     sk->protect.iv[sk->protect.ivlen] = xtoi_2 (s); */
-
-/*   okay = 1; */
-
-/*  leave: */
-/*   if (copied_sk) */
-/*     free_secret_key (copied_sk); */
-/*   agent_release_card_info (&info); */
-/*   return okay; */
-  return -1;
+  struct agent_card_info_s info;
+  int okay = 0;
+  unsigned int nbits;
+  int allow_keyno[3];
+  int  keyno;
+  PKT_public_key *pk;
+  gpg_error_t err;
+  char *hexgrip;
+  int rc;
+  gnupg_isotime_t timebuf;
+
+  assert (node->pkt->pkttype == PKT_PUBLIC_KEY
+          || node->pkt->pkttype == PKT_PUBLIC_SUBKEY);
+
+  pk = node->pkt->pkt.public_key;
+
+  if (get_info_for_key_operation (&info))
+    return 0;
+
+  if (!info.extcap.ki)
+    {
+      tty_printf ("The card does not support the import of keys\n");
+      tty_printf ("\n");
+      goto leave;
+    }
+
+  nbits = nbits_from_pk (pk);
+
+  if (!is_RSA (pk->pubkey_algo) || (!info.is_v2 && nbits != 1024) )
+    {
+      tty_printf ("You may only store a 1024 bit RSA key on the card\n");
+      tty_printf ("\n");
+      goto leave;
+    }
+
+  allow_keyno[0] = (!use || (use & (PUBKEY_USAGE_SIG)));
+  allow_keyno[1] = (!use || (use & (PUBKEY_USAGE_ENC)));
+  allow_keyno[2] = (!use || (use & (PUBKEY_USAGE_SIG|PUBKEY_USAGE_AUTH)));
+
+  tty_printf (_("Please select where to store the key:\n"));
+
+  if (allow_keyno[0])
+    tty_printf (_("   (1) Signature key\n"));
+  if (allow_keyno[1])
+    tty_printf (_("   (2) Encryption key\n"));
+  if (allow_keyno[2])
+    tty_printf (_("   (3) Authentication key\n"));
+
+  for (;;)
+    {
+      char *answer = cpr_get ("cardedit.genkeys.storekeytype",
+                              _("Your selection? "));
+      cpr_kill_prompt();
+      if (*answer == CONTROL_D || !*answer)
+        {
+          xfree (answer);
+          goto leave;
+        }
+      keyno = *answer? atoi(answer): 0;
+      xfree(answer);
+      if (keyno >= 1 && keyno <= 3 && allow_keyno[keyno-1])
+        {
+          if (info.is_v2 && !info.extcap.aac
+              && info.key_attr[keyno-1].nbits != nbits)
+            {
+              tty_printf ("Key does not match the card's capability.\n");
+            }
+          else
+            break; /* Okay. */
+        }
+      else
+        tty_printf(_("Invalid selection.\n"));
+    }
+
+  if ((rc = replace_existing_key_p (&info, keyno)) < 0)
+    goto leave;
+
+  err = hexkeygrip_from_pk (pk, &hexgrip);
+  if (err)
+    goto leave;
+
+  epoch2isotime (timebuf, (time_t)pk->timestamp);
+  agent_keytocard (hexgrip, keyno, rc, info.serialno, timebuf);
+
+  if (rc)
+    log_error (_("KEYTOCARD failed: %s\n"), gpg_strerror (rc));
+  else
+    okay = 1;
+  xfree (hexgrip);
+
+ leave:
+  agent_release_card_info (&info);
+  return okay;
 }
 
 
index 7e4339b..a19c9a7 100644 (file)
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -56,6 +56,7 @@
 #include "asshelp.h"
 #include "call-dirmngr.h"
 #include "../common/init.h"
+#include "../common/shareddefs.h"
 
 #if defined(HAVE_DOSISH_SYSTEM) || defined(__CYGWIN__)
 #define MY_O_BINARY  O_BINARY
@@ -217,6 +218,7 @@ enum cmd_and_opt_values
     oPassphraseFD,
     oPassphraseFile,
     oPassphraseRepeat,
+    oPinentryMode,
     oCommandFD,
     oCommandFile,
     oQuickRandom,
@@ -611,6 +613,7 @@ static ARGPARSE_OPTS opts[] = {
   ARGPARSE_s_i (oPassphraseFD,    "passphrase-fd", "@"),
   ARGPARSE_s_s (oPassphraseFile,  "passphrase-file", "@"),
   ARGPARSE_s_i (oPassphraseRepeat,"passphrase-repeat", "@"),
+  ARGPARSE_s_s (oPinentryMode,    "pinentry-mode", "@"),
   ARGPARSE_s_i (oCommandFD, "command-fd", "@"),
   ARGPARSE_s_s (oCommandFile, "command-file", "@"),
   ARGPARSE_s_n (oQuickRandom, "debug-quick-random", "@"),
@@ -2594,7 +2597,16 @@ main (int argc, char **argv)
          case oPassphraseFile:
             pwfd = open_info_file (pargs.r.ret_str, 0, 1);
             break;
-         case oPassphraseRepeat: opt.passphrase_repeat=pargs.r.ret_int; break;
+         case oPassphraseRepeat:
+            opt.passphrase_repeat = pargs.r.ret_int;
+            break;
+
+          case oPinentryMode:
+           opt.pinentry_mode = parse_pinentry_mode (pargs.r.ret_str);
+           if (opt.pinentry_mode == -1)
+              log_error (_("invalid pinentry mode '%s'\n"), pargs.r.ret_str);
+           break;
+
          case oCommandFD:
             opt.command_fd = translate_sys2libc_fd_int (pargs.r.ret_int, 0);
             break;
index fb36c81..39e7826 100644 (file)
@@ -181,6 +181,7 @@ unsigned char encode_s2k_iterations (int iterations);
 assuan_context_t agent_open (int try, const char *orig_codeset);
 void agent_close (assuan_context_t ctx);
 int  have_static_passphrase(void);
+const char *get_static_passphrase (void);
 void set_passphrase_from_string(const char *pass);
 void read_passphrase_from_fd( int fd );
 void passphrase_clear_cache ( u32 *keyid, const char *cacheid, int algo );
@@ -196,6 +197,8 @@ void set_next_passphrase( const char *s );
 char *get_last_passphrase(void);
 void next_to_last_passphrase(void);
 
+void emit_status_need_passphrase (u32 *keyid, u32 *mainkeyid, int pubkey_algo);
+
 char *gpg_format_keydesc (PKT_public_key *pk, int mode, int escaped);
 
 
index d25265a..15d3b76 100644 (file)
@@ -353,6 +353,8 @@ void unblock_all_signals(void);
 
 /*-- server.c --*/
 int gpg_server (ctrl_t);
+gpg_error_t gpg_proxy_pinentry_notify (ctrl_t ctrl,
+                                       const unsigned char *line);
 
 #ifdef ENABLE_CARD_SUPPORT
 /*-- card-util.c --*/
index d4824bc..d44d7a1 100644 (file)
@@ -242,6 +242,7 @@ struct
   } *auto_key_locate;
 
   int passphrase_repeat;
+  int pinentry_mode;
 } opt;
 
 /* CTRL is used to keep some global variables we currently can't
index cc56555..d872e36 100644 (file)
@@ -43,7 +43,7 @@
 #include "i18n.h"
 #include "status.h"
 #include "call-agent.h"
-
+#include "../common/shareddefs.h"
 
 static char *fd_passwd = NULL;
 static char *next_pw = NULL;
@@ -104,9 +104,21 @@ encode_s2k_iterations (int iterations)
 int
 have_static_passphrase()
 {
-  return !!fd_passwd && opt.batch;
+  return (!!fd_passwd
+          && (opt.batch || opt.pinentry_mode == PINENTRY_MODE_LOOPBACK));
+}
+
+/* Return a static passphrase.  The returned value is only valid as
+   long as no other passphrase related function is called.  NULL may
+   be returned if no passphrase has been set; better use
+   have_static_passphrase first.  */
+const char *
+get_static_passphrase (void)
+{
+  return fd_passwd;
 }
 
+
 /****************
  * Set the passphrase to be used for the next query and only for the next
  * one.
@@ -156,7 +168,7 @@ read_passphrase_from_fd( int fd )
   int i, len;
   char *pw;
 
-  if ( !opt.batch )
+  if ( !opt.batch && opt.pinentry_mode != PINENTRY_MODE_LOOPBACK)
     { /* Not used but we have to do a dummy read, so that it won't end
          up at the begin of the message if the quite usual trick to
          prepend the passphtrase to the message is used. */
@@ -187,7 +199,7 @@ read_passphrase_from_fd( int fd )
         break;
     }
   pw[i] = 0;
-  if (!opt.batch)
+  if (!opt.batch && opt.pinentry_mode != PINENTRY_MODE_LOOPBACK)
     tty_printf("\b\b\b   \n" );
 
   xfree ( fd_passwd );
@@ -458,30 +470,9 @@ passphrase_to_dek_ext (u32 *keyid, int pubkey_algo,
 
       if ( keyid )
         {
-          u32 used_kid[2];
-          char *us;
-
-          if ( keyid[2] && keyid[3] )
-            {
-              used_kid[0] = keyid[2];
-              used_kid[1] = keyid[3];
-            }
-          else
-            {
-              used_kid[0] = keyid[0];
-              used_kid[1] = keyid[1];
-            }
-
-          us = get_long_user_id_string ( keyid );
-          write_status_text ( STATUS_USERID_HINT, us );
-          xfree(us);
-
-          snprintf (buf, sizeof buf -1, "%08lX%08lX %08lX%08lX %d 0",
-                    (ulong)keyid[0], (ulong)keyid[1],
-                    (ulong)used_kid[0], (ulong)used_kid[1],
-                    pubkey_algo );
-
-          write_status_text ( STATUS_NEED_PASSPHRASE, buf );
+          emit_status_need_passphrase (keyid,
+                                       keyid[2] && keyid[3]? keyid+2:NULL,
+                                       pubkey_algo);
        }
       else
         {
@@ -614,6 +605,29 @@ passphrase_to_dek (u32 *keyid, int pubkey_algo,
 }
 
 
+/* Emit the USERID_HINT and the NEED_PASSPHRASE status messages.
+   MAINKEYID may be NULL. */
+void
+emit_status_need_passphrase (u32 *keyid, u32 *mainkeyid, int pubkey_algo)
+{
+  char buf[50];
+  char *us;
+
+  us = get_long_user_id_string (keyid);
+  write_status_text (STATUS_USERID_HINT, us);
+  xfree (us);
+
+  snprintf (buf, sizeof buf -1, "%08lX%08lX %08lX%08lX %d 0",
+            (ulong)keyid[0],
+            (ulong)keyid[1],
+            (ulong)(mainkeyid? mainkeyid[0]:keyid[0]),
+            (ulong)(mainkeyid? mainkeyid[1]:keyid[1]),
+            pubkey_algo);
+
+  write_status_text (STATUS_NEED_PASSPHRASE, buf);
+}
+
+
 /* Return an allocated utf-8 string describing the key PK.  If ESCAPED
    is true spaces and control characters are percent or plus escaped.
    MODE 0 is for the common prompt, MODE 1 for the import prompt. */
index a69536e..a328e1a 100644 (file)
@@ -201,7 +201,9 @@ get_it (PKT_pubkey_enc *enc, DEK *dek, PKT_public_key *sk, u32 *keyid)
 
   /* Decrypt. */
   desc = gpg_format_keydesc (sk, 0, 1);
-  err = agent_pkdecrypt (NULL, keygrip, desc, s_data, &frame, &nframe);
+  err = agent_pkdecrypt (NULL, keygrip,
+                         desc, sk->keyid, sk->main_keyid, sk->pubkey_algo,
+                         s_data, &frame, &nframe);
   xfree (desc);
   gcry_sexp_release (s_data);
   if (err)
index d8871d0..da9c28d 100644 (file)
@@ -50,6 +50,9 @@ struct server_local_s
   /* List of prepared recipients.  */
   pk_list_t recplist;
 
+  /* Set if pinentry notifications should be passed back to the
+     client. */
+  int allow_pinentry_notify;
 };
 
 
@@ -105,9 +108,8 @@ has_option (const char *line, const char *name)
 static gpg_error_t
 option_handler (assuan_context_t ctx, const char *key, const char *value)
 {
-/*   ctrl_t ctrl = assuan_get_pointer (ctx); */
+  ctrl_t ctrl = assuan_get_pointer (ctx);
 
-  (void)ctx;
   (void)value;
 
   /* Fixme: Implement the tty and locale args. */
@@ -136,6 +138,10 @@ option_handler (assuan_context_t ctx, const char *key, const char *value)
     {
       /* This is for now a dummy option. */
     }
+  else if (!strcmp (key, "allow-pinentry-notify"))
+    {
+      ctrl->server_local->allow_pinentry_notify = 1;
+    }
   else
     return gpg_error (GPG_ERR_UNKNOWN_OPTION);
 
@@ -768,3 +774,29 @@ gpg_server (ctrl_t ctrl)
   assuan_release (ctx);
   return rc;
 }
+
+
+/* Helper to notify the client about Pinentry events.  Because that
+   might disturb some older clients, this is only done when enabled
+   via an option.  If it is not enabled we tell Windows to allow
+   setting the foreground window right here.  Returns an gpg error
+   code. */
+gpg_error_t
+gpg_proxy_pinentry_notify (ctrl_t ctrl, const unsigned char *line)
+{
+  if (!ctrl || !ctrl->server_local
+      || !ctrl->server_local->allow_pinentry_notify)
+    {
+      gnupg_allow_set_foregound_window ((pid_t)strtoul (line+17, NULL, 10));
+      /* Client might be interested in that event - send as status line.  */
+      if (!strncmp (line, "PINENTRY_LAUNCHED", 17)
+          && (line[17]==' '||!line[17]))
+        {
+          for (line += 17; *line && spacep (line); line++)
+            ;
+          write_status_text (STATUS_PINENTRY_LAUNCHED, line);
+        }
+      return 0;
+    }
+  return assuan_inquire (ctrl->server_local->assuan_ctx, line, NULL, NULL, 0);
+}
index 6ff7df6..8944067 100644 (file)
@@ -272,6 +272,7 @@ do_sign (PKT_public_key *pksk, PKT_signature *sig,
 
       desc = gpg_format_keydesc (pksk, 0, 1);
       err = agent_pksign (NULL/*ctrl*/, cache_nonce, hexgrip, desc,
+                          pksk->keyid, pksk->main_keyid, pksk->pubkey_algo,
                           dp, gcry_md_get_algo_dlen (mdalgo), mdalgo,
                           &s_sigval);
       xfree (desc);
@@ -1604,6 +1605,8 @@ update_keysig_packet( PKT_signature **ret_sig,
     /* create a new signature packet */
     sig = copy_signature (NULL, orig_sig);
 
+    sig->digest_algo=digest_algo;
+
     /* We need to create a new timestamp so that new sig expiration
        calculations are done correctly... */
     sig->timestamp=make_timestamp();
index d7b4181..007f33f 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,5 +1,5 @@
 # Japanese messages for GnuPG
-# Copyright (C) 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2002, 2003, 2004, 2013 Free Software Foundation, Inc.
 # IIDA Yosiaki <iida@gnu.org>, 1999, 2000, 2002, 2003, 2004.
 # Yoshihiro Kajiki <kajiki@ylug.org>, 1999.
 # This file is distributed under the same license as the GnuPG package.
@@ -7,24 +7,39 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gnupg 1.3.92\n"
+"Project-Id-Version: gnupg 2.1\n"
 "Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"PO-Revision-Date: 2004-11-23 11:14+0900\n"
-"Last-Translator: IIDA Yosiaki <iida@gnu.org>\n"
+"PO-Revision-Date: 2013-02-12 13:30+0900\n"
+"Last-Translator: NIIBE Yutaka <gniibe@fsij.org>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"Language: ja\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=EUC-JP\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "failed to acquire the pinentry lock: %s\n"
-msgstr "»ØÌæ¤ÎÊݴɤ˼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "pinentryのロックの獲得に失敗しました: %s\n"
+
+#. 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
+#. a literal one.  The actual to be translated text starts after
+#. the second vertical bar.
+msgid "|pinentry-label|_OK"
+msgstr "|pinentry-label|_OK"
+
+msgid "|pinentry-label|_Cancel"
+msgstr "|pinentry-label|_キャンセル"
+
+msgid "|pinentry-label|PIN:"
+msgstr "|pinentry-label|PIN:"
 
 #. TRANSLATORS: This string is displayed by Pinentry as the label
 #. for the quality bar.
-#, fuzzy
 msgid "Quality:"
-msgstr "Í­¸úÀ­: %s"
+msgstr "品質: %s"
 
 #. TRANSLATORS: This string is a tooltip, shown by pinentry when
 #. hovering over the quality bar.  Please use an appropriate
@@ -33,177 +48,178 @@ msgstr "ͭ
 #. translate this entry, a default english text (see source)
 #. will be used.
 msgid "pinentry.qualitybar.tooltip"
-msgstr ""
+msgstr "pinentry.qualitybar.tooltip"
 
 msgid ""
 "Please enter your PIN, so that the secret key can be unlocked for this "
 "session"
 msgstr ""
+"あなたのPINを入力してください(このセッションで秘密鍵のロックを解除するために"
+"使われます)"
 
-#, fuzzy
 msgid ""
 "Please enter your passphrase, so that the secret key can be unlocked for "
 "this session"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤ÏÈëÌ©¤Îʸ¾Ï¤Î¤³¤È¤Ç¤¹ \n"
+msgstr ""
+"あなたのパスフレーズを入力してください(このセッションで秘密鍵のロックを解除す"
+"るために使われます)"
 
+#. 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.
 #, c-format
 msgid "SETERROR %s (try %d of %d)"
-msgstr ""
+msgstr "SETERROR %s (現在 %d / 最大 %d)"
 
-#, fuzzy
 msgid "PIN too long"
-msgstr "¹Ô¤¬Ä¹¤¹¤®¤Þ¤¹"
+msgstr "PINが長すぎます"
 
-#, fuzzy
 msgid "Passphrase too long"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤¬Ä¹¤¹¤®¤Þ¤¹\n"
+msgstr "パスフレーズが長すぎます"
 
-#, fuzzy
 msgid "Invalid characters in PIN"
-msgstr "̾Á°¤Ë̵¸ú¤Êʸ»ú¤¬¤¢¤ê¤Þ¤¹\n"
+msgstr "PINに無効な文字があります"
 
 msgid "PIN too short"
-msgstr ""
+msgstr "PINが短すぎます"
 
-#, fuzzy
 msgid "Bad PIN"
-msgstr "ÉÔÀµ¤ÊMPI¤Ç¤¹"
+msgstr "不正なPINです"
 
-#, fuzzy
 msgid "Bad Passphrase"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤¬ÉÔÀµ¤Ç¤¹"
+msgstr "パスフレーズが不正です"
 
-#, fuzzy
 msgid "Passphrase"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤¬ÉÔÀµ¤Ç¤¹"
+msgstr "パスフレーズ"
 
-#, fuzzy, c-format
+#, c-format
 msgid "ssh keys greater than %d bits are not supported\n"
-msgstr "ÊݸîÍ×Ìó%d¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó\n"
+msgstr "ssh鍵で%dビットより大きいものはサポートされません\n"
 
 #, c-format
-msgid "can't create '%s': %s\n"
-msgstr "¡Ö%s¡×¤¬ºîÀ®¤Ç¤­¤Þ¤»¤ó: %s\n"
+msgid "can't create `%s': %s\n"
+msgstr "'%s'が作成できません: %s\n"
 
 #, c-format
-msgid "can't open '%s': %s\n"
-msgstr "¡Ö%s¡×¤¬³«¤±¤Þ¤»¤ó: %s\n"
+msgid "can't open `%s': %s\n"
+msgstr "'%s'が開けません: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error getting serial number of card: %s\n"
-msgstr "ÄÌÈ֤μèÆÀ¥¨¥é¡¼: %s\n"
+msgstr "ã\82«ã\83¼ã\83\89ã\83»ã\82·ã\83ªã\82¢ã\83«ç\95ªå\8f·ã\81®å\8f\96å¾\97ã\82¨ã\83©ã\83¼: %s\n"
 
 #, c-format
 msgid "detected card with S/N: %s\n"
-msgstr ""
+msgstr "カードを検出しました。シリアル番号: %s\n"
 
-#, fuzzy, c-format
-msgid "error getting default authentication keyID of card: %s\n"
-msgstr "¸½¹Ô¸°¾ðÊó¤Î¼èÆÀ¥¨¥é¡¼: %s\n"
+#, c-format
+msgid "no authentication key for ssh on card: %s\n"
+msgstr "カードにsshの認証鍵がありません: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "no suitable card key found: %s\n"
-msgstr "½ñ¹þ¤ß²Äǽ¤ÊÈëÌ©¸°Îؤ¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %s\n"
+msgstr "適当なカードの鍵が見つかりません: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "shadowing the key failed: %s\n"
-msgstr "¸°¤ÎÆɽФ·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "鍵のシャドウ化に失敗しました: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error writing key: %s\n"
-msgstr "¸°ÎØ¡Ö%s¡×¤Î½ñ¹þ¤ß¥¨¥é¡¼: %s\n"
+msgstr "鍵の書き込みエラー: %s\n"
+
+#, c-format
+msgid ""
+"An ssh process requested the use of key%%0A  %s%%0A  (%s)%%0ADo you want to "
+"allow this?"
+msgstr ""
+"sshプロセスが以下の鍵の使用を要求しました:%%0A  %s%%0A  (%s)%%0Aこの使用を認"
+"めますか?"
+
+msgid "Allow"
+msgstr "許可する"
 
-#, fuzzy, c-format
-msgid "Please enter the passphrase for the ssh key%0A  %c"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤ÏÈëÌ©¤Îʸ¾Ï¤Î¤³¤È¤Ç¤¹ \n"
+msgid "Deny"
+msgstr "拒否する"
+
+#, c-format
+msgid "Please enter the passphrase for the ssh key%%0A  %F%%0A  (%c)"
+msgstr "以下のssh鍵に対するパスフレーズを入力してください:%%0A  %F%%0A  (%c)"
 
-#, fuzzy
 msgid "Please re-enter this passphrase"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤ÎÊѹ¹"
+msgstr "このパスフレーズをもう一度入力してください"
 
 #, c-format
 msgid ""
-"Please enter a passphrase to protect the received secret key%%0A   %s%%"
-"0Awithin gpg-agent's key storage"
+"Please enter a passphrase to protect the received secret key%%0A   %s%%0A   "
+"%s%%0Awithin gpg-agent's key storage"
 msgstr ""
+"パスフレーズを入力してください。gpg-agentの鍵の保管で受信した秘密鍵%%0A   %s"
+"%%0A   %s%%0Aを保護します。"
 
 msgid "does not match - try again"
-msgstr ""
+msgstr "一致しません - もう一度"
 
-#, fuzzy, c-format
+#, c-format
 msgid "failed to create stream from socket: %s\n"
-msgstr "%s: ¥Ï¥Ã¥·¥åɽ¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "ソケットからストリームを作成するのに失敗しました: %s\n"
 
-#, fuzzy
 msgid "Please insert the card with serial number"
-msgstr ""
-"º£¤Î¥«¡¼¥É¤òÈ´¤­¡¢¼¡¤ÎÄÌÈ֤Τ½¤ì¤òÆþ¤ì¤Æ¤¯¤À¤µ¤¤:\n"
-"   %.*s\n"
+msgstr "以下のシリアル番号のカードを挿入してください"
 
-#, fuzzy
 msgid "Please remove the current card and insert the one with serial number"
-msgstr ""
-"º£¤Î¥«¡¼¥É¤òÈ´¤­¡¢¼¡¤ÎÄÌÈ֤Τ½¤ì¤òÆþ¤ì¤Æ¤¯¤À¤µ¤¤:\n"
-"   %.*s\n"
+msgstr "今のカードを抜き、以下のシリアル番号のカードを挿入してください"
 
-#, fuzzy
 msgid "Admin PIN"
-msgstr "|A|Admin PIN"
+msgstr "管理者PIN"
 
 #. TRANSLATORS: A PUK is the Personal Unblocking Code
 #. used to unblock a PIN.
 msgid "PUK"
-msgstr ""
+msgstr "PUK"
 
 msgid "Reset Code"
-msgstr ""
+msgstr "Reset Code"
 
 #, c-format
-msgid "%s%%0A%%0AUse the reader's keypad for input."
-msgstr ""
+msgid "%s%%0A%%0AUse the reader's pinpad for input."
+msgstr "%s%%0A%%0Aリーダーのピンパッドを入力に使ってください。"
 
-#, fuzzy
 msgid "Repeat this Reset Code"
-msgstr "PIN¤òºÆÆþÎÏ: "
+msgstr "このReset Codeをもう一度入力してください"
 
-#, fuzzy
 msgid "Repeat this PUK"
-msgstr "PIN¤òºÆÆþÎÏ: "
+msgstr "このPUKをもう一度入力してください"
 
-#, fuzzy
 msgid "Repeat this PIN"
-msgstr "PIN¤òºÆÆþÎÏ: "
+msgstr "このPINをもう一度入力してください"
 
-#, fuzzy
 msgid "Reset Code not correctly repeated; try again"
-msgstr "PIN¤ò¤Á¤ã¤ó¤È·«¤êÊÖ¤·¤Æ¤¤¤Þ¤»¤ó¡£ºÆÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
+msgstr "Reset Codeが正しく繰り返されていません。もう一度"
 
-#, fuzzy
 msgid "PUK not correctly repeated; try again"
-msgstr "PIN¤ò¤Á¤ã¤ó¤È·«¤êÊÖ¤·¤Æ¤¤¤Þ¤»¤ó¡£ºÆÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
+msgstr "PUKが正しく繰り返されていません。もう一度"
 
 msgid "PIN not correctly repeated; try again"
-msgstr "PIN¤ò¤Á¤ã¤ó¤È·«¤êÊÖ¤·¤Æ¤¤¤Þ¤»¤ó¡£ºÆÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
+msgstr "PINが正しく繰り返されていません。もう一度"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Please enter the PIN%s%s%s to unlock the card"
-msgstr "PIN [½ð̾ºÑ: %lu]"
+msgstr "カードのロックを解除するためにPIN%s%s%sを入力してください"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error creating temporary file: %s\n"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "ä¸\80æ\99\82ã\83\95ã\82¡ã\82¤ã\83«ã\81®ä½\9cæ\88\90ã\82¨ã\83©ã\83¼: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error writing to temporary file: %s\n"
-msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê¡¼¡¦¥ì¥³¡¼¥É¤Î½ñ¹þ¤ß¥¨¥é¡¼: %s\n"
+msgstr "ä¸\80æ\99\82ã\83\95ã\82¡ã\82¤ã\83«ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\82¨ã\83©ã\83¼: %s\n"
 
-#, fuzzy
 msgid "Enter new passphrase"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤òÆþÎÏ\n"
+msgstr "新しいパスフレーズを入力してください"
 
-#, fuzzy
 msgid "Take this one anyway"
-msgstr "¤½¤ì¤Ç¤â¤³¤Î¸°¤ò»È¤¤¤Þ¤¹¤«? (y/N) "
+msgstr "それでもこれを使います"
 
 #, c-format
 msgid ""
@@ -213,7 +229,8 @@ msgid_plural ""
 "Warning: You have entered an insecure passphrase.%%0AA passphrase should be "
 "at least %u characters long."
 msgstr[0] ""
-msgstr[1] ""
+"警告: 安全とは言えないパスフレーズが入力されました。%%0Aパスフレーズは最低%u"
+"文字であるべきです。"
 
 #, c-format
 msgid ""
@@ -223,257 +240,256 @@ msgid_plural ""
 "Warning: You have entered an insecure passphrase.%%0AA passphrase should "
 "contain at least %u digits or%%0Aspecial characters."
 msgstr[0] ""
-msgstr[1] ""
+"警告: 安全とは言えないパスフレーズが入力されました。%%0Aパスフレーズは最低%u"
+"文字の数字もしくは%%0A特殊文字を含むべきです。"
 
 #, c-format
 msgid ""
 "Warning: You have entered an insecure passphrase.%%0AA passphrase may not be "
 "a known term or match%%0Acertain pattern."
 msgstr ""
+"警告: 安全とは言えないパスフレーズが入力されました。%%0Aパスフレーズには、よ"
+"く知られている用語や%%0A特定のパターンにマッチするものは避けましょう。"
 
 #, c-format
 msgid ""
 "You have not entered a passphrase!%0AAn empty passphrase is not allowed."
 msgstr ""
+"パスフレーズが入力されませんでした!%0A空のパスフレーズは認められません。"
 
 #, c-format
 msgid ""
 "You have not entered a passphrase - this is in general a bad idea!%0APlease "
 "confirm that you do not want to have any protection on your key."
 msgstr ""
+"パスフレーズが入力されませんでした - 通常これは良くない考えです!%0A鍵に何の保"
+"護も必要としないことを確認ください。"
 
 msgid "Yes, protection is not needed"
-msgstr ""
+msgstr "はい、保護は必要ありません"
 
-#, fuzzy, c-format
-msgid "Please enter the passphrase to%0Ato protect your new key"
-msgstr ""
-"ÈëÌ©¸°¤òÊݸ¤ë¤¿¤á¤Ë¥Ñ¥¹¥Õ¥ì¡¼¥º¤¬¤¤¤ê¤Þ¤¹¡£\n"
-"\n"
+#, c-format
+msgid "Please enter the passphrase to%0Aprotect your new key"
+msgstr "新しい鍵を保護するために、%0Aパスフレーズを入力してください。"
 
-#, fuzzy
 msgid "Please enter the new passphrase"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤ÎÊѹ¹"
+msgstr "新しいパスフレーズを入力してください"
 
-#, fuzzy
 msgid ""
 "@Options:\n"
 " "
 msgstr ""
-"@\n"
-"¥ª¥×¥·¥ç¥ó:\n"
+"@オプション:\n"
 " "
 
 msgid "run in server mode (foreground)"
-msgstr ""
+msgstr "サーバ・モードで実行 (フォアグラウンド)"
 
 msgid "run in daemon mode (background)"
-msgstr ""
+msgstr "デーモン・モードで実行 (バックグラウンド)"
 
 msgid "verbose"
-msgstr "¾éĹ"
+msgstr "冗長"
 
 msgid "be somewhat more quiet"
-msgstr "¤ä¤äÀŤ«"
+msgstr "いくらかおとなしく"
 
 msgid "sh-style command output"
-msgstr ""
+msgstr "sh-形式のコマンド出力"
 
 msgid "csh-style command output"
-msgstr ""
+msgstr "csh-形式のコマンド出力"
 
-#, fuzzy
 msgid "|FILE|read options from FILE"
-msgstr "¡Ö%s¡×¤«¤é¥ª¥×¥·¥ç¥ó¤òÆɤ߽Ф·¤Þ¤¹\n"
+msgstr "|FILE|FILEからオプションを読み込みます"
 
 msgid "do not detach from the console"
-msgstr ""
+msgstr "コンソールからデタッチしない"
 
 msgid "do not grab keyboard and mouse"
-msgstr ""
+msgstr "キーボードとマウスを占有しない"
 
-#, fuzzy
 msgid "use a log file for the server"
-msgstr "¸°¥µ¡¼¥Ð¡¼¤Î¸°¤ò¸¡º÷¤¹¤ë"
+msgstr "サーバのログ・ファイルを使う"
 
-#, fuzzy
 msgid "use a standard location for the socket"
-msgstr "ÁªÂò¤·¤¿¥æ¡¼¥¶¡¼ID¤ÎÁª¹¥¤òËÜÅö¤Ë¹¹¿·¤·¤Þ¤¹¤«? (y/N) "
+msgstr "ソケットに標準の場所を使う"
 
 msgid "|PGM|use PGM as the PIN-Entry program"
-msgstr ""
+msgstr "|PGM|PGMをPIN入力プログラムとして使う"
 
 msgid "|PGM|use PGM as the SCdaemon program"
-msgstr ""
+msgstr "|PGM|PGMをSCdaemonプログラムとして使う"
 
-#, fuzzy
 msgid "do not use the SCdaemon"
-msgstr "¿®Íѥǡ¼¥¿¥Ù¡¼¥¹¤ò¹¹¿·"
+msgstr "SCdaemonを使わない"
 
 msgid "ignore requests to change the TTY"
-msgstr ""
+msgstr "TTYの変更要求を無視する"
 
 msgid "ignore requests to change the X display"
-msgstr ""
+msgstr "Xディスプレイの変更要求を無視する"
 
 msgid "|N|expire cached PINs after N seconds"
-msgstr ""
+msgstr "|N|N秒後に保持したPINを無効とする"
 
 msgid "do not use the PIN cache when signing"
-msgstr ""
+msgstr "署名に対してPINの保持を使わない"
 
 msgid "allow clients to mark keys as \"trusted\""
-msgstr ""
+msgstr "クライアントが鍵に\"trusted\"マークをつけることを認める"
 
-#, fuzzy
 msgid "allow presetting passphrase"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "パスフレーズの事前設定を認める"
 
 msgid "enable ssh-agent emulation"
-msgstr ""
+msgstr "ssh-agentエミュレーションを有効とする"
 
 msgid "|FILE|write environment settings also to FILE"
-msgstr ""
+msgstr "|FILE|FILEに環境変数の設定も書き出す"
 
 #. TRANSLATORS: @EMAIL@ will get replaced by the actual bug
 #. reporting address.  This is so that we can change the
 #. reporting address without breaking the translations.
 msgid "Please report bugs to <@EMAIL@>.\n"
-msgstr "¥Ð¥°¤ò¸«¤Ä¤±¤¿¤é <@EMAIL@> ¤Þ¤Ç¤´Êó¹ð¤¯¤À¤µ¤¤¡£\n"
+msgstr "バグは <@EMAIL@> までご報告ください。\n"
 
-#, fuzzy
 msgid "Usage: gpg-agent [options] (-h for help)"
-msgstr "»È¤¤Êý: gpg [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë] (¥Ø¥ë¥×¤Ï -h)"
+msgstr "使い方: gpg-agent [オプション] (ヘルプは -h)"
 
 msgid ""
 "Syntax: gpg-agent [options] [command [args]]\n"
 "Secret key management for GnuPG\n"
 msgstr ""
+"形式: gpg-agent [オプション] [コマンド [引数]]\n"
+"GnuPGの秘密鍵の管理\n"
 
 #, c-format
 msgid "invalid debug-level '%s' given\n"
-msgstr ""
+msgstr "無効なdebug-level '%s'が与えられました\n"
 
 #, c-format
 msgid "%s is too old (need %s, have %s)\n"
-msgstr ""
+msgstr "%s が古すぎます (%s が必要、現在 %s)\n"
 
 #, c-format
 msgid "NOTE: no default option file '%s'\n"
-msgstr "Ãí°Õ: ´ûÄê¤Î¥ª¥×¥·¥ç¥ó¡¦¥Õ¥¡¥¤¥ë¡Ö%s¡×¤¬¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "*注意*: デフォルトのオプション・ファイル '%s' がありません\n"
 
 #, c-format
 msgid "option file '%s': %s\n"
-msgstr "¥ª¥×¥·¥ç¥ó¡¦¥Õ¥¡¥¤¥ë¡Ö%s¡×: %s\n"
+msgstr "オプション・ファイル '%s': %s\n"
 
 #, c-format
 msgid "reading options from '%s'\n"
-msgstr "¡Ö%s¡×¤«¤é¥ª¥×¥·¥ç¥ó¤òÆɤ߽Ф·¤Þ¤¹\n"
+msgstr "'%s' からオプションを読み込みます\n"
+
+#, c-format
+msgid "NOTE: '%s' is not considered an option\n"
+msgstr "*注意*: '%s'はオプションとは考えられません\n"
 
 #, c-format
 msgid "error creating '%s': %s\n"
-msgstr "¡Ö%s¡×¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "'%s'ã\81®ä½\9cæ\88\90ã\82¨ã\83©ã\83¼: %s\n"
 
 #, c-format
 msgid "can't create directory '%s': %s\n"
-msgstr "¥Ç¥£¥ì¥¯¥È¥ê¡¼¡Ö%s¡×¤¬ºîÀ®¤Ç¤­¤Þ¤»¤ó: %s\n"
+msgstr "ディレクトリ'%s'が作成できません: %s\n"
 
 msgid "name of socket too long\n"
-msgstr ""
+msgstr "ソケット名が長すぎます\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "can't create socket: %s\n"
-msgstr "¡Ö%s¡×¤¬ºîÀ®¤Ç¤­¤Þ¤»¤ó: %s\n"
+msgstr "ソケットが作成できません: %s\n"
 
 #, c-format
 msgid "socket name '%s' is too long\n"
-msgstr ""
+msgstr "ソケット名'%s'は長すぎます\n"
 
-#, fuzzy
 msgid "a gpg-agent is already running - not starting a new one\n"
-msgstr "¤³¤Î¥»¥Ã¥·¥ç¥ó¤Çgpg-agent¤Ï̵¸ú¤Ç¤¹\n"
+msgstr "gpg-agentは既に実行されています - 新しいものをスタートさせません\n"
 
-#, fuzzy
 msgid "error getting nonce for the socket\n"
-msgstr "¿·¤·¤¤PIN¤Î¼èÆÀ¥¨¥é¡¼: %s\n"
+msgstr "ソケットのナンス取得エラー\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error binding socket to '%s': %s\n"
-msgstr "¡Ö%s¡×¤Ç¿®Íѥ쥳¡¼¥É¤Î¸¡º÷¥¨¥é¡¼: %s\n"
+msgstr "'%s'ã\81§ã\82½ã\82±ã\83\83ã\83\88ã\81®ã\83\90ã\82¤ã\83³ã\83\89ã\81®ã\82¨ã\83©ã\83¼: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "listen() failed: %s\n"
-msgstr "¹¹¿·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "listen() に失敗しました: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "listening on socket '%s'\n"
-msgstr "¡Ö%s¡×¤ØÈëÌ©¸°¤ò½ñ¤­¹þ¤ß¤Þ¤¹\n"
+msgstr "ソケット'%s'でlisten\n"
 
 #, c-format
 msgid "directory '%s' created\n"
-msgstr "¥Ç¥£¥ì¥¯¥È¥ê¡¼¡Ö%s¡×¤¬¤Ç¤­¤Þ¤·¤¿\n"
+msgstr "ディレクトリ'%s'が作成されました\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "stat() failed for '%s': %s\n"
-msgstr "fstat(%d)¤¬%s¤Ç¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "'%s'でstat()が失敗しました: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "can't use '%s' as home directory\n"
-msgstr "¥Ç¥£¥ì¥¯¥È¥ê¡¼¡Ö%s¡×¤¬ºîÀ®¤Ç¤­¤Þ¤»¤ó: %s\n"
+msgstr "'%s'をホーム・ディレクトリに使えません\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error reading nonce on fd %d: %s\n"
-msgstr "¡Ö%s¡×¤ÎÆɽФ·¥¨¥é¡¼: %s\n"
+msgstr "fd %dã\81§ã\83\8aã\83³ã\82¹ã\81®èª­ã\81¿è¾¼ã\81¿ã\82¨ã\83©ã\83¼: %s\n"
 
 #, c-format
 msgid "handler 0x%lx for fd %d started\n"
-msgstr ""
+msgstr "ハンドラ0x%lx (fd %d に対する)が開始\n"
 
 #, c-format
 msgid "handler 0x%lx for fd %d terminated\n"
-msgstr ""
+msgstr "ハンドラ0x%lx (fd %d に対する)が終了\n"
 
 #, c-format
 msgid "ssh handler 0x%lx for fd %d started\n"
-msgstr ""
+msgstr "ssh ハンドラ0x%lx (fd %d に対する)が開始\n"
 
 #, c-format
 msgid "ssh handler 0x%lx for fd %d terminated\n"
-msgstr ""
+msgstr "ssh ハンドラ0x%lx (fd %d に対する)が終了\n"
 
-#, fuzzy, c-format
-msgid "pth_select failed: %s - waiting 1s\n"
-msgstr "ÈëÌ©¤Î¹¹¿·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+#, c-format
+msgid "npth_pselect failed: %s - waiting 1s\n"
+msgstr "npth_pselectに失敗しました: %s - 一秒待ちます\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s %s stopped\n"
-msgstr "%s: ¥¹¥­¥Ã¥×: %s\n"
+msgstr "%s %s 停止しました\n"
 
-#, fuzzy
 msgid "no gpg-agent running in this session\n"
-msgstr "¤³¤Î¥»¥Ã¥·¥ç¥ó¤Çgpg-agent¤Ï̵¸ú¤Ç¤¹\n"
+msgstr "このセッションでgpg-agentは実行されていません\n"
 
 msgid "malformed GPG_AGENT_INFO environment variable\n"
-msgstr "GPG_AGENT_INFO´Ä¶­ÊÑ¿ô¤Î½ñ¼°¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "GPG_AGENT_INFO環境変数が壊れています\n"
 
 #, c-format
 msgid "gpg-agent protocol version %d is not supported\n"
-msgstr "gpg-agent¥×¥í¥È¥³¥ë¡¦¥Ð¡¼¥¸¥ç¥ó%d¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó\n"
+msgstr "gpg-agentプロトコル・バージョン%dはサポートされていません\n"
 
-#, fuzzy
 msgid "Usage: gpg-preset-passphrase [options] KEYGRIP (-h for help)\n"
-msgstr "»È¤¤Êý: gpg [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë] (¥Ø¥ë¥×¤Ï -h)"
+msgstr "使い方: gpg-preset-passphrase [オプション] KEYGRIP (ヘルプは -h)\n"
 
 msgid ""
 "Syntax: gpg-preset-passphrase [options] KEYGRIP\n"
 "Password cache maintenance\n"
 msgstr ""
+"形式: gpg-preset-passphrase [オプション] KEYGRIP\n"
+"パスワードキャッシュの管理\n"
 
 msgid ""
 "@Commands:\n"
 " "
 msgstr ""
-"@¥³¥Þ¥ó¥É:\n"
+"@コマンド:\n"
 " "
 
 msgid ""
@@ -482,79 +498,80 @@ msgid ""
 " "
 msgstr ""
 "@\n"
-"¥ª¥×¥·¥ç¥ó:\n"
+"オプション:\n"
 " "
 
-#, fuzzy
 msgid "Usage: gpg-protect-tool [options] (-h for help)\n"
-msgstr "»È¤¤Êý: gpg [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë] (¥Ø¥ë¥×¤Ï -h)"
+msgstr "使い方: gpg-protect-tool [オプション] (ヘルプは -h)\n"
 
 msgid ""
 "Syntax: gpg-protect-tool [options] [args]\n"
 "Secret key maintenance tool\n"
 msgstr ""
+"形式: gpg-protect-tool [オプション] [引数]\n"
+"秘密鍵管理ツール\n"
 
-#, fuzzy
 msgid "Please enter the passphrase to unprotect the PKCS#12 object."
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤ÏÈëÌ©¤Îʸ¾Ï¤Î¤³¤È¤Ç¤¹ \n"
+msgstr "パスフレーズを入力してください。PKCS#12オブジェクトを解除します。"
 
-#, fuzzy
 msgid "Please enter the passphrase to protect the new PKCS#12 object."
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤ÏÈëÌ©¤Îʸ¾Ï¤Î¤³¤È¤Ç¤¹ \n"
+msgstr ""
+"パスフレーズを入力してください。新しいPKCS#12オブジェクトを解除します。"
 
 msgid ""
 "Please enter the passphrase to protect the imported object within the GnuPG "
 "system."
 msgstr ""
+"GnuPGシステムにインポートされたオブジェクトを保護するためにパスフレーズを入力"
+"してください"
 
-#, fuzzy
 msgid ""
 "Please enter the passphrase or the PIN\n"
 "needed to complete this operation."
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤ÏÈëÌ©¤Îʸ¾Ï¤Î¤³¤È¤Ç¤¹ \n"
+msgstr ""
+"パスフレーズまたはPINを入力してください。\n"
+"この操作を完了するのに必要です。"
 
-#, fuzzy
 msgid "Passphrase:"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤¬ÉÔÀµ¤Ç¤¹"
+msgstr "パスフレーズ:"
 
-#, fuzzy
 msgid "cancelled\n"
-msgstr "¥­¥ã¥ó¥»¥ë"
+msgstr "キャンセルされました\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error while asking for the passphrase: %s\n"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "ã\83\91ã\82¹ã\83\95ã\83¬ã\83¼ã\82ºã\82\92å\95\8fã\81\84å\90\88ã\82\8fã\81\9bã\81\99ã\82\8bé\9a\9bã\80\81ã\82¨ã\83©ã\83¼: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error opening '%s': %s\n"
-msgstr "¡Ö%s¡×¤Ç¥¨¥é¡¼: %s\n"
+msgstr "'%s'ã\82\92é\96\8bã\81\8fé\9a\9bã\80\81ã\82¨ã\83©ã\83¼: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "file '%s', line %d: %s\n"
-msgstr "¥ª¥×¥·¥ç¥ó¡¦¥Õ¥¡¥¤¥ë¡Ö%s¡×: %s\n"
+msgstr "ファイル'%s'(行 %d): %s\n"
 
 #, c-format
 msgid "statement \"%s\" ignored in '%s', line %d\n"
-msgstr ""
+msgstr "ステートメント \"%s\" は'%s'で無視されました(行 %d)\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "system trustlist '%s' not available\n"
-msgstr "ÈëÌ©Éôʬ¤¬ÆÀ¤é¤ì¤Þ¤»¤ó\n"
+msgstr "システム信用リスト'%s'が得られません\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "bad fingerprint in '%s', line %d\n"
-msgstr "¡Ö%s¡×¤ÇÆɽФ·¥¨¥é¡¼: %s\n"
+msgstr "'%s'の不正なフィンガープリント (行 %d)\n"
 
 #, c-format
 msgid "invalid keyflag in '%s', line %d\n"
-msgstr ""
+msgstr "'%s'の無効な鍵フラグ(行 %d)\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error reading '%s', line %d: %s\n"
-msgstr "¡Ö%s¡×¤ÎÆɽФ·¥¨¥é¡¼: %s\n"
+msgstr "'%s'の読み込みエラー(行 %d): %s\n"
 
 msgid "error reading list of trusted root certificates\n"
-msgstr ""
+msgstr "信用されたルート証明書のリストの読み込みエラ−\n"
 
 #. TRANSLATORS: This prompt is shown by the Pinentry
 #. and has one special property: A "%%0A" is used by
@@ -568,14 +585,13 @@ msgstr ""
 msgid ""
 "Do you ultimately trust%%0A  \"%s\"%%0Ato correctly certify user "
 "certificates?"
-msgstr ""
+msgstr "究極的にこれを信用し%%0A  \"%s\"%%0A正にユーザの証明書と保証しますか?"
 
-#, fuzzy
 msgid "Yes"
-msgstr "yes"
+msgstr "はい"
 
 msgid "No"
-msgstr ""
+msgstr "いいえ"
 
 #. TRANSLATORS: This prompt is shown by the Pinentry and has
 #. one special property: A "%%0A" is used by Pinentry to
@@ -590,106 +606,131 @@ msgid ""
 "Please verify that the certificate identified as:%%0A  \"%s\"%%0Ahas the "
 "fingerprint:%%0A  %s"
 msgstr ""
+"確認してください。証明書:%%0A  \"%s\"%%0Aは下記のフィンガー・プリントを持つ:"
+"%%0A  %s"
 
 #. TRANSLATORS: "Correct" is the label of a button and intended
 #. to be hit if the fingerprint matches the one of the CA.  The
 #. other button is "the default "Cancel" of the Pinentry.
 msgid "Correct"
-msgstr ""
+msgstr "正しい"
 
 msgid "Wrong"
-msgstr ""
+msgstr "誤り"
 
 #, c-format
 msgid "Note: This passphrase has never been changed.%0APlease change it now."
-msgstr ""
+msgstr "注意: パスフレーズは変更されていません。%0A今、変更してください。"
 
 #, c-format
 msgid ""
 "This passphrase has not been changed%%0Asince %.4s-%.2s-%.2s.  Please change "
 "it now."
 msgstr ""
+"このパスフレーズは%.4s-%.2s-%.2sから変更されていません。%%0A今、変更してくだ"
+"さい。"
 
-#, fuzzy
 msgid "Change passphrase"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤ÎÊѹ¹"
+msgstr "パスフレーズを変更する"
 
 msgid "I'll change it later"
-msgstr ""
+msgstr "後で変更する"
+
+msgid "DSA requires the hash length to be a multiple of 8 bits\n"
+msgstr "DSAは8ビットの倍数のハッシュ長を必要とします\n"
+
+#, c-format
+msgid "%s key uses an unsafe (%u bit) hash\n"
+msgstr "%s 鍵は安全でない(%uビット)ハッシュを使用しています\n"
 
-#, fuzzy, c-format
+#, c-format
+msgid "a %zu bit hash is not valid for a %u bit %s key\n"
+msgstr "%zuビットのハッシュは%uビットの%s鍵には無効です\n"
+
+msgid "secret key parts are not available\n"
+msgstr "秘密部分が得られません\n"
+
+#, c-format
+msgid "public key algorithm %d (%s) is not supported\n"
+msgstr "公開鍵アルゴリズム%d (%s)はサポートされていません\n"
+
+#, c-format
+msgid "protection algorithm %d (%s) is not supported\n"
+msgstr "保護アルゴリズム%d (%s)はサポートされていません\n"
+
+#, c-format
+msgid "protection hash algorithm %d (%s) is not supported\n"
+msgstr "保護ハッシュ・アルゴリズム%d (%s)はサポートされていません\n"
+
+#, c-format
 msgid "error creating a pipe: %s\n"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "ã\83\91ã\82¤ã\83\97ã\81®ä½\9cæ\88\90ã\82¨ã\83©ã\83¼: %s\n"
 
-#, fuzzy, c-format
-msgid "can't fdopen pipe for reading: %s\n"
-msgstr "½ð̾¤µ¤ì¤¿¥Ç¡¼¥¿¡Ö%s¡×¤¬³«¤±¤Þ¤»¤ó\n"
+#, c-format
+msgid "error creating a stream for a pipe: %s\n"
+msgstr "パイプのストリーム作成エラー: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error forking process: %s\n"
-msgstr "¡Ö%s¡×¤ÎÆɽФ·¥¨¥é¡¼: %s\n"
+msgstr "ã\83\97ã\83­ã\82»ã\82¹forkã\82¨ã\83©ã\83¼: %s\n"
 
 #, c-format
 msgid "waiting for process %d to terminate failed: %s\n"
-msgstr ""
+msgstr "プロセス%dの終了待ちが失敗: %s\n"
 
-#, fuzzy, c-format
-msgid "error getting exit code of process %d: %s\n"
-msgstr "¸½¹Ô¸°¾ðÊó¤Î¼èÆÀ¥¨¥é¡¼: %s\n"
+#, c-format
+msgid "error running '%s': probably not installed\n"
+msgstr "'%s'の実行エラー: おそらくインストールされていません\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error running '%s': exit status %d\n"
-msgstr "¡Ö%s¡×¤ÎÆɽФ·¥¨¥é¡¼: %s\n"
+msgstr "'%s'の実行エラー: exitステイタス %d\n"
 
 #, c-format
-msgid "error running '%s': probably not installed\n"
-msgstr ""
-
-#, fuzzy, c-format
 msgid "error running '%s': terminated\n"
-msgstr "¡Ö%s¡×¤ÎÆɽФ·¥¨¥é¡¼: %s\n"
+msgstr "'%s'の実行エラー: 終了しました\n"
+
+#, c-format
+msgid "error getting exit code of process %d: %s\n"
+msgstr "プロセス %d のexitコード取得エラー: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error creating socket: %s\n"
-msgstr "¡Ö%s¡×¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "ã\82½ã\82±ã\83\83ã\83\88ä½\9cæ\88\90ã\82¨ã\83©ã\83¼: %s\n"
 
-#, fuzzy
 msgid "host not found"
-msgstr "[¥æ¡¼¥¶¡¼ID¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó]"
+msgstr "ホストが見つかりません"
 
 msgid "gpg-agent is not available in this session\n"
-msgstr "¤³¤Î¥»¥Ã¥·¥ç¥ó¤Çgpg-agent¤Ï̵¸ú¤Ç¤¹\n"
+msgstr "このセッションでgpg-agentは無効です\n"
 
 #, c-format
 msgid "can't connect to '%s': %s\n"
-msgstr "¡Ö%s¡×¤ØÀܳ¤Ç¤­¤Þ¤»¤ó: %s\n"
+msgstr "'%s'へ接続できません: %s\n"
 
 msgid "communication problem with gpg-agent\n"
-msgstr "gpg-agent¤È¤ÎÄÌ¿®¾ã³²\n"
+msgstr "gpg-agentとの通信障害\n"
 
-#, fuzzy
 msgid "problem setting the gpg-agent options\n"
-msgstr "¥¨¡¼¥¸¥§¥ó¥È¤Ë¾ã³²: ¥¨¡¼¥¸¥§¥ó¥È¤¬0x%lx¤òÊÖµÑ\n"
+msgstr "gpg-agentオプションの設定の問題\n"
 
-#, fuzzy
 msgid "canceled by user\n"
-msgstr "¥æ¡¼¥¶¡¼¤Ë¤è¤ë¼è¾Ã¤·\n"
+msgstr "ユーザによる取消し\n"
 
-#, fuzzy
 msgid "problem with the agent\n"
-msgstr "¥¨¡¼¥¸¥§¥ó¥È¤Ë¾ã³²: ¥¨¡¼¥¸¥§¥ó¥È¤¬0x%lx¤òÊÖµÑ\n"
+msgstr "エージェントに障害\n"
 
 #, c-format
 msgid "can't disable core dumps: %s\n"
-msgstr "¥³¥¢¡¦¥À¥ó¥×¤ò»ÈÍѶػߤˤǤ­¤Þ¤»¤ó: %s\n"
+msgstr "コア・ダンプを無効にできません: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Warning: unsafe ownership on %s \"%s\"\n"
-msgstr "·Ù¹ð: ³ÈÄ¥¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤½êÍ­¼Ô\n"
+msgstr "警告: '%s'の安全でない所有者 \"%s\"\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Warning: unsafe permissions on %s \"%s\"\n"
-msgstr "·Ù¹ð: ³ÈÄ¥¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤µö²Ä\n"
+msgstr "警告: '%s'の安全でない許可 \"%s\"\n"
 
 #. TRANSLATORS: See doc/TRANSLATE about this string.
 msgid "yes"
@@ -728,893 +769,988 @@ msgstr "cC"
 
 #, c-format
 msgid "out of core in secure memory while allocating %lu bytes"
-msgstr ""
+msgstr "%luバイトの確保においてセキュア・メモリが足りません"
 
 #, c-format
 msgid "out of core while allocating %lu bytes"
-msgstr ""
+msgstr "%luバイトの確保においてメモリが足りません"
 
-msgid "no running gpg-agent - starting one\n"
-msgstr ""
+#, c-format
+msgid "no running gpg-agent - starting '%s'\n"
+msgstr "gpg-agentが実行されていません - '%s'を開始します\n"
+
+#, c-format
+msgid "waiting for the agent to come up ... (%ds)\n"
+msgstr "agentの起動のため、%d秒待ちます\n"
+
+msgid "connection to agent established\n"
+msgstr "エージェントへの接続が確立しました。\n"
 
 msgid "can't connect to the agent - trying fall back\n"
-msgstr ""
+msgstr "agentに接続できません - フォールバックしてみます\n"
+
+#, c-format
+msgid "no running Dirmngr - starting '%s'\n"
+msgstr "dirmngrが動いていません - 開始します'%s'\n"
+
+#, c-format
+msgid "waiting for the dirmngr to come up ... (%ds)\n"
+msgstr "dirmngrの起動のため、%d秒待ちます\n"
+
+msgid "connection to the dirmngr established\n"
+msgstr "dirmngrへの接続が確立しました\n"
 
 #. TRANSLATORS: Copy the prefix between the vertical bars
 #. verbatim.  It will not be printed.
 msgid "|audit-log-result|Good"
-msgstr ""
+msgstr "|audit-log-result|良"
 
 msgid "|audit-log-result|Bad"
-msgstr ""
+msgstr "|audit-log-result|不良"
 
 msgid "|audit-log-result|Not supported"
-msgstr ""
+msgstr "|audit-log-result|サポートされてません"
 
-#, fuzzy
 msgid "|audit-log-result|No certificate"
-msgstr "ÉÔÀµ¤Ê¾ÚÌÀ½ñ¤Ç¤¹"
+msgstr "|audit-log-result|証明書がありません"
 
-#, fuzzy
 msgid "|audit-log-result|Not enabled"
-msgstr "ÉÔÀµ¤Ê¾ÚÌÀ½ñ¤Ç¤¹"
+msgstr "|audit-log-result|有効となってません"
 
 msgid "|audit-log-result|Error"
-msgstr ""
+msgstr "|audit-log-result|エラー"
+
+msgid "|audit-log-result|Not used"
+msgstr "|audit-log-result|使われていません"
+
+msgid "|audit-log-result|Okay"
+msgstr "|audit-log-result|Okay"
+
+msgid "|audit-log-result|Skipped"
+msgstr "|audit-log-result|スキップされました"
+
+msgid "|audit-log-result|Some"
+msgstr "|audit-log-result|一部"
 
-#, fuzzy
 msgid "Certificate chain available"
-msgstr "ÉÔÀµ¤Ê¾ÚÌÀ½ñ¤Ç¤¹"
+msgstr "証明書のチェインが利用可能"
 
-#, fuzzy
 msgid "root certificate missing"
-msgstr "ÉÔÀµ¤Ê¾ÚÌÀ½ñ¤Ç¤¹"
+msgstr "ルート証明書がありません"
 
 msgid "Data encryption succeeded"
-msgstr ""
+msgstr "データ暗号化に成功しました"
 
-#, fuzzy
 msgid "Data available"
-msgstr "Á´Í­¸ú¥Ç¡¼¥¿¤òɽ¼¨"
+msgstr "データが利用可能"
 
-#, fuzzy
 msgid "Session key created"
-msgstr "%s: ¸°Îؤ¬¤Ç¤­¤Þ¤·¤¿\n"
+msgstr "セッション・キーが作成されました"
 
-#, fuzzy, c-format
+#, c-format
 msgid "algorithm: %s"
-msgstr "Í­¸úÀ­: %s"
+msgstr "アルゴリズム: %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "unsupported algorithm: %s"
-msgstr ""
-"\n"
-"¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥¢¥ë¥´¥ê¥º¥à:\n"
+msgstr "サポートされていないアルゴリズム: %s"
 
-#, fuzzy
 msgid "seems to be not encrypted"
-msgstr "°Å¹æ²½¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
+msgstr "暗号化されていないようです"
 
-#, fuzzy
 msgid "Number of recipients"
-msgstr "º£¤Î¼õ¼è¿Í:\n"
+msgstr "受取人の数"
 
 #, c-format
 msgid "Recipient %d"
-msgstr ""
+msgstr "受取人 %d"
 
 msgid "Data signing succeeded"
-msgstr ""
+msgstr "データ署名に成功しました"
+
+#, c-format
+msgid "data hash algorithm: %s"
+msgstr "データのハッシュ・アルゴリズム: %s"
+
+#, c-format
+msgid "Signer %d"
+msgstr "署名人 %d"
+
+#, c-format
+msgid "attr hash algorithm: %s"
+msgstr "属性のハッシュ・アルゴリズム: %s"
 
 msgid "Data decryption succeeded"
-msgstr ""
+msgstr "データ復号に成功しました"
+
+msgid "Encryption algorithm supported"
+msgstr "サポートされている暗号アルゴリズム"
 
-#, fuzzy
 msgid "Data verification succeeded"
-msgstr "½ð̾¤Î¸¡¾Ú¤ò¾Êά\n"
+msgstr "データ検証が成功しました"
 
-#, fuzzy
 msgid "Signature available"
-msgstr "%s¤Ë»Ü¤µ¤ì¤¿½ð̾\n"
+msgstr "署名が利用可能です"
 
-#, fuzzy
-msgid "Parsing signature succeeded"
-msgstr "¡È%s¡É¤«¤é¤ÎÀµ¤·¤¤½ð̾"
+msgid "Parsing data succeeded"
+msgstr "データのパーズに成功しました"
 
-#, fuzzy, c-format
-msgid "Bad hash algorithm: %s"
-msgstr "̵¸ú¤Ê¥Ï¥Ã¥·¥å¡¦¥¢¥ë¥´¥ê¥º¥à¡Ö%s¡×¤Ç¤¹\n"
+#, c-format
+msgid "bad data hash algorithm: %s"
+msgstr "不正なデータのハッシュ・アルゴリズム: %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Signature %d"
-msgstr "%s¤Ë»Ü¤µ¤ì¤¿½ð̾\n"
+msgstr "署名 %d"
 
-#, fuzzy
 msgid "Certificate chain valid"
-msgstr "¤³¤Î¸°¤ÏËþλ¤Ç¤¹!"
+msgstr "証明書のチェインは有効"
 
-#, fuzzy
 msgid "Root certificate trustworthy"
-msgstr "ÉÔÀµ¤Ê¾ÚÌÀ½ñ¤Ç¤¹"
+msgstr "信頼できるルート証明書"
 
-#, fuzzy
 msgid "no CRL found for certificate"
-msgstr "ÉÔÀµ¤Ê¾ÚÌÀ½ñ¤Ç¤¹"
+msgstr "証明書に対するCRLがありません"
 
-#, fuzzy
 msgid "the available CRL is too old"
-msgstr "°Ê²¼¤Ë¸°¤¬¤¢¤ê¤Þ¤¹: "
+msgstr "利用できるCRLは古すぎます"
 
-#, fuzzy
 msgid "CRL/OCSP check of certificates"
-msgstr "ÉÔÀµ¤Ê¾ÚÌÀ½ñ¤Ç¤¹"
+msgstr "証明書のCRL/OCSP確認"
 
-#, fuzzy
 msgid "Included certificates"
-msgstr "ÉÔÀµ¤Ê¾ÚÌÀ½ñ¤Ç¤¹"
+msgstr "含まれる証明書"
 
 msgid "No audit log entries."
-msgstr ""
+msgstr "監査ログのエントリはありません。"
 
-#, fuzzy
 msgid "Unknown operation"
-msgstr "̤ÃΤΥС¼¥¸¥ç¥ó¤Ç¤¹"
+msgstr "不明な操作"
 
 msgid "Gpg-Agent usable"
-msgstr ""
+msgstr "Gpg-Agent利用可能"
 
 msgid "Dirmngr usable"
-msgstr ""
+msgstr "Dirmngr利用可能"
 
-#, fuzzy, c-format
+#, c-format
 msgid "No help available for '%s'."
-msgstr "¡Ö%s¡×¤Î¥Ø¥ë¥×¤Ï¤¢¤ê¤Þ¤»¤ó"
+msgstr "'%s'のヘルプはありません。"
+
+#, c-format
+msgid "can't open '%s': %s\n"
+msgstr "'%s'が開けません: %s\n"
 
-#, fuzzy
 msgid "ignoring garbage line"
-msgstr "¸åÈø¤Î¹Ô¤Ë¥¨¥é¡¼¤¬¤¢¤ê¤Þ¤¹\n"
+msgstr "ガベージ行を無視します"
 
-#, fuzzy
 msgid "[none]"
-msgstr "[̤ÀßÄê]"
+msgstr "[未設定]"
+
+msgid "argument not expected"
+msgstr "引数は期待されていません"
+
+msgid "read error"
+msgstr "読み込みエラー"
+
+msgid "keyword too long"
+msgstr "キーワードが長すぎます"
+
+msgid "missing argument"
+msgstr "引数ありません"
+
+msgid "invalid command"
+msgstr "無効なコマンド"
+
+msgid "invalid alias definition"
+msgstr "無効なエイリアス定義です"
+
+msgid "out of core"
+msgstr "メモリがありません"
+
+msgid "invalid option"
+msgstr "無効なオプション"
+
+#, c-format
+msgid "missing argument for option \"%.50s\"\n"
+msgstr "オプション\"%.50s\"に引数がありません\n"
+
+#, c-format
+msgid "option \"%.50s\" does not expect an argument\n"
+msgstr "オプション\"%.50s\"は引数をとりません\n"
+
+#, c-format
+msgid "invalid command \"%.50s\"\n"
+msgstr "無効なコマンド \"%.50s\"\n"
+
+#, c-format
+msgid "option \"%.50s\" is ambiguous\n"
+msgstr "オプション\"%.50s\"はあいまいです\n"
+
+#, c-format
+msgid "command \"%.50s\" is ambiguous\n"
+msgstr "コマンド\"%.50s\"はあいまいです\n"
+
+msgid "out of core\n"
+msgstr "メモリがありません\n"
+
+#, c-format
+msgid "invalid option \"%.50s\"\n"
+msgstr "無効なオプション \"%.50s\"\n"
+
+#, c-format
+msgid "you found a bug ... (%s:%d)\n"
+msgstr "あなたはバグを発見しました ... (%s:%d)\n"
+
+#, c-format
+msgid "error loading '%s': %s\n"
+msgstr "'%s'の読込みエラー: %s\n"
+
+#, c-format
+msgid "please see %s for more information\n"
+msgstr "詳細は%sをご覧ください\n"
+
+#, c-format
+msgid "conversion from '%s' to '%s' not available\n"
+msgstr "'%s'から'%s'への変換は利用できません\n"
+
+#, c-format
+msgid "iconv_open failed: %s\n"
+msgstr "iconv_openに失敗しました: %s\n"
+
+#, c-format
+msgid "conversion from '%s' to '%s' failed: %s\n"
+msgstr "'%s'から'%s'への変換に失敗: %s\n"
+
+#, c-format
+msgid "failed to create temporary file '%s': %s\n"
+msgstr "一時ファイル'%s'が作成できません: %s\n"
+
+#, c-format
+msgid "error writing to '%s': %s\n"
+msgstr "'%s'の書き込みエラー: %s\n"
+
+#, c-format
+msgid "can't create '%s': %s\n"
+msgstr "'%s'が作成できません: %s\n"
+
+#, c-format
+msgid "removing stale lockfile (created by %d)\n"
+msgstr "古い lockfile (%d により作成)を除去します\n"
+
+#, c-format
+msgid "waiting for lock (held by %d%s) %s...\n"
+msgstr "lockを待ちます (%d%s により保持) %s...\n"
+
+msgid "(deadlock?) "
+msgstr "(デッドロック?) "
+
+#, c-format
+msgid "lock '%s' not made: %s\n"
+msgstr "lock '%s' は作成されませんでした: %s\n"
+
+#, c-format
+msgid "waiting for lock %s...\n"
+msgstr "lock %s を待ちます...\n"
 
 #, c-format
 msgid "armor: %s\n"
-msgstr "ÊñÁõ: %s\n"
+msgstr "外装: %s\n"
 
 msgid "invalid armor header: "
-msgstr "̵¸ú¤ÊÊñÁõ¥Ø¥Ã¥À¡¼: "
+msgstr "ç\84¡å\8a¹ã\81ªå¤\96è£\85ã\83\98ã\83\83ã\83\80ã\83¼: "
 
 msgid "armor header: "
-msgstr "ÊñÁõ¥Ø¥Ã¥À¡¼: "
+msgstr "å¤\96è£\85ã\83\98ã\83\83ã\83\80ã\83¼: "
 
 msgid "invalid clearsig header\n"
-msgstr "̵¸ú¤Ê¥¯¥ê¥¢½ð̾¥Ø¥Ã¥À¡¼\n"
+msgstr "ç\84¡å\8a¹ã\81ªã\82¯ã\83ªã\82¢ã\83»ã\83\86ã\82¯ã\82¹ã\83\88ç½²å\90\8dã\83\98ã\83\83ã\83\80ã\83¼\n"
 
-#, fuzzy
 msgid "unknown armor header: "
-msgstr "ÊñÁõ¥Ø¥Ã¥À¡¼: "
+msgstr "ä¸\8dæ\98\8eã\81®å¤\96è£\85ã\83\98ã\83\83ã\83\80ã\83¼: "
 
 msgid "nested clear text signatures\n"
-msgstr "Æþ¤ì»Ò¤Î¥¯¥ê¥¢½ð̾\n"
+msgstr "入れ子のクリア・テクスト署名\n"
 
 msgid "unexpected armor: "
-msgstr "ͽ´ü¤»¤ÌÊñÁõ: "
+msgstr "予期せぬ外装: "
 
 msgid "invalid dash escaped line: "
-msgstr "̵¸ú¤Ê¥À¥Ã¥·¥å¤Ç¥¨¥¹¥±¡¼¥×¤µ¤ì¤¿¹Ô: "
+msgstr "無効なダッシュでエスケープされた行: "
 
 #, c-format
 msgid "invalid radix64 character %02X skipped\n"
-msgstr "̵¸ú¤Ê64¿Êʸ»ú%02X¤ò¤È¤Ð¤·¤Þ¤·¤¿\n"
+msgstr "無効な64進文字%02Xをスキップしました\n"
 
 msgid "premature eof (no CRC)\n"
-msgstr "¥Õ¥¡¥¤¥ëËöÈø¤¬Á᤹¤®¤Þ¤¹ (CRC¤¬¤¢¤ê¤Þ¤»¤ó)\n"
+msgstr "ファイル末尾が早すぎます (CRCがありません)\n"
 
 msgid "premature eof (in CRC)\n"
-msgstr "¥Õ¥¡¥¤¥ëËöÈø¤¬Á᤹¤®¤Þ¤¹ (CRC¤ÎÅÓÃæ)\n"
+msgstr "ファイル末尾が早すぎます (CRCの途中)\n"
 
 msgid "malformed CRC\n"
-msgstr "CRC¤Î½ñ¼°¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "CRCの書式が正しくありません\n"
 
 #, c-format
 msgid "CRC error; %06lX - %06lX\n"
-msgstr "CRC¥¨¥é¡¼¡£%06lX - %06lX\n"
+msgstr "CRCエラー。%06lX - %06lX\n"
 
 msgid "premature eof (in trailer)\n"
-msgstr "¥Õ¥¡¥¤¥ëËöÈø¤¬Á᤹¤®¤Þ¤¹ (¸åÈøÉô¤ÎÃæ¤Ë¤¢¤ê¤Þ¤¹)\n"
+msgstr "ファイル末尾が早すぎます (後尾部の中にあります)\n"
 
 msgid "error in trailer line\n"
-msgstr "¸åÈø¤Î¹Ô¤Ë¥¨¥é¡¼¤¬¤¢¤ê¤Þ¤¹\n"
+msgstr "後尾の行にエラーがあります\n"
 
 msgid "no valid OpenPGP data found.\n"
-msgstr "Í­¸ú¤ÊOpenPGP¥Ç¡¼¥¿¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n"
+msgstr "有効なOpenPGPデータが見つかりません。\n"
 
 #, c-format
 msgid "invalid armor: line longer than %d characters\n"
-msgstr "̵¸ú¤ÊÊñÁõ: ¹Ô¤ÎŤµ¤¬%dʸ»ú¤òĶ¤¨¤Æ¤¤¤Þ¤¹\n"
+msgstr "無効な外装: 行の長さが%d文字を超えています\n"
 
 msgid ""
 "quoted printable character in armor - probably a buggy MTA has been used\n"
 msgstr ""
-"ÊñÁõ¤ÎÃæ¤Ëquoted printableʸ»ú¤¬¤¢¤ê¤Þ¤¹¡£¤ª¤½¤é¤¯¥Ð¥°¤Î¤¢¤ë\n"
-"MTA¤ò»È¤Ã¤¿¤Î¤Ç¤·¤ç¤¦\n"
+"外装の中にquoted printable文字があります。おそらくバグのあるMTAが使われたので"
+"しょう\n"
 
 msgid ""
 "a notation name must have only printable characters or spaces, and end with "
 "an '='\n"
 msgstr ""
-"Ãí¼á̾¤Ë¤Ï°õ»ú²Äǽ¤Êʸ»ú¤«¶õÇò¤Î¤ß¤ò»È¤¤¡¢'='¤Ç½ª¤ï¤é¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó\n"
+"注釈名には印字可能な文字か空白のみを使い、'='で終わらなければなりません\n"
 
 msgid "a user notation name must contain the '@' character\n"
-msgstr "¥æ¡¼¥¶¡¼Ãí¼á̾¤Ï¡¢'@'ʸ»ú¤ò´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó\n"
+msgstr "ユーザ注釈名は、'@'文字を含まなければなりません\n"
 
-#, fuzzy
 msgid "a notation name must not contain more than one '@' character\n"
-msgstr "¥æ¡¼¥¶¡¼Ãí¼á̾¤Ï¡¢'@'ʸ»ú¤ò´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó\n"
+msgstr "ユーザ注釈名は、一つより大きい'@'文字を含んではなりません\n"
 
 msgid "a notation value must not use any control characters\n"
-msgstr "Ãí¼á̾¤ÎÃͤËÀ©¸æʸ»ú¤ò»È¤Ã¤Æ¤Ï¤¤¤±¤Þ¤»¤ó\n"
+msgstr "注釈名の値に制御文字を使ってはいけません\n"
 
 msgid "WARNING: invalid notation data found\n"
-msgstr "·Ù¹ð: Ìµ¸ú¤ÊÃí¼á¥Ç¡¼¥¿¤òȯ¸«\n"
+msgstr "*警告*: 無効な注釈データを発見\n"
 
 msgid "not human readable"
-msgstr "¿Í¤Ë¤ÏÆɤá¤Þ¤»¤ó"
+msgstr "人には読めません"
+
+#, c-format
+msgid "failed to proxy %s inquiry to client\n"
+msgstr "プロキシ%sのクライアントへの問い合わせが失敗しました\n"
+
+msgid "Enter passphrase: "
+msgstr "パスフレーズを入力: "
 
 #, c-format
 msgid "OpenPGP card not available: %s\n"
-msgstr "OpenPGP¥«¡¼¥É¤¬Ìµ¸ú¤Ç¤¹: %s\n"
+msgstr "OpenPGPカードが利用できません: %s\n"
 
 #, c-format
 msgid "OpenPGP card no. %s detected\n"
-msgstr "OpenPGP¥«¡¼¥Éno. %s¤ò¸¡½Ð\n"
+msgstr "OpenPGPカードno. %sを検出\n"
 
 msgid "can't do this in batch mode\n"
-msgstr "¤½¤ì¤Ï¥Ð¥Ã¥Á¡¦¥â¡¼¥É¤Ç¤Ï¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "それはバッチ・モードではできません\n"
 
-#, fuzzy
 msgid "This command is only available for version 2 cards\n"
-msgstr "%s¥â¡¼¥É¤Ç¤³¤Î¥³¥Þ¥ó¥É¤Ï¶Ø»ß¤Ç¤¹¡£\n"
+msgstr "このコマンドが使えるのはバージョン2のカードだけです\n"
 
-#, fuzzy
 msgid "Reset Code not or not anymore available\n"
-msgstr "ÈëÌ©Éôʬ¤¬ÆÀ¤é¤ì¤Þ¤»¤ó\n"
+msgstr "Reset Codeが(もはや)利用可能ではありません\n"
 
 msgid "Your selection? "
-msgstr "ÁªÂò¤Ï? "
+msgstr "あなたの選択は? "
 
 msgid "[not set]"
-msgstr "[̤ÀßÄê]"
+msgstr "[未設定]"
 
 msgid "male"
-msgstr "ÃË"
+msgstr ""
 
 msgid "female"
-msgstr "½÷"
+msgstr ""
 
 msgid "unspecified"
-msgstr "̵»ØÄê"
+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"
+msgstr "エラー: \"<\"文字は使えません。\n"
 
 msgid "Error: Double spaces are not allowed.\n"
-msgstr "¥¨¥é¡¼: Æó½Å¤Î¶õÇò¤Ï¶Ø»ß¤Ç¤¹¡£\n"
+msgstr "エラー: 二重の空白は禁止です。\n"
 
 msgid "Cardholder's surname: "
-msgstr "¥«¡¼¥É½êÍ­¼Ô¤ÎÀ« (surname): "
+msgstr "カード所有者の姓 (surname): "
 
 msgid "Cardholder's given name: "
-msgstr "¥«¡¼¥É½êÍ­¼Ô¤Î̾ (given name): "
+msgstr "カード所有者の名 (given name): "
 
 #, c-format
 msgid "Error: Combined name too long (limit is %d characters).\n"
-msgstr "¥¨¥é¡¼: ¤Ä¤Ê¤¤¤À̾Á°¤¬Ä¹¤¹¤®¤Þ¤¹ (¾å¸Â%dʸ»ú)¡£\n"
+msgstr "エラー: つないだ名前が長すぎます (上限%d文字)。\n"
 
 msgid "URL to retrieve public key: "
-msgstr "¸ø³«¸°¤òõº÷¤¹¤ëURL: "
+msgstr "公開鍵を取得するURL: "
 
 #, c-format
 msgid "Error: URL too long (limit is %d characters).\n"
-msgstr "¥¨¥é¡¼: URL¤¬Ä¹¤¹¤®¤Þ¤¹ (¾å¸Â%dʸ»ú)¡£\n"
+msgstr "エラー: URLが長すぎます (上限%d文字)。\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error allocating enough memory: %s\n"
-msgstr "¸°ÎØ¡Ö%s¡×¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "å\8d\81å\88\86ã\81ªã\83¡ã\83¢ã\83ªã\81®ç¢ºä¿\9dã\81®ã\82¨ã\83©ã\83¼: %s\n"
 
 #, c-format
 msgid "error reading '%s': %s\n"
-msgstr "¡Ö%s¡×¤ÎÆɽФ·¥¨¥é¡¼: %s\n"
+msgstr "'%s'ã\81®èª­ã\81¿è¾¼ã\81¿ã\82¨ã\83©ã\83¼: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error writing '%s': %s\n"
-msgstr "¸°ÎØ¡Ö%s¡×¤Î½ñ¹þ¤ß¥¨¥é¡¼: %s\n"
+msgstr "'%s'ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\82¨ã\83©ã\83¼: %s\n"
 
 msgid "Login data (account name): "
-msgstr "¥í¥°¥¤¥ó¡¦¥Ç¡¼¥¿ (¥¢¥«¥¦¥ó¥È̾): "
+msgstr "ログイン・データ (アカウント名): "
 
 #, c-format
 msgid "Error: Login data too long (limit is %d characters).\n"
-msgstr "¥¨¥é¡¼: ¥í¥°¥¤¥ó¡¦¥Ç¡¼¥¿¤¬Ä¹¤¹¤®¤Þ¤¹ (¾å¸Â%dʸ»ú)¡£\n"
+msgstr "エラー: ログイン・データが長すぎます (上限%d文字)。\n"
 
 msgid "Private DO data: "
-msgstr ""
+msgstr "プライベート DO データ: "
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error: Private DO too long (limit is %d characters).\n"
-msgstr "¥¨¥é¡¼: URL¤¬Ä¹¤¹¤®¤Þ¤¹ (¾å¸Â%dʸ»ú)¡£\n"
+msgstr "エラー: プライベート DOが長すぎます (上限%d文字)。\n"
 
 msgid "Language preferences: "
-msgstr "¸À¸ì¤ÎÁª¹¥: "
+msgstr "言語の優先指定: "
 
 msgid "Error: invalid length of preference string.\n"
-msgstr "¥¨¥é¡¼: Áª¹¥Ê¸»úÎó¤ÎŤµ¤¬Ìµ¸ú¤Ç¤¹¡£\n"
+msgstr "エラー: 優先指定の文字列の長さが無効です。\n"
 
 msgid "Error: invalid characters in preference string.\n"
-msgstr "¥¨¥é¡¼: Áª¹¥Ê¸»úÎó¤Ë̵¸ú¤Êʸ»ú¤¬¤¢¤ê¤Þ¤¹¡£\n"
+msgstr "エラー: 優先指定の文字列に無効な文字があります。\n"
 
 msgid "Sex ((M)ale, (F)emale or space): "
-msgstr "À­ÊÌ ((M)ÃË¡¢(F)½÷¡¢¶õÇò): "
+msgstr "性別 ((M)男、(F)女、空白): "
 
 msgid "Error: invalid response.\n"
-msgstr "¥¨¥é¡¼: Ìµ¸ú¤Ê±þÅú¡£\n"
+msgstr "エラー: 無効な応答。\n"
 
 msgid "CA fingerprint: "
-msgstr "CA¤Î»ØÌæ: "
+msgstr "CAのフィンガー・プリント: "
 
 msgid "Error: invalid formatted fingerprint.\n"
-msgstr "¥¨¥é¡¼: Ìµ¸ú¤Ê·Á¼°¤Î»ØÌæ¡£\n"
+msgstr "エラー: 無効な形式のフィンガー・プリント。\n"
 
 #, c-format
 msgid "key operation not possible: %s\n"
-msgstr "¸°¤ÏÁàºî¤Ç¤­¤Þ¤»¤ó: %s\n"
+msgstr "鍵は操作できません: %s\n"
 
 msgid "not an OpenPGP card"
-msgstr "OpenPGP¥«¡¼¥É¤Ç¤¢¤ê¤Þ¤»¤ó"
+msgstr "OpenPGPカードでありません"
 
 #, c-format
 msgid "error getting current key info: %s\n"
-msgstr "¸½¹Ô¸°¾ðÊó¤Î¼èÆÀ¥¨¥é¡¼: %s\n"
+msgstr "ç\8f¾è¡\8cé\8dµæ\83\85å ±ã\81®å\8f\96å¾\97ã\82¨ã\83©ã\83¼: %s\n"
 
 msgid "Replace existing key? (y/N) "
-msgstr "´û¸¤Î¸°¤ò¸ò´¹¤·¤Þ¤¹¤«? (y/N) "
+msgstr "既存の鍵を交換しますか? (y/N) "
 
 msgid ""
 "NOTE: There is no guarantee that the card supports the requested size.\n"
 "      If the key generation does not succeed, please check the\n"
 "      documentation of your card to see what sizes are allowed.\n"
 msgstr ""
+"*注意*: カードが要求された鍵長をサポートしているという保証はありません。\n"
+"        鍵生成が成功しない場合、あなたのカードに関する技術文書を確認し、\n"
+"        利用できる鍵長についてみてください。\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "What keysize do you want for the Signature key? (%u) "
-msgstr "¤É¤Î¸°Ä¹¤Ë¤·¤Þ¤¹¤«? (1024) "
+msgstr "署名鍵の鍵長は? (%u) "
 
-#, fuzzy, c-format
+#, c-format
 msgid "What keysize do you want for the Encryption key? (%u) "
-msgstr "¤É¤Î¸°Ä¹¤Ë¤·¤Þ¤¹¤«? (1024) "
+msgstr "暗号鍵の鍵長は? (%u) "
 
-#, fuzzy, c-format
+#, c-format
 msgid "What keysize do you want for the Authentication key? (%u) "
-msgstr "¤É¤Î¸°Ä¹¤Ë¤·¤Þ¤¹¤«? (1024) "
+msgstr "認証鍵の鍵長は? (%u) "
 
 #, c-format
 msgid "rounded up to %u bits\n"
-msgstr "%u¥Ó¥Ã¥È¤Ë´Ý¤á¤Þ¤¹\n"
+msgstr "%uビットに切り上げます\n"
 
 #, c-format
 msgid "%s keysizes must be in the range %u-%u\n"
-msgstr ""
+msgstr "%s 鍵長は %u-%u の範囲でなければなりません\n"
 
 #, c-format
 msgid "The card will now be re-configured to generate a key of %u bits\n"
-msgstr ""
+msgstr "今、%uビットの鍵を生成するようにカードは再コンフィグされました\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error changing size of key %d to %u bits: %s\n"
-msgstr "¡Ö%s¡×¤Ç¿®Íѥ쥳¡¼¥É¤Î¸¡º÷¥¨¥é¡¼: %s\n"
+msgstr "é\8dµ%dã\81®é\95·ã\81\95ã\82\92%u bit ã\81«å¤\89æ\9b´ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s\n"
 
 msgid "Make off-card backup of encryption key? (Y/n) "
-msgstr "°Å¹æ¸°¤ò¥«¡¼¥É³°¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤·¤Þ¤¹¤«? (Y/n) "
+msgstr "暗号鍵のカード外バックアップを作成しますか? (Y/n) "
 
-#, fuzzy
 msgid "NOTE: keys are already stored on the card!\n"
-msgstr "ÈëÌ©¸°¤Ï¤â¤¦¥«¡¼¥É¤ËÊݴɤ·¤Æ¤¢¤ê¤Þ¤¹\n"
+msgstr "*注意*: 秘密鍵はもうカードに保管してあります!\n"
 
 msgid "Replace existing keys? (y/N) "
-msgstr "´û¸¤Î¸°·²¤ò¸ò´¹¤·¤Þ¤¹¤«? (y/N) "
+msgstr "既存の鍵を置き換えますか? (y/N) "
 
 #, c-format
 msgid ""
 "Please note that the factory settings of the PINs are\n"
-"   PIN = `%s'     Admin PIN = `%s'\n"
+"   PIN = '%s'     Admin PIN = '%s'\n"
 "You should change them using the command --change-pin\n"
 msgstr ""
-"½Ð²Ù»þ¤ÎPINÀßÄê¤Ï\n"
-"   PIN = `%s'     Admin PIN = `%s'\n"
-"¼¡¤Î¥³¥Þ¥ó¥É¤ò»È¤Ã¤ÆÊѹ¹¤¹¤Ù¤­¤Ç¤¹ --change-pin\n"
+"工場設定のPINは下記のとおり\n"
+"   PIN = '%s'     Admin PIN = '%s'\n"
+"次のコマンドを使って変更すべきです --change-pin\n"
 
 msgid "Please select the type of key to generate:\n"
-msgstr "À¸À®¤¹¤ë¸°¤Î·¿¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤:\n"
+msgstr "生成する鍵の型を選択してください:\n"
 
 msgid "   (1) Signature key\n"
-msgstr "   (1) ½ð̾¸°\n"
+msgstr "   (1) 署名鍵\n"
 
 msgid "   (2) Encryption key\n"
-msgstr "   (2) °Å¹æ²½¸°\n"
+msgstr "   (2) 暗号化鍵\n"
 
 msgid "   (3) Authentication key\n"
-msgstr "   (3) Ç§¾Ú¸°\n"
+msgstr "   (3) 認証鍵\n"
 
 msgid "Invalid selection.\n"
-msgstr "̵¸ú¤ÊÁªÂò¤Ç¤¹¡£\n"
-
-msgid "Please select where to store the key:\n"
-msgstr "¸°¤ÎÊݴɾì½ê¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤:\n"
-
-msgid "unknown key protection algorithm\n"
-msgstr "̤ÃΤθ°Êݸ¥ë¥´¥ê¥º¥à¤Ç¤¹\n"
-
-msgid "secret parts of key are not available\n"
-msgstr "¸°¤ÎÈëÌ©Éôʬ¤¬Ìµ¸ú¤Ç¤¹\n"
-
-msgid "secret key already stored on a card\n"
-msgstr "ÈëÌ©¸°¤Ï¤â¤¦¥«¡¼¥É¤ËÊݴɤ·¤Æ¤¢¤ê¤Þ¤¹\n"
-
-#, fuzzy, c-format
-msgid "error writing key to card: %s\n"
-msgstr "¸°ÎØ¡Ö%s¡×¤Î½ñ¹þ¤ß¥¨¥é¡¼: %s\n"
+msgstr "無効な選択です。\n"
 
 msgid "quit this menu"
-msgstr "¤³¤Î¥á¥Ë¥å¡¼¤ò½ªÎ»"
+msgstr "このメニューを終了"
 
 msgid "show admin commands"
-msgstr "´ÉÍý¥³¥Þ¥ó¥É¤òɽ¼¨"
+msgstr "管理コマンドを表示"
 
 msgid "show this help"
-msgstr "¤³¤Î¥Ø¥ë¥×¤òɽ¼¨"
+msgstr "このヘルプを表示"
 
 msgid "list all available data"
-msgstr "Á´Í­¸ú¥Ç¡¼¥¿¤òɽ¼¨"
+msgstr "全有効データを表示"
 
 msgid "change card holder's name"
-msgstr "¥«¡¼¥É½êÍ­¼Ô¤Î̾Á°¤ÎÊѹ¹"
+msgstr "カード所有者の名前の変更"
 
 msgid "change URL to retrieve key"
-msgstr "¸°¤òõº÷¤¹¤ëURL¤ÎÊѹ¹"
+msgstr "鍵を取得するURLの変更"
 
 msgid "fetch the key specified in the card URL"
-msgstr "¥«¡¼¥ÉURL¤Ç»ØÄꤵ¤ì¤¿¸°¤Î°ú¤­½Ð¤·"
+msgstr "カードURLで指定された鍵の引き出し"
 
 msgid "change the login name"
-msgstr "¥í¥°¥¤¥ó̾¤ÎÊѹ¹"
+msgstr "ログイン名の変更"
 
 msgid "change the language preferences"
-msgstr "¸À¸ìÁª¹¥¤ÎÊѹ¹"
+msgstr "言語の優先指定の変更"
 
 msgid "change card holder's sex"
-msgstr "¥«¡¼¥É½êÍ­¼Ô¤ÎÀ­Ê̤ÎÊѹ¹"
+msgstr "カード所有者の性別の変更"
 
 msgid "change a CA fingerprint"
-msgstr "CA»ØÌæ¤ÎÊѹ¹"
+msgstr "CAフィンガー・プリントの変更"
 
 msgid "toggle the signature force PIN flag"
-msgstr "½ð̾¶¯À©PIN¥Õ¥é¥°¤òȿž"
+msgstr "署名強制PINフラグを反転"
 
 msgid "generate new keys"
-msgstr "¿·¤·¤¤¸°·²¤òÀ¸À®"
+msgstr "新しい鍵を生成"
 
 msgid "menu to change or unblock the PIN"
-msgstr "PIN¥Ö¥í¥Ã¥¯¤Î²ò½ü¤äÊѹ¹¤Î¥á¥Ë¥å¡¼"
+msgstr "PINã\83\96ã\83­ã\83\83ã\82¯ã\81®è§£é\99¤ã\82\84å¤\89æ\9b´ã\81®ã\83¡ã\83\8bã\83¥ã\83¼"
 
 msgid "verify the PIN and list all data"
-msgstr ""
+msgstr "PINを確認しすべてのデータを表示する"
 
 msgid "unblock the PIN using a Reset Code"
-msgstr ""
+msgstr "PINをReset Codeで再設定する"
 
-msgid "Command> "
-msgstr "¥³¥Þ¥ó¥É> "
+msgid "gpg/card> "
+msgstr "gpg/card> "
 
 msgid "Admin-only command\n"
-msgstr "´ÉÍýÀìÍÑ¥³¥Þ¥ó¥É\n"
+msgstr "管理専用コマンド\n"
 
 msgid "Admin commands are allowed\n"
-msgstr "´ÉÍý¥³¥Þ¥ó¥É¤¬µö²Ä¤µ¤ì¤Æ¤¤¤Þ¤¹\n"
+msgstr "管理コマンドが許可されています\n"
 
 msgid "Admin commands are not allowed\n"
-msgstr "´ÉÍý¥³¥Þ¥ó¥É¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹\n"
+msgstr "管理コマンドは禁止されています\n"
 
 msgid "Invalid command  (try \"help\")\n"
-msgstr "̵¸ú¤Ê¥³¥Þ¥ó¥É (¡Èhelp¡É¤ò»²¾È)\n"
+msgstr "無効なコマンド (\"help\"を参照)\n"
 
 msgid "--output doesn't work for this command\n"
-msgstr "¤³¤Î¥³¥Þ¥ó¥É¤Ç--output¤Ïµ¡Ç½¤·¤Þ¤»¤ó\n"
+msgstr "このコマンドで--outputは機能しません\n"
 
 #, c-format
 msgid "can't open '%s'\n"
-msgstr "¡Ö%s¡×¤¬³«¤±¤Þ¤»¤ó\n"
+msgstr "'%s'が開けません\n"
 
 #, c-format
 msgid "key \"%s\" not found: %s\n"
-msgstr "¸°¡È%s¡É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %s\n"
+msgstr "鍵\"%s\"が見つかりません: %s\n"
 
 #, c-format
 msgid "error reading keyblock: %s\n"
-msgstr "¸°¥Ö¥í¥Ã¥¯¤ÎÆɽФ·¥¨¥é¡¼: %s\n"
+msgstr "é\8dµã\83\96ã\83­ã\83\83ã\82¯ã\81®èª­ã\81¿è¾¼ã\81¿ã\82¨ã\83©ã\83¼: %s\n"
 
 msgid "(unless you specify the key by fingerprint)\n"
-msgstr "(¤¢¤ë¤¤¤Ï¡¢»ØÌæ¤Ç¸°¤ò»ØÄê)\n"
+msgstr "(あるいは、フィンガー・プリントで鍵を指定)\n"
 
 msgid "can't do this in batch mode without \"--yes\"\n"
-msgstr "¡È--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) "
+
+msgid "deleting secret key not implemented\n"
+msgstr "秘密鍵の削除は実装されていません\n"
 
 #, c-format
 msgid "deleting keyblock failed: %s\n"
-msgstr "¸°¥Ö¥í¥Ã¥¯¤Îºï½ü¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %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"
-msgstr "¤³¤Î¸ø³«¸°¤Ë¤¿¤¤¤¹¤ëÈëÌ©¸°¡È%s¡É¤¬¤¢¤ê¤Þ¤¹!\n"
+msgstr "この公開鍵にたいする秘密鍵\"%s\"があります!\n"
 
 msgid "use option \"--delete-secret-keys\" to delete it first.\n"
-msgstr "¤Þ¤º¡È--delete-secret-keys¡É¥ª¥×¥·¥ç¥ó¤Ç¤³¤ì¤òºï½ü¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
+msgstr "まず\"--delete-secret-keys\"オプションでこれを削除してください。\n"
 
 #, c-format
 msgid "error creating passphrase: %s\n"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "ã\83\91ã\82¹ã\83\95ã\83¬ã\83¼ã\82ºã\81®ä½\9cæ\88\90ã\82¨ã\83©ã\83¼: %s\n"
 
 msgid "can't use a symmetric ESK packet due to the S2K mode\n"
-msgstr "S2K¥â¡¼¥É¤Î¤¿¤á¡¢ÂоÎESK¥Ñ¥±¥Ã¥È¤ò»È¤¨¤Þ¤»¤ó\n"
+msgstr "S2Kモードのため、共通鍵ESKパケットを使えません\n"
 
 #, c-format
 msgid "using cipher %s\n"
-msgstr "%s°Å¹æË¡¤ò»È¤¤¤Þ¤¹\n"
+msgstr "暗号方式 %s を使います\n"
 
 #, c-format
 msgid "'%s' already compressed\n"
-msgstr "¡Ö%s¡×¤Ï¤â¤¦°µ½ÌºÑ¤ß¤Ç¤¹\n"
+msgstr "'%s'はもう圧縮済みです\n"
 
 #, c-format
 msgid "WARNING: '%s' is an empty file\n"
-msgstr "·Ù¹ð: ¡Ö%s¡×¤Ï¶õ¤Î¥Õ¥¡¥¤¥ë¤Ç¤¹\n"
+msgstr "*警告*: '%s'は空のファイルです\n"
 
 msgid "you can only encrypt to RSA keys of 2048 bits or less in --pgp2 mode\n"
-msgstr "--pgp2¥â¡¼¥É¤Ç¤Ï2048¥Ó¥Ã¥È°Ê²¼¤ÎRSA¸°¤Ç°Å¹æ²½¤·¤«¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "--pgp2モードでは2048ビット以下のRSA鍵で暗号化しかできません\n"
 
 #, c-format
 msgid "reading from '%s'\n"
-msgstr "¡Ö%s¡×¤«¤éÆɤ߽Ф·¤Þ¤¹\n"
+msgstr "'%s'から読み込み\n"
 
 msgid ""
 "unable to use the IDEA cipher for all of the keys you are encrypting to.\n"
-msgstr "°Å¹æ²½¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¸°¤ÏÁ´ÉôIDEA°Å¹æ¤ò»È¤¨¤Þ¤»¤ó¡£\n"
+msgstr "暗号化しようとしている鍵は全部IDEA暗号を使えません。\n"
 
 #, c-format
 msgid ""
 "WARNING: forcing symmetric cipher %s (%d) violates recipient preferences\n"
-msgstr "·Ù¹ð: ÂоΰŹæË¡ %s (%d) ¤Î¶¯À©¤¬¡¢¼õ¼è¿Í¤ÎÁª¹¥¤ÈÂÐΩ¤·¤Þ¤¹\n"
+msgstr ""
+"*警告*: 共通鍵暗号方式 %s (%d) の強制が、受取人の優先指定をそむきます\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"
+msgstr "共通鍵暗号方式 %s (%d) の強制が、受取人の優先指定をそむきます\n"
 
 #, c-format
 msgid "you may not use %s while in %s mode\n"
-msgstr "%s¤ò%s¥â¡¼¥É¤Ç»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "%sを%sモードで使うことはできません\n"
 
 #, c-format
 msgid "%s/%s encrypted for: \"%s\"\n"
-msgstr "%s/%s°Å¹æ²½ ¼õ¿®¼Ô:¡È%s¡É\n"
+msgstr "%s/%s暗号化 受信者:\"%s\"\n"
 
 #, c-format
 msgid "%s encrypted data\n"
-msgstr "%s°Å¹æ²½ºÑ¤ß¥Ç¡¼¥¿\n"
+msgstr "%sæ\9a\97å\8f·å\8c\96æ¸\88ã\81¿ã\83\87ã\83¼ã\82¿\n"
 
 #, c-format
 msgid "encrypted with unknown algorithm %d\n"
-msgstr "̤ÃΤΥ¢¥ë¥´¥ê¥º¥à%d¤Ë¤è¤ë°Å¹æ²½\n"
+msgstr "不明のアルゴリズム%dによる暗号化\n"
 
 msgid ""
 "WARNING: message was encrypted with a weak key in the symmetric cipher.\n"
-msgstr "·Ù¹ð: ¥á¥Ã¥»¡¼¥¸¤ÏÂоΰŹæË¡¤Î¼å¤¤¸°¤Ç°Å¹æ²½¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\n"
+msgstr "*警告*: メッセージは共通鍵暗号方式の弱い鍵で暗号化されています。\n"
 
 msgid "problem handling encrypted packet\n"
-msgstr "°Å¹æ²½¥Ñ¥±¥Ã¥È¤Î¼è°·¤¤¤Ç¾ã³²\n"
+msgstr "暗号化パケットの取扱いで障害\n"
 
 msgid "no remote program execution supported\n"
-msgstr "±ó³Ö¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤Ï¡¢¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó\n"
+msgstr "遠隔プログラムの実行は、サポートしていません\n"
 
 msgid ""
 "external program calls are disabled due to unsafe options file permissions\n"
 msgstr ""
-"¥ª¥×¥·¥ç¥ó¡¦¥Õ¥¡¥¤¥ë¤Îµö²Ä¥â¡¼¥É¤¬¡¢°ÂÁ´¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢\n"
-"³°Éô¥×¥í¥°¥é¥à¤Î¸Æ½Ð¤·¤Ï¡¢»ÈÍѶػߤǤ¹¡£\n"
+"オプション・ファイルの許可モードが、安全ではないので、\n"
+"外部プログラムの呼出しは、使用禁止です。\n"
 
 msgid "this platform requires temporary files when calling external programs\n"
 msgstr ""
-"¤³¤Î¥×¥é¥Ã¥È¥Û¡¼¥à¤À¤È¡¢³°Éô¥×¥í¥°¥é¥à¤Î¸Æ½Ð¤·¤Ë¤Ï¡¢°ì»þ¥Õ¥¡¥¤¥ë¤¬É¬ÍפǤ¹\n"
+"このプラットホームだと、外部プログラムの呼出しには、一時ファイルが必要です\n"
 
 #, c-format
 msgid "unable to execute program '%s': %s\n"
-msgstr "¡Ö%s¡×¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó: %s\n"
+msgstr "'%s'を実行できません: %s\n"
 
 #, c-format
 msgid "unable to execute shell '%s': %s\n"
-msgstr "¥·¥§¥ë¡Ö%s¡×¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó: %s\n"
+msgstr "シェル'%s'を実行できません: %s\n"
 
 #, c-format
 msgid "system error while calling external program: %s\n"
-msgstr "³°Éô¥×¥í¥°¥é¥à¤Î¸Æ½Ð¤·¤Ç¥·¥¹¥Æ¥à¡¦¥¨¥é¡¼: %s\n"
+msgstr "å¤\96é\83¨ã\83\97ã\83­ã\82°ã\83©ã\83 ã\81®å\91¼å\87ºã\81\97ã\81§ã\82·ã\82¹ã\83\86ã\83 ã\83»ã\82¨ã\83©ã\83¼: %s\n"
 
 msgid "unnatural exit of external program\n"
-msgstr "³°Éô¥×¥í¥°¥é¥à¤¬¡¢ÉÔ¼«Á³¤Ë½ªÎ»\n"
+msgstr "外部プログラムが、不自然に終了\n"
 
 msgid "unable to execute external program\n"
-msgstr "³°Éô¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "外部プログラムを実行できません\n"
 
 #, c-format
 msgid "unable to read external program response: %s\n"
-msgstr "³°Éô¥×¥í¥°¥é¥à¤Î±þÅú¤òÆɤ߽Ф»¤Þ¤»¤ó: %s\n"
+msgstr "外部プログラムの応答を読み込めません: %s\n"
 
 #, c-format
 msgid "WARNING: unable to remove tempfile (%s) '%s': %s\n"
-msgstr "·Ù¹ð: °ì»þ¥Õ¥¡¥¤¥ë¤òºï½ü¤Ç¤­¤Þ¤»¤ó (%s) ¡Ö%s¡×: %s\n"
+msgstr "*警告*: 一時ファイルを削除できません (%s) '%s': %s\n"
 
 #, c-format
 msgid "WARNING: unable to remove temp directory '%s': %s\n"
-msgstr "·Ù¹ð: °ì»þ¥Ç¥£¥ì¥¯¥È¥ê¡¼¡Ö%s¡×¤òºï½ü¤Ç¤­¤Þ¤»¤ó: %s\n"
+msgstr "*警告*: 一時ディレクトリ'%s'を削除できません: %s\n"
 
-#, fuzzy
 msgid "export signatures that are marked as local-only"
-msgstr "½ð̾¤Ï¡¢¼º¸úÉԲĤËÀßÄꤵ¤ì¤Þ¤¹¡£\n"
+msgstr "ローカルのみと指定された署名をエクスポートします"
 
 msgid "export attribute user IDs (generally photo IDs)"
-msgstr ""
+msgstr "ユーザIDの属性(通常フォトID)をエクスポートします"
 
-#, fuzzy
 msgid "export revocation keys marked as \"sensitive\""
-msgstr "¡È%s¡ÉÍѤμº¸ú¸°¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó\n"
+msgstr "\"sensitive\"(機密)と指定された失効鍵をエクスポートします"
 
-#, fuzzy
-msgid "remove the passphrase from exported subkeys"
-msgstr "Éû¸°¤Î¼º¸ú"
-
-#, fuzzy
 msgid "remove unusable parts from key during export"
-msgstr "»ÈÍѤǤ­¤Ê¤¤ÈëÌ©¸°¤Ç¤¹"
+msgstr "エクスポートの際、利用できない部分を除去する"
 
 msgid "remove as much as possible from key during export"
-msgstr ""
+msgstr "エクスポートの際、できるだけ除去する"
 
 msgid "export keys in an S-expression based format"
-msgstr ""
+msgstr "S式ベースのフォーマットで鍵をエクスポートする"
 
 msgid "exporting secret keys not allowed\n"
-msgstr "ÈëÌ©¸°¤Î½ñ½Ð¤·¤Ï¶Ø»ß¤Ç¤¹\n"
-
-#, c-format
-msgid "key %s: not protected - skipped\n"
-msgstr "¸°%s: Êݸ¤ì¤Æ¤¤¤Þ¤»¤ó - ¤È¤Ð¤·¤Þ¤¹\n"
+msgstr "秘密鍵のエクスポートは認められません\n"
 
 #, c-format
 msgid "key %s: PGP 2.x style key - skipped\n"
-msgstr "¸°%s: PGP 2.x·Á¼°¤Î¸°¤Ç¤¹ - ¤È¤Ð¤·¤Þ¤¹\n"
+msgstr "鍵%s: PGP 2.x形式の鍵です - スキップします\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "key %s: key material on-card - skipped\n"
-msgstr "¸°%s: Éû¸°½ð̾¤Î¾ì½ê¤¬¡¢¸í¤Ã¤Æ¤¤¤Þ¤¹ - ¤È¤Ð¤·¤Þ¤¹\n"
+msgstr "鍵%s: 鍵はカード上にあります - スキップします\n"
 
-msgid "about to export an unprotected subkey\n"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "failed to unprotect the subkey: %s\n"
-msgstr "¸°¤ÎÊݴɤ˼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
-
-#, c-format
-msgid "WARNING: secret key %s does not have a simple SK checksum\n"
-msgstr "·Ù¹ð: ÈëÌ©¸°%s¤Ë¤Ï¡¢Ã±½ã¤ÊSK¥Á¥§¥Ã¥¯¥µ¥à¤¬¤¢¤ê¤Þ¤»¤ó\n"
+msgid " - skipped"
+msgstr " - スキップされました"
 
 msgid "WARNING: nothing exported\n"
-msgstr "·Ù¹ð: ²¿¤â½ñ¤­½Ð¤·¤Æ¤¤¤Þ¤»¤ó\n"
+msgstr "*警告*: 何もエクスポートしていません\n"
 
 msgid "too many entries in pk cache - disabled\n"
-msgstr "pk¥­¥ã¥Ã¥·¥å¤Î¥¨¥ó¥È¥ê¡¼¤¬Â¿¤¹¤®¤Þ¤¹ - »ÈÍѶػß\n"
+msgstr "pkキャッシュのエントリーが多すぎます - 使用禁止\n"
 
 msgid "[User ID not found]"
-msgstr "[¥æ¡¼¥¶¡¼ID¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó]"
+msgstr "[ユーザIDが見つかりません]"
 
 #, c-format
 msgid "automatically retrieved '%s' via %s\n"
-msgstr ""
+msgstr "'%s'を %s から自動取得\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "error retrieving '%s' via %s: %s\n"
-msgstr "¡Ö%s¡×¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "'%s'ã\82\92 %s ã\81\8bã\82\89å\8f\96å¾\97ã\81\99ã\82\8bé\9a\9bã\81®ã\82¨ã\83©ã\83¼: %s\n"
 
-#, fuzzy
 msgid "No fingerprint"
-msgstr "CA¤Î»ØÌæ: "
+msgstr "フィンガー・プリントがありません"
 
 #, c-format
 msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n"
-msgstr "--allow-non-selfsigned-uid¤ÇÍ­¸ú¤Ë¤µ¤ì¤¿Ìµ¸ú¤Ê¸°%s¤Ç¤¹\n"
+msgstr "--allow-non-selfsigned-uidで有効にされた無効な鍵%sです\n"
 
 #, c-format
-msgid "no secret subkey for public subkey %s - ignoring\n"
-msgstr "¸ø³«Éû¸°%s¤Ë¤¿¤¤¤¹¤ëÈëÌ©Éû¸°¤¬¤¢¤ê¤Þ¤»¤ó - Ìµ»ë\n"
-
-#, fuzzy, c-format
 msgid "using subkey %s instead of primary key %s\n"
-msgstr "Éû¸°%s¤ò¼ç¸°%s¤ËÂåÍѤ·¤Þ¤¹\n"
+msgstr "副鍵%s(主鍵%sではなく)を用います\n"
 
 #, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "¸°%s: ¸ø³«¸°¤Î¤Ê¤¤ÈëÌ©¸°¤Ç¤¹ - ¤È¤Ð¤·¤Þ¤¹\n"
+msgid "no secret subkey for public subkey %s - ignoring\n"
+msgstr "公開副鍵%sにたいする秘密副鍵がありません - 無視\n"
 
-#, fuzzy
 msgid "make a signature"
-msgstr "¿®Íѽð̾¤òºîÀ®"
+msgstr "署名を作成"
 
-#, fuzzy
 msgid "make a clear text signature"
-msgstr "|[¥Õ¥¡¥¤¥ë]|¥¯¥ê¥¢½ð̾¤òºîÀ®"
+msgstr "クリア・テクスト署名を作成"
 
 msgid "make a detached signature"
-msgstr "ʬΥ½ð̾¤òºîÀ®"
+msgstr "分離署名を作成"
 
 msgid "encrypt data"
-msgstr "¥Ç¡¼¥¿¤ò°Å¹æ²½"
+msgstr "データを暗号化"
 
 msgid "encryption only with symmetric cipher"
-msgstr "°Å¹æ²½¤Ë¤ÏÂоΰŹæË¡¤Î¤ß¤ò»ÈÍÑ"
+msgstr "暗号化には共通鍵暗号方式のみを使用"
 
 msgid "decrypt data (default)"
-msgstr "¥Ç¡¼¥¿¤òÉü¹æ (´ûÄê)"
+msgstr "データを復号 (デフォルト)"
 
 msgid "verify a signature"
-msgstr "½ð̾¤ò¸¡¾Ú"
+msgstr "署名を検証"
 
 msgid "list keys"
-msgstr "¸°¤Î°ìÍ÷"
+msgstr "鍵の一覧"
 
 msgid "list keys and signatures"
-msgstr "¸°¤È½ð̾¤Î°ìÍ÷"
+msgstr "鍵と署名の一覧"
 
 msgid "list and check key signatures"
-msgstr "¸°½ð̾¤Î¸¡ºº¤È°ìÍ÷"
+msgstr "鍵署名の検査と一覧"
 
 msgid "list keys and fingerprints"
-msgstr "¸°¤È»ØÌæ¤Î°ìÍ÷"
+msgstr "鍵とフィンガー・プリントの一覧"
 
 msgid "list secret keys"
-msgstr "ÈëÌ©¸°¤Î°ìÍ÷"
+msgstr "秘密鍵の一覧"
 
 msgid "generate a new key pair"
-msgstr "¿·¤·¤¤¸°ÂФòÀ¸À®"
+msgstr "新しい鍵対を生成"
+
+msgid "generate a revocation certificate"
+msgstr "失効証明書を生成"
 
 msgid "remove keys from the public keyring"
-msgstr "¸ø³«¸°Îؤ«¤é¸°·²¤òºï½ü"
+msgstr "公開鍵リングから鍵を削除"
 
 msgid "remove keys from the secret keyring"
-msgstr "ÈëÌ©¸°Îؤ«¤é¸°·²¤òºï½ü"
+msgstr "秘密鍵リングから鍵を削除"
 
 msgid "sign a key"
-msgstr "¸°¤Ë½ð̾"
+msgstr "鍵に署名"
 
 msgid "sign a key locally"
-msgstr "¸°¤ØÆâÉôŪ¤Ë½ð̾"
+msgstr "鍵へ内部的に署名"
 
 msgid "sign or edit a key"
-msgstr "¸°¤Ø¤Î½ð̾¤äÊÔ½¸"
+msgstr "鍵への署名や編集"
 
-msgid "generate a revocation certificate"
-msgstr "¼º¸ú¾ÚÌÀ½ñ¤òÀ¸À®"
+msgid "change a passphrase"
+msgstr "パスフレーズの変更"
 
 msgid "export keys"
-msgstr "¸°¤ò½ñ¤­½Ð¤¹"
+msgstr "鍵をエクスポートする"
 
 msgid "export keys to a key server"
-msgstr "¸°¥µ¡¼¥Ð¡¼¤Ë¸°¤ò½ñ¤­½Ð¤¹"
+msgstr "鍵サーバに鍵をエクスポートする"
 
 msgid "import keys from a key server"
-msgstr "¸°¥µ¡¼¥Ð¡¼¤«¤é¸°¤òÆɤ߹þ¤à"
+msgstr "鍵サーバから鍵をインポートする"
 
 msgid "search for keys on a key server"
-msgstr "¸°¥µ¡¼¥Ð¡¼¤Î¸°¤ò¸¡º÷¤¹¤ë"
+msgstr "鍵サーバの鍵を検索する"
 
 msgid "update all keys from a keyserver"
-msgstr "¸°¥µ¡¼¥Ð¡¼¤«¤é¸°¤òÁ´Éô¹¹¿·¤¹¤ë"
+msgstr "鍵サーバから鍵を全部更新する"
 
 msgid "import/merge keys"
-msgstr "¸°¤ÎÆɹþ¤ß/Ê»¹ç"
+msgstr "鍵のインポート/マージ"
 
 msgid "print the card status"
-msgstr "¥«¡¼¥É¾õÂÖ¤òɽ¼¨"
+msgstr "カード・ステイタスを表示"
 
 msgid "change data on a card"
-msgstr "¥«¡¼¥É¤Î¥Ç¡¼¥¿¤òÊѹ¹"
+msgstr "カードのデータを変更"
 
 msgid "change a card's PIN"
-msgstr "¥«¡¼¥É¤ÎPIN¤òÊѹ¹"
+msgstr "カードのPINを変更"
 
 msgid "update the trust database"
-msgstr "¿®Íѥǡ¼¥¿¥Ù¡¼¥¹¤ò¹¹¿·"
+msgstr "信用データベースを更新"
 
-#, fuzzy
 msgid "print message digests"
-msgstr "|¥¢¥ë¥´¥ê¥º¥à [¥Õ¥¡¥¤¥ë]|¥á¥Ã¥»¡¼¥¸Í×Ìó¤òɽ¼¨"
+msgstr "メッセージ・ダイジェストを表示"
 
 msgid "run in server mode"
-msgstr ""
+msgstr "サーバ・モードで実行"
 
 msgid "create ascii armored output"
-msgstr "ASCII·Á¼°¤ÎÊñÁõ¤òºîÀ®"
+msgstr "ASCII形式の外装を作成"
 
-#, fuzzy
 msgid "|USER-ID|encrypt for USER-ID"
-msgstr "|̾Á°|¡Ö̾Á°¡×ÍѤ˰Ź沽"
+msgstr "|USER-ID|USER-ID用に暗号化"
 
-#, fuzzy
 msgid "|USER-ID|use USER-ID to sign or decrypt"
-msgstr ""
-"½ð̾¤äÉü¹æ¤Ë¤³¤Î¥æ¡¼¥¶¡¼id\n"
-"¤ò»ÈÍÑ"
+msgstr "|USER-ID|署名や復号にこのUSER-IDを使用"
 
-#, fuzzy
 msgid "|N|set compress level to N (0 disables)"
-msgstr ""
-"|N|°µ½Ì¥ì¥Ù¥ë¤òN¤ËÀßÄê\n"
-"(0¤ÏÈó°µ½Ì)"
+msgstr "|N|圧縮レベルをNに設定 (0は非圧縮)"
 
 msgid "use canonical text mode"
-msgstr "Àµ½à¥Æ¥­¥¹¥È¡¦¥â¡¼¥É¤ò»ÈÍÑ"
+msgstr "正準テキスト・モードを使用"
 
-#, fuzzy
 msgid "|FILE|write output to FILE"
-msgstr "¡Ö%s¡×¤«¤é¥ª¥×¥·¥ç¥ó¤òÆɤ߽Ф·¤Þ¤¹\n"
+msgstr "|FILE|出力をFILEに書き出す"
 
 msgid "do not make any changes"
-msgstr "̵Êѹ¹"
+msgstr "無変更"
 
 msgid "prompt before overwriting"
-msgstr "¾å½ñ¤­Á°¤Ë³Îǧ"
+msgstr "上書き前に確認"
 
 msgid "use strict OpenPGP behavior"
-msgstr "¸·Ì©¤ÊOpenPGP¤Î¿¶Éñ¤òºÎÍÑ"
+msgstr "厳密なOpenPGPの振舞を採用"
 
 msgid ""
 "@\n"
 "(See the man page for a complete listing of all commands and options)\n"
 msgstr ""
 "@\n"
-"(¥³¥Þ¥ó¥É¤È¥ª¥×¥·¥ç¥óÁ´Éô¤Î°ìÍ÷¤Ï¡¢\n"
-"¥Þ¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸¤ò¤´Í÷¤¯¤À¤µ¤¤)\n"
+"(コマンドとオプション全部の一覧は、マニュアル・ページをご覧ください)\n"
 
 msgid ""
 "@\n"
@@ -1627,889 +1763,873 @@ msgid ""
 " --fingerprint [names]      show fingerprints\n"
 msgstr ""
 "@\n"
-"Îã:\n"
+":\n"
 "\n"
-" -se -r Bob [¥Õ¥¡¥¤¥ë]      ½ð̾¤È¥æ¡¼¥¶¡¼Bob¤Ø¤Î°Å¹æ²½\n"
-" --clearsign [¥Õ¥¡¥¤¥ë]     ¥¯¥ê¥¢½ð̾¤òºîÀ®\n"
-" --detach-sign [¥Õ¥¡¥¤¥ë]   Ê¬Î¥½ð̾¤òºîÀ®\n"
-" --list-keys [̾Á°]         ¸°¤òɽ¼¨\n"
-" --fingerprint [̾Á°]       »ØÌæ¤òɽ¼¨\n"
+" -se -r Bob [ファイル]      ユーザBobへ署名と暗号化\n"
+" --clearsign [ファイル]     クリア・テクスト署名を作成\n"
+" --detach-sign [ファイル]   分離署名を作成\n"
+" --list-keys [名前]         鍵を表示\n"
+" --fingerprint [名前]       フィンガー・プリントを表示\n"
 
 msgid "Usage: gpg [options] [files] (-h for help)"
-msgstr "»È¤¤Êý: gpg [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë] (¥Ø¥ë¥×¤Ï -h)"
+msgstr "使い方: gpg [オプション] [ファイル] (ヘルプは -h)"
 
 msgid ""
 "Syntax: gpg [options] [files]\n"
-"sign, check, encrypt or decrypt\n"
-"default operation depends on the input data\n"
+"Sign, check, encrypt or decrypt\n"
+"Default operation depends on the input data\n"
 msgstr ""
-"½ñ¼°: gpg [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]\n"
-"½ð̾¡¢¸¡ºº¡¢°Å¹æ²½¤äÉü¹æ\n"
-"´ûÄê¤ÎÁàºî¤Ï¡¢ÆþÎϥǡ¼¥¿¤Ë°Í¸\n"
+"形式: gpg [オプション] [ファイル]\n"
+"署名、検査、暗号化や復号\n"
+"デフォルトの操作は、入力データに依存\n"
 
 msgid ""
 "\n"
 "Supported algorithms:\n"
 msgstr ""
 "\n"
-"¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥¢¥ë¥´¥ê¥º¥à:\n"
+"サポートしているアルゴリズム:\n"
 
 msgid "Pubkey: "
-msgstr "¸ø³«¸°: "
+msgstr "公開鍵: "
 
 msgid "Cipher: "
-msgstr "°Å¹æË¡: "
+msgstr "暗号方式: "
 
 msgid "Hash: "
-msgstr "¥Ï¥Ã¥·¥å: "
+msgstr "ハッシュ: "
 
 msgid "Compression: "
-msgstr "°µ½Ì: "
+msgstr "圧縮: "
 
 msgid "usage: gpg [options] "
-msgstr "»È¤¤Êý: gpg [¥ª¥×¥·¥ç¥ó] "
+msgstr "使い方: gpg [オプション] "
 
 msgid "conflicting commands\n"
-msgstr "ÂÐΩ¤¹¤ë¥³¥Þ¥ó¥É\n"
+msgstr "対立するコマンド\n"
 
 #, c-format
 msgid "no = sign found in group definition '%s'\n"
-msgstr "=µ­¹æ¤¬¡¢¥°¥ë¡¼¥×ÄêµÁ¡Ö%s¡×Æâ¤Ë¸«¤Ä¤«¤ê¤Þ¤»¤ó\n"
+msgstr "=記号が、グループ定義'%s'内に見つかりません\n"
 
 #, c-format
 msgid "WARNING: unsafe ownership on homedir '%s'\n"
-msgstr "·Ù¹ð: homedir ¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤½êÍ­¼Ô\n"
+msgstr "*警告*: homedir '%s'の安全でない所有者\n"
 
 #, c-format
 msgid "WARNING: unsafe ownership on configuration file '%s'\n"
-msgstr "·Ù¹ð: ¹½À®¥Õ¥¡¥¤¥ë¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤½êÍ­¼Ô\n"
+msgstr "*警告*: コンフィグレーション・ファイル'%s'の安全でない所有者\n"
 
 #, c-format
 msgid "WARNING: unsafe ownership on extension '%s'\n"
-msgstr "·Ù¹ð: ³ÈÄ¥¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤½êÍ­¼Ô\n"
+msgstr "*警告*: 拡張'%s'の安全でない所有者\n"
 
 #, c-format
 msgid "WARNING: unsafe permissions on homedir '%s'\n"
-msgstr "·Ù¹ð: homedir ¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤µö²Ä\n"
+msgstr "*警告*: homedir '%s'の安全でない許可\n"
 
 #, c-format
 msgid "WARNING: unsafe permissions on configuration file '%s'\n"
-msgstr "·Ù¹ð: ¹½À®¥Õ¥¡¥¤¥ë¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤µö²Ä\n"
+msgstr "*警告*: コンフィグレーション・ファイル'%s'の安全でない許可\n"
 
 #, c-format
 msgid "WARNING: unsafe permissions on extension '%s'\n"
-msgstr "·Ù¹ð: ³ÈÄ¥¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤µö²Ä\n"
+msgstr "*警告*: 拡張'%s'の安全でない許可\n"
 
 #, c-format
 msgid "WARNING: unsafe enclosing directory ownership on homedir '%s'\n"
-msgstr "·Ù¹ð: homedir ¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤¾å°Ì¥Ç¥£¥ì¥¯¥È¥ê¡¼½êÍ­¼Ô\n"
+msgstr "*警告*: homedir '%s'の安全でない上位ディレクトリ所有者\n"
 
 #, c-format
 msgid ""
-"WARNING: unsafe enclosing directory ownership on configuration file `%s'\n"
-msgstr "·Ù¹ð: ¹½À®¥Õ¥¡¥¤¥ë¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤¾å°Ì¥Ç¥£¥ì¥¯¥È¥ê¡¼½êÍ­¼Ô\n"
+"WARNING: unsafe enclosing directory ownership on configuration file '%s'\n"
+msgstr ""
+"*警告*: コンフィグレーション・ファイル'%s'の安全でない上位ディレクトリ所有"
+"者\n"
 
 #, c-format
 msgid "WARNING: unsafe enclosing directory ownership on extension '%s'\n"
-msgstr "·Ù¹ð: ³ÈÄ¥¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤¾å°Ì¥Ç¥£¥ì¥¯¥È¥ê¡¼½êÍ­¼Ô\n"
+msgstr "*警告*: 拡張'%s'の安全でない上位ディレクトリ所有者\n"
 
 #, c-format
 msgid "WARNING: unsafe enclosing directory permissions on homedir '%s'\n"
-msgstr "·Ù¹ð: homedir ¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤¾å°Ì¥Ç¥£¥ì¥¯¥È¥ê¡¼µö²Ä\n"
+msgstr "*警告*: homedir '%s'の安全でない上位ディレクトリ許可\n"
 
 #, c-format
 msgid ""
-"WARNING: unsafe enclosing directory permissions on configuration file `%s'\n"
-msgstr "·Ù¹ð: ¹½À®¥Õ¥¡¥¤¥ë¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤¾å°Ì¥Ç¥£¥ì¥¯¥È¥ê¡¼µö²Ä\n"
+"WARNING: unsafe enclosing directory permissions on configuration file '%s'\n"
+msgstr ""
+"*警告*: コンフィグレーション・ファイル'%s'の安全でない上位ディレクトリ許可\n"
 
 #, c-format
 msgid "WARNING: unsafe enclosing directory permissions on extension '%s'\n"
-msgstr "·Ù¹ð: ³ÈÄ¥¡Ö%s¡×¤Î°ÂÁ´¤Ç¤Ê¤¤¾å°Ì¥Ç¥£¥ì¥¯¥È¥ê¡¼µö²Ä\n"
+msgstr "*警告*: 拡張'%s'の安全でない上位ディレクトリ許可\n"
 
 #, c-format
 msgid "unknown configuration item '%s'\n"
-msgstr "̤ÃΤι½À®¹àÌÜ¡Ö%s¡×\n"
+msgstr "不明のコンフィグレーション項目'%s'\n"
 
 msgid "display photo IDs during key listings"
-msgstr ""
+msgstr "鍵の一覧にフォトIDを表示する"
 
 msgid "show policy URLs during signature listings"
-msgstr ""
+msgstr "署名の一覧にポリシURLを表示する"
 
-#, fuzzy
 msgid "show all notations during signature listings"
-msgstr "ÈëÌ©¸°ÎؤËÂбþ¤¹¤ë½ð̾¤¬¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "署名の一覧にすべての注釈を表示する"
 
 msgid "show IETF standard notations during signature listings"
-msgstr ""
+msgstr "署名の一覧にIETF標準注釈を表示する"
 
 msgid "show user-supplied notations during signature listings"
-msgstr ""
+msgstr "署名の一覧にユーザの注釈を表示する"
 
-#, fuzzy
 msgid "show preferred keyserver URLs during signature listings"
-msgstr "»ØÄꤵ¤ì¤¿Áª¹¥¸°¥µ¡¼¥Ð¡¼URL¤Ï̵¸ú¤Ç¤¹\n"
+msgstr "署名の一覧に優先鍵サーバURLを表示する"
 
 msgid "show user ID validity during key listings"
-msgstr ""
+msgstr "鍵の一覧にユーザIDの有効性を表示する"
 
 msgid "show revoked and expired user IDs in key listings"
-msgstr ""
+msgstr "鍵の一覧に失効したユーザID、期限切れとなったユーザIDを表示する"
 
 msgid "show revoked and expired subkeys in key listings"
-msgstr ""
+msgstr "鍵の一覧に失効した副鍵、期限切れとなった副鍵を表示する"
 
-#, fuzzy
 msgid "show the keyring name in key listings"
-msgstr "ÈëÌ©¸°¤È¸ø³«¸°¤Î°ìÍ÷¤Îȿž"
+msgstr "鍵の一覧に鍵リングの名前を表示する"
 
-#, fuzzy
 msgid "show expiration dates during signature listings"
-msgstr "ÈëÌ©¸°ÎؤËÂбþ¤¹¤ë½ð̾¤¬¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "署名の一覧に有効期限の日付を表示する"
 
 #, c-format
 msgid "NOTE: old default options file '%s' ignored\n"
-msgstr "Ãí°Õ: ÀΡ¢´ûÄê¤À¤Ã¤¿¥ª¥×¥·¥ç¥ó¡¦¥Õ¥¡¥¤¥ë¡Ö%s¡×¤Ï¡¢Ìµ»ë¤µ¤ì¤Þ¤¹\n"
+msgstr "*注意*: 以前デフォルトだったオプション・ファイル'%s'は、無視されます\n"
 
 #, c-format
 msgid "libgcrypt is too old (need %s, have %s)\n"
-msgstr ""
+msgstr "libgcrypt は古すぎます (必要 %s, 現在 %s)\n"
 
 #, c-format
 msgid "NOTE: %s is not for normal use!\n"
-msgstr "Ãí°Õ: ÉáÄÌ%s¤Ï»È¤¤¤Þ¤»¤ó!\n"
+msgstr "*注意*: 普通%sは使いません!\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' is not a valid signature expiration\n"
-msgstr "¡Ö%s¡×¤Ï¡¢Í­¸ú¤Êʸ»ú½¸¹ç¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "'%s'は、有効な署名表現ではありません\n"
+
+#, c-format
+msgid "invalid pinentry mode '%s'\n"
+msgstr "無効な pinentry mode '%s'です\n"
 
 #, c-format
 msgid "'%s' is not a valid character set\n"
-msgstr "¡Ö%s¡×¤Ï¡¢Í­¸ú¤Êʸ»ú½¸¹ç¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "'%s'は、有効な文字集合ではありません\n"
 
 msgid "could not parse keyserver URL\n"
-msgstr "¸°¥µ¡¼¥Ð¡¼¤ÎURL¤ò²òÀÏÉÔǽ\n"
+msgstr "é\8dµã\82µã\83¼ã\83\90ã\81®URLã\82\92解æ\9e\90ä¸\8dè\83½\n"
 
 #, c-format
 msgid "%s:%d: invalid keyserver options\n"
-msgstr "%s:%d: Ìµ¸ú¤Ê¸°¥µ¡¼¥Ð¡¼¡¦¥ª¥×¥·¥ç¥ó¤Ç¤¹\n"
+msgstr "%s:%d: 無効な鍵サーバ・オプションです\n"
 
 msgid "invalid keyserver options\n"
-msgstr "̵¸ú¤Ê¸°¥µ¡¼¥Ð¡¼¡¦¥ª¥×¥·¥ç¥ó¤Ç¤¹\n"
+msgstr "無効な鍵サーバ・オプションです\n"
 
 #, c-format
 msgid "%s:%d: invalid import options\n"
-msgstr "%s:%d: Ìµ¸ú¤ÊÆɹþ¤ß¥ª¥×¥·¥ç¥ó¤Ç¤¹\n"
+msgstr "%s:%d: 無効なインポート・オプションです\n"
 
 msgid "invalid import options\n"
-msgstr "̵¸ú¤ÊÆɹþ¤ß¥ª¥×¥·¥ç¥ó¤Ç¤¹\n"
+msgstr "無効なインポート・オプションです\n"
 
 #, c-format
 msgid "%s:%d: invalid export options\n"
-msgstr "%s:%d: Ìµ¸ú¤Ê½ñ½Ð¤·¥ª¥×¥·¥ç¥ó¤Ç¤¹\n"
+msgstr "%s:%d: 無効なエクスポート・オプションです\n"
 
 msgid "invalid export options\n"
-msgstr "̵¸ú¤Ê½ñ½Ð¤·¥ª¥×¥·¥ç¥ó¤Ç¤¹\n"
+msgstr "無効なエクスポート・オプションです\n"
 
 #, c-format
 msgid "%s:%d: invalid list options\n"
-msgstr "%s:%d: Ìµ¸ú¤Ê°ìÍ÷¥ª¥×¥·¥ç¥ó¤Ç¤¹\n"
+msgstr "%s:%d: 無効な一覧オプションです\n"
 
 msgid "invalid list options\n"
-msgstr "̵¸ú¤Ê°ìÍ÷¥ª¥×¥·¥ç¥ó¤Ç¤¹\n"
+msgstr "無効な一覧オプションです\n"
 
 msgid "display photo IDs during signature verification"
-msgstr ""
+msgstr "署名の検証時にフォトIDを表示する"
 
 msgid "show policy URLs during signature verification"
-msgstr ""
+msgstr "署名の検証時にポリシURLを表示する"
 
-#, fuzzy
 msgid "show all notations during signature verification"
-msgstr "¡Ö%s¡×¤Ï¡¢Í­¸ú¤Êʸ»ú½¸¹ç¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "署名の検証時にすべての注釈を表示する"
 
 msgid "show IETF standard notations during signature verification"
-msgstr ""
+msgstr "署名の検証時にIETF標準注釈を表示する"
 
 msgid "show user-supplied notations during signature verification"
-msgstr ""
+msgstr "署名の検証時にユーザの注釈を表示する"
 
-#, fuzzy
 msgid "show preferred keyserver URLs during signature verification"
-msgstr "»ØÄꤵ¤ì¤¿Áª¹¥¸°¥µ¡¼¥Ð¡¼URL¤Ï̵¸ú¤Ç¤¹\n"
+msgstr "署名の検証時に優先鍵サーバURLを表示する"
 
-#, fuzzy
 msgid "show user ID validity during signature verification"
-msgstr "¡Ö%s¡×¤Ï¡¢Í­¸ú¤Êʸ»ú½¸¹ç¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "署名の検証時にユーザIDの有効性を表示する"
 
 msgid "show revoked and expired user IDs in signature verification"
-msgstr ""
+msgstr "署名の検証時に失効したユーザID、期限切れとなったユーザIDを表示する"
 
-#, fuzzy
 msgid "show only the primary user ID in signature verification"
-msgstr "¡Ö%s¡×¤Ï¡¢Í­¸ú¤Êʸ»ú½¸¹ç¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "署名の検証時に主なユーザIDだけをを表示する"
 
 msgid "validate signatures with PKA data"
-msgstr ""
+msgstr "PKAデータで署名を検証する"
 
 msgid "elevate the trust of signatures with valid PKA data"
-msgstr ""
+msgstr "有効なPKAデータで署名の信用度を上昇させる"
 
 #, c-format
 msgid "%s:%d: invalid verify options\n"
-msgstr "%s:%d: Ìµ¸ú¤Ê¸¡¾Ú¥ª¥×¥·¥ç¥ó¤Ç¤¹\n"
+msgstr "%s:%d: 無効な検証オプションです\n"
 
 msgid "invalid verify options\n"
-msgstr "̵¸ú¤Ê¸¡¾Ú¥ª¥×¥·¥ç¥ó¤Ç¤¹\n"
+msgstr "無効な検証オプションです\n"
 
 #, c-format
 msgid "unable to set exec-path to %s\n"
-msgstr "exec-path¤ò%s¤ËÀßÄêÉÔǽ\n"
+msgstr "exec-pathã\82\92%sã\81«è¨­å®\9aä¸\8dè\83½\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s:%d: invalid auto-key-locate list\n"
-msgstr "%s:%d: Ìµ¸ú¤Ê¸¡¾Ú¥ª¥×¥·¥ç¥ó¤Ç¤¹\n"
+msgstr "%s:%d: 無効な auto-key-locate リストです\n"
 
 msgid "invalid auto-key-locate list\n"
-msgstr ""
+msgstr "無効な auto-key-locate リストです\n"
 
 msgid "WARNING: program may create a core file!\n"
-msgstr "·Ù¹ð: ¥×¥í¥°¥é¥à¤Î¥³¥¢¡¦¥Õ¥¡¥¤¥ë¤¬¤Ç¤­¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹!\n"
+msgstr "*警告*: プログラムのコア・ファイルができることがあります!\n"
 
 #, c-format
 msgid "WARNING: %s overrides %s\n"
-msgstr "·Ù¹ð: %s¤Ï%s¤è¤êÍ¥Àè\n"
+msgstr "*警告*: %sは%sより優先\n"
 
 #, c-format
 msgid "%s not allowed with %s!\n"
-msgstr "%s¤Ï%s¤È¤È¤â¤Ë»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó!\n"
+msgstr "%sは%sとともに使うことはできません!\n"
 
 #, c-format
 msgid "%s makes no sense with %s!\n"
-msgstr "%s¤Ï%s¤È¤È¤â¤Ë»È¤Ã¤Æ¤â̵°ÕÌ£¤Ç¤¹!\n"
+msgstr "%sは%sとともに使っても無意味です!\n"
+
+msgid "WARNING: running with faked system time: "
+msgstr "*警告*: ニセモノのシステム時刻で実行しています: "
 
-#, fuzzy, c-format
+#, c-format
 msgid "will not run with insecure memory due to %s\n"
-msgstr "¡Ö%s¡×¤ØÈëÌ©¸°¥¹¥¿¥Ö¤ò½ñ¤­¹þ¤ß¤Þ¤¹\n"
+msgstr "%s のため、セキュアでないメモリで実行しません\n"
 
 msgid "you can only make detached or clear signatures while in --pgp2 mode\n"
-msgstr "--pgp2¥â¡¼¥É¤Ç¤ÏʬΥ½ð̾¤«¥¯¥ê¥¢½ð̾¤À¤±¤·¤«¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "--pgp2モードでは分離署名かクリア・テクスト署名だけしかできません\n"
 
 msgid "you can't sign and encrypt at the same time while in --pgp2 mode\n"
-msgstr "--pgp2¥â¡¼¥É¤Ç¤Ï½ð̾¤È°Å¹æ²½¤òƱ»þ¤Ë¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "--pgp2モードでは署名と暗号化を同時にできません\n"
 
 msgid "you must use files (and not a pipe) when working with --pgp2 enabled.\n"
-msgstr "--pgp2¤ò»ØÄꤷ¤¿¤é¡¢(¥Ñ¥¤¥×¤Ç¤Ê¤¯) ¥Õ¥¡¥¤¥ë¤ò»ØÄꤻ¤Í¤Ð¤Ê¤ê¤Þ¤»¤ó¡£\n"
+msgstr "--pgp2を指定したら、(パイプでなく) ファイルを指定せねばなりません。\n"
 
 msgid "encrypting a message in --pgp2 mode requires the IDEA cipher\n"
-msgstr "--pgp2¥â¡¼¥É¤Î¥á¥Ã¥»¡¼¥¸°Å¹æ²½¤Ç¤Ï¡¢IDEA°Å¹æË¡¤¬É¬ÍפǤ¹\n"
+msgstr "--pgp2モードのメッセージ暗号化では、IDEA暗号方式が必要です\n"
 
 msgid "selected cipher algorithm is invalid\n"
-msgstr "ÁªÂò¤µ¤ì¤¿°Å¹æ¥¢¥ë¥´¥ê¥º¥à¤Ï¡¢Ìµ¸ú¤Ç¤¹\n"
+msgstr "選択された暗号アルゴリズムは、無効です\n"
 
 msgid "selected digest algorithm is invalid\n"
-msgstr "ÁªÂò¤µ¤ì¤¿Í×Ì󥢥르¥ê¥º¥à¤Ï¡¢Ìµ¸ú¤Ç¤¹\n"
+msgstr "選択されたダイジェスト・アルゴリズムは、無効です\n"
 
 msgid "selected compression algorithm is invalid\n"
-msgstr "ÁªÂò¤µ¤ì¤¿°µ½Ì¥¢¥ë¥´¥ê¥º¥à¤Ï¡¢Ìµ¸ú¤Ç¤¹\n"
+msgstr "選択された圧縮アルゴリズムは、無効です\n"
 
 msgid "selected certification digest algorithm is invalid\n"
-msgstr "ÁªÂò¤µ¤ì¤¿¾ÚÌÀ½ñÍ×Ì󥢥르¥ê¥º¥à¤Ï¡¢Ìµ¸ú¤Ç¤¹\n"
+msgstr "選択された証明書ダイジェスト・アルゴリズムは、無効です\n"
 
 msgid "completes-needed must be greater than 0\n"
-msgstr "completes-needed¤ÏÀµ¤ÎÃͤ¬É¬ÍפǤ¹\n"
+msgstr "completes-neededは正の値が必要です\n"
 
 msgid "marginals-needed must be greater than 1\n"
-msgstr "marginals-needed¤Ï1¤è¤êÂ礭¤ÊÃͤ¬É¬ÍפǤ¹\n"
+msgstr "marginals-neededは1より大きな値が必要です\n"
 
 msgid "max-cert-depth must be in the range from 1 to 255\n"
-msgstr "max-cert-depth¤Ï1¤«¤é255¤ÎÈϰϤǤʤ±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó\n"
+msgstr "max-cert-depthは1から255の範囲でなければなりません\n"
 
 msgid "invalid default-cert-level; must be 0, 1, 2, or 3\n"
-msgstr "̵¸ú¤Êdefault-cert-level¡£0¤«1¤«2¤«3¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó\n"
+msgstr "無効なdefault-cert-level。0か1か2か3でなければなりません\n"
 
 msgid "invalid min-cert-level; must be 1, 2, or 3\n"
-msgstr "̵¸ú¤Êmin-cert-level¡£0¤«1¤«2¤«3¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó\n"
+msgstr "無効なmin-cert-level。0か1か2か3でなければなりません\n"
 
 msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
-msgstr "Ãí°Õ: Ã±½ã¤ÊS2K¥â¡¼¥É(0)¤Î»ÈÍѤˤ϶¯¤¯È¿ÂФ·¤Þ¤¹\n"
+msgstr "*注意*: 単純なS2Kモード(0)の使用には強く反対します\n"
 
 msgid "invalid S2K mode; must be 0, 1 or 3\n"
-msgstr "̵¸ú¤ÊS2K¥â¡¼¥É¡£0¤«1¤«3¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó\n"
+msgstr "無効なS2Kモード。0か1か3でなければなりません\n"
 
 msgid "invalid default preferences\n"
-msgstr "̵¸ú¤Ê´ûÄê¤ÎÁª¹¥\n"
+msgstr "無効なデフォルトの優先指定\n"
 
 msgid "invalid personal cipher preferences\n"
-msgstr "̵¸ú¤Ê¸Ä¿ÍÍѰŹæË¡¤ÎÁª¹¥\n"
+msgstr "無効な個人用暗号方式の優先指定\n"
 
 msgid "invalid personal digest preferences\n"
-msgstr "̵¸ú¤Ê¸Ä¿ÍÍÑÍ×Ìó¤ÎÁª¹¥\n"
+msgstr "無効な個人用ダイジェストの優先指定\n"
 
 msgid "invalid personal compress preferences\n"
-msgstr "̵¸ú¤Ê¸Ä¿ÍÍÑ°µ½Ì¤ÎÁª¹¥\n"
+msgstr "無効な個人用圧縮の優先指定\n"
 
 #, c-format
 msgid "%s does not yet work with %s\n"
-msgstr "%s¤Ï%s¤Çµ¡Ç½¤·¤Þ¤»¤ó\n"
+msgstr "%sは%sではまだ機能しません\n"
 
 #, c-format
 msgid "you may not use cipher algorithm '%s' while in %s mode\n"
-msgstr "°Å¹æ¥¢¥ë¥´¥ê¥º¥à¡Ö%s¡×¤ò%s¥â¡¼¥É¤Ç»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "暗号アルゴリズム'%s'を%sモードで使うことはできません\n"
 
 #, c-format
 msgid "you may not use digest algorithm '%s' while in %s mode\n"
-msgstr "Í×Ì󥢥르¥ê¥º¥à¡Ö%s¡×¤ò%s¥â¡¼¥É¤Ç»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "ダイジェスト・アルゴリズム'%s'を%sモードで使うことはできません\n"
 
 #, c-format
 msgid "you may not use compression algorithm '%s' while in %s mode\n"
-msgstr "°µ½Ì¥¢¥ë¥´¥ê¥º¥à¡Ö%s¡×¤ò%s¥â¡¼¥É¤Ç»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "圧縮アルゴリズム'%s'を%sモードで使うことはできません\n"
 
 #, c-format
 msgid "failed to initialize the TrustDB: %s\n"
-msgstr "¿®Íѥǡ¼¥¿¥Ù¡¼¥¹¤Î½é´ü²½¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "信用データベースの初期化に失敗しました: %s\n"
 
 msgid "WARNING: recipients (-r) given without using public key encryption\n"
-msgstr "·Ù¹ð: ¸ø³«¸°°Å¹æ¤ò»È¤ï¤º¤Ë¡¢¼õ¼è¿Í (-r) ¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹\n"
+msgstr "*警告*: 公開鍵暗号を使わずに、受取人 (-r) を指定しています\n"
 
 msgid "--store [filename]"
-msgstr "--store [¥Õ¥¡¥¤¥ë̾]"
+msgstr "--store [ファイル名]"
 
 msgid "--symmetric [filename]"
-msgstr "--symmetric [¥Õ¥¡¥¤¥ë̾]"
+msgstr "--symmetric [ファイル名]"
 
 #, c-format
 msgid "symmetric encryption of '%s' failed: %s\n"
-msgstr "¡Ö%s¡×¤ÎÂоΰŹæ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "'%s'の共通鍵暗号に失敗しました: %s\n"
 
 msgid "--encrypt [filename]"
-msgstr "--encrypt [¥Õ¥¡¥¤¥ë̾]"
+msgstr "--encrypt [ファイル名]"
 
 msgid "--symmetric --encrypt [filename]"
-msgstr "--symmetric --encrypt [¥Õ¥¡¥¤¥ë̾]"
+msgstr "--symmetric --encrypt [ファイル名]"
 
 msgid "you cannot use --symmetric --encrypt with --s2k-mode 0\n"
-msgstr "--symmetric --encrypt¤ò--s2k-mode 0¤Ç»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "--symmetric --encryptを--s2k-mode 0で使うことはできません\n"
 
 #, c-format
 msgid "you cannot use --symmetric --encrypt while in %s mode\n"
-msgstr "--symmetric --encrypt¤ò%s¥â¡¼¥É¤Ç»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "--symmetric --encryptを%sモードで使うことはできません\n"
 
 msgid "--sign [filename]"
-msgstr "--sign [¥Õ¥¡¥¤¥ë̾]"
+msgstr "--sign [ファイル名]"
 
 msgid "--sign --encrypt [filename]"
-msgstr "--sign --encrypt [¥Õ¥¡¥¤¥ë̾]"
+msgstr "--sign --encrypt [ファイル名]"
 
 msgid "--symmetric --sign --encrypt [filename]"
-msgstr "--symmetric --sign --encrypt [¥Õ¥¡¥¤¥ë̾]"
+msgstr "--symmetric --sign --encrypt [ファイル名]"
 
 msgid "you cannot use --symmetric --sign --encrypt with --s2k-mode 0\n"
-msgstr "--symmetric --sign --encrypt¤ò--s2k-mode 0¤Ç»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "--symmetric --sign --encryptを--s2k-mode 0で使うことはできません\n"
 
 #, c-format
 msgid "you cannot use --symmetric --sign --encrypt while in %s mode\n"
-msgstr "--symmetric --sign --encrypt¤ò%s¥â¡¼¥É¤Ç»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "--symmetric --sign --encryptを%sモードで使うことはできません\n"
 
 msgid "--sign --symmetric [filename]"
-msgstr "--sign --symmetric [¥Õ¥¡¥¤¥ë̾]"
+msgstr "--sign --symmetric [ファイル名]"
 
 msgid "--clearsign [filename]"
-msgstr "--clearsign [¥Õ¥¡¥¤¥ë̾]"
+msgstr "--clearsign [ファイル名]"
 
 msgid "--decrypt [filename]"
-msgstr "--decrypt [¥Õ¥¡¥¤¥ë̾]"
+msgstr "--decrypt [ファイル名]"
 
 msgid "--sign-key user-id"
-msgstr "--sign-key ¥æ¡¼¥¶¡¼id"
+msgstr "--sign-key ユーザid"
 
 msgid "--lsign-key user-id"
-msgstr "--lsign-key ¥æ¡¼¥¶¡¼id"
+msgstr "--lsign-key ユーザid"
 
 msgid "--edit-key user-id [commands]"
-msgstr "--edit-key ¥æ¡¼¥¶¡¼id [¥³¥Þ¥ó¥É]"
+msgstr "--edit-key ユーザid [コマンド]"
+
+msgid "--passwd <user-id>"
+msgstr "--passwd <ユーザid>"
 
 #, c-format
 msgid "keyserver send failed: %s\n"
-msgstr "¸°¥µ¡¼¥Ð¡¼¤Ø¤ÎÁ÷¿®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "鍵サーバへの送信に失敗しました: %s\n"
 
 #, c-format
 msgid "keyserver receive failed: %s\n"
-msgstr "¸°¥µ¡¼¥Ð¡¼¤«¤é¤Î¼õ¿®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "鍵サーバからの受信に失敗しました: %s\n"
 
 #, c-format
 msgid "key export failed: %s\n"
-msgstr "¸°¤Î½ñ½Ð¤·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "鍵のエクスポートに失敗しました: %s\n"
 
 #, c-format
 msgid "keyserver search failed: %s\n"
-msgstr "¸°¥µ¡¼¥Ð¡¼¤Î¸¡º÷¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "鍵サーバの検索に失敗しました: %s\n"
 
 #, c-format
 msgid "keyserver refresh failed: %s\n"
-msgstr "¸°¥µ¡¼¥Ð¡¼¤Î²óÉü¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "鍵サーバの回復に失敗しました: %s\n"
 
 #, c-format
 msgid "dearmoring failed: %s\n"
-msgstr "ÊñÁõ½üµî¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "外装除去に失敗しました: %s\n"
 
 #, c-format
 msgid "enarmoring failed: %s\n"
-msgstr "ÊñÁõ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "外装に失敗しました: %s\n"
 
 #, c-format
 msgid "invalid hash algorithm '%s'\n"
-msgstr "̵¸ú¤Ê¥Ï¥Ã¥·¥å¡¦¥¢¥ë¥´¥ê¥º¥à¡Ö%s¡×¤Ç¤¹\n"
+msgstr "無効なハッシュ・アルゴリズム'%s'です\n"
 
 msgid "[filename]"
-msgstr "[¥Õ¥¡¥¤¥ë̾]"
+msgstr "[ファイル名]"
 
 msgid "Go ahead and type your message ...\n"
-msgstr "³«»Ï¤·¤Þ¤¹¡£¥á¥Ã¥»¡¼¥¸¤òÂǤäƤ¯¤À¤µ¤¤ ...\n"
+msgstr "開始します。メッセージを打ってください ...\n"
 
 msgid "the given certification policy URL is invalid\n"
-msgstr "¤¢¤¿¤¨¤é¤ì¤¿¾ÚÌÀ½ñ¥Ý¥ê¥·¡¼URL¤Ï̵¸ú¤Ç¤¹\n"
+msgstr "あたえられた証明書ポリシURLは無効です\n"
 
 msgid "the given signature policy URL is invalid\n"
-msgstr "¤¢¤¿¤¨¤é¤ì¤¿½ð̾¥Ý¥ê¥·¡¼URL¤Ï̵¸ú¤Ç¤¹\n"
+msgstr "あたえられた署名ポリシURLは無効です\n"
 
 msgid "the given preferred keyserver URL is invalid\n"
-msgstr "»ØÄꤵ¤ì¤¿Áª¹¥¸°¥µ¡¼¥Ð¡¼URL¤Ï̵¸ú¤Ç¤¹\n"
+msgstr "指定された優先鍵サーバURLは無効です\n"
 
-#, fuzzy
 msgid "|FILE|take the keys from the keyring FILE"
-msgstr "¤³¤Î¸°¤ò¸°Îؤ«¤éºï½ü¤·¤Þ¤¹"
+msgstr "|FILE|鍵リングFILEの鍵を扱います"
 
 msgid "make timestamp conflicts only a warning"
-msgstr "Æü»þ¤ÎÌ·½â¤ò·Ù¹ð¤À¤±¤Ë¤·¤Þ¤¹"
+msgstr "日時の矛盾を警告だけにします"
 
 msgid "|FD|write status info to this FD"
-msgstr ""
-"|¥Õ¥¡¥¤¥ëµ­½Ò»Ò|¤³¤Î¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤Ë¾õÂÖ¤ò\n"
-"½ñ¤­¹þ¤à"
+msgstr "|FD|このFDにステイタス情報を書き出す"
 
 msgid "Usage: gpgv [options] [files] (-h for help)"
-msgstr "»È¤¤Êý: gpgv [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë] (¥Ø¥ë¥×¤Ï -h)"
+msgstr "使い方: gpgv [オプション] [ファイル] (ヘルプは -h)"
 
-#, fuzzy
 msgid ""
 "Syntax: gpgv [options] [files]\n"
 "Check signatures against known trusted keys\n"
 msgstr ""
-"¹½Ê¸: gpg [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]\n"
-"´ûÃΤο®ÍѤ·¤¿¸°¤Ç½ð̾¤ò¸¡ºº\n"
+"形式: gpgv [オプション] [ファイル]\n"
+"既知の信用した鍵で署名を検査\n"
 
 msgid "No help available"
-msgstr "¥Ø¥ë¥×¤Ï¤¢¤ê¤Þ¤»¤ó"
+msgstr "ヘルプはありません"
 
 #, c-format
 msgid "No help available for '%s'"
-msgstr "¡Ö%s¡×¤Î¥Ø¥ë¥×¤Ï¤¢¤ê¤Þ¤»¤ó"
+msgstr "'%s'のヘルプはありません"
 
 msgid "import signatures that are marked as local-only"
-msgstr ""
+msgstr "ローカルだけとマークされた署名をインポートします"
 
 msgid "repair damage from the pks keyserver during import"
-msgstr ""
+msgstr "インポート時にpksキーサーバからのダメージを修正します"
 
-#, fuzzy
 msgid "do not update the trustdb after import"
-msgstr "¿®Íѥǡ¼¥¿¥Ù¡¼¥¹¤ò¹¹¿·"
-
-#, fuzzy
-msgid "create a public key when importing a secret key"
-msgstr "¸ø³«¸°¤ÈÈëÌ©¸°¤¬¾È¹ç¤·¤Þ¤»¤ó!\n"
+msgstr "インポートの際、信用データベースを更新しない"
 
 msgid "only accept updates to existing keys"
-msgstr ""
+msgstr "既存の鍵に対する更新のみ認めます"
 
-#, fuzzy
 msgid "remove unusable parts from key after import"
-msgstr "»ÈÍѤǤ­¤Ê¤¤ÈëÌ©¸°¤Ç¤¹"
+msgstr "インポート後、利用できない部分を鍵から除去します"
 
 msgid "remove as much as possible from key after import"
-msgstr ""
+msgstr "インポートの後、できるだけ除去します"
 
 #, c-format
 msgid "skipping block of type %d\n"
-msgstr "·¿%d¤Î¥Ö¥í¥Ã¥¯¤ò¤È¤Ð¤·¤Þ¤¹\n"
+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"
-msgstr "    ½èÍý¿ô¤Î¹ç·×: %lu\n"
+msgstr "        処理数の合計: %lu\n"
 
 #, c-format
 msgid "      skipped new keys: %lu\n"
-msgstr "¤È¤Ð¤·¤¿¿·¤·¤¤¸°: %lu\n"
+msgstr "スキップした新しい鍵: %lu\n"
 
 #, c-format
 msgid "          w/o user IDs: %lu\n"
-msgstr "  ¥æ¡¼¥¶¡¼ID¤Ê¤·: %lu\n"
+msgstr "        ユーザIDなし: %lu\n"
 
 #, c-format
 msgid "              imported: %lu"
-msgstr "          Æɹþ¤ß: %lu"
+msgstr "          インポート: %lu"
 
 #, c-format
 msgid "             unchanged: %lu\n"
-msgstr "        Êѹ¹¤Ê¤·: %lu\n"
+msgstr "            変更なし: %lu\n"
 
 #, c-format
 msgid "          new user IDs: %lu\n"
-msgstr "¿·¤·¤¤¥æ¡¼¥¶¡¼ID: %lu\n"
+msgstr "      新しいユーザID: %lu\n"
 
 #, c-format
 msgid "           new subkeys: %lu\n"
-msgstr "      ¿·¤·¤¤Éû¸°: %lu\n"
+msgstr "          新しい副鍵: %lu\n"
 
 #, c-format
 msgid "        new signatures: %lu\n"
-msgstr "      ¿·¤·¤¤½ð̾: %lu\n"
+msgstr "          新しい署名: %lu\n"
 
 #, c-format
 msgid "   new key revocations: %lu\n"
-msgstr "  ¿·¤·¤¤¸°¤Î¼º¸ú: %lu\n"
+msgstr "      新しい鍵の失効: %lu\n"
 
 #, c-format
 msgid "      secret keys read: %lu\n"
-msgstr "  ÈëÌ©¸°¤ÎÆɽФ·: %lu\n"
+msgstr "    秘密鍵の読み込み: %lu\n"
 
 #, c-format
 msgid "  secret keys imported: %lu\n"
-msgstr "  ÈëÌ©¸°¤ÎÆɹþ¤ß: %lu\n"
+msgstr "  秘密鍵のインポート: %lu\n"
 
 #, c-format
 msgid " secret keys unchanged: %lu\n"
-msgstr "  ÌµÊѹ¹¤ÎÈëÌ©¸°: %lu\n"
+msgstr "      無変更の秘密鍵: %lu\n"
 
 #, c-format
 msgid "          not imported: %lu\n"
-msgstr "        Ì¤Æɹþ¤ß: %lu\n"
+msgstr "        未インポート: %lu\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "    signatures cleaned: %lu\n"
-msgstr "¤³¤ì¤Þ¤Ç¤ËºîÀ®¤µ¤ì¤¿½ð̾: %lu\n"
+msgstr "      掃除された署名: %lu\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "      user IDs cleaned: %lu\n"
-msgstr "  ÈëÌ©¸°¤ÎÆɽФ·: %lu\n"
+msgstr "  掃除されたユーザID: %lu\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "WARNING: key %s contains preferences for unavailable\n"
 "algorithms on these user IDs:\n"
-msgstr "·Ù¹ð: ¸°%s¤Ë¤Ï¡¢»ÈÍÑÉԲĤȤ¤¤¦Áª¹¥¤¬¤¢¤ê¤Þ¤¹\n"
+msgstr ""
+"*警告*: 鍵%sには、これらのユーザIDに対して使用不可のアルゴリズムの優先指定が"
+"あります\n"
 
 #, c-format
 msgid "         \"%s\": preference for cipher algorithm %s\n"
-msgstr "         \"%s\": °Å¹æ¥¢¥ë¥´¥ê¥º¥à¤ÎÁª¹¥ %s\n"
+msgstr "         \"%s\": 暗号アルゴリズムの優先指定 %s\n"
 
 #, c-format
 msgid "         \"%s\": preference for digest algorithm %s\n"
-msgstr "         \"%s\": Í×Ì󥢥르¥ê¥º¥à¤ÎÁª¹¥ %s\n"
+msgstr "         \"%s\": ダイジェスト・アルゴリズムの優先指定 %s\n"
 
 #, c-format
 msgid "         \"%s\": preference for compression algorithm %s\n"
-msgstr "         \"%s\": °µ½Ì¥¢¥ë¥´¥ê¥º¥à¤ÎÁª¹¥ %s\n"
+msgstr "         \"%s\": 圧縮アルゴリズムの優先指定 %s\n"
 
 msgid "it is strongly suggested that you update your preferences and\n"
-msgstr "it is strongly suggested that you update your preferences and\n"
+msgstr "あなたの優先指定を更新し、この鍵を再配布することが強く推奨されます\n"
 
 msgid "re-distribute this key to avoid potential algorithm mismatch problems\n"
-msgstr ""
-"ÀøºßŪ¤Ê¥¢¥ë¥´¥ê¥º¥àÉÔ°ìÃ×ÌäÂê¤òÈò¤±¤ë¤¿¤á¡¢¤³¤Î¸°¤òºÆÇÛÉÛ¤·¤Æ¤¯¤À¤µ¤¤\n"
+msgstr "それによって、潜在的なアルゴリズム不一致の問題を避けられます\n"
 
 #, c-format
 msgid "you can update your preferences with: gpg --edit-key %s updpref save\n"
-msgstr "°Ê²¼¤Ç¡¢Áª¹¥¤¬¹¹¿·¤Ç¤­¤Þ¤¹: gpg --edit-key %s updpref save\n"
+msgstr "以下で、優先指定を更新できます: gpg --edit-key %s updpref save\n"
 
 #, c-format
 msgid "key %s: no user ID\n"
-msgstr "¸°%s: ¥æ¡¼¥¶¡¼ID¤¬¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "鍵%s: ユーザIDがありません\n"
 
 #, 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"
-msgstr "¸°%s: ¼õÍý¤·¤¿Ì¤¼«¸Ê½ð̾¤Î¥æ¡¼¥¶¡¼ID¡È%s¡É\n"
+msgstr "鍵%s: 受理した未自己署名のユーザID\"%s\"\n"
 
 #, c-format
 msgid "key %s: no valid user IDs\n"
-msgstr "¸°%s: Í­¸ú¤Ê¥æ¡¼¥¶¡¼ID¤¬¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "鍵%s: 有効なユーザIDがありません\n"
 
 msgid "this may be caused by a missing self-signature\n"
-msgstr "¼«¸Ê½ð̾¤Î¤Ê¤¤¤»¤¤¤Ç¤·¤ç¤¦\n"
+msgstr "これはおそらく自己署名のないせいでしょう\n"
 
 #, c-format
 msgid "key %s: public key not found: %s\n"
-msgstr "¸°%s: ¸ø³«¸°¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %s\n"
+msgstr "鍵%s: 公開鍵が見つかりません: %s\n"
 
 #, c-format
 msgid "key %s: new key - skipped\n"
-msgstr "¸°%s: ¿·¤·¤¤¸°¤Ç¤¹ - ¤È¤Ð¤·¤Þ¤¹\n"
+msgstr "鍵%s: 新しい鍵です - スキップします\n"
 
 #, c-format
 msgid "no writable keyring found: %s\n"
-msgstr "½ñ¹þ¤ß²Äǽ¤Ê¸°Îؤ¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %s\n"
+msgstr "書き込み可能な鍵リングが見つかりません: %s\n"
 
 #, c-format
 msgid "writing to '%s'\n"
-msgstr "¡Ö%s¡×¤Ø¤Î½ñ¹þ¤ß\n"
+msgstr "'%s'への書き込み\n"
 
 #, c-format
 msgid "error writing keyring '%s': %s\n"
-msgstr "¸°ÎØ¡Ö%s¡×¤Î½ñ¹þ¤ß¥¨¥é¡¼: %s\n"
+msgstr "é\8dµã\83ªã\83³ã\82°'%s'ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\82¨ã\83©ã\83¼: %s\n"
 
 #, c-format
 msgid "key %s: public key \"%s\" imported\n"
-msgstr "¸°%s: ¸ø³«¸°¡È%s¡É¤òÆɤ߹þ¤ß¤Þ¤·¤¿\n"
+msgstr "鍵%s: 公開鍵\"%s\"をインポートしました\n"
 
 #, c-format
 msgid "key %s: doesn't match our copy\n"
-msgstr "¸°%s: ¤³¤Á¤é¤ÎÊ£À½¤È¹ç¤¤¤Þ¤»¤ó\n"
+msgstr "鍵%s: こちらの複製と合いません\n"
 
 #, c-format
 msgid "key %s: can't locate original keyblock: %s\n"
-msgstr "¸°%s: ¸µ¤Î¸°¥Ö¥í¥Ã¥¯¤Ë°ÌÃ֤Ť±¤Ç¤­¤Þ¤»¤ó: %s\n"
+msgstr "鍵%s: 元の鍵ブロックに位置づけできません: %s\n"
 
 #, c-format
 msgid "key %s: can't read original keyblock: %s\n"
-msgstr "¸°%s: ¸µ¤Î¸°¥Ö¥í¥Ã¥¯¤òÆɤ߽Ф»¤Þ¤»¤ó: %s\n"
+msgstr "鍵%s: 元の鍵ブロックを読み込めません: %s\n"
 
 #, c-format
 msgid "key %s: \"%s\" 1 new user ID\n"
-msgstr "¸°%s:¡È%s¡É¿·¤·¤¤¥æ¡¼¥¶¡¼ID¤ò1¸Ä\n"
+msgstr "鍵%s: \"%s\" 新しいユーザIDを1個\n"
 
 #, c-format
 msgid "key %s: \"%s\" %d new user IDs\n"
-msgstr "¸°%s:¡È%s¡É¿·¤·¤¤¥æ¡¼¥¶¡¼ID¤ò%d¸Ä\n"
+msgstr "鍵%s: \"%s\" 新しいユーザIDを%d個\n"
 
 #, c-format
 msgid "key %s: \"%s\" 1 new signature\n"
-msgstr "¸°%s:¡È%s¡É¿·¤·¤¤½ð̾¤ò1¸Ä\n"
+msgstr "鍵%s: \"%s\" 新しい署名を1個\n"
 
 #, c-format
 msgid "key %s: \"%s\" %d new signatures\n"
-msgstr "¸°%s:¡È%s¡É¿·¤·¤¤½ð̾¤ò%d¸Ä\n"
+msgstr "鍵%s: \"%s\" 新しい署名を%d個\n"
 
 #, c-format
 msgid "key %s: \"%s\" 1 new subkey\n"
-msgstr "¸°%s:¡È%s¡É¿·¤·¤¤Éû¸°¤ò1¸Ä\n"
+msgstr "鍵%s: \"%s\" 新しい副鍵を1個\n"
 
 #, c-format
 msgid "key %s: \"%s\" %d new subkeys\n"
-msgstr "¸°%s:¡È%s¡É¿·¤·¤¤Éû¸°¤ò%d¸Ä\n"
+msgstr "鍵%s: \"%s\" 新しい副鍵を%d個\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "key %s: \"%s\" %d signature cleaned\n"
-msgstr "¸°%s:¡È%s¡É¿·¤·¤¤½ð̾¤ò%d¸Ä\n"
+msgstr "鍵%s: \"%s\" %d個の署名をきれいにしました\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "key %s: \"%s\" %d signatures cleaned\n"
-msgstr "¸°%s:¡È%s¡É¿·¤·¤¤½ð̾¤ò%d¸Ä\n"
+msgstr "鍵%s: \"%s\" %d個の署名をきれいにしました\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "key %s: \"%s\" %d user ID cleaned\n"
-msgstr "¸°%s:¡È%s¡É¿·¤·¤¤¥æ¡¼¥¶¡¼ID¤ò%d¸Ä\n"
+msgstr "鍵%s: \"%s\" %d個のユーザIDをきれいにしました\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "key %s: \"%s\" %d user IDs cleaned\n"
-msgstr "¸°%s:¡È%s¡É¿·¤·¤¤¥æ¡¼¥¶¡¼ID¤ò%d¸Ä\n"
+msgstr "鍵%s: \"%s\" %d個のユーザIDをきれいにしました\n"
 
 #, c-format
 msgid "key %s: \"%s\" not changed\n"
-msgstr "¸°%s:¡È%s¡ÉÊѹ¹¤Ê¤·\n"
+msgstr "鍵%s:\"%s\"変更なし\n"
 
 #, c-format
-msgid "key %s: secret key with invalid cipher %d - skipped\n"
-msgstr "¸°%s: Ìµ¸ú¤Ê°Å¹æË¡%d¤ÎÈëÌ©¸°¤Ç¤¹ - ¤È¤Ð¤·¤Þ¤¹\n"
-
-msgid "importing secret keys not allowed\n"
-msgstr "ÈëÌ©¸°¤ÎÆɹþ¤ß¤Ï¶Ø»ß¤Ç¤¹\n"
+msgid "key %s: secret key imported\n"
+msgstr "鍵%s: 秘密鍵をインポートしました\n"
 
 #, c-format
-msgid "no default secret keyring: %s\n"
-msgstr "´ûÄê¤ÎÈëÌ©¸°Îؤ¬¤¢¤ê¤Þ¤»¤ó: %s\n"
+msgid "key %s: secret key already exists\n"
+msgstr "鍵 %s: 秘密鍵はもうあります\n"
 
 #, c-format
-msgid "key %s: secret key imported\n"
-msgstr "¸°%s: ÈëÌ©¸°¤òÆɤ߹þ¤ß¤Þ¤·¤¿\n"
+msgid "key %s: error sending to agent: %s\n"
+msgstr "鍵 %s: エージェントへの送信エラー: %s\n"
 
 #, c-format
-msgid "key %s: already in secret keyring\n"
-msgstr "¸°%s: ¤â¤¦ÈëÌ©¸°Îؤˤ¢¤ê¤Þ¤¹\n"
+msgid "key %s: secret key with invalid cipher %d - skipped\n"
+msgstr "鍵%s: 無効な暗号方式%dの秘密鍵です - スキップします\n"
 
-#, c-format
-msgid "key %s: secret key not found: %s\n"
-msgstr "¸°%s: ÈëÌ©¸°¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %s\n"
+msgid "importing secret keys not allowed\n"
+msgstr "秘密鍵のインポートは禁止です\n"
 
 #, c-format
 msgid "key %s: no public key - can't apply revocation certificate\n"
-msgstr "¸°%s: ¸ø³«¸°¤¬¤¢¤ê¤Þ¤»¤ó - ¼º¸ú¾ÚÌÀ½ñ¤òŬÍѤǤ­¤Þ¤»¤ó\n"
+msgstr "鍵%s: 公開鍵がありません - 失効証明書を適用できません\n"
 
 #, c-format
 msgid "key %s: invalid revocation certificate: %s - rejected\n"
-msgstr "¸°%s: Ìµ¸ú¤Ê¼º¸ú¾ÚÌÀ½ñ: %s - µñÈÝ\n"
+msgstr "鍵%s: 無効な失効証明書: %s - 拒否\n"
 
 #, 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"
-msgstr "¸°%s: ½ð̾¤ËÂбþ¤¹¤ë¥æ¡¼¥¶¡¼ID¤¬¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "鍵%s: 署名に対応するユーザIDがありません\n"
 
 #, c-format
 msgid "key %s: unsupported public key algorithm on user ID \"%s\"\n"
-msgstr "¸°%s: ¥æ¡¼¥¶¡¼ID¡È%s¡É¤Î¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¸ø³«¸°¥¢¥ë¥´¥ê¥º¥à¤Ç¤¹\n"
+msgstr "鍵%s: ユーザID\"%s\"のサポートしていない公開鍵アルゴリズムです\n"
 
 #, c-format
 msgid "key %s: invalid self-signature on user ID \"%s\"\n"
-msgstr "¸°%s: ¥æ¡¼¥¶¡¼ID¡È%s¡É¤Î¼«¸Ê½ð̾¤¬¡¢Ìµ¸ú¤Ç¤¹\n"
+msgstr "鍵%s: ユーザID\"%s\"の自己署名が、無効です\n"
 
 #, c-format
-msgid "key %s: no subkey for key binding\n"
-msgstr "¸°%s: ¸°¤ËÂбþ¤¹¤ëÉû¸°¤¬¤¢¤ê¤Þ¤»¤ó\n"
+msgid "key %s: unsupported public key algorithm\n"
+msgstr "鍵%s: サポートしていない公開鍵アルゴリズムです\n"
 
 #, c-format
-msgid "key %s: unsupported public key algorithm\n"
-msgstr "¸°%s: ¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¸ø³«¸°¥¢¥ë¥´¥ê¥º¥à¤Ç¤¹\n"
+msgid "key %s: invalid direct key signature\n"
+msgstr "鍵%s: 無効な直接鍵署名\n"
+
+#, c-format
+msgid "key %s: no subkey for key binding\n"
+msgstr "鍵%s: 鍵に対応する副鍵がありません\n"
 
 #, c-format
 msgid "key %s: invalid subkey binding\n"
-msgstr "¸°%s: Ìµ¸ú¤ÊÉû¸°¤ÎÂбþ¤Ç¤¹\n"
+msgstr "鍵%s: 無効な副鍵の対応です\n"
 
 #, c-format
 msgid "key %s: removed multiple subkey binding\n"
-msgstr "¸°%s: Â¿½ÅÉû¸°¤ÎÂбþ¤òºï½ü¤·¤Þ¤¹\n"
+msgstr "鍵%s: 多重副鍵の対応を削除します\n"
 
 #, c-format
 msgid "key %s: no subkey for key revocation\n"
-msgstr "¸°%s: ¸°¼º¸ú¤Ë¤¿¤¤¤¹¤ëÉû¸°¤¬¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "鍵%s: 鍵失効に対する副鍵がありません\n"
 
 #, c-format
 msgid "key %s: invalid subkey revocation\n"
-msgstr "¸°%s: Ìµ¸ú¤ÊÉû¸°¼º¸ú¤Ç¤¹\n"
+msgstr "鍵%s: 無効な副鍵失効です\n"
 
 #, c-format
 msgid "key %s: removed multiple subkey revocation\n"
-msgstr "¸°%s: Ìµ¸ú¤ÊÉû¸°¤Î¿½Å¼º¸ú¤òºï½ü¤·¤Þ¤¹\n"
+msgstr "鍵%s: 無効な副鍵の多重失効を削除します\n"
 
 #, c-format
 msgid "key %s: skipped user ID \"%s\"\n"
-msgstr "¸°%s: ¤È¤Ð¤·¤¿¥æ¡¼¥¶¡¼ID¡È%s¡É\n"
+msgstr "鍵%s: スキップしたユーザID\"%s\"\n"
 
 #, c-format
 msgid "key %s: skipped subkey\n"
-msgstr "¸°%s: ¤È¤Ð¤·¤¿Éû¸°\n"
+msgstr "鍵%s: スキップした副鍵\n"
 
 #, c-format
 msgid "key %s: non exportable signature (class 0x%02X) - skipped\n"
-msgstr "¸°%s: ½ñ½Ð¤·ÉԲĤʽð̾ (¥¯¥é¥¹%02X) - ¤È¤Ð¤·¤Þ¤¹\n"
+msgstr "鍵%s: エクスポート不可な署名 (クラス0x%02X) - スキップします\n"
 
 #, c-format
 msgid "key %s: revocation certificate at wrong place - skipped\n"
-msgstr "¸°%s: ¼º¸ú¾ÚÌÀ½ñ¤¬¸í¤Ã¤ÆÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹ - ¤È¤Ð¤·¤Þ¤¹\n"
+msgstr "鍵%s: 失効証明書が誤って設定されています - スキップします\n"
 
 #, c-format
 msgid "key %s: invalid revocation certificate: %s - skipped\n"
-msgstr "¸°%s: Ìµ¸ú¤Ê¼º¸ú¾ÚÌÀ½ñ: %s - ¤È¤Ð¤·¤Þ¤¹\n"
+msgstr "鍵%s: 無効な失効証明書: %s - スキップします\n"
 
 #, c-format
 msgid "key %s: subkey signature in wrong place - skipped\n"
-msgstr "¸°%s: Éû¸°½ð̾¤Î¾ì½ê¤¬¡¢¸í¤Ã¤Æ¤¤¤Þ¤¹ - ¤È¤Ð¤·¤Þ¤¹\n"
+msgstr "鍵%s: 副鍵署名の場所が、誤っています - スキップします\n"
 
 #, c-format
 msgid "key %s: unexpected signature class (0x%02X) - skipped\n"
-msgstr "¸°%s: Í½´ü¤»¤Ì½ð̾¥¯¥é¥¹ (0x%02X) - ¤È¤Ð¤·¤Þ¤¹\n"
+msgstr "鍵%s: 予期せぬ署名クラス (0x%02X) - スキップします\n"
 
 #, c-format
 msgid "key %s: duplicated user ID detected - merged\n"
-msgstr "¸°%s: ½ÅÊ£¤·¤¿¥æ¡¼¥¶¡¼ID¤Î¸¡½Ð - Ê»¹ç\n"
+msgstr "鍵%s: 重複したユーザIDの検出 - マージ\n"
 
 #, c-format
 msgid "WARNING: key %s may be revoked: fetching revocation key %s\n"
-msgstr "·Ù¹ð: ¸°%s¤Ï¼º¸ú¤µ¤ì¤¿¤è¤¦¤Ç¤¹: ¼º¸ú¸°%s¤Î°ú¤­½Ð¤·\n"
+msgstr "*警告*: 鍵%sは失効可能です: 失効鍵%sを取ってきます\n"
 
 #, c-format
 msgid "WARNING: key %s may be revoked: revocation key %s not present.\n"
-msgstr "·Ù¹ð: ¸°%s¤Ï¼º¸ú¤µ¤ì¤¿¤è¤¦¤Ç¤¹: ¼º¸ú¸°%s¤ÏÉԺߡ£\n"
+msgstr "*警告*: 鍵%sは失効可能です: 失効鍵%sが存在しません。\n"
 
 #, 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"
-msgstr "¸°%s: Ä¾Àܸ°½ð̾¤òÄɲÃ\n"
-
-#, fuzzy
-msgid "NOTE: a key's S/N does not match the card's one\n"
-msgstr "¸ø³«¸°¤ÈÈëÌ©¸°¤¬¾È¹ç¤·¤Þ¤»¤ó!\n"
-
-#, fuzzy
-msgid "NOTE: primary key is online and stored on card\n"
-msgstr "ÈëÌ©¸°¤Ï¤â¤¦¥«¡¼¥É¤ËÊݴɤ·¤Æ¤¢¤ê¤Þ¤¹\n"
-
-#, fuzzy
-msgid "NOTE: secondary key is online and stored on card\n"
-msgstr "ÈëÌ©¸°¤Ï¤â¤¦¥«¡¼¥É¤ËÊݴɤ·¤Æ¤¢¤ê¤Þ¤¹\n"
+msgstr "鍵%s: 直接鍵署名を追加\n"
 
 #, c-format
 msgid "error creating keyring '%s': %s\n"
-msgstr "¸°ÎØ¡Ö%s¡×¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "é\8dµã\83ªã\83³ã\82°'%s'ã\81®ä½\9cæ\88\90ã\82¨ã\83©ã\83¼: %s\n"
 
 #, c-format
 msgid "keyring '%s' created\n"
-msgstr "¸°ÎØ¡Ö%s¡×¤¬¤Ç¤­¤Þ¤·¤¿\n"
+msgstr "鍵リング'%s'ができました\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "keyblock resource '%s': %s\n"
-msgstr "¡Ö%s¡×¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "keyblock リソース'%s': %s\n"
 
 #, c-format
 msgid "failed to rebuild keyring cache: %s\n"
-msgstr "¸°ÎØ¥­¥ã¥Ã¥·¥å¤ÎºÆ¹½Ãۤ˼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "鍵リング・キャッシュの再構築に失敗しました: %s\n"
 
 msgid "[revocation]"
-msgstr "[¼º¸ú]"
+msgstr "[失効]"
 
 msgid "[self-signature]"
-msgstr "[¼«¸Ê½ð̾]"
+msgstr "[自己署名]"
 
 msgid "1 bad signature\n"
-msgstr "ÉÔÀµ¤Ê½ð̾1¸Ä\n"
+msgstr "不正な署名1個\n"
 
 #, c-format
 msgid "%d bad signatures\n"
-msgstr "ÉÔÀµ¤Ê½ð̾%d¸Ä\n"
+msgstr "不正な署名%d個\n"
 
 msgid "1 signature not checked due to a missing key\n"
-msgstr "¸°¤¬¤Ê¤¤¤¿¤á1¸Ä¤Î½ð̾¤ò¸¡ºº¤·¤Þ¤»¤ó\n"
+msgstr "鍵がないため1個の署名を検査しません\n"
 
 #, c-format
 msgid "%d signatures not checked due to missing keys\n"
-msgstr "¸°¤¬¤Ê¤¤¤¿¤á%d¸Ä¤Î½ð̾¤ò¸¡ºº¤·¤Þ¤»¤ó\n"
+msgstr "鍵がないため%d個の署名を検査しません\n"
 
 msgid "1 signature not checked due to an error\n"
-msgstr "¥¨¥é¡¼¤Î¤¿¤á1¸Ä¤Î½ð̾¤ò¸¡ºº¤·¤Þ¤»¤ó\n"
+msgstr "エラーのため1個の署名を検査しません\n"
 
 #, c-format
 msgid "%d signatures not checked due to errors\n"
-msgstr "¥¨¥é¡¼¤Î¤¿¤á%d¸Ä¤Î½ð̾¤ò¸¡ºº¤·¤Þ¤»¤ó\n"
+msgstr "エラーのため%d個の署名を検査しません\n"
 
 msgid "1 user ID without valid self-signature detected\n"
-msgstr "Í­¸ú¤Ê¼«¸Ê½ð̾¤Î¤Ê¤¤¥æ¡¼¥¶¡¼ID¤ò1¸Ä¸¡½Ð\n"
+msgstr "有効な自己署名のないユーザIDを1個検出\n"
 
 #, c-format
 msgid "%d user IDs without valid self-signatures detected\n"
-msgstr "Í­¸ú¤Ê¼«¸Ê½ð̾¤Î¤Ê¤¤¥æ¡¼¥¶¡¼ID¤ò%d¸Ä¸¡½Ð\n"
+msgstr "有効な自己署名のないユーザIDを%d個検出\n"
 
 msgid ""
 "Please decide how far you trust this user to correctly verify other users' "
@@ -2517,843 +2637,767 @@ msgid ""
 "(by looking at passports, checking fingerprints from different sources, "
 "etc.)\n"
 msgstr ""
-"¾¤Î¥æ¡¼¥¶¡¼¤Î¸°¤òÀµ¤·¤¯¸¡¾Ú¤¹¤ë¤¿¤á¤Ë¡¢¤³¤Î¥æ¡¼¥¶¡¼¤Î¿®ÍÑÅÙ¤ò·è¤á¤Æ¤¯¤À¤µ"
-"¤¤\n"
-"(¥Ñ¥¹¥Ý¡¼¥È¤ò¸«¤»¤Æ¤â¤é¤Ã¤¿¤ê¡¢Â¾¤«¤éÆÀ¤¿»ØÌæ¤ò¸¡ºº¤·¤¿¤ê¡¢¤Ê¤É¤Ê¤É)\n"
+"他のユーザの鍵を正しく検証するために、このユーザの信用度を決めてください\n"
+"(パスポートを見せてもらったり、他から得たフィンガー・プリントを検査したり、な"
+"どなど)\n"
 
 #, c-format
 msgid "  %d = I trust marginally\n"
-msgstr "  %d = ¤¢¤ëÄøÅÙ¿®ÍѤ¹¤ë\n"
+msgstr "  %d = ギリギリ信用する\n"
 
 #, c-format
 msgid "  %d = I trust fully\n"
-msgstr "  %d = ´°Á´¤Ë¿®ÍѤ¹¤ë\n"
+msgstr "  %d = 充分に信用する\n"
 
 msgid ""
 "Please enter the depth of this trust signature.\n"
 "A depth greater than 1 allows the key you are signing to make\n"
 "trust signatures on your behalf.\n"
 msgstr ""
-"¿®Íѽð̾¤Î¿¼¤µ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£\n"
-"¿¼¤µ¤¬1¤è¤êÂ礭¤¤¤È¡¢½ð̾¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¸°¤Ç¿®Íѽð̾¤òºî¤ì¤Þ¤¹¡£\n"
+"信用署名の深さを入力してください。\n"
+"深さが1より大きいと、署名しようとしている鍵で信用署名を作れます。\n"
 
 msgid "Please enter a domain to restrict this signature, or enter for none.\n"
-msgstr "½ð̾¤òÀ©¸Â¤¹¤ë¥É¥á¡¼¥ó¤«¡¢¤½¤ì¤Î¤Ê¤¤¾ì¹ç¤Ïenter¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£\n"
+msgstr "署名を制限するドメインを入力するか、空行を入力してください。\n"
 
 #, c-format
 msgid "User ID \"%s\" is revoked."
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢¼º¸ú¤µ¤ì¤Æ¤¤¤Þ¤¹¡£"
+msgstr "ユーザID\"%s\"は、失効されています。"
 
 msgid "Are you sure you still want to sign it? (y/N) "
-msgstr "¤½¤ì¤Ç¤â¤³¤Î¸°¤Ë½ð̾¤·¤¿¤¤¤Ç¤¹¤«? (y/N) "
+msgstr "それでもこの鍵に署名したいですか? (y/N) "
 
 msgid "  Unable to sign.\n"
-msgstr "  ½ð̾ÉÔǽ¡£\n"
+msgstr "  署名不能。\n"
 
 #, c-format
 msgid "User ID \"%s\" is expired."
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢Ëþλ¤Ç¤¹¡£"
+msgstr "ユーザID \"%s\"は、期限切れです。"
 
 #, c-format
 msgid "User ID \"%s\" is not self-signed."
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢¼«¸Ê½ð̾¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
+msgstr "ユーザID \"%s\"は、自己署名されていません。"
 
-#, fuzzy, c-format
+#, c-format
 msgid "User ID \"%s\" is signable.  "
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢¼«¸Ê½ð̾¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
+msgstr "ユーザID \"%s\"は署名可能です。 "
 
-#, fuzzy
 msgid "Sign it? (y/N) "
-msgstr "ËÜÅö¤Ë½ð̾¤·¤Þ¤¹¤«? (y/N) "
+msgstr "署名しますか? (y/N) "
 
 #, c-format
 msgid ""
 "The self-signature on \"%s\"\n"
 "is a PGP 2.x-style signature.\n"
 msgstr ""
-"¡È%s¡É¤Ë¤¿¤¤¤¹¤ë¼«¸Ê½ð̾¤Ï¡¢\n"
-"PGP 2.x·Á¼°¤Î½ð̾¤Ç¤¹¡£\n"
+"\"%s\"にたいする自己署名は、\n"
+"PGP 2.x形式の署名です。\n"
 
 msgid "Do you want to promote it to an OpenPGP self-signature? (y/N) "
-msgstr "OpenPGP¤Î¼«¸Ê½ð̾¤Ë³Ê¾å¤²¤·¤¿¤¤¤Ç¤¹¤«? (y/N) "
+msgstr "OpenPGPの自己署名に格上げしたいですか? (y/N) "
 
 #, c-format
 msgid ""
 "Your current signature on \"%s\"\n"
 "has expired.\n"
 msgstr ""
-"¡È%s¡É¤Ë¤¿¤¤¤¹¤ë¤¢¤Ê¤¿¤Îº£¤Î½ð̾\n"
-"¤ÏËþλ¤Ç¤¹¡£\n"
+"\"%s\"に対するあなたの今の署名\n"
+"は期限切れです。\n"
 
 msgid "Do you want to issue a new signature to replace the expired one? (y/N) "
-msgstr "¿·¤·¤¤½ð̾¤òȯ¹Ô¤·¡¢´ü¸ÂÀÚ¤ì½ð̾¤È¸ò´¹¤·¤¿¤¤¤Ç¤¹¤«? (y/N) "
+msgstr "新しい署名を発行し、期限切れ署名と置き換えたいですか? (y/N) "
 
 #, c-format
 msgid ""
 "Your current signature on \"%s\"\n"
 "is a local signature.\n"
 msgstr ""
-"¡È%s¡É¤Ë¤¿¤¤¤¹¤ë¤¢¤Ê¤¿¤Îº£¤Î½ð̾\n"
-"¤ÏÆâÉô½ð̾¤Ç¤¹¡£\n"
+"\"%s\"にたいするあなたの今の署名\n"
+"は内部署名です。\n"
 
 msgid "Do you want to promote it to a full exportable signature? (y/N) "
-msgstr "½ñ½Ð¤·²Äǽ¤Ê½ð̾¤Ë³Ê¾å¤²¤·¤¿¤¤¤Ç¤¹¤«? (y/N) "
+msgstr "エクスポート可能な署名に格上げしたいですか? (y/N) "
 
 #, c-format
 msgid "\"%s\" was already locally signed by key %s\n"
-msgstr "¡È%s¡É¤Ï¸°%s¤Ç¤â¤¦ÆâÉô½ð̾¤·¤Æ¤¢¤ê¤Þ¤¹\n"
+msgstr "\"%s\"は鍵%sでもう内部署名してあります\n"
 
 #, c-format
 msgid "\"%s\" was already signed by key %s\n"
-msgstr "¡È%s¡É¤Ï¸°%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"
-msgstr "¸°%s¤Ç½ð̾¤¹¤Ù¤­¤â¤Î¤Ï¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "鍵%sで署名すべきものはありません\n"
 
 msgid "This key has expired!"
-msgstr "¤³¤Î¸°¤ÏËþλ¤Ç¤¹!"
+msgstr "この鍵は期限切れです!"
 
 #, c-format
 msgid "This key is due to expire on %s.\n"
-msgstr "¤³¤Î¸°¤Ï%s¤ÇËþλ¤·¤Þ¤¹¡£\n"
+msgstr "この鍵は%sで期限が切れます。\n"
 
 msgid "Do you want your signature to expire at the same time? (Y/n) "
-msgstr "Ʊ»þ¤Ë½ð̾¤âËþλ¤Ë¤·¤¿¤¤¤Ç¤¹¤«? (Y/n) "
+msgstr "同時に署名も期限切れとしたいですか? (Y/n) "
 
 msgid ""
 "You may not make an OpenPGP signature on a PGP 2.x key while in --pgp2 "
 "mode.\n"
-msgstr "--pgp2¥â¡¼¥É¤Ç¤ÏPGP 2.x¸°¤ÇOpenPGP½ð̾¤¬¤Ç¤­¤Þ¤»¤ó¡£\n"
+msgstr "--pgp2モードではPGP 2.x鍵でOpenPGP署名ができません。\n"
 
 msgid "This would make the key unusable in PGP 2.x.\n"
-msgstr "¤³¤Î¸°¤ÏPGP 2.x¤Ç»ÈÍѤǤ­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£\n"
+msgstr "この鍵はPGP 2.xで使用できなくなります。\n"
 
 msgid ""
 "How carefully have you verified the key you are about to sign actually "
 "belongs\n"
 "to the person named above?  If you don't know what to answer, enter \"0\".\n"
 msgstr ""
-"½ð̾¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¸°¤¬¼ÂºÝ¤Ë¾åµ­¤Î̾Á°¤Î¿Í¤Î¤â¤Î¤«¤É¤¦¤«¡¢¤É¤ÎÄøÅÙ\n"
-"Ãí°Õ¤·¤Æ¸¡¾Ú¤·¤Þ¤·¤¿¤«? Åú¤¬¤ï¤«¤é¤Ê¤±¤ì¤Ð¡¢¡È0¡É¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£\n"
+"署名しようとしている鍵が実際に上記の名前の人のものかどうか、どの程度\n"
+"注意して検証しましたか? 答がわからなければ、\"0\"を入力してください。\n"
 
 #, c-format
 msgid "   (0) I will not answer.%s\n"
-msgstr "   (0) Åú¤¨¤Þ¤»¤ó¡£%s\n"
+msgstr "   (0) 答えません。%s\n"
 
 #, c-format
 msgid "   (1) I have not checked at all.%s\n"
-msgstr "   (1) Á´Á³¡¢¸¡ºº¤·¤Æ¤¤¤Þ¤»¤ó¡£%s\n"
+msgstr "   (1) 全然、検査していません。%s\n"
 
 #, c-format
 msgid "   (2) I have done casual checking.%s\n"
-msgstr "   (2) °ì±þ¡¢¸¡ºº¤·¤Þ¤·¤¿¡£%s\n"
+msgstr "   (2) 一応、検査しました。%s\n"
 
 #, c-format
 msgid "   (3) I have done very careful checking.%s\n"
-msgstr "   (3) ¤«¤Ê¤êÃí°Õ¤·¤Æ¸¡ºº¤·¤Þ¤·¤¿¡£%s\n"
+msgstr "   (3) かなり注意して検査しました。%s\n"
 
-#, fuzzy
 msgid "Your selection? (enter '?' for more information): "
-msgstr "ÁªÂò¤Ï? (¾ÜºÙ¤Ï '?' ¤Ç): "
+msgstr "選択は? (詳細は '?'): "
 
 #, c-format
 msgid ""
 "Are you sure that you want to sign this key with your\n"
 "key \"%s\" (%s)\n"
 msgstr ""
-"ËÜÅö¤Ë¤³¤Î¸°¤Ë¤¢¤Ê¤¿¤Î¸°¡È%s¡É¤Ç½ð̾¤·¤Æ¤è¤¤¤Ç¤¹¤«\n"
+"本当にこの鍵にあなたの鍵\"%s\"で署名してよいですか\n"
 "(%s)\n"
 
 msgid "This will be a self-signature.\n"
-msgstr "¼«¸Ê½ð̾¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£\n"
+msgstr "自己署名になるでしょう。\n"
 
 msgid "WARNING: the signature will not be marked as non-exportable.\n"
-msgstr "·Ù¹ð: ½ð̾¤Ï¡¢½ñ½Ð¤·ÉԲĤËÀßÄꤵ¤ì¤Þ¤»¤ó¡£\n"
+msgstr "*警告*: 署名は、エクスポート不可に設定されません。\n"
 
 msgid "WARNING: the signature will not be marked as non-revocable.\n"
-msgstr "·Ù¹ð: ½ð̾¤Ï¡¢¼º¸úÉԲĤËÀßÄꤵ¤ì¤Þ¤»¤ó¡£\n"
+msgstr "*警告*: 署名は、失効不可に設定されません。\n"
 
 msgid "The signature will be marked as non-exportable.\n"
-msgstr "½ð̾¤Ï¡¢½ñ½Ð¤·ÉԲĤËÀßÄꤵ¤ì¤Þ¤¹¡£\n"
+msgstr "署名は、エクスポート不可に設定されます。\n"
 
 msgid "The signature will be marked as non-revocable.\n"
-msgstr "½ð̾¤Ï¡¢¼º¸úÉԲĤËÀßÄꤵ¤ì¤Þ¤¹¡£\n"
+msgstr "署名は、失効不可に設定されます。\n"
 
 msgid "I have not checked this key at all.\n"
-msgstr "¤³¤Î¸°¤ÏÁ´Á³¡¢¸¡ºº¤·¤Æ¤¤¤Þ¤»¤ó¡£\n"
+msgstr "この鍵は全然、検査していません。\n"
 
 msgid "I have checked this key casually.\n"
-msgstr "¤³¤Î¸°¤Ï°ì±þ¡¢¸¡ºº¤·¤Þ¤·¤¿¡£\n"
+msgstr "この鍵は一応、検査しました。\n"
 
 msgid "I have checked this key very carefully.\n"
-msgstr "¤³¤Î¸°¤Ï¡¢¤«¤Ê¤êÃí°Õ¤·¤Æ¸¡ºº¤·¤Þ¤·¤¿¡£\n"
+msgstr "この鍵は、かなり注意して検査しました。\n"
 
 msgid "Really sign? (y/N) "
-msgstr "ËÜÅö¤Ë½ð̾¤·¤Þ¤¹¤«? (y/N) "
+msgstr "本当に署名しますか? (y/N) "
 
 #, c-format
 msgid "signing failed: %s\n"
-msgstr "½ð̾¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "署名に失敗しました: %s\n"
 
 msgid "Key has only stub or on-card key items - no passphrase to change.\n"
 msgstr ""
-
-msgid "This key is not protected.\n"
-msgstr "¤³¤Î¸°¤ÏÊݸ¤ì¤Æ¤¤¤Þ¤»¤ó¡£\n"
-
-msgid "Secret parts of primary key are not available.\n"
-msgstr "¼ç¸°¤ÎÈëÌ©Éôʬ¤¬ÆÀ¤é¤ì¤Þ¤»¤ó¡£\n"
-
-#, fuzzy
-msgid "Secret parts of primary key are stored on-card.\n"
-msgstr "¼ç¸°¤ÎÈëÌ©Éôʬ¤¬ÆÀ¤é¤ì¤Þ¤»¤ó¡£\n"
-
-msgid "Key is protected.\n"
-msgstr "¸°¤ÏÊݸ¤ì¤Æ¤¤¤Þ¤¹¡£\n"
+"鍵にはスタブあるいはカード上の項目しかありません - パスフレーズは変更されませ"
+"ん。\n"
 
 #, c-format
-msgid "Can't edit this key: %s\n"
-msgstr "¤³¤Î¸°¤ÏÊÔ½¸¤Ç¤­¤Þ¤»¤ó: %s\n"
-
-msgid ""
-"Enter the new passphrase for this secret key.\n"
-"\n"
-msgstr ""
-"¤³¤ÎÈëÌ©¸°¤Î¿·¤·¤¤¥Ñ¥¹¥Õ¥ì¡¼¥º¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£\n"
-"\n"
-
-msgid "passphrase not correctly repeated; try again"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤ò¤Á¤ã¤ó¤È·«¤êÊÖ¤·¤Æ¤¤¤Þ¤»¤ó¡£ºÆÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
-
-msgid ""
-"You don't want a passphrase - this is probably a *bad* idea!\n"
-"\n"
-msgstr ""
-"¥Ñ¥¹¥Õ¥ì¡¼¥º¤¬ÉÔɬÍפʤ褦¤Ç¤¹¤¬¡¢\n"
-"¤ª¤½¤é¤¯¤½¤ì¤Ï¡ö¤í¤¯¤Ç¤â¤Ê¤¤¡ö¹Í¤¨¤Ç¤¹!\n"
-"\n"
-
-msgid "Do you really want to do this? (y/N) "
-msgstr "ËÜÅö¤Ë¼Â¹Ô¤·¤Þ¤¹¤«? (y/N) "
+msgid "key %s: error changing passphrase: %s\n"
+msgstr "鍵 %s: パスフレーズの変更エラー: %s\n"
 
 msgid "moving a key signature to the correct place\n"
-msgstr "¸°¤Î½ð̾¤òÀµ¤·¤¤¾ì½ê¤Ë°ÜÆ°¤·¤Þ¤¹\n"
+msgstr "鍵の署名を正しい場所に移動します\n"
 
 msgid "save and quit"
-msgstr "Êݸ¤·¤Æ½ªÎ»"
+msgstr "保存して終了"
 
-#, fuzzy
 msgid "show key fingerprint"
-msgstr "»ØÌæ¤òɽ¼¨"
+msgstr "鍵のフィンガー・プリントを表示"
 
 msgid "list key and user IDs"
-msgstr "¸°¤È¥æ¡¼¥¶¡¼ID¤Î°ìÍ÷"
+msgstr "鍵とユーザIDの一覧"
 
 msgid "select user ID N"
-msgstr "¥æ¡¼¥¶¡¼ID N¤ÎÁªÂò"
+msgstr "ユーザID Nの選択"
 
-#, fuzzy
 msgid "select subkey N"
-msgstr "¥æ¡¼¥¶¡¼ID N¤ÎÁªÂò"
+msgstr "subkey Nの選択"
 
-#, fuzzy
 msgid "check signatures"
-msgstr "½ð̾¤Î¼º¸ú"
+msgstr "署名の確認"
 
 msgid "sign selected user IDs [* see below for related commands]"
-msgstr ""
+msgstr "選択したユーザIDに署名する [* 以下の関連コマンドを参照 ]"
 
-#, fuzzy
 msgid "sign selected user IDs locally"
-msgstr "¸°¤ØÆâÉôŪ¤Ë½ð̾"
+msgstr "選択したユーザIDにローカルに署名"
 
-#, fuzzy
 msgid "sign selected user IDs with a trust signature"
-msgstr "¥³¥Ä: ¤Þ¤º½ð̾¤¹¤ë¥æ¡¼¥¶¡¼ID¤òÁªÂò¤·¤Þ¤¹\n"
+msgstr "選択したユーザIDに信用署名を署名する"
 
 msgid "sign selected user IDs with a non-revocable signature"
-msgstr ""
+msgstr "選択したユーザIDに失効不可の署名をする"
 
 msgid "add a user ID"
-msgstr "¥æ¡¼¥¶¡¼ID¤ÎÄɲÃ"
+msgstr "ユーザIDの追加"
 
 msgid "add a photo ID"
-msgstr "¥Õ¥©¥ÈID¤ÎÄɲÃ"
+msgstr "フォトIDの追加"
 
-#, fuzzy
 msgid "delete selected user IDs"
-msgstr "¥æ¡¼¥¶¡¼ID¤Îºï½ü"
+msgstr "選択したユーザIDの削除"
 
-#, fuzzy
 msgid "add a subkey"
-msgstr "addkey"
+msgstr "副鍵を追加"
 
 msgid "add a key to a smartcard"
-msgstr "¥¹¥Þ¡¼¥È¥«¡¼¥É¤Ø¸°¤ÎÄɲÃ"
+msgstr "ICカードへ鍵の追加"
 
 msgid "move a key to a smartcard"
-msgstr "¥¹¥Þ¡¼¥È¥«¡¼¥É¤Î¸°¤Ø¤Î°ÜÆ°"
+msgstr "鍵をICカードへ移動"
 
-#, fuzzy
 msgid "move a backup key to a smartcard"
-msgstr "¥¹¥Þ¡¼¥È¥«¡¼¥É¤Î¸°¤Ø¤Î°ÜÆ°"
+msgstr "バックアップ鍵をICカードへ移動"
 
-#, fuzzy
 msgid "delete selected subkeys"
-msgstr "Éû¸°¤Îºï½ü"
+msgstr "選択した副鍵の削除"
 
 msgid "add a revocation key"
-msgstr "¼º¸ú¸°¤ÎÄɲÃ"
+msgstr "失効鍵の追加"
 
-#, fuzzy
 msgid "delete signatures from the selected user IDs"
-msgstr "ÁªÂò¤·¤¿¥æ¡¼¥¶¡¼ID¤ÎÁª¹¥¤òËÜÅö¤Ë¹¹¿·¤·¤Þ¤¹¤«? (y/N) "
+msgstr "選択したユーザIDから署名を削除する"
 
-#, fuzzy
 msgid "change the expiration date for the key or selected subkeys"
-msgstr "v3¸°¤ÎÍ­¸ú´ü¸Â¤ÏÊѹ¹¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "鍵または選択した副鍵の有効期限を変更する"
 
-#, fuzzy
 msgid "flag the selected user ID as primary"
-msgstr "¥æ¡¼¥¶¡¼ID¤ò¼ç¤Ë¤¹¤ë"
+msgstr "選択したユーザIDを主にする"
 
-#, fuzzy
 msgid "toggle between the secret and public key listings"
-msgstr "ÈëÌ©¸°¤È¸ø³«¸°¤Î°ìÍ÷¤Îȿž"
+msgstr "秘密鍵と公開鍵の一覧の反転"
 
 msgid "list preferences (expert)"
-msgstr "Áª¹¥¤Î°ìÍ÷ (¥¨¥­¥¹¥Ñ¡¼¥È)"
+msgstr "優先指定の一覧 (エキスパート)"
 
 msgid "list preferences (verbose)"
-msgstr "Áª¹¥¤Î°ìÍ÷ (¾éĹ)"
+msgstr "優先指定の一覧 (冗長)"
 
-#, fuzzy
 msgid "set preference list for the selected user IDs"
-msgstr "ÁªÂò¤·¤¿¥æ¡¼¥¶¡¼ID¤ÎÁª¹¥¤òËÜÅö¤Ë¹¹¿·¤·¤Þ¤¹¤«? (y/N) "
+msgstr "選択したユーザIDに優先指定リストを設定"
 
-#, fuzzy
 msgid "set the preferred keyserver URL for the selected user IDs"
-msgstr "Áª¹¥¸°¥µ¡¼¥Ð¡¼¤ÎURI¤òÀßÄê"
+msgstr "選択したユーザIDに優先鍵サーバのURIを設定"
 
-#, fuzzy
 msgid "set a notation for the selected user IDs"
-msgstr "ÁªÂò¤·¤¿¥æ¡¼¥¶¡¼ID¤ÎÁª¹¥¤òËÜÅö¤Ë¹¹¿·¤·¤Þ¤¹¤«? (y/N) "
+msgstr "選択したユーザIDに注釈を設定する"
 
 msgid "change the passphrase"
-msgstr "¥Ñ¥¹¥Õ¥ì¡¼¥º¤ÎÊѹ¹"
+msgstr "パスフレーズの変更"
 
 msgid "change the ownertrust"
-msgstr "½êÍ­¼Ô¿®ÍѤÎÊѹ¹"
+msgstr "所有者信用の変更"
 
-#, fuzzy
 msgid "revoke signatures on the selected user IDs"
-msgstr "ÁªÂò¤·¤¿Á´¥æ¡¼¥¶¡¼ID¤òËÜÅö¤Ë¼º¸ú¤·¤Þ¤¹¤«? (y/N) "
+msgstr "選択したユーザIDの署名を失効"
 
-#, fuzzy
 msgid "revoke selected user IDs"
-msgstr "¥æ¡¼¥¶¡¼ID¤Î¼º¸ú"
+msgstr "ユーザIDの失効"
 
-#, fuzzy
 msgid "revoke key or selected subkeys"
-msgstr "Éû¸°¤Î¼º¸ú"
+msgstr "鍵の失効または選択した副鍵の失効"
 
-#, fuzzy
 msgid "enable key"
-msgstr "¸°¤Î»ÈÍѤòµö²Ä¤¹¤ë"
+msgstr "鍵を有効にする"
 
-#, fuzzy
 msgid "disable key"
-msgstr "¸°¤Î»ÈÍѤò¶Ø»ß¤¹¤ë"
+msgstr "鍵を無効にする"
 
-#, fuzzy
 msgid "show selected photo IDs"
-msgstr "¥Õ¥©¥ÈID¤òɽ¼¨"
+msgstr "選択したフォトIDを表示"
 
 msgid "compact unusable user IDs and remove unusable signatures from key"
-msgstr ""
+msgstr "使えないユーザIDをコンパクトにし、使えない署名を鍵から除去"
 
 msgid "compact unusable user IDs and remove all signatures from key"
-msgstr ""
-
-#, c-format
-msgid "error reading secret keyblock \"%s\": %s\n"
-msgstr "ÈëÌ©¸°¥Ö¥í¥Ã¥¯¡È%s¡É¤ÎÆɽФ·¥¨¥é¡¼: %s\n"
+msgstr "使えないユーザIDをコンパクトにし、すべての署名を鍵から除去"
 
 msgid "Secret key is available.\n"
-msgstr "ÈëÌ©¸°¤¬»ÈÍѤǤ­¤Þ¤¹¡£\n"
+msgstr "秘密鍵が使用できます。\n"
 
 msgid "Need the secret key to do this.\n"
-msgstr "¤³¤Î¼Â¹Ô¤Ë¤ÏÈëÌ©¸°¤¬¤¤¤ê¤Þ¤¹¡£\n"
+msgstr "この実行には秘密鍵がいります。\n"
 
 msgid "Please use the command \"toggle\" first.\n"
-msgstr "¤Þ¤º¡Ètoggle¡É¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£\n"
+msgstr "まず\"toggle\"コマンドを使ってください。\n"
 
 msgid ""
-"* The `sign' command may be prefixed with an `l' for local signatures "
+"* The 'sign' command may be prefixed with an 'l' for local signatures "
 "(lsign),\n"
-"  a `t' for trust signatures (tsign), an `nr' for non-revocable signatures\n"
+"  a 't' for trust signatures (tsign), an 'nr' for non-revocable signatures\n"
 "  (nrsign), or any combination thereof (ltsign, tnrsign, etc.).\n"
 msgstr ""
+"* 'sign' コマンドは 'l' で始まると、ローカルの署名で (lsign)、\n"
+"  't' で始まると信用署名 (tsign)、'nr' で始まると失効不可署名\n"
+"  (nrsign)、もしくはこれらの組み合わせ (ltsign, tnrsign, など)となります。\n"
 
 msgid "Key is revoked."
-msgstr "¸°¤Ï¡¢¼º¸ú¤µ¤ì¤Æ¤¤¤Þ¤¹¡£"
+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"
+msgstr "ヒント: まず署名するユーザIDを選択します\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unknown signature type '%s'\n"
-msgstr "̤ÃΤνð̾¥¯¥é¥¹¤Ç¤¹"
+msgstr "不明の署名タイプ'%s'\n"
 
 #, c-format
 msgid "This command is not allowed while in %s mode.\n"
-msgstr "%s¥â¡¼¥É¤Ç¤³¤Î¥³¥Þ¥ó¥É¤Ï¶Ø»ß¤Ç¤¹¡£\n"
+msgstr "%sモードでこのコマンドは禁止です。\n"
 
 msgid "You must select at least one user ID.\n"
-msgstr "¥æ¡¼¥¶¡¼ID¤ò¾¯¤Ê¤¯¤È¤â¤Ò¤È¤ÄÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
+msgstr "ユーザIDを少なくともひとつ選択してください。\n"
 
 msgid "You can't delete the last user ID!\n"
-msgstr "ºÇ¸å¤Î¥æ¡¼¥¶¡¼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 "¸°¤ò¤­¤Ã¤«¤ê1ËÜÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
+msgstr "鍵をきっかり1つ選択してください。\n"
 
 msgid "Command expects a filename argument\n"
-msgstr ""
+msgstr "コマンドはファイル名の引数を期待します\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Can't open '%s': %s\n"
-msgstr "¡Ö%s¡×¤¬³«¤±¤Þ¤»¤ó: %s\n"
+msgstr "'%s'が開けません: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error reading backup key from '%s': %s\n"
-msgstr "¸°ÎØ¡Ö%s¡×¤ÎºîÀ®¥¨¥é¡¼: %s\n"
+msgstr "ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97é\8dµã\82\92'%s'ã\81\8bã\82\89読ã\81¿è¾¼ã\81¿ã\81\99ã\82\8bé\9a\9bã\81®ã\82¨ã\83©ã\83¼: %s\n"
 
 msgid "You must select at least one key.\n"
-msgstr "¸°¤ò¾¯¤Ê¤¯¤È¤â1ËÜÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
+msgstr "鍵を少なくとも1本選択してください。\n"
 
 msgid "Do you really want to delete the selected keys? (y/N) "
-msgstr "ÁªÂò¤·¤¿¸°¤òËÜÅö¤Ëºï½ü¤·¤Þ¤¹¤«? (y/N) "
+msgstr "選択した鍵を本当に削除しますか? (y/N) "
 
 msgid "Do you really want to delete this key? (y/N) "
-msgstr "¤³¤Î¸°¤òËÜÅö¤Ëºï½ü¤·¤Þ¤¹¤«? (y/N) "
+msgstr "この鍵を本当に削除しますか? (y/N) "
 
 msgid "Really revoke all selected user IDs? (y/N) "
-msgstr "ÁªÂò¤·¤¿Á´¥æ¡¼¥¶¡¼ID¤òËÜÅö¤Ë¼º¸ú¤·¤Þ¤¹¤«? (y/N) "
+msgstr "選択した全ユーザIDを本当に失効しますか? (y/N) "
 
 msgid "Really revoke this user ID? (y/N) "
-msgstr "¤³¤Î¥æ¡¼¥¶¡¼ID¤òËÜÅö¤Ë¼º¸ú¤·¤Þ¤¹¤«? (y/N) "
+msgstr "このユーザIDを本当に失効しますか? (y/N) "
 
-#, fuzzy
 msgid "Do you really want to revoke the entire key? (y/N) "
-msgstr "¤³¤Î¸°¤òËÜÅö¤Ë¼º¸ú¤·¤Þ¤¹¤«? (y/N) "
+msgstr "鍵全体を本当に失効しますか? (y/N) "
 
-#, fuzzy
 msgid "Do you really want to revoke the selected subkeys? (y/N) "
-msgstr "ÁªÂò¤·¤¿¸°¤òËÜÅö¤Ë¼º¸ú¤·¤Þ¤¹¤«? (y/N) "
+msgstr "選択した副鍵を本当に失効しますか? (y/N) "
 
-#, fuzzy
 msgid "Do you really want to revoke this subkey? (y/N) "
-msgstr "¤³¤Î¸°¤òËÜÅö¤Ë¼º¸ú¤·¤Þ¤¹¤«? (y/N) "
+msgstr "この副鍵を本当に失効しますか? (y/N) "
 
 msgid "Owner trust may not be set while using a user provided trust database\n"
 msgstr ""
-"ÍøÍѼԻØÄê¿®Íѥǡ¼¥¿¥Ù¡¼¥¹¤ÎÍøÍÑÃæ¡¢½êÍ­¼Ô¿®ÍѤÏÀßÄꤵ¤ì¤Ê¤¤¤³¤È¤â¤¢¤ê¤Þ"
-"¤¹¡£\n"
+"ユーザが指定した信用データベースを利用中、所有者信用は設定できません。\n"
 
 msgid "Set preference list to:\n"
-msgstr "Áª¹¥¤Î°ìÍ÷¤òÀßÄê:\n"
+msgstr "優先指定の一覧を設定:\n"
 
 msgid "Really update the preferences for the selected user IDs? (y/N) "
-msgstr "ÁªÂò¤·¤¿¥æ¡¼¥¶¡¼ID¤ÎÁª¹¥¤òËÜÅö¤Ë¹¹¿·¤·¤Þ¤¹¤«? (y/N) "
+msgstr "選択したユーザIDの優先指定を本当に更新しますか? (y/N) "
 
 msgid "Really update the preferences? (y/N) "
-msgstr "Áª¹¥¤òËÜÅö¤Ë¹¹¿·¤·¤Þ¤¹¤«? (y/N) "
+msgstr "優先指定を本当に更新しますか? (y/N) "
 
 msgid "Save changes? (y/N) "
-msgstr "Êѹ¹¤òÊݸ¤·¤Þ¤¹¤«? (y/N) "
+msgstr "変更を保存しますか? (y/N) "
 
 msgid "Quit without saving? (y/N) "
-msgstr "Êݸ¤»¤º¤Ë½ªÎ»¤·¤Þ¤¹¤«? (y/N) "
+msgstr "保存せずに終了しますか? (y/N) "
 
 #, c-format
 msgid "update failed: %s\n"
-msgstr "¹¹¿·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
-
-#, c-format
-msgid "update secret failed: %s\n"
-msgstr "ÈëÌ©¤Î¹¹¿·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n"
+msgstr "更新に失敗しました: %s\n"
 
 msgid "Key not changed so no update needed.\n"
-msgstr "¸°¤Ï̵Êѹ¹¤Ê¤Î¤Ç¹¹¿·¤ÏÉÔÍפǤ¹¡£\n"
+msgstr "鍵は無変更なので更新は不要です。\n"
 
 msgid "Digest: "
-msgstr "Í×Ìó: "
+msgstr "ダイジェスト: "
 
 msgid "Features: "
-msgstr "µ¡Ç½: "
+msgstr "æ©\9fè\83½: "
 
 msgid "Keyserver no-modify"
-msgstr "̵½¤Àµ¸°¥µ¡¼¥Ð¡¼"
+msgstr "鍵サーバ 修正しない"
 
 msgid "Preferred keyserver: "
-msgstr "Áª¹¥¸°¥µ¡¼¥Ð¡¼: "
+msgstr "優先鍵サーバ: "
 
-#, fuzzy
 msgid "Notations: "
-msgstr ""
-"@\n"
-"¥ª¥×¥·¥ç¥ó:\n"
-" "
+msgstr "注釈: "
 
 msgid "There are no preferences on a PGP 2.x-style user ID.\n"
-msgstr "PGP 2.x·Á¼°¥æ¡¼¥¶¡¼ID¤ÎÁª¹¥¤¬¡¢¤¢¤ê¤Þ¤»¤ó¡£\n"
+msgstr "PGP 2.x形式ユーザIDの優先指定が、ありません。\n"
 
-#, fuzzy, c-format
-msgid "This key was revoked on %s by %s key %s\n"
-msgstr "¤³¤Î¸°¤Ï¡¢%s¸°%s¤Ë¤è¤Ã¤Æ¼º¸ú¤µ¤ì¤¿¤è¤¦¤Ç¤¹"
+#, c-format
+msgid "The following key was revoked on %s by %s key %s\n"
+msgstr "%s で %s 鍵によってこの鍵は、失効されました: %s\n"
 
 #, c-format
 msgid "This key may be revoked by %s key %s"
-msgstr "¤³¤Î¸°¤Ï¡¢%s¸°%s¤Ë¤è¤Ã¤Æ¼º¸ú¤µ¤ì¤¿¤è¤¦¤Ç¤¹"
+msgstr "この鍵は、%s鍵%sによって失効可能です"
 
 msgid "(sensitive)"
-msgstr "(¥Ç¥ê¥±¡¼¥È)"
+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"
-msgstr "ÍøÍÑË¡: %s"
+msgstr "利用法: %s"
+
+msgid "card-no: "
+msgstr "カード番号: "
 
 #, c-format
 msgid "trust: %s"
-msgstr "¿®ÍÑ: %s"
+msgstr "信用: %s"
 
 #, c-format
 msgid "validity: %s"
-msgstr "Í­¸úÀ­: %s"
+msgstr "有効性: %s"
 
 msgid "This key has been disabled"
-msgstr "¤³¤Î¸°¤Ï»ÈÍѶػߤËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹"
-
-msgid "card-no: "
-msgstr "¥«¡¼¥ÉÈÖ¹æ: "
+msgstr "この鍵は使用禁止に設定されています"
 
 msgid ""
 "Please note that the shown key validity is not necessarily correct\n"
 "unless you restart the program.\n"
 msgstr ""
-"¥×¥í¥°¥é¥à¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç¡¢É½¼¨¤µ¤ì¤¿¸°¤ÎÍ­¸úÀ­¤ÏÀµ¤·¤¯¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¡¢\n"
-"¤È¤¤¤¦¤³¤È¤òǰƬ¤Ë¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£\n"
+"プログラムを再起動するまで、表示された鍵の有効性は正しくないかもしれない、\n"
+"ということを念頭においてください。\n"
 
 msgid "revoked"
-msgstr "¼º¸ú"
+msgstr "失効"
 
 msgid "expired"
-msgstr "Ëþλ"
+msgstr "期限切れ"
 
 msgid ""
 "WARNING: no user ID has been marked as primary.  This command may\n"
 "              cause a different user ID to become the assumed primary.\n"
 msgstr ""
-"·Ù¹ð: ¼ç¤¿¤ë¥æ¡¼¥¶¡¼ID¤¬¤¢¤ê¤Þ¤»¤ó¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢Ê̤Ê\n"
-"              ¥æ¡¼¥¶¡¼ID¤¬¼ç¤Ë¤Ê¤ë¤È²¾Äꤹ¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£\n"
+"*警告*: 主たるユーザIDがありません。このコマンドは、別な\n"
+"              ユーザIDが主になると仮定する場合があります。\n"
 
 msgid ""
 "WARNING: This is a PGP2-style key.  Adding a photo ID may cause some "
 "versions\n"
 "         of PGP to reject this key.\n"
 msgstr ""
-"·Ù¹ð: ¤³¤ì¤ÏPGP2·Á¼°¤Î¸°¤Ç¤¹¡£¥Õ¥©¥ÈID¤ÎÄɲäǡ¢°ìÉô¤ÎÈǤÎPGP¤Ï¡¢\n"
-"      ¤³¤Î¸°¤òµñÈݤ¹¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£\n"
+"*警告*: これはPGP2形式の鍵です。フォトIDの追加で、一部のバージョンのPGPで"
+"は、\n"
+"      この鍵を拒否するかもしれません。\n"
 
 msgid "Are you sure you still want to add it? (y/N) "
-msgstr "¤½¤ì¤Ç¤âÄɲä·¤¿¤¤¤Ç¤¹¤«? (y/N) "
+msgstr "それでも追加したいですか? (y/N) "
 
 msgid "You may not add a photo ID to a PGP2-style key.\n"
-msgstr "PGP2·Á¼°¤Î¸°¤Ë¤Ï¥Õ¥©¥ÈID¤òÄɲäǤ­¤Þ¤»¤ó¡£\n"
+msgstr "PGP2形式の鍵にはフォトIDを追加できません。\n"
 
 msgid "Delete this good signature? (y/N/q)"
-msgstr "¤³¤ÎÀµ¤·¤¤½ð̾¤òºï½ü¤·¤Þ¤¹¤«? (y/N/q)"
+msgstr "この正しい署名を削除しますか? (y/N/q)"
 
 msgid "Delete this invalid signature? (y/N/q)"
-msgstr "¤³¤Î̵¸ú¤Ê½ð̾¤òºï½ü¤·¤Þ¤¹¤«? (y/N/q)"
+msgstr "この無効な署名を削除しますか? (y/N/q)"
 
 msgid "Delete this unknown signature? (y/N/q)"
-msgstr "¤³¤Î̤ÃΤνð̾¤òºï½ü¤·¤Þ¤¹¤«? (y/N/q)"
+msgstr "この不明の署名を削除しますか? (y/N/q)"
 
 msgid "Really delete this self-signature? (y/N)"
-msgstr "¤³¤Î¼«¸Ê½ð̾¤òËÜÅö¤Ëºï½ü¤·¤Þ¤¹¤«? (y/N)"
+msgstr "この自己署名を本当に削除しますか? (y/N)"
 
 #, c-format
 msgid "Deleted %d signature.\n"
-msgstr "%d¸Ä¤Î½ð̾¤òºï½ü¤·¤Þ¤·¤¿¡£\n"
+msgstr "%d個の署名を削除しました。\n"
 
 #, c-format
 msgid "Deleted %d signatures.\n"
-msgstr "%d¸Ä¤Î½ð̾¤òºï½ü¤·¤Þ¤·¤¿¡£\n"
+msgstr "%d個の署名を削除しました。\n"
 
 msgid "Nothing deleted.\n"
-msgstr "²¿¤âºï½ü¤·¤Æ¤¤¤Þ¤»¤ó¡£\n"
+msgstr "何も削除していません。\n"
 
-#, fuzzy
 msgid "invalid"
-msgstr "̵¸ú¤ÊÊñÁõ¤Ç¤¹"
+msgstr "ç\84¡å\8a¹"
 
-#, fuzzy, c-format
+#, c-format
 msgid "User ID \"%s\" compacted: %s\n"
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢¼º¸ú¤µ¤ì¤Æ¤¤¤Þ¤¹¡£"
+msgstr "ユーザID \"%s\" は、コンパクトになりました: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "User ID \"%s\": %d signature removed\n"
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢¼º¸ú¤µ¤ì¤Æ¤¤¤Þ¤¹¡£"
+msgstr "ユーザID \"%s\": %d の署名が除去されました\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "User ID \"%s\": %d signatures removed\n"
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢¼º¸ú¤µ¤ì¤Æ¤¤¤Þ¤¹¡£"
+msgstr "ユーザID \"%s\": %d の署名が除去されました\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "User ID \"%s\": already minimized\n"
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢¤â¤¦¼º¸ú¤µ¤ì¤Æ¤¤¤Þ¤¹\n"
+msgstr "ユーザID \"%s\": 既に最小化されています\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "User ID \"%s\": already clean\n"
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢¤â¤¦¼º¸ú¤µ¤ì¤Æ¤¤¤Þ¤¹\n"
+msgstr "ユーザID \"%s\": 既にクリーンとなっています\n"
 
 msgid ""
 "WARNING: This is a PGP 2.x-style key.  Adding a designated revoker may "
 "cause\n"
 "         some versions of PGP to reject this key.\n"
 msgstr ""
-"·Ù¹ð: ¤³¤ì¤ÏPGP 2.x·Á¼°¤Î¸°¤Ç¤¹¡£»Ø̾¼º¸ú¼Ô¤ÎÄɲäǡ¢°ìÉô¤ÎÈǤÎPGP¤Ï¡¢\n"
-"      ¤³¤Î¸°¤òµñÈݤ¹¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£\n"
+"*警告*: これはPGP 2.x形式の鍵です。指名失効者の追加で、一部のバージョンのPGP"
+"では、\n"
+"      この鍵を拒否するかもしれません。\n"
 
 msgid "You may not add a designated revoker to a PGP 2.x-style key.\n"
-msgstr "PGP 2.x·Á¼°¤Î¸°¤Ë¤Ï»Ø̾¼º¸ú¼Ô¤òÄɲäǤ­¤Þ¤»¤ó¡£\n"
+msgstr "PGP 2.x形式の鍵には指名失効者を追加できません。\n"
 
 msgid "Enter the user ID of the designated revoker: "
-msgstr "»Ø̾¼º¸ú¼Ô¤Î¥æ¡¼¥¶¡¼ID¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤: "
+msgstr "指名失効者のユーザIDを入力してください: "
 
 msgid "cannot appoint a PGP 2.x style key as a designated revoker\n"
-msgstr "PGP 2.x·Á¼°¤Î¸°¤Ï¡¢»Ø̾¼º¸ú¼Ô¤ËǤ̿¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "PGP 2.x形式の鍵は、指名失効者に任命できません\n"
 
 msgid "you cannot appoint a key as its own designated revoker\n"
-msgstr "»Ø̾¼º¸ú¼Ô¤Ë¤Ï¡¢¤½¤Î¸°¼«ÂΤòǤ̿¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "指名失効者には、その鍵自体を任命できません\n"
 
 msgid "this key has already been designated as a revoker\n"
-msgstr "¤³¤Î¸°¤Ï¼º¸ú¼Ô¤È¤·¤Æ¤â¤¦»Ø̾¤µ¤ì¤Æ¤¤¤Þ¤¹\n"
+msgstr "この鍵は失効者としてもう指名されています\n"
 
 msgid "WARNING: appointing a key as a designated revoker cannot be undone!\n"
-msgstr "·Ù¹ð: ¤¢¤ë¸°¤ò»Ø̾¼º¸ú¼Ô¤ËÀßÄꤹ¤ë¤È¡¢¸µ¤ËÌ᤻¤Þ¤»¤ó!\n"
+msgstr "*警告*: ある鍵を指名失効者に設定すると、元に戻せません!\n"
 
 msgid ""
 "Are you sure you want to appoint this key as a designated revoker? (y/N) "
-msgstr "ËÜÅö¤Ë¤³¤Î¸°¤ò»Ø̾¼º¸ú¼Ô¤ËǤ̿¤·¤Þ¤¹¤«? (y/N) "
-
-msgid "Please remove selections from the secret keys.\n"
-msgstr "ÈëÌ©¸°¤ÎÁªÂò¤ò¤È¤¤¤Æ¤¯¤À¤µ¤¤¡£\n"
+msgstr "本当にこの鍵を指名失効者に任命しますか? (y/N) "
 
-#, fuzzy
 msgid "Please select at most one subkey.\n"
-msgstr "¹â¡¹1¸Ä¤ÎÉû¸°¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
+msgstr "高々1個の副鍵を選択してください。\n"
 
-#, fuzzy
 msgid "Changing expiration time for a subkey.\n"
-msgstr "Éû¸°¤ÎÍ­¸ú´ü¸Â¤òÊѹ¹¤·¤Þ¤¹¡£\n"
+msgstr "副鍵の有効期限を変更します。\n"
 
 msgid "Changing expiration time for the primary key.\n"
-msgstr "¼ç¸°¤ÎÍ­¸ú´ü¸Â¤òÊѹ¹¤·¤Þ¤¹¡£\n"
+msgstr "主鍵の有効期限を変更します。\n"
 
 msgid "You can't change the expiration date of a v3 key\n"
-msgstr "v3¸°¤ÎÍ­¸ú´ü¸Â¤ÏÊѹ¹¤Ç¤­¤Þ¤»¤ó\n"
+msgstr "v3鍵の有効期限は変更できません\n"
 
-msgid "No corresponding signature in secret ring\n"
-msgstr "ÈëÌ©¸°ÎؤËÂбþ¤¹¤ë½ð̾¤¬¤¢¤ê¤Þ¤»¤ó\n"
-
-#, fuzzy, c-format
+#, c-format
 msgid "signing subkey %s is already cross-certified\n"
-msgstr "·Ù¹ð: ½ð̾Éû¸°%s¤Ï¡¢Áê¸ß¾ÚÌÀ¤Ç¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "署名する副鍵%sはすでに相互証明されています\n"
 
 #, c-format
 msgid "subkey %s does not sign and so does not need to be cross-certified\n"
-msgstr ""
+msgstr "副鍵 %s は署名をしないので、相互証明の必要はありません\n"
 
 msgid "Please select exactly one user ID.\n"
-msgstr "¥æ¡¼¥¶¡¼ID¤ò¤­¤Ã¤«¤ê¤Ò¤È¤ÄÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
+msgstr "ユーザIDをきっかりひとつ選択してください。\n"
 
 #, c-format
 msgid "skipping v3 self-signature on user ID \"%s\"\n"
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Îv3¼«¸Ê½ð̾¤ò¤È¤Ð¤·¤Þ¤¹\n"
+msgstr "ユーザID\"%s\"のv3自己署名をスキップします\n"
 
 msgid "Enter your preferred keyserver URL: "
-msgstr "Áª¹¥¸°¥µ¡¼¥Ð¡¼URL¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤: "
+msgstr "優先鍵サーバURLを入力してください: "
 
 msgid "Are you sure you want to replace it? (y/N) "
-msgstr "ËÜÅö¤Ë¸ò´¹¤·¤¿¤¤¤Ç¤¹¤«? (y/N) "
+msgstr "本当に置き換えたいですか? (y/N) "
 
 msgid "Are you sure you want to delete it? (y/N) "
-msgstr "ËÜÅö¤Ëºï½ü¤·¤¿¤¤¤Ç¤¹¤«? (y/N) "
+msgstr "本当に削除したいですか? (y/N) "
 
-#, fuzzy
 msgid "Enter the notation: "
-msgstr "½ð̾Ãí¼á: "
+msgstr "注釈を入力: "
 
-#, fuzzy
 msgid "Proceed? (y/N) "
-msgstr "¾å½ñ¤­¤·¤Þ¤¹¤«? (y/N) "
+msgstr "進みますか? (y/N) "
 
 #, c-format
 msgid "No user ID with index %d\n"
-msgstr "%dÈ֤Υ桼¥¶¡¼ID¤Ï¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "%d番のユーザIDはありません\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "No user ID with hash %s\n"
-msgstr "%dÈ֤Υ桼¥¶¡¼ID¤Ï¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "ハッシュ%sのユーザIDはありません\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "No subkey with index %d\n"
-msgstr "%dÈ֤Υ桼¥¶¡¼ID¤Ï¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "%d番の副鍵はありません\n"
 
 #, c-format
 msgid "user ID: \"%s\"\n"
-msgstr "¥æ¡¼¥¶¡¼ID:¡È%s¡É\n"
+msgstr "ユーザID:\"%s\"\n"
 
 #, c-format
 msgid "signed by your key %s on %s%s%s\n"
-msgstr "%s¤Ç%s%s%s¤Ë½ð̾¤µ¤ì¤Æ¤¤¤Þ¤¹\n"
+msgstr "%sで%s%s%sに署名されています\n"
 
 msgid " (non-exportable)"
-msgstr " (½ñ½Ð¤·ÉÔ²Ä)"
+msgstr " (エクスポート不可)"
 
 #, c-format
 msgid "This signature expired on %s.\n"
-msgstr "¤³¤Î½ð̾¤Ï%s¤ÇËþλ¤Ç¤¹¡£\n"
+msgstr "この署名は%sで期限切れです。\n"
 
 msgid "Are you sure you still want to revoke it? (y/N) "
-msgstr "¤½¤ì¤Ç¤âËÜÅö¤Ë¼º¸ú¤·¤¿¤¤¤Ç¤¹¤«? (y/N) "
+msgstr "それでも本当に失効したいですか? (y/N) "
 
 msgid "Create a revocation certificate for this signature? (y/N) "
-msgstr "¤³¤Î½ð̾¤Ë¤¿¤¤¤¹¤ë¼º¸ú¾ÚÌÀ½ñ¤òºîÀ®¤·¤Þ¤¹¤«? (y/N) "
+msgstr "この署名にたいする失効証明書を作成しますか? (y/N) "
 
 msgid "Not signed by you.\n"
-msgstr ""
+msgstr "あなたによって署名されていません。\n"
 
 #, c-format
 msgid "You have signed these user IDs on key %s:\n"
-msgstr "¤³¤ì¤é¤Î¥æ¡¼¥¶¡¼ID¤Ë¸°%s¤Ç½ð̾¤·¤Þ¤·¤¿:\n"
+msgstr "これらのユーザIDに鍵%sで署名しました:\n"
 
 msgid " (non-revocable)"
-msgstr " (¼º¸úÉÔ²Ä)"
+msgstr " (失効不可)"
 
 #, c-format
 msgid "revoked by your key %s on %s\n"
-msgstr "¤¢¤Ê¤¿¤Î¸°%s¤Ç%s¤Ë¼º¸ú¤µ¤ì¤Æ¤¤¤Þ¤¹\n"
+msgstr "あなたの鍵%sで%sに失効されています\n"
 
 msgid "You are about to revoke these signatures:\n"
-msgstr "¤³¤ì¤é¤Î½ð̾¤ò¼º¸ú¤·¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹:\n"
+msgstr "これらの署名を失効しようとしています:\n"
 
 msgid "Really create the revocation certificates? (y/N) "
-msgstr "¼º¸ú¾ÚÌÀ½ñ¤òËÜÅö¤ËºîÀ®¤·¤Þ¤¹¤«? (y/N) "
+msgstr "失効証明書を本当に作成しますか? (y/N) "
 
 msgid "no secret key\n"
-msgstr "ÈëÌ©¸°¤¬¤¢¤ê¤Þ¤»¤ó\n"
+msgstr "秘密鍵がありません\n"
 
 #, c-format
 msgid "user ID \"%s\" is already revoked\n"
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢¤â¤¦¼º¸ú¤µ¤ì¤Æ¤¤¤Þ¤¹\n"
+msgstr "ユーザID\"%s\"は、もう失効されています\n"
 
 #, c-format
 msgid "WARNING: a user ID signature is dated %d seconds in the future\n"
-msgstr "·Ù¹ð: ¥æ¡¼¥¶¡¼ID½ð̾¤¬¡¢%dÉÃ̤Íè¤Ç¤¹\n"
+msgstr "*警告*: ユーザID署名が、%d秒未来です\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Key %s is already revoked.\n"
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢¤â¤¦¼º¸ú¤µ¤ì¤Æ¤¤¤Þ¤¹\n"
+msgstr "鍵 %s は、もう失効されています。\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Subkey %s is already revoked.\n"
-msgstr "¥æ¡¼¥¶¡¼ID¡È%s¡É¤Ï¡¢¤â¤¦¼º¸ú¤µ¤ì¤Æ¤¤¤Þ¤¹\n"
+msgstr "副鍵 %s は、もう失効されています。\n"
 
 #, c-format
 msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n"
-msgstr "%s (Â礭¤µ%ld) ¤Î¸°%s (uid %d) ¤Î¥Õ¥©¥ÈID¤È¤·¤Æɽ¼¨\n"
+msgstr "%s (大きさ%ld) の鍵%s (uid %d) のフォトIDとして表示\n"
 
 #, c-format
 msgid "preference '%s' duplicated\n"
-msgstr "Áª¹¥¡Ö%s¡×¤Î½ÅÊ£\n"
+msgstr "優先指定'%s'の重複\n"
 
 msgid "too many cipher preferences\n"
-msgstr "¿¤¹¤®¤ë°Å¹æË¡Áª¹¥\n"
+msgstr "暗号方式の優先指定が多すぎます\n"
 
 msgid "too many digest preferences\n"
-msgstr "¿¤¹¤®¤ëÍ×ÌóÁª¹¥\n"
+msgstr "ダイジェストの優先指定が多すぎます\n"
 
 msgid "too many compression preferences\n"
-msgstr "¿¤¹¤®¤ë°µ½ÌÁª¹¥\n"
+msgstr "圧縮の優先指定が多すぎます\n"
 
 #, c-format
 msgid "invalid item '%s' in preference string\n"
-msgstr "Áª¹¥Ê¸»úÎó¤Ë̵¸ú¤Ê¹àÌÜ¡Ö%s¡×¤¬¤¢¤ê¤Þ¤¹\n"
+msgstr "優先指定の文字列に無効な項目'%s'があります\n"
 
 msgid "writing direct signature\n"
-msgstr "ľÀܽð̾¤ò½ñ¤­¹þ¤ß¤Þ¤¹\n"
+msgstr "直接署名を書き込みます\n"
 
 msgid "writing self signature\n"
-msgstr "¼«¸Ê½ð̾¤ò½ñ¤­¹þ¤ß¤Þ¤¹\n"
+msgstr "自己署名を書き込みます\n"
 
 msgid "writing key binding signature\n"
-msgstr "¸°Âбþ¤Ø¤Î½ð̾¤ò½ñ¤­¹þ¤ß¤Þ¤¹\n"
+msgstr "鍵対応への署名を書き込みます\n"
 
 #, c-format
 msgid "keysize invalid; using %u bits\n"
-msgstr "̵¸ú¤Ê¸°Ä¹¡£%u¥Ó¥Ã¥È¤Ë¤·¤Þ¤¹\n"
+msgstr "無効な鍵長。%uビットにします\n"
 
 #, c-format
 msgid "keysize rounded up to %u bits\n"
-msgstr "¸°Ä¹¤ò%u¥Ó¥Ã¥È¤Ë´Ý¤á¤Þ¤¹\n"
+msgstr "鍵長を%uビットに丸めます\n"
 
 msgid ""
 "WARNING: some OpenPGP programs can't handle a DSA key with this digest size\n"
 msgstr ""
+"*警告*: いくつかのOpenPGPプログラムはこのダイジェスト長のDSA鍵を扱うことがで"
+"きません\n"
 
 msgid "Sign"
 msgstr "Sign"
 
 msgid "Certify"
-msgstr ""
+msgstr "Certify"
 
 msgid "Encrypt"
 msgstr "Encrypt"
@@ -3376,77 +3420,110 @@ msgstr "SsEeAaQq"
 
 #, 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"
-msgstr "   (%c) ½ð̾ÎϤÎȿž\n"
+msgstr "   (%c) 署名特性を反転する\n"
 
 #, c-format
 msgid "   (%c) Toggle the encrypt capability\n"
-msgstr "   (%c) °Å¹æÎϤÎȿž\n"
+msgstr "   (%c) 暗号特性を反転する\n"
 
 #, c-format
 msgid "   (%c) Toggle the authenticate capability\n"
-msgstr "   (%c) Ç§¾ÚÎϤÎȿž\n"
+msgstr "   (%c) 認証特性を反転する\n"
 
 #, c-format
 msgid "   (%c) Finished\n"
-msgstr "   (%c) ´°Î»\n"
+msgstr "   (%c) 完了\n"
 
 msgid "Please select what kind of key you want:\n"
-msgstr "¤´´õ˾¤Î¸°¤Î¼ïÎà¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤:\n"
+msgstr "ご希望の鍵の種類を選択してください:\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "   (%d) RSA and RSA (default)\n"
-msgstr "   (%d) DSA¤ÈElgamal (´ûÄê)\n"
+msgstr "   (%d) RSA と RSA (デフォルト)\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "   (%d) DSA and Elgamal\n"
-msgstr "   (%d) DSA¤ÈElgamal (´ûÄê)\n"
+msgstr "   (%d) DSA と Elgamal\n"
 
 #, c-format
 msgid "   (%d) DSA (sign only)\n"
-msgstr "   (%d) DSA (½ð̾¤Î¤ß)\n"
+msgstr "   (%d) DSA (署名のみ)\n"
 
 #, c-format
 msgid "   (%d) RSA (sign only)\n"
-msgstr "   (%d) RSA (½ð̾¤Î¤ß)\n"
+msgstr "   (%d) RSA (署名のみ)\n"
 
 #, c-format
 msgid "   (%d) Elgamal (encrypt only)\n"
-msgstr "   (%d) Elgamal (°Å¹æ²½¤Î¤ß)\n"
+msgstr "   (%d) Elgamal (暗号化のみ)\n"
 
 #, c-format
 msgid "   (%d) RSA (encrypt only)\n"
-msgstr "   (%d) RSA (°Å¹æ²½¤Î¤ß)\n"
+msgstr "   (%d) RSA (暗号化のみ)\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "   (%d) DSA (set your own capabilities)\n"
-msgstr "   (%d) RSA (Æȼ«Ç½ÎϤòÀßÄê)\n"
+msgstr "   (%d) DSA (特性をあなた自身で設定)\n"
 
 #, c-format
 msgid "   (%d) RSA (set your own capabilities)\n"
-msgstr "   (%d) RSA (Æȼ«Ç½ÎϤòÀßÄê)\n"
+msgstr "   (%d) RSA (特性をあなた自身で設定)\n"
+
+#, c-format
+msgid "   (%d) ECDSA and ECDH\n"
+msgstr "   (%d) ECDSA と ECDH\n"
+
+#, c-format
+msgid "  (%d) ECDSA (sign only)\n"
+msgstr "   (%d) ECDSA (署名のみ)\n"
+
+#, c-format
+msgid "  (%d) ECDSA (set your own capabilities)\n"
+msgstr "   (%d) ECDSA (特性をあなた自身で設定)\n"
+
+#, c-format
+msgid "  (%d) ECDH (encrypt only)\n"