aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS9
-rw-r--r--agent/agent.h18
-rw-r--r--agent/call-pinentry.c4
-rw-r--r--agent/call-scd.c62
-rw-r--r--agent/command.c145
-rw-r--r--agent/divert-scd.c11
-rw-r--r--agent/protect.c6
-rw-r--r--common/Makefile.am2
-rw-r--r--common/agent-opt.c71
-rw-r--r--common/shareddefs.h48
-rw-r--r--common/status.h5
-rw-r--r--configure.ac2
-rw-r--r--doc/DETAILS1818
-rw-r--r--doc/gpg.texi20
-rw-r--r--doc/help.ja.txt399
-rw-r--r--doc/scdaemon.texi16
-rw-r--r--g10/call-agent.c294
-rw-r--r--g10/call-agent.h6
-rw-r--r--g10/card-util.c242
-rw-r--r--g10/gpg.c14
-rw-r--r--g10/keydb.h3
-rw-r--r--g10/main.h2
-rw-r--r--g10/options.h1
-rw-r--r--g10/passphrase.c70
-rw-r--r--g10/pubkey-enc.c4
-rw-r--r--g10/server.c36
-rw-r--r--g10/sign.c3
-rw-r--r--po/ja.po6960
-rw-r--r--scd/apdu.c230
-rw-r--r--scd/apdu.h15
-rw-r--r--scd/app-dinsig.c12
-rw-r--r--scd/app-nks.c10
-rw-r--r--scd/app-openpgp.c160
-rw-r--r--scd/app.c2
-rw-r--r--scd/ccid-driver.c406
-rw-r--r--scd/ccid-driver.h5
-rw-r--r--scd/command.c11
-rw-r--r--scd/iso7816.c28
-rw-r--r--scd/iso7816.h25
-rw-r--r--scd/sc-copykeys.c1
-rw-r--r--scd/scdaemon.c17
-rw-r--r--scd/scdaemon.h3
-rw-r--r--tools/gpgconf-comp.c4
43 files changed, 6184 insertions, 5016 deletions
diff --git a/NEWS b/NEWS
index a8352ca53..370d9c4a5 100644
--- 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)
-----------------------------------------------------
diff --git a/agent/agent.h b/agent/agent.h
index 45bc507e3..030b29520 100644
--- a/agent/agent.h
+++ b/agent/agent.h
@@ -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. */
@@ -46,16 +47,6 @@
#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),
diff --git a/agent/call-pinentry.c b/agent/call-pinentry.c
index c37831a05..c6b6b5282 100644
--- a/agent/call-pinentry.c
+++ b/agent/call-pinentry.c
@@ -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));
diff --git a/agent/call-scd.c b/agent/call-scd.c
index 2bda3779d..cbe4d1c34 100644
--- a/agent/call-scd.c
+++ b/agent/call-scd.c
@@ -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);
+}
/* Type used with the card_getattr_cb. */
struct card_getattr_parm_s {
diff --git a/agent/command.c b/agent/command.c
index 3ba921be4..2844398f6 100644
--- a/agent/command.c
+++ b/agent/command.c
@@ -2119,9 +2119,133 @@ cmd_export_key (assuan_context_t ctx, char *line)
return leave_cmd (ctx, err);
}
+
+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);
+}
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;
diff --git a/agent/divert-scd.c b/agent/divert-scd.c
index 656d5cdf1..5fb037ee5 100644
--- a/agent/divert-scd.c
+++ b/agent/divert-scd.c
@@ -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)
diff --git a/agent/protect.c b/agent/protect.c
index d26573d11..3e2cbb94e 100644
--- a/agent/protect.c
+++ b/agent/protect.c
@@ -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 :
diff --git a/common/Makefile.am b/common/Makefile.am
index e0f4b8084..ff8fee320 100644
--- a/common/Makefile.am
+++ b/common/Makefile.am
@@ -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
index 000000000..4317ba343
--- /dev/null
+++ b/common/agent-opt.c
@@ -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
index 000000000..604b7e9d7
--- /dev/null
+++ b/common/shareddefs.h
@@ -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*/
diff --git a/common/status.h b/common/status.h
index b6ac779e4..9219bf4d9 100644
--- a/common/status.h
+++ b/common/status.h
@@ -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
};
diff --git a/configure.ac b/configure.ac
index db5112101..5881df1a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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})"
diff --git a/doc/DETAILS b/doc/DETAILS
index 4e8739482..a52979f65 100644
--- a/doc/DETAILS
+++ b/doc/DETAILS
@@ -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 [email protected]
-
pub:f:1024:17:6C7EE1B8621CC013:899817715:1055898235::m:::scESC:
fpr:::::::::ECAF7590EB3443B5C7CF3ACB6C7EE1B8621CC013:
uid:f::::::::Werner Koch <[email protected]>:
@@ -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.
diff --git a/doc/gpg.texi b/doc/gpg.texi
index d67900042..cf647e19b 100644
--- a/doc/gpg.texi
+++ b/doc/gpg.texi
@@ -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.
diff --git a/doc/help.ja.txt b/doc/help.ja.txt
index 36c9ffbd2..0a538b88c 100644
--- a/doc/help.ja.txt
+++ b/doc/help.ja.txt
@@ -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.
@@ -16,269 +16,318 @@
# 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
+オプションですが推奨される電子メールアドレスを入力してください。
.
-.#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
diff --git a/doc/scdaemon.texi b/doc/scdaemon.texi
index 200fed890..ed2cc5129 100644
--- a/doc/scdaemon.texi
+++ b/doc/scdaemon.texi
@@ -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
diff --git a/g10/call-agent.c b/g10/call-agent.c
index 55637e463..85a3f2842 100644
--- a/g10/call-agent.c
+++ b/g10/call-agent.c
@@ -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.
*
@@ -40,47 +40,60 @@
#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;
+}
+
/* 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;
}
diff --git a/g10/call-agent.h b/g10/call-agent.h
index 43de14fe3..ab1d41a53 100644
--- a/g10/call-agent.h
+++ b/g10/call-agent.h
@@ -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);
diff --git a/g10/card-util.c b/g10/card-util.c
index 83586858e..75208cc86 100644
--- a/g10/card-util.c
+++ b/g10/card-util.c
@@ -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;
}
diff --git a/g10/gpg.c b/g10/gpg.c
index 7e4339b57..a19c9a76a 100644
--- 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;
diff --git a/g10/keydb.h b/g10/keydb.h
index fb36c81eb..39e7826a9 100644
--- a/g10/keydb.h
+++ b/g10/keydb.h
@@ -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);
diff --git a/g10/main.h b/g10/main.h
index d25265aa7..15d3b7627 100644
--- a/g10/main.h
+++ b/g10/main.h
@@ -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 --*/
diff --git a/g10/options.h b/g10/options.h
index d4824bcf1..d44d7a14b 100644
--- a/g10/options.h
+++ b/g10/options.h
@@ -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
diff --git a/g10/passphrase.c b/g10/passphrase.c
index cc5655505..d872e36ae 100644
--- a/g10/passphrase.c
+++ b/g10/passphrase.c
@@ -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. */
diff --git a/g10/pubkey-enc.c b/g10/pubkey-enc.c
index a69536e1d..a328e1adc 100644
--- a/g10/pubkey-enc.c
+++ b/g10/pubkey-enc.c
@@ -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)
diff --git a/g10/server.c b/g10/server.c
index d8871d059..da9c28df4 100644
--- a/g10/server.c
+++ b/g10/server.c
@@ -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);
+}
diff --git a/g10/sign.c b/g10/sign.c
index 6ff7df6a9..8944067d7 100644
--- a/g10/sign.c
+++ b/g10/sign.c
@@ -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();
diff --git a/po/ja.po b/po/ja.po
index d7b4181e3..007f33f02 100644
--- 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 <[email protected]>, 1999, 2000, 2002, 2003, 2004.
# Yoshihiro Kajiki <[email protected]>, 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: [email protected]\n"
-"PO-Revision-Date: 2004-11-23 11:14+0900\n"
-"Last-Translator: IIDA Yosiaki <[email protected]>\n"
+"PO-Revision-Date: 2013-02-12 13:30+0900\n"
+"Last-Translator: NIIBE Yutaka <[email protected]>\n"
"Language-Team: Japanese <[email protected]>\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 "ͭ����: %s"
#. 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 "カード・シリアル番号の取得エラー: %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 "一時ファイルの作成エラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "error writing to temporary file: %s\n"
-msgstr "%s: �ǥ��쥯�ȥ꡼���쥳���ɤν���ߥ��顼: %s\n"
+msgstr "一時ファイルの書き込みエラー: %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'の作成エラー: %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'でソケットのバインドのエラー: %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でナンスの読み込みエラー: %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 "パスフレーズを問い合わせする際、エラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "error opening '%s': %s\n"
-msgstr "��%s�פǥ��顼: %s\n"
+msgstr "'%s'を開く際、エラー: %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"
-#, fuzzy, c-format
+#, c-format
+msgid "%s key uses an unsafe (%u bit) hash\n"
+msgstr "%s 鍵は安全でない(%uビット)ハッシュを使用しています\n"
+
+#, 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 "パイプの作成エラー: %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 "プロセスforkエラー: %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 "ソケット作成エラー: %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 "無効な外装ヘッダー: "
msgid "armor header: "
-msgstr "�����إå���: "
+msgstr "外装ヘッダー: "
msgid "invalid clearsig header\n"
-msgstr "̵���ʥ��ꥢ��̾�إå���\n"
+msgstr "無効なクリア・テクスト署名ヘッダー\n"
-#, fuzzy
msgid "unknown armor header: "
-msgstr "�����إå���: "
+msgstr "不明の外装ヘッダー: "
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 "十分なメモリの確保のエラー: %s\n"
#, c-format
msgid "error reading '%s': %s\n"
-msgstr "��%s�פ��ɽФ����顼: %s\n"
+msgstr "'%s'の読み込みエラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "error writing '%s': %s\n"
-msgstr "���ء�%s�פν���ߥ��顼: %s\n"
+msgstr "'%s'の書き込みエラー: %s\n"
msgid "Login data (account name): "
-msgstr "�������󡦥ǡ��� (���������̾): "
+msgstr "ログイン・データ (アカウント名): "
#, c-format
msgid "Error: Login data too long (limit is %d characters).\n"
-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 "現行鍵情報の取得エラー: %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 "鍵%dの長さを%u bit に変更する際にエラー: %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ブロックの解除や変更のメニュー"
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 "鍵ブロックの読み込みエラー: %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 "パスフレーズの作成エラー: %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暗号化済みデータ\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 "外部プログラムの呼出しでシステム・エラー: %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"
-
-#, fuzzy
-msgid "remove the passphrase from exported subkeys"
-msgstr "�������"
+msgstr "\"sensitive\"(機密)と指定された失効鍵をエクスポートします"
-#, 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"
-
-msgid "about to export an unprotected subkey\n"
-msgstr ""
+msgstr "鍵%s: 鍵はカード上にあります - スキップします\n"
-#, 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'を %s から取得する際のエラー: %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 "鍵サーバのURLを解析不能\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を%sに設定不能\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 "鍵リング'%s'の書き込みエラー: %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 "鍵リング'%s'の作成エラー: %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 "バックアップ鍵を'%s'から読み込みする際のエラー: %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 "機能: "
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 "無効"
-#, 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"
+msgstr " (%d) ECDH (暗号化のみ)\n"
+
+#, c-format
+msgid " (%d) Existing key\n"
+msgstr " (%d) 既存の鍵\n"
+
+msgid "Enter the keygrip: "
+msgstr "keygripを入力: "
+
+msgid "Not a valid keygrip (expecting 40 hex digits)\n"
+msgstr "有効なkeygrip (40桁の16進数字)ではありません\n"
+
+msgid "No key with this keygrip\n"
+msgstr "このkeygripの鍵はありません\n"
#, c-format
msgid "%s keys may be between %u and %u bits long.\n"
-msgstr ""
+msgstr "%s 鍵は %u から %u ビットの長さで可能です。\n"
-#, fuzzy, c-format
+#, c-format
msgid "What keysize do you want for the subkey? (%u) "
-msgstr "�ɤθ�Ĺ�ˤ��ޤ���? (1024) "
+msgstr "副鍵の鍵長は? (%u) "
-#, fuzzy, c-format
+#, c-format
msgid "What keysize do you want? (%u) "
-msgstr "�ɤθ�Ĺ�ˤ��ޤ���? (1024) "
+msgstr "鍵長は? (%u) "
#, c-format
msgid "Requested keysize is %u bits\n"
-msgstr "�׵ᤵ�줿��Ĺ��%u�ӥå�\n"
+msgstr "要求された鍵長は%uビット\n"
+
+#, c-format
+msgid "rounded to %u bits\n"
+msgstr "%uビットに切り上げます\n"
msgid ""
"Please specify how long the key should be valid.\n"
@@ -3456,12 +3533,12 @@ msgid ""
" <n>m = key expires in n months\n"
" <n>y = key expires in n years\n"
msgstr ""
-"����ͭ�����¤���ꤷ�Ƥ���������\n"
-" 0 = ����̵����\n"
-" <n> = ���� n ���֤���λ\n"
-" <n>w = ���� n ���֤���λ\n"
-" <n>m = ���� n ����֤���λ\n"
-" <n>y = ���� n ǯ�֤���λ\n"
+"鍵の有効期限を指定してください。\n"
+" 0 = 鍵は無期限\n"
+" <n> = 鍵は n 日間で期限切れ\n"
+" <n>w = 鍵は n 週間で期限切れ\n"
+" <n>m = 鍵は n か月間で期限切れ\n"
+" <n>y = 鍵は n 年間で期限切れ\n"
msgid ""
"Please specify how long the signature should be valid.\n"
@@ -3471,54 +3548,55 @@ msgid ""
" <n>m = signature expires in n months\n"
" <n>y = signature expires in n years\n"
msgstr ""
-"��̾��ͭ�����¤���ꤷ�Ƥ���������\n"
-" 0 = ��̾��̵����\n"
-" <n> = ��̾�� n ���֤���λ\n"
-" <n>w = ��̾�� n ���֤���λ\n"
-" <n>m = ��̾�� n ����֤���λ\n"
-" <n>y = ��̾�� n ǯ�֤���λ\n"
+"署名の有効期限を指定してください。\n"
+" 0 = 署名は無期限\n"
+" <n> = 署名は n 日間で期限切れ\n"
+" <n>w = 署名は n 週間で期限切れ\n"
+" <n>m = 署名は n か月間で期限切れ\n"
+" <n>y = 署名は n 年間で期限切れ\n"
msgid "Key is valid for? (0) "
-msgstr "����ͭ�����֤�? (0)"
+msgstr "鍵の有効期間は? (0)"
-#, fuzzy, c-format
+#, c-format
msgid "Signature is valid for? (%s) "
-msgstr "��̾��ͭ�����֤�? (0)"
+msgstr "署名の有効期間は? (%s)"
msgid "invalid value\n"
-msgstr "̵������\n"
+msgstr "無効な値\n"
-#, fuzzy
msgid "Key does not expire at all\n"
-msgstr "%s��̵���¤Ǥ�\n"
+msgstr "%sは無期限です\n"
-#, fuzzy
msgid "Signature does not expire at all\n"
-msgstr "%s��̵���¤Ǥ�\n"
+msgstr "%署名は無期限です\n"
-#, fuzzy, c-format
+#, c-format
msgid "Key expires at %s\n"
-msgstr "%s��%s����λ���ޤ�\n"
+msgstr "鍵は%sで期限切れとなります\n"
-#, fuzzy, c-format
+#, c-format
msgid "Signature expires at %s\n"
-msgstr "���ν�̾��%s����λ�Ǥ�\n"
+msgstr "署名は%sで期限切れとなります\n"
msgid ""
"Your system can't display dates beyond 2038.\n"
"However, it will be correctly handled up to 2106.\n"
msgstr ""
-"���Υ����ƥ�Ǥϡ�2038ǯ�ʹߤ����դ�ɽ���Ǥ��ޤ��󤬡�\n"
-"2106ǯ�ޤǤʤ���������갷���ޤ���\n"
+"このシステムでは、2038年以降の日付を表示することはできませんが、\n"
+"2106年まで正しく処理されます。\n"
msgid "Is this correct? (y/N) "
-msgstr "������������Ǥ���? (y/N) "
+msgstr "これで正しいですか? (y/N) "
msgid ""
"\n"
"GnuPG needs to construct a user ID to identify your key.\n"
"\n"
msgstr ""
+"\n"
+"GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。\n"
+"\n"
#. TRANSLATORS: This string is in general not anymore used
#. but you should keep your existing translation. In case
@@ -3533,39 +3611,39 @@ msgid ""
"\n"
msgstr ""
"\n"
-"���ʤ��θ���Ʊ�ꤹ�뤿��˥桼����ID��ɬ�פǤ���\n"
-"���Υ��եȤ���̾�������ȡ��Żҥ᡼�롦���ɥ쥹����\n"
-"���ν񼰤ǥ桼����ID�������ޤ�:\n"
+"あなたの鍵を識別するためにユーザIDが必要です。\n"
+"このソフトは本名、コメント、電子メール・アドレスから\n"
+"次の書式でユーザIDを構成します:\n"
" \"Heinrich Heine (Der Dichter) <[email protected]>\"\n"
"\n"
msgid "Real name: "
-msgstr "��̾: "
+msgstr "本名: "
msgid "Invalid character in name\n"
-msgstr "̾����̵����ʸ��������ޤ�\n"
+msgstr "名前に無効な文字があります\n"
msgid "Name may not start with a digit\n"
-msgstr "̾��������ǻϤ�ƤϤ����ޤ���\n"
+msgstr "名前を数字で始めてはいけません\n"
msgid "Name must be at least 5 characters long\n"
-msgstr "̾����5ʸ���ʾ�Ǥʤ���Фʤ�ޤ���\n"
+msgstr "名前は5文字以上でなければなりません\n"
msgid "Email address: "
-msgstr "�Żҥ᡼�롦���ɥ쥹: "
+msgstr "電子メール・アドレス: "
msgid "Not a valid email address\n"
-msgstr "ͭ�����Żҥ᡼�롦���ɥ쥹�ǤϤ���ޤ���\n"
+msgstr "有効な電子メール・アドレスではありません\n"
msgid "Comment: "
-msgstr "������: "
+msgstr "コメント: "
msgid "Invalid character in comment\n"
-msgstr "�����Ȥ�̵����ʸ��������ޤ�\n"
+msgstr "コメントに無効な文字があります\n"
#, c-format
msgid "You are using the '%s' character set.\n"
-msgstr "���ʤ���ʸ�������%s�פ�ȤäƤ��ޤ���\n"
+msgstr "あなたは文字集合'%s'を使っています。\n"
#, c-format
msgid ""
@@ -3573,15 +3651,15 @@ msgid ""
" \"%s\"\n"
"\n"
msgstr ""
-"���Υ桼����ID�����򤷤ޤ���:\n"
-" ��%s��\n"
+"次のユーザIDを選択しました:\n"
+" \"%s\"\n"
"\n"
msgid "Please don't put the email address into the real name or the comment\n"
-msgstr "�Żҥ᡼��Υ��ɥ쥹����̾�䥳���Ȥ�����ʤ��褦��\n"
+msgstr "電子メールのアドレスを本名やコメントに入れないように\n"
msgid "Such a user ID already exists on this key!\n"
-msgstr ""
+msgstr "そういったユーザIDはすでにこの鍵に存在しています!\n"
#. TRANSLATORS: These are the allowed answers in
#. lower and uppercase. Below you will find the matching
@@ -3598,26 +3676,30 @@ msgid "NnCcEeOoQq"
msgstr "NnCcEeOoQq"
msgid "Change (N)ame, (C)omment, (E)mail or (Q)uit? "
-msgstr "̾��(N)��������(C)���Żҥ᡼��(E)���ѹ����ޤ��Ͻ�λ(Q)? "
+msgstr "名前(N)、コメント(C)、電子メール(E)の変更、または終了(Q)? "
msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
-msgstr "̾��(N)��������(C)���Żҥ᡼��(E)���ѹ����ޤ���OK(O)����λ(Q)? "
+msgstr "名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? "
msgid "Please correct the error first\n"
-msgstr "�ޤ����顼�������Ƥ�������\n"
+msgstr "まずエラーを修正してください\n"
msgid ""
"You need a Passphrase to protect your secret key.\n"
"\n"
msgstr ""
-"��̩�����ݸ�뤿��˥ѥ��ե졼��������ޤ���\n"
+"秘密鍵を保護するためにパスフレーズがいります。\n"
"\n"
-#, fuzzy
msgid ""
"Please enter a passphrase to protect the off-card backup of the new "
"encryption key."
-msgstr "�ѥ��ե졼�������Ϥ��Ƥ����������������̩��ʸ�ϤΤ��ȤǤ� \n"
+msgstr ""
+"パスフレーズを入力してください。これは新しく作られる暗号鍵のカード外のバック"
+"アップを保護するものです。"
+
+msgid "passphrase not correctly repeated; try again"
+msgstr "パスフレーズをちゃんと繰り返していません。再入力してください"
#, c-format
msgid "%s.\n"
@@ -3629,9 +3711,9 @@ msgid ""
"using this program with the option \"--edit-key\".\n"
"\n"
msgstr ""
-"�ѥ��ե졼������ɬ�פʤ褦�Ǥ����������餯����Ϥ����Ǥ�ʤ�\n"
-"�ͤ��Ǥ�! ��������³�Ԥ��ޤ����ѥ��ե졼���ϡ����Υץ������\n"
-"�Ρ�--edit-key�ɥ��ץ����Ǥ��ĤǤ��ѹ��Ǥ��ޤ���\n"
+"パスフレーズを必要としないようですが、おそらくそれは良くない考えです!\n"
+"続けますが、パスフレーズを設定することを検討ください。パスフレーズは、\n"
+"このプログラムの\"--edit-key\"オプションでいつでも変更できます。\n"
"\n"
msgid ""
@@ -3640,587 +3722,515 @@ msgid ""
"disks) during the prime generation; this gives the random number\n"
"generator a better chance to gain enough entropy.\n"
msgstr ""
-"������Ĺ��������������ޤ��������ܡ��ɤ��ǤĤȤ����ޥ�����ư����\n"
-"�Ȥ����ǥ������˥�����������Ȥ���¾�Τ��Ȥ򤹤�ȡ���������Ҥ�\n"
-"�𻨤����礭�ʤ���������������䤹���ʤ�Τǡ������ᤤ�����ޤ���\n"
+"たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か"
+"す、\n"
+"ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生成器"
+"に\n"
+"十分なエントロピーを供給する機会を与えることができます。\n"
msgid "Key generation canceled.\n"
-msgstr "�������������ä���ޤ�����\n"
+msgstr "鍵の生成が取り消されました。\n"
#, c-format
msgid "writing public key to '%s'\n"
-msgstr "��%s�פظ�������񤭹��ߤޤ�\n"
-
-#, c-format
-msgid "writing secret key stub to '%s'\n"
-msgstr "��%s�פ���̩�������֤�񤭹��ߤޤ�\n"
-
-#, c-format
-msgid "writing secret key to '%s'\n"
-msgstr "��%s�פ���̩����񤭹��ߤޤ�\n"
+msgstr "'%s'へ公開鍵を書き込みます\n"
#, c-format
msgid "no writable public keyring found: %s\n"
-msgstr "����߲�ǽ�ʸ������ؤ����Ĥ���ޤ���: %s\n"
-
-#, c-format
-msgid "no writable secret keyring found: %s\n"
-msgstr "����߲�ǽ����̩���ؤ����Ĥ���ޤ���: %s\n"
+msgstr "書き込み可能な公開鍵リングが見つかりません: %s\n"
#, c-format
msgid "error writing public keyring '%s': %s\n"
-msgstr "�������ء�%s�פν���ߥ��顼: %s\n"
-
-#, c-format
-msgid "error writing secret keyring '%s': %s\n"
-msgstr "��̩���ء�%s�פν���ߥ��顼: %s\n"
+msgstr "公開鍵リング'%s'の書き込みエラー: %s\n"
msgid "public and secret key created and signed.\n"
-msgstr "����������̩�������������̾���ޤ�����\n"
+msgstr "公開鍵と秘密鍵を作成し、署名しました。\n"
-#, fuzzy
msgid ""
"Note that this key cannot be used for encryption. You may want to use\n"
"the command \"--edit-key\" to generate a subkey for this purpose.\n"
msgstr ""
-"���θ��ϰŹ沽�ˤϻ��ѤǤ��ʤ����Ȥ����դ��Ƥ����������Ź沽��Ԥ��ˤϡ�\n"
-"��--edit-key�ɥ��ޥ�ɤ�Ȥä��������������Ƥ���������\n"
+"この鍵は暗号化には使用できないことに注意してください。暗号化を行うには、\n"
+"\"--edit-key\"コマンドを使って副鍵を生成してください。\n"
#, c-format
msgid "Key generation failed: %s\n"
-msgstr "���������˼��Ԥ��ޤ���: %s\n"
+msgstr "鍵の生成に失敗しました: %s\n"
#, c-format
msgid ""
"key has been created %lu second in future (time warp or clock problem)\n"
-msgstr "����%lu��̤��ˤǤ��ޤ��� (����ι�Ԥ����פξ㳲�Ǥ��礦)\n"
+msgstr "鍵は%lu秒未来にできました (時間歪曲か時計の障害でしょう)\n"
#, c-format
msgid ""
"key has been created %lu seconds in future (time warp or clock problem)\n"
-msgstr "����%lu��̤��ˤǤ��ޤ��� (����ι�Ԥ����פξ㳲�Ǥ��礦)\n"
+msgstr "鍵は%lu秒未来にできました (時間歪曲か時計の障害でしょう)\n"
msgid "NOTE: creating subkeys for v3 keys is not OpenPGP compliant\n"
-msgstr "����: v3���������κ����ϡ�OpenPGP��Ŭ�礷�ޤ���\n"
+msgstr "*注意*: v3鍵に対する副鍵の作成は、OpenPGPに適合しません\n"
+
+msgid "Secret parts of primary key are not available.\n"
+msgstr "主鍵の秘密部分が得られません。\n"
+
+msgid "Secret parts of primary key are stored on-card.\n"
+msgstr "主鍵の秘密部分は科議場に保存されています。\n"
msgid "Really create? (y/N) "
-msgstr "�����˺������ޤ���? (y/N) "
+msgstr "本当に作成しますか? (y/N) "
#, c-format
msgid "storing key onto card failed: %s\n"
-msgstr "�����ɤؤθ����ݴɤ˼��Ԥ��ޤ���: %s\n"
+msgstr "カードへの鍵の保管に失敗しました: %s\n"
#, c-format
msgid "can't create backup file '%s': %s\n"
-msgstr "�Хå����åס��ե������%s�פ������Ǥ��ޤ���: %s\n"
+msgstr "バックアップ・ファイル'%s'が作成できません: %s\n"
#, c-format
msgid "NOTE: backup of card key saved to '%s'\n"
-msgstr "����: �����ɸ��ΥХå����åפ���%s�פ���¸����ޤ�\n"
+msgstr "*注意*: カード鍵のバックアップが'%s'へ保存されます\n"
msgid "never "
-msgstr "̵���� "
+msgstr "無期限 "
msgid "Critical signature policy: "
-msgstr "����ƥ�����ʽ�̾�ݥꥷ��: "
+msgstr "クリティカルな署名ポリシ: "
msgid "Signature policy: "
-msgstr "��̾�ݥꥷ��: "
+msgstr "署名ポリシ: "
msgid "Critical preferred keyserver: "
-msgstr "����������������: "
+msgstr "クリティカルな優先鍵サーバ: "
msgid "Critical signature notation: "
-msgstr "����ƥ�����ʽ�̾����: "
+msgstr "クリティカルな署名注釈: "
msgid "Signature notation: "
-msgstr "��̾����: "
+msgstr "署名注釈: "
msgid "Keyring"
-msgstr "����"
+msgstr "鍵リング"
msgid "Primary key fingerprint:"
-msgstr "�縰�λ���:"
+msgstr "主鍵のフィンガー・プリント:"
msgid " Subkey fingerprint:"
-msgstr "�������:"
+msgstr "副鍵のフィンガー・プリント:"
#. TRANSLATORS: this should fit into 24 bytes to that the
#. * fingerprint data is properly aligned with the user ID
msgid " Primary key fingerprint:"
-msgstr " �縰�λ���:"
+msgstr "主鍵フィンガー・プリント:"
msgid " Subkey fingerprint:"
-msgstr " �������:"
+msgstr "副鍵フィンガー・プリント:"
msgid " Key fingerprint ="
-msgstr " ���� ="
+msgstr " フィンガー・プリント ="
msgid " Card serial no. ="
-msgstr " �����ɤ����� ="
+msgstr " カード・シリアル番号 ="
#, c-format
msgid "renaming '%s' to '%s' failed: %s\n"
-msgstr "��%s�פ����%s�פؤΰ�ư�˼���: %s\n"
-
-msgid "WARNING: 2 files with confidential information exists.\n"
-msgstr "�ٹ�: ���Ѿ�����ä�2�ĤΥե����뤬¸�ߤ��ޤ���\n"
-
-#, c-format
-msgid "%s is the unchanged one\n"
-msgstr "%s���ѹ��Τʤ����Ǥ�\n"
-
-#, c-format
-msgid "%s is the new one\n"
-msgstr "%s�Ͽ��������Ǥ�\n"
-
-msgid "Please fix this possible security flaw\n"
-msgstr "��������Ū�ʰ�����η�٤������Ƥ�������\n"
+msgstr "'%s'から'%s'へ名前変更に失敗: %s\n"
#, c-format
msgid "caching keyring '%s'\n"
-msgstr "���ء�%s�פ򥭥�å��夷�ޤ�\n"
+msgstr "鍵リング'%s'をキャッシュします\n"
#, c-format
msgid "%lu keys cached so far (%lu signatures)\n"
-msgstr "%lu�Ĥθ��ޤǥ���å���� (%lu�Ĥν�̾)\n"
+msgstr "%lu個の鍵までキャッシュ済 (%lu個の署名)\n"
#, c-format
msgid "%lu keys cached (%lu signatures)\n"
-msgstr "%lu�Ĥθ��򥭥�å���� (%lu�Ĥν�̾)\n"
+msgstr "%lu個の鍵をキャッシュ済 (%lu個の署名)\n"
#, c-format
msgid "%s: keyring created\n"
-msgstr "%s: ���ؤ��Ǥ��ޤ���\n"
+msgstr "%s: 鍵リングができました\n"
msgid "include revoked keys in search results"
-msgstr ""
+msgstr "失効した鍵を検索結果に含める"
msgid "include subkeys when searching by key ID"
-msgstr ""
+msgstr "key IDによる検索に副鍵も含める"
msgid "use temporary files to pass data to keyserver helpers"
-msgstr ""
+msgstr "キーサーバ・ヘルパーにデータを与える際、一時ファイルを使う"
msgid "do not delete temporary files after using them"
-msgstr ""
+msgstr "一時ファイルを使用後、それを削除しない"
msgid "automatically retrieve keys when verifying signatures"
-msgstr ""
+msgstr "署名の検証時に自動的に鍵を取得する"
-#, fuzzy
msgid "honor the preferred keyserver URL set on the key"
-msgstr "�����������С�URL�����Ϥ��Ƥ�������: "
+msgstr "鍵に設定される優先鍵サーバURLを与える"
msgid "honor the PKA record set on a key when retrieving keys"
-msgstr ""
+msgstr "鍵に設定されたPKAレコードを鍵の取得時に与える"
#, c-format
msgid "WARNING: keyserver option '%s' is not used on this platform\n"
msgstr ""
-"�ٹ�: �������С��Υ��ץ�����%s�פϡ����Υץ�åȥۡ���ǤϻȤ��ޤ���\n"
+"*警告*: 鍵サーバのオプション'%s'は、このプラットホームでは使われません\n"
msgid "disabled"
-msgstr "disabled"
+msgstr "使用禁止"
msgid "Enter number(s), N)ext, or Q)uit > "
-msgstr "�ֹ�(s)��N)�����ޤ���Q)��ߤ����Ϥ��Ƥ������� >"
+msgstr "番号(s)、N)次、またはQ)中止を入力してください >"
#, c-format
msgid "invalid keyserver protocol (us %d!=handler %d)\n"
-msgstr "̵���ʸ������С����ץ��ȥ���Ǥ� (us %d!=handler %d)\n"
+msgstr "無効な鍵サーバ・プロトコルです (us %d!=handler %d)\n"
#, c-format
-msgid "key \"%s\" not found on keyserver\n"
-msgstr "����%s�ɤ��������С��˸��Ĥ���ޤ���\n"
-
-msgid "key not found on keyserver\n"
-msgstr "�����������С��˸��Ĥ���ޤ���\n"
-
-#, c-format
-msgid "requesting key %s from %s server %s\n"
-msgstr "��%s��%s���饵���С�%s���׵�\n"
-
-#, c-format
-msgid "requesting key %s from %s\n"
-msgstr "��%s��%s���׵�\n"
-
-#, fuzzy, c-format
-msgid "searching for names from %s server %s\n"
-msgstr "��%s�ɤ�%s�����С�%s���鸡��\n"
-
-#, fuzzy, c-format
-msgid "searching for names from %s\n"
-msgstr "��%s�ɤ򥵡��С�%s���鸡��\n"
-
-#, c-format
-msgid "sending key %s to %s server %s\n"
-msgstr "��%s��%s������%s������\n"
+msgid "\"%s\" not a key ID: skipping\n"
+msgstr "\"%s\"鍵IDではありません: スキップします\n"
#, c-format
-msgid "sending key %s to %s\n"
-msgstr "��%s��%s������\n"
+msgid "WARNING: unable to refresh key %s via %s: %s\n"
+msgstr "*警告*: 鍵%sを%s経由で回復できません: %s\n"
#, c-format
-msgid "searching for \"%s\" from %s server %s\n"
-msgstr "��%s�ɤ�%s�����С�%s���鸡��\n"
+msgid "refreshing 1 key from %s\n"
+msgstr "1本の鍵を%sから回復\n"
#, c-format
-msgid "searching for \"%s\" from %s\n"
-msgstr "��%s�ɤ򥵡��С�%s���鸡��\n"
+msgid "refreshing %d keys from %s\n"
+msgstr "%d本の鍵を%sから回復\n"
-msgid "no keyserver action!\n"
-msgstr "�������С�����������󤬤���ޤ���!\n"
+msgid "no keyserver known (use option --keyserver)\n"
+msgstr "既知の鍵サーバがありません (オプション--keyserverを使いましょう)\n"
#, c-format
-msgid "WARNING: keyserver handler from a different version of GnuPG (%s)\n"
-msgstr "�ٹ�: ���� (%s) ��GnuPG�θ������С����ϥ�ɥ�\n"
-
-msgid "keyserver did not send VERSION\n"
-msgstr "�������С���VERSION���������ޤ���Ǥ���\n"
-
-msgid "no keyserver known (use option --keyserver)\n"
-msgstr "���Τθ������С�������ޤ��� (���ץ����--keyserver��Ȥ��ޤ��礦)\n"
+msgid "key \"%s\" not found on keyserver\n"
+msgstr "鍵\"%s\"が鍵サーバに見つかりません\n"
-msgid "external keyserver calls are not supported in this build\n"
-msgstr "���ι��ۤǤϡ������������С��θƽФ��ϥ��ݡ��Ȥ��Ƥ��ޤ���\n"
+msgid "key not found on keyserver\n"
+msgstr "鍵が鍵サーバに見つかりません\n"
#, c-format
-msgid "no handler for keyserver scheme '%s'\n"
-msgstr "�������С������������%s���ѤΥϥ�ɥ餬����ޤ���\n"
+msgid "requesting key %s from %s server %s\n"
+msgstr "鍵%sを%sからサーバ%sに要求\n"
#, c-format
-msgid "action '%s' not supported with keyserver scheme '%s'\n"
-msgstr "����%s�פϡ��������С������������%s�פǥ��ݡ��Ȥ���Ƥ��ޤ���\n"
-
-#, fuzzy, c-format
-msgid "%s does not support handler version %d\n"
-msgstr "gpgkeys_%s�ϡ��ϥ�ɥ�%d�Ǥ򥵥ݡ��Ȥ��ޤ���\n"
-
-msgid "keyserver timed out\n"
-msgstr "�������С��Υ����ॢ����\n"
-
-msgid "keyserver internal error\n"
-msgstr "�������С����������顼\n"
+msgid "requesting key %s from %s\n"
+msgstr "鍵%sを%sに要求\n"
#, c-format
-msgid "keyserver communications error: %s\n"
-msgstr "�������С��̿����顼: %s\n"
+msgid "skipped \"%s\": %s\n"
+msgstr "\"%s\"をスキップしました: %s\n"
#, c-format
-msgid "\"%s\" not a key ID: skipping\n"
-msgstr "��%s�ɸ�ID�ǤϤ���ޤ���: �ȤФ��ޤ�\n"
+msgid "sending key %s to %s server %s\n"
+msgstr "鍵%sを%sサーバ%sへ送信\n"
#, c-format
-msgid "WARNING: unable to refresh key %s via %s: %s\n"
-msgstr "�ٹ�: ��%s��%s��ͳ�Dz����Ǥ��ޤ���: %s\n"
+msgid "sending key %s to %s\n"
+msgstr "鍵%sを%sへ送信\n"
#, c-format
-msgid "refreshing 1 key from %s\n"
-msgstr "1�ܤθ���%s�������\n"
+msgid "requesting key from '%s'\n"
+msgstr "鍵を'%s'から要求\n"
#, c-format
-msgid "refreshing %d keys from %s\n"
-msgstr "%d�ܤθ���%s�������\n"
-
-#, fuzzy, c-format
msgid "WARNING: unable to fetch URI %s: %s\n"
-msgstr "�ٹ�: ��%s��%s��ͳ�Dz����Ǥ��ޤ���: %s\n"
-
-#, fuzzy, c-format
-msgid "WARNING: unable to parse URI %s\n"
-msgstr "�ٹ�: ��%s��%s��ͳ�Dz����Ǥ��ޤ���: %s\n"
+msgstr "*警告*: URI %s からデータを取れません: %s\n"
#, c-format
msgid "weird size for an encrypted session key (%d)\n"
-msgstr "�Ѥ�Ĺ���ΰŹ沽�Ѥߥ��å���� (%d)\n"
+msgstr "変な長さの暗号化済みセッション鍵 (%d)\n"
#, c-format
msgid "%s encrypted session key\n"
-msgstr "%s �Ź沽�Ѥߥ��å����\n"
+msgstr "%s 暗号化済みセッション鍵\n"
#, c-format
msgid "passphrase generated with unknown digest algorithm %d\n"
-msgstr "̤�Τ����󥢥르�ꥺ����������줿�ѥ��ե졼�� %d\n"
+msgstr "不明のダイジェスト・アルゴリズムで生成されたパスフレーズ %d\n"
#, c-format
msgid "public key is %s\n"
-msgstr "��������%s�Ǥ�\n"
+msgstr "公開鍵は%sです\n"
msgid "public key encrypted data: good DEK\n"
-msgstr "�������ˤ��Ź沽�Ѥߥǡ���: ������DEK�Ǥ�\n"
+msgstr "公開鍵による暗号化済みデータ: 正しいDEKです\n"
#, c-format
msgid "encrypted with %u-bit %s key, ID %s, created %s\n"
-msgstr "%u-�ӥå�%s��, ID %s, ����%s�˰Ź沽����ޤ���\n"
+msgstr "%u-ビット%s鍵, ID %s, 日付%sに暗号化されました\n"
#, c-format
msgid " \"%s\"\n"
-msgstr " ��%s��\n"
+msgstr " \"%s\"\n"
#, c-format
msgid "encrypted with %s key, ID %s\n"
-msgstr "%s��, ID %s�ǰŹ沽����ޤ���\n"
+msgstr "%s鍵, ID %sで暗号化されました\n"
#, c-format
msgid "public key decryption failed: %s\n"
-msgstr "������������˼��Ԥ��ޤ���: %s\n"
+msgstr "公開鍵の復号に失敗しました: %s\n"
#, c-format
msgid "encrypted with %lu passphrases\n"
-msgstr "%lu �ĤΥѥ��ե졼���ǰŹ沽\n"
+msgstr "%lu 個のパスフレーズで暗号化\n"
msgid "encrypted with 1 passphrase\n"
-msgstr "1 �ĤΥѥ��ե졼���ǰŹ沽\n"
+msgstr "1 個のパスフレーズで暗号化\n"
#, c-format
msgid "assuming %s encrypted data\n"
-msgstr "%s�Ź沽�Ѥߥǡ�������\n"
+msgstr "%s暗号化済みデータを仮定\n"
#, c-format
msgid "IDEA cipher unavailable, optimistically attempting to use %s instead\n"
-msgstr "IDEA�Ź�ˡ��������ǽ�ʤΤǡ���ŷŪ�Ǥ���%s�����Ѥ��褦�Ȥ��Ƥ��ޤ�\n"
+msgstr "IDEA暗号方式は利用不能なので、楽天的ですが%sで代用しようとしています\n"
msgid "decryption okay\n"
-msgstr "���������\n"
+msgstr "復号に成功\n"
msgid "WARNING: message was not integrity protected\n"
-msgstr "�ٹ�: ��å������δ��������ݸ��Ƥ��ޤ���\n"
+msgstr "*警告*: メッセージの完全性は保護されていません\n"
msgid "WARNING: encrypted message has been manipulated!\n"
-msgstr "�ٹ�: �Ź沽���줿��å������ϲ��⤵��Ƥ��ޤ�!\n"
+msgstr "*警告*: 暗号化されたメッセージは改竄されています!\n"
#, c-format
msgid "cleared passphrase cached with ID: %s\n"
-msgstr ""
+msgstr "保持したパスフレーズをクリアしました ID: %s\n"
#, c-format
msgid "decryption failed: %s\n"
-msgstr "����˼��Ԥ��ޤ���: %s\n"
+msgstr "復号に失敗しました: %s\n"
msgid "NOTE: sender requested \"for-your-eyes-only\"\n"
-msgstr "����: �����Ԥϡ����ˤ���ɤ褦�˵��Ƥ��ޤ�\n"
+msgstr "*注意*: 送信者は\"極秘とする\"ように求めています\n"
#, c-format
msgid "original file name='%.*s'\n"
-msgstr "���Υե�����̾='%.*s'\n"
+msgstr "元のファイル名='%.*s'\n"
msgid "WARNING: multiple plaintexts seen\n"
-msgstr ""
+msgstr "*警告*: 複数のプレインテクストが見られます\n"
msgid "standalone revocation - use \"gpg --import\" to apply\n"
-msgstr "��Ω��������gpg --import�ɤ�Ȥä�Ŭ�Ѥ��Ƥ�������\n"
+msgstr "スタンドアロン失効 - \"gpg --import\"を使って適用してください\n"
-#, fuzzy
msgid "no signature found\n"
-msgstr "��%s�ɤ������������̾"
+msgstr "署名が見つかりません\n"
msgid "signature verification suppressed\n"
-msgstr "��̾�θ��ڤ��ά\n"
+msgstr "署名の検証を省略\n"
-#, fuzzy
msgid "can't handle this ambiguous signature data\n"
-msgstr "����¿�Ž�̾�ϼ�갷���ޤ���\n"
+msgstr "このあいまいな署名データは取り扱えません\n"
#, c-format
msgid "Signature made %s\n"
-msgstr "%s�˻ܤ��줿��̾\n"
+msgstr "%sに施された署名\n"
#, c-format
msgid " using %s key %s\n"
-msgstr " %s��%s�����\n"
+msgstr " %s鍵%sを使用\n"
#, c-format
msgid "Signature made %s using %s key ID %s\n"
-msgstr "%s��%s��ID %s�ǻܤ��줿��̾\n"
+msgstr "%sに%s鍵ID %sで施された署名\n"
msgid "Key available at: "
-msgstr "�ʲ��˸�������ޤ�: "
+msgstr "以下に鍵があります: "
#, c-format
msgid "BAD signature from \"%s\""
-msgstr "��%s�ɤ���� ������ ��̾"
+msgstr "\"%s\"からの*不正な*署名"
#, c-format
msgid "Expired signature from \"%s\""
-msgstr "��%s�ɤ���δ����ڤ�ν�̾"
+msgstr "\"%s\"からの期限切れの署名"
#, c-format
msgid "Good signature from \"%s\""
-msgstr "��%s�ɤ������������̾"
+msgstr "\"%s\"からの正しい署名"
msgid "[uncertain]"
-msgstr "[�Գ���]"
+msgstr "[不確定]"
#, c-format
msgid " aka \"%s\""
-msgstr " ��̾��%s��"
+msgstr " 別名\"%s\""
#, c-format
msgid "Signature expired %s\n"
-msgstr "�����ڤ�ν�̾ %s\n"
+msgstr "期限切れの署名 %s\n"
#, c-format
msgid "Signature expires %s\n"
-msgstr "���ν�̾��%s����λ�Ǥ�\n"
+msgstr "この署名は%sで期限切れとなります\n"
#, c-format
msgid "%s signature, digest algorithm %s\n"
-msgstr "%s��̾�����󥢥르�ꥺ�� %s\n"
+msgstr "%s署名、ダイジェスト・アルゴリズム %s\n"
msgid "binary"
-msgstr "�Х��ʥ꡼"
+msgstr "バイナリ"
msgid "textmode"
-msgstr "�ƥ����ȥ⡼��"
+msgstr "テキストモード"
msgid "unknown"
-msgstr "̤�Τ�"
+msgstr "不明の"
#, c-format
msgid "Can't check signature: %s\n"
-msgstr "��̾�򸡺��Ǥ��ޤ���: %s\n"
+msgstr "署名を検査できません: %s\n"
msgid "not a detached signature\n"
-msgstr "ʬΥ��̾�Ǥ���ޤ���\n"
+msgstr "分離署名でありません\n"
msgid ""
"WARNING: multiple signatures detected. Only the first will be checked.\n"
-msgstr "�ٹ�: ¿�Ž�̾�θ��С��ǽ�Τ�Τ����������ޤ���\n"
+msgstr "*警告*: 多重署名の検出。最初のものだけ検査します。\n"
#, c-format
msgid "standalone signature of class 0x%02x\n"
-msgstr "���饹0x%02x����Ω��̾\n"
+msgstr "クラス0x%02xのスタンドアロン署名\n"
msgid "old style (PGP 2.x) signature\n"
-msgstr "�Ť����� (PGP 2.x) �ν�̾\n"
+msgstr "古い形式 (PGP 2.x) の署名\n"
msgid "invalid root packet detected in proc_tree()\n"
-msgstr "proc_tree() �����̵���ʥ롼�ȡ��ѥ��åȤ򸡽Ф��ޤ���\n"
+msgstr "proc_tree() の中に無効なルート・パケットを検出しました\n"
#, c-format
msgid "fstat of '%s' failed in %s: %s\n"
-msgstr "��%s�פ�fstat��%s�Ǽ��Ԥ��ޤ���: %s\n"
+msgstr "'%s'のfstatが%sで失敗しました: %s\n"
#, c-format
msgid "fstat(%d) failed in %s: %s\n"
-msgstr "fstat(%d)��%s�Ǽ��Ԥ��ޤ���: %s\n"
+msgstr "fstat(%d)が%sで失敗しました: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "WARNING: using experimental public key algorithm %s\n"
-msgstr "�������Υ��르�ꥺ��%d�ϡ���갷���ޤ���\n"
+msgstr "*警告*: 実験的公開鍵アルゴリズム%sを使用します\n"
-#, fuzzy
msgid "WARNING: Elgamal sign+encrypt keys are deprecated\n"
-msgstr "�ٹ�: ���󥢥르�ꥺ�� %s (%d) �ζ�����������ͤ���������Ω���ޤ�\n"
+msgstr "*警告*: Elgamal署名+暗号化鍵は廃止されています\n"
-#, fuzzy, c-format
+#, c-format
msgid "WARNING: using experimental cipher algorithm %s\n"
-msgstr "̤�����ΰŹ楢�르�ꥺ��Ǥ�"
+msgstr "*警告*: 実験的暗号アルゴリズム %s を使用します\n"
-#, fuzzy, c-format
+#, c-format
msgid "WARNING: using experimental digest algorithm %s\n"
-msgstr "%s��̾�����󥢥르�ꥺ�� %s\n"
+msgstr "*警告*: 実験的ダイジェスト・アルゴリズム %sを使用\n"
-#, fuzzy, c-format
+#, c-format
msgid "WARNING: digest algorithm %s is deprecated\n"
-msgstr "�ٹ�: ���󥢥르�ꥺ�� %s (%d) �ζ�����������ͤ���������Ω���ޤ�\n"
-
-msgid "the IDEA cipher plugin is not present\n"
-msgstr "IDEA�Ź�ˡ�Υץ饰���󤬤���ޤ���\n"
-
-#, fuzzy, c-format
-msgid "please see %s for more information\n"
-msgstr "�ܺ٤�http://www.gnupg.org/faq.html������������\n"
+msgstr "*警告*: ダイジェスト・アルゴリズム %s は廃止されています\n"
#, c-format
msgid "%s:%d: deprecated option \"%s\"\n"
-msgstr "%s:%d: ����뤵��Ƥ��륪�ץ�����%s��\n"
+msgstr "%s:%d: 廃止されたオプション\"%s\"\n"
#, c-format
msgid "WARNING: \"%s\" is a deprecated option\n"
-msgstr "�ٹ�:��%s�ɤϡ�����뤵��Ƥ��륪�ץ����Ǥ�\n"
+msgstr "*警告*: \"%s\"は、廃止されたオプションです\n"
#, c-format
msgid "please use \"%s%s\" instead\n"
-msgstr "��%s%s�ɤ�����˻ȤäƤ�������\n"
+msgstr "\"%s%s\"を代わりに使ってください\n"
-#, fuzzy, c-format
+#, c-format
msgid "WARNING: \"%s\" is a deprecated command - do not use it\n"
-msgstr "�ٹ�:��%s�ɤϡ�����뤵��Ƥ��륪�ץ����Ǥ�\n"
+msgstr "*警告*: \"%s\" は、廃止されているコマンドです - 使わないでください\n"
#, c-format
msgid "%s:%u: obsolete option \"%s\" - it has no effect\n"
msgstr ""
+"%s:%u: \"%s\"は、使われなくなったオプションです - なんの効果もありません\n"
-#, fuzzy, c-format
+#, c-format
msgid "WARNING: \"%s\" is an obsolete option - it has no effect\n"
-msgstr "�ٹ�:��%s�ɤϡ�����뤵��Ƥ��륪�ץ����Ǥ�\n"
+msgstr ""
+"*警告*: \"%s\"は、使われなくなったオプションです - なんの効果もありません\n"
msgid "Uncompressed"
-msgstr "̵����"
+msgstr "無圧縮"
#. TRANSLATORS: See doc/TRANSLATE about this string.
msgid "uncompressed|none"
-msgstr "̵����|�ʤ�"
+msgstr "無圧縮|なし"
#, c-format
msgid "this message may not be usable by %s\n"
-msgstr "���Υ�å������ϡ�%s�Ǥϻ��ѤǤ��ޤ���\n"
+msgstr "このメッセージは、%sでは使用できません\n"
#, c-format
msgid "ambiguous option '%s'\n"
-msgstr "�����ޤ��ʥ��ץ�����%s��\n"
+msgstr "あいまいなオプション'%s'\n"
#, c-format
msgid "unknown option '%s'\n"
-msgstr "̤�ΤΥ��ץ�����%s��\n"
+msgstr "不明のオプション'%s'\n"
+
+msgid "ECDSA public key is expected to be in SEC encoding multiple of 8 bits\n"
+msgstr "ECDSAの公開鍵は8ビットの倍数のSECエンコーディングを期待します\n"
#, c-format
msgid "File '%s' exists. "
-msgstr "�ե������%s�פϴ���¸�ߤ��ޤ���"
+msgstr "ファイル'%s'は既に存在します。"
msgid "Overwrite? (y/N) "
-msgstr "��񤭤��ޤ���? (y/N) "
+msgstr "上書きしますか? (y/N) "
#, c-format
msgid "%s: unknown suffix\n"
-msgstr "%s: ̤�Τγ�ĥ��\n"
+msgstr "%s: 不明の拡張子\n"
msgid "Enter new filename"
-msgstr "�������ե�����̾�����Ϥ��Ƥ�������"
+msgstr "新しいファイル名を入力してください"
msgid "writing to stdout\n"
-msgstr "ɸ����Ϥ˽񤭹��ߤޤ�\n"
+msgstr "標準出力に書き込みます\n"
#, c-format
msgid "assuming signed data in '%s'\n"
-msgstr "��̾���줿�ǡ�������%s�פˤ�������ꤷ�ޤ�\n"
+msgstr "署名されたデータが'%s'にあると想定します\n"
#, c-format
msgid "new configuration file '%s' created\n"
-msgstr "�����������ե������%s�פ��Ǥ��ޤ���\n"
+msgstr "新しいコンフィグレーション・ファイル'%s'ができました\n"
#, c-format
msgid "WARNING: options in '%s' are not yet active during this run\n"
-msgstr "�ٹ�: ��%s�פΥ��ץ����ϵ�ư���Ƥ���֡�ͭ���ˤʤ�ޤ���\n"
+msgstr "*警告*: '%s'のオプションはこの実行では、まだ有効になりません\n"
#, c-format
msgid "can't handle public key algorithm %d\n"
-msgstr "�������Υ��르�ꥺ��%d�ϡ���갷���ޤ���\n"
+msgstr "公開鍵のアルゴリズム%dは、取り扱えません\n"
msgid "WARNING: potentially insecure symmetrically encrypted session key\n"
-msgstr "�ٹ�: ����Ū�˷��ݤ��оΰŹ沽���å���󸰤Ǥ�\n"
+msgstr "*警告*: 潜在的にセキュアでない共通鍵暗号化セッション鍵です\n"
#, c-format
msgid "subpacket of type %d has critical bit set\n"
-msgstr "��%d�β��̥ѥ��åȤ˥���ƥ����롦�ӥåȤ�ȯ��\n"
+msgstr "型%dの下位パケットにクリティカル・ビットを発見\n"
+
+#, c-format
+msgid "problem with the agent: %s\n"
+msgstr "エージェントに問題: %s\n"
#, c-format
msgid " (main key ID %s)"
-msgstr " (�縰ID %s)"
+msgstr " (主鍵ID %s)"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Please enter the passphrase to unlock the secret key for the OpenPGP "
"certificate:\n"
@@ -4228,35 +4238,57 @@ msgid ""
"%u-bit %s key, ID %s,\n"
"created %s%s.\n"
msgstr ""
-"���Υ桼��������̩���Υ��å���������ˤϥѥ��ե졼��������ޤ�:\n"
+"OpenPGP証明書の秘密鍵のロックを解除するためにパスフレーズを入力してくださ"
+"い:\n"
"\"%.*s\"\n"
-"%u�ӥå�%s��, ID %s�������դ�%s%s\n"
+"%uビット %s 鍵, ID %s,\n"
+"作成日付 %s%s。\n"
msgid "Enter passphrase\n"
-msgstr "�ѥ��ե졼��������\n"
+msgstr "パスフレーズを入力\n"
msgid "cancelled by user\n"
-msgstr "�桼�����ˤ���ä�\n"
-
-#, fuzzy, c-format
-msgid "problem with the agent: %s\n"
-msgstr "����������Ȥ˾㳲: ����������Ȥ�0x%lx���ֵ�\n"
+msgstr "ユーザによる取消し\n"
#, c-format
msgid ""
"You need a passphrase to unlock the secret key for\n"
"user: \"%s\"\n"
msgstr ""
-"���Υ桼��������̩���Υ��å���������ˤ�\n"
-"�ѥ��ե졼��������ޤ�:��%s��\n"
+"次のユーザの秘密鍵のロックを解除するには\n"
+"パスフレーズがいります:\"%s\"\n"
#, c-format
msgid "%u-bit %s key, ID %s, created %s"
-msgstr "%u�ӥå�%s��, ID %s�������դ�%s"
+msgstr "%uビット%s鍵, ID %s作成日付は%s"
#, c-format
msgid " (subkey on main key ID %s)"
-msgstr " (�縰ID %s ������)"
+msgstr " (主鍵ID %s の副鍵)"
+
+msgid ""
+"Please enter the passphrase to unlock the secret key for the OpenPGP "
+"certificate:"
+msgstr ""
+"OpenPGP証明書の秘密鍵のロックを解除するためにパスフレーズを入力してください:"
+
+msgid ""
+"Please enter the passphrase to import the secret key for the OpenPGP "
+"certificate:"
+msgstr ""
+"OpenPGP証明書の秘密鍵をインポートするためにパスフレーズを入力してください:"
+
+#, c-format
+msgid ""
+"%s\n"
+"\"%.*s\"\n"
+"%u-bit %s key, ID %s,\n"
+"created %s%s.\n"
+msgstr ""
+"%s\n"
+"\"%.*s\"\n"
+"%uビット%s鍵, ID %s,\n"
+"作成日付 %s%s.\n"
msgid ""
"\n"
@@ -4266,343 +4298,339 @@ msgid ""
"Keeping the image close to 240x288 is a good size to use.\n"
msgstr ""
"\n"
-"���ʤ��Υե���ID�˻Ȥ���������Ƥ���������������JPEG�ե�����Ǥ���ɬ\n"
-"�פ�����ޤ��������ϸ������Ȥ��ä���˳�Ǽ����롢�Ȥ������Ȥ�ǰƬ�ˤ�\n"
-"���Ƥ����ޤ��礦���⤷�礭�ʼ̿���Ȥ��ȡ����ʤ��θ���Ʊ�ͤ��礭���ʤ�\n"
-"�ޤ�! 240x288���餤�ˤ����ޤ��礭���β����ϡ��Ȥ��褤�Ǥ��礦��\n"
+"あなたのフォトIDに使う画像を決めてください。画像はJPEGファイルである必\n"
+"要があります。画像は公開鍵といっしょに格納される、ということを念頭にお\n"
+"いておきましょう。もし大きな写真を使うと、あなたの鍵も同様に大きくなり\n"
+"ます! 240x288くらいにおさまる大きさの画像は、使いよいでしょう。\n"
msgid "Enter JPEG filename for photo ID: "
-msgstr "�ե���ID�Ѥ�JPEG�ե�����̾�����Ϥ��Ƥ�������: "
+msgstr "フォトID用のJPEGファイル名を入力してください: "
#, c-format
msgid "unable to open JPEG file '%s': %s\n"
-msgstr "JPEG�ե������%s�פ������ޤ���: %s\n"
+msgstr "JPEGファイル'%s'が開けません: %s\n"
#, c-format
msgid "This JPEG is really large (%d bytes) !\n"
-msgstr "����JPEG�ϡ��������礭�� (%d�Х���) !\n"
+msgstr "このJPEGは、本当に大きい (%dバイト) !\n"
msgid "Are you sure you want to use it? (y/N) "
-msgstr "�����˻Ȥ������Ǥ���? (y/N) "
+msgstr "本当に使いたいですか? (y/N) "
#, c-format
msgid "'%s' is not a JPEG file\n"
-msgstr "��%s�פϡ�JPEG�ե�����ǤϤ���ޤ���\n"
+msgstr "'%s'は、JPEGファイルではありません\n"
msgid "Is this photo correct (y/N/q)? "
-msgstr "���μ̿����������Ǥ��� (y/N/q)? "
+msgstr "この写真は正しいですか (y/N/q)? "
msgid "unable to display photo ID!\n"
-msgstr "�ե���ID��ɽ����ǽ!\n"
+msgstr "フォトIDが表示不能!\n"
msgid "No reason specified"
-msgstr "��ͳ�ϻ��ꤵ��Ƥ��ޤ���"
+msgstr "理由は指定されていません"
msgid "Key is superseded"
-msgstr "�����Ȥ꤫��äƤ��ޤ�"
+msgstr "鍵がとりかわっています"
msgid "Key has been compromised"
-msgstr "�����ѥ����ޤ���"
+msgstr "鍵(の信頼性)が損なわれています"
msgid "Key is no longer used"
-msgstr "���Ϥ⤦���ѤǤ�"
+msgstr "鍵はもはや使われていません"
msgid "User ID is no longer valid"
-msgstr "�桼����ID���⤦ͭ���Ǥ���ޤ���"
+msgstr "ユーザIDがもはや有効でありません"
msgid "reason for revocation: "
-msgstr "������ͳ: "
+msgstr "失効理由: "
msgid "revocation comment: "
-msgstr "����������: "
+msgstr "失効のコメント: "
+#. TRANSLATORS: These are the allowed answers in lower and
+#. uppercase. Below you will find the matching strings which
+#. should be translated accordingly and the letter changed to
+#. match the one in the answer string.
+#.
+#. i = please show me more information
+#. m = back to the main menu
+#. s = skip this key
+#. q = quit
+#.
msgid "iImMqQsS"
msgstr "iImMqQsS"
msgid "No trust value assigned to:\n"
-msgstr "�����٤����ꤵ��Ƥ��ޤ���:\n"
+msgstr "信用度が指定されていません:\n"
#, c-format
msgid " aka \"%s\"\n"
-msgstr " ��̾��%s��\n"
+msgstr " 別名\"%s\"\n"
msgid ""
"How much do you trust that this key actually belongs to the named user?\n"
msgstr ""
-"���θ������Υ桼������ʤΤ��ܿͤΤ�Τ��ɤ������ɤ줯�餤���ѤǤ��ޤ���?\n"
+"この鍵がこのユーザをなのる本人のものかどうか、どれくらい信用できますか?\n"
#, c-format
msgid " %d = I don't know or won't say\n"
-msgstr " %d = �Τ�ʤ����ޤ��ϲ��Ȥ�����ʤ�\n"
+msgstr " %d = 知らない、または何とも言えない\n"
#, c-format
msgid " %d = I do NOT trust\n"
-msgstr " %d = ���Ѥ� �ʤ�\n"
+msgstr " %d = 信用し ない\n"
#, c-format
msgid " %d = I trust ultimately\n"
-msgstr " %d = ����Ū�˿��Ѥ���\n"
+msgstr " %d = 絶対的に信用する\n"
msgid " m = back to the main menu\n"
-msgstr " m = �᡼�󡦥�˥塼�����\n"
+msgstr " m = メーン・メニューに戻る\n"
msgid " s = skip this key\n"
-msgstr " s = ���θ��ϤȤФ�\n"
+msgstr " s = この鍵はとばす\n"
msgid " q = quit\n"
-msgstr " q = ��λ\n"
+msgstr " q = 終了\n"
#, c-format
msgid ""
"The minimum trust level for this key is: %s\n"
"\n"
-msgstr "���θ��κǾ����ѥ�٥�: %s\n"
+msgstr "この鍵の最小信用レベル: %s\n"
msgid "Your decision? "
-msgstr "���ʤ��η����? "
+msgstr "あなたの決定は? "
msgid "Do you really want to set this key to ultimate trust? (y/N) "
-msgstr "�����ˤ��θ�������Ū�˿��Ѥ��ޤ���? (y/N) "
+msgstr "本当にこの鍵を絶対的に信用しますか? (y/N) "
msgid "Certificates leading to an ultimately trusted key:\n"
-msgstr "����Ū�˿��Ѥ������ؤξ�����:\n"
+msgstr "絶対的に信用した鍵への証明書:\n"
#, c-format
msgid "%s: There is no assurance this key belongs to the named user\n"
-msgstr "%s: ���θ����������ܿͤΤ�ΤǤ��롢�Ȥ���������������ޤ���\n"
+msgstr "%s: この鍵が本当に本人のものである、という兆候が、ありません\n"
#, c-format
msgid "%s: There is limited assurance this key belongs to the named user\n"
-msgstr "%s: ���θ����������ܿͤΤ�ΤǤ��롢�Ȥ�����������������������ޤ���\n"
+msgstr "%s: この鍵が本当に本人のものである、という兆候が、少ししかありません\n"
msgid "This key probably belongs to the named user\n"
-msgstr "���θ��Ϥ��֤��ܿͤΤ�ΤǤ�\n"
+msgstr "この鍵はたぶん本人のものです\n"
msgid "This key belongs to us\n"
-msgstr "���θ��ϼ�ʬ�Τ�ΤǤ�\n"
+msgstr "この鍵は自分のものです\n"
msgid ""
"It is NOT certain that the key belongs to the person named\n"
"in the user ID. If you *really* know what you are doing,\n"
"you may answer the next question with yes.\n"
msgstr ""
-"���θ��ϡ����Υ桼����ID��ʤΤ��ܿͤΤ�Τ��ɤ����ο��Ǥ�\n"
-"�ޤ��󡣺�����Ԥ����Ȥ�������ˡ����򤷤Ƥ��ʤ����ˤϡ�\n"
-"���μ���ˤ�no�������Ƥ���������\n"
+"この鍵は、このユーザIDをなのる本人のものかどうか確信でき\n"
+"ません。今から行うことを*本当に*理解していない場合には、\n"
+"次の質問にはnoと答えてください。\n"
msgid "Use this key anyway? (y/N) "
-msgstr "����Ǥ⤳�θ���Ȥ��ޤ���? (y/N) "
+msgstr "それでもこの鍵を使いますか? (y/N) "
msgid "WARNING: Using untrusted key!\n"
-msgstr "�ٹ�: ���ѤǤ��ʤ�����ȤäƤ��ޤ�!\n"
+msgstr "*警告*: 信用できない鍵を使っています!\n"
msgid "WARNING: this key might be revoked (revocation key not present)\n"
-msgstr "�ٹ�: ���θ��ϼ������줿�褦�Ǥ� (���������Ժ�)\n"
+msgstr "*警告*: この鍵は失効されたようです (失効鍵は不在)\n"
msgid "WARNING: This key has been revoked by its designated revoker!\n"
-msgstr "�ٹ�: ���θ��ϻ�̾�����Ԥˤ�äƼ�������Ƥ��ޤ�!\n"
+msgstr "*警告*: この鍵は指名失効者によって失効されています!\n"
msgid "WARNING: This key has been revoked by its owner!\n"
-msgstr "�ٹ�: ���θ��Ͻ�ͭ�Ԥˤ�äƼ�������Ƥ��ޤ�!\n"
+msgstr "*警告*: この鍵は所有者によって失効されています!\n"
msgid " This could mean that the signature is forged.\n"
-msgstr " ��̾����ʪ�ʤ��Ȥ⤢�롢�Ȥ������ȤǤ���\n"
+msgstr " 署名が偽物なこともある、ということです。\n"
msgid "WARNING: This subkey has been revoked by its owner!\n"
-msgstr "�ٹ�: ���������Ͻ�ͭ�Ԥˤ�äƼ�������Ƥ��ޤ�!\n"
+msgstr "*警告*: この副鍵は所有者によって失効されています!\n"
msgid "Note: This key has been disabled.\n"
-msgstr "����: ���θ��ϻ��Ѷػߤ����ꤵ��Ƥ��ޤ���\n"
+msgstr "注意: この鍵は使用禁止に設定されています。\n"
#, c-format
msgid "Note: Verified signer's address is '%s'\n"
-msgstr ""
+msgstr "注意: 確認された署名者のアドレスは'%s'です\n"
#, c-format
msgid "Note: Signer's address '%s' does not match DNS entry\n"
-msgstr ""
+msgstr "注意: 署名者のアドレス'%s'がDNSのエントリと一致しません\n"
msgid "trustlevel adjusted to FULL due to valid PKA info\n"
-msgstr ""
+msgstr "PKA情報が有効のため、信用レベルがFULLに調整されました\n"
msgid "trustlevel adjusted to NEVER due to bad PKA info\n"
-msgstr ""
+msgstr "PKA情報が無効のため、信用レベルがNEVERに調整されました\n"
msgid "Note: This key has expired!\n"
-msgstr "����: ���θ�����λ�Ǥ�!\n"
+msgstr "注意: この鍵は期限切れです!\n"
msgid "WARNING: This key is not certified with a trusted signature!\n"
-msgstr "�ٹ�: ���θ��Ͽ��ѤǤ����̾�Ǿ�������Ƥ��ޤ���!\n"
+msgstr "*警告*: この鍵は信用できる署名で証明されていません!\n"
msgid ""
" There is no indication that the signature belongs to the owner.\n"
-msgstr " ���ν�̾����ͭ�ԤΤ�Τ��ɤ����θ��ڼ��ʤ�����ޤ���\n"
+msgstr " この署名が所有者のものかどうかの検証手段がありません。\n"
msgid "WARNING: We do NOT trust this key!\n"
-msgstr "�ٹ�: ���θ��Ͽ��ѤǤ��� ����!\n"
+msgstr "*警告*: この鍵は信用できません!\n"
msgid " The signature is probably a FORGERY.\n"
-msgstr " ���ν�̾�Ϥ����餯 ��ʪ �Ǥ���\n"
+msgstr " この署名はおそらく 偽物 です。\n"
msgid ""
"WARNING: This key is not certified with sufficiently trusted signatures!\n"
-msgstr "�ٹ�: ���θ��Ͻ�ʬ�˿��ѤǤ����̾�Ǿ�������Ƥ��ޤ���!\n"
+msgstr "*警告*: この鍵は十分に信用できる署名で証明されていません!\n"
msgid " It is not certain that the signature belongs to the owner.\n"
-msgstr " ���ν�̾����ͭ�ԤΤ�Τ��ɤ����ο��Ǥ��ޤ���\n"
+msgstr " この署名が所有者のものかどうか確信できません。\n"
#, c-format
msgid "%s: skipped: %s\n"
-msgstr "%s: �����å�: %s\n"
+msgstr "%s: スキップ: %s\n"
+
+#, c-format
+msgid "%s: skipped: public key is disabled\n"
+msgstr "%s: スキップ: 公開鍵は使用禁止です\n"
#, c-format
msgid "%s: skipped: public key already present\n"
-msgstr "%s: �����å�: �������Ϥ⤦����ޤ�\n"
+msgstr "%s: スキップ: 公開鍵はもうあります\n"
msgid "You did not specify a user ID. (you may use \"-r\")\n"
-msgstr "�桼����ID����ꤷ�Ƥ��ޤ��� (��-r�ɤ�Ȥ��ޤ��礦) ��\n"
+msgstr "ユーザIDを指定していません (\"-r\"を使いましょう) 。\n"
msgid "Current recipients:\n"
-msgstr "������:\n"
+msgstr "今の受取人:\n"
msgid ""
"\n"
"Enter the user ID. End with an empty line: "
msgstr ""
"\n"
-"�桼����ID�����ϡ����Ԥǽ�λ: "
+"ユーザIDを入力。空行で終了: "
msgid "No such user ID.\n"
-msgstr "���Υ桼����ID�Ϥ���ޤ���\n"
+msgstr "そのユーザIDはありません。\n"
msgid "skipped: public key already set as default recipient\n"
-msgstr "�����å�: �������ϴ���μ���ͤȤ��Ƥ⤦����ѤߤǤ�\n"
+msgstr "スキップ: 公開鍵はデフォルトの受取人としてもう設定済みです\n"
msgid "Public key is disabled.\n"
-msgstr "�������ϻ��ѶػߤǤ���\n"
+msgstr "公開鍵は使用禁止です。\n"
msgid "skipped: public key already set\n"
-msgstr "�����å�: �������Ϥ⤦����ѤߤǤ�\n"
+msgstr "スキップ: 公開鍵はもう設定済みです\n"
#, c-format
msgid "unknown default recipient \"%s\"\n"
-msgstr "����μ���͡�%s�ɤ����Ĥ���ޤ���\n"
-
-#, c-format
-msgid "%s: skipped: public key is disabled\n"
-msgstr "%s: �����å�: �������ϻ��ѶػߤǤ�\n"
+msgstr "デフォルトの受取人\"%s\"が不明です\n"
msgid "no valid addressees\n"
-msgstr "ͭ���ʰ��褬����ޤ���\n"
+msgstr "有効な宛先がありません\n"
-#, fuzzy, c-format
+#, c-format
msgid "Note: key %s has no %s feature\n"
-msgstr "��%s�ˤϥ桼����ID������ޤ���\n"
+msgstr "注意: 鍵%sには %s の機能がありません\n"
-#, fuzzy, c-format
+#, c-format
msgid "Note: key %s has no preference for %s\n"
-msgstr "��%s�ˤϥ桼����ID������ޤ���\n"
+msgstr "注意: 鍵%sには%sに対する優先指定がありません\n"
msgid "data not saved; use option \"--output\" to save it\n"
msgstr ""
-"�ǡ�������¸����Ƥ��ޤ���\n"
-"��¸����ˤϡ�--output�ɥ��ץ�����ȤäƤ�������\n"
+"データは保存されていません。保存には\"--output\"オプションを使ってください\n"
msgid "Detached signature.\n"
-msgstr "ʬΥ��̾��\n"
+msgstr "分離署名。\n"
msgid "Please enter name of data file: "
-msgstr "�ǡ������ե������̾��������: "
+msgstr "データ・ファイルの名前を入力: "
msgid "reading stdin ...\n"
-msgstr "ɸ�����Ϥ���ɽФ��� ...\n"
+msgstr "標準入力より読み込み中 ...\n"
msgid "no signed data\n"
-msgstr "��̾���줿�ǡ���������ޤ���\n"
+msgstr "署名されたデータがありません\n"
#, c-format
msgid "can't open signed data '%s'\n"
-msgstr "��̾���줿�ǡ�����%s�פ������ޤ���\n"
+msgstr "署名されたデータ'%s'が開けません\n"
-#, fuzzy, c-format
+#, c-format
msgid "can't open signed data fd=%d: %s\n"
-msgstr "��̾���줿�ǡ�����%s�פ������ޤ���\n"
+msgstr "署名されたデータ fd=%d が開けません: %s\n"
#, c-format
msgid "anonymous recipient; trying secret key %s ...\n"
-msgstr "ƿ̾�μ�����ѤǤ�����̩��%s���ޤ� ...\n"
+msgstr "匿名の受取人用です。秘密鍵%sを試します ...\n"
msgid "okay, we are the anonymous recipient.\n"
-msgstr "��λ��ƿ̾�μ�����ѤǤ���\n"
+msgstr "終了。匿名の受取人用です。\n"
msgid "old encoding of the DEK is not supported\n"
-msgstr "�켰��DEK���ϡ����ݡ��Ȥ��Ƥ��ޤ���\n"
+msgstr "DEKの旧式エンコーディングは、サポートしていません\n"
#, c-format
msgid "cipher algorithm %d%s is unknown or disabled\n"
-msgstr "�Ź楢�르�ꥺ��%d%s��̤�Τ����ѶػߤǤ�\n"
+msgstr "暗号アルゴリズム%d%sは不明か使用禁止です\n"
#, c-format
msgid "WARNING: cipher algorithm %s not found in recipient preferences\n"
-msgstr "�ٹ�: �Ź楢�르�ꥺ��%s�ϼ���ͤ����������äƤ��ޤ���\n"
+msgstr "*警告*: 暗号アルゴリズム%sは受取人の優先指定に入っていません\n"
#, c-format
msgid "NOTE: secret key %s expired at %s\n"
-msgstr "����: ��̩��%s��%s����λ�Ǥ�\n"
+msgstr "*注意*: 秘密鍵%sは%sで期限切れとなります\n"
msgid "NOTE: key has been revoked"
-msgstr "����: ���ϼ����ѤߤǤ�"
+msgstr "*注意*: 鍵は失効済みです"
#, c-format
msgid "build_packet failed: %s\n"
-msgstr "build_packet �˼��Ԥ��ޤ���: %s\n"
+msgstr "build_packet に失敗しました: %s\n"
#, c-format
msgid "key %s has no user IDs\n"
-msgstr "��%s�ˤϥ桼����ID������ޤ���\n"
+msgstr "鍵%sにはユーザIDがありません\n"
msgid "To be revoked by:\n"
-msgstr "������:\n"
+msgstr "失効者:\n"
msgid "(This is a sensitive revocation key)\n"
-msgstr "(����ϡ��ǥꥱ���Ȥʼ������Ǥ�)\n"
+msgstr "(これは、機密指定の失効鍵です)\n"
msgid "Create a designated revocation certificate for this key? (y/N) "
-msgstr "���θ��ˤ��������̾�����������������ޤ���? (y/N) "
+msgstr "この鍵にたいする指名失効証明書を作成しますか? (y/N) "
msgid "ASCII armored output forced.\n"
-msgstr "ASCII�������Ϥ������ޤ���\n"
+msgstr "ASCII外装出力を強制します。\n"
#, c-format
msgid "make_keysig_packet failed: %s\n"
-msgstr "make_keysig_packet �˼��Ԥ��ޤ���: %s\n"
+msgstr "make_keysig_packet に失敗しました: %s\n"
msgid "Revocation certificate created.\n"
-msgstr "����������������\n"
+msgstr "失効証明書を作成。\n"
#, c-format
msgid "no revocation keys found for \"%s\"\n"
-msgstr "��%s���Ѥμ����������Ĥ���ޤ���\n"
+msgstr "\"%s\"用の失効鍵が見つかりません\n"
#, c-format
msgid "secret key \"%s\" not found: %s\n"
-msgstr "��̩����%s�ɤ����Ĥ���ޤ���: %s\n"
-
-#, c-format
-msgid "no corresponding public key: %s\n"
-msgstr "�б����������������ޤ���: %s\n"
-
-msgid "public key does not match secret key!\n"
-msgstr "����������̩�����ȹ礷�ޤ���!\n"
+msgstr "秘密鍵\"%s\"が見つかりません: %s\n"
msgid "Create a revocation certificate for this key? (y/N) "
-msgstr "���θ��ˤ������뼺���������������ޤ���? (y/N) "
-
-msgid "unknown protection algorithm\n"
-msgstr "̤�Τ��ݸ�르�ꥺ��Ǥ�\n"
-
-msgid "NOTE: This key is not protected!\n"
-msgstr "����: ���θ����ݸ��Ƥ��ޤ���!\n"
+msgstr "この鍵にたいする失効証明書を作成しますか? (y/N) "
msgid ""
"Revocation certificate created.\n"
@@ -4613,1126 +4641,958 @@ msgid ""
"your media become unreadable. But have some caution: The print system of\n"
"your machine might store the data and make it available to others!\n"
msgstr ""
-"�����������������ޤ�����\n"
+"失効証明書を作成しました。\n"
"\n"
-"���Ĥ���ʤ��褦�����Τ˰�ư���Ƥ����������⤷��뤬���ξ�����ؤ�\n"
-"��������������ȡ������ĤϤ��ʤ��θ���Ȥ��ʤ����뤳�Ȥ��Ǥ��ޤ���\n"
-"���Τ��ɽФ���ǽ�ˤʤä����������ơ����ξ��������������ݴɤ����\n"
-"�������Ǥ����������������դ������������ʤ��Υޥ���ΰ��������ƥ�ϡ�\n"
-"����Ǥ⸫������˥ǡ����򤪤����Ȥ�����ޤ�!\n"
+"みつからないように隠せるような媒体に移してください。もし_悪者_がこの証明書へ"
+"の\n"
+"アクセスを得ると、あなたの鍵を使えなくすることができます。\n"
+"媒体が読出し不能になった場合に備えて、この証明書を印刷して保管するのが賢明で"
+"す。\n"
+"しかし、ご注意ください。あなたのマシンの印字システムは、他の人がアクセスでき"
+"る\n"
+"場所にデータをおくことがあります!\n"
msgid "Please select the reason for the revocation:\n"
-msgstr "��������ͳ�����򤷤Ƥ�������:\n"
+msgstr "失効の理由を選択してください:\n"
msgid "Cancel"
-msgstr "����󥻥�"
+msgstr "キャンセル"
#, c-format
msgid "(Probably you want to select %d here)\n"
-msgstr "(�����ǤϤ��֤�%d�����Ӥޤ�)\n"
+msgstr "(ここではたぶん%dを選びたいでしょう)\n"
msgid "Enter an optional description; end it with an empty line:\n"
-msgstr "ͽ�������������ϡ����Ԥǽ�λ:\n"
+msgstr "予備の説明を入力。空行で終了:\n"
#, c-format
msgid "Reason for revocation: %s\n"
-msgstr "������ͳ: %s\n"
+msgstr "失効理由: %s\n"
msgid "(No description given)\n"
-msgstr "(�����Ϥ���ޤ���)\n"
+msgstr "(説明はありません)\n"
msgid "Is this okay? (y/N) "
-msgstr "��������Ǥ���? (y/N) "
-
-msgid "secret key parts are not available\n"
-msgstr "��̩��ʬ�������ޤ���\n"
-
-#, c-format
-msgid "protection algorithm %d%s is not supported\n"
-msgstr "�ݸ�르�ꥺ��%d%s�ϥ��ݡ��Ȥ��Ƥ��ޤ���\n"
-
-#, c-format
-msgid "protection digest %d is not supported\n"
-msgstr "�ݸ�����%d�ϥ��ݡ��Ȥ��Ƥ��ޤ���\n"
-
-msgid "Invalid passphrase; please try again"
-msgstr "̵���ʥѥ��ե졼���Ǥ��������Ϥ��Ƥ�������"
-
-#, c-format
-msgid "%s ...\n"
-msgstr "%s ...\n"
-
-msgid "WARNING: Weak key detected - please change passphrase again.\n"
-msgstr "�ٹ�: �夤���򸡽Ф��ޤ������ѥ��ե졼�����ѹ����Ƥ���������\n"
-
-msgid "generating the deprecated 16-bit checksum for secret key protection\n"
-msgstr "����뤵�줿16�ӥåȤΥ����å��������̩�����ݸ������\n"
+msgstr "よろしいですか? (y/N) "
msgid "weak key created - retrying\n"
-msgstr "�夤�����Ǥ��ޤ��� - �Ƽ¹�\n"
+msgstr "弱い鍵ができました - 再実行\n"
#, c-format
msgid "cannot avoid weak key for symmetric cipher; tried %d times!\n"
-msgstr "�оΰŹ�ˡ�μ夤������򤹤뤳�Ȥ��Ǥ��ޤ���%d���ߤޤ���!\n"
-
-msgid "DSA requires the hash length to be a multiple of 8 bits\n"
-msgstr ""
+msgstr "共通鍵暗号方式の弱い鍵を回避することができません。%d回試みました!\n"
#, c-format
-msgid "DSA key %s uses an unsafe (%u bit) hash\n"
-msgstr ""
+msgid "%s key %s uses an unsafe (%zu bit) hash\n"
+msgstr "%s 鍵 %s は安全でない(%zuビット)ハッシュを使用しています\n"
#, c-format
-msgid "DSA key %s requires a %u bit or larger hash\n"
+msgid "%s key %s requires a %zu bit or larger hash (hash is %s)\n"
msgstr ""
+"%s鍵%sは%zuビットあるいはより大きいハッシュを必要とします(今のハッシュは%s)\n"
msgid "WARNING: signature digest conflict in message\n"
-msgstr "�ٹ�: ��̾�����󤬡���å�������̷�⤷�ޤ�\n"
+msgstr "*警告*: 署名のダイジェストが、メッセージと衝突します\n"
#, c-format
msgid "WARNING: signing subkey %s is not cross-certified\n"
-msgstr "�ٹ�: ��̾����%s�ϡ���߾����Ǥ���ޤ���\n"
+msgstr "*警告*: 署名副鍵%sは、相互証明されてません\n"
#, c-format
msgid "WARNING: signing subkey %s has an invalid cross-certification\n"
-msgstr "�ٹ�: ̵������߾���������̾����%s�ˤ���ޤ�\n"
+msgstr "*警告*: 無効な相互証明が、署名副鍵%sにあります\n"
#, c-format
msgid "public key %s is %lu second newer than the signature\n"
-msgstr "������%s�ϡ���̾��%lu�����Ǥ�\n"
+msgstr "公開鍵%sは、署名よりも%lu秒新しいものです\n"
#, c-format
msgid "public key %s is %lu seconds newer than the signature\n"
-msgstr "������%s�ϡ���̾��%lu�����Ǥ�\n"
+msgstr "公開鍵%sは、署名よりも%lu秒新しいものです\n"
#, c-format
msgid ""
"key %s was created %lu second in the future (time warp or clock problem)\n"
-msgstr "��%s��%lu��̤��ˤǤ��ޤ��� (����ι�Ԥ����פξ㳲�Ǥ��礦)\n"
+msgstr "鍵%sは%lu秒未来にできました (時間歪曲か時計の障害でしょう)\n"
#, c-format
msgid ""
"key %s was created %lu seconds in the future (time warp or clock problem)\n"
-msgstr "��%s��%lu��̤��ˤǤ��ޤ��� (����ι�Ԥ����פξ㳲�Ǥ��礦)\n"
+msgstr "鍵%sは%lu秒未来にできました (時間歪曲か時計の障害でしょう)\n"
#, c-format
msgid "NOTE: signature key %s expired %s\n"
-msgstr "����: ��̾��%s��%s����λ�Ǥ�\n"
+msgstr "*注意*: 署名鍵%sは%sに期限切れとなります\n"
-#, fuzzy, c-format
+#, c-format
msgid "NOTE: signature key %s has been revoked\n"
-msgstr "����: ���ϼ����ѤߤǤ�"
+msgstr "*注意*: 鍵 %s は失効済みです\n"
#, c-format
msgid "assuming bad signature from key %s due to an unknown critical bit\n"
-msgstr "̤�ΤΥ���ƥ����롦�ӥåȤˤ�ꡢ��%s�ν�̾�������Ȥߤʤ��ޤ�\n"
+msgstr "不明のクリティカル・ビットにより、鍵%sの署名を不正とみなします\n"
#, c-format
msgid "key %s: no subkey for subkey revocation signature\n"
-msgstr "��%s: ����������̾�ˤ�����������������ޤ���\n"
+msgstr "鍵%s: 副鍵失効署名にたいする副鍵がありません\n"
#, c-format
msgid "key %s: no subkey for subkey binding signature\n"
-msgstr "��%s: �����б��ؤν�̾�ˤ�����������������ޤ���\n"
+msgstr "鍵%s: 副鍵対応への署名にたいする副鍵がありません\n"
#, c-format
msgid "WARNING: unable to %%-expand notation (too large). Using unexpanded.\n"
-msgstr "�ٹ�: ɽ����%%��ĥ��ǽ (�礭����)�����ĥ����ѡ�\n"
+msgstr "*警告*: 表記を%%拡張不能 (大きすぎ)。拡張せずに使用。\n"
#, c-format
msgid ""
"WARNING: unable to %%-expand policy URL (too large). Using unexpanded.\n"
-msgstr "�ٹ�: �ݥꥷ��URL��%%��ĥ��ǽ (�礭����)�����ĥ����ѡ�\n"
+msgstr "*警告*: ポリシURLを%%拡張不能 (大きすぎ)。拡張せずに使用。\n"
#, c-format
msgid ""
"WARNING: unable to %%-expand preferred keyserver URL (too large). Using "
"unexpanded.\n"
-msgstr "�ٹ�: �����������С�URL��%%��ĥ��ǽ (�礭����)�����ĥ����ѡ�\n"
+msgstr "*警告*: 優先鍵サーバURLを%%拡張不能 (大きすぎ)。拡張せずに使用。\n"
#, c-format
msgid "checking created signature failed: %s\n"
-msgstr "�������줿��̾�θ����˼��Ԥ��ޤ���: %s\n"
+msgstr "作成された署名の検査に失敗しました: %s\n"
#, c-format
msgid "%s/%s signature from: \"%s\"\n"
-msgstr "%s/%s��̾����̾��:��%s��\n"
+msgstr "%s/%s署名。署名者:\"%s\"\n"
msgid "you can only detach-sign with PGP 2.x style keys while in --pgp2 mode\n"
-msgstr "--pgp2�⡼�ɤǤϡ�PGP 2.x�����θ���ʬΥ��̾�Ǥ�������Ǥ�\n"
+msgstr "--pgp2モードでは、PGP 2.x形式の鍵で分離署名できるだけです\n"
#, c-format
msgid ""
"WARNING: forcing digest algorithm %s (%d) violates recipient preferences\n"
-msgstr "�ٹ�: ���󥢥르�ꥺ�� %s (%d) �ζ�����������ͤ���������Ω���ޤ�\n"
+msgstr ""
+"*警告*: ダイジェスト・アルゴリズム %s (%d) の強制が、受取人の優先指定と対立し"
+"ます\n"
msgid "signing:"
-msgstr "��̾:"
+msgstr "署名:"
msgid "you can only clearsign with PGP 2.x style keys while in --pgp2 mode\n"
-msgstr "--pgp2�⡼�ɤǤ�PGP 2.x�����θ��ǥ��ꥢ��̾�����Ǥ��ޤ���\n"
+msgstr "--pgp2モードではPGP 2.x形式の鍵でクリア・テクスト署名しかできません\n"
#, c-format
msgid "%s encryption will be used\n"
-msgstr "%s�Ź沽����Ѥ��ޤ�\n"
+msgstr "%s暗号化を使用します\n"
msgid "key is not flagged as insecure - can't use it with the faked RNG!\n"
msgstr ""
-"���ݤǤ���Ȥ����ե饰�����ˤ����ꤵ��Ƥ��ޤ���\n"
-"��ʪ��������ҤȤϤ��ä���˻Ȥ��ޤ���!\n"
+"セキュアでないというフラグが鍵には設定されていません。\n"
+"偽物乱数生成器とはいっしょに使えません!\n"
#, c-format
msgid "skipped \"%s\": duplicated\n"
-msgstr "��%s�ɤ�ȤФ��ޤ�: ��ʣ\n"
-
-#, c-format
-msgid "skipped \"%s\": %s\n"
-msgstr "��%s�ɤ�ȤФ��ޤ�: %s\n"
+msgstr "\"%s\"をスキップします: 重複\n"
msgid "skipped: secret key already present\n"
-msgstr "�����å�: ��̩���Ϥ⤦����ޤ�\n"
+msgstr "スキップ: 秘密鍵はもうあります\n"
msgid "this is a PGP generated Elgamal key which is not secure for signatures!"
-msgstr "�����PGP����������Elgamal���ǡ���̾�Ѥˤϰ����ǤϤ���ޤ���!"
+msgstr "これはPGPの生成したElgamal鍵で、署名用には安全ではありません!"
#, c-format
msgid "trust record %lu, type %d: write failed: %s\n"
-msgstr "���ѥ쥳����%lu, ��%d: ����ߤ˼��Ԥ��ޤ���: %s\n"
+msgstr "信用レコード%lu, 型%d: 書き込みに失敗しました: %s\n"
#, c-format
msgid ""
"# List of assigned trustvalues, created %s\n"
"# (Use \"gpg --import-ownertrust\" to restore them)\n"
msgstr ""
-"# Sitei sareta sin'youdo itiran %s\n"
-"# (\"gpg --import-ownertrust\" wo tukatte hukkyuu dekimasu)\n"
+"# 指定された信頼度の一覧です 作成日時: %s\n"
+"# (\"gpg --import-ownertrust\" で復旧することができます)\n"
#, c-format
msgid "error in '%s': %s\n"
-msgstr "��%s�פǥ��顼: %s\n"
+msgstr "'%s'でエラー: %s\n"
msgid "line too long"
-msgstr "�Ԥ�Ĺ�����ޤ�"
+msgstr "行が長すぎます"
msgid "colon missing"
-msgstr "�����󤬤���ޤ���"
+msgstr "コロンがありません"
msgid "invalid fingerprint"
-msgstr "̵���ʻ���"
+msgstr "無効なフィンガー・プリント"
msgid "ownertrust value missing"
-msgstr "��ͭ�Կ����٤�����ޤ���"
+msgstr "所有者信用度がありません"
#, c-format
msgid "error finding trust record in '%s': %s\n"
-msgstr "��%s�פǿ��ѥ쥳���ɤθ������顼: %s\n"
+msgstr "'%s'で信用レコードの検索エラー: %s\n"
#, c-format
msgid "read error in '%s': %s\n"
-msgstr "��%s�פ��ɽФ����顼: %s\n"
+msgstr "'%s'で読み込みエラー: %s\n"
#, c-format
msgid "trustdb: sync failed: %s\n"
-msgstr "���ѥǡ����١���: Ʊ���˼��Ԥ��ޤ���: %s\n"
+msgstr "信用データベース: 同期に失敗しました: %s\n"
#, c-format
msgid "trustdb rec %lu: lseek failed: %s\n"
-msgstr "���ѥǡ����١��� �쥳����%lu: �������˼��Ԥ��ޤ���: %s\n"
+msgstr "信用データベース レコード%lu: シークに失敗しました: %s\n"
#, c-format
msgid "trustdb rec %lu: write failed (n=%d): %s\n"
-msgstr "���ѥǡ����١��� �쥳����%lu: ����ߤ˼��Ԥ��ޤ��� (n=%d): %s\n"
+msgstr "信用データベース レコード%lu: 書き込みに失敗しました (n=%d): %s\n"
msgid "trustdb transaction too large\n"
-msgstr "���ѥǡ����١����Υȥ�󥶥�������礭�����ޤ�\n"
+msgstr "信用データベースのトランザクションが大きすぎます\n"
#, c-format
msgid "can't access '%s': %s\n"
-msgstr "��%s�פ˥��������Ǥ��ޤ���: %s\n"
+msgstr "'%s'にアクセスできません: %s\n"
#, c-format
msgid "%s: directory does not exist!\n"
-msgstr "%s: �ǥ��쥯�ȥ꡼������ޤ���!\n"
+msgstr "%s: ディレクトリがありません!\n"
#, c-format
msgid "can't create lock for '%s'\n"
-msgstr "��%s�פΥ��å�������Ǥ��ޤ���\n"
+msgstr "'%s'のロックを作成できません\n"
#, c-format
msgid "can't lock '%s'\n"
-msgstr "��%s�פ����å��Ǥ��ޤ���\n"
+msgstr "'%s'がロックできません\n"
#, c-format
msgid "%s: failed to create version record: %s"
-msgstr "%s: �С�����󡦥쥳���ɤκ����˼��Ԥ��ޤ���: %s"
+msgstr "%s: バージョン・レコードの作成に失敗しました: %s"
#, c-format
msgid "%s: invalid trustdb created\n"
-msgstr "%s: ̵���ʿ��ѥǡ����١��������\n"
+msgstr "%s: 無効な信用データベースを作成\n"
#, c-format
msgid "%s: trustdb created\n"
-msgstr "%s: ���ѥǡ����١������Ǥ��ޤ���\n"
+msgstr "%s: 信用データベースができました\n"
msgid "NOTE: trustdb not writable\n"
-msgstr "����: ���ѥǡ����١��������������ǽ�Ǥ�\n"
+msgstr "*注意*: 信用データベースが、書き込み不能です\n"
#, c-format
msgid "%s: invalid trustdb\n"
-msgstr "%s: ̵���ʿ��ѥǡ����١���\n"
+msgstr "%s: 無効な信用データベース\n"
#, c-format
msgid "%s: failed to create hashtable: %s\n"
-msgstr "%s: �ϥå���ɽ�κ����˼��Ԥ��ޤ���: %s\n"
+msgstr "%s: ハッシュ表の作成に失敗しました: %s\n"
#, c-format
msgid "%s: error updating version record: %s\n"
-msgstr "%s: �С�����󡦥쥳���ɤι������顼: %s\n"
+msgstr "%s: バージョン・レコードの更新エラー: %s\n"
#, c-format
msgid "%s: error reading version record: %s\n"
-msgstr "%s: �С�����󡦥쥳���ɤ��ɽФ����顼: %s\n"
+msgstr "%s: バージョン・レコードの読み込みエラー: %s\n"
#, c-format
msgid "%s: error writing version record: %s\n"
-msgstr "%s: �С�����󡦥쥳���ɤν���ߥ��顼: %s\n"
+msgstr "%s: バージョン・レコードの書き込みエラー: %s\n"
#, c-format
msgid "trustdb: lseek failed: %s\n"
-msgstr "���ѥǡ����١���: �������˼��Ԥ��ޤ���: %s\n"
+msgstr "信用データベース: シークに失敗しました: %s\n"
#, c-format
msgid "trustdb: read failed (n=%d): %s\n"
-msgstr "���ѥǡ����١���: �ɽФ��˼��Ԥ��ޤ��� (n=%d): %s\n"
+msgstr "信用データベース: 読み込みに失敗しました (n=%d): %s\n"
#, c-format
msgid "%s: not a trustdb file\n"
-msgstr "%s: ���ѥǡ����١������ե�����ǤϤ���ޤ���\n"
+msgstr "%s: 信用データベース・ファイルではありません\n"
#, c-format
msgid "%s: version record with recnum %lu\n"
-msgstr "%s: �쥳�����ֹ�%lu�֤ΥС�����󡦥쥳����\n"
+msgstr "%s: レコード番号%lu番のバージョン・レコード\n"
#, c-format
msgid "%s: invalid file version %d\n"
-msgstr "%s: ̵���ʥե����롦�С������%d\n"
+msgstr "%s: 無効なファイル・バージョン%d\n"
#, c-format
msgid "%s: error reading free record: %s\n"
-msgstr "%s: �����쥳���ɤ��ɽФ����顼: %s\n"
+msgstr "%s: 空きレコードの読み込みエラー: %s\n"
#, c-format
msgid "%s: error writing dir record: %s\n"
-msgstr "%s: �ǥ��쥯�ȥ꡼���쥳���ɤν���ߥ��顼: %s\n"
+msgstr "%s: ディレクトリー・レコードの書き込みエラー: %s\n"
#, c-format
msgid "%s: failed to zero a record: %s\n"
-msgstr "%s: �쥳���ɤν�����˼��Ԥ��ޤ���: %s\n"
+msgstr "%s: レコードの初期化に失敗しました: %s\n"
#, c-format
msgid "%s: failed to append a record: %s\n"
-msgstr "%s: �쥳���ɤ��ɲä˼��Ԥ��ޤ���: %s\n"
+msgstr "%s: レコードの追加に失敗しました: %s\n"
-#, fuzzy
msgid "Error: The trustdb is corrupted.\n"
-msgstr "%s: ���ѥǡ����١������Ǥ��ޤ���\n"
+msgstr "エラー: 信用データベースが壊れています。\n"
#, c-format
msgid "can't handle text lines longer than %d characters\n"
-msgstr "%dʸ���ʾ��Ĺ���Υƥ����ȹԤϡ���갷���ޤ���\n"
+msgstr "%d文字以上の長さのテキスト行は、取り扱えません\n"
#, c-format
msgid "input line longer than %d characters\n"
-msgstr "���ϹԤ�Ĺ����%dʸ����Ķ���Ƥ��ޤ�\n"
+msgstr "入力行の長さが%d文字を超えています\n"
#, c-format
msgid "'%s' is not a valid long keyID\n"
-msgstr "��%s�פϡ�ͭ�����緿��ID�Ǥ���ޤ���\n"
+msgstr "'%s'は、有効な大型鍵IDでありません\n"
#, c-format
msgid "key %s: accepted as trusted key\n"
-msgstr "��%s: ���Ѥ��븰�Ȥ��Ƽ������ޤ���\n"
+msgstr "鍵%s: 信用する鍵として受理しました\n"
#, c-format
msgid "key %s occurs more than once in the trustdb\n"
-msgstr "��%s�����ѥǡ����١�����ʣ������ޤ�\n"
+msgstr "鍵%sが信用データベースに複数あります\n"
#, c-format
msgid "key %s: no public key for trusted key - skipped\n"
-msgstr "��%s: ���Ѥ���븰�θ�����������ޤ��� - �ȤФ��ޤ�\n"
+msgstr "鍵%s: 信用される鍵の公開鍵がありません - スキップします\n"
#, c-format
msgid "key %s marked as ultimately trusted\n"
-msgstr "��%s������Ū�˿��Ѥ���褦��Ͽ���ޤ���\n"
+msgstr "鍵%sを絶対的に信用するよう記録しました\n"
#, c-format
msgid "trust record %lu, req type %d: read failed: %s\n"
-msgstr "���ѥ쥳����%lu, �ꥯ�����ȷ�%d: �ɽФ��˼��Ԥ��ޤ���: %s\n"
+msgstr "信用レコード%lu, リクエスト型%d: 読み込みに失敗しました: %s\n"
#, c-format
msgid "trust record %lu is not of requested type %d\n"
-msgstr "���ѥ쥳����%lu���׵ᤵ�줿��%d�ǤϤ���ޤ���\n"
+msgstr "信用レコード%luが要求された型%dではありません\n"
msgid "You may try to re-create the trustdb using the commands:\n"
-msgstr ""
+msgstr "trustdbを下記のコマンドで再生成することを試すことができます:\n"
msgid "If that does not work, please consult the manual\n"
-msgstr ""
+msgstr "もし、それがうまくいかなかったら、マニュアルをご覧ください\n"
#, c-format
msgid "unable to use unknown trust model (%d) - assuming %s trust model\n"
-msgstr "̤�Το��ѥ�ǥ� (%d) �ϻȤ��ޤ��� - %s���ѥ�ǥ����\n"
+msgstr "不明の信用モデル (%d) は使えません - %s信用モデルを仮定\n"
#, c-format
msgid "using %s trust model\n"
-msgstr "%s���ѥ�ǥ�����\n"
-
+msgstr "%s信用モデルを使用\n"
+
+#. TRANSLATORS: these strings are similar to those in
+#. trust_value_to_string(), but are a fixed length. This is needed to
+#. make attractive information listings where columns line up
+#. properly. The value "10" should be the length of the strings you
+#. choose to translate to. This is the length in printable columns.
+#. It gets passed to atoi() so everything after the number is
+#. essentially a comment and need not be translated. Either key and
+#. uid are both NULL, or neither are NULL.
msgid "10 translator see trustdb.c:uid_trust_string_fixed"
-msgstr ""
+msgstr "10"
-#, fuzzy
msgid "[ revoked]"
-msgstr "����"
+msgstr "[ 失効 ]"
-#, fuzzy
msgid "[ expired]"
-msgstr "��λ"
+msgstr "[期限切れ]"
-#, fuzzy
msgid "[ unknown]"
-msgstr "̤�Τ�"
+msgstr "[ 不明 ]"
msgid "[ undef ]"
-msgstr ""
+msgstr "[ 未定義 ]"
-#, fuzzy
msgid "[marginal]"
-msgstr "��������"
+msgstr "[ギリギリ]"
msgid "[ full ]"
-msgstr ""
+msgstr "[ 充分 ]"
-#, fuzzy
msgid "[ultimate]"
-msgstr "����Ū"
+msgstr "[ 究極 ]"
msgid "undefined"
-msgstr "̤���"
+msgstr "未定義"
msgid "never"
-msgstr "̵����"
+msgstr "無期限"
msgid "marginal"
-msgstr "��������"
+msgstr "ギリギリ"
msgid "full"
-msgstr "����"
+msgstr "充分"
msgid "ultimate"
-msgstr "����Ū"
+msgstr "究極"
msgid "no need for a trustdb check\n"
-msgstr "���ѥǡ����١����θ����ϡ����פǤ�\n"
+msgstr "信用データベースの検査は、不要です\n"
#, c-format
msgid "next trustdb check due at %s\n"
-msgstr "����ο��ѥǡ����١��������ϡ�%s�Ǥ�\n"
+msgstr "次回の信用データベース検査は、%sです\n"
#, c-format
msgid "no need for a trustdb check with '%s' trust model\n"
-msgstr "���ѥ�ǥ��%s�פǿ��ѥǡ����١����θ����ϡ����פǤ�\n"
+msgstr "信用モデル'%s'で信用データベースの検査は、不要です\n"
#, c-format
msgid "no need for a trustdb update with '%s' trust model\n"
-msgstr "���ѥ�ǥ��%s�פǿ��ѥǡ����١����ι����ϡ����פǤ�\n"
+msgstr "信用モデル'%s'で信用データベースの更新は、不要です\n"
#, c-format
msgid "public key %s not found: %s\n"
-msgstr "������%s�����Ĥ���ޤ���: %s\n"
+msgstr "公開鍵%sが見つかりません: %s\n"
msgid "please do a --check-trustdb\n"
-msgstr "--check-trustdb��¹Ԥ��Ƥ�������\n"
+msgstr "--check-trustdbを実行してください\n"
msgid "checking the trustdb\n"
-msgstr "���ѥǡ����١����θ���\n"
+msgstr "信用データベースの検査\n"
#, c-format
msgid "%d keys processed (%d validity counts cleared)\n"
-msgstr "%d�ܤθ������ (����%d�ܤ�ͭ�������򥯥ꥢ)\n"
+msgstr "%d本の鍵を処理 (うち%d本の有効性数をクリア)\n"
msgid "no ultimately trusted keys found\n"
-msgstr "����Ū�˿��Ѥ��븰�����Ĥ���ޤ���\n"
+msgstr "絶対的に信用する鍵が見つかりません\n"
#, c-format
msgid "public key of ultimately trusted key %s not found\n"
-msgstr "����Ū�˿��Ѥ��븰%s�θ����������Ĥ���ޤ���\n"
+msgstr "絶対的に信用する鍵%sの公開鍵が見つかりません\n"
#, c-format
msgid "%d marginal(s) needed, %d complete(s) needed, %s trust model\n"
-msgstr "�Ǿ��Ρ֤������٤ο��ѡ�%d���Ǿ��Ρ�����Ū���ѡ�%d��%s���ѥ�ǥ�\n"
+msgstr "'ギリギリの信用'%d、'全面的信用'%d、%s信用モデル\n"
#, c-format
msgid ""
"depth: %d valid: %3d signed: %3d trust: %d-, %dq, %dn, %dm, %df, %du\n"
-msgstr "����: %d ͭ����: %3d ��̾: %3d ����: %d-, %dq, %dn, %dm, %df, %du\n"
+msgstr "深さ: %d 有効性: %3d 署名: %3d 信用: %d-, %dq, %dn, %dm, %df, %du\n"
#, c-format
msgid "unable to update trustdb version record: write failed: %s\n"
msgstr ""
-"���ѥǡ����١����ΥС�����󡦥쥳���ɤ������Ǥ��ޤ���: ����ߤ˼��Ԥ��ޤ�"
-"��: %s\n"
+"信用データベースのバージョン・レコードが更新できません: 書き込みに失敗しまし"
+"た: %s\n"
msgid ""
"the signature could not be verified.\n"
"Please remember that the signature file (.sig or .asc)\n"
"should be the first file given on the command line.\n"
msgstr ""
-"��̾�򸡾ڤǤ��ޤ���Ǥ�������̾�ե�����\n"
-"(.sig��.asc)�����ޥ�ɹԤκǽ�Ǥʤ����\n"
-"�ʤ�ʤ����Ȥ�ǰƬ�ˤ����Ƥ���������\n"
+"署名を検証できませんでした。署名ファイル\n"
+"(.sigや.asc)がコマンド行の最初でなければ\n"
+"ならないことを念頭においてください。\n"
#, c-format
msgid "input line %u too long or missing LF\n"
-msgstr "���Ϥ�%u���ܤ�Ĺ�����뤫��LF���ʤ��褦�Ǥ�\n"
-
-#, fuzzy, c-format
-msgid "can't open fd %d: %s\n"
-msgstr "��%s�פ������ޤ���: %s\n"
-
-#, fuzzy
-msgid "argument not expected"
-msgstr "�������ޥ�ɤ϶ػߤ���Ƥ��ޤ�\n"
-
-#, fuzzy
-msgid "read error"
-msgstr "�ե�������ɽФ����顼"
-
-#, fuzzy
-msgid "keyword too long"
-msgstr "�Ԥ�Ĺ�����ޤ�"
-
-#, fuzzy
-msgid "missing argument"
-msgstr "̵���ʻ���Ǥ�"
-
-#, fuzzy
-msgid "invalid command"
-msgstr "�������ѥ��ޥ��\n"
-
-#, fuzzy
-msgid "invalid alias definition"
-msgstr "̵���ʰ������ץ����Ǥ�\n"
-
-#, fuzzy
-msgid "out of core"
-msgstr "̤����"
-
-#, fuzzy
-msgid "invalid option"
-msgstr "̵���ʰ������ץ����Ǥ�\n"
-
-#, c-format
-msgid "missing argument for option \"%.50s\"\n"
-msgstr ""
-
-#, c-format
-msgid "option \"%.50s\" does not expect an argument\n"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "invalid command \"%.50s\"\n"
-msgstr "̵���ʥ��ޥ�� (��help�ɤ򻲾�)\n"
-
-#, c-format
-msgid "option \"%.50s\" is ambiguous\n"
-msgstr ""
-
-#, c-format
-msgid "command \"%.50s\" is ambiguous\n"
-msgstr ""
-
-#, fuzzy
-msgid "out of core\n"
-msgstr "̤����"
-
-#, fuzzy, c-format
-msgid "invalid option \"%.50s\"\n"
-msgstr "̵���ʰ������ץ����Ǥ�\n"
-
-#, c-format
-msgid "you found a bug ... (%s:%d)\n"
-msgstr "�Х���ȯ�� ... (%s:%d)\n"
-
-#, fuzzy, c-format
-msgid "error loading '%s': %s\n"
-msgstr "��%s�פ��ɽФ����顼: %s\n"
-
-#, c-format
-msgid "conversion from '%s' to '%s' not available\n"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "iconv_open failed: %s\n"
-msgstr "��̾�˼��Ԥ��ޤ���: %s\n"
-
-#, fuzzy, c-format
-msgid "conversion from '%s' to '%s' failed: %s\n"
-msgstr "��%s�פ����%s�פؤΰ�ư�˼���: %s\n"
-
-#, fuzzy, c-format
-msgid "failed to create temporary file '%s': %s\n"
-msgstr "�ǥ��쥯�ȥ꡼��%s�פ������Ǥ��ޤ���: %s\n"
-
-#, fuzzy, c-format
-msgid "error writing to '%s': %s\n"
-msgstr "���ء�%s�פν���ߥ��顼: %s\n"
+msgstr "入力の%u行目が長すぎるか、LFがないようです\n"
#, c-format
-msgid "removing stale lockfile (created by %d)\n"
-msgstr ""
-
-msgid " - probably dead - removing lock"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "waiting for lock (held by %d%s) %s...\n"
-msgstr "��%s�פ���̩����񤭹��ߤޤ�\n"
-
-msgid "(deadlock?) "
-msgstr ""
-
-#, fuzzy, c-format
-msgid "lock '%s' not made: %s\n"
-msgstr "������%s�����Ĥ���ޤ���: %s\n"
-
-#, fuzzy, c-format
-msgid "waiting for lock %s...\n"
-msgstr "��%s�פ���̩����񤭹��ߤޤ�\n"
+msgid "can't open fd %d: %s\n"
+msgstr "fd %dが開けません: %s\n"
msgid "set debugging flags"
-msgstr ""
+msgstr "デバッグ・フラグを設定"
msgid "enable full debugging"
-msgstr ""
+msgstr "フル・デバッグを有効にする"
-#, fuzzy
msgid "Usage: kbxutil [options] [files] (-h for help)"
-msgstr "�Ȥ���: gpg [���ץ����] [�ե�����] (�إ�פ� -h)"
+msgstr "使い方: kbxutil [オプション] [ファイル] (ヘルプは -h)"
msgid ""
"Syntax: kbxutil [options] [files]\n"
-"list, export, import Keybox data\n"
+"List, export, import Keybox data\n"
msgstr ""
+"形式: kbxutil [オプション] [ファイル]\n"
+"Keyboxデータを一覧、エクスポート、インポート\n"
#, c-format
msgid "RSA modulus missing or not of size %d bits\n"
-msgstr ""
+msgstr "RSAの法(modulus)がないか、%dビットのものではありません\n"
-#, fuzzy, c-format
+#, c-format
msgid "RSA public exponent missing or larger than %d bits\n"
-msgstr "�����ؿ����礭�����ޤ� (32�ӥåȤ����)\n"
+msgstr "RSA公開指数が指定されていないか %d ビットより大きすぎます\n"
#, c-format
msgid "PIN callback returned error: %s\n"
-msgstr "PIN������Хå������顼���ᤷ�ޤ���: %s\n"
+msgstr "PINコールバックがエラーを戻しました: %s\n"
msgid "the NullPIN has not yet been changed\n"
-msgstr ""
+msgstr "NullPINが変更されていません\n"
-#, fuzzy
msgid "|N|Please enter a new PIN for the standard keys."
-msgstr "PIN [��̾��: %lu]"
+msgstr "|N|新しいPINを標準の鍵のために入力してください。"
-#, fuzzy
msgid "||Please enter the PIN for the standard keys."
-msgstr "PIN [��̾��: %lu]"
+msgstr "||PINを標準の鍵のために入力してください。"
-#, fuzzy
msgid "|NP|Please enter a new PIN Unblocking Code (PUK) for the standard keys."
-msgstr "PIN [��̾��: %lu]"
+msgstr "|NP|標準の鍵の新しいPIN Unblocking Code (PUK)を入力してください。"
-#, fuzzy
msgid "|P|Please enter the PIN Unblocking Code (PUK) for the standard keys."
-msgstr "PIN [��̾��: %lu]"
+msgstr "|P|標準の鍵のPIN Unblocking Code (PUK)を入力してください。"
msgid "|N|Please enter a new PIN for the key to create qualified signatures."
-msgstr ""
+msgstr "|N|新しいPINを認定署名を生成する鍵のために入力してください。"
msgid "||Please enter the PIN for the key to create qualified signatures."
-msgstr ""
+msgstr "||新しいPINを認定署名を生成する鍵のために入力してください。"
msgid ""
"|NP|Please enter a new PIN Unblocking Code (PUK) for the key to create "
"qualified signatures."
msgstr ""
+"|NP|認定署名の鍵のために新しいPINブロック解除コード(PUK)を入力してください。"
msgid ""
"|P|Please enter the PIN Unblocking Code (PUK) for the key to create "
"qualified signatures."
msgstr ""
+"|P|認定署名の鍵のために新しいPINブロック解除コード(PUK)を入力してください。"
#, c-format
msgid "error getting new PIN: %s\n"
-msgstr "������PIN�μ������顼: %s\n"
+msgstr "新しいPINの取得エラー: %s\n"
#, c-format
msgid "failed to store the fingerprint: %s\n"
-msgstr "������ݴɤ˼��Ԥ��ޤ���: %s\n"
+msgstr "指紋の保管に失敗しました: %s\n"
#, c-format
msgid "failed to store the creation date: %s\n"
-msgstr "���������ݴɤ˼��Ԥ��ޤ���: %s\n"
+msgstr "生成日の保管に失敗しました: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "reading public key failed: %s\n"
-msgstr "�����ɽФ��˼��Ԥ��ޤ���: %s\n"
+msgstr "公開鍵の読み込みに失敗しました: %s\n"
msgid "response does not contain the public key data\n"
-msgstr "�����˸������ǡ������ޤޤ�Ƥ��ޤ���\n"
+msgstr "応答に公開鍵データが含まれていません\n"
msgid "response does not contain the RSA modulus\n"
-msgstr "������RSA��ˡ(modulus)���ޤޤ�Ƥ��ޤ���\n"
+msgstr "応答にRSAの法(modulus)が含まれていません\n"
msgid "response does not contain the RSA public exponent\n"
-msgstr "������RSA�����ؿ����ޤޤ�Ƥ��ޤ���\n"
+msgstr "応答にRSA公開指数が含まれていません\n"
#, c-format
msgid "using default PIN as %s\n"
-msgstr ""
+msgstr "デフォルトPINを%sとして使います\n"
#, c-format
msgid "failed to use default PIN as %s: %s - disabling further default use\n"
msgstr ""
+"デフォルトのPIN %s を使うのに失敗しました: %s - これ以上デフォルトとしての使"
+"用を無効とします\n"
-#, fuzzy, c-format
+#, c-format
msgid "||Please enter the PIN%%0A[sigs done: %lu]"
-msgstr "PIN [��̾��: %lu]"
+msgstr "||PINを入力してください%%0A[署名数: %lu]"
-#, fuzzy
msgid "||Please enter the PIN"
-msgstr "PIN [��̾��: %lu]"
+msgstr "||PINを入力してください"
#, c-format
msgid "PIN for CHV%d is too short; minimum length is %d\n"
-msgstr "CHV%d��PIN��û�����ޤ�����û��%d\n"
+msgstr "CHV%dのPINが短すぎます。最短で%dです\n"
#, c-format
msgid "verify CHV%d failed: %s\n"
-msgstr "CHV%d�θ��ڤ˼��Ԥ��ޤ���: %s\n"
+msgstr "CHV%dの認証に失敗しました: %s\n"
msgid "error retrieving CHV status from card\n"
-msgstr "�����ɤ����CHV���֤θ����ǥ��顼\n"
+msgstr "カードからのCHVステイタス取得でエラー\n"
msgid "card is permanently locked!\n"
-msgstr "�����ɤ��ʵפ˥��å�����ޤ�!\n"
+msgstr "カードが永久にロックされます!\n"
#, c-format
msgid "%d Admin PIN attempts remaining before card is permanently locked\n"
-msgstr "�����ɤαʵץ��å�����%d��Admin PIN�����Ƥ��ޤ�\n"
+msgstr "カードの永久ロック前に%dのAdmin PINが試されています\n"
#. TRANSLATORS: Do not translate the "|A|" prefix but keep it at
#. the start of the string. Use %%0A to force a linefeed.
-#, fuzzy, c-format
+#, c-format
msgid "|A|Please enter the Admin PIN%%0A[remaining attempts: %d]"
-msgstr "PIN [��̾��: %lu]"
+msgstr "|A|管理者PINを入力してください%%0A[残り回数: %d]"
-#, fuzzy
msgid "|A|Please enter the Admin PIN"
-msgstr "PIN [��̾��: %lu]"
+msgstr "|A|管理者PINを入力してください"
msgid "access to admin commands is not configured\n"
-msgstr "�������ޥ�ɤؤΥ���������������ꤵ��Ƥ��ޤ���\n"
+msgstr "管理コマンドへのアクセスが設定されていません\n"
-#, fuzzy
msgid "||Please enter the Reset Code for the card"
-msgstr "PIN [��̾��: %lu]"
+msgstr "||カードのReset Codeを入力してください"
-#, fuzzy, c-format
+#, c-format
msgid "Reset Code is too short; minimum length is %d\n"
-msgstr "CHV%d��PIN��û�����ޤ�����û��%d\n"
+msgstr "Reset Codeが短すぎます。最短の長さは%dです。\n"
+#. TRANSLATORS: Do not translate the "|*|" prefixes but
+#. keep it at the start of the string. We need this elsewhere
+#. to get some infos on the string.
msgid "|RN|New Reset Code"
-msgstr ""
+msgstr "|RN|新しいReset Code"
-#, fuzzy
msgid "|AN|New Admin PIN"
-msgstr "|A|������Admin PIN"
+msgstr "|AN|新しい管理者PIN"
-#, fuzzy
msgid "|N|New PIN"
-msgstr "������PIN"
+msgstr "|N|新しいPIN"
+
+msgid "||Please enter the Admin PIN and New Admin PIN"
+msgstr "||管理者PINと新しい管理者PINを入力してください"
+
+msgid "||Please enter the PIN and New PIN"
+msgstr "||PINと新しいPINを入力してください"
msgid "error reading application data\n"
-msgstr "���ץꥱ������󡦥ǡ������ɽФ����顼\n"
+msgstr "アプリケーション・データの読み込みエラー\n"
msgid "error reading fingerprint DO\n"
-msgstr "����ǡ��������֥������Ȥ��ɽФ����顼\n"
+msgstr "フィンガー・プリントのデータ・オブジェクトの読み込みエラー\n"
msgid "key already exists\n"
-msgstr "���Ϥ⤦����ޤ�\n"
+msgstr "鍵はもうあります\n"
msgid "existing key will be replaced\n"
-msgstr "��¸�θ��ϸ򴹤���ޤ�\n"
+msgstr "既存の鍵は置き換えられます\n"
msgid "generating new key\n"
-msgstr "��������������\n"
+msgstr "新しい鍵を生成\n"
-#, fuzzy
msgid "writing new key\n"
-msgstr "��������������\n"
+msgstr "新しい鍵を書き込み\n"
msgid "creation timestamp missing\n"
-msgstr ""
+msgstr "作成時刻スタンプがありません\n"
#, c-format
msgid "RSA prime %s missing or not of size %d bits\n"
-msgstr ""
+msgstr "RSA素数 %s がありません、または%dビットのものではありません\n"
#, c-format
msgid "failed to store the key: %s\n"
-msgstr "�����ݴɤ˼��Ԥ��ޤ���: %s\n"
+msgstr "鍵の保管に失敗しました: %s\n"
msgid "please wait while key is being generated ...\n"
-msgstr "�������δ֡����Ԥ��������� ...\n"
+msgstr "鍵生成の間、お待ちください ...\n"
msgid "generating key failed\n"
-msgstr "���������˼��Ԥ��ޤ���\n"
+msgstr "鍵の生成に失敗しました\n"
#, c-format
msgid "key generation completed (%d seconds)\n"
-msgstr "������������λ���ޤ��� (%d��)\n"
+msgstr "鍵の生成が完了しました (%d秒)\n"
msgid "invalid structure of OpenPGP card (DO 0x93)\n"
-msgstr "OpenPGP�����ɤ�̵���ʹ�¤ (�ǡ��������֥������� 0x93)\n"
+msgstr "OpenPGPカードに無効な構造 (データ・オブジェクト 0x93)\n"
msgid "fingerprint on card does not match requested one\n"
-msgstr ""
+msgstr "カードのフィンガー・プリントが要求されたものと一致しません\n"
-#, fuzzy, c-format
+#, c-format
msgid "card does not support digest algorithm %s\n"
-msgstr "%s��̾�����󥢥르�ꥺ�� %s\n"
+msgstr "カードはダイジェスト・アルゴリズム %s をサポートしていません\n"
#, c-format
msgid "signatures created so far: %lu\n"
-msgstr "����ޤǤ˺������줿��̾: %lu\n"
+msgstr "これまでに作成された署名: %lu\n"
msgid ""
"verification of Admin PIN is currently prohibited through this command\n"
-msgstr ""
+msgstr "管理者PINの確認はこのコマンドでは今のところ禁止されています\n"
#, c-format
msgid "can't access %s - invalid OpenPGP card?\n"
-msgstr "%s�˥��������Ǥ��ޤ��� - ̵����OpenPGP������?\n"
+msgstr "%sにアクセスできません - 無効なOpenPGPカード?\n"
-msgid "||Please enter your PIN at the reader's keypad"
-msgstr ""
+msgid "||Please enter your PIN at the reader's pinpad"
+msgstr "||PINをリーダのピンパッドで入力してください"
#. TRANSLATORS: Do not translate the "|*|" prefixes but
#. keep it at the start of the string. We need this elsewhere
#. to get some infos on the string.
-#, fuzzy
msgid "|N|Initial New PIN"
-msgstr "������PIN"
+msgstr "|N|初期の新しいPIN"
msgid "run in multi server mode (foreground)"
-msgstr ""
+msgstr "マルチ・サーバ・モード(フォアグラウンド)で実行"
msgid "|LEVEL|set the debugging level to LEVEL"
-msgstr ""
+msgstr "|LEVEL|デバッグ・レベルをLEVELとします"
-#, fuzzy
msgid "|FILE|write a log to FILE"
-msgstr "��%s�פ��饪�ץ������ɤ߽Ф��ޤ�\n"
+msgstr "|FILE|FILEにログを書き出します"
msgid "|N|connect to reader at port N"
-msgstr ""
+msgstr "|N|ポートNのリーダに接続します"
msgid "|NAME|use NAME as ct-API driver"
-msgstr ""
+msgstr "|NAME|ct-APIドライバとしてNAMEを用います"
msgid "|NAME|use NAME as PC/SC driver"
-msgstr ""
+msgstr "|NAME|PC/SCドライバとしてNAMEを用います"
msgid "do not use the internal CCID driver"
-msgstr ""
+msgstr "内蔵CCIDドライバを使いません"
msgid "|N|disconnect the card after N seconds of inactivity"
-msgstr ""
+msgstr "|N|N秒アクティブでない場合、カードへの接続を切ります"
-msgid "do not use a reader's keypad"
-msgstr ""
+msgid "do not use a reader's pinpad"
+msgstr "リーダのピンパッドを使わない"
-#, fuzzy
msgid "deny the use of admin card commands"
-msgstr "�������ޥ�ɤ�ɽ��"
+msgstr "管理カード・コマンドの使用を拒否"
+
+msgid "use variable length input for pinpad"
+msgstr "ピンパッドの可変長入力を使う"
-#, fuzzy
msgid "Usage: scdaemon [options] (-h for help)"
-msgstr "�Ȥ���: gpg [���ץ����] [�ե�����] (�إ�פ� -h)"
+msgstr "使い方: scdaemon [オプション] (ヘルプは -h)"
msgid ""
"Syntax: scdaemon [options] [command [args]]\n"
"Smartcard daemon for GnuPG\n"
msgstr ""
+"形式: scdaemon [オプション] [コマンド [引数]]\n"
+"GnuPGのSmartcardデーモン\n"
msgid "please use the option '--daemon' to run the program in the background\n"
msgstr ""
+"'--daemon'オプションを使って、プログラムをバックグラウンドで実行してくださ"
+"い\n"
#, c-format
msgid "handler for fd %d started\n"
-msgstr ""
+msgstr "fd %dのハンドラが開始されました\n"
#, c-format
msgid "handler for fd %d terminated\n"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "invalid radix64 character %02x skipped\n"
-msgstr "̵����64��ʸ��%02X��ȤФ��ޤ���\n"
-
-#, c-format
-msgid "failed to proxy %s inquiry to client\n"
-msgstr ""
+msgstr "fd %dのハンドラが終了しました\n"
#, c-format
-msgid "no running dirmngr - starting '%s'\n"
-msgstr ""
-
-#, fuzzy
-msgid "malformed DIRMNGR_INFO environment variable\n"
-msgstr "GPG_AGENT_INFO�Ķ��ѿ��ν񼰤�����������ޤ���\n"
-
-#, fuzzy, c-format
-msgid "dirmngr protocol version %d is not supported\n"
-msgstr "gpg-agent�ץ��ȥ��롦�С������%d�ϥ��ݡ��Ȥ��Ƥ��ޤ���\n"
-
-msgid "can't connect to the dirmngr - trying fall back\n"
-msgstr ""
+msgid "invalid radix64 character %02x skipped\n"
+msgstr "無効な64進文字%02Xをスキップしました\n"
#, c-format
msgid "validation model requested by certificate: %s"
-msgstr ""
+msgstr "証明書から以下の検証モデルが要求されました: %s"
-#, fuzzy
msgid "chain"
-msgstr "admin"
+msgstr "chain"
-#, fuzzy
msgid "shell"
-msgstr "help"
+msgstr "shell"
-#, fuzzy, c-format
+#, c-format
msgid "critical certificate extension %s is not supported"
-msgstr "gpg-agent�ץ��ȥ��롦�С������%d�ϥ��ݡ��Ȥ��Ƥ��ޤ���\n"
+msgstr "クリティカルな証明書の拡張%sはサポートされていません"
msgid "issuer certificate is not marked as a CA"
-msgstr ""
+msgstr "発行者の証明書がCAとしてマークされていません"
msgid "critical marked policy without configured policies"
-msgstr ""
+msgstr "コンフィグされたポリシなしにクリティカルにマークされたポリシ"
-#, fuzzy, c-format
+#, c-format
msgid "failed to open '%s': %s\n"
-msgstr "��%s�פ������ޤ���: %s\n"
+msgstr "'%s'が開けません: %s\n"
msgid "note: non-critical certificate policy not allowed"
-msgstr ""
+msgstr "注意: クリティカルでない証明書ポリシは認められません"
-#, fuzzy
msgid "certificate policy not allowed"
-msgstr "��̩���ν�Ф��϶ػߤǤ�\n"
+msgstr "証明書ポリシは認められません"
msgid "looking up issuer at external location\n"
-msgstr ""
+msgstr "発行者の外部ロケーションを調べています\n"
#, c-format
msgid "number of issuers matching: %d\n"
-msgstr ""
+msgstr "マッチする発行者の数: %d\n"
msgid "looking up issuer from the Dirmngr cache\n"
-msgstr ""
+msgstr "Dirmngrキャッシュから発行者を調べています\n"
-#, fuzzy, c-format
+#, c-format
msgid "number of matching certificates: %d\n"
-msgstr "���֤μ������顼: %s\n"
+msgstr "マッチする証明書の数: %d\n"
-#, fuzzy, c-format
+#, c-format
msgid "dirmngr cache-only key lookup failed: %s\n"
-msgstr "�����ɽФ��˼��Ԥ��ޤ���: %s\n"
+msgstr "dirmngrのキャッシュだけの鍵探索に失敗しました: %s\n"
-#, fuzzy
-msgid "failed to allocated keyDB handle\n"
-msgstr "�����ݴɤ˼��Ԥ��ޤ���: %s\n"
+msgid "failed to allocate keyDB handle\n"
+msgstr "keyDBハンドルの確保に失敗しました\n"
-#, fuzzy
msgid "certificate has been revoked"
-msgstr "����: ���ϼ����ѤߤǤ�"
+msgstr "証明書は失効済みです"
msgid "the status of the certificate is unknown"
-msgstr ""
+msgstr "証明書のステイタスは不明です"
msgid "please make sure that the \"dirmngr\" is properly installed\n"
-msgstr ""
+msgstr "\"dirmngr\" が正しくインストールされていることを確認してください\n"
-#, fuzzy, c-format
+#, c-format
msgid "checking the CRL failed: %s"
-msgstr "�������줿��̾�θ����˼��Ԥ��ޤ���: %s\n"
+msgstr "CRLの検査に失敗しました: %s"
#, c-format
msgid "certificate with invalid validity: %s"
-msgstr ""
+msgstr "無効の妥当性の証明書: %s"
msgid "certificate not yet valid"
-msgstr ""
+msgstr "証明書はまだ有効ではありません"
-#, fuzzy
msgid "root certificate not yet valid"
-msgstr "��̩���ν�Ф��϶ػߤǤ�\n"
+msgstr "ルート証明書がまだ有効ではありません"
msgid "intermediate certificate not yet valid"
-msgstr ""
+msgstr "中間証明書はまだ有効ではありません"
-#, fuzzy
msgid "certificate has expired"
-msgstr "���θ�����λ�Ǥ�!"
+msgstr "証明書が有効期限を過ぎています"
-#, fuzzy
msgid "root certificate has expired"
-msgstr "���θ�����λ�Ǥ�!"
+msgstr "ルート証明書が有効期限を過ぎています"
-#, fuzzy
msgid "intermediate certificate has expired"
-msgstr "���θ�����λ�Ǥ�!"
+msgstr "中間証明書が有効期限を過ぎています"
#, c-format
msgid "required certificate attributes missing: %s%s%s"
-msgstr ""
+msgstr "必要な証明書の属性がありません: %s%s%s"
-#, fuzzy
msgid "certificate with invalid validity"
-msgstr "���θ�����λ�Ǥ�!"
+msgstr "妥当性が無効な証明書"
msgid "signature not created during lifetime of certificate"
-msgstr ""
+msgstr "証明書のライフタイムの間に署名が作られていません"
msgid "certificate not created during lifetime of issuer"
-msgstr ""
+msgstr "発行者のライフタイムの間に証明書が作られていません"
msgid "intermediate certificate not created during lifetime of issuer"
-msgstr ""
+msgstr "発行者のライフタイムの間に中間証明書が作られていません"
-#, fuzzy
msgid " ( signature created at "
-msgstr "����ޤǤ˺������줿��̾: %lu\n"
+msgstr " ( 署名、作成"
-#, fuzzy
msgid " (certificate created at "
-msgstr "����������������\n"
+msgstr " (証明書、作成"
-#, fuzzy
msgid " (certificate valid from "
-msgstr "�����ʾ�����Ǥ�"
+msgstr " ( 証明書、有効"
-#, fuzzy
msgid " ( issuer valid from "
-msgstr " �����ɤ����� ="
+msgstr " ( 発行者、有効"
-#, fuzzy, c-format
+#, c-format
msgid "fingerprint=%s\n"
-msgstr "CA���: "
+msgstr "フィンガー・プリント=%s\n"
msgid "root certificate has now been marked as trusted\n"
-msgstr ""
+msgstr "ルート証明書は信用すると今、マークされました\n"
msgid "interactive marking as trusted not enabled in gpg-agent\n"
msgstr ""
+"インタラクティブに信用するとマークすることがgpg-agentで有効となっていません\n"
msgid "interactive marking as trusted disabled for this session\n"
msgstr ""
+"インタラクティブに信用するとマークすることはこのセッションでは無効となってい"
+"ます\n"
msgid "WARNING: creation time of signature not known - assuming current time"
-msgstr ""
+msgstr "*警告*: 署名の作成時間が不明です - 現在時刻を仮定します"
-#, fuzzy
msgid "no issuer found in certificate"
-msgstr "���������������"
+msgstr "証明書の発行者がありません"
msgid "self-signed certificate has a BAD signature"
-msgstr ""
+msgstr "自己署名証明書に*不正な*署名があります"
msgid "root certificate is not marked trusted"
-msgstr ""
+msgstr "ルート証明書が信用できるとマークされていません"
-#, fuzzy, c-format
+#, c-format
msgid "checking the trust list failed: %s\n"
-msgstr "�������줿��̾�θ����˼��Ԥ��ޤ���: %s\n"
+msgstr "信用リストの検査に失敗しました: %s\n"
msgid "certificate chain too long\n"
-msgstr ""
+msgstr "証明書のチェインが長すぎます\n"
msgid "issuer certificate not found"
-msgstr ""
+msgstr "発行者証明書が見つかりません"
-#, fuzzy
msgid "certificate has a BAD signature"
-msgstr "��̾�򸡾�"
+msgstr "証明書に*不正な*署名があります"
msgid "found another possible matching CA certificate - trying again"
-msgstr ""
+msgstr "別の一致する可能性があるCA証明書が見つかりました - 再度試します"
#, c-format
msgid "certificate chain longer than allowed by CA (%d)"
-msgstr ""
+msgstr "証明書のチェインがCAにより認められたもの(%d)より長くなっています"
-#, fuzzy
msgid "certificate is good\n"
-msgstr "������%s�פν�ʣ\n"
+msgstr "証明書は正しいです\n"
-#, fuzzy
msgid "intermediate certificate is good\n"
-msgstr "����������������\n"
+msgstr "中間証明書は正しいです\n"
-#, fuzzy
msgid "root certificate is good\n"
-msgstr "�����ʾ�����Ǥ�"
+msgstr "ルート証明書は正しいです\n"
msgid "switching to chain model"
-msgstr ""
+msgstr "チェイン・モデルに切り替えました"
#, c-format
msgid "validation model used: %s"
-msgstr ""
-
-#, c-format
-msgid "%s key uses an unsafe (%u bit) hash\n"
-msgstr ""
+msgstr "使用した検証モデル: %s"
#, c-format
msgid "a %u bit hash is not valid for a %u bit %s key\n"
-msgstr ""
+msgstr "%uビットハッシュは%uビットの%s鍵には無効です\n"
msgid "(this is the MD2 algorithm)\n"
-msgstr ""
+msgstr "(これはMD2アルゴリズムです)\n"
-#, fuzzy
msgid "none"
-msgstr "no"
+msgstr "none"
-#, fuzzy
msgid "[Error - invalid encoding]"
-msgstr "���顼: ̵���ʱ�����\n"
+msgstr "[エラー: 無効なエンコーディング]"
msgid "[Error - out of core]"
-msgstr ""
+msgstr "[エラー - メモリがありません]"
msgid "[Error - No name]"
-msgstr ""
+msgstr "[エラー - 名前なし]"
-#, fuzzy
msgid "[Error - invalid DN]"
-msgstr "���顼: ̵���ʱ�����\n"
+msgstr "[エラー: 無効な DN]"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Please enter the passphrase to unlock the secret key for the X.509 "
"certificate:\n"
@@ -5740,446 +5600,447 @@ msgid ""
"S/N %s, ID 0x%08lX,\n"
"created %s, expires %s.\n"
msgstr ""
-"���Υ桼��������̩���Υ��å���������ˤϥѥ��ե졼��������ޤ�:\n"
-"\"%.*s\"\n"
-"%u�ӥå�%s��, ID %s�������դ�%s%s\n"
+"X.509証明書のための秘密鍵のロックを解除するためにパスフレーズを入力してくださ"
+"い:\n"
+"\"%s\"\n"
+"S/N %s, ID 0x%08lX,\n"
+"作成 %s, 有効期限 %s.\n"
msgid "no key usage specified - assuming all usages\n"
-msgstr ""
+msgstr "鍵の使い方が指定されていません - すべての使い道を仮定します\n"
-#, fuzzy, c-format
+#, c-format
msgid "error getting key usage information: %s\n"
-msgstr "���Ը�����μ������顼: %s\n"
+msgstr "鍵使用情報の取得エラー: %s\n"
-msgid "certificate should have not been used for certification\n"
-msgstr ""
+msgid "certificate should not have been used for certification\n"
+msgstr "証明書は証明のために使われるべきではありませんでした\n"
-msgid "certificate should have not been used for OCSP response signing\n"
-msgstr ""
+msgid "certificate should not have been used for OCSP response signing\n"
+msgstr "証明書はOCSP応答の署名のために使われるべきではありませんでした\n"
-msgid "certificate should have not been used for encryption\n"
-msgstr ""
+msgid "certificate should not have been used for encryption\n"
+msgstr "証明書は暗号化のために使われるべきではありませんでした\n"
-msgid "certificate should have not been used for signing\n"
-msgstr ""
+msgid "certificate should not have been used for signing\n"
+msgstr "証明書は署名のために使われるべきではありませんでした\n"
msgid "certificate is not usable for encryption\n"
-msgstr ""
+msgstr "証明書は暗号化のために使えません\n"
msgid "certificate is not usable for signing\n"
-msgstr ""
+msgstr "証明書は署名のために使えません\n"
-#, fuzzy, c-format
+#, c-format
msgid "line %d: invalid algorithm\n"
-msgstr "̵���ʥϥå��塦���르�ꥺ���%s�פǤ�\n"
+msgstr "行 %d: 無効なアルゴリズムです\n"
#, c-format
msgid "line %d: invalid key length %u (valid are %d to %d)\n"
-msgstr ""
+msgstr "行 %d: 無効な鍵長 %u (%d から %dが有効)です\n"
#, c-format
msgid "line %d: no subject name given\n"
-msgstr ""
+msgstr "行 %d: サブジェクト名がありません\n"
#, c-format
msgid "line %d: invalid subject name label '%.*s'\n"
-msgstr ""
+msgstr "行 %d: 無効なサブジェクト名ラベル'%.*s'です\n"
#, c-format
msgid "line %d: invalid subject name '%s' at pos %d\n"
-msgstr ""
+msgstr "行 %d: 無効なサブジェクト名'%s'(位置: %d)です\n"
-#, fuzzy, c-format
+#, c-format
msgid "line %d: not a valid email address\n"
-msgstr "ͭ�����Żҥ᡼�롦���ɥ쥹�ǤϤ���ޤ���\n"
+msgstr "行 %d: 有効な電子メール・アドレスではありません\n"
+
+#, c-format
+msgid "line %d: invalid serial number\n"
+msgstr "行 %d: 無効なシリアル番号です\n"
+
+#, c-format
+msgid "line %d: invalid issuer name label '%.*s'\n"
+msgstr "行 %d: 無効なサブジェクト名ラベル'%.*s'です\n"
+
+#, c-format
+msgid "line %d: invalid issuer name '%s' at pos %d\n"
+msgstr "行 %d: 無効なサブジェクト名'%s'(位置: %d)です\n"
+
+#, c-format
+msgid "line %d: invalid date given\n"
+msgstr "行 %d: 無効な日付が与えられました\n"
+
+#, c-format
+msgid "line %d: error getting signing key by keygrip '%s': %s\n"
+msgstr "行 %d: keygrip'%s'から鍵の取得エラー: %s\n"
+
+#, c-format
+msgid "line %d: invalid hash algorithm given\n"
+msgstr "行 %d: 無効なハッシュ・アルゴリズムです\n"
+
+#, c-format
+msgid "line %d: invalid authority-key-id\n"
+msgstr "行 %d: 無効なauthority-key-idです\n"
+
+#, c-format
+msgid "line %d: invalid subject-key-id\n"
+msgstr "行 %d: 無効なsubject-key-idです\n"
+
+#, c-format
+msgid "line %d: invalid extension syntax\n"
+msgstr "行 %d: 無効な拡張構文です\n"
-#, fuzzy, c-format
+#, c-format
msgid "line %d: error reading key '%s' from card: %s\n"
-msgstr "���ء�%s�פκ������顼: %s\n"
+msgstr "行 %d: カードから鍵'%s'の読み込みエラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "line %d: error getting key by keygrip '%s': %s\n"
-msgstr "���ء�%s�פκ������顼: %s\n"
+msgstr "行 %d: keygrip'%s'から鍵の取得エラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "line %d: key generation failed: %s <%s>\n"
-msgstr "���������˼��Ԥ��ޤ���: %s\n"
+msgstr "行 %d: 鍵の生成に失敗しました: %s <%s>\n"
msgid ""
"To complete this certificate request please enter the passphrase for the key "
"you just created once more.\n"
msgstr ""
+"この証明書要求を完成するために今作った鍵のパスフレーズをもう一度入力してくだ"
+"さい。\n"
-#, fuzzy, c-format
+#, c-format
msgid " (%d) RSA\n"
-msgstr " (%d) RSA (��̾�Τ�)\n"
+msgstr " (%d) RSA\n"
-#, fuzzy, c-format
+#, c-format
msgid " (%d) Existing key\n"
-msgstr " (2) �Ź沽��\n"
+msgstr " (%d) 既存の鍵\n"
#, c-format
msgid " (%d) Existing key from card\n"
-msgstr ""
+msgstr " (%d) カードに存在する鍵\n"
-#, fuzzy
-msgid "Enter the keygrip: "
-msgstr "��̾����: "
-
-msgid "Not a valid keygrip (expecting 40 hex digits)\n"
-msgstr ""
-
-#, fuzzy
-msgid "No key with this keygrip\n"
-msgstr "%d�֤Υ桼����ID�Ϥ���ޤ���\n"
-
-#, fuzzy, c-format
+#, c-format
msgid "error reading the card: %s\n"
-msgstr "%s: �����쥳���ɤ��ɽФ����顼: %s\n"
+msgstr "カードの読み込みエラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "Serial number of the card: %s\n"
-msgstr "���֤μ������顼: %s\n"
+msgstr "カードのシリアル番号: %s\n"
-#, fuzzy
msgid "Available keys:\n"
-msgstr "���λ��Ѥ�ػߤ���"
+msgstr "利用可能な鍵:\n"
-#, fuzzy, c-format
+#, c-format
msgid "Possible actions for a %s key:\n"
-msgstr "��%s�˲�ǽ�����: "
+msgstr "%s鍵に可能な操作:\n"
-#, fuzzy, c-format
+#, c-format
msgid " (%d) sign, encrypt\n"
-msgstr " (%d) DSA (��̾�Τ�)\n"
+msgstr " (%d) 署名、暗号化\n"
-#, fuzzy, c-format
+#, c-format
msgid " (%d) sign\n"
-msgstr " (%d) DSA (��̾�Τ�)\n"
+msgstr " (%d) 署名\n"
-#, fuzzy, c-format
+#, c-format
msgid " (%d) encrypt\n"
-msgstr " (%d) RSA (�Ź沽�Τ�)\n"
+msgstr " (%d) 暗号化\n"
msgid "Enter the X.509 subject name: "
-msgstr ""
+msgstr "X.509のサブジェクト名を入力: "
-#, fuzzy
msgid "No subject name given\n"
-msgstr "(�����Ϥ���ޤ���)\n"
+msgstr "サブジェクト名がありません\n"
#, c-format
msgid "Invalid subject name label '%.*s'\n"
-msgstr ""
+msgstr "無効なサブジェクト名ラベル'%.*s'です\n"
#. TRANSLATORS: The 22 in the second string is the
#. length of the first string up to the "%s". Please
#. adjust it do the length of your translation. The
#. second string is merely passed to atoi so you can
#. drop everything after the number.
-#, fuzzy, c-format
+#, c-format
msgid "Invalid subject name '%s'\n"
-msgstr "̵���ʥϥå��塦���르�ꥺ���%s�פǤ�\n"
+msgstr "無効なサブジェクト名'%s'です\n"
msgid "22 translator: see certreg-ui.c:gpgsm_gencertreq_tty"
-msgstr ""
+msgstr "33"
-#, fuzzy
msgid "Enter email addresses"
-msgstr "�Żҥ᡼�롦���ɥ쥹: "
+msgstr "電子メール・アドレスを入力"
-#, fuzzy
msgid " (end with an empty line):\n"
-msgstr ""
-"\n"
-"�桼����ID�����ϡ����Ԥǽ�λ: "
+msgstr " (空行で終了):\n"
-#, fuzzy
msgid "Enter DNS names"
-msgstr "�������ե�����̾�����Ϥ��Ƥ�������"
+msgstr "DNS名を入力"
-#, fuzzy
msgid " (optional; end with an empty line):\n"
-msgstr "ͽ�������������ϡ����Ԥǽ�λ:\n"
+msgstr " (オプションです。空行で終了):\n"
-#, fuzzy
msgid "Enter URIs"
-msgstr "PIN������: "
+msgstr "URIを入力"
-msgid "Parameters to be used for the certificate request:\n"
-msgstr ""
+msgid "Create self-signed certificate? (y/N) "
+msgstr "自己署名証明書を作成しますか? (y/N) "
-msgid "Now creating certificate request. This may take a while ...\n"
-msgstr ""
+msgid "These parameters are used:\n"
+msgstr "下記のパラメータが使われます:\n"
+
+msgid "Now creating self-signed certificate. "
+msgstr "今、自己署名証明書を作成しています。 "
+
+msgid "Now creating certificate request. "
+msgstr "今、証明書要求を作成しています。 "
+
+msgid "This may take a while ...\n"
+msgstr "しばらくかかります...\n"
+
+msgid "Ready.\n"
+msgstr "準備完了。\n"
msgid "Ready. You should now send this request to your CA.\n"
-msgstr ""
+msgstr "準備ができました。今、この要求をあなたのCAに送るべきです。\n"
msgid "resource problem: out of core\n"
-msgstr ""
+msgstr "リソースの問題: メモリがありません\n"
msgid "(this is the RC2 algorithm)\n"
-msgstr ""
+msgstr "(RC2アルゴリズムです)\n"
msgid "(this does not seem to be an encrypted message)\n"
-msgstr ""
+msgstr "(暗号化されたメッセージではないようです)\n"
-#, fuzzy, c-format
+#, c-format
msgid "certificate '%s' not found: %s\n"
-msgstr "��̩����%s�ɤ����Ĥ���ޤ���: %s\n"
+msgstr "証明書'%s'が見つかりません: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "error locking keybox: %s\n"
-msgstr "���֥��å����ɽФ����顼: %s\n"
+msgstr "keyboxのロックのエラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "duplicated certificate '%s' deleted\n"
-msgstr "����������������\n"
+msgstr "重複した証明書'%s'を削除しました\n"
-#, fuzzy, c-format
+#, c-format
msgid "certificate '%s' deleted\n"
-msgstr "������%s�פν�ʣ\n"
+msgstr "証明書'%s'を削除しました\n"
-#, fuzzy, c-format
+#, c-format
msgid "deleting certificate \"%s\" failed: %s\n"
-msgstr "���֥��å��κ���˼��Ԥ��ޤ���: %s\n"
+msgstr "証明書'%s'の削除に失敗しました: %s\n"
-#, fuzzy
msgid "no valid recipients given\n"
-msgstr "(�����Ϥ���ޤ���)\n"
+msgstr "有効な受け取り手が指定されていません\n"
-#, fuzzy
msgid "list external keys"
-msgstr "��̩���ΰ���"
+msgstr "外部鍵を一覧する"
-#, fuzzy
msgid "list certificate chain"
-msgstr "�����ʾ�����Ǥ�"
+msgstr "証明書のチェインを表示する"
-#, fuzzy
msgid "import certificates"
-msgstr "�����ʾ�����Ǥ�"
+msgstr "証明書をインポートする"
-#, fuzzy
msgid "export certificates"
-msgstr "�����ʾ�����Ǥ�"
+msgstr "証明書をエクスポートする"
-#, fuzzy
msgid "register a smartcard"
-msgstr "���ޡ��ȥ����ɤظ����ɲ�"
+msgstr "ICカードを登録する"
msgid "pass a command to the dirmngr"
-msgstr ""
+msgstr "dirmngrにコマンドを渡す"
msgid "invoke gpg-protect-tool"
-msgstr ""
-
-#, fuzzy
-msgid "change a passphrase"
-msgstr "�ѥ��ե졼�����ѹ�"
+msgstr "gpg-protect-toolを起動する"
-#, fuzzy
msgid "create base-64 encoded output"
-msgstr "ASCII���������������"
+msgstr "base-64形式の出力を作成"
msgid "assume input is in PEM format"
-msgstr ""
+msgstr "PEMフォーマットの入力を仮定する"
msgid "assume input is in base-64 format"
-msgstr ""
+msgstr "base-64フォーマットの入力を仮定する"
msgid "assume input is in binary format"
-msgstr ""
-
-msgid "use system's dirmngr if available"
-msgstr ""
+msgstr "バイナリ・フォーマットの入力を仮定する"
msgid "never consult a CRL"
-msgstr ""
+msgstr "決してCRLを調べない"
msgid "check validity using OCSP"
-msgstr ""
+msgstr "OCSPを用いて有効性を確認する"
msgid "|N|number of certificates to include"
-msgstr ""
+msgstr "|N|インクルードする証明書の数"
msgid "|FILE|take policy information from FILE"
-msgstr ""
+msgstr "|FILE|ポリシ情報をFILEから取得する"
msgid "do not check certificate policies"
-msgstr ""
+msgstr "証明書ポリシをチェックしない"
msgid "fetch missing issuer certificates"
-msgstr ""
+msgstr "紛失している発行者証明書を取得する"
msgid "don't use the terminal at all"
-msgstr ""
+msgstr "端末をまったく使わない"
msgid "|FILE|write a server mode log to FILE"
-msgstr ""
+msgstr "|FILE|サーバ・モードのログをFILEに書き出す"
-#, fuzzy
msgid "|FILE|write an audit log to FILE"
-msgstr "��%s�פ��饪�ץ������ɤ߽Ф��ޤ�\n"
+msgstr "|FILE|監査ログをFILEに書き出す"
msgid "batch mode: never ask"
-msgstr ""
+msgstr "バッチ・モード: なにもユーザに問い合わせない"
msgid "assume yes on most questions"
-msgstr ""
+msgstr "ほとんどの設問にyesを仮定する"
msgid "assume no on most questions"
-msgstr ""
+msgstr "ほとんどの設問にnoを仮定する"
-#, fuzzy
msgid "|FILE|add keyring to the list of keyrings"
-msgstr "���θ����ؤ��������ޤ�"
+msgstr "|FILE|鍵リングを鍵リングのリストに追加"
msgid "|USER-ID|use USER-ID as default secret key"
-msgstr ""
+msgstr "|USER-ID|USER-IDをデフォルトの秘密鍵として使う"
msgid "|SPEC|use this keyserver to lookup keys"
-msgstr ""
+msgstr "|SPEC|このキーサーバを鍵の検索に使う"
-#, fuzzy
msgid "|NAME|use cipher algorithm NAME"
-msgstr "̤�ΤΰŹ楢�르�ꥺ��Ǥ�"
+msgstr "|NAME|暗号アルゴリズムにNAMEを使用"
-#, fuzzy
msgid "|NAME|use message digest algorithm NAME"
-msgstr "%s��̾�����󥢥르�ꥺ�� %s\n"
+msgstr "|NAME|ダイジェスト・アルゴリズムにNAMEを使用"
-#, fuzzy
msgid "Usage: gpgsm [options] [files] (-h for help)"
-msgstr "�Ȥ���: gpg [���ץ����] [�ե�����] (�إ�פ� -h)"
+msgstr "使い方: gpgsm [オプション] [ファイル] (ヘルプは -h)"
-#, fuzzy
msgid ""
"Syntax: gpgsm [options] [files]\n"
-"sign, check, encrypt or decrypt using the S/MIME protocol\n"
-"default operation depends on the input data\n"
+"Sign, check, encrypt or decrypt using the S/MIME protocol\n"
+"Default operation depends on the input data\n"
msgstr ""
-"��: gpg [���ץ����] [�ե�����]\n"
-"��̾���������Ź沽������\n"
-"��������ϡ����ϥǡ����˰�¸\n"
+"形式: gpgsm [オプション] [ファイル]\n"
+"S/MIMEプロトコルを用いて、署名、検査、暗号化や復号を行います\n"
+"デフォルトの操作は、入力データに依存します\n"
-#, fuzzy
msgid "usage: gpgsm [options] "
-msgstr "�Ȥ���: gpg [���ץ����] "
+msgstr "使い方: gpgsm [オプション] "
-#, fuzzy, c-format
+#, c-format
msgid "NOTE: won't be able to encrypt to '%s': %s\n"
-msgstr "��%s�פ���³�Ǥ��ޤ���: %s\n"
+msgstr "*注意*:'%s'に対して暗号化できません: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "unknown validation model '%s'\n"
-msgstr "̤�ΤΥ��ץ�����%s��\n"
+msgstr "不明の検証モデル '%s'\n"
-#, fuzzy, c-format
+#, c-format
msgid "%s:%u: no hostname given\n"
-msgstr "(�����Ϥ���ޤ���)\n"
+msgstr "%s:%u: ホスト名が指定されていません\n"
#, c-format
msgid "%s:%u: password given without user\n"
-msgstr ""
+msgstr "%s:%u: ユーザなしに与えられたパスワード\n"
-#, fuzzy, c-format
+#, c-format
msgid "%s:%u: skipping this line\n"
-msgstr " s = ���θ��ϤȤФ�\n"
+msgstr "%s:%u: この行はスキップ\n"
-#, fuzzy
msgid "could not parse keyserver\n"
-msgstr "�������С���URL�������ǽ\n"
-
-msgid "WARNING: running with faked system time: "
-msgstr ""
+msgstr "鍵サーバのURLを解析不能\n"
#, c-format
msgid "importing common certificates '%s'\n"
-msgstr ""
+msgstr "共通証明書のインポート・エラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "can't sign using '%s': %s\n"
-msgstr "��%s�פ˥��������Ǥ��ޤ���: %s\n"
+msgstr "'%s'を用いて署名できません: %s\n"
msgid "invalid command (there is no implicit command)\n"
-msgstr ""
+msgstr "無効なコマンド (暗黙のコマンドはありません)\n"
-#, fuzzy, c-format
+#, c-format
msgid "total number processed: %lu\n"
-msgstr " ��������: %lu\n"
+msgstr " 処理数の合計: %lu\n"
-#, fuzzy
msgid "error storing certificate\n"
-msgstr "���������������"
+msgstr "証明書の保存に失敗しました\n"
msgid "basic certificate checks failed - not imported\n"
-msgstr ""
+msgstr "基本証明書チェックが失敗しました - インポートされませんでした\n"
-#, fuzzy
-msgid "failed to allocate keyDB handle\n"
-msgstr "�����ݴɤ˼��Ԥ��ޤ���: %s\n"
-
-#, fuzzy, c-format
+#, c-format
msgid "error getting stored flags: %s\n"
-msgstr "������PIN�μ������顼: %s\n"
+msgstr "保存されたフラグの取得エラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "error importing certificate: %s\n"
-msgstr "���֤μ������顼: %s\n"
+msgstr "証明書のインポート・エラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "error reading input: %s\n"
-msgstr "��%s�פ��ɽФ����顼: %s\n"
+msgstr "入力読み込みエラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "error creating keybox '%s': %s\n"
-msgstr "���ء�%s�פκ������顼: %s\n"
+msgstr "keybox'%s'の作成エラー: %s\n"
msgid "you may want to start the gpg-agent first\n"
-msgstr ""
+msgstr "まず gpg-agent を開始したいでしょう\n"
-#, fuzzy, c-format
+#, c-format
msgid "keybox '%s' created\n"
-msgstr "���ء�%s�פ��Ǥ��ޤ���\n"
+msgstr "keybox'%s'が作成されました\n"
-#, fuzzy
msgid "failed to get the fingerprint\n"
-msgstr "������ݴɤ˼��Ԥ��ޤ���: %s\n"
+msgstr "フィンガー・プリントの取得に失敗しました\n"
#, c-format
msgid "problem looking for existing certificate: %s\n"
-msgstr ""
+msgstr "既存の証明書の検索の問題: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "error finding writable keyDB: %s\n"
-msgstr "���֤μ������顼: %s\n"
+msgstr "書き込み可能keyDBの判定エラー: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "error storing certificate: %s\n"
-msgstr "���֤μ������顼: %s\n"
+msgstr "証明書保存エラー: %s\n"
#, c-format
msgid "problem re-searching certificate: %s\n"
-msgstr ""
+msgstr "証明書の再検索の問題: %s\n"
-#, fuzzy, c-format
+#, c-format
msgid "error storing flags: %s\n"
-msgstr "��%s�פ��ɽФ����顼: %s\n"
+msgstr "フラグの保存エラー: %s\n"
msgid "Error - "
-msgstr ""
+msgstr "エラー - "
msgid "GPG_TTY has not been set - using maybe bogus default\n"
-msgstr ""
+msgstr "GPG_TTY が設定されていません - 少々疑問のデフォルトを使います\n"
-#, fuzzy, c-format
+#, c-format
msgid "invalid formatted fingerprint in '%s', line %d\n"
-msgstr "���顼: ̵���ʷ����λ��档\n"
+msgstr "'%s'(行 %d) 無効な形式のフィンガー・プリント\n"
#, c-format
msgid "invalid country code in '%s', line %d\n"
-msgstr ""
+msgstr "'%s' (行 %d)で無効な国識別コード\n"
#, c-format
msgid ""
@@ -6190,11 +6051,19 @@ msgid ""
"\n"
"%s%sAre you really sure that you want to do this?"
msgstr ""
+"あなたの以下の証明書を用いて今、認定署名を作ろうとしています:\n"
+":\n"
+"\"%s\"\n"
+"これにより手書きの署名と法的に同等とされる署名が作成されます。\n"
+"\n"
+"%s%s本当にこれを望みますか?"
msgid ""
"Note, that this software is not officially approved to create or verify such "
"signatures.\n"
msgstr ""
+"注意してください、このような署名を作成したり、検証したりすることについてこの"
+"ソフトウェアは公式に承認されていません。\n"
#, c-format
msgid ""
@@ -6202,1376 +6071,1613 @@ msgid ""
"\"%s\"\n"
"Note, that this certificate will NOT create a qualified signature!"
msgstr ""
+"あなたの以下の証明書を用いて今、認定署名を作ろうとしています:\n"
+"\"%s\"\n"
+"注意してください: この証明書は署名を作るために作成されていません!"
-#, fuzzy, c-format
+#, c-format
msgid "hash algorithm %d (%s) for signer %d not supported; using %s\n"
-msgstr "�ݸ�르�ꥺ��%d%s�ϥ��ݡ��Ȥ��Ƥ��ޤ���\n"
+msgstr ""
+"ハッシュ・アルゴリズム %d (%s)(署名人 %d へ)はサポートされていません。%s を使"
+"います\n"
#, c-format
msgid "hash algorithm used for signer %d: %s (%s)\n"
-msgstr ""
+msgstr "署名者 %dのために使われたハッシュアルゴリズム: %s (%s)\n"
-#, fuzzy, c-format
+#, c-format
msgid "checking for qualified certificate failed: %s\n"
-msgstr "�������줿��̾�θ����˼��Ԥ��ޤ���: %s\n"
+msgstr "適正な認定証明書の検査に失敗しました: %s\n"
-#, fuzzy
msgid "Signature made "
-msgstr "%s�˻ܤ��줿��̾\n"
+msgstr "施された署名 "
msgid "[date not given]"
-msgstr ""
+msgstr "[日時指定なし]"
-#, fuzzy, c-format
+#, c-format
msgid " using certificate ID 0x%08lX\n"
-msgstr "���֤μ������顼: %s\n"
+msgstr " 証明書 ID 0x%08lXを用います\n"
msgid ""
"invalid signature: message digest attribute does not match computed one\n"
msgstr ""
+"無効な署名: メッセージ・ダイジェストの属性が計算されたものと一致しません\n"
-#, fuzzy
msgid "Good signature from"
-msgstr "��%s�ɤ������������̾"
+msgstr "正しい署名"
-#, fuzzy
msgid " aka"
-msgstr " ��̾��%s��"
+msgstr " 別名"
-#, fuzzy
msgid "This is a qualified signature\n"
-msgstr "���ʽ�̾�ˤʤ�Ǥ��礦��\n"
+msgstr "これは認定署名です\n"
-#, fuzzy
-msgid "quiet"
-msgstr "quit"
+#, c-format
+msgid "can't initialize certificate cache lock: %s\n"
+msgstr "証明書キャッシュのロックが初期化できません: %s\n"
-msgid "print data out hex encoded"
-msgstr ""
+#, c-format
+msgid "can't acquire read lock on the certificate cache: %s\n"
+msgstr "証明書キャッシュの読み出しロックが取得できません: %s\n"
-msgid "decode received data lines"
-msgstr ""
+#, c-format
+msgid "can't acquire write lock on the certificate cache: %s\n"
+msgstr "証明書キャッシュの書き込みロックが取得できません: %s\n"
-msgid "|NAME|connect to Assuan socket NAME"
-msgstr ""
+#, c-format
+msgid "can't release lock on the certificate cache: %s\n"
+msgstr "証明書キャッシュのロックが解除できません: %s\n"
-msgid "run the Assuan server given on the command line"
-msgstr ""
+#, c-format
+msgid "dropping %u certificates from the cache\n"
+msgstr "%uの証明書をキャッシュからはずします\n"
-msgid "do not use extended connect mode"
-msgstr ""
+#, c-format
+msgid "can't access directory '%s': %s\n"
+msgstr "ディレクトリ'%s'が作成できません: %s\n"
-#, fuzzy
-msgid "|FILE|run commands from FILE on startup"
-msgstr "��%s�פ��饪�ץ������ɤ߽Ф��ޤ�\n"
+#, c-format
+msgid "can't parse certificate '%s': %s\n"
+msgstr "証明書'%s'が解析できません: %s\n"
-msgid "run /subst on startup"
-msgstr ""
+#, c-format
+msgid "certificate '%s' already cached\n"
+msgstr "証明書'%s'はすでにキャッシュされています\n"
-#, fuzzy
-msgid "Usage: gpg-connect-agent [options] (-h for help)"
-msgstr "�Ȥ���: gpg [���ץ����] [�ե�����] (�إ�פ� -h)"
+#, c-format
+msgid "trusted certificate '%s' loaded\n"
+msgstr "信用される証明書'%s'をロードしました\n"
+
+#, c-format
+msgid "certificate '%s' loaded\n"
+msgstr "証明書'%s'をロードしました\n"
+
+#, c-format
+msgid " SHA1 fingerprint = %s\n"
+msgstr " SHA1フィンガー・プリント = %s\n"
+
+msgid " issuer ="
+msgstr " 発行者 ="
+
+msgid " subject ="
+msgstr "サブジェクト ="
+
+#, c-format
+msgid "error loading certificate '%s': %s\n"
+msgstr "証明書'%s'の読み込みエラー: %s\n"
+
+#, c-format
+msgid "permanently loaded certificates: %u\n"
+msgstr "永続的にロードされる証明書: %u\n"
+
+#, c-format
+msgid " runtime cached certificates: %u\n"
+msgstr "実行時キャッシュ証明書の数: %u\n"
+
+msgid "certificate already cached\n"
+msgstr " すでにキャッシュされた証明書\n"
+
+msgid "certificate cached\n"
+msgstr "キャッシュされた証明書\n"
+
+#, c-format
+msgid "error caching certificate: %s\n"
+msgstr "証明書のキャッシュのエラー: %s\n"
+
+#, c-format
+msgid "invalid SHA1 fingerprint string '%s'\n"
+msgstr "無効なSHA1フィンガー・プリント文字列'%s'\n"
+
+#, c-format
+msgid "error fetching certificate by S/N: %s\n"
+msgstr "S/Nでの証明書取得エラー : %s\n"
+
+#, c-format
+msgid "error fetching certificate by subject: %s\n"
+msgstr "サブジェクトでの証明書取得エラー: %s\n"
+
+msgid "no issuer found in certificate\n"
+msgstr "証明書に発行者がみつかりません\n"
+
+#, c-format
+msgid "error getting authorityKeyIdentifier: %s\n"
+msgstr "authorityKeyIdentifierの取得エラー: %s\n"
+
+#, c-format
+msgid "creating directory '%s'\n"
+msgstr "ディレクトリ'%s'の作成\n"
+
+#, c-format
+msgid "error creating directory '%s': %s\n"
+msgstr "ディレクトリ'%s'の作成エラー: %s\n"
+
+#, c-format
+msgid "ignoring database dir '%s'\n"
+msgstr "データベース・ディレクトリ'%s'を無視します\n"
+
+#, c-format
+msgid "error reading directory '%s': %s\n"
+msgstr "ディレクトリ'%s'の読み込みエラー: %s\n"
+
+#, c-format
+msgid "removing cache file '%s'\n"
+msgstr "キャッシュ・ファイル' %s'の削除\n"
+
+#, c-format
+msgid "not removing file '%s'\n"
+msgstr "ファイル'%s'を削除しません\n"
+
+#, c-format
+msgid "error closing cache file: %s\n"
+msgstr "キャッシュ・ファイルでクローズのエラー: %s\n"
+
+#, c-format
+msgid "failed to open cache dir file '%s': %s\n"
+msgstr "キャッシュ・ディレクトリ・ファイル'%s'が開けません: %s\n"
+
+#, c-format
+msgid "error creating new cache dir file '%s': %s\n"
+msgstr "新しいキャッシュ・ディレクトリ・ファイル'%s'の作成エラー: %s\n"
+
+#, c-format
+msgid "error writing new cache dir file '%s': %s\n"
+msgstr "新しいキャッシュ・ディレクトリ・ファイル'%s'の書き込みエラー: %s\n"
+
+#, c-format
+msgid "error closing new cache dir file '%s': %s\n"
+msgstr "新しいキャッシュ・ディレクトリ・ファイル'%s'でクローズのエラー: %s\n"
+
+#, c-format
+msgid "new cache dir file '%s' created\n"
+msgstr "新しいキャッシュ・ディレクトリ・ファイル'%s'ができました\n"
+
+#, c-format
+msgid "failed to re-open cache dir file '%s': %s\n"
+msgstr "キャッシュ・ディレクトリ・ファイル'%s'が再オープンできません: %s\n"
+
+#, c-format
+msgid "first record of '%s' is not the version\n"
+msgstr "最初のレコード'%s'はそのバージョンではありません。\n"
+
+msgid "old version of cache directory - cleaning up\n"
+msgstr "古いバージョンのキャッシュ・ディレクトリ - きれいにします\n"
+
+msgid "old version of cache directory - giving up\n"
+msgstr "古いバージョンのキャッシュ・ディレクトリ - あきらめます\n"
+
+#, c-format
+msgid "extra field detected in crl record of '%s' line %u\n"
+msgstr "crlレコードの'%s'に行 %u で余分なフィールドが検出されました\n"
+
+#, c-format
+msgid "invalid line detected in '%s' line %u\n"
+msgstr "'%s' (行 %u)で無効な行\n"
+
+#, c-format
+msgid "duplicate entry detected in '%s' line %u\n"
+msgstr "'%s' (行 %u)で重複したエントリ\n"
+
+#, c-format
+msgid "unsupported record type in '%s' line %u skipped\n"
+msgstr "サポートしていないレコード型 '%s' を行 %u でスキップしました\n"
+
+#, c-format
+msgid "invalid issuer hash in '%s' line %u\n"
+msgstr "'%s'の無効な発行者ハッシュ(行 %u)\n"
+
+#, c-format
+msgid "no issuer DN in '%s' line %u\n"
+msgstr "'%s'で発行者DNがありません(行 %u)\n"
+
+#, c-format
+msgid "invalid timestamp in '%s' line %u\n"
+msgstr "'%s'の無効なタイムスタンプ(行 %u)\n"
+
+#, c-format
+msgid "WARNING: invalid cache file hash in '%s' line %u\n"
+msgstr "*警告*: '%s'で無効なキャッシュ・ファイル・ハッシュ(行 %u)\n"
+
+msgid "detected errors in cache dir file\n"
+msgstr "キャッシュ・ディレクトリ・ファイルの検出エラー\n"
+
+msgid "please check the reason and manually delete that file\n"
+msgstr "理由を確認し、手動でそのファイルを削除してください\n"
+
+#, c-format
+msgid "failed to create temporary cache dir file '%s': %s\n"
+msgstr "一時キャッシュ・ディレクトリ・ファイル'%s'が作成できません: %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "'%s'でクローズのエラー: %s\n"
+
+#, c-format
+msgid "error renaming '%s' to '%s': %s\n"
+msgstr "'%s'から'%s'へ名前変更のエラー: %s\n"
+
+#, c-format
+msgid "can't hash '%s': %s\n"
+msgstr "'%s'をハッシュできません: %s\n"
+
+#, c-format
+msgid "error setting up MD5 hash context: %s\n"
+msgstr "MD5ハッシュ・コンテクストの設定エラー: %s\n"
+
+#, c-format
+msgid "error hashing '%s': %s\n"
+msgstr "'%s'でハッシュのエラー: %s\n"
+
+#, c-format
+msgid "invalid formatted checksum for '%s'\n"
+msgstr "'%s'に対する無効な形式のチェックサム\n"
+
+msgid "too many open cache files; can't open anymore\n"
+msgstr "キャッシュ・ファイルを多くオープンしすぎです。これ以上オープンできません\n"
+
+#, c-format
+msgid "opening cache file '%s'\n"
+msgstr "キャッシュ・ファイル'%s'を開く\n"
+
+#, c-format
+msgid "error opening cache file '%s': %s\n"
+msgstr "キャッシュ・ファイル'%s'を開く際、エラー: %s\n"
+
+#, c-format
+msgid "error initializing cache file '%s' for reading: %s\n"
+msgstr "キャッシュ・ファイル '%s' の初期化エラー、読み込み: %s\n"
+
+msgid "calling unlock_db_file on a closed file\n"
+msgstr "unlock_db_file のクローズしたファイルへの呼び出し\n"
+
+msgid "calling unlock_db_file on an unlocked file\n"
+msgstr "unlock_db_fileのロックしてないファイルへの呼び出し\n"
+
+#, c-format
+msgid "failed to create a new cache object: %s\n"
+msgstr "新しいキャッシュ・オブジェクトを作成するのに失敗しました: %s\n"
+
+#, c-format
+msgid "no CRL available for issuer id %s\n"
+msgstr "発行者ID%sに対してCRLはありません\n"
+
+#, c-format
+msgid "cached CRL for issuer id %s too old; update required\n"
+msgstr "キャッシュされたCRLの発行者ID %s が古すぎます。更新が必要です\n"
+#, c-format
msgid ""
-"Syntax: gpg-connect-agent [options]\n"
-"Connect to a running agent and send commands\n"
+"force-crl-refresh active and %d minutes passed for issuer id %s; update "
+"required\n"
msgstr ""
+"force-crl-refreshが有効で%d分が発行者ID%sに経過しました。更新が必要です\n"
#, c-format
-msgid "option \"%s\" requires a program and optional arguments\n"
-msgstr ""
+msgid "force-crl-refresh active for issuer id %s; update required\n"
+msgstr "force-crl-refreshが発行者ID%sに対し有効です。更新が必要です\n"
#, c-format
-msgid "option \"%s\" ignored due to \"%s\"\n"
-msgstr ""
+msgid "available CRL for issuer ID %s can't be used\n"
+msgstr "発行者ID%sに対する利用可能なCRLが使用できません\n"
-#, fuzzy, c-format
-msgid "receiving line failed: %s\n"
-msgstr "�����ɽФ��˼��Ԥ��ޤ���: %s\n"
+#, c-format
+msgid "cached CRL for issuer id %s tampered; we need to update\n"
+msgstr "発行者ID%sに対するキャッシュされたCRLが変更されています。更新が必要です\n"
-#, fuzzy
-msgid "line too long - skipped\n"
-msgstr "�Ԥ�Ĺ�����ޤ�"
+msgid "WARNING: invalid cache record length for S/N "
+msgstr "**警告**: S/Nに対する無効なキャッシュ・レコード長"
-msgid "line shortened due to embedded Nul character\n"
-msgstr ""
+#, c-format
+msgid "problem reading cache record for S/N %s: %s\n"
+msgstr "S/N %sに対するキャッシュ・レコードを読み込む際の問題: %s\n"
-#, fuzzy, c-format
-msgid "unknown command '%s'\n"
-msgstr "̤�ΤΥ��ץ�����%s��\n"
+#, c-format
+msgid "S/N %s is not valid; reason=%02X date=%.15s\n"
+msgstr "S/N %s は無効です。理由=%02X 日付=%.15s\n"
-#, fuzzy, c-format
-msgid "sending line failed: %s\n"
-msgstr "��̾�˼��Ԥ��ޤ���: %s\n"
+#, c-format
+msgid "S/N %s is valid, it is not listed in the CRL\n"
+msgstr "S/N %sは有効です。CRLに載っていません\n"
-#, fuzzy, c-format
-msgid "error sending %s command: %s\n"
-msgstr "��%s�פ��ɽФ����顼: %s\n"
+#, c-format
+msgid "error getting data from cache file: %s\n"
+msgstr "キャッシュ・ファイルからデータの取得エラー: %s\n"
-#, fuzzy, c-format
-msgid "error sending standard options: %s\n"
-msgstr "��%s�פǿ��ѥ쥳���ɤθ������顼: %s\n"
+#, c-format
+msgid "unknown hash algorithm '%s'\n"
+msgstr "不明なハッシュ・アルゴリズム'%s'\n"
-msgid "Options controlling the diagnostic output"
-msgstr ""
+#, c-format
+msgid "gcry_md_open for algorithm %d failed: %s\n"
+msgstr "アルゴリズム%dのgcry_md_openが失敗: %s\n"
-msgid "Options controlling the configuration"
-msgstr ""
+msgid "got an invalid S-expression from libksba\n"
+msgstr "libksbaから無効なS-式を取得しました\n"
-msgid "Options useful for debugging"
-msgstr ""
+#, c-format
+msgid "converting S-expression failed: %s\n"
+msgstr "S式の変換に失敗しました: %s\n"
-msgid "|FILE|write server mode logs to FILE"
-msgstr ""
+#, c-format
+msgid "creating S-expression failed: %s\n"
+msgstr "S式の作成に失敗しました: %s\n"
-msgid "Options controlling the security"
-msgstr ""
+#, c-format
+msgid "ksba_crl_parse failed: %s\n"
+msgstr "ksba_crl_parse に失敗しました: %s\n"
-msgid "|N|expire SSH keys after N seconds"
-msgstr ""
+#, c-format
+msgid "error getting update times of CRL: %s\n"
+msgstr "CRLの更新時刻の取得エラー: %s\n"
-msgid "|N|set maximum PIN cache lifetime to N seconds"
-msgstr ""
+#, c-format
+msgid "update times of this CRL: this=%s next=%s\n"
+msgstr "このCRLの更新時刻: これ=%s 次=%s\n"
-msgid "|N|set maximum SSH key lifetime to N seconds"
-msgstr ""
+msgid "nextUpdate not given; assuming a validity period of one day\n"
+msgstr "nextUpdateが与えられていません。一日の有効期間を仮定します\n"
-msgid "Options enforcing a passphrase policy"
-msgstr ""
+#, c-format
+msgid "error getting CRL item: %s\n"
+msgstr "CRL項目の取得エラー: %s\n"
-msgid "do not allow to bypass the passphrase policy"
-msgstr ""
+#, c-format
+msgid "error inserting item into temporary cache file: %s\n"
+msgstr "一時キャッシュ・ファイルに項目の挿入エラー: %s\n"
-msgid "|N|set minimal required length for new passphrases to N"
-msgstr ""
+#, c-format
+msgid "no CRL issuer found in CRL: %s\n"
+msgstr "CRLに発行者がありません: %s\n"
-msgid "|N|require at least N non-alpha characters for a new passphrase"
-msgstr ""
+msgid "locating CRL issuer certificate by authorityKeyIdentifier\n"
+msgstr "CRL発行証明書をauthorityKeyIdentifierで見つけます\n"
-msgid "|FILE|check new passphrases against pattern in FILE"
-msgstr ""
+#, c-format
+msgid "CRL signature verification failed: %s\n"
+msgstr "CRL署名の検証に失敗しました: %s\n"
-#, fuzzy
-msgid "|N|expire the passphrase after N days"
-msgstr "�������"
+#, c-format
+msgid "error checking validity of CRL issuer certificate: %s\n"
+msgstr "CRL発行者証明書の検証検査エラ−: %s\n"
-#, fuzzy
-msgid "do not allow the reuse of old passphrases"
-msgstr "�ѥ��ե졼���κ������顼: %s\n"
+#, c-format
+msgid "ksba_crl_new failed: %s\n"
+msgstr "ksba_crl_new が失敗しました: %s\n"
-msgid "|NAME|use NAME as default secret key"
-msgstr ""
+#, c-format
+msgid "ksba_crl_set_reader failed: %s\n"
+msgstr "ksba_crl_set_reader が失敗しました: %s\n"
-#, fuzzy
-msgid "|NAME|encrypt to user ID NAME as well"
-msgstr "|̾��|��̾�����Ѥ˰Ź沽"
+#, c-format
+msgid "removed stale temporary cache file '%s'\n"
+msgstr "古い一時キャッシュ・ファイル'%s'を削除しました\n"
-msgid "|SPEC|set up email aliases"
-msgstr ""
+#, c-format
+msgid "problem removing stale temporary cache file '%s': %s\n"
+msgstr "古い一時キャッシュ・ファイル'%s'が削除の問題: %s\n"
-msgid "Configuration for Keyservers"
-msgstr ""
+#, c-format
+msgid "error creating temporary cache file '%s': %s\n"
+msgstr "一時キャッシュ・ファイル'%s'の作成エラー: %s\n"
-#, fuzzy
-msgid "|URL|use keyserver at URL"
-msgstr "�������С���URL�������ǽ\n"
+#, c-format
+msgid "crl_parse_insert failed: %s\n"
+msgstr "crl_parse_insert が失敗しました: %s\n"
-msgid "allow PKA lookups (DNS requests)"
-msgstr ""
+#, c-format
+msgid "error finishing temporary cache file '%s': %s\n"
+msgstr "一時キャッシュ・ファイル'%s'の終了エラー: %s\n"
-msgid "|MECHANISMS|use MECHANISMS to locate keys by mail address"
-msgstr ""
+#, c-format
+msgid "error closing temporary cache file '%s': %s\n"
+msgstr "一時キャッシュ・ファイル'%s'のクローズ・エラー: %s\n"
-msgid "disable all access to the dirmngr"
-msgstr ""
+#, c-format
+msgid "WARNING: new CRL still too old; it expired on %s - loading anyway\n"
+msgstr "**警告**: 新しいCRLはまだ古すぎます。%sに期限がきています - それでも読み込みます\n"
-msgid "|NAME|use encoding NAME for PKCS#12 passphrases"
-msgstr ""
+#, c-format
+msgid "new CRL still too old; it expired on %s\n"
+msgstr "新しいCRLはまだ古すぎます。%sに期限がきています\n"
-msgid "do not check CRLs for root certificates"
-msgstr ""
+#, c-format
+msgid "unknown critical CRL extension %s\n"
+msgstr "不明のクリティカルCRLの拡張 %s\n"
-msgid "Options controlling the format of the output"
-msgstr ""
+#, c-format
+msgid "error reading CRL extensions: %s\n"
+msgstr "CRL拡張の読み込みエラー: %s\n"
-msgid "Options controlling the interactivity and enforcement"
-msgstr ""
+#, c-format
+msgid "creating cache file '%s'\n"
+msgstr "キャッシュ・ファイル'%s'の作成\n"
-msgid "Configuration for HTTP servers"
-msgstr ""
+#, c-format
+msgid "problem renaming '%s' to '%s': %s\n"
+msgstr "'%s'から'%s'へ名前変更の問題: %s\n"
-msgid "use system's HTTP proxy setting"
+msgid ""
+"updating the DIR file failed - cache entry will get lost with the next "
+"program start\n"
msgstr ""
+"DIRファイルの更新の失敗 - キャッシュ・エントリは次のプログラムの開始で失われます\n"
-msgid "Configuration of LDAP servers to use"
-msgstr ""
+#, c-format
+msgid "Begin CRL dump (retrieved via %s)\n"
+msgstr "CRLダンプの開始 (%s から取得)\n"
-msgid "LDAP server list"
+msgid ""
+" ERROR: The CRL will not be used because it was still too old after an "
+"update!\n"
msgstr ""
+"*エラー*: CRLは使用されません。更新後でも、古すぎるからです!\n"
-msgid "Configuration for OCSP"
+msgid ""
+" ERROR: The CRL will not be used due to an unknown critical extension!\n"
msgstr ""
+"*エラー*: CRLは不明なクリティカル拡張のため使用されません!\n"
+
+msgid " ERROR: The CRL will not be used\n"
+msgstr "*エラー*: CRLは使用されません\n"
+
+msgid " ERROR: This cached CRL may have been tampered with!\n"
+msgstr "*エラー*: このキャッシュされたCRLは変更されているかもしれません!\n"
+
+msgid " WARNING: invalid cache record length\n"
+msgstr "*警告*: 無効なキャッシュ・レコード長\n"
#, c-format
-msgid "External verification of component %s failed"
-msgstr ""
+msgid "problem reading cache record: %s\n"
+msgstr "キャッシュ・レコードの読み込みの問題: %s\n"
-msgid "Note that group specifications are ignored\n"
-msgstr ""
+#, c-format
+msgid "problem reading cache key: %s\n"
+msgstr "キャッシュ鍵の再読み込みの問題: %s\n"
-msgid "list all components"
-msgstr ""
+#, c-format
+msgid "error reading cache entry from db: %s\n"
+msgstr "dbからキャッシュ・エントリの読み込みエラー: %s\n"
-msgid "check all programs"
-msgstr ""
+msgid "End CRL dump\n"
+msgstr "CRLダンプの終了\n"
-msgid "|COMPONENT|list options"
-msgstr ""
+#, c-format
+msgid "crl_fetch via DP failed: %s\n"
+msgstr "DPからcrl_fetchが失敗しました: %s\n"
-msgid "|COMPONENT|change options"
-msgstr ""
+#, c-format
+msgid "crl_cache_insert via DP failed: %s\n"
+msgstr "DPからcrl_cache_insertが失敗しました: %s\n"
-msgid "|COMPONENT|check options"
-msgstr ""
+#, c-format
+msgid "crl_cache_insert via issuer failed: %s\n"
+msgstr "発行者からcrl_cache_insertが失敗しました: %s\n"
-msgid "apply global default values"
-msgstr ""
+msgid "reader to file mapping table full - waiting\n"
+msgstr "readerからファイル・マッピングのテーブルがいっぱいです - 待ちます\n"
-msgid "get the configuration directories for gpgconf"
-msgstr ""
+msgid "using \"http\" instead of \"https\"\n"
+msgstr "\"http\" を \"https\" の代わりに使います\n"
-#, fuzzy
-msgid "list global configuration file"
-msgstr "̤�Τι������ܡ�%s��\n"
+#, c-format
+msgid "CRL access not possible due to disabled %s\n"
+msgstr "CRLアクセスは停止された%sのため不可能です\n"
-#, fuzzy
-msgid "check global configuration file"
-msgstr "̤�Τι������ܡ�%s��\n"
+#, c-format
+msgid "error initializing reader object: %s\n"
+msgstr "リーダ・オブジェクトの初期化エラー: %s\n"
-msgid "use as output file"
-msgstr "���ϥե�����Ȥ��ƻ���"
+#, c-format
+msgid "URL '%s' redirected to '%s' (%u)\n"
+msgstr "URL'%s' は '%s' (%u) へリダイレクトされました\n"
-msgid "activate changes at runtime, if possible"
-msgstr ""
+msgid "too many redirections\n"
+msgstr "リダイレクトが多すぎます\n"
-#, fuzzy
-msgid "Usage: gpgconf [options] (-h for help)"
-msgstr "�Ȥ���: gpg [���ץ����] [�ե�����] (�إ�פ� -h)"
+#, c-format
+msgid "error retrieving '%s': %s\n"
+msgstr "'%s'を取得する際のエラー: %s\n"
+
+#, c-format
+msgid "error retrieving '%s': http status %u\n"
+msgstr "'%s'の取得エラー: httpステイタス %u\n"
+
+#, c-format
+msgid "certificate search not possible due to disabled %s\n"
+msgstr "禁止されているため、証明書の探索ができません: %s\n"
+
+msgid "use OCSP instead of CRLs"
+msgstr "OCSPをCRLの代わりに使います"
+
+msgid "check whether a dirmngr is running"
+msgstr "dirmngrが動いているかどうか確認します"
+
+msgid "add a certificate to the cache"
+msgstr "証明書をキャッシュに追加します"
+
+msgid "validate a certificate"
+msgstr "証明書を検証する"
+
+msgid "lookup a certificate"
+msgstr "証明書を探索する"
+
+msgid "lookup only locally stored certificates"
+msgstr "ローカルに保持された証明書だけを探索します"
+
+msgid "expect an URL for --lookup"
+msgstr "--lookupにはURLがきます"
+
+msgid "load a CRL into the dirmngr"
+msgstr "dirmngrにCRLをロードする"
+
+msgid "special mode for use by Squid"
+msgstr "Squidのための特別なモード"
+
+msgid "expect certificates in PEM format"
+msgstr "証明書はPEM形式を期待します"
+
+msgid "force the use of the default OCSP responder"
+msgstr "デフォルトOCSP応答の使用を強制します"
+
+msgid "Usage: dirmngr-client [options] [certfile|pattern] (-h for help)\n"
+msgstr ""
+"使い方: dirmngr-client [オプション] [証明書ファイル|パターン] (ヘルプは -h)\n"
msgid ""
-"Syntax: gpgconf [options]\n"
-"Manage configuration options for tools of the GnuPG system\n"
+"Syntax: dirmngr-client [options] [certfile|pattern]\n"
+"Test an X.509 certificate against a CRL or do an OCSP check\n"
+"The process returns 0 if the certificate is valid, 1 if it is\n"
+"not valid and other error codes for general failures\n"
msgstr ""
+"形式: dirmngr-client [オプション] [証明書ファイル|パターン]\n"
+"X.509証明書をCRLに対してテストする、あるいはOCSPチェックを行う\n"
+"プロセスは証明書が有効の場合、0を返し、有効でない場合、1 を返す。\n"
+"一般の失敗の場合、そのほかのエラーコードを返す\n"
-#, fuzzy
-msgid "usage: gpgconf [options] "
-msgstr "�Ȥ���: gpg [���ץ����] "
+#, c-format
+msgid "error reading certificate from stdin: %s\n"
+msgstr "stdinから証明書読み込みエラー: %s\n"
-msgid "Need one component argument"
-msgstr ""
+#, c-format
+msgid "error reading certificate from '%s': %s\n"
+msgstr "'%s'から証明書の読み込みエラー: %s\n"
-#, fuzzy
-msgid "Component not found"
-msgstr "�����������Ĥ���ޤ���"
+msgid "certificate too large to make any sense\n"
+msgstr "証明書は意味のあるものとしては大きすぎます\n"
-#, fuzzy
-msgid "No argument allowed"
-msgstr "�������ޥ�ɤ϶ػߤ���Ƥ��ޤ�\n"
+#, c-format
+msgid "lookup failed: %s\n"
+msgstr "検索に失敗しました: %s\n"
+
+#, c-format
+msgid "loading CRL '%s' failed: %s\n"
+msgstr "CRL'%s'の読み込みが失敗しました: %s\n"
+
+msgid "a dirmngr daemon is up and running\n"
+msgstr "dirmngr daemonが起動され動いています\n"
+
+#, c-format
+msgid "validation of certificate failed: %s\n"
+msgstr "証明書の検証に失敗しました: %s\n"
+
+msgid "certificate is valid\n"
+msgstr "証明書は正しいです\n"
+
+msgid "certificate has been revoked\n"
+msgstr "証明書は失効済みです\n"
+
+#, c-format
+msgid "certificate check failed: %s\n"
+msgstr "証明書の検査に失敗しました: %s\n"
+
+#, c-format
+msgid "got status: '%s'\n"
+msgstr "ステイタス'%s'を取得しました\n"
+
+#, c-format
+msgid "error writing base64 encoding: %s\n"
+msgstr "base64エンコーディングの書き込みエラー: %s\n"
+
+#, c-format
+msgid "failed to allocate assuan context: %s\n"
+msgstr "assuanコンテクストの確保に失敗しました: %s\n"
+
+msgid "apparently no running dirmngr\n"
+msgstr "あきらかにdirmngrが動いていません\n"
+
+msgid "no running dirmngr - starting one\n"
+msgstr "dirmngrが動いていません - 開始します\n"
+
+msgid "malformed DIRMNGR_INFO environment variable\n"
+msgstr "DIRMNGR_INFO環境変数が破壊されています\n"
+
+#, c-format
+msgid "dirmngr protocol version %d is not supported\n"
+msgstr "dirmngrプロトコル・バージョン%dはサポートされていません\n"
+
+msgid "can't connect to the dirmngr - trying fall back\n"
+msgstr "dirmngrに接続できません - フォールバックを試します\n"
+
+#, c-format
+msgid "can't connect to the dirmngr: %s\n"
+msgstr "dirmngrへ接続できません: %s\n"
+
+#, c-format
+msgid "unsupported inquiry '%s'\n"
+msgstr "サポートされていない問い合わせ: '%s'\n"
+
+msgid "absolute file name expected\n"
+msgstr "絶対ファイル名がきます\n"
+
+#, c-format
+msgid "looking up '%s'\n"
+msgstr "'%s'を検索します\n"
+
+msgid "run as windows service (background)"
+msgstr "ウィンドウズ・サービスとして実行 (バックグラウンド)"
+
+msgid "list the contents of the CRL cache"
+msgstr "CRLキャッシュの内容をリストします"
+
+msgid "|FILE|load CRL from FILE into cache"
+msgstr "|FILE|FILEからCRLをキャッシュにロードする"
+
+msgid "|URL|fetch a CRL from URL"
+msgstr "|URL|URLからCRLを取得します"
+
+msgid "shutdown the dirmngr"
+msgstr "dirmngrをシャットダウンする"
+
+msgid "flush the cache"
+msgstr "キャッシュをフラッシュします"
+
+msgid "|FILE|write server mode logs to FILE"
+msgstr "|FILE|FILEにサーバ・モードのログを書き出す"
+
+msgid "run without asking a user"
+msgstr "ユーザに問い合わせせずに実行"
+
+msgid "force loading of outdated CRLs"
+msgstr "期日の過ぎたCRLのロードを強制する"
+
+msgid "allow sending OCSP requests"
+msgstr "OCSP要求の送信を認める"
+
+msgid "inhibit the use of HTTP"
+msgstr "HTTPの使用を禁止する"
+
+msgid "inhibit the use of LDAP"
+msgstr "LDAPの使用を禁止する"
+
+msgid "ignore HTTP CRL distribution points"
+msgstr "HTTP CRL配布ポイントを無視する"
+
+msgid "ignore LDAP CRL distribution points"
+msgstr "LDAP CRL配布ポイントを無視する"
+
+msgid "ignore certificate contained OCSP service URLs"
+msgstr "OCSPサービスURLに入っている証明書を無視する"
+
+msgid "|URL|redirect all HTTP requests to URL"
+msgstr "|URL|すべてのHTTPリクエストをURLにリダイレクトする"
+
+msgid "|HOST|use HOST for LDAP queries"
+msgstr "|HOST|LDAPの問い合わせにHOSTを使う"
+
+msgid "do not use fallback hosts with --ldap-proxy"
+msgstr "--ldap-proxy にフォールバック・ホストを使わない"
+
+msgid "|FILE|read LDAP server list from FILE"
+msgstr "|FILE|FILEからLDAPサーバリストを読み込みます"
+
+msgid "add new servers discovered in CRL distribution points to serverlist"
+msgstr "CRL配布ポイントに発見された新しいサーバを serverlist に追加する"
+
+msgid "|N|set LDAP timeout to N seconds"
+msgstr "|N|LDAPのタイムアウトをN秒とする"
+
+msgid "|URL|use OCSP responder at URL"
+msgstr "|URL|OCSP応答としてURLを使用"
+
+msgid "|FPR|OCSP response signed by FPR"
+msgstr "|FPR|FPRで署名されたOCSPレスポンス"
+
+msgid "|N|do not return more than N items in one query"
+msgstr "|N|一つのクエリでNを越えるのアイテムを返さない"
-#, fuzzy
msgid ""
"@\n"
-"Commands:\n"
-" "
+"(See the \"info\" manual for a complete listing of all commands and "
+"options)\n"
msgstr ""
-"@���ޥ��:\n"
-" "
-
-#, fuzzy
-msgid "decryption modus"
-msgstr "���������\n"
+"@\n"
+"(コマンドとオプション全部の一覧は、\"info\" マニュアルをご覧ください)\n"
-#, fuzzy
-msgid "encryption modus"
-msgstr "���������\n"
+msgid "Usage: dirmngr [options] (-h for help)"
+msgstr "使い方: dirmngr [オプション] (ヘルプは -h)"
-msgid "tool class (confucius)"
+msgid ""
+"Syntax: dirmngr [options] [command [args]]\n"
+"LDAP and OCSP access for GnuPG\n"
msgstr ""
+"形式: dirmngr [オプション] [コマンド [引数]]\n"
+"GnuPGのLDAPとOCSPアクセス\n"
-#, fuzzy
-msgid "program filename"
-msgstr "--store [�ե�����̾]"
+#, c-format
+msgid "valid debug levels are: %s\n"
+msgstr "有効なdebugレベルは: %s\n"
-msgid "secret key file (required)"
-msgstr ""
+msgid "usage: dirmngr [options] "
+msgstr "使い方: dirmngr [オプション] "
-msgid "input file name (default stdin)"
-msgstr ""
+msgid "colons are not allowed in the socket name\n"
+msgstr "コロンはソケット名に許されません\n"
-#, fuzzy
-msgid "Usage: symcryptrun [options] (-h for help)"
-msgstr "�Ȥ���: gpg [���ץ����] [�ե�����] (�إ�פ� -h)"
+#, c-format
+msgid "fetching CRL from '%s' failed: %s\n"
+msgstr "'%s'からCRLの取得の失敗: %s\n"
+
+#, c-format
+msgid "processing CRL from '%s' failed: %s\n"
+msgstr "'%s'からCRLの処理に失敗: %s\n"
+
+#, c-format
+msgid "%s:%u: line too long - skipped\n"
+msgstr "%s:%u: 行が長すぎます - スキップされました\n"
+
+#, c-format
+msgid "%s:%u: invalid fingerprint detected\n"
+msgstr "%s:%u: 無効なフィンガー・プリントが検出されました\n"
+
+#, c-format
+msgid "%s:%u: read error: %s\n"
+msgstr "%s:%u: 読み込みエラー: %s\n"
+
+#, c-format
+msgid "%s:%u: garbage at end of line ignored\n"
+msgstr "%s:%u: 行末のゴミを無視\n"
+
+msgid "SIGHUP received - re-reading configuration and flushing caches\n"
+msgstr "SIGHUPを受け取り - 設定を読み直し、キャッシュをフラッシュ\n"
+
+msgid "SIGUSR2 received - no action defined\n"
+msgstr "SIGUSR2を受け取り - 動作は定義されない\n"
+
+msgid "SIGTERM received - shutting down ...\n"
+msgstr "SIGTERMを受け取り - シャットダウン...\n"
+
+#, c-format
+msgid "SIGTERM received - still %d active connections\n"
+msgstr "SIGTERMを受け取り - %d本のアクティブな接続がまだあります\n"
+
+msgid "shutdown forced\n"
+msgstr "強制的にシャットダウンする\n"
+
+msgid "SIGINT received - immediate shutdown\n"
+msgstr "SIGINTを受け取り - すぐにシャットダウン\n"
+
+#, c-format
+msgid "signal %d received - no action defined\n"
+msgstr "シグナル%dを受け取り - アクションは定義されない\n"
+
+msgid "return all values in a record oriented format"
+msgstr "レコード形式ですべての値を返す"
+
+msgid "|NAME|ignore host part and connect through NAME"
+msgstr "|NAME|host部分を無視してNAMEをとおして接続する"
+
+msgid "|NAME|connect to host NAME"
+msgstr "|NAME|ホストNAMEに接続する"
+
+msgid "|N|connect to port N"
+msgstr "|N|ポートNに接続します"
+
+msgid "|NAME|use user NAME for authentication"
+msgstr "|NAME|ユーザNAMEを認証に使う"
+
+msgid "|PASS|use password PASS for authentication"
+msgstr "|PASS|パスワードPASSを認証に使う"
+
+msgid "take password from $DIRMNGR_LDAP_PASS"
+msgstr "パスワードを$DIRMNGR_LDAP_PASSから取ってくる"
+
+msgid "|STRING|query DN STRING"
+msgstr "|STRING|DN STRINGをクエリする"
+
+msgid "|STRING|use STRING as filter expression"
+msgstr "|STRING|STRINGをフィルタ式に使う"
+
+msgid "|STRING|return the attribute STRING"
+msgstr "|STRING|STRINGの属性を返す"
+
+msgid "Usage: dirmngr_ldap [options] [URL] (-h for help)\n"
+msgstr "使い方: dirmngr_ldap [オプション] [URL] (ヘルプは -h)\n"
msgid ""
-"Syntax: symcryptrun --class CLASS --program PROGRAM --keyfile KEYFILE "
-"[options...] COMMAND [inputfile]\n"
-"Call a simple symmetric encryption tool\n"
+"Syntax: dirmngr_ldap [options] [URL]\n"
+"Internal LDAP helper for Dirmngr\n"
+"Interface and options may change without notice\n"
msgstr ""
+"形式: dirmngr_ldap [オプション] [URL]\n"
+"Dirmngrの内部LDAPヘルパー\n"
+"インタフェースとオプションは事前の通知なく変更されることがあります\n"
-#, fuzzy, c-format
-msgid "%s on %s aborted with status %i\n"
-msgstr "%s��%s�ȤȤ�˻Ȥ����ȤϤǤ��ޤ���!\n"
+#, c-format
+msgid "invalid port number %d\n"
+msgstr "無効なポート番号 %d\n"
-#, fuzzy, c-format
-msgid "%s on %s failed with status %i\n"
-msgstr "��%s�פ�fstat��%s�Ǽ��Ԥ��ޤ���: %s\n"
+#, c-format
+msgid "scanning result for attribute '%s'\n"
+msgstr "属性'%s'のスキャン結果\n"
-#, fuzzy, c-format
-msgid "can't create temporary directory '%s': %s\n"
-msgstr "�ǥ��쥯�ȥ꡼��%s�פ������Ǥ��ޤ���: %s\n"
+#, c-format
+msgid "error writing to stdout: %s\n"
+msgstr "stdoutへの書き込みエラー: %s\n"
#, c-format
-msgid "could not open %s for writing: %s\n"
-msgstr ""
+msgid " available attribute '%s'\n"
+msgstr " 利用可能な属性'%s'\n"
-#, fuzzy, c-format
-msgid "error writing to %s: %s\n"
-msgstr "���ء�%s�פν���ߥ��顼: %s\n"
+#, c-format
+msgid "attribute '%s' not found\n"
+msgstr "属性'%s'が見つかりません\n"
-#, fuzzy, c-format
-msgid "error reading from %s: %s\n"
-msgstr "��%s�פ��ɽФ����顼: %s\n"
+#, c-format
+msgid "found attribute '%s'\n"
+msgstr "属性'%s'が見つかりました\n"
-#, fuzzy, c-format
-msgid "error closing %s: %s\n"
-msgstr "��%s�פǥ��顼: %s\n"
+#, c-format
+msgid "processing url '%s'\n"
+msgstr "url'%s'を処理\n"
-#, fuzzy
-msgid "no --program option provided\n"
-msgstr "��֥ץ������μ¹Ԥϡ����ݡ��Ȥ��Ƥ��ޤ���\n"
+#, c-format
+msgid " user '%s'\n"
+msgstr " ユーザ '%s'\n"
-msgid "only --decrypt and --encrypt are supported\n"
-msgstr ""
+#, c-format
+msgid " pass '%s'\n"
+msgstr " パスワード '%s'\n"
-msgid "no --keyfile option provided\n"
-msgstr ""
+#, c-format
+msgid " host '%s'\n"
+msgstr " ホスト '%s'\n"
-msgid "cannot allocate args vector\n"
-msgstr ""
+#, c-format
+msgid " port %d\n"
+msgstr " ポート %d\n"
-#, fuzzy, c-format
-msgid "could not create pipe: %s\n"
-msgstr "��%s�פ������Ǥ��ޤ���: %s\n"
+#, c-format
+msgid " DN '%s'\n"
+msgstr " DN '%s'\n"
-#, fuzzy, c-format
-msgid "could not create pty: %s\n"
-msgstr "��%s�פ������Ǥ��ޤ���: %s\n"
+#, c-format
+msgid " filter '%s'\n"
+msgstr " フィルタ '%s'\n"
#, c-format
-msgid "could not fork: %s\n"
-msgstr ""
+msgid " attr '%s'\n"
+msgstr " 属性 '%s'\n"
-#, fuzzy, c-format
-msgid "execv failed: %s\n"
-msgstr "�����˼��Ԥ��ޤ���: %s\n"
+#, c-format
+msgid "no host name in '%s'\n"
+msgstr "'%s'にホスト名がありません\n"
-#, fuzzy, c-format
-msgid "select failed: %s\n"
-msgstr "���֥��å��κ���˼��Ԥ��ޤ���: %s\n"
+#, c-format
+msgid "no attribute given for query '%s'\n"
+msgstr "クエリ '%s' に属性が指定されていません\n"
-#, fuzzy, c-format
-msgid "read failed: %s\n"
-msgstr "�����˼��Ԥ��ޤ���: %s\n"
+msgid "WARNING: using first attribute only\n"
+msgstr "*警告*: 最初の属性だけを使っています\n"
-#, fuzzy, c-format
-msgid "pty read failed: %s\n"
-msgstr "�����˼��Ԥ��ޤ���: %s\n"
+#, c-format
+msgid "LDAP init to '%s:%d' failed: %s\n"
+msgstr "'%s:%d'のLDAP初期化に失敗: %s\n"
-#, fuzzy, c-format
-msgid "waitpid failed: %s\n"
-msgstr "�����˼��Ԥ��ޤ���: %s\n"
+#, c-format
+msgid "binding to '%s:%d' failed: %s\n"
+msgstr "'%s:%d'のバインドに失敗: %s\n"
#, c-format
-msgid "child aborted with status %i\n"
-msgstr ""
+msgid "searching '%s' failed: %s\n"
+msgstr "'%s'の探索に失敗しました: %s\n"
-#, fuzzy, c-format
-msgid "cannot allocate infile string: %s\n"
-msgstr "�Хå����åס��ե������%s�פ������Ǥ��ޤ���: %s\n"
+#, c-format
+msgid "'%s' is not an LDAP URL\n"
+msgstr "'%s'は、LDAP URLではありません\n"
-#, fuzzy, c-format
-msgid "cannot allocate outfile string: %s\n"
-msgstr "�Хå����åס��ե������%s�פ������Ǥ��ޤ���: %s\n"
+#, c-format
+msgid "'%s' is an invalid LDAP URL\n"
+msgstr "'%s' は無効なLDAP URLです\n"
#, c-format
-msgid "either %s or %s must be given\n"
-msgstr ""
+msgid "error allocating memory: %s\n"
+msgstr "メモリの確保のエラー: %s\n"
-msgid "no class provided\n"
-msgstr ""
+#, c-format
+msgid "error printing log line: %s\n"
+msgstr "log出力エラー: %s\n"
-#, fuzzy, c-format
-msgid "class %s is not supported\n"
-msgstr "�ݸ�����%d�ϥ��ݡ��Ȥ��Ƥ��ޤ���\n"
+#, c-format
+msgid "error reading log from ldap wrapper %d: %s\n"
+msgstr "ldap wrapper %dからのログの読み込みエラー: %s\n"
-#, fuzzy
-msgid "Usage: gpg-check-pattern [options] patternfile (-h for help)\n"
-msgstr "�Ȥ���: gpg [���ץ����] [�ե�����] (�إ�פ� -h)"
+#, c-format
+msgid "npth_select failed: %s - waiting 1s\n"
+msgstr "npth_selectに失敗しました: %s - 一秒待ちます\n"
-msgid ""
-"Syntax: gpg-check-pattern [options] patternfile\n"
-"Check a passphrase given on stdin against the patternfile\n"
-msgstr ""
+#, c-format
+msgid "ldap wrapper %d ready"
+msgstr "ldap wrapper %d が準備完了"
-#~ msgid "the trustdb is corrupted; please run \"gpg --fix-trustdb\".\n"
-#~ msgstr ""
-#~ "���ѥǡ����١���������Ƥ��ޤ�����gpg --fix-trustdb�ɤ�¹Ԥ��Ƥ�����"
-#~ "����\n"
-
-#, fuzzy
-#~ msgid "Please report bugs to <"
-#~ msgstr "�Х��򸫤Ĥ����� <[email protected]> �ޤǤ���𤯤�������\n"
-
-#, fuzzy
-#~ msgid "Please report bugs to "
-#~ msgstr "�Х��򸫤Ĥ����� <[email protected]> �ޤǤ���𤯤�������\n"
-
-#, fuzzy
-#~ msgid "DSA keypair will have %u bits.\n"
-#~ msgstr "DSA���Ф�1024�ӥåȤˤʤ�ޤ���\n"
-
-#~ msgid "Repeat passphrase\n"
-#~ msgstr "�ѥ��ե졼���������\n"
-
-#, fuzzy
-#~ msgid "||Please enter your PIN at the reader's keypad%%0A[sigs done: %lu]"
-#~ msgstr "PIN [��̾��: %lu]"
-
-#~ msgid "|A|Admin PIN"
-#~ msgstr "|A|Admin PIN"
-
-#, fuzzy
-#~ msgid "read options from file"
-#~ msgstr "��%s�פ��饪�ץ������ɤ߽Ф��ޤ�\n"
-
-#~ msgid "|[file]|make a signature"
-#~ msgstr "|[�ե�����]|��̾�����"
-
-#~ msgid "generate PGP 2.x compatible messages"
-#~ msgstr "PGP 2.x�ߴ��Υ�å�����������"
-
-#, fuzzy
-#~ msgid "|[FILE]|make a signature"
-#~ msgstr "|[�ե�����]|��̾�����"
-
-#, fuzzy
-#~ msgid "|[FILE]|make a clear text signature"
-#~ msgstr "|[�ե�����]|���ꥢ��̾�����"
-
-#, fuzzy
-#~ msgid "use the default key as default recipient"
-#~ msgstr "�����å�: �������ϴ���μ���ͤȤ��Ƥ⤦����ѤߤǤ�\n"
-
-#, fuzzy
-#~ msgid "force v3 signatures"
-#~ msgstr "��̾�μ���"
-
-#, fuzzy
-#~ msgid "add this secret keyring to the list"
-#~ msgstr "���μ¹Ԥˤ���̩��������ޤ���\n"
-
-#, fuzzy
-#~ msgid "|NAME|set terminal charset to NAME"
-#~ msgstr "|̾��|��̾�����Ѥ˰Ź沽"
-
-#, fuzzy
-#~ msgid "|N|use compress algorithm N"
-#~ msgstr "̤�Τΰ��̥��르�ꥺ��Ǥ�"
-
-#, fuzzy
-#~ msgid "remove key from the public keyring"
-#~ msgstr "�������ؤ��鸰������"
-
-#~ msgid ""
-#~ "It's up to you to assign a value here; this value will never be exported\n"
-#~ "to any 3rd party. We need it to implement the web-of-trust; it has "
-#~ "nothing\n"
-#~ "to do with the (implicitly created) web-of-certificates."
-#~ msgstr ""
-#~ "�����ͤλ���ϡ����ʤ�����Ǥ��������ͤϡ��軰�Ԥ˷褷\n"
-#~ "���󶡤���ޤ��󡣤���ϡ�web-of-trust �μ�����ɬ�פǡ�\n"
-#~ "(����Ū�ˤǤ���) web-of-certificates �Ȥ�̵�ط��Ǥ���"
-
-#~ msgid ""
-#~ "To build the Web-of-Trust, GnuPG needs to know which keys are\n"
-#~ "ultimately trusted - those are usually the keys for which you have\n"
-#~ "access to the secret key. Answer \"yes\" to set this key to\n"
-#~ "ultimately trusted\n"
-#~ msgstr ""
-#~ "Web-of-Trust���ۤ��뤿��GnuPG�ϡ��ɤθ�������Ū�˿��Ѥ���\n"
-#~ "�Τ����Τ�ɬ�פ�����ޤ�������ϤդĤ�����̩���˥��������Ǥ�\n"
-#~ "�븰�Τ��ȤǤ������θ�������Ū�˿��Ѥ��뤳�Ȥˤ���ʤ顢\n"
-#~ "��yes�ɤ������Ƥ���������\n"
-
-#~ msgid "If you want to use this untrusted key anyway, answer \"yes\"."
-#~ msgstr "���ο��ѤǤ��ʤ�����Ȥ������ʤ���С���no�ɤ������Ƥ���������"
-
-#~ msgid ""
-#~ "Enter the user ID of the addressee to whom you want to send the message."
-#~ msgstr "���ʤ��������å���������Υ桼����ID�����Ϥ��Ƥ���������"
-
-#~ msgid ""
-#~ "Select the algorithm to use.\n"
-#~ "\n"
-#~ "DSA (aka DSS) is the Digital Signature Algorithm and can only be used\n"
-#~ "for signatures.\n"
-#~ "\n"
-#~ "Elgamal is an encrypt-only algorithm.\n"
-#~ "\n"
-#~ "RSA may be used for signatures or encryption.\n"
-#~ "\n"
-#~ "The first (primary) key must always be a key which is capable of signing."
-#~ msgstr ""
-#~ "���Ѥ��륢�르�ꥺ������򤷤Ƥ���������\n"
-#~ "\n"
-#~ "DSA (��̾DSS) �ϡ���̾���Ѥ��Żҽ�̾���르�ꥺ��Ǥ���\n"
-#~ "\n"
-#~ "Elgamal�ϡ��Ź沽�ΤߤΥ��르�ꥺ��Ǥ���\n"
-#~ "\n"
-#~ "RSA�ϡ���̾�ˤ�Ź沽�ˤ�Ȥ��ޤ���\n"
-#~ "\n"
-#~ "�ǽ�θ�(�縰)�ϡ���̾�˻��ѤǤ��븰�Ǥʤ���Фʤ�ޤ���"
-
-#~ msgid ""
-#~ "In general it is not a good idea to use the same key for signing and\n"
-#~ "encryption. This algorithm should only be used in certain domains.\n"
-#~ "Please consult your security expert first."
-#~ msgstr ""
-#~ "���̤ˡ���̾�ȰŹ沽��Ʊ������Ȥ��Τϡ������������ޤ���\n"
-#~ "���Υ��르�ꥺ��ϡ�������ϰ�������ǻȤ���٤��Ǥ���\n"
-#~ "�ޤ����������ƥ���������Ȥˤ����̤���������"
-
-#~ msgid "Enter the size of the key"
-#~ msgstr "����Ĺ�������Ϥ��Ƥ�������"
-
-#~ msgid "Answer \"yes\" or \"no\""
-#~ msgstr "��yes�ɤ���no�ɤ������Ƥ�������"
-
-#~ msgid ""
-#~ "Enter the required value as shown in the prompt.\n"
-#~ "It is possible to enter a ISO date (YYYY-MM-DD) but you won't\n"
-#~ "get a good error response - instead the system tries to interpret\n"
-#~ "the given value as an interval."
-#~ msgstr ""
-#~ "�ץ���ץȤ˼����񼰤��ͤ����Ϥ��Ƥ���������\n"
-#~ "ISO�����դν� (YYYY-MM-DD) �Ǥ����ϤǤ��ޤ��������������顼��\n"
-#~ "ɽ������ʤ��Ǥ��礦���������ꡢ�����ƥ�������ͤ���֤��Ѵ�\n"
-#~ "����褦�˻�ߤޤ���"
-
-#~ msgid "Enter the name of the key holder"
-#~ msgstr "����ͭ�Ԥ�̾�������Ϥ��Ƥ�������"
-
-#~ msgid "please enter an optional but highly suggested email address"
-#~ msgstr ""
-#~ "���ץ����Ǥ������Żҥ᡼��Υ��ɥ쥹�����Ϥ��뤳�Ȥ򶯤��侩���ޤ�"
-
-#~ msgid "Please enter an optional comment"
-#~ msgstr "���ץ����Υ����Ȥ����Ϥ��Ƥ�������"
-
-#~ msgid ""
-#~ "N to change the name.\n"
-#~ "C to change the comment.\n"
-#~ "E to change the email address.\n"
-#~ "O to continue with key generation.\n"
-#~ "Q to to quit the key generation."
-#~ msgstr ""
-#~ "N ̾�����ѹ���\n"
-#~ "C �����Ȥ��ѹ���\n"
-#~ "E �Żҥ᡼�롦���ɥ쥹���ѹ���\n"
-#~ "O ��������³�ԡ�\n"
-#~ "Q �������ν�λ��"
-
-#~ msgid ""
-#~ "Answer \"yes\" (or just \"y\") if it is okay to generate the sub key."
-#~ msgstr ""
-#~ "�������������Ƥ褱��С���yes��(�ޤ��ϡ�ñ�ˡ�y��) �������Ƥ���������"
-
-#~ msgid ""
-#~ "When you sign a user ID on a key, you should first verify that the key\n"
-#~ "belongs to the person named in the user ID. It is useful for others to\n"
-#~ "know how carefully you verified this.\n"
-#~ "\n"
-#~ "\"0\" means you make no particular claim as to how carefully you verified "
-#~ "the\n"
-#~ " key.\n"
-#~ "\n"
-#~ "\"1\" means you believe the key is owned by the person who claims to own "
-#~ "it\n"
-#~ " but you could not, or did not verify the key at all. This is useful "
-#~ "for\n"
-#~ " a \"persona\" verification, where you sign the key of a pseudonymous "
-#~ "user.\n"
-#~ "\n"
-#~ "\"2\" means you did casual verification of the key. For example, this "
-#~ "could\n"
-#~ " mean that you verified the key fingerprint and checked the user ID on "
-#~ "the\n"
-#~ " key against a photo ID.\n"
-#~ "\n"
-#~ "\"3\" means you did extensive verification of the key. For example, this "
-#~ "could\n"
-#~ " mean that you verified the key fingerprint with the owner of the key "
-#~ "in\n"
-#~ " person, and that you checked, by means of a hard to forge document "
-#~ "with a\n"
-#~ " photo ID (such as a passport) that the name of the key owner matches "
-#~ "the\n"
-#~ " name in the user ID on the key, and finally that you verified (by "
-#~ "exchange\n"
-#~ " of email) that the email address on the key belongs to the key "
-#~ "owner.\n"
-#~ "\n"
-#~ "Note that the examples given above for levels 2 and 3 are *only* "
-#~ "examples.\n"
-#~ "In the end, it is up to you to decide just what \"casual\" and \"extensive"
-#~ "\"\n"
-#~ "mean to you when you sign other keys.\n"
-#~ "\n"
-#~ "If you don't know what the right answer is, answer \"0\"."
-#~ msgstr ""
-#~ "���Υ桼����ID�˽�̾����Ȥ��ϡ����Υ桼����ID��̾���οͤ���\n"
-#~ "���ͭ���Ƥ��롢�Ȥ������Ȥ򸡾ڤ���٤��Ǥ������ʤ����ɤ���\n"
-#~ "�����տ�����ǧ�����Τ���¾�οͤ������Τ餻��ȡ������Ǥ���\n"
-#~ "\n"
-#~ "\"0\" �ϡ����ʤ����ɤ��������տ�����ǧ�����Τ����ä˼�ĥ����\n"
-#~ " ���Ȥ�����̣�Ǥ���\n"
-#~ "\n"
-#~ "\"1\" �ϡ����ν�ͭ�Ԥȼ�ĥ���Ƥ���ͤ����θ����ͭ���Ƥ��롢��\n"
-#~ " ���ʤ��Ͽ����ƤϤ����ΤΡ����ڤ��������Ƥʤ��ä����ޤ�\n"
-#~ " �ϤǤ��ʤ��ä����Ȥ�����̣�Ǥ�������ϡ��ڥ�͡����Ȥ�\n"
-#~ " �桼�����θ��˽�̾������Ρ��֥ڥ륽�ʡ׳�ǧ�������Ǥ���\n"
-#~ "\n"
-#~ "\"2\" �ϡ����ʤ���������γ�ǧ�򤷤����Ȥ�����̣�Ǥ������Ȥ���\n"
-#~ " ���λ���򸡾ڤ����ե���ID�ˤ������Ƹ��Υ桼����ID�򸡺�\n"
-#~ " ������礬�����Ǥ���\n"
-#~ "\n"
-#~ "\"3\" �ϡ����ʤ������ϰϤˤ錄�기�򸡾ڤ������Ȥ�����̣�Ǥ���\n"
-#~ " ���Ȥ��С����ν�ͭ���ܿͤȸ��λ���򸡾ڤ���(�ѥ��ݡ���\n"
-#~ " �Τ褦��) ��¤�Τ�Ĥ��������ե���ID�Ĥ��μ��ʤǡ����ν�\n"
-#~ " ͭ�Ԥ�̾���������Υ桼����ID��̾���Ȱ��פ��뤳�Ȥ򸡺���\n"
-#~ " �ơ�(�Żҥ᡼��θ򴹤ʤɤ�) �����Żҥ᡼�롦���ɥ쥹��\n"
-#~ " ���ν�ͭ�Ԥ�°���Ƥ��뤳�Ȥ򸡾ڤ�����礬�����Ǥ���\n"
-#~ "\n"
-#~ "�嵭2��3����ϡ�*ñ�ʤ�*��ˤ����ʤ����Ȥ������Ȥ�ǰƬ�ˤ���\n"
-#~ "�Ƥ���������¾�θ��˽�̾����ݡ��ذ���٤�ع��ϰϡ٤������\n"
-#~ "̣���뤫��ǽ�Ū�˷���Τϡ����ʤ��Ǥ���\n"
-#~ "\n"
-#~ "���������Τ狼��ʤ����ϡ���0�פ������Ƥ���������"
-
-#~ msgid "Answer \"yes\" if you want to sign ALL the user IDs"
-#~ msgstr "���Ƥ� �桼����ID�˽�̾��������С���yes�ɤ������Ƥ�������"
-
-#~ msgid ""
-#~ "Answer \"yes\" if you really want to delete this user ID.\n"
-#~ "All certificates are then also lost!"
-#~ msgstr ""
-#~ "���Υ桼����ID�������˺����������С���yes�ɤ������Ƥ���������\n"
-#~ "�����������Ʊ���˾õ�ޤ�!"
-
-#~ msgid "Answer \"yes\" if it is okay to delete the subkey"
-#~ msgstr "���������������Ƥ褱��С���yes�ɤ������Ƥ�������"
-
-#~ msgid ""
-#~ "This is a valid signature on the key; you normally don't want\n"
-#~ "to delete this signature because it may be important to establish a\n"
-#~ "trust connection to the key or another key certified by this key."
-#~ msgstr ""
-#~ "����ϸ��ˤ�������ͭ���ʽ�̾�Ǥ������̤��ν�̾��������٤���\n"
-#~ "�Ϥʤ��Ǥ��礦���ʤ��ʤ顢���ν�̾�ϡ����ؤο��Ѥ��ؤκ����䡢\n"
-#~ "���θ��ˤ������ˤȤäƽ��פ�����Ǥ���"
-
-#~ msgid ""
-#~ "This signature can't be checked because you don't have the\n"
-#~ "corresponding key. You should postpone its deletion until you\n"
-#~ "know which key was used because this signing key might establish\n"
-#~ "a trust connection through another already certified key."
-#~ msgstr ""
-#~ "���ν�̾�Ȱ��פ��븰����ͭ���Ƥ��ʤ��Τǡ����ν�̾�ϸ����Ǥ��ޤ���\n"
-#~ "���θ������Ѥ����ޤǤϡ����ʤ��Ϥ��ν�̾�κ������α����٤��Ǥ���\n"
-#~ "�ʤ��ʤ顢���ν�̾�θ��ϡ��⤦�������줿¾�θ��ǿ��Ѥ��ؤ��������\n"
-#~ "���⤷��ʤ�����Ǥ���"
-
-#~ msgid ""
-#~ "The signature is not valid. It does make sense to remove it from\n"
-#~ "your keyring."
-#~ msgstr ""
-#~ "���ν�̾��ͭ���ǤϤ���ޤ��󡣤��Τ��Ȥϡ����ʤ��θ��ؤ��������٤���\n"
-#~ "�Ȥ�����̣�Ǥ���"
-
-#~ msgid ""
-#~ "This is a signature which binds the user ID to the key. It is\n"
-#~ "usually not a good idea to remove such a signature. Actually\n"
-#~ "GnuPG might not be able to use this key anymore. So do this\n"
-#~ "only if this self-signature is for some reason not valid and\n"
-#~ "a second one is available."
-#~ msgstr ""
-#~ "����ϡ����Υ桼����ID���б�������̾�Ǥ����̾���ν�̾��������Τ�\n"
-#~ "�����ͤ��ǤϤ���ޤ��󡣼ºݤˤϡ�GnuPG�Ϥ�Ϥ䤳�θ���Ȥ��ʤ��Τ���\n"
-#~ "����ޤ��󡣤�äơ����μ��ʽ�̾�����餫����ͳ�ˤ��ͭ���ǤϤʤ��ơ�\n"
-#~ "���ؤȤʤ븰��������ˤΤߡ������¹Ԥ��Ƥ���������"
-
-#~ msgid ""
-#~ "Change the preferences of all user IDs (or just of the selected ones)\n"
-#~ "to the current list of preferences. The timestamp of all affected\n"
-#~ "self-signatures will be advanced by one second.\n"
-#~ msgstr ""
-#~ "���� (�ޤ������򤷤�) �桼����ID�������򡢺��������������ѹ�\n"
-#~ "���ޤ����ط����뼫�ʽ�̾�������ϡ�1�ä����ߤޤ���\n"
-
-#~ msgid "Please enter the passhrase; this is a secret sentence \n"
-#~ msgstr "�ѥ��ե졼�������Ϥ��Ƥ����������������̩��ʸ�ϤΤ��ȤǤ� \n"
-
-#~ msgid ""
-#~ "Please repeat the last passphrase, so you are sure what you typed in."
-#~ msgstr "���Ϥ����ѥ��ե졼���γ�ǧ�Τ��ᡢ�����Ϥ��Ƥ���������"
-
-#~ msgid "Give the name of the file to which the signature applies"
-#~ msgstr "��̾��Ԥ��ե������̾������ꤷ�Ƥ�������"
-
-#~ msgid "Answer \"yes\" if it is okay to overwrite the file"
-#~ msgstr "��񤭤��Ƥ褱��С���yes�ɤ������Ƥ�������"
-
-#~ msgid ""
-#~ "Please enter a new filename. If you just hit RETURN the default\n"
-#~ "file (which is shown in brackets) will be used."
-#~ msgstr ""
-#~ "�������ե�����̾�����Ϥ��Ƥ���������ñ��RETURN���ǤĤȡ�\n"
-#~ "(��̤Ǽ�����) ����Υե�����̾����Ѥ��ޤ���"
-
-#~ msgid ""
-#~ "You should specify a reason for the certification. Depending on the\n"
-#~ "context you have the ability to choose from this list:\n"
-#~ " \"Key has been compromised\"\n"
-#~ " Use this if you have a reason to believe that unauthorized persons\n"
-#~ " got access to your secret key.\n"
-#~ " \"Key is superseded\"\n"
-#~ " Use this if you have replaced this key with a newer one.\n"
-#~ " \"Key is no longer used\"\n"
-#~ " Use this if you have retired this key.\n"
-#~ " \"User ID is no longer valid\"\n"
-#~ " Use this to state that the user ID should not longer be used;\n"
-#~ " this is normally used to mark an email address invalid.\n"
-#~ msgstr ""
-#~ "������ͳ����ꤹ�٤��Ǥ�������ط��ˤ������äơ�\n"
-#~ "�ʲ��ΰ����������֤��Ȥ��Ǥ��ޤ���\n"
-#~ " �ָ����ѥ����ޤ�����\n"
-#~ " ǧ�ڤ���Ƥ��ʤ��ͤ���̩���ؤΥ����������������ȿ�����\n"
-#~ " ��­����ͳ�Τ���Ȥ��ˡ������Ȥ��ޤ���\n"
-#~ " �ָ����Ȥ꤫��äƤ��ޤ���\n"
-#~ " ���θ���ʬ�ǿ��������ȸ򴹤����Ȥ��˻Ȥ��ޤ���\n"
-#~ " �ָ��Ϥ⤦���ѤǤ���\n"
-#~ " ���θ���Ȥ��Τ��᤿�Ȥ��˻Ȥ��ޤ���\n"
-#~ " �֥桼����ID���⤦̵���Ǥ���\n"
-#~ " �⤦���Υ桼����ID�ϻȤ��٤��Ǥʤ����Ȥ����Ȥ��˻Ȥ�\n"
-#~ " �ޤ�����������̡��Żҥ᡼��Υ��ɥ쥹��̵���ˤʤä���\n"
-#~ " ���˻Ȥ��ޤ���\n"
-
-#~ msgid ""
-#~ "If you like, you can enter a text describing why you issue this\n"
-#~ "revocation certificate. Please keep this text concise.\n"
-#~ "An empty line ends the text.\n"
-#~ msgstr ""
-#~ "�⤷������������С��ʤ������������ȯ�Ԥ���Τ�����������\n"
-#~ "ʸ�Ϥ����Ϥ��뤳�Ȥ��Ǥ��ޤ���ʸ�Ϥϴʷ�ˤ��Ƥ���������\n"
-#~ "���Ԥǽ����ˤʤ�ޤ���\n"
-
-#~ msgid "can't put notation data into v3 (PGP 2.x style) signatures\n"
-#~ msgstr "����ǡ����ϡ�(PGP 2.x������) v3��̾�ˤ�����ޤ���\n"
-
-#~ msgid "can't put notation data into v3 (PGP 2.x style) key signatures\n"
-#~ msgstr "����ǡ����ϡ�(PGP 2.x������) v3����̾�ˤ�����ޤ���\n"
-
-#~ msgid "can't put a policy URL into v3 (PGP 2.x style) signatures\n"
-#~ msgstr "�ݥꥷ��URL�ϡ�(PGP 2.x������) v3��̾�ˤ�����ޤ���\n"
-
-#~ msgid "can't put a policy URL into v3 key (PGP 2.x style) signatures\n"
-#~ msgstr "�ݥꥷ��URL�ϡ�(PGP 2.x������) v3����̾�ˤ�����ޤ���\n"
-
-#, fuzzy
-#~ msgid "shelll"
-#~ msgstr "help"
-
-#, fuzzy
-#~ msgid ""
-#~ "please see http://www.gnupg.org/download/iconv.html for more information\n"
-#~ msgstr "�ܺ٤�http://www.gnupg.org/faq.html������������\n"
-
-#, fuzzy
-#~ msgid "key generation is not available from the commandline\n"
-#~ msgstr "���Υ��å�����gpg-agent��̵���Ǥ�\n"
-
-#, fuzzy
-#~ msgid "please use the script \"%s\" to generate a new key\n"
-#~ msgstr "�������븰�η������򤷤Ƥ�������:\n"
-
-#~ msgid "cipher extension `%s' not loaded due to unsafe permissions\n"
-#~ msgstr "�����Ǥʤ����ĤΤ��ᡢ�Ź�ˡ��ĥ��%s�פ�����ɤ��ޤ���\n"
-
-#~ msgid "DSA requires the use of a 160 bit hash algorithm\n"
-#~ msgstr "DSA�Ǥ�160�ӥåȤΥϥå��塦���르�ꥺ��λ��Ѥ�ɬ�פǤ�\n"
-
-#, fuzzy
-#~ msgid ".\n"
-#~ msgstr "%s.\n"
-
-#~ msgid "problem with the agent - disabling agent use\n"
-#~ msgstr "����������Ȥ˾㳲: ��������������Ѷػ�\n"
-
-#~ msgid "can't query passphrase in batch mode\n"
-#~ msgstr "�Хå����⡼�ɤǥѥ��ե졼������礻�Ǥ��ޤ���\n"
-
-#~ msgid "Enter passphrase: "
-#~ msgstr "�ѥ��ե졼��������: "
-
-#~ msgid "Repeat passphrase: "
-#~ msgstr "�ѥ��ե졼���������: "
-
-#~ msgid "-k[v][v][v][c] [user-id] [keyring]"
-#~ msgstr "-k[v][v][v][c] [�桼����id] [����]"
-
-#~ msgid "can't gen prime with pbits=%u qbits=%u\n"
-#~ msgstr "pbits=%u qbits=%u���ǿ��������Ǥ��ޤ���\n"
-
-#~ msgid "can't generate a prime with less than %d bits\n"
-#~ msgstr "%d �ӥå�̤�����ǿ��������Ǥ��ޤ���\n"
-
-#~ msgid "no entropy gathering module detected\n"
-#~ msgstr "����ȥ��ԡ������⥸�塼�뤬�����Ф���Ƥ��ޤ���\n"
-
-#, fuzzy
-#~ msgid "can't lock `%s': %s\n"
-#~ msgstr "��%s�פ����å��Ǥ��ޤ���\n"
-
-#~ msgid "can't stat `%s': %s\n"
-#~ msgstr "��%s�פ�Ĵ�٤뤳�Ȥ��Ǥ��ޤ���: %s\n"
-
-#~ msgid "`%s' is not a regular file - ignored\n"
-#~ msgstr "��%s�פ����̤Υե�����ǤϤ���ޤ��� - ̵��\n"
-
-#~ msgid "note: random_seed file is empty\n"
-#~ msgstr "����: random_seed �ե�����϶��Ǥ�\n"
-
-#~ msgid "WARNING: invalid size of random_seed file - not used\n"
-#~ msgstr "�ٹ�: ̵����Ĺ���� random_seed �ե����� - �Ȥ��ޤ���\n"
+#, c-format
+msgid "ldap wrapper %d ready: timeout\n"
+msgstr "ldap wrapper %d が準備完了: タイムアウト\n"
-#~ msgid "can't read `%s': %s\n"
-#~ msgstr "��%s�פ��ɤ�ޤ���: %s\n"
+#, c-format
+msgid "ldap wrapper %d ready: exitcode=%d\n"
+msgstr "ldap wrapper %d が準備完了: exitcode=%d\n"
-#~ msgid "note: random_seed file not updated\n"
-#~ msgstr "����: random_seed �ե�����ι����򤷤ޤ���\n"
+#, c-format
+msgid "waiting for ldap wrapper %d failed: %s\n"
+msgstr "ldap wrapper %dの待ちが失敗: %s\n"
-#~ msgid "can't write `%s': %s\n"
-#~ msgstr "��%s�פ˽񤭹���ޤ���: %s\n"
+#, c-format
+msgid "ldap wrapper %d stalled - killing\n"
+msgstr "ldap wrapper %d が止まりました - killしています\n"
-#~ msgid "can't close `%s': %s\n"
-#~ msgstr "��%s�פ��Ĥ����ޤ���: %s\n"
+#, c-format
+msgid "error spawning ldap wrapper reaper thread: %s\n"
+msgstr "ldap wrapperのスレッドの起動でエラー: %s\n"
-#~ msgid "WARNING: using insecure random number generator!!\n"
-#~ msgstr "�ٹ�: ���ݤ���������Ҥ��Ȥ��Ƥ��ޤ�!!\n"
+#, c-format
+msgid "reading from ldap wrapper %d failed: %s\n"
+msgstr "ldap wrapper %d からの読み込みに失敗しました: %s\n"
-#~ msgid ""
-#~ "The random number generator is only a kludge to let\n"
-#~ "it run - it is in no way a strong RNG!\n"
-#~ "\n"
-#~ "DON'T USE ANY DATA GENERATED BY THIS PROGRAM!!\n"
-#~ "\n"
-#~ msgstr ""
-#~ "��ܤ���Ƥ�����������Ҥϡ��Ź��ѤȤ��ƤϤ����ޤĤǡ�\n"
-#~ "����������Ǥ��ޤ���!\n"
-#~ "\n"
-#~ "���Υץ����������������ǡ�������ڻȤäƤϤ����ޤ���!!\n"
-#~ "\n"
+#, c-format
+msgid "invalid char 0x%02x in host name - not added\n"
+msgstr "ホスト名に無効な文字 0x%02x - 加えません\n"
-#~ msgid ""
-#~ "Please wait, entropy is being gathered. Do some work if it would\n"
-#~ "keep you from getting bored, because it will improve the quality\n"
-#~ "of the entropy.\n"
-#~ msgstr ""
-#~ "�𻨤���������Ƥ��ޤ��Τǡ����Ԥ������������𻨤��μ�������\n"
-#~ "���ޤ��Τǡ��⤷˰�����鲿����Ȥ��Ƥ���������\n"
+#, c-format
+msgid "adding '%s:%d' to the ldap server list\n"
+msgstr "'%s:%d'をLDAPサーバ・リストに追加\n"
-#~ msgid ""
-#~ "\n"
-#~ "Not enough random bytes available. Please do some other work to give\n"
-#~ "the OS a chance to collect more entropy! (Need %d more bytes)\n"
-#~ msgstr ""
-#~ "\n"
-#~ "��ʬ��Ĺ��������������ޤ���OS����ä��𻨤������\n"
-#~ "�Ǥ���褦���������Ƥ�������! (����%d�Х��Ȥ���ޤ�)\n"
+#, c-format
+msgid "malloc failed: %s\n"
+msgstr "mallocが失敗しました: %s\n"
-#, fuzzy
-#~ msgid "card reader not available\n"
-#~ msgstr "��̩���������ޤ���"
+#, c-format
+msgid "start_cert_fetch: invalid pattern '%s'\n"
+msgstr "start_cert_fetch: 無効なパターン '%s'\n"
-#~ msgid "Please insert the card and hit return or enter 'c' to cancel: "
-#~ msgstr "�����ɤ�������return���ǤĤ���'c'�Ǽ�ä�: "
+msgid "ldap_search hit the size limit of the server\n"
+msgstr "ldap_search がサーバのサイズ限界を越えました\n"
-#~ msgid "Hit return when ready or enter 'c' to cancel: "
-#~ msgstr "�Ѱդ���return���ǤĤ���'c'�Ǽ�ä�: "
+msgid "invalid canonical S-expression found\n"
+msgstr "無効な正規S式が見つかりました\n"
-#, fuzzy
-#~ msgid "Enter New Admin PIN: "
-#~ msgstr "Admin PIN������: "
+#, c-format
+msgid "gcry_md_open failed: %s\n"
+msgstr "gcry_md_openに失敗しました: %s\n"
-#, fuzzy
-#~ msgid "Enter New PIN: "
-#~ msgstr "PIN������: "
+#, c-format
+msgid "oops: ksba_cert_hash failed: %s\n"
+msgstr "おっと: ksba_cert_hashが失敗しました: %s\n"
-#~ msgid "Enter Admin PIN: "
-#~ msgstr "Admin PIN������: "
+msgid "bad URL encoding detected\n"
+msgstr "不正なURLエンコーディングが検出されました\n"
-#, fuzzy
-#~ msgid "NOTE: %s is not available in this version\n"
-#~ msgstr "���Υ��å�����gpg-agent��̵���Ǥ�\n"
+#, c-format
+msgid "error reading from responder: %s\n"
+msgstr "応答からの読み込みエラー: %s\n"
-#, fuzzy
-#~ msgid " algorithms on these user IDs:\n"
-#~ msgstr "�����Υ桼����ID�Υ��르�ꥺ��:\n"
+#, c-format
+msgid "response from server too large; limit is %d bytes\n"
+msgstr "サーバからの応答がが長すぎます (上限%dバイト)。\n"
-#~ msgid "general error"
-#~ msgstr "����Ū�ʥ��顼"
+msgid "OCSP request not possible due to disabled HTTP\n"
+msgstr "HTTPが停止されているためOCSPリクエストが不可能です\n"
-#~ msgid "unknown packet type"
-#~ msgstr "̤�ΤΥѥ��åȷ��Ǥ�"
+#, c-format
+msgid "error setting OCSP target: %s\n"
+msgstr "OCSPターゲットの設定エラー: %s\n"
-#~ msgid "unknown pubkey algorithm"
-#~ msgstr "̤�Τθ��������르�ꥺ��Ǥ�"
+#, c-format
+msgid "error building OCSP request: %s\n"
+msgstr "OCSP要求のビルド・エラー: %s\n"
-#~ msgid "unknown digest algorithm"
-#~ msgstr "̤�Τ����󥢥르�ꥺ��Ǥ�"
+#, c-format
+msgid "error connecting to '%s': %s\n"
+msgstr "'%s'の接続エラー: %s\n"
-#~ msgid "bad public key"
-#~ msgstr "�������������Ǥ�"
+#, c-format
+msgid "error reading HTTP response for '%s': %s\n"
+msgstr "'%s'のHTTP応答の読み込みエラー: %s\n"
-#~ msgid "bad secret key"
-#~ msgstr "��̩���������Ǥ�"
+#, c-format
+msgid "error accessing '%s': http status %u\n"
+msgstr "'%s'へアクセスのエラー: httpステイタス %u\n"
-#~ msgid "bad signature"
-#~ msgstr "��̾�������Ǥ�"
+#, c-format
+msgid "error parsing OCSP response for '%s': %s\n"
+msgstr "'%s'に対するOCSP応答解析エラー: %s\n"
-#~ msgid "checksum error"
-#~ msgstr "�����å����ࡦ���顼"
+#, c-format
+msgid "OCSP responder at '%s' status: %s\n"
+msgstr "OSCP応答が '%s' でステイタス: %s\n"
-#~ msgid "can't open the keyring"
-#~ msgstr "���ؤ������ޤ���"
+#, c-format
+msgid "hashing the OCSP response for '%s' failed: %s\n"
+msgstr "'%s'に対するOCSP応答のハッシングに失敗しました: %s\n"
-#~ msgid "invalid packet"
-#~ msgstr "̵���ʥѥ��åȤǤ�"
+msgid "not signed by a default OCSP signer's certificate"
+msgstr "デフォルトOCSP署名者の証明で署名されていません"
-#~ msgid "invalid armor"
-#~ msgstr "̵���������Ǥ�"
+msgid "only SHA-1 is supported for OCSP responses\n"
+msgstr "SHA-1だけがOCSPレスポンスとしてサポートされています\n"
-#~ msgid "no such user id"
-#~ msgstr "���Υ桼����ID�Ϥ���ޤ���"
+#, c-format
+msgid "allocating list item failed: %s\n"
+msgstr "リスト項目の確保に失敗しました: %s\n"
-#~ msgid "secret key not available"
-#~ msgstr "��̩���������ޤ���"
+#, c-format
+msgid "error getting responder ID: %s\n"
+msgstr "応答IDの取得エラー: %s\n"
-#~ msgid "wrong secret key used"
-#~ msgstr "���ä���̩�����Ȥ��Ƥ��ޤ�"
+msgid "no suitable certificate found to verify the OCSP response\n"
+msgstr "OCSP応答を検証する適切な証明書がありませんでした\n"
-#~ msgid "not supported"
-#~ msgstr "���ݡ��Ȥ��Ƥ��ޤ���"
+#, c-format
+msgid "issuer certificate not found: %s\n"
+msgstr "発行者証明書が見つかりません: %s\n"
-#~ msgid "bad key"
-#~ msgstr "���������Ǥ�"
+msgid "caller did not return the target certificate\n"
+msgstr "呼出側が対象の証明書を返しませんでした\n"
-#~ msgid "file write error"
-#~ msgstr "�ե�����ν���ߥ��顼"
+msgid "caller did not return the issuing certificate\n"
+msgstr "呼出側が発行される証明書を返しませんでした\n"
-#~ msgid "file open error"
-#~ msgstr "�ե�����Υ����ץ󡦥��顼"
+#, c-format
+msgid "failed to allocate OCSP context: %s\n"
+msgstr "OCSPコンテクストの確保に失敗しました: %s\n"
-#~ msgid "file create error"
-#~ msgstr "�ե�����κ������顼"
+#, c-format
+msgid "can't get authorityInfoAccess: %s\n"
+msgstr "authorityInfoAccessを取得できません: %s\n"
-#~ msgid "invalid passphrase"
-#~ msgstr "�ѥ��ե졼����̵���Ǥ�"
+msgid "no default OCSP responder defined\n"
+msgstr "デフォルトOCSPレスポンダが定義されていません\n"
-#~ msgid "unimplemented pubkey algorithm"
-#~ msgstr "̤�����θ��������르�ꥺ��Ǥ�"
+msgid "no default OCSP signer defined\n"
+msgstr "デフォルトのOCSP署名者が定義されていません\n"
-#~ msgid "unimplemented cipher algorithm"
-#~ msgstr "̤�����ΰŹ楢�르�ꥺ��Ǥ�"
+#, c-format
+msgid "using default OCSP responder '%s'\n"
+msgstr "デフォルトOCSP応答'%s'を使います\n"
-#~ msgid "unknown signature class"
-#~ msgstr "̤�Τν�̾���饹�Ǥ�"
+#, c-format
+msgid "using OCSP responder '%s'\n"
+msgstr "OCSP応答'%s'を使います\n"
-#~ msgid "trust database error"
-#~ msgstr "���ѥǡ����١����Υ��顼�Ǥ�"
+#, c-format
+msgid "failed to establish a hashing context for OCSP: %s\n"
+msgstr "OCSPのハッシュ・コンテクストを確立するのに失敗しました: %s\n"
-#~ msgid "resource limit"
-#~ msgstr "�꥽�������³��Ǥ�"
+#, c-format
+msgid "error getting OCSP status for target certificate: %s\n"
+msgstr "対象の証明書のOCSPステイタスの取得エラー: %s\n"
-#~ msgid "invalid keyring"
-#~ msgstr "̵���ʸ��ؤǤ�"
+#, c-format
+msgid "certificate status is: %s (this=%s next=%s)\n"
+msgstr "証明書ステイタスは: %s (これ=%s 次=%s)\n"
+
+msgid "good"
+msgstr "良好"
+
+#, c-format
+msgid "certificate has been revoked at: %s due to: %s\n"
+msgstr "証明書は失効済みです: %s (理由: %s)\n"
-#~ msgid "malformed user id"
-#~ msgstr "�桼����ID�ν񼰤�����������ޤ���"
+msgid "OCSP responder returned a status in the future\n"
+msgstr "OSCPレスポンダは未来のステイタスを返しました\n"
-#~ msgid "file close error"
-#~ msgstr "�ե�����Υ������������顼"
+msgid "OCSP responder returned a non-current status\n"
+msgstr "OSCPレスポンダは現在でないステイタスを返しました\n"
+
+msgid "OCSP responder returned an too old status\n"
+msgstr "OSCPレスポンダは古すぎるステイタスを返しました\n"
+
+#, c-format
+msgid "assuan_inquire(%s) failed: %s\n"
+msgstr "assuan_inquire(%s)が失敗しました: %s\n"
+
+msgid "ldapserver missing"
+msgstr "ldapserverがありません"
+
+msgid "serialno missing in cert ID"
+msgstr "serialnoがcert IDにありません"
+
+#, c-format
+msgid "assuan_inquire failed: %s\n"
+msgstr "assuan_inquireに失敗しました: %s\n"
+
+#, c-format
+msgid "fetch_cert_by_url failed: %s\n"
+msgstr "fetch_cert_by_url が失敗しました: %s\n"
+
+#, c-format
+msgid "error sending data: %s\n"
+msgstr "データ送信エラー: %s\n"
+
+#, c-format
+msgid "start_cert_fetch failed: %s\n"
+msgstr "start_cert_fetch が失敗しました: %s\n"
+
+#, c-format
+msgid "fetch_next_cert failed: %s\n"
+msgstr "fetch_next_cert が失敗しました: %s\n"
+
+#, c-format
+msgid "max_replies %d exceeded\n"
+msgstr "max_replies %d を越えました\n"
+
+#, c-format
+msgid "can't allocate control structure: %s\n"
+msgstr "制御構造を確保できません: %s\n"
+
+#, c-format
+msgid "failed to initialize the server: %s\n"
+msgstr "サーバの初期化に失敗しました: %s\n"
-#~ msgid "file rename error"
-#~ msgstr "�ե�����̾���ѹ����顼"
+#, c-format
+msgid "failed to the register commands with Assuan: %s\n"
+msgstr "Assuanで登録コマンドに失敗しました: %s\n"
+
+#, c-format
+msgid "Assuan accept problem: %s\n"
+msgstr "Assuan accept の問題: %s\n"
+
+#, c-format
+msgid "Assuan processing failed: %s\n"
+msgstr "Assuanの処理が失敗しました: %s\n"
+
+msgid "accepting root CA not marked as a CA"
+msgstr "CAとしてマークされていないルートCAを受領します"
+
+msgid "CRL checking too deeply nested\n"
+msgstr "CRL検査のネストが深すぎです\n"
+
+msgid "not checking CRL for"
+msgstr "CRL を確認しません"
+
+msgid "checking CRL for"
+msgstr "CRLの検査をしています"
+
+msgid "running in compatibility mode - certificate chain not checked!\n"
+msgstr "コンパチ・モードで実行します - 証明書チェインは確認しません!\n"
+
+msgid "selfsigned certificate has a BAD signature"
+msgstr "自己署名証明書に*不正な*署名があります"
+
+#, c-format
+msgid "checking trustworthiness of root certificate failed: %s\n"
+msgstr "ルート証明書の信用検査に失敗しました: %s\n"
+
+msgid "certificate chain is good\n"
+msgstr "証明書チェインは正しいです\n"
+
+msgid "DSA requires the use of a 160 bit hash algorithm\n"
+msgstr "DSAは160ビットののハッシュアルゴリズムの使用を必要とします\n"
+
+msgid "certificate should not have been used for CRL signing\n"
+msgstr "証明書はCRL署名のために使われるべきではありませんでした\n"
+
+msgid "quiet"
+msgstr "おとなしく"
+
+msgid "print data out hex encoded"
+msgstr "16進でエンコードしてデータ出力を表示する"
+
+msgid "decode received data lines"
+msgstr "受信したデータ行をデコードする"
+
+msgid "|NAME|connect to Assuan socket NAME"
+msgstr "|NAME|Assuanのソケット名NAMEに接続する"
-#~ msgid "file delete error"
-#~ msgstr "�ե�����κ�����顼"
+msgid "|ADDR|connect to Assuan server at ADDR"
+msgstr "|ADDR|ADDRのAssuanサーバに接続する"
-#~ msgid "unexpected data"
-#~ msgstr "ͽ�����̥ǡ����Ǥ�"
+msgid "run the Assuan server given on the command line"
+msgstr "コマンド・ラインで与えられたAssuanサーバを実行する"
-#~ msgid "timestamp conflict"
-#~ msgstr "������̷�⤷�Ƥ��ޤ�"
+msgid "do not use extended connect mode"
+msgstr "拡張接続モードを使わない"
-#~ msgid "unusable pubkey algorithm"
-#~ msgstr "���ѤǤ��ʤ����������르�ꥺ��Ǥ�"
+msgid "|FILE|run commands from FILE on startup"
+msgstr "|FILE|起動時にFILEからコマンドを実行する"
-#~ msgid "file exists"
-#~ msgstr "�ե����뤬¸�ߤ��Ƥ��ޤ�"
+msgid "run /subst on startup"
+msgstr "起動時に /subst を実行する"
-#~ msgid "weak key"
-#~ msgstr "�夤���Ǥ�"
+msgid "Usage: gpg-connect-agent [options] (-h for help)"
+msgstr "使い方: gpg-connect-agent [オプション] (ヘルプは -h)"
-#~ msgid "bad URI"
-#~ msgstr "URI�������Ǥ�"
+msgid ""
+"Syntax: gpg-connect-agent [options]\n"
+"Connect to a running agent and send commands\n"
+msgstr ""
+"形式: gpg-connect-agent [オプション]\n"
+"実行中のagentに接続し、コマンドを送る\n"
-#~ msgid "unsupported URI"
-#~ msgstr "����URI�ϥ��ݡ��Ȥ��Ƥ��ޤ���"
+#, c-format
+msgid "option \"%s\" requires a program and optional arguments\n"
+msgstr "オプション\"%s\"はプログラムとオプショナルの引数を要します\n"
-#~ msgid "network error"
-#~ msgstr "�ͥåȥ�������顼"
+#, c-format
+msgid "option \"%s\" ignored due to \"%s\"\n"
+msgstr "オプション\"%s\"は\"%s\"のため無視されました\n"
-#~ msgid "not processed"
-#~ msgstr "̤����"
+#, c-format
+msgid "receiving line failed: %s\n"
+msgstr "行の受信に失敗しました: %s\n"
-#~ msgid "unusable public key"
-#~ msgstr "���ѤǤ��ʤ��������Ǥ�"
+msgid "line too long - skipped\n"
+msgstr "行が長すぎます - スキップされました\n"
-#~ msgid "unusable secret key"
-#~ msgstr "���ѤǤ��ʤ���̩���Ǥ�"
+msgid "line shortened due to embedded Nul character\n"
+msgstr "組込みのNulキャラクタのため行は短くされました\n"
-#~ msgid "keyserver error"
-#~ msgstr "�������С��Υ��顼"
+#, c-format
+msgid "unknown command '%s'\n"
+msgstr "不明のコマンド'%s'\n"
-#~ msgid "no card"
-#~ msgstr "�����ɤ�����ޤ���"
+#, c-format
+msgid "sending line failed: %s\n"
+msgstr "行の送信に失敗しました: %s\n"
-#, fuzzy
-#~ msgid "no data"
-#~ msgstr "��̾���줿�ǡ���������ޤ���\n"
+#, c-format
+msgid "error sending standard options: %s\n"
+msgstr "標準オプションを送信エラー: %s\n"
-#~ msgid "ERROR: "
-#~ msgstr "���顼: "
+msgid "Options controlling the diagnostic output"
+msgstr "診断出力を制御するオプション"
-#~ msgid "WARNING: "
-#~ msgstr "�ٹ�: "
+msgid "Options controlling the configuration"
+msgstr "コンフィグレーションを制御するオプション"
-#~ msgid "... this is a bug (%s:%d:%s)\n"
-#~ msgstr "... �Х��Ǥ� (%s:%d:%s)\n"
+msgid "Options useful for debugging"
+msgstr "デバッグのために有用なオプション"
-#~ msgid "WARNING: using insecure memory!\n"
-#~ msgstr "�ٹ�: ���ݤʥ��꡼����Ѥ��Ƥ��ޤ�!\n"
+msgid "Options controlling the security"
+msgstr "セキュリティを制御するオプション"
-#~ msgid "operation is not possible without initialized secure memory\n"
-#~ msgstr "������Ѥߤΰ����ʥ��꡼���ʤ����ˤ����Ǥ��ޤ���\n"
+msgid "|N|expire SSH keys after N seconds"
+msgstr "|N|N秒後にSSH鍵を無効とする"
-#~ msgid "(you may have used the wrong program for this task)\n"
-#~ msgstr "(������Ū�ˤϸ��ä��ץ�������Ȥä��ΤǤ��礦)\n"
+msgid "|N|set maximum PIN cache lifetime to N seconds"
+msgstr "|N|最大PINキャッシュ存続時間をN秒とする"
-#~ msgid ""
-#~ "please see http://www.gnupg.org/why-not-idea.html for more information\n"
-#~ msgstr "�ܺ٤ϡ�http://www.gnupg.org/why-not-idea.html������������\n"
+msgid "|N|set maximum SSH key lifetime to N seconds"
+msgstr "|N|最大SSH鍵存続時間をN秒とする"
-#~ msgid "expired: %s)"
-#~ msgstr "��λ: %s)"
+msgid "Options enforcing a passphrase policy"
+msgstr "パスワード・ポリシの強制オプション"
-#, fuzzy
-#~ msgid "key %s: expired signature from key %s - skipped\n"
-#~ msgstr "��%s: ͽ�����̽�̾���饹 (0x%02X) - �ȤФ��ޤ�\n"
+msgid "do not allow to bypass the passphrase policy"
+msgstr "パスワード・ポリシを迂回することを認めない"
-#, fuzzy
-#~ msgid "Unable to clean `%s'\n"
-#~ msgstr "��%s�פ�¹ԤǤ��ޤ���: %s\n"
+msgid "|N|set minimal required length for new passphrases to N"
+msgstr "|N|新しいパスフレーズの必要とする最低長をNとする"
-#, fuzzy
-#~ msgid "No user IDs are removable.\n"
-#~ msgstr "�桼����ID��%s�ɤϡ��⤦��������Ƥ��ޤ�\n"
+msgid "|N|require at least N non-alpha characters for a new passphrase"
+msgstr ""
+"|N|新しいパスフレーズとしてアルファベットでないキャラクタを最低N必要とする"
-#~ msgid "length of RSA modulus is not %d\n"
-#~ msgstr "RSA��ˡ(modulus)��Ĺ����%d�Ǥ���ޤ���\n"
+msgid "|FILE|check new passphrases against pattern in FILE"
+msgstr "|FILE|新しいパスフレーズをFILEのパターンに対してチェックする"
-#~ msgid "length of an RSA prime is not %d\n"
-#~ msgstr "RSA���ǿ���%d�Ǥ���ޤ���\n"
+msgid "|N|expire the passphrase after N days"
+msgstr "|N|N日後にパスフレーズを期限切れとする"
-#~ msgid "bad passphrase or unknown cipher algorithm (%d)\n"
-#~ msgstr "�����ʥѥ��ե졼���ޤ���̤�ΤΰŹ楢�르�ꥺ��Ǥ�(%d)\n"
+msgid "do not allow the reuse of old passphrases"
+msgstr "古いパスフレーズを再使用することを認めない"
-#~ msgid "can't set client pid for the agent\n"
-#~ msgstr "����������ȤΥ��饤�����pid������Ǥ��ޤ���\n"
+msgid "|NAME|use NAME as default secret key"
+msgstr "|NAME|デフォルトの秘密鍵としてNAMEを用いる"
-#~ msgid "can't get server read FD for the agent\n"
-#~ msgstr "������������ѤΥ����С��ɽФ�FD������Ǥ��ޤ���\n"
+msgid "|NAME|encrypt to user ID NAME as well"
+msgstr "|NAME|ユーザID NAMEにも暗号化する"
-#~ msgid "can't get server write FD for the agent\n"
-#~ msgstr "������������ѤΥ����С������FD������Ǥ��ޤ���\n"
+msgid "|SPEC|set up email aliases"
+msgstr "|SPEC|電子メールエイリアスを設定する"
-#~ msgid "invalid response from agent\n"
-#~ msgstr "����������Ȥ����̵���ʱ���\n"
+msgid "Configuration for Keyservers"
+msgstr "キーサーバのコンフィグレーション"
-#~ msgid "select secondary key N"
-#~ msgstr "����N������"
+msgid "|URL|use keyserver at URL"
+msgstr "|URL|鍵サーバとしてURLを使用"
-#~ msgid "list signatures"
-#~ msgstr "��̾�ΰ���"
+msgid "allow PKA lookups (DNS requests)"
+msgstr "PKA検索(DNS要求)を認める"
-#~ msgid "sign the key"
-#~ msgstr "���ؽ�̾"
+msgid "|MECHANISMS|use MECHANISMS to locate keys by mail address"
+msgstr "|MECHANISMS|メールアドレスによって鍵を特定する際、MECHANISMSを使用する"
-#~ msgid "add a secondary key"
-#~ msgstr "�������ɲ�"
+msgid "disable all access to the dirmngr"
+msgstr "dirmngrへのすべてのアクセスを無効とする"
-#~ msgid "delete signatures"
-#~ msgstr "��̾�κ��"
+msgid "|NAME|use encoding NAME for PKCS#12 passphrases"
+msgstr "|NAME|PKCS#12のパスフレーズにNAMEのエンコーディングを使う"
-#~ msgid "change the expire date"
-#~ msgstr "��λ�����ѹ�"
+msgid "do not check CRLs for root certificates"
+msgstr "ルート証明書のCRLをチェックしない"
-#~ msgid "set preference list"
-#~ msgstr "�������������"
+msgid "Options controlling the format of the output"
+msgstr "出力フォーマットを制御するオプション"
-#~ msgid "updated preferences"
-#~ msgstr "�����ΰ����򹹿�"
+msgid "Options controlling the interactivity and enforcement"
+msgstr "インタラクティビティと強制を制御するオプション"
-#~ msgid "No secondary key with index %d\n"
-#~ msgstr "%d�֤������Ϥ���ޤ���\n"
+msgid "Configuration for HTTP servers"
+msgstr "HTTPサーバのコンフィグレーション"
-#~ msgid "--nrsign-key user-id"
-#~ msgstr "--nrsign-key �桼����id"
+msgid "use system's HTTP proxy setting"
+msgstr "システムのHTTPプロキシ設定を用います"
-#~ msgid "--nrlsign-key user-id"
-#~ msgstr "--nrlsign-key �桼����id"
+msgid "Configuration of LDAP servers to use"
+msgstr "使用するLDAPサーバのコンフィグレーション"
-#~ msgid "sign the key non-revocably"
-#~ msgstr "�����Ǥ��ʤ��褦���ؽ�̾"
+msgid "LDAP server list"
+msgstr "LDAPサーバ・リスト"
-#~ msgid "sign the key locally and non-revocably"
-#~ msgstr "�����Ǥ��ʤ��褦��������Ū�˽�̾"
+msgid "Configuration for OCSP"
+msgstr "OCSPのコンフィグレーション"
-#~ msgid "q"
-#~ msgstr "q"
+msgid "GPG for OpenPGP"
+msgstr "OpenPGPのためのGPG"
-#~ msgid "list"
-#~ msgstr "list"
+msgid "GPG Agent"
+msgstr "GPG Agent"
-#~ msgid "l"
-#~ msgstr "l"
+msgid "Smartcard Daemon"
+msgstr "スマートカード・デーモン"
-#~ msgid "debug"
-#~ msgstr "debug"
+msgid "GPG for S/MIME"
+msgstr "S/MIME のためのGPG"
-#~ msgid "name"
-#~ msgstr "name"
+msgid "Directory Manager"
+msgstr "ディレクトリ・マネージャ"
-#~ msgid "url"
-#~ msgstr "url"
+msgid "PIN and Passphrase Entry"
+msgstr "PINとパスフレーズの入力"
-#~ msgid "fetch"
-#~ msgstr "fetch"
+#, c-format
+msgid "External verification of component %s failed"
+msgstr "コンポーネント%sの外部の検証が失敗しました"
-#~ msgid "login"
-#~ msgstr "login"
+msgid "Note that group specifications are ignored\n"
+msgstr "グループ仕様は無視されていることに注意してください\n"
-#~ msgid "lang"
-#~ msgstr "lang"
+msgid "list all components"
+msgstr "すべてのコンポーネントをリストする"
-#~ msgid "sex"
-#~ msgstr "sex"
+msgid "check all programs"
+msgstr "すべてのプログラムをチェックする"
-#~ msgid "cafpr"
-#~ msgstr "cafpr"
+msgid "|COMPONENT|list options"
+msgstr "|COMPONENT|オプションをリストする"
-#~ msgid "forcesig"
-#~ msgstr "forcesig"
+msgid "|COMPONENT|change options"
+msgstr "|COMPONENT|オプションを変更する"
-#~ msgid "generate"
-#~ msgstr "generate"
+msgid "|COMPONENT|check options"
+msgstr "|COMPONENT|オプションをチェックする"
-#~ msgid "passwd"
-#~ msgstr "passwd"
+msgid "apply global default values"
+msgstr "グローバル・デフォルト値を適用する"
-#~ msgid "save"
-#~ msgstr "save"
+msgid "get the configuration directories for gpgconf"
+msgstr "gpgconfのためにコンフィグレーション・ディレクトリを取得する"
-#~ msgid "fpr"
-#~ msgstr "fpr"
+msgid "list global configuration file"
+msgstr "グローバルのコンフィグレーション・ファイルをリストする"
-#~ msgid "uid"
-#~ msgstr "uid"
+msgid "check global configuration file"
+msgstr "グローバルのコンフィグレーション・ファイルをチェックする"
-#~ msgid "key"
-#~ msgstr "key"
+msgid "reload all or a given component"
+msgstr "すべて、あるいは指定されたコンポーネントをリロードする"
-#~ msgid "check"
-#~ msgstr "check"
+msgid "kill a given component"
+msgstr "指定されたコンポーネントをkillする"
-#~ msgid "c"
-#~ msgstr "c"
+msgid "use as output file"
+msgstr "出力ファイルとして使用"
-#~ msgid "sign"
-#~ msgstr "sign"
+msgid "activate changes at runtime, if possible"
+msgstr "可能な場合、実行時に変更を有効とする"
-#~ msgid "s"
-#~ msgstr "s"
+msgid "Usage: gpgconf [options] (-h for help)"
+msgstr "使い方: gpgconf [オプション] (ヘルプは -h)"
-#~ msgid "tsign"
-#~ msgstr "tsign"
+msgid ""
+"Syntax: gpgconf [options]\n"
+"Manage configuration options for tools of the GnuPG system\n"
+msgstr ""
+"形式: gpgconf [オプション]\n"
+"GnuPGシステムのツールに対しコンフィグレーション・オプションを管理する\n"
-#~ msgid "lsign"
-#~ msgstr "lsign"
+msgid "usage: gpgconf [options] "
+msgstr "使い方: gpgconf [オプション] "
-#~ msgid "nrsign"
-#~ msgstr "nrsign"
+msgid "Need one component argument"
+msgstr "一つコンポーネント引数が必要です"
-#~ msgid "nrlsign"
-#~ msgstr "nrlsign"
+msgid "Component not found"
+msgstr "コンポーネントが見つかりません"
-#~ msgid "adduid"
-#~ msgstr "adduid"
+msgid "No argument allowed"
+msgstr "引数は許可されていません"
-#~ msgid "addphoto"
-#~ msgstr "addphoto"
+msgid ""
+"@\n"
+"Commands:\n"
+" "
+msgstr ""
+"@\n"
+"@コマンド:\n"
+" "
-#~ msgid "deluid"
-#~ msgstr "deluid"
+msgid "decryption modus"
+msgstr "復号方式"
-#~ msgid "delphoto"
-#~ msgstr "delphoto"
+msgid "encryption modus"
+msgstr "暗号方式"
-#~ msgid "addcardkey"
-#~ msgstr "addcardkey"
+msgid "tool class (confucius)"
+msgstr "ツール・クラス (confucius)"
-#~ msgid "keytocard"
-#~ msgstr "keytocard"
+msgid "program filename"
+msgstr "program [ファイル名]"
-#~ msgid "delkey"
-#~ msgstr "delkey"
+msgid "secret key file (required)"
+msgstr "秘密鍵ファイル (必須)"
-#~ msgid "addrevoker"
-#~ msgstr "addrevoker"
+msgid "input file name (default stdin)"
+msgstr "入力ファイル名 (デフォルト stdin)"
-#~ msgid "delsig"
-#~ msgstr "delsig"
+msgid "Usage: symcryptrun [options] (-h for help)"
+msgstr "使い方: symcryption [オプション] (ヘルプは -h)"
-#~ msgid "expire"
-#~ msgstr "expire"
+msgid ""
+"Syntax: symcryptrun --class CLASS --program PROGRAM --keyfile KEYFILE "
+"[options...] COMMAND [inputfile]\n"
+"Call a simple symmetric encryption tool\n"
+msgstr ""
+"形式: symcryptrun --class CLASS --program PROGRAM --keyfile KEYFILE [オプショ"
+"ン...] COMMAND [入力ファイル]\n"
+"シンプルな共通鍵暗号ツールを呼び出す\n"
-#~ msgid "primary"
-#~ msgstr "primary"
+#, c-format
+msgid "%s on %s aborted with status %i\n"
+msgstr "%s (%s の)がステイタス%iで中止されました\n"
-#~ msgid "toggle"
-#~ msgstr "toggle"
+#, c-format
+msgid "%s on %s failed with status %i\n"
+msgstr "%s (%s の)がステイタス%iで失敗しました\n"
-#~ msgid "t"
-#~ msgstr "t"
+#, c-format
+msgid "can't create temporary directory '%s': %s\n"
+msgstr "一時ディレクトリ'%s'が作成できません: %s\n"
-#~ msgid "pref"
-#~ msgstr "pref"
+#, c-format
+msgid "could not open %s for writing: %s\n"
+msgstr "%sを書き込みでオープンできませんでした: %s\n"
-#~ msgid "showpref"
-#~ msgstr "showpref"
+#, c-format
+msgid "error writing to %s: %s\n"
+msgstr "'%s'の書き込みエラー: %s\n"
-#~ msgid "setpref"
-#~ msgstr "setpref"
+#, c-format
+msgid "error reading from %s: %s\n"
+msgstr "'%s'の読み込みエラー: %s\n"
-#~ msgid "updpref"
-#~ msgstr "updpref"
+#, c-format
+msgid "error closing %s: %s\n"
+msgstr "'%s'でクローズのエラー: %s\n"
-#~ msgid "keyserver"
-#~ msgstr "keyserver"
+msgid "no --program option provided\n"
+msgstr "--programオプションが指定されていません\n"
-#~ msgid "trust"
-#~ msgstr "trust"
+msgid "only --decrypt and --encrypt are supported\n"
+msgstr "--decryptと--encryptだけがサポートされています\n"
-#~ msgid "revsig"
-#~ msgstr "revsig"
+msgid "no --keyfile option provided\n"
+msgstr "--keyfileオプションが与えられていません\n"
-#~ msgid "revuid"
-#~ msgstr "revuid"
+msgid "cannot allocate args vector\n"
+msgstr "引数ベクタが確保できません\n"
-#~ msgid "revkey"
-#~ msgstr "revkey"
+#, c-format
+msgid "could not create pipe: %s\n"
+msgstr "パイプが作成できませんでした: %s\n"
-#~ msgid "disable"
-#~ msgstr "disable"
+#, c-format
+msgid "could not create pty: %s\n"
+msgstr "ptyが作成できませんでした: %s\n"
-#~ msgid "enable"
-#~ msgstr "enable"
+#, c-format
+msgid "could not fork: %s\n"
+msgstr "fork できませんでした: %s\n"
-#~ msgid "showphoto"
-#~ msgstr "showphoto"
+#, c-format
+msgid "execv failed: %s\n"
+msgstr "execv が失敗しました: %s\n"
-#~ msgid "digest algorithm `%s' is read-only in this release\n"
-#~ msgstr "���󥢥르�ꥺ���%s�פϡ������Ǥ����ɽФ������Ǥ�\n"
+#, c-format
+msgid "select failed: %s\n"
+msgstr "select が失敗しました: %s\n"
-#~ msgid "[%8.8s] "
-#~ msgstr "[%8.8s] "
+#, c-format
+msgid "read failed: %s\n"
+msgstr "read が失敗しました: %s\n"
-#~ msgid ""
-#~ "About to generate a new %s keypair.\n"
-#~ " minimum keysize is 768 bits\n"
-#~ " default keysize is 1024 bits\n"
-#~ " highest suggested keysize is 2048 bits\n"
-#~ msgstr ""
-#~ "������%s���Ф��������ޤ���\n"
-#~ " ��û�θ�Ĺ�� 768 �ӥå�\n"
-#~ " ����θ�Ĺ�� 1024 �ӥå�\n"
-#~ " ��Ĺ�ο侩��Ĺ�� 2048 �ӥå�\n"
+#, c-format
+msgid "pty read failed: %s\n"
+msgstr "pty read が失敗しました: %s\n"
-#~ msgid "DSA only allows keysizes from 512 to 1024\n"
-#~ msgstr "DSA�θ�Ĺ��512����1024�ޤǤǤ�\n"
+#, c-format
+msgid "waitpid failed: %s\n"
+msgstr "waitpid が失敗しました: %s\n"
-#~ msgid "keysize too small; 1024 is smallest value allowed for RSA.\n"
-#~ msgstr "��Ĺ�����������ޤ���RSA�ϺǾ��Ǥ�1024�Ǥ���\n"
+#, c-format
+msgid "child aborted with status %i\n"
+msgstr "子プロセスがステイタス %i で中止されました\n"
-#~ msgid "keysize too small; 768 is smallest value allowed.\n"
-#~ msgstr "��Ĺ�����������ޤ����Ǿ��Ǥ�768�Ǥ���\n"
+#, c-format
+msgid "cannot allocate infile string: %s\n"
+msgstr "infileの文字列が確保できません: %s\n"
-#~ msgid "keysize too large; %d is largest value allowed.\n"
-#~ msgstr "��Ĺ���礭�����ޤ���%d������Ǥ���\n"
+#, c-format
+msgid "cannot allocate outfile string: %s\n"
+msgstr "outfileの文字列を確保できません: %s\n"
-#~ msgid ""
-#~ "Keysizes larger than 2048 are not suggested because\n"
-#~ "computations take REALLY long!\n"
-#~ msgstr ""
-#~ "2048����礭�ʸ�Ĺ�ϡ��׻����֤� ���� Ĺ���ʤ�Τ�\n"
-#~ "�侩���ޤ���!\n"
+#, c-format
+msgid "either %s or %s must be given\n"
+msgstr "%s か %s のどちらかが与えられる必要があります\n"
-#~ msgid "Are you sure that you want this keysize? (y/N) "
-#~ msgstr "���θ�Ĺ�������ˤ褤�Ǥ���? (y/N) "
+msgid "no class provided\n"
+msgstr "クラスが与えられていません\n"
-#~ msgid ""
-#~ "Okay, but keep in mind that your monitor and keyboard radiation is also "
-#~ "very vulnerable to attacks!\n"
-#~ msgstr ""
-#~ "�狼��ޤ����������������ʤ��Υ�˥����䥭���ܡ����ռͤϡ�\n"
-#~ "����ˤ��������ȼ�Ǥ��뤳�Ȥ�ǰƬ�ˤ����Ƥ�������!\n"
+#, c-format
+msgid "class %s is not supported\n"
+msgstr "クラス%sはサポートされていません\n"
-#~ msgid "Experimental algorithms should not be used!\n"
-#~ msgstr "�¸���Υ��르�ꥺ��ϻ��Ѥ��٤��ǤϤ���ޤ���!\n"
+msgid "Usage: gpg-check-pattern [options] patternfile (-h for help)\n"
+msgstr "使い方: gpg-check-pattern [オプション] patternfile (ヘルプは -h)\n"
-#~ msgid ""
-#~ "this cipher algorithm is deprecated; please use a more standard one!\n"
-#~ msgstr ""
-#~ "���ΰŹ楢�르�ꥺ��ϡ�����뤵��Ƥ��ޤ���\n"
-#~ "��ä�ɸ��Ū�ʥ��르�ꥺ���ȤäƤ�������!\n"
+msgid ""
+"Syntax: gpg-check-pattern [options] patternfile\n"
+"Check a passphrase given on stdin against the patternfile\n"
+msgstr ""
+"形式: gpg-check-pattern [オプション] パターンファイル\n"
+"パターンファイルに対して標準入力のパスフレーズを確認する\n"
diff --git a/scd/apdu.c b/scd/apdu.c
index 68d4e9970..6824ded55 100644
--- a/scd/apdu.c
+++ b/scd/apdu.c
@@ -60,10 +60,9 @@
#include "exechelp.h"
#endif /* GNUPG_MAJOR_VERSION != 1 */
+#include "iso7816.h"
#include "apdu.h"
#include "ccid-driver.h"
-#include "iso7816.h"
-
/* Due to conflicting use of threading libraries we usually can't link
against libpcsclite. Instead we use a wrapper program. */
@@ -83,16 +82,6 @@
#define DLSTDCALL
#endif
-
-/* Helper to pass parameters related to keypad based operations. */
-struct pininfo_s
-{
- int mode;
- int minlen;
- int maxlen;
- int padlen;
-};
-
/* A structure to collect information pertaining to one reader
slot. */
struct reader_table_s {
@@ -107,12 +96,12 @@ struct reader_table_s {
int (*reset_reader)(int);
int (*get_status_reader)(int, unsigned int *);
int (*send_apdu_reader)(int,unsigned char *,size_t,
- unsigned char *, size_t *, struct pininfo_s *);
- int (*check_keypad)(int, int, int, int, int, int);
+ unsigned char *, size_t *, pininfo_t *);
+ int (*check_pinpad)(int, int, pininfo_t *);
void (*dump_status_reader)(int);
int (*set_progress_cb)(int, gcry_handler_progress_t, void*);
- int (*keypad_verify)(int, int, int, int, int, struct pininfo_s *);
- int (*keypad_modify)(int, int, int, int, int, struct pininfo_s *);
+ int (*pinpad_verify)(int, int, int, int, int, pininfo_t *);
+ int (*pinpad_modify)(int, int, int, int, int, pininfo_t *);
struct {
ccid_driver_t handle;
@@ -330,12 +319,11 @@ static int reset_pcsc_reader (int slot);
static int apdu_get_status_internal (int slot, int hang, int no_atr_reset,
unsigned int *status,
unsigned int *changed);
-static int check_pcsc_keypad (int slot, int command, int pin_mode,
- int pinlen_min, int pinlen_max, int pin_padlen);
-static int pcsc_keypad_verify (int slot, int class, int ins, int p0, int p1,
- struct pininfo_s *pininfo);
-static int pcsc_keypad_modify (int slot, int class, int ins, int p0, int p1,
- struct pininfo_s *pininfo);
+static int check_pcsc_pinpad (int slot, int command, pininfo_t *pininfo);
+static int pcsc_pinpad_verify (int slot, int class, int ins, int p0, int p1,
+ pininfo_t *pininfo);
+static int pcsc_pinpad_modify (int slot, int class, int ins, int p0, int p1,
+ pininfo_t *pininfo);
@@ -381,11 +369,11 @@ new_reader_slot (void)
reader_table[reader].reset_reader = NULL;
reader_table[reader].get_status_reader = NULL;
reader_table[reader].send_apdu_reader = NULL;
- reader_table[reader].check_keypad = check_pcsc_keypad;
+ reader_table[reader].check_pinpad = check_pcsc_pinpad;
reader_table[reader].dump_status_reader = NULL;
reader_table[reader].set_progress_cb = NULL;
- reader_table[reader].keypad_verify = pcsc_keypad_verify;
- reader_table[reader].keypad_modify = pcsc_keypad_modify;
+ reader_table[reader].pinpad_verify = pcsc_pinpad_verify;
+ reader_table[reader].pinpad_modify = pcsc_pinpad_modify;
reader_table[reader].used = 1;
reader_table[reader].any_status = 0;
@@ -440,7 +428,7 @@ host_sw_string (long err)
case SW_HOST_GENERAL_ERROR: return "general error";
case SW_HOST_NO_READER: return "no reader";
case SW_HOST_ABORTED: return "aborted";
- case SW_HOST_NO_KEYPAD: return "no keypad";
+ case SW_HOST_NO_PINPAD: return "no pinpad";
case SW_HOST_ALREADY_CONNECTED: return "already connected";
default: return "unknown host status error";
}
@@ -608,7 +596,7 @@ ct_get_status (int slot, unsigned int *status)
set to BUFLEN. Returns: CT API error code. */
static int
ct_send_apdu (int slot, unsigned char *apdu, size_t apdulen,
- unsigned char *buffer, size_t *buflen, struct pininfo_s *pininfo)
+ unsigned char *buffer, size_t *buflen, pininfo_t *pininfo)
{
int rc;
unsigned char dad[1], sad[1];
@@ -673,10 +661,10 @@ open_ct_reader (int port)
reader_table[reader].reset_reader = reset_ct_reader;
reader_table[reader].get_status_reader = ct_get_status;
reader_table[reader].send_apdu_reader = ct_send_apdu;
- reader_table[reader].check_keypad = NULL;
+ reader_table[reader].check_pinpad = NULL;
reader_table[reader].dump_status_reader = ct_dump_reader_status;
- reader_table[reader].keypad_verify = NULL;
- reader_table[reader].keypad_modify = NULL;
+ reader_table[reader].pinpad_verify = NULL;
+ reader_table[reader].pinpad_modify = NULL;
dump_reader_status (reader);
return reader;
@@ -1039,7 +1027,7 @@ pcsc_get_status (int slot, unsigned int *status)
static int
pcsc_send_apdu_direct (int slot, unsigned char *apdu, size_t apdulen,
unsigned char *buffer, size_t *buflen,
- struct pininfo_s *pininfo)
+ pininfo_t *pininfo)
{
long err;
struct pcsc_io_request_s send_pci;
@@ -1075,7 +1063,7 @@ pcsc_send_apdu_direct (int slot, unsigned char *apdu, size_t apdulen,
static int
pcsc_send_apdu_wrapped (int slot, unsigned char *apdu, size_t apdulen,
unsigned char *buffer, size_t *buflen,
- struct pininfo_s *pininfo)
+ pininfo_t *pininfo)
{
long err;
reader_table_t slotp;
@@ -1195,7 +1183,7 @@ pcsc_send_apdu_wrapped (int slot, unsigned char *apdu, size_t apdulen,
static int
pcsc_send_apdu (int slot, unsigned char *apdu, size_t apdulen,
unsigned char *buffer, size_t *buflen,
- struct pininfo_s *pininfo)
+ pininfo_t *pininfo)
{
#ifdef NEED_PCSC_WRAPPER
return pcsc_send_apdu_wrapped (slot, apdu, apdulen, buffer, buflen, pininfo);
@@ -1990,19 +1978,15 @@ open_pcsc_reader (const char *portstr)
/* Check whether the reader supports the ISO command code COMMAND
- on the keypad. Return 0 on success. */
+ on the pinpad. Return 0 on success. */
static int
-check_pcsc_keypad (int slot, int command, int pin_mode,
- int pinlen_min, int pinlen_max, int pin_padlen)
+check_pcsc_pinpad (int slot, int command, pininfo_t *pininfo)
{
unsigned char buf[256];
size_t len = 256;
int sw;
- (void)pin_mode;
- (void)pinlen_min;
- (void)pinlen_max;
- (void)pin_padlen;
+ (void)pininfo; /* XXX: Identify reader and set pininfo->fixedlen. */
check_again:
if (command == ISO7816_VERIFY)
@@ -2053,12 +2037,12 @@ check_pcsc_keypad (int slot, int command, int pin_mode,
#define PIN_VERIFY_STRUCTURE_SIZE 24
static int
-pcsc_keypad_verify (int slot, int class, int ins, int p0, int p1,
- struct pininfo_s *pininfo)
+pcsc_pinpad_verify (int slot, int class, int ins, int p0, int p1,
+ pininfo_t *pininfo)
{
int sw;
unsigned char *pin_verify;
- int len = PIN_VERIFY_STRUCTURE_SIZE;
+ int len = PIN_VERIFY_STRUCTURE_SIZE + pininfo->fixedlen;
unsigned char result[2];
size_t resultlen = 2;
@@ -2066,10 +2050,7 @@ pcsc_keypad_verify (int slot, int class, int ins, int p0, int p1,
&& (sw = reset_pcsc_reader (slot)))
return sw;
- if (pininfo->mode != 1)
- return SW_NOT_SUPPORTED;
-
- if (pininfo->padlen != 0)
+ if (pininfo->fixedlen < 0 || pininfo->fixedlen >= 16)
return SW_NOT_SUPPORTED;
if (!pininfo->minlen)
@@ -2090,7 +2071,7 @@ pcsc_keypad_verify (int slot, int class, int ins, int p0, int p1,
pin_verify[0] = 0x00; /* bTimerOut */
pin_verify[1] = 0x00; /* bTimerOut2 */
pin_verify[2] = 0x82; /* bmFormatString: Byte, pos=0, left, ASCII. */
- pin_verify[3] = 0x00; /* bmPINBlockString */
+ pin_verify[3] = pininfo->fixedlen; /* bmPINBlockString */
pin_verify[4] = 0x00; /* bmPINLengthFormat */
pin_verify[5] = pininfo->maxlen; /* wPINMaxExtraDigit */
pin_verify[6] = pininfo->minlen; /* wPINMaxExtraDigit */
@@ -2103,8 +2084,8 @@ pcsc_keypad_verify (int slot, int class, int ins, int p0, int p1,
pin_verify[11] = 0x00; /* bMsgIndex */
pin_verify[12] = 0x00; /* bTeoPrologue[0] */
pin_verify[13] = 0x00; /* bTeoPrologue[1] */
- pin_verify[14] = 0x00; /* bTeoPrologue[2] */
- pin_verify[15] = 0x05; /* ulDataLength */
+ pin_verify[14] = pininfo->fixedlen + 0x05; /* bTeoPrologue[2] */
+ pin_verify[15] = pininfo->fixedlen + 0x05; /* ulDataLength */
pin_verify[16] = 0x00; /* ulDataLength */
pin_verify[17] = 0x00; /* ulDataLength */
pin_verify[18] = 0x00; /* ulDataLength */
@@ -2112,7 +2093,9 @@ pcsc_keypad_verify (int slot, int class, int ins, int p0, int p1,
pin_verify[20] = ins; /* abData[1] */
pin_verify[21] = p0; /* abData[2] */
pin_verify[22] = p1; /* abData[3] */
- pin_verify[23] = 0x00; /* abData[4] */
+ pin_verify[23] = pininfo->fixedlen; /* abData[4] */
+ if (pininfo->fixedlen)
+ memset (&pin_verify[24], 0xff, pininfo->fixedlen);
if (DBG_CARD_IO)
log_debug ("send secure: c=%02X i=%02X p1=%02X p2=%02X len=%d pinmax=%d\n",
@@ -2137,12 +2120,12 @@ pcsc_keypad_verify (int slot, int class, int ins, int p0, int p1,
#define PIN_MODIFY_STRUCTURE_SIZE 29
static int
-pcsc_keypad_modify (int slot, int class, int ins, int p0, int p1,
- struct pininfo_s *pininfo)
+pcsc_pinpad_modify (int slot, int class, int ins, int p0, int p1,
+ pininfo_t *pininfo)
{
int sw;
unsigned char *pin_modify;
- int len = PIN_MODIFY_STRUCTURE_SIZE;
+ int len = PIN_MODIFY_STRUCTURE_SIZE + 2 * pininfo->fixedlen;
unsigned char result[2];
size_t resultlen = 2;
@@ -2150,10 +2133,7 @@ pcsc_keypad_modify (int slot, int class, int ins, int p0, int p1,
&& (sw = reset_pcsc_reader (slot)))
return sw;
- if (pininfo->mode != 1)
- return SW_NOT_SUPPORTED;
-
- if (pininfo->padlen != 0)
+ if (pininfo->fixedlen < 0 || pininfo->fixedlen >= 16)
return SW_NOT_SUPPORTED;
if (!pininfo->minlen)
@@ -2174,10 +2154,10 @@ pcsc_keypad_modify (int slot, int class, int ins, int p0, int p1,
pin_modify[0] = 0x00; /* bTimerOut */
pin_modify[1] = 0x00; /* bTimerOut2 */
pin_modify[2] = 0x82; /* bmFormatString: Byte, pos=0, left, ASCII. */
- pin_modify[3] = 0x00; /* bmPINBlockString */
+ pin_modify[3] = pininfo->fixedlen; /* bmPINBlockString */
pin_modify[4] = 0x00; /* bmPINLengthFormat */
pin_modify[5] = 0x00; /* bInsertionOffsetOld */
- pin_modify[6] = 0x00; /* bInsertionOffsetNew */
+ pin_modify[6] = pininfo->fixedlen; /* bInsertionOffsetNew */
pin_modify[7] = pininfo->maxlen; /* wPINMaxExtraDigit */
pin_modify[8] = pininfo->minlen; /* wPINMaxExtraDigit */
pin_modify[9] = (p0 == 0 ? 0x03 : 0x01);
@@ -2198,8 +2178,8 @@ pcsc_keypad_modify (int slot, int class, int ins, int p0, int p1,
pin_modify[16] = 0x00; /* bMsgIndex3 */
pin_modify[17] = 0x00; /* bTeoPrologue[0] */
pin_modify[18] = 0x00; /* bTeoPrologue[1] */
- pin_modify[19] = 0x00; /* bTeoPrologue[2] */
- pin_modify[20] = 0x05; /* ulDataLength */
+ pin_modify[19] = 2 * pininfo->fixedlen + 0x05; /* bTeoPrologue[2] */
+ pin_modify[20] = 2 * pininfo->fixedlen + 0x05; /* ulDataLength */
pin_modify[21] = 0x00; /* ulDataLength */
pin_modify[22] = 0x00; /* ulDataLength */
pin_modify[23] = 0x00; /* ulDataLength */
@@ -2207,7 +2187,9 @@ pcsc_keypad_modify (int slot, int class, int ins, int p0, int p1,
pin_modify[25] = ins; /* abData[1] */
pin_modify[26] = p0; /* abData[2] */
pin_modify[27] = p1; /* abData[3] */
- pin_modify[28] = 0x00; /* abData[4] */
+ pin_modify[28] = 2 * pininfo->fixedlen; /* abData[4] */
+ if (pininfo->fixedlen)
+ memset (&pin_modify[29], 0xff, 2 * pininfo->fixedlen);
if (DBG_CARD_IO)
log_debug ("send secure: c=%02X i=%02X p1=%02X p2=%02X len=%d pinmax=%d\n",
@@ -2312,7 +2294,7 @@ get_status_ccid (int slot, unsigned int *status)
static int
send_apdu_ccid (int slot, unsigned char *apdu, size_t apdulen,
unsigned char *buffer, size_t *buflen,
- struct pininfo_s *pininfo)
+ pininfo_t *pininfo)
{
long err;
size_t maxbuflen;
@@ -2328,11 +2310,7 @@ send_apdu_ccid (int slot, unsigned char *apdu, size_t apdulen,
maxbuflen = *buflen;
if (pininfo)
err = ccid_transceive_secure (reader_table[slot].ccid.handle,
- apdu, apdulen,
- pininfo->mode,
- pininfo->minlen,
- pininfo->maxlen,
- pininfo->padlen,
+ apdu, apdulen, pininfo,
buffer, maxbuflen, buflen);
else
err = ccid_transceive (reader_table[slot].ccid.handle,
@@ -2347,25 +2325,22 @@ send_apdu_ccid (int slot, unsigned char *apdu, size_t apdulen,
/* Check whether the CCID reader supports the ISO command code COMMAND
- on the keypad. Return 0 on success. For a description of the pin
+ on the pinpad. Return 0 on success. For a description of the pin
parameters, see ccid-driver.c */
static int
-check_ccid_keypad (int slot, int command, int pin_mode,
- int pinlen_min, int pinlen_max, int pin_padlen)
+check_ccid_pinpad (int slot, int command, pininfo_t *pininfo)
{
unsigned char apdu[] = { 0, 0, 0, 0x81 };
apdu[1] = command;
- return ccid_transceive_secure (reader_table[slot].ccid.handle,
- apdu, sizeof apdu,
- pin_mode, pinlen_min, pinlen_max, pin_padlen,
- NULL, 0, NULL);
+ return ccid_transceive_secure (reader_table[slot].ccid.handle, apdu,
+ sizeof apdu, pininfo, NULL, 0, NULL);
}
static int
-ccid_keypad_operation (int slot, int class, int ins, int p0, int p1,
- struct pininfo_s *pininfo)
+ccid_pinpad_operation (int slot, int class, int ins, int p0, int p1,
+ pininfo_t *pininfo)
{
unsigned char apdu[4];
int err, sw;
@@ -2377,9 +2352,7 @@ ccid_keypad_operation (int slot, int class, int ins, int p0, int p1,
apdu[2] = p0;
apdu[3] = p1;
err = ccid_transceive_secure (reader_table[slot].ccid.handle,
- apdu, sizeof apdu,
- pininfo->mode, pininfo->minlen, pininfo->maxlen,
- pininfo->padlen,
+ apdu, sizeof apdu, pininfo,
result, 2, &resultlen);
if (err)
return err;
@@ -2433,11 +2406,11 @@ open_ccid_reader (const char *portstr)
reader_table[slot].reset_reader = reset_ccid_reader;
reader_table[slot].get_status_reader = get_status_ccid;
reader_table[slot].send_apdu_reader = send_apdu_ccid;
- reader_table[slot].check_keypad = check_ccid_keypad;
+ reader_table[slot].check_pinpad = check_ccid_pinpad;
reader_table[slot].dump_status_reader = dump_ccid_reader_status;
reader_table[slot].set_progress_cb = set_progress_cb_ccid_reader;
- reader_table[slot].keypad_verify = ccid_keypad_operation;
- reader_table[slot].keypad_modify = ccid_keypad_operation;
+ reader_table[slot].pinpad_verify = ccid_pinpad_operation;
+ reader_table[slot].pinpad_modify = ccid_pinpad_operation;
/* Our CCID reader code does not support T=0 at all, thus reset the
flag. */
reader_table[slot].is_t0 = 0;
@@ -2597,7 +2570,7 @@ my_rapdu_get_status (int slot, unsigned int *status)
static int
my_rapdu_send_apdu (int slot, unsigned char *apdu, size_t apdulen,
unsigned char *buffer, size_t *buflen,
- struct pininfo_s *pininfo)
+ pininfo_t *pininfo)
{
int err;
reader_table_t slotp;
@@ -2728,10 +2701,10 @@ open_rapdu_reader (int portno,
reader_table[slot].reset_reader = reset_rapdu_reader;
reader_table[slot].get_status_reader = my_rapdu_get_status;
reader_table[slot].send_apdu_reader = my_rapdu_send_apdu;
- reader_table[slot].check_keypad = NULL;
+ reader_table[slot].check_pinpad = NULL;
reader_table[slot].dump_status_reader = NULL;
- reader_table[slot].keypad_verify = NULL;
- reader_table[slot].keypad_modify = NULL;
+ reader_table[slot].pinpad_verify = NULL;
+ reader_table[slot].pinpad_modify = NULL;
dump_reader_status (slot);
rapdu_msg_release (msg);
@@ -3419,63 +3392,76 @@ apdu_get_status (int slot, int hang,
/* Check whether the reader supports the ISO command code COMMAND on
- the keypad. Return 0 on success. For a description of the pin
+ the pinpad. Return 0 on success. For a description of the pin
parameters, see ccid-driver.c */
int
-apdu_check_keypad (int slot, int command, int pin_mode,
- int pinlen_min, int pinlen_max, int pin_padlen)
+apdu_check_pinpad (int slot, int command, pininfo_t *pininfo)
{
if (slot < 0 || slot >= MAX_READER || !reader_table[slot].used )
return SW_HOST_NO_DRIVER;
- if (reader_table[slot].check_keypad)
- return reader_table[slot].check_keypad (slot, command,
- pin_mode, pinlen_min, pinlen_max,
- pin_padlen);
+ if (opt.enable_pinpad_varlen)
+ pininfo->fixedlen = 0;
+
+ if (reader_table[slot].check_pinpad)
+ {
+ int sw;
+
+ if ((sw = lock_slot (slot)))
+ return sw;
+
+ sw = reader_table[slot].check_pinpad (slot, command, pininfo);
+ unlock_slot (slot);
+ return sw;
+ }
else
return SW_HOST_NOT_SUPPORTED;
}
int
-apdu_keypad_verify (int slot, int class, int ins, int p0, int p1, int pin_mode,
- int pinlen_min, int pinlen_max, int pin_padlen)
+apdu_pinpad_verify (int slot, int class, int ins, int p0, int p1,
+ pininfo_t *pininfo)
{
- struct pininfo_s pininfo;
-
- pininfo.mode = pin_mode;
- pininfo.minlen = pinlen_min;
- pininfo.maxlen = pinlen_max;
- pininfo.padlen = pin_padlen;
-
if (slot < 0 || slot >= MAX_READER || !reader_table[slot].used )
return SW_HOST_NO_DRIVER;
- if (reader_table[slot].keypad_verify)
- return reader_table[slot].keypad_verify (slot, class, ins, p0, p1,
- &pininfo);
+ if (reader_table[slot].pinpad_verify)
+ {
+ int sw;
+
+ if ((sw = lock_slot (slot)))
+ return sw;
+
+ sw = reader_table[slot].pinpad_verify (slot, class, ins, p0, p1,
+ pininfo);
+ unlock_slot (slot);
+ return sw;
+ }
else
return SW_HOST_NOT_SUPPORTED;
}
int
-apdu_keypad_modify (int slot, int class, int ins, int p0, int p1, int pin_mode,
- int pinlen_min, int pinlen_max, int pin_padlen)
+apdu_pinpad_modify (int slot, int class, int ins, int p0, int p1,
+ pininfo_t *pininfo)
{
- struct pininfo_s pininfo;
-
- pininfo.mode = pin_mode;
- pininfo.minlen = pinlen_min;
- pininfo.maxlen = pinlen_max;
- pininfo.padlen = pin_padlen;
-
if (slot < 0 || slot >= MAX_READER || !reader_table[slot].used )
return SW_HOST_NO_DRIVER;
- if (reader_table[slot].keypad_modify)
- return reader_table[slot].keypad_modify (slot, class, ins, p0, p1,
- &pininfo);
+ if (reader_table[slot].pinpad_modify)
+ {
+ int sw;
+
+ if ((sw = lock_slot (slot)))
+ return sw;
+
+ sw = reader_table[slot].pinpad_modify (slot, class, ins, p0, p1,
+ pininfo);
+ unlock_slot (slot);
+ return sw;
+ }
else
return SW_HOST_NOT_SUPPORTED;
}
@@ -3485,7 +3471,7 @@ apdu_keypad_modify (int slot, int class, int ins, int p0, int p1, int pin_mode,
function should be called in locked state. */
static int
send_apdu (int slot, unsigned char *apdu, size_t apdulen,
- unsigned char *buffer, size_t *buflen, struct pininfo_s *pininfo)
+ unsigned char *buffer, size_t *buflen, pininfo_t *pininfo)
{
if (slot < 0 || slot >= MAX_READER || !reader_table[slot].used )
return SW_HOST_NO_DRIVER;
@@ -3501,7 +3487,7 @@ send_apdu (int slot, unsigned char *apdu, size_t apdulen,
/* Core APDU tranceiver function. Parameters are described at
- apdu_send_le with the exception of PININFO which indicates keypad
+ apdu_send_le with the exception of PININFO which indicates pinpad
related operations if not NULL. If EXTENDED_MODE is not 0
command chaining or extended length will be used according to these
values:
@@ -3517,7 +3503,7 @@ static int
send_le (int slot, int class, int ins, int p0, int p1,
int lc, const char *data, int le,
unsigned char **retbuf, size_t *retbuflen,
- struct pininfo_s *pininfo, int extended_mode)
+ pininfo_t *pininfo, int extended_mode)
{
#define SHORT_RESULT_BUFFER_SIZE 258
/* We allocate 8 extra bytes as a safety margin towards a driver bug. */
diff --git a/scd/apdu.h b/scd/apdu.h
index bf5534634..37f9f433c 100644
--- a/scd/apdu.h
+++ b/scd/apdu.h
@@ -69,7 +69,7 @@ enum {
SW_HOST_GENERAL_ERROR = 0x1000b,
SW_HOST_NO_READER = 0x1000c,
SW_HOST_ABORTED = 0x1000d,
- SW_HOST_NO_KEYPAD = 0x1000e,
+ SW_HOST_NO_PINPAD = 0x1000e,
SW_HOST_ALREADY_CONNECTED = 0x1000f
};
@@ -114,14 +114,11 @@ int apdu_set_progress_cb (int slot, gcry_handler_progress_t cb, void *cb_arg);
int apdu_reset (int slot);
int apdu_get_status (int slot, int hang,
unsigned int *status, unsigned int *changed);
-int apdu_check_keypad (int slot, int command, int pin_mode,
- int pinlen_min, int pinlen_max, int pin_padlen);
-int apdu_keypad_verify (int slot, int class, int ins, int p0, int p1,
- int pin_mode, int pinlen_min, int pinlen_max,
- int pin_padlen);
-int apdu_keypad_modify (int slot, int class, int ins, int p0, int p1,
- int pin_mode, int pinlen_min, int pinlen_max,
- int pin_padlen);
+int apdu_check_pinpad (int slot, int command, pininfo_t *pininfo);
+int apdu_pinpad_verify (int slot, int class, int ins, int p0, int p1,
+ pininfo_t *pininfo);
+int apdu_pinpad_modify (int slot, int class, int ins, int p0, int p1,
+ pininfo_t *pininfo);
int apdu_send_simple (int slot, int extended_mode,
int class, int ins, int p0, int p1,
int lc, const char *data);
diff --git a/scd/app-dinsig.c b/scd/app-dinsig.c
index 50db78e1f..7dad6b14f 100644
--- a/scd/app-dinsig.c
+++ b/scd/app-dinsig.c
@@ -282,21 +282,21 @@ verify_pin (app_t app,
{
const char *s;
int rc;
- iso7816_pininfo_t pininfo;
+ pininfo_t pininfo;
if ( app->did_chv1 && !app->force_chv1 )
return 0; /* No need to verify it again. */
memset (&pininfo, 0, sizeof pininfo);
- pininfo.mode = 1;
+ pininfo.fixedlen = -1;
pininfo.minlen = 6;
pininfo.maxlen = 8;
- if (!opt.disable_keypad
- && !iso7816_check_keypad (app->slot, ISO7816_VERIFY, &pininfo) )
+ if (!opt.disable_pinpad
+ && !iso7816_check_pinpad (app->slot, ISO7816_VERIFY, &pininfo) )
{
rc = pincb (pincb_arg,
- _("||Please enter your PIN at the reader's keypad"),
+ _("||Please enter your PIN at the reader's pinpad"),
NULL);
if (rc)
{
@@ -308,7 +308,7 @@ verify_pin (app_t app,
/* Dismiss the prompt. */
pincb (pincb_arg, NULL, NULL);
}
- else /* No Keypad. */
+ else /* No Pinpad. */
{
char *pinvalue;
diff --git a/scd/app-nks.c b/scd/app-nks.c
index 28ccb9af7..72e726d39 100644
--- a/scd/app-nks.c
+++ b/scd/app-nks.c
@@ -781,19 +781,19 @@ verify_pin (app_t app, int pwid, const char *desc,
gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg)
{
- iso7816_pininfo_t pininfo;
+ pininfo_t pininfo;
int rc;
if (!desc)
desc = "PIN";
memset (&pininfo, 0, sizeof pininfo);
- pininfo.mode = 1;
+ pininfo.fixedlen = -1;
pininfo.minlen = 6;
pininfo.maxlen = 16;
- if (!opt.disable_keypad
- && !iso7816_check_keypad (app->slot, ISO7816_VERIFY, &pininfo) )
+ if (!opt.disable_pinpad
+ && !iso7816_check_pinpad (app->slot, ISO7816_VERIFY, &pininfo) )
{
rc = pincb (pincb_arg, desc, NULL);
if (rc)
@@ -1144,7 +1144,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *pwidstr,
int is_sigg;
const char *newdesc;
int pwid;
- iso7816_pininfo_t pininfo;
+ pininfo_t pininfo;
(void)ctrl;
diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c
index 5928ec620..23b28c3f5 100644
--- a/scd/app-openpgp.c
+++ b/scd/app-openpgp.c
@@ -1,6 +1,6 @@
/* app-openpgp.c - The OpenPGP card application.
* Copyright (C) 2003, 2004, 2005, 2007, 2008,
- * 2009 Free Software Foundation, Inc.
+ * 2009, 2013 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -191,6 +191,14 @@ struct app_local_s {
unsigned int def_chv2:1; /* Use 123456 for CHV2. */
} flags;
+ /* Pinpad request specified on card. */
+ struct
+ {
+ unsigned int specified:1;
+ int fixedlen_user;
+ int fixedlen_admin;
+ } pinpad;
+
struct
{
unsigned int n_bits; /* Size of the modulus in bits. The rest
@@ -581,17 +589,23 @@ count_bits (const unsigned char *a, size_t len)
Everything up to a LF is considered a mailbox or account name. If
the first LF is followed by DC4 (0x14) control sequence are
expected up to the next LF. Control sequences are separated by FS
- (0x18) and consist of key=value pairs. There is one key defined:
+ (0x18) and consist of key=value pairs. There are two keys defined:
F=<flags>
- Were FLAGS is a plain hexadecimal number representing flag values.
+ Where FLAGS is a plain hexadecimal number representing flag values.
The lsb is here the rightmost bit. Defined flags bits are:
Bit 0 = CHV1 and CHV2 are not syncronized
Bit 1 = CHV2 has been been set to the default PIN of "123456"
(this implies that bit 0 is also set).
+ P=<pinpad-request>
+
+ Where PINPAD_REQUEST is in the format of: <n> or <n>,<m>.
+ N for user PIN, M for admin PIN. If M is missing it means M=N.
+ 0 means to force not to use pinpad.
+
*/
static void
parse_login_data (app_t app)
@@ -603,6 +617,9 @@ parse_login_data (app_t app)
/* Set defaults. */
app->app_local->flags.no_sync = 0;
app->app_local->flags.def_chv2 = 0;
+ app->app_local->pinpad.specified = 0;
+ app->app_local->pinpad.fixedlen_user = -1;
+ app->app_local->pinpad.fixedlen_admin = -1;
/* Read the DO. */
relptr = get_one_do (app, 0x005E, &buffer, &buflen, NULL);
@@ -628,11 +645,54 @@ parse_login_data (app_t app)
any leading digits but bail out on invalid characters. */
for (p=buffer+2, len = buflen-2; len && hexdigitp (p); p++, len--)
lastdig = xtoi_1 (p);
+ buffer = p;
+ buflen = len;
if (len && !(*p == '\n' || *p == '\x18'))
goto next; /* Invalid characters in field. */
app->app_local->flags.no_sync = !!(lastdig & 1);
app->app_local->flags.def_chv2 = (lastdig & 3) == 3;
}
+ else if (buflen > 1 && *buffer == 'P' && buffer[1] == '=')
+ {
+ /* Pinpad request control sequence found. */
+ buffer += 2;
+ buflen -= 2;
+
+ if (buflen)
+ {
+ if (digitp (buffer))
+ {
+ char *q;
+ int n, m;
+
+ n = strtol (buffer, &q, 10);
+ if (q >= (char *)buffer + buflen
+ || *q == '\x18' || *q == '\n')
+ m = n;
+ else
+ {
+ if (*q++ != ',' || !digitp (q))
+ goto next;
+ m = strtol (q, &q, 10);
+ }
+
+ buffer = q;
+ if (buflen < ((unsigned char *)q - buffer))
+ {
+ buflen = 0;
+ break;
+ }
+ else
+ buflen -= ((unsigned char *)q - buffer);
+
+ if (buflen && !(*buffer == '\n' || *buffer == '\x18'))
+ goto next;
+ app->app_local->pinpad.specified = 1;
+ app->app_local->pinpad.fixedlen_user = n;
+ app->app_local->pinpad.fixedlen_admin = m;
+ }
+ }
+ }
next:
for (; buflen && *buffer != '\x18'; buflen--, buffer++)
if (*buffer == '\n')
@@ -1470,15 +1530,50 @@ do_readcert (app_t app, const char *certid,
}
+/* Decide if we use the pinpad of the reader for PIN input according
+ to the user preference on the card, and the capability of the
+ reader. This routine is only called when the reader has pinpad.
+ Returns 0 if we use pinpad, 1 otherwise. */
+static int
+check_pinpad_request (app_t app, pininfo_t *pininfo, int admin_pin)
+{
+ if (app->app_local->pinpad.specified == 0) /* No preference on card. */
+ {
+ if (pininfo->fixedlen == 0) /* Reader has varlen capability. */
+ return 0; /* Then, use pinpad. */
+ else
+ /*
+ * Reader has limited capability, and it may not match PIN of
+ * the card.
+ */
+ return 1;
+ }
+
+ if (admin_pin)
+ pininfo->fixedlen = app->app_local->pinpad.fixedlen_admin;
+ else
+ pininfo->fixedlen = app->app_local->pinpad.fixedlen_user;
+
+ if (pininfo->fixedlen == 0 /* User requests disable pinpad. */
+ || pininfo->fixedlen < pininfo->minlen
+ || pininfo->fixedlen > pininfo->maxlen
+ /* Reader doesn't have the capability to input a PIN which
+ * length is FIXEDLEN. */)
+ return 1;
+
+ return 0;
+}
+
+
/* Verify a CHV either using using the pinentry or if possibile by
- using a keypad. PINCB and PINCB_ARG describe the usual callback
+ using a pinpad. PINCB and PINCB_ARG describe the usual callback
for the pinentry. CHVNO must be either 1 or 2. SIGCOUNT is only
used with CHV1. PINVALUE is the address of a pointer which will
receive a newly allocated block with the actual PIN (this is useful
in case that PIN shall be used for another verify operation). The
caller needs to free this value. If the function returns with
success and NULL is stored at PINVALUE, the caller should take this
- as an indication that the keypad has been used.
+ as an indication that the pinpad has been used.
*/
static gpg_error_t
verify_a_chv (app_t app,
@@ -1489,7 +1584,7 @@ verify_a_chv (app_t app,
int rc = 0;
char *prompt_buffer = NULL;
const char *prompt;
- iso7816_pininfo_t pininfo;
+ pininfo_t pininfo;
int minlen = 6;
assert (chvno == 1 || chvno == 2);
@@ -1516,7 +1611,7 @@ verify_a_chv (app_t app,
}
memset (&pininfo, 0, sizeof pininfo);
- pininfo.mode = 1;
+ pininfo.fixedlen = -1;
pininfo.minlen = minlen;
@@ -1536,12 +1631,13 @@ verify_a_chv (app_t app,
prompt = _("||Please enter the PIN");
- if (!opt.disable_keypad
- && !iso7816_check_keypad (app->slot, ISO7816_VERIFY, &pininfo) )
+ if (!opt.disable_pinpad
+ && !iso7816_check_pinpad (app->slot, ISO7816_VERIFY, &pininfo)
+ && !check_pinpad_request (app, &pininfo, 0))
{
- /* The reader supports the verify command through the keypad.
+ /* The reader supports the verify command through the pinpad.
Note that the pincb appends a text to the prompt telling the
- user to use the keypad. */
+ user to use the pinpad. */
rc = pincb (pincb_arg, prompt, NULL);
prompt = NULL;
xfree (prompt_buffer);
@@ -1560,7 +1656,7 @@ verify_a_chv (app_t app,
}
else
{
- /* The reader has no keypad or we don't want to use it. */
+ /* The reader has no pinpad or we don't want to use it. */
rc = pincb (pincb_arg, prompt, pinvalue);
prompt = NULL;
xfree (prompt_buffer);
@@ -1620,7 +1716,7 @@ verify_chv2 (app_t app,
/* For convenience we verify CHV1 here too. We do this only if
the card is not configured to require a verification before
each CHV1 controlled operation (force_chv1) and if we are not
- using the keypad (PINVALUE == NULL). */
+ using the pinpad (PINVALUE == NULL). */
rc = iso7816_verify (app->slot, 0x81, pinvalue, strlen (pinvalue));
if (gpg_err_code (rc) == GPG_ERR_BAD_PIN)
rc = gpg_error (GPG_ERR_PIN_NOT_SYNCED);
@@ -1707,22 +1803,23 @@ verify_chv3 (app_t app,
if (!app->did_chv3)
{
- iso7816_pininfo_t pininfo;
+ pininfo_t pininfo;
int minlen = 8;
char *prompt;
memset (&pininfo, 0, sizeof pininfo);
- pininfo.mode = 1;
+ pininfo.fixedlen = -1;
pininfo.minlen = minlen;
rc = build_enter_admin_pin_prompt (app, &prompt);
if (rc)
return rc;
- if (!opt.disable_keypad
- && !iso7816_check_keypad (app->slot, ISO7816_VERIFY, &pininfo) )
+ if (!opt.disable_pinpad
+ && !iso7816_check_pinpad (app->slot, ISO7816_VERIFY, &pininfo)
+ && !check_pinpad_request (app, &pininfo, 1))
{
- /* The reader supports the verify command through the keypad. */
+ /* The reader supports the verify command through the pinpad. */
rc = pincb (pincb_arg, prompt, NULL);
xfree (prompt);
prompt = NULL;
@@ -1917,13 +2014,13 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
char *pinvalue = NULL;
int reset_mode = !!(flags & APP_CHANGE_FLAG_RESET);
int set_resetcode = 0;
- iso7816_pininfo_t pininfo;
- int use_keypad = 0;
+ pininfo_t pininfo;
+ int use_pinpad = 0;
int minlen = 6;
(void)ctrl;
memset (&pininfo, 0, sizeof pininfo);
- pininfo.mode = 1;
+ pininfo.fixedlen = -1;
pininfo.minlen = minlen;
if (reset_mode && chvno == 3)
@@ -1968,15 +2065,16 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
{
/* Version 2 cards. */
- if (!opt.disable_keypad
- && !iso7816_check_keypad (app->slot,
- ISO7816_CHANGE_REFERENCE_DATA, &pininfo))
- use_keypad = 1;
+ if (!opt.disable_pinpad
+ && !iso7816_check_pinpad (app->slot,
+ ISO7816_CHANGE_REFERENCE_DATA, &pininfo)
+ && !check_pinpad_request (app, &pininfo, chvno == 3))
+ use_pinpad = 1;
if (reset_mode)
{
/* To reset a PIN the Admin PIN is required. */
- use_keypad = 0;
+ use_pinpad = 0;
app->did_chv3 = 0;
rc = verify_chv3 (app, pincb, pincb_arg);
if (rc)
@@ -1987,7 +2085,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
}
else if (chvno == 1 || chvno == 3)
{
- if (!use_keypad)
+ if (!use_pinpad)
{
char *promptbuf = NULL;
const char *prompt;
@@ -2030,7 +2128,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
size_t valuelen;
int remaining;
- use_keypad = 0;
+ use_pinpad = 0;
minlen = 8;
relptr = get_one_do (app, 0x00C4, &value, &valuelen, NULL);
if (!relptr || valuelen < 7)
@@ -2078,7 +2176,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
else
app->did_chv1 = app->did_chv2 = 0;
- if (!use_keypad)
+ if (!use_pinpad)
{
/* TRANSLATORS: Do not translate the "|*|" prefixes but
keep it at the start of the string. We need this elsewhere
@@ -2151,7 +2249,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr,
/* Version 2 cards. */
assert (chvno == 1 || chvno == 3);
- if (use_keypad)
+ if (use_pinpad)
{
rc = pincb (pincb_arg,
chvno == 3 ?
@@ -3226,7 +3324,7 @@ do_sign (app_t app, const char *keyidstr, int hashalgo,
sync, thus we verify CHV2 here using the given PIN. Cards
with version2 to not have the need for a separate CHV2 and
internally use just one. Obviously we can't do that if the
- keypad has been used. */
+ pinpad has been used. */
if (!app->did_chv2 && pinvalue && !app->app_local->extcap.is_v2)
{
rc = iso7816_verify (app->slot, 0x82, pinvalue, strlen (pinvalue));
diff --git a/scd/app.c b/scd/app.c
index dfb59913d..e6a663e1e 100644
--- a/scd/app.c
+++ b/scd/app.c
@@ -26,8 +26,8 @@
#include "scdaemon.h"
#include "app-common.h"
-#include "apdu.h"
#include "iso7816.h"
+#include "apdu.h"
#include "tlv.h"
/* This table is used to keep track of locks on a per reader base.
diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c
index 3fe932ca6..2d1ef8d46 100644
--- a/scd/ccid-driver.c
+++ b/scd/ccid-driver.c
@@ -1,6 +1,6 @@
/* ccid-driver.c - USB ChipCardInterfaceDevices driver
* Copyright (C) 2003, 2004, 2005, 2006, 2007
- * 2008, 2009 Free Software Foundation, Inc.
+ * 2008, 2009, 2013 Free Software Foundation, Inc.
* Written by Werner Koch.
*
* This file is part of GnuPG.
@@ -89,6 +89,8 @@
#include <usb.h>
+#include "scdaemon.h"
+#include "iso7816.h"
#include "ccid-driver.h"
#define DRVNAME "ccid-driver: "
@@ -207,6 +209,7 @@ enum {
VENDOR_SCM = 0x04e6,
VENDOR_OMNIKEY= 0x076b,
VENDOR_GEMPC = 0x08e6,
+ VENDOR_VEGA = 0x0982,
VENDOR_KAAN = 0x0d46,
VENDOR_FSIJ = 0x234b,
VENDOR_VASCO = 0x1a44
@@ -220,6 +223,8 @@ enum {
#define SCM_SPR532 0xe003
#define CHERRY_ST2000 0x003e
#define VASCO_920 0x0920
+#define GEMPC_PINPAD 0x3478
+#define VEGA_ALPHA 0x0008
/* A list and a table with special transport descriptions. */
enum {
@@ -264,6 +269,9 @@ struct ccid_driver_s
unsigned char apdu_level:2; /* Reader supports short APDU level
exchange. With a value of 2 short
and extended level is supported.*/
+ unsigned int auto_voltage:1;
+ unsigned int auto_param:1;
+ unsigned int auto_pps:1;
unsigned int auto_ifsd:1;
unsigned int powered_off:1;
unsigned int has_pinpad:2;
@@ -295,6 +303,9 @@ static int bulk_in (ccid_driver_t handle, unsigned char *buffer, size_t length,
size_t *nread, int expected_type, int seqno, int timeout,
int no_debug);
static int abort_cmd (ccid_driver_t handle, int seqno);
+static int send_escape_cmd (ccid_driver_t handle, const unsigned char *data,
+ size_t datalen, unsigned char *result,
+ size_t resultmax, size_t *resultlen);
/* Convert a little endian stored 4 byte value into an unsigned
integer. */
@@ -758,7 +769,7 @@ parse_ccid_descriptor (ccid_driver_t handle,
{
unsigned int i;
unsigned int us;
- int have_t1 = 0, have_tpdu=0, have_auto_conf = 0;
+ int have_t1 = 0, have_tpdu=0;
handle->nonnull_nad = 0;
@@ -767,6 +778,9 @@ parse_ccid_descriptor (ccid_driver_t handle,
handle->ifsd = 0;
handle->has_pinpad = 0;
handle->apdu_level = 0;
+ handle->auto_voltage = 0;
+ handle->auto_param = 0;
+ handle->auto_pps = 0;
DEBUGOUT_3 ("idVendor: %04X idProduct: %04X bcdDevice: %04X\n",
handle->id_vendor, handle->id_product, handle->bcd_device);
if (buflen < 54 || buf[0] < 54)
@@ -842,22 +856,31 @@ parse_ccid_descriptor (ccid_driver_t handle,
DEBUGOUT_1 (" dwFeatures %08X\n", us);
if ((us & 0x0002))
{
- DEBUGOUT (" Auto configuration based on ATR\n");
- have_auto_conf = 1;
+ DEBUGOUT (" Auto configuration based on ATR (assumes auto voltage)\n");
+ handle->auto_voltage = 1;
}
if ((us & 0x0004))
DEBUGOUT (" Auto activation on insert\n");
if ((us & 0x0008))
- DEBUGOUT (" Auto voltage selection\n");
+ {
+ DEBUGOUT (" Auto voltage selection\n");
+ handle->auto_voltage = 1;
+ }
if ((us & 0x0010))
DEBUGOUT (" Auto clock change\n");
if ((us & 0x0020))
DEBUGOUT (" Auto baud rate change\n");
if ((us & 0x0040))
- DEBUGOUT (" Auto parameter negotiation made by CCID\n");
+ {
+ DEBUGOUT (" Auto parameter negotiation made by CCID\n");
+ handle->auto_param = 1;
+ }
else if ((us & 0x0080))
- DEBUGOUT (" Auto PPS made by CCID\n");
- else if ((us & (0x0040 | 0x0080)))
+ {
+ DEBUGOUT (" Auto PPS made by CCID\n");
+ handle->auto_pps = 1;
+ }
+ if ((us & (0x0040 | 0x0080)) == (0x0040 | 0x0080))
DEBUGOUT (" WARNING: conflicting negotiation features\n");
if ((us & 0x0100))
@@ -935,11 +958,10 @@ parse_ccid_descriptor (ccid_driver_t handle,
DEBUGOUT_LF ();
}
- if (!have_t1 || !(have_tpdu || handle->apdu_level) || !have_auto_conf)
+ if (!have_t1 || !(have_tpdu || handle->apdu_level))
{
DEBUGOUT ("this drivers requires that the reader supports T=1, "
- "TPDU or APDU level exchange and auto configuration - "
- "this is not available\n");
+ "TPDU or APDU level exchange - this is not available\n");
return -1;
}
@@ -1506,6 +1528,29 @@ ccid_get_reader_list (void)
}
+/* Vendor specific custom initialization. */
+static int
+ccid_vendor_specific_init (ccid_driver_t handle)
+{
+ if (handle->id_vendor == VENDOR_VEGA && handle->id_product == VEGA_ALPHA)
+ {
+ /*
+ * Vega alpha has a feature to show retry counter on the pinpad
+ * display. But it assumes that the card returns the value of
+ * retry counter by VERIFY with empty data (return code of
+ * 63Cx). Unfortunately, existing OpenPGP cards don't support
+ * VERIFY command with empty data. This vendor specific command
+ * sequence is to disable the feature.
+ */
+ const unsigned char cmd[] = "\xb5\x01\x00\x03\x00";
+
+ return send_escape_cmd (handle, cmd, sizeof (cmd), NULL, 0, NULL);
+ }
+
+ return 0;
+}
+
+
/* Open the reader with the internal number READERNO and return a
pointer to be used as handle in HANDLE. Returns 0 on success. */
int
@@ -1614,6 +1659,8 @@ ccid_open_reader (ccid_driver_t *handle, const char *readerid)
}
}
+ rc = ccid_vendor_specific_init (*handle);
+
leave:
free (ifcdesc_extra);
if (rc)
@@ -2338,6 +2385,151 @@ ccid_slot_status (ccid_driver_t handle, int *statusbits)
}
+/* Parse ATR string (of ATRLEN) and update parameters at PARAM.
+ Calling this routine, it should prepare default values at PARAM
+ beforehand. This routine assumes that card is accessed by T=1
+ protocol. It doesn't analyze historical bytes at all.
+
+ Returns < 0 value on error:
+ -1 for parse error or integrity check error
+ -2 for card doesn't support T=1 protocol
+ -3 for parameters are nod explicitly defined by ATR
+ -4 for this driver doesn't support CRC
+
+ Returns >= 0 on success:
+ 0 for card is negotiable mode
+ 1 for card is specific mode (and not negotiable)
+ */
+static int
+update_param_by_atr (unsigned char *param, unsigned char *atr, size_t atrlen)
+{
+ int i = -1;
+ int t, y, chk;
+ int historical_bytes_num, negotiable = 1;
+
+#define NEXTBYTE() do { i++; if (atrlen <= i) return -1; } while (0)
+
+ NEXTBYTE ();
+
+ if (atr[i] == 0x3F)
+ param[1] |= 0x02; /* Convention is inverse. */
+ NEXTBYTE ();
+
+ y = (atr[i] >> 4);
+ historical_bytes_num = atr[i] & 0x0f;
+ NEXTBYTE ();
+
+ if ((y & 1))
+ {
+ param[0] = atr[i]; /* TA1 - Fi & Di */
+ NEXTBYTE ();
+ }
+
+ if ((y & 2))
+ NEXTBYTE (); /* TB1 - ignore */
+
+ if ((y & 4))
+ {
+ param[2] = atr[i]; /* TC1 - Guard Time */
+ NEXTBYTE ();
+ }
+
+ if ((y & 8))
+ {
+ y = (atr[i] >> 4); /* TD1 */
+ t = atr[i] & 0x0f;
+ NEXTBYTE ();
+
+ if ((y & 1))
+ { /* TA2 - PPS mode */
+ if ((atr[i] & 0x0f) != 1)
+ return -2; /* Wrong card protocol (!= 1). */
+
+ if ((atr[i] & 0x10) != 0x10)
+ return -3; /* Transmission parameters are implicitly defined. */
+
+ negotiable = 0; /* TA2 means specific mode. */
+ NEXTBYTE ();
+ }
+
+ if ((y & 2))
+ NEXTBYTE (); /* TB2 - ignore */
+
+ if ((y & 4))
+ NEXTBYTE (); /* TC2 - ignore */
+
+ if ((y & 8))
+ {
+ y = (atr[i] >> 4); /* TD2 */
+ t = atr[i] & 0x0f;
+ NEXTBYTE ();
+ }
+ else
+ y = 0;
+
+ while (y)
+ {
+ if ((y & 1))
+ { /* TAx */
+ if (t == 1)
+ param[5] = atr[i]; /* IFSC */
+ else if (t == 15)
+ /* XXX: check voltage? */
+ param[4] = (atr[i] >> 6); /* ClockStop */
+
+ NEXTBYTE ();
+ }
+
+ if ((y & 2))
+ {
+ if (t == 1)
+ param[3] = atr[i]; /* TBx - BWI & CWI */
+ NEXTBYTE ();
+ }
+
+ if ((y & 4))
+ {
+ if (t == 1)
+ param[1] |= (atr[i] & 0x01); /* TCx - LRC/CRC */
+ NEXTBYTE ();
+
+ if (param[1] & 0x01)
+ return -4; /* CRC not supported yet. */
+ }
+
+ if ((y & 8))
+ {
+ y = (atr[i] >> 4); /* TDx */
+ t = atr[i] & 0x0f;
+ NEXTBYTE ();
+ }
+ else
+ y = 0;
+ }
+ }
+
+ i += historical_bytes_num - 1;
+ NEXTBYTE ();
+ if (atrlen != i+1)
+ return -1;
+
+#undef NEXTBYTE
+
+ chk = 0;
+ do
+ {
+ chk ^= atr[i];
+ i--;
+ }
+ while (i > 0);
+
+ if (chk != 0)
+ return -1;
+
+ return negotiable;
+}
+
+
/* Return the ATR of the card. This is not a cached value and thus an
actual reset is done. */
int
@@ -2354,6 +2546,15 @@ ccid_get_atr (ccid_driver_t handle,
unsigned int edc;
int tried_iso = 0;
int got_param;
+ unsigned char param[7] = { /* For Protocol T=1 */
+ 0x11, /* bmFindexDindex */
+ 0x10, /* bmTCCKST1 */
+ 0x00, /* bGuardTimeT1 */
+ 0x4d, /* bmWaitingIntegersT1 */
+ 0x00, /* bClockStop */
+ 0x20, /* bIFSC */
+ 0x00 /* bNadValue */
+ };
/* First check whether a card is available. */
rc = ccid_slot_status (handle, &statusbits);
@@ -2368,7 +2569,8 @@ ccid_get_atr (ccid_driver_t handle,
msg[0] = PC_to_RDR_IccPowerOn;
msg[5] = 0; /* slot */
msg[6] = seqno = handle->seqno++;
- msg[7] = 0; /* power select (0=auto, 1=5V, 2=3V, 3=1.8V) */
+ /* power select (0=auto, 1=5V, 2=3V, 3=1.8V) */
+ msg[7] = handle->auto_voltage ? 0 : 1;
msg[8] = 0; /* RFU */
msg[9] = 0; /* RFU */
set_msg_len (msg, 0);
@@ -2410,23 +2612,73 @@ ccid_get_atr (ccid_driver_t handle,
*atrlen = n;
}
+ param[6] = handle->nonnull_nad? ((1 << 4) | 0): 0;
+ rc = update_param_by_atr (param, msg+10, msglen - 10);
+ if (rc < 0)
+ {
+ DEBUGOUT_1 ("update_param_by_atr failed: %d\n", rc);
+ return CCID_DRIVER_ERR_CARD_IO_ERROR;
+ }
+
got_param = 0;
- msg[0] = PC_to_RDR_GetParameters;
- msg[5] = 0; /* slot */
- msg[6] = seqno = handle->seqno++;
- msg[7] = 0; /* RFU */
- msg[8] = 0; /* RFU */
- msg[9] = 0; /* RFU */
- set_msg_len (msg, 0);
- msglen = 10;
- rc = bulk_out (handle, msg, msglen, 0);
- if (!rc)
- rc = bulk_in (handle, msg, sizeof msg, &msglen, RDR_to_PC_Parameters,
- seqno, 2000, 0);
- if (rc)
- DEBUGOUT ("GetParameters failed\n");
- else if (msglen == 17 && msg[9] == 1)
- got_param = 1;
+
+ if (handle->auto_param)
+ {
+ msg[0] = PC_to_RDR_GetParameters;
+ msg[5] = 0; /* slot */
+ msg[6] = seqno = handle->seqno++;
+ msg[7] = 0; /* RFU */
+ msg[8] = 0; /* RFU */
+ msg[9] = 0; /* RFU */
+ set_msg_len (msg, 0);
+ msglen = 10;
+ rc = bulk_out (handle, msg, msglen, 0);
+ if (!rc)
+ rc = bulk_in (handle, msg, sizeof msg, &msglen, RDR_to_PC_Parameters,
+ seqno, 2000, 0);
+ if (rc)
+ DEBUGOUT ("GetParameters failed\n");
+ else if (msglen == 17 && msg[9] == 1)
+ got_param = 1;
+ }
+ else if (handle->auto_pps)
+ ;
+ else if (rc == 1) /* It's negotiable, send PPS. */
+ {
+ msg[0] = PC_to_RDR_XfrBlock;
+ msg[5] = 0; /* slot */
+ msg[6] = seqno = handle->seqno++;
+ msg[7] = 0;
+ msg[8] = 0;
+ msg[9] = 0;
+ msg[10] = 0xff; /* PPSS */
+ msg[11] = 0x11; /* PPS0: PPS1, Protocol T=1 */
+ msg[12] = param[0]; /* PPS1: Fi / Di */
+ msg[13] = 0xff ^ 0x11 ^ param[0]; /* PCK */
+ set_msg_len (msg, 4);
+ msglen = 10 + 4;
+
+ rc = bulk_out (handle, msg, msglen, 0);
+ if (rc)
+ return rc;
+
+ rc = bulk_in (handle, msg, sizeof msg, &msglen, RDR_to_PC_DataBlock,
+ seqno, 5000, 0);
+ if (rc)
+ return rc;
+
+ if (msglen != 10 + 4)
+ {
+ DEBUGOUT_1 ("Setting PPS failed: %d\n", msglen);
+ return CCID_DRIVER_ERR_CARD_IO_ERROR;
+ }
+
+ if (msg[10] != 0xff || msg[11] != 0x11 || msg[12] != param[0])
+ {
+ DEBUGOUT_1 ("Setting PPS failed: 0x%02x\n", param[0]);
+ return CCID_DRIVER_ERR_CARD_IO_ERROR;
+ }
+ }
/* Setup parameters to select T=1. */
msg[0] = PC_to_RDR_SetParameters;
@@ -2437,16 +2689,7 @@ ccid_get_atr (ccid_driver_t handle,
msg[9] = 0; /* RFU */
if (!got_param)
- {
- /* FIXME: Get those values from the ATR. */
- msg[10]= 0x01; /* Fi/Di */
- msg[11]= 0x10; /* LRC, direct convention. */
- msg[12]= 0; /* Extra guardtime. */
- msg[13]= 0x41; /* BWI/CWI */
- msg[14]= 0; /* No clock stoppping. */
- msg[15]= 254; /* IFSC */
- msg[16]= 0; /* Does not support non default NAD values. */
- }
+ memcpy (&msg[10], param, 7);
set_msg_len (msg, 7);
msglen = 10 + 7;
@@ -2463,6 +2706,12 @@ ccid_get_atr (ccid_driver_t handle,
else
handle->ifsc = 128; /* Something went wrong, assume 128 bytes. */
+ if (handle->nonnull_nad && msglen > 16 && msg[16] == 0)
+ {
+ DEBUGOUT ("Use Null-NAD, clearing handle->nonnull_nad.\n");
+ handle->nonnull_nad = 0;
+ }
+
handle->t1_ns = 0;
handle->t1_nr = 0;
@@ -3071,7 +3320,7 @@ ccid_transceive (ccid_driver_t handle,
The APDU should me made up of 4 bytes without Lc.
PINLEN_MIN and PINLEN_MAX define the limits for the pin length. 0
- may be used t enable reasonable defaults. PIN_PADLEN should be 0.
+ may be used t enable reasonable defaults.
When called with RESP and NRESP set to NULL, the function will
merely check whether the reader supports the secure command for the
@@ -3079,8 +3328,7 @@ ccid_transceive (ccid_driver_t handle,
int
ccid_transceive_secure (ccid_driver_t handle,
const unsigned char *apdu_buf, size_t apdu_buflen,
- int pin_mode, int pinlen_min, int pinlen_max,
- int pin_padlen,
+ pininfo_t *pininfo,
unsigned char *resp, size_t maxresplen, size_t *nresp)
{
int rc;
@@ -3091,6 +3339,7 @@ ccid_transceive_secure (ccid_driver_t handle,
size_t dummy_nresp;
int testmode;
int cherry_mode = 0;
+ int enable_varlen = 0;
testmode = !resp && !nresp;
@@ -3103,23 +3352,17 @@ ccid_transceive_secure (ccid_driver_t handle,
else if (apdu_buflen >= 4 && apdu_buf[1] == 0x24 && (handle->has_pinpad & 2))
;
else
- return CCID_DRIVER_ERR_NO_KEYPAD;
+ return CCID_DRIVER_ERR_NO_PINPAD;
- if (pin_mode != 1)
- return CCID_DRIVER_ERR_NOT_SUPPORTED;
-
- if (pin_padlen != 0)
- return CCID_DRIVER_ERR_NOT_SUPPORTED;
-
- if (!pinlen_min)
- pinlen_min = 1;
- if (!pinlen_max)
- pinlen_max = 25;
+ if (!pininfo->minlen)
+ pininfo->minlen = 1;
+ if (!pininfo->maxlen)
+ pininfo->maxlen = 25;
/* Note that the 25 is the maximum value the SPR532 allows. */
- if (pinlen_min < 1 || pinlen_min > 25
- || pinlen_max < 1 || pinlen_max > 25
- || pinlen_min > pinlen_max)
+ if (pininfo->minlen < 1 || pininfo->minlen > 25
+ || pininfo->maxlen < 1 || pininfo->maxlen > 25
+ || pininfo->minlen > pininfo->maxlen)
return CCID_DRIVER_ERR_INV_VALUE;
/* We have only tested a few readers so better don't risk anything
@@ -3129,11 +3372,14 @@ ccid_transceive_secure (ccid_driver_t handle,
case VENDOR_SCM: /* Tested with SPR 532. */
case VENDOR_KAAN: /* Tested with KAAN Advanced (1.02). */
case VENDOR_FSIJ: /* Tested with the gnuk code (2011-01-05). */
+ enable_varlen = 1;
break;
case VENDOR_VASCO: /* Tested with DIGIPASS 920 */
- pinlen_max = 15;
+ enable_varlen = 1;
+ pininfo->maxlen = 15;
break;
case VENDOR_CHERRY:
+ enable_varlen = 1;
/* The CHERRY XX44 keyboard echos an asterisk for each entered
character on the keyboard channel. We use a special variant
of PC_to_RDR_Secure which directs these characters to the
@@ -3145,12 +3391,28 @@ ccid_transceive_secure (ccid_driver_t handle,
cherry_mode = 1;
break;
default:
+ if ((handle->id_vendor == VENDOR_GEMPC &&
+ handle->id_product == GEMPC_PINPAD)
+ || (handle->id_vendor == VENDOR_VEGA &&
+ handle->id_product == VEGA_ALPHA))
+ {
+ enable_varlen = 0;
+ pininfo->minlen = 4;
+ pininfo->maxlen = 8;
+ break;
+ }
return CCID_DRIVER_ERR_NOT_SUPPORTED;
}
+ if (enable_varlen)
+ pininfo->fixedlen = 0;
+
if (testmode)
return 0; /* Success */
+ if (pininfo->fixedlen < 0 || pininfo->fixedlen >= 16)
+ return CCID_DRIVER_ERR_NOT_SUPPORTED;
+
msg = send_buffer;
if (handle->id_vendor == VENDOR_SCM)
{
@@ -3180,9 +3442,9 @@ ccid_transceive_secure (ccid_driver_t handle,
}
else
{
- msg[13] = 0x00; /* bmPINBlockString:
- 0 bits of pin length to insert.
- 0 bytes of PIN block size. */
+ msg[13] = pininfo->fixedlen; /* bmPINBlockString:
+ 0 bits of pin length to insert.
+ PIN block size by fixedlen. */
msg[14] = 0x00; /* bmPINLengthFormat:
Units are bytes, position is 0. */
}
@@ -3191,12 +3453,12 @@ ccid_transceive_secure (ccid_driver_t handle,
if (apdu_buf[1] == 0x24)
{
msg[msglen++] = 0; /* bInsertionOffsetOld */
- msg[msglen++] = 0; /* bInsertionOffsetNew */
+ msg[msglen++] = pininfo->fixedlen; /* bInsertionOffsetNew */
}
/* The following is a little endian word. */
- msg[msglen++] = pinlen_max; /* wPINMaxExtraDigit-Maximum. */
- msg[msglen++] = pinlen_min; /* wPINMaxExtraDigit-Minimum. */
+ msg[msglen++] = pininfo->maxlen; /* wPINMaxExtraDigit-Maximum. */
+ msg[msglen++] = pininfo->minlen; /* wPINMaxExtraDigit-Minimum. */
if (apdu_buf[1] == 0x24)
msg[msglen++] = apdu_buf[2] == 0 ? 0x03 : 0x01;
@@ -3209,12 +3471,12 @@ ccid_transceive_secure (ccid_driver_t handle,
msg[msglen] = 0x02; /* bEntryValidationCondition:
Validation key pressed */
- if (pinlen_min && pinlen_max && pinlen_min == pinlen_max)
+ if (pininfo->minlen && pininfo->maxlen && pininfo->minlen == pininfo->maxlen)
msg[msglen] |= 0x01; /* Max size reached. */
msglen++;
if (apdu_buf[1] == 0x20)
- msg[msglen++] = 0xff; /* bNumberMessage: Default. */
+ msg[msglen++] = 0x01; /* bNumberMessage. */
else
msg[msglen++] = 0x03; /* bNumberMessage. */
@@ -3230,10 +3492,18 @@ ccid_transceive_secure (ccid_driver_t handle,
msg[msglen++] = 2; /* bMsgIndex3. */
}
+ /* Calculate Lc. */
+ n = pininfo->fixedlen;
+ if (apdu_buf[1] == 0x24)
+ n += pininfo->fixedlen;
+
/* bTeoProlog follows: */
msg[msglen++] = handle->nonnull_nad? ((1 << 4) | 0): 0;
msg[msglen++] = ((handle->t1_ns & 1) << 6); /* I-block */
- msg[msglen++] = 0; /* The apdulen will be filled in by the reader. */
+ if (n)
+ msg[msglen++] = n + 5; /* apdulen should be filled for fixed length. */
+ else
+ msg[msglen++] = 0; /* The apdulen will be filled in by the reader. */
/* APDU follows: */
msg[msglen++] = apdu_buf[0]; /* CLA */
msg[msglen++] = apdu_buf[1]; /* INS */
@@ -3241,6 +3511,12 @@ ccid_transceive_secure (ccid_driver_t handle,
msg[msglen++] = apdu_buf[3]; /* P2 */
if (cherry_mode)
msg[msglen++] = 0;
+ else if (pininfo->fixedlen != 0)
+ {
+ msg[msglen++] = n;
+ memset (&msg[msglen], 0xff, n);
+ msglen += n;
+ }
/* An EDC is not required. */
set_msg_len (msg, msglen - 10);
diff --git a/scd/ccid-driver.h b/scd/ccid-driver.h
index 121cb945b..1fd7ffa63 100644
--- a/scd/ccid-driver.h
+++ b/scd/ccid-driver.h
@@ -72,7 +72,7 @@
#define CCID_DRIVER_ERR_GENERAL_ERROR 0x1000b
#define CCID_DRIVER_ERR_NO_READER 0x1000c
#define CCID_DRIVER_ERR_ABORTED 0x1000d
-#define CCID_DRIVER_ERR_NO_KEYPAD 0x1000e
+#define CCID_DRIVER_ERR_NO_PINPAD 0x1000e
struct ccid_driver_s;
typedef struct ccid_driver_s *ccid_driver_t;
@@ -93,8 +93,7 @@ int ccid_transceive (ccid_driver_t handle,
unsigned char *resp, size_t maxresplen, size_t *nresp);
int ccid_transceive_secure (ccid_driver_t handle,
const unsigned char *apdu, size_t apdulen,
- int pin_mode,
- int pinlen_min, int pinlen_max, int pin_padlen,
+ pininfo_t *pininfo,
unsigned char *resp, size_t maxresplen, size_t *nresp);
int ccid_transceive_escape (ccid_driver_t handle,
const unsigned char *data, size_t datalen,
diff --git a/scd/command.c b/scd/command.c
index 40e61a48b..6267bb0cd 100644
--- a/scd/command.c
+++ b/scd/command.c
@@ -34,6 +34,7 @@
#include <assuan.h>
#include <ksba.h>
#include "app-common.h"
+#include "iso7816.h"
#include "apdu.h" /* Required for apdu_*_reader (). */
#include "atr.h"
#include "exechelp.h"
@@ -908,13 +909,13 @@ pin_cb (void *opaque, const char *info, char **retstr)
if (!retstr)
{
- /* We prompt for keypad entry. To make sure that the popup has
+ /* We prompt for pinpad entry. To make sure that the popup has
been show we use an inquire and not just a status message.
We ignore any value returned. */
if (info)
{
- log_debug ("prompting for keypad entry '%s'\n", info);
- rc = estream_asprintf (&command, "POPUPKEYPADPROMPT %s", info);
+ log_debug ("prompting for pinpad entry '%s'\n", info);
+ rc = estream_asprintf (&command, "POPUPPINPADPROMPT %s", info);
if (rc < 0)
return gpg_error (gpg_err_code_from_errno (errno));
rc = assuan_inquire (ctx, command, &value, &valuelen, MAXLEN_PIN);
@@ -922,8 +923,8 @@ pin_cb (void *opaque, const char *info, char **retstr)
}
else
{
- log_debug ("dismiss keypad entry prompt\n");
- rc = assuan_inquire (ctx, "DISMISSKEYPADPROMPT",
+ log_debug ("dismiss pinpad entry prompt\n");
+ rc = assuan_inquire (ctx, "DISMISSPINPADPROMPT",
&value, &valuelen, MAXLEN_PIN);
}
if (!rc)
diff --git a/scd/iso7816.c b/scd/iso7816.c
index 45f5e08bf..f1dbcffe4 100644
--- a/scd/iso7816.c
+++ b/scd/iso7816.c
@@ -94,7 +94,7 @@ map_sw (int sw)
case SW_HOST_GENERAL_ERROR: ec = GPG_ERR_GENERAL; break;
case SW_HOST_NO_READER: ec = GPG_ERR_ENODEV; break;
case SW_HOST_ABORTED: ec = GPG_ERR_CANCELED; break;
- case SW_HOST_NO_KEYPAD: ec = GPG_ERR_NOT_SUPPORTED; break;
+ case SW_HOST_NO_PINPAD: ec = GPG_ERR_NOT_SUPPORTED; break;
default:
if ((sw & 0x010000))
@@ -267,30 +267,26 @@ iso7816_apdu_direct (int slot, const void *apdudata, size_t apdudatalen,
/* Check whether the reader supports the ISO command code COMMAND on
- the keypad. Returns 0 on success. */
+ the pinpad. Returns 0 on success. */
gpg_error_t
-iso7816_check_keypad (int slot, int command, iso7816_pininfo_t *pininfo)
+iso7816_check_pinpad (int slot, int command, pininfo_t *pininfo)
{
int sw;
- sw = apdu_check_keypad (slot, command,
- pininfo->mode, pininfo->minlen, pininfo->maxlen,
- pininfo->padlen);
+ sw = apdu_check_pinpad (slot, command, pininfo);
return iso7816_map_sw (sw);
}
/* Perform a VERIFY command on SLOT using the card holder verification
- vector CHVNO. With PININFO non-NULL the keypad of the reader will
+ vector CHVNO. With PININFO non-NULL the pinpad of the reader will
be used. Returns 0 on success. */
gpg_error_t
-iso7816_verify_kp (int slot, int chvno, iso7816_pininfo_t *pininfo)
+iso7816_verify_kp (int slot, int chvno, pininfo_t *pininfo)
{
int sw;
- sw = apdu_keypad_verify (slot, 0x00, CMD_VERIFY, 0, chvno,
- pininfo->mode, pininfo->minlen, pininfo->maxlen,
- pininfo->padlen);
+ sw = apdu_pinpad_verify (slot, 0x00, CMD_VERIFY, 0, chvno, pininfo);
return map_sw (sw);
}
@@ -306,19 +302,17 @@ iso7816_verify (int slot, int chvno, const char *chv, size_t chvlen)
}
/* Perform a CHANGE_REFERENCE_DATA command on SLOT for the card holder
- verification vector CHVNO. With PININFO non-NULL the keypad of the
+ verification vector CHVNO. With PININFO non-NULL the pinpad of the
reader will be used. If IS_EXCHANGE is 0, a "change reference
data" is done, otherwise an "exchange reference data". */
gpg_error_t
iso7816_change_reference_data_kp (int slot, int chvno, int is_exchange,
- iso7816_pininfo_t *pininfo)
+ pininfo_t *pininfo)
{
int sw;
- sw = apdu_keypad_modify (slot, 0x00, CMD_CHANGE_REFERENCE_DATA,
- is_exchange ? 1 : 0,
- chvno, pininfo->mode, pininfo->minlen,
- pininfo->maxlen, pininfo->padlen);
+ sw = apdu_pinpad_modify (slot, 0x00, CMD_CHANGE_REFERENCE_DATA,
+ is_exchange ? 1 : 0, chvno, pininfo);
return map_sw (sw);
}
diff --git a/scd/iso7816.h b/scd/iso7816.h
index 336208aba..6dd1052fe 100644
--- a/scd/iso7816.h
+++ b/scd/iso7816.h
@@ -24,23 +24,26 @@
#include "cardglue.h"
#endif
-/* Command codes used by iso7816_check_keypad. */
+/* Command codes used by iso7816_check_pinpad. */
#define ISO7816_VERIFY 0x20
#define ISO7816_CHANGE_REFERENCE_DATA 0x24
#define ISO7816_RESET_RETRY_COUNTER 0x2C
-/* Information to be passed to keypad equipped readers. See
+/* Information to be passed to pinpad equipped readers. See
ccid-driver.c for details. */
-struct iso7816_pininfo_s
+struct pininfo_s
{
- int mode; /* A mode of 0 means: Do not use the keypad. */
+ int fixedlen; /*
+ * -1: Variable length input is not supported,
+ * no information of fixed length yet.
+ * 0: Use variable length input.
+ * >0: Fixed length of PIN.
+ */
int minlen;
int maxlen;
- int padlen;
- int padchar;
};
-typedef struct iso7816_pininfo_s iso7816_pininfo_t;
+typedef struct pininfo_s pininfo_t;
gpg_error_t iso7816_map_sw (int sw);
@@ -59,17 +62,17 @@ gpg_error_t iso7816_apdu_direct (int slot,
const void *apdudata, size_t apdudatalen,
int handle_more,
unsigned char **result, size_t *resultlen);
-gpg_error_t iso7816_check_keypad (int slot, int command,
- iso7816_pininfo_t *pininfo);
+gpg_error_t iso7816_check_pinpad (int slot, int command,
+ pininfo_t *pininfo);
gpg_error_t iso7816_verify (int slot,
int chvno, const char *chv, size_t chvlen);
-gpg_error_t iso7816_verify_kp (int slot, int chvno, iso7816_pininfo_t *pininfo);
+gpg_error_t iso7816_verify_kp (int slot, int chvno, pininfo_t *pininfo);
gpg_error_t iso7816_change_reference_data (int slot, int chvno,
const char *oldchv, size_t oldchvlen,
const char *newchv, size_t newchvlen);
gpg_error_t iso7816_change_reference_data_kp (int slot, int chvno,
int is_exchange,
- iso7816_pininfo_t *pininfo);
+ pininfo_t *pininfo);
gpg_error_t iso7816_reset_retry_counter (int slot, int chvno,
const char *newchv, size_t newchvlen);
gpg_error_t iso7816_reset_retry_counter_with_rc (int slot, int chvno,
diff --git a/scd/sc-copykeys.c b/scd/sc-copykeys.c
index 3f34d6983..e503d3665 100644
--- a/scd/sc-copykeys.c
+++ b/scd/sc-copykeys.c
@@ -33,6 +33,7 @@
#include "../common/ttyio.h"
#include "../common/simple-pwquery.h"
+#include "iso7816.h"
#include "apdu.h" /* for open_reader */
#include "atr.h"
#include "app-common.h"
diff --git a/scd/scdaemon.c b/scd/scdaemon.c
index af4c9c1ce..4f9b3695d 100644
--- a/scd/scdaemon.c
+++ b/scd/scdaemon.c
@@ -48,6 +48,7 @@
#include "i18n.h"
#include "sysutils.h"
#include "app-common.h"
+#include "iso7816.h"
#include "apdu.h"
#include "ccid-driver.h"
#include "mkdtemp.h"
@@ -91,10 +92,11 @@ enum cmd_and_opt_values
opcscDriver,
oDisableCCID,
oDisableOpenSC,
- oDisableKeypad,
+ oDisablePinpad,
oAllowAdmin,
oDenyAdmin,
oDisableApplication,
+ oEnablePinpadVarlen,
oDebugDisableTicker
};
@@ -142,12 +144,14 @@ static ARGPARSE_OPTS opts[] = {
/* end --disable-ccid */),
ARGPARSE_s_u (oCardTimeout, "card-timeout",
N_("|N|disconnect the card after N seconds of inactivity")),
- ARGPARSE_s_n (oDisableKeypad, "disable-keypad",
- N_("do not use a reader's keypad")),
+ ARGPARSE_s_n (oDisablePinpad, "disable-pinpad",
+ N_("do not use a reader's pinpad")),
ARGPARSE_s_n (oAllowAdmin, "allow-admin", "@"),
ARGPARSE_s_n (oDenyAdmin, "deny-admin",
N_("deny the use of admin card commands")),
ARGPARSE_s_s (oDisableApplication, "disable-application", "@"),
+ ARGPARSE_s_n (oEnablePinpadVarlen, "enable-pinpad-varlen",
+ N_("use variable length input for pinpad")),
ARGPARSE_end ()
};
@@ -575,7 +579,7 @@ main (int argc, char **argv )
case oDisableCCID: opt.disable_ccid = 1; break;
case oDisableOpenSC: break;
- case oDisableKeypad: opt.disable_keypad = 1; break;
+ case oDisablePinpad: opt.disable_pinpad = 1; break;
case oAllowAdmin: /* Dummy because allow is now the default. */
break;
@@ -587,6 +591,8 @@ main (int argc, char **argv )
add_to_strlist (&opt.disabled_applications, pargs.r.ret_str);
break;
+ case oEnablePinpadVarlen: opt.enable_pinpad_varlen = 1; break;
+
default:
pargs.err = configfp? ARGPARSE_PRINT_WARNING:ARGPARSE_PRINT_ERROR;
break;
@@ -675,8 +681,9 @@ main (int argc, char **argv )
es_printf ("disable-ccid:%lu:\n", GC_OPT_FLAG_NONE );
#endif
es_printf ("deny-admin:%lu:\n", GC_OPT_FLAG_NONE );
- es_printf ("disable-keypad:%lu:\n", GC_OPT_FLAG_NONE );
+ es_printf ("disable-pinpad:%lu:\n", GC_OPT_FLAG_NONE );
es_printf ("card-timeout:%lu:%d:\n", GC_OPT_FLAG_DEFAULT, 0);
+ es_printf ("enable-pinpad-varlen:%lu:\n", GC_OPT_FLAG_NONE );
scd_exit (0);
}
diff --git a/scd/scdaemon.h b/scd/scdaemon.h
index 74e8b7d44..ab63425d8 100644
--- a/scd/scdaemon.h
+++ b/scd/scdaemon.h
@@ -56,7 +56,8 @@ struct
const char *pcsc_driver; /* Library to access the PC/SC system. */
const char *reader_port; /* NULL or reder port to use. */
int disable_ccid; /* Disable the use of the internal CCID driver. */
- int disable_keypad; /* Do not use a keypad. */
+ int disable_pinpad; /* Do not use a pinpad. */
+ int enable_pinpad_varlen; /* Use variable length input for pinpad. */
int allow_admin; /* Allow the use of admin commands for certain
cards. */
strlist_t disabled_applications; /* Card applications we do not
diff --git a/tools/gpgconf-comp.c b/tools/gpgconf-comp.c
index d07ab5913..9dbddeee9 100644
--- a/tools/gpgconf-comp.c
+++ b/tools/gpgconf-comp.c
@@ -617,8 +617,8 @@ static gc_option_t gc_options_scdaemon[] =
{ "disable-ccid", GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME, GC_LEVEL_EXPERT,
"gnupg", "do not use the internal CCID driver",
GC_ARG_TYPE_NONE, GC_BACKEND_SCDAEMON },
- { "disable-keypad", GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME, GC_LEVEL_BASIC,
- "gnupg", "do not use a reader's keypad",
+ { "disable-pinpad", GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME, GC_LEVEL_BASIC,
+ "gnupg", "do not use a reader's pinpad",
GC_ARG_TYPE_NONE, GC_BACKEND_SCDAEMON },
{ "card-timeout", GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME, GC_LEVEL_BASIC,
"gnupg", "|N|disconnect the card after N seconds of inactivity",