+Noteworthy changes in version 2.0.28 (2015-06-02)
+-------------------------------------------------
+
+ * agent: Added support for an external password manager.
+
+ * gpg: New command --list-gcrypt-config.
+
+ * gpg: Issue NEWSIG status lines during signature verification.
+
+ * gpgsm: The default hash algo for a CSR is now SHA-256 and the
+ default encryption algo is AES-128.
+
+ * scdaemon: Allow PC/SC reader selection by partial name match.
+
+ * gpgtar: Fix extracting files with a size of a multiple of 512.
+
+ * Fixed several other bugs.
+
+ * Libgcrypt 1.5 is now required.
+
+
Noteworthy changes in version 2.0.27 (2015-02-18)
-------------------------------------------------
int ignore_cache_for_signing;
int allow_mark_trusted;
int allow_preset_passphrase;
+
+ /* Allow the use of an external password cache. If this option is
+ enabled (which is the default) we send an option to Pinentry
+ to allow it to enable such a cache. */
+ int allow_external_cache;
+
int keep_tty; /* Don't switch the TTY (for pinentry) on request */
int keep_display; /* Don't switch the DISPLAY (for pinentry) on request */
int ssh_support; /* Enable ssh-agent emulation. */
int agent_askpin (ctrl_t ctrl,
const char *desc_text, const char *prompt_text,
const char *inital_errtext,
- struct pin_entry_info_s *pininfo);
+ struct pin_entry_info_s *pininfo,
+ const char *keyinfo, cache_mode_t cache_mode);
int agent_get_passphrase (ctrl_t ctrl, char **retpass,
const char *desc, const char *prompt,
- const char *errtext, int with_qualitybar);
+ const char *errtext, int with_qualitybar,
+ const char *keyinfo, cache_mode_t cache_mode);
int agent_get_confirmation (ctrl_t ctrl, const char *desc, const char *ok,
const char *notokay, int with_cancel);
int agent_show_message (ctrl_t ctrl, const char *desc, const char *ok_btn);
int agent_popup_message_start (ctrl_t ctrl,
const char *desc, const char *ok_btn);
void agent_popup_message_stop (ctrl_t ctrl);
+int agent_clear_passphrase (ctrl_t ctrl,
+ const char *keyinfo, cache_mode_t cache_mode);
/*-- cache.c --*/
disconnect that pinentry - we do this after the unlock so that a
stalled pinentry does not block other threads. Fixme: We should
have a timeout in Assuan for the disconnect operation. */
-static int
+static int
unlock_pinentry (int rc)
{
assuan_context_t ctx = entry_ctx;
{
int iterator = 0;
const char *name, *assname, *value;
-
+
gcry_control (GCRYCTL_TERM_SECMEM);
while ((name = session_env_list_stdenvnames (&iterator, &assname)))
ones which do have an assuan name but are conveyed using
environment variables, update the environment of the
forked process. */
- if (!assname
+ if (!assname
|| !strcmp (name, "XAUTHORITY")
|| !strcmp (name, "PINENTRY_USER_DATA"))
{
entry_owner = ctrl;
if (entry_ctx)
- return 0;
+ return 0;
if (opt.verbose)
log_info ("starting a new PIN Entry\n");
-#ifdef HAVE_W32_SYSTEM
+#ifdef HAVE_W32_SYSTEM
fflush (stdout);
fflush (stderr);
#endif
}
else
argv[1] = NULL;
-
+
i=0;
if (!opt.running_detached)
{
if (DBG_ASSUAN)
log_debug ("connection to PIN entry established\n");
- rc = assuan_transact (entry_ctx,
+ rc = assuan_transact (entry_ctx,
opt.no_grab? "OPTION no-grab":"OPTION grab",
NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
return unlock_pinentry (rc);
+
value = session_env_getenv (ctrl->session_env, "GPG_TTY");
if (value)
{
return unlock_pinentry (rc);
}
+ if (opt.allow_external_cache)
+ {
+ /* Indicate to the pinentry that it may read from an external cache.
+
+ It is essential that the pinentry respect this. If the
+ cached password is not up to date and retry == 1, then, using
+ a version of GPG Agent that doesn't support this, won't issue
+ another pin request and the user won't get a chance to
+ correct the password. */
+ rc = assuan_transact (entry_ctx, "OPTION allow-external-password-cache",
+ NULL, NULL, NULL, NULL, NULL, NULL);
+ if (rc && gpg_err_code (rc) != GPG_ERR_UNKNOWN_OPTION)
+ return unlock_pinentry (rc);
+ }
+
+
{
/* Provide a few default strings for use by the pinentries. This
may help a pinentry to avoid implementing localization code. */
- static struct { const char *key, *value; } tbl[] = {
+ static struct { const char *key, *value; int mode; } tbl[] = {
/* TRANSLATORS: These are labels for buttons etc used in
Pinentries. An underscore indicates that the next letter
should be used as an accelerator. Double the underscore for
the second vertical bar. */
{ "ok", N_("|pinentry-label|_OK") },
{ "cancel", N_("|pinentry-label|_Cancel") },
+ { "yes", N_("|pinentry-label|_Yes") },
+ { "no", N_("|pinentry-label|_No") },
{ "prompt", N_("|pinentry-label|PIN:") },
+ { "pwmngr", N_("|pinentry-label|_Save in password manager") },
+ { "cf-visi",N_("Do you really want to make your "
+ "passphrase visible on the screen?") },
+ { "tt-visi",N_("|pinentry-tt|Make passphrase visible") },
+ { "tt-hide",N_("|pinentry-tt|Hide passphrase") },
{ NULL, NULL}
};
char *optstr;
}
}
-
+
/* Tell the pinentry the name of a file it shall touch after having
messed with the tty. This is optional and only supported by
newer pinentries and thus we do no error checking. */
if (tmpstr)
{
char *optstr;
-
+
if (asprintf (&optstr, "OPTION touch-file=%s", tmpstr ) < 0 )
;
else
it will send the pid back and we will use an inquire to notify
our client. The client may answer the inquiry either with END or
with CAN to cancel the pinentry. */
- rc = assuan_transact (entry_ctx, "GETINFO pid",
+ rc = assuan_transact (entry_ctx, "GETINFO pid",
getinfo_pid_cb, &pinentry_pid,
NULL, NULL, NULL, NULL);
if (rc)
for (; *s && *s >= '0' && *s <= '9'; s++)
;
return !*s;
-}
+}
/* Return a new malloced string by unescaping the string S. Escaping
while (*s && !spacep (s))
{
if (*s == '%' && s[1] && s[2])
- {
+ {
s++;
*d = xtoi_2 (s);
if (!*d)
else
*d++ = *s++;
}
- *d = 0;
+ *d = 0;
return buffer;
}
line += 7;
while (*line == ' ')
line++;
-
+
pin = unescape_passphrase_string (line);
if (!pin)
rc = gpg_error_from_syserror ();
char line[ASSUAN_LINELENGTH];
char *tmpstr, *tmpstr2;
const char *tooltip;
-
+
/* TRANSLATORS: This string is displayed by Pinentry as the label
for the quality bar. */
tmpstr = try_percent_escape (_("Quality:"), "\t\r\n\f\v");
; /* Ignore Unknown Command from old Pinentry versions. */
else if (rc)
return rc;
-
+
tmpstr2 = gnupg_get_help_string ("pinentry.qualitybar.tooltip", 0);
if (tmpstr2)
tooltip = tmpstr2;
}
+enum
+ {
+ PINENTRY_STATUS_PASSWORD_FROM_CACHE = 1 << 9
+ };
+
+/* Check the button_info line for a close action. Also check for the
+ PIN_REPEATED flag. */
+static gpg_error_t
+pinentry_status_cb (void *opaque, const char *line)
+{
+ unsigned int *flag = opaque;
+
+ if (strcmp (line, "PASSWORD_FROM_CACHE") == 0)
+ {
+ *flag |= PINENTRY_STATUS_PASSWORD_FROM_CACHE;
+ }
+
+ return 0;
+}
\f
/* Call the Entry and ask for the PIN. We do check for a valid PIN
number here and repeat it as long as we have invalid formed
- numbers. */
+ numbers. KEYINFO and CACHEMODE are used to tell pinentry something
+ about the key. */
int
agent_askpin (ctrl_t ctrl,
const char *desc_text, const char *prompt_text,
const char *initial_errtext,
- struct pin_entry_info_s *pininfo)
+ struct pin_entry_info_s *pininfo,
+ const char *keyinfo, cache_mode_t cache_mode)
{
int rc;
char line[ASSUAN_LINELENGTH];
const char *errtext = NULL;
int is_pin = 0;
int saveflag;
+ unsigned int pinentry_status;
if (opt.batch)
return 0; /* fixme: we should return BAD PIN */
if (rc)
return rc;
+ /* If we have a KEYINFO string and are normal, user, or ssh cache
+ mode, we tell that the Pinentry so it may use it for own caching
+ purposes. Most pinentries won't have this implemented and thus
+ we do not error out in this case. */
+ if (keyinfo && (cache_mode == CACHE_MODE_NORMAL
+ || cache_mode == CACHE_MODE_USER
+ || cache_mode == CACHE_MODE_SSH))
+ snprintf (line, DIM(line)-1, "SETKEYINFO %c/%s",
+ cache_mode == CACHE_MODE_USER? 'u' :
+ cache_mode == CACHE_MODE_SSH? 's' : 'n',
+ keyinfo);
+ else
+ snprintf (line, DIM(line)-1, "SETKEYINFO --clear");
+
+ rc = assuan_transact (entry_ctx, line,
+ NULL, NULL, NULL, NULL, NULL, NULL);
+ if (rc && gpg_err_code (rc) != GPG_ERR_ASS_UNKNOWN_CMD)
+ return unlock_pinentry (rc);
+
snprintf (line, DIM(line)-1, "SETDESC %s", desc_text);
line[DIM(line)-1] = 0;
rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL);
}
if (initial_errtext)
- {
+ {
snprintf (line, DIM(line)-1, "SETERROR %s", initial_errtext);
line[DIM(line)-1] = 0;
rc = assuan_transact (entry_ctx, line,
parm.buffer = (unsigned char*)pininfo->pin;
if (errtext)
- {
+ {
/* TRANSLATORS: The string is appended to an error message in
the pinentry. The %s is the actual error message, the
two %d give the current and maximum number of tries. */
return unlock_pinentry (rc);
errtext = NULL;
}
-
+
saveflag = assuan_get_flag (entry_ctx, ASSUAN_CONFIDENTIAL);
assuan_begin_confidential (entry_ctx);
+ pinentry_status = 0;
rc = assuan_transact (entry_ctx, "GETPIN", getpin_cb, &parm,
- inq_quality, entry_ctx, NULL, NULL);
+ inq_quality, entry_ctx,
+ pinentry_status_cb, &pinentry_status);
assuan_set_flag (entry_ctx, ASSUAN_CONFIDENTIAL, saveflag);
/* Most pinentries out in the wild return the old Assuan error code
for canceled which gets translated to an assuan Cancel error and
if (!errtext)
return unlock_pinentry (0); /* okay, got a PIN or passphrase */
+
+ if ((pinentry_status & PINENTRY_STATUS_PASSWORD_FROM_CACHE))
+ /* The password was read from the cache. Don't count this
+ against the retry count. */
+ pininfo->failed_tries --;
}
return unlock_pinentry (gpg_error (pininfo->min_digits? GPG_ERR_BAD_PIN
\f
/* Ask for the passphrase using the supplied arguments. The returned
- passphrase needs to be freed by the caller. */
-int
+ passphrase needs to be freed by the caller. */
+int
agent_get_passphrase (ctrl_t ctrl,
char **retpass, const char *desc, const char *prompt,
- const char *errtext, int with_qualitybar)
+ const char *errtext, int with_qualitybar,
+ const char *keyinfo, cache_mode_t cache_mode)
{
int rc;
*retpass = NULL;
if (opt.batch)
- return gpg_error (GPG_ERR_BAD_PASSPHRASE);
+ return gpg_error (GPG_ERR_BAD_PASSPHRASE);
rc = start_pinentry (ctrl);
if (rc)
prompt = desc && strstr (desc, "PIN")? "PIN": _("Passphrase");
+ /* If we have a KEYINFO string and are normal, user, or ssh cache
+ mode, we tell that the Pinentry so it may use it for own caching
+ purposes. Most pinentries won't have this implemented and thus
+ we do not error out in this case. */
+ if (keyinfo && (cache_mode == CACHE_MODE_NORMAL
+ || cache_mode == CACHE_MODE_USER
+ || cache_mode == CACHE_MODE_SSH))
+ snprintf (line, DIM(line)-1, "SETKEYINFO %c/%s",
+ cache_mode == CACHE_MODE_USER? 'u' :
+ cache_mode == CACHE_MODE_SSH? 's' : 'n',
+ keyinfo);
+ else
+ snprintf (line, DIM(line)-1, "SETKEYINFO --clear");
+
+ rc = assuan_transact (entry_ctx, line,
+ NULL, NULL, NULL, NULL, NULL, NULL);
+ if (rc && gpg_err_code (rc) != GPG_ERR_ASS_UNKNOWN_CMD)
+ return unlock_pinentry (rc);
+
+
if (desc)
snprintf (line, DIM(line)-1, "SETDESC %s", desc);
else
displayed to allow the user to easily return a GPG_ERR_CANCELED.
if the Pinentry does not support this, the user can still cancel by
closing the Pinentry window. */
-int
+int
agent_get_confirmation (ctrl_t ctrl,
- const char *desc, const char *ok,
+ const char *desc, const char *ok,
const char *notok, int with_cancel)
{
int rc;
text OK_BTN (which may be NULL to use the default of "OK") and waut
for the user to hit this button. The return value is not
relevant. */
-int
+int
agent_show_message (ctrl_t ctrl, const char *desc, const char *ok_btn)
{
int rc;
if (rc)
return unlock_pinentry (rc);
}
-
+
rc = assuan_transact (entry_ctx, "CONFIRM --one-button", NULL, NULL, NULL,
NULL, NULL, NULL);
if (rc && gpg_err_source (rc) && gpg_err_code (rc) == GPG_ERR_ASS_CANCELED)
allow the use of old Pinentries. Those old Pinentries will then
show an additional Cancel button but that is mostly a visual
annoyance. */
- assuan_transact (entry_ctx, "CONFIRM --one-button",
+ assuan_transact (entry_ctx, "CONFIRM --one-button",
NULL, NULL, NULL, NULL, NULL, NULL);
popup_finished = 1;
return NULL;
as the message is not anymore required because the message is
system modal and all other attempts to use the pinentry will fail
(after a timeout). */
-int
+int
agent_popup_message_start (ctrl_t ctrl, const char *desc, const char *ok_btn)
{
int rc;
if (!popup_tid || !entry_ctx)
{
log_debug ("agent_popup_message_stop called with no active popup\n");
- return;
+ return;
}
pid = assuan_get_pid (entry_ctx);
&& pid != 0)
{
HANDLE process = (HANDLE) pid;
-
+
/* Arbitrary error code. */
TerminateProcess (process, 1);
}
}
+int
+agent_clear_passphrase (ctrl_t ctrl,
+ const char *keyinfo, cache_mode_t cache_mode)
+{
+ int rc;
+ char line[ASSUAN_LINELENGTH];
+
+ if (! (keyinfo && (cache_mode == CACHE_MODE_NORMAL
+ || cache_mode == CACHE_MODE_USER
+ || cache_mode == CACHE_MODE_SSH)))
+ return gpg_error (GPG_ERR_NOT_SUPPORTED);
+
+ rc = start_pinentry (ctrl);
+ if (rc)
+ return rc;
+
+ snprintf (line, DIM(line)-1, "CLEARPASSPHRASE %c/%s",
+ cache_mode == CACHE_MODE_USER? 'u' :
+ cache_mode == CACHE_MODE_SSH? 's' : 'n',
+ keyinfo);
+ rc = assuan_transact (entry_ctx, line,
+ NULL, NULL, NULL, NULL, NULL, NULL);
+
+ return unlock_pinentry (rc);
+}
/* We need to make sure that HEXGRIP is all uppercase. The easiest
way to do this and also check its length is by copying to a
second buffer. */
- for (i=0, s=hexgrip; i < 40; s++, i++)
+ for (i=0, s=hexgrip; i < 40 && *s; s++, i++)
uphexgrip[i] = *s >= 'a'? (*s & 0xdf): *s;
uphexgrip[i] = 0;
if (i != 40)
pi2->check_cb_arg = pi->pin;
next_try:
- err = agent_askpin (ctrl, description, NULL, initial_errtext, pi);
+ err = agent_askpin (ctrl, description, NULL, initial_errtext, pi, NULL, 0);
initial_errtext = NULL;
if (err)
goto out;
/* Unless the passphrase is empty, ask to confirm it. */
if (pi->pin && *pi->pin)
{
- err = agent_askpin (ctrl, description2, NULL, NULL, pi2);
+ err = agent_askpin (ctrl, description2, NULL, NULL, pi2, NULL, 0);
if (err == -1)
{ /* The re-entered one did not match and the user did not
hit cancel. */
if (!strcmp (desc, "X"))
desc = NULL;
- pw = cacheid ? agent_get_cache (cacheid, CACHE_MODE_NORMAL, &cache_marker)
+ pw = cacheid ? agent_get_cache (cacheid, CACHE_MODE_USER, &cache_marker)
: NULL;
if (pw)
{
next_try:
rc = agent_get_passphrase (ctrl, &response, desc, prompt,
- repeat_errtext? repeat_errtext:errtext,
- opt_qualbar);
+ repeat_errtext? repeat_errtext:errtext,
+ opt_qualbar, cacheid, CACHE_MODE_USER);
xfree (repeat_errtext);
repeat_errtext = NULL;
if (!rc)
char *response2;
rc = agent_get_passphrase (ctrl, &response2, desc2, prompt,
- errtext, 0);
+ errtext, 0,
+ cacheid, CACHE_MODE_USER);
if (rc)
break;
if (strcmp (response2, response))
static gpg_error_t
cmd_clear_passphrase (assuan_context_t ctx, char *line)
{
+ ctrl_t ctrl = assuan_get_pointer (ctx);
char *cacheid = NULL;
char *p;
return set_error (GPG_ERR_ASS_PARAMETER, "invalid length of cacheID");
agent_put_cache (cacheid, CACHE_MODE_USER, NULL, 0);
+
+ agent_clear_passphrase (ctrl, cacheid, CACHE_MODE_USER);
+
return 0;
}
if (any_flags)
{
- rc = agent_askpin (ctrl, info, prompt, again_text, pi);
+ rc = agent_askpin (ctrl, info, prompt, again_text, pi, NULL, 0);
again_text = NULL;
if (!rc && newpin)
{
is_puk?
_("Repeat this PUK"):
_("Repeat this PIN")),
- prompt, NULL, pi2);
+ prompt, NULL, pi2, NULL, 0);
if (!rc && strcmp (pi->pin, pi2->pin))
{
again_text = (resetcode?
info? info:"",
info? "')":"") < 0)
desc = NULL;
- rc = agent_askpin (ctrl, desc?desc:info, prompt, NULL, pi);
+ rc = agent_askpin (ctrl, desc?desc:info, prompt, NULL, pi, NULL, 0);
xfree (desc);
}
arg.change_required = 0;
pi->check_cb_arg = &arg;
- rc = agent_askpin (ctrl, desc_text, NULL, NULL, pi);
+ rc = agent_askpin (ctrl, desc_text, NULL, NULL, pi, hexgrip, cache_mode);
if (!rc)
{
assert (arg.unprotected_key);
pi2->check_cb_arg = pi->pin;
next_try:
- rc = agent_askpin (ctrl, text1, NULL, initial_errtext, pi);
+ rc = agent_askpin (ctrl, text1, NULL, initial_errtext, pi, NULL, 0);
initial_errtext = NULL;
if (!rc)
{
}
if (pi->pin && *pi->pin)
{
- rc = agent_askpin (ctrl, text2, NULL, NULL, pi2);
+ rc = agent_askpin (ctrl, text2, NULL, NULL, pi2, NULL, 0);
if (rc == -1)
{ /* The re-entered one did not match and the user did not
hit cancel. */
pi2->check_cb_arg = pi->pin;
next_try:
- rc = agent_askpin (ctrl, text1, NULL, initial_errtext, pi);
+ rc = agent_askpin (ctrl, text1, NULL, initial_errtext, pi, NULL, 0);
initial_errtext = NULL;
if (!rc)
{
/* Unless the passphrase is empty, ask to confirm it. */
if (pi->pin && *pi->pin)
{
- rc = agent_askpin (ctrl, text2, NULL, NULL, pi2);
+ rc = agent_askpin (ctrl, text2, NULL, NULL, pi2, NULL, 0);
if (rc == -1)
{ /* The re-entered one did not match and the user did not
hit cancel. */
oAllowMarkTrusted,
oNoAllowMarkTrusted,
oAllowPresetPassphrase,
+ oNoAllowExternalCache,
oKeepTTY,
oKeepDISPLAY,
oSSHSupport,
"@"
#endif
},
+ { oNoAllowExternalCache, "no-allow-external-cache", 0,
+ N_("disallow the use of an external password cache") },
{ oWriteEnvFile, "write-env-file", 2|8,
N_("|FILE|write environment settings also to FILE")},
{0}
opt.ignore_cache_for_signing = 0;
opt.allow_mark_trusted = 1;
opt.disable_scdaemon = 0;
+ opt.allow_external_cache = 1;
return 1;
}
case oAllowPresetPassphrase: opt.allow_preset_passphrase = 1; break;
+ case oNoAllowExternalCache: opt.allow_external_cache = 0;
+ break;
+
default:
return 0; /* not handled */
}
GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME);
printf ("no-allow-mark-trusted:%lu:\n",
GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME);
+ printf ("no-allow-external-cache:%lu:\n",
+ GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME);
printf ("disable-scdaemon:%lu:\n",
GC_OPT_FLAG_NONE|GC_OPT_FLAG_RUNTIME);
#ifdef HAVE_W32_SYSTEM
# (git tag -s gnupg-2.n.m) and run "./autogen.sh --force". Please
# bump the version number immediately *after* the release and do
# another commit and push so that the git magic is able to work.
-m4_define([mym4_version], [2.0.27])
+m4_define([mym4_version], [2.0.28])
# Below is m4 magic to extract and compute the git revision number,
# the decimalized short revision number, a beta version string and a
NEED_GPG_ERROR_VERSION=1.11
NEED_LIBGCRYPT_API=1
-NEED_LIBGCRYPT_VERSION=1.4.0
+NEED_LIBGCRYPT_VERSION=1.5.0
NEED_LIBASSUAN_API=2
NEED_LIBASSUAN_VERSION=2.0.0
NEWSIG
- May be issued right before a signature verification starts. This
- is useful to define a context for parsing ERROR status
- messages. No arguments are currently defined.
+ Is issued right before a signature verification starts. This is
+ useful to define a context for parsing ERROR status messages. No
+ arguments are currently defined.
GOODSIG <long_keyid_or_fpr> <username>
The signature with the keyid is good. For each signature only
@option{pinentry-mode} for details.
@end ifset
+@item --no-allow-external-cache
+@opindex no-allow-external-cache
+Tell Pinentry not to enable features which use an external cache for
+passphrases.
+
+Some desktop environments prefer to unlock all
+credentials with one master password and may have installed a Pinentry
+which employs an additional external cache to implement such a policy.
+By using this option the Pinentry is advised not to make use of such a
+cache and instead always ask the user for the requested passphrase.
+
@item --ignore-cache-for-signing
@opindex ignore-cache-for-signing
This option will let @command{gpg-agent} bypass the passphrase cache for all
@code{verbose}, @code{debug}, @code{debug-all}, @code{debug-level},
@code{no-grab}, @code{pinentry-program}, @code{default-cache-ttl},
@code{max-cache-ttl}, @code{ignore-cache-for-signing},
+@code{no-allow-external-cache},
@code{allow-mark-trusted}, @code{disable-scdaemon}, and
@code{disable-check-own-socket}. @code{scdaemon-program} is also
supported but due to the current implementation, which calls the
Use the cipher algorithm with the ASN.1 object identifier @var{oid} for
encryption. For convenience the strings @code{3DES}, @code{AES} and
@code{AES256} may be used instead of their OIDs. The default is
-@code{3DES} (1.2.840.113549.3.7).
+@code{AES} (2.16.840.1.101.3.4.1.2).
@item --digest-algo @code{name}
Use @code{name} as the message digest algorithm. Usually this
Use @var{hash-algo} for this CSR or certificate. The supported hash
algorithms are: @samp{sha1}, @samp{sha256}, @samp{sha384} and
@samp{sha512}; they may also be specified with uppercase letters. The
-default is @samp{sha1}.
+default is @samp{sha256}.
@end table
/* This is probably input from a keyserver helper and we
have not yet seen an error line. */
afx->key_failed_code = parse_key_failed_line (line+4, len-4);
- log_debug ("armor-keys-failed (%.*s) ->%d\n",
- (int)len, line,
- afx->key_failed_code);
}
if( i >= 0 && !(afx->only_keyblocks && i != 1 && i != 5 && i != 6 )) {
hdr_line = i;
return -1;
n = pubkey_get_npkey( b->pubkey_algo );
- if( !n )
- return -1; /* can't compare due to unknown algorithm */
- for(i=0; i < n; i++ ) {
- if( mpi_cmp( a->pkey[i], b->pkey[i] ) )
- return -1;
+ if( !n ) { /* unknown algorithm, rest is in opaque MPI */
+ if( mpi_cmp( a->pkey[0], b->pkey[0] ) )
+ return -1; /* can't compare due to unknown algorithm */
+ } else {
+ for(i=0; i < n; i++ ) {
+ if( mpi_cmp( a->pkey[i], b->pkey[i] ) )
+ return -1;
+ }
}
return 0;
return -1;
n = pubkey_get_npkey( b->pubkey_algo );
- if( !n )
- return -1; /* can't compare due to unknown algorithm */
- for(i=0; i < n; i++ ) {
- if( mpi_cmp( a->skey[i], b->skey[i] ) )
+ if( !n ) { /* unknown algorithm, rest is in opaque MPI */
+ if( mpi_cmp( a->skey[0], b->skey[0] ) )
return -1;
+ } else {
+ for(i=0; i < n; i++ ) {
+ if( mpi_cmp( a->skey[i], b->skey[i] ) )
+ return -1;
+ }
}
return 0;
ctx.req_usage = sk->req_usage;
rc = lookup( &ctx, &kb, 1 );
if ( !rc ) {
+ u32 skid[2];
+
sk_from_block ( &ctx, sk, kb );
+ keyid_from_sk ( sk, skid );
+ /*
+ * Make sure it's exact match of keyid.
+ * If not, it's secret subkey with no public key.
+ */
+ if (!(keyid[0] == skid[0] && keyid[1] == skid[1])) {
+ log_error (_("key %s: secret key without public key"
+ " - skipped\n"), keystr(keyid));
+ rc = G10ERR_NO_PUBKEY;
+ }
}
get_seckey_end( &ctx );
release_kbnode ( kb );
aSignKey,
aLSignKey,
aListConfig,
+ aListGcryptConfig,
aGPGConfList,
aGPGConfTest,
aListPackets,
ARGPARSE_c (aChangePIN, "change-pin", N_("change a card's PIN")),
#endif
ARGPARSE_c (aListConfig, "list-config", "@"),
+ ARGPARSE_c (aListGcryptConfig, "list-gcrypt-config", "@"),
ARGPARSE_c (aGPGConfList, "gpgconf-list", "@" ),
ARGPARSE_c (aGPGConfTest, "gpgconf-test", "@" ),
ARGPARSE_c (aListPackets, "list-packets","@"),
{
case aCheckKeys:
case aListConfig:
+ case aListGcryptConfig:
case aGPGConfList:
case aGPGConfTest:
case aListPackets:
}
break;
+ case aListGcryptConfig:
+ /* Fixme: It would be nice to integrate that with
+ --list-config but unfortunately there is no way yet to have
+ libgcrypt print it to an estream for further parsing. */
+ gcry_control (GCRYCTL_PRINT_CONFIG, stdout);
+ break;
+
case aListPackets:
opt.list_packets=2;
default:
xfree(c->dek); c->dek = NULL;
}
}
- else if( is_ELGAMAL(enc->pubkey_algo)
- || enc->pubkey_algo == PUBKEY_ALGO_DSA
- || is_RSA(enc->pubkey_algo)
+ else if( enc->pubkey_algo == PUBKEY_ALGO_ELGAMAL_E
+ || enc->pubkey_algo == PUBKEY_ALGO_RSA
+ || enc->pubkey_algo == PUBKEY_ALGO_RSA_E
|| enc->pubkey_algo == PUBKEY_ALGO_ELGAMAL) {
/* Note that we also allow type 20 Elgamal keys for decryption.
There are still a couple of those keys in active use as a
}
+ write_status_text (STATUS_NEWSIG, NULL);
+
/* (Indendation below not yet changed to GNU style.) */
astr = openpgp_pk_algo_name ( sig->pubkey_algo );
byte temp[16];
size_t snlen = 0;
+ if (pktlen < 1)
+ {
+ rc = GPG_ERR_INV_PACKET;
+ goto leave;
+ }
+
if( !npkey ) {
sk->skey[0] = gcry_mpi_set_opaque (NULL, read_rest(inp, pktlen, 0),
pktlen*8 );
}
for(i=0; i < npkey; i++ ) {
- n = pktlen; sk->skey[i] = mpi_read(inp, &n, 0 ); pktlen -=n;
+ n = pktlen;
+ sk->skey[i] = mpi_read(inp, &n, 0 );
+ pktlen -=n;
if( list_mode ) {
fprintf (listfp, "\tskey[%d]: ", i);
mpi_print(listfp, sk->skey[i], mpi_print_mode );
}
if (rc) /* one of the MPIs were bad */
goto leave;
- sk->protect.algo = iobuf_get_noeof(inp); pktlen--;
+ sk->protect.algo = iobuf_get_noeof(inp);
+ pktlen--;
sk->protect.sha1chk = 0;
if( sk->protect.algo ) {
sk->is_protected = 1;
goto leave;
}
sk->protect.sha1chk = (sk->protect.algo == 254);
- sk->protect.algo = iobuf_get_noeof(inp); pktlen--;
+ sk->protect.algo = iobuf_get_noeof(inp);
+ pktlen--;
/* Note that a sk->protect.algo > 110 is illegal, but
I'm not erroring on it here as otherwise there
would be no way to delete such a key. */
- sk->protect.s2k.mode = iobuf_get_noeof(inp); pktlen--;
- sk->protect.s2k.hash_algo = iobuf_get_noeof(inp); pktlen--;
+ sk->protect.s2k.mode = iobuf_get_noeof(inp);
+ pktlen--;
+ sk->protect.s2k.hash_algo = iobuf_get_noeof(inp);
+ pktlen--;
/* check for the special GNU extension */
if( is_v4 && sk->protect.s2k.mode == 101 ) {
for(i=0; i < 4 && pktlen; i++, pktlen-- )
/* ugly; the length is encrypted too, so we read all
* stuff up to the end of the packet into the first
* skey element */
+ if (pktlen < 2) /* At least two bytes for the length. */
+ {
+ rc = GPG_ERR_INV_PACKET;
+ goto leave;
+ }
sk->skey[npkey] = gcry_mpi_set_opaque (NULL,
read_rest(inp, pktlen, 0),
pktlen*8);
fprintf (listfp, "\tskey[%d]: [encrypted]\n", i);
}
else {
+ if (pktlen < 2) /* At least two bytes for the length. */
+ {
+ rc = GPG_ERR_INV_PACKET;
+ goto leave;
+ }
n = pktlen;
sk->skey[i] = mpi_read(inp, &n, 0 );
pktlen -=n;
if (rc)
goto leave;
- sk->csum = read_16(inp); pktlen -= 2;
+ if (pktlen < 2)
+ {
+ rc = GPG_ERR_INV_PACKET;
+ goto leave;
+ }
+ sk->csum = read_16(inp);
+ pktlen -= 2;
if( list_mode ) {
fprintf (listfp, "\tchecksum: %04hx\n", sk->csum);
}
else {
PKT_public_key *pk = pkt->pkt.public_key;
+ if (pktlen < 1)
+ {
+ rc = GPG_ERR_INV_PACKET;
+ goto leave;
+ }
+
if( !npkey ) {
pk->pkey[0] = gcry_mpi_set_opaque ( NULL,
read_rest(inp, pktlen, 0),
}
for(i=0; i < npkey; i++ ) {
- n = pktlen; pk->pkey[i] = mpi_read(inp, &n, 0 ); pktlen -=n;
+ n = pktlen;
+ pk->pkey[i] = mpi_read(inp, &n, 0 );
+ pktlen -=n;
if( list_mode ) {
fprintf (listfp, "\tpkey[%d]: ", i);
mpi_print(listfp, pk->pkey[i], mpi_print_mode );
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
+#include <stdarg.h>
+#include <limits.h>
+#include <errno.h>
#include "libjnlib-config.h"
#include "mischelp.h"
s = _("keyword too long");
else if ( arg->r_opt == ARGPARSE_MISSING_ARG )
s = _("missing argument");
+ else if ( arg->r_opt == ARGPARSE_INVALID_ARG )
+ s = _("invalid argument");
else if ( arg->r_opt == ARGPARSE_INVALID_COMMAND )
s = _("invalid command");
else if ( arg->r_opt == ARGPARSE_INVALID_ALIAS )
if ( arg->r_opt == ARGPARSE_MISSING_ARG )
jnlib_log_error (_("missing argument for option \"%.50s\"\n"), s);
+ else if ( arg->r_opt == ARGPARSE_INVALID_ARG )
+ jnlib_log_error (_("invalid argument for option \"%.50s\"\n"), s);
else if ( arg->r_opt == ARGPARSE_UNEXPECTED_ARG )
jnlib_log_error (_("option \"%.50s\" does not expect an "
"argument\n"), s );
p[strlen(p)-1] = 0;
}
if (!set_opt_arg (arg, opts[idx].flags, p))
- jnlib_free(buffer);
+ jnlib_free(buffer);
}
}
break;
}
-
+/* Returns: -1 on error, 0 for an integer type and 1 for a non integer
+ type argument. */
static int
-set_opt_arg(ARGPARSE_ARGS *arg, unsigned flags, char *s)
+set_opt_arg (ARGPARSE_ARGS *arg, unsigned flags, char *s)
{
int base = (flags & ARGPARSE_OPT_PREFIX)? 0 : 10;
+ long l;
switch ( (arg->r_type = (flags & ARGPARSE_TYPE_MASK)) )
{
- case ARGPARSE_TYPE_INT:
- arg->r.ret_int = (int)strtol(s,NULL,base);
- return 0;
case ARGPARSE_TYPE_LONG:
- arg->r.ret_long= strtol(s,NULL,base);
+ case ARGPARSE_TYPE_INT:
+ errno = 0;
+ l = strtol (s, NULL, base);
+ if ((l == LONG_MIN || l == LONG_MAX) && errno == ERANGE)
+ {
+ arg->r_opt = ARGPARSE_INVALID_ARG;
+ return -1;
+ }
+ if (arg->r_type == ARGPARSE_TYPE_LONG)
+ arg->r.ret_long = l;
+ else if ( (l < 0 && l < INT_MIN) || l > INT_MAX )
+ {
+ arg->r_opt = ARGPARSE_INVALID_ARG;
+ return -1;
+ }
+ else
+ arg->r.ret_int = (int)l;
return 0;
+
case ARGPARSE_TYPE_ULONG:
- arg->r.ret_ulong= strtoul(s,NULL,base);
+ while (isascii (*s) && isspace(*s))
+ s++;
+ if (*s == '-')
+ {
+ arg->r.ret_ulong = 0;
+ arg->r_opt = ARGPARSE_INVALID_ARG;
+ return -1;
+ }
+ errno = 0;
+ arg->r.ret_ulong = strtoul (s, NULL, base);
+ if (arg->r.ret_ulong == ULONG_MAX && errno == ERANGE)
+ {
+ arg->r_opt = ARGPARSE_INVALID_ARG;
+ return -1;
+ }
return 0;
+
case ARGPARSE_TYPE_STRING:
default:
arg->r.ret_str = s;
#define ARGPARSE_AMBIGUOUS_COMMAND (-9)
#define ARGPARSE_INVALID_ALIAS (-10)
#define ARGPARSE_OUT_OF_CORE (-11)
+#define ARGPARSE_INVALID_ARG (-12)
int arg_parse( ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts);
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "паказаць сьпіс ключоў і ID карыстальнікаў"
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "нерэчаісны пароль"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr ""
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "Паўтарыце пароль\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgstr ""
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr ""
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "%s: немагчыма стварыць тэчку: %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr ""
-
#, fuzzy
msgid "make a signature"
msgstr "зрабіць адчэплены подпіс"
msgstr ""
#, fuzzy
+msgid "invalid argument"
+msgstr "паказаць ключы й адбіткі пальцаў"
+
+#, fuzzy
msgid "invalid command"
msgstr "несумяшчальныя загады\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "недапушчальныя выбары імпартаваньня\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "file create error"
#~ msgstr "памылка стварэньня файла"
-#~ msgid "invalid passphrase"
-#~ msgstr "нерэчаісны пароль"
-
#~ msgid "file close error"
#~ msgstr "памылка зачыненьня файла"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to create a sign and encrypt key? "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Segur que voleu crear una clau de signatura i xifratge? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "la contrasenya és invàlida"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "no és suportat"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "error en la creació de la contrasenya: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[No s'ha trobat l'id d'usuari]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "clau %08lX: clau secreta sense clau pública - es descarta\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "s'usarà la clau secundària %08lX en lloc de la primària %08lX\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "clau %08lX: clau secreta sense clau pública - es descarta\n"
-
#, fuzzy
msgid "make a signature"
msgstr "|[fitxer]|crea una signatura"
msgstr "l'argument és invàlid"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "l'armadura és invàlida"
+
+#, fuzzy
msgid "invalid command"
msgstr "les ordres entren en conflicte\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opcions d'importació no vàlides\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "el paquet és invàlid"
-#~ msgid "invalid armor"
-#~ msgstr "l'armadura és invàlida"
-
#~ msgid "no such user id"
#~ msgstr "no s'ha trobat l'id de l'usuari"
#~ msgid "file create error"
#~ msgstr "error en la creació del fitxer"
-#~ msgid "invalid passphrase"
-#~ msgstr "la contrasenya és invàlida"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "l'algoritme de clau pública no és implementat"
#~ msgid "%s: error checking key: %s\n"
#~ msgstr "%s: error en la comprovació de la clau: %s\n"
-#~ msgid "Do you really want to create a sign and encrypt key? "
-#~ msgstr "Segur que voleu crear una clau de signatura i xifratge? "
-
#~ msgid "Do you really need such a large keysize? "
#~ msgstr "Realment necessiteu una clau tan llarga? "
msgid "|pinentry-label|_Cancel"
msgstr "|pinentry-label|_Zrušit"
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
msgid "|pinentry-label|PIN:"
msgstr "|pinentry-label|PIN:"
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_Zrušit"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Opravdu chcete revokovat vybrané podklíče? (a/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "nesprávné heslo"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "zapnout podporu pro PuTTY"
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "nedovolit opakovat stará hesla"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "|SOUBOR|zapsat nastavení prostředí též do SOUBORU"
msgstr "[ID uživatele nenalezeno]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "klíč %s: tajný klíč bez klíče veřejného – přeskočeno\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "„%s“ automaticky získáno přes %s\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "používám podklíč %s místo primárního klíče %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "klíč %s: tajný klíč bez klíče veřejného – přeskočeno\n"
-
msgid "make a signature"
msgstr "vytvořit podpis"
msgid "missing argument"
msgstr "postrádám argument"
+#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "neplatný způsob reprezentace v ASCII"
+
msgid "invalid command"
msgstr "neplatný příkaz"
msgid "missing argument for option \"%.50s\"\n"
msgstr "postrádám argument u volby „%.50s“\n"
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "postrádám argument u volby „%.50s“\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "volba „%.50s“ nečeká argument\n"
#~ msgid "invalid packet"
#~ msgstr "neplatný paket"
-#~ msgid "invalid armor"
-#~ msgstr "neplatný způsob reprezentace v ASCII"
-
#~ msgid "no such user id"
#~ msgstr "neexistuje uživatel s tímto id"
#~ msgid "file create error"
#~ msgstr "chyba při vytváření souboru"
-#~ msgid "invalid passphrase"
-#~ msgstr "nesprávné heslo"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "algoritmus veřejného klíče není implementován"
msgid "|pinentry-label|_Cancel"
msgstr "_Afbryd"
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "_O.k."
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "_O.k."
+
msgid "|pinentry-label|PIN:"
msgstr "PIN:"
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "_Afbryd"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Vil du virkelig tilbagekalde de valgte undernøgler? (j/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Indtast ny adgangsfrase"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "aktiver putty-understøttelse"
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "tillad ikke genbrug af gamle adgangsfraser"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "|FIL|skriv også miljøindstillinger til FIL"
msgstr "[Bruger-id blev ikke fundet]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "nøgle %s: hemmelig nøgle uden offentlig nøgle - udeladt\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "hentede automatisk »%s« via %s\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "bruger undernøgle %s i stedet for primær nøgle %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "nøgle %s: hemmelig nøgle uden offentlig nøgle - udeladt\n"
-
msgid "make a signature"
msgstr "opret en underskrift"
msgid "missing argument"
msgstr "manglende parameter"
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "ugyldig værdi\n"
+
msgid "invalid command"
msgstr "ugyldig kommando"
msgid "missing argument for option \"%.50s\"\n"
msgstr "manglende parameter for indstilling »%.50s«\n"
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "manglende parameter for indstilling »%.50s«\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "tilvalg »%.50s« forventer ikke et argument\n"
msgstr ""
"Project-Id-Version: gnupg-2.0.18\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"PO-Revision-Date: 2015-02-18 12:52+0100\n"
+"PO-Revision-Date: 2015-06-02 13:13+0200\n"
"Last-Translator: Werner Koch <wk@gnupg.org>\n"
"Language-Team: German <de@li.org>\n"
"Language: de\n"
msgid "|pinentry-label|_Cancel"
msgstr "_Abbrechen"
+msgid "|pinentry-label|_Yes"
+msgstr "_Ja"
+
+msgid "|pinentry-label|_No"
+msgstr "_Nein"
+
msgid "|pinentry-label|PIN:"
msgstr "PIN:"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "Im Passwordmanager _speichern"
+
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr ""
+"Möchten Sie die eingegebene Passphrase wirklich auf dem Bildschirm sichtbar "
+"machen?"
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr "Die Passphrase sichtbar machen"
+
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Passphrase unsichtbar machen"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "Die Pageant Komponente anschalten"
+msgid "disallow the use of an external password cache"
+msgstr "Verbiete die Verwendung eines externen Passwordmanagers"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "|DATEI|Schreibe die Umgebungsvariablen auf DATEI"
msgstr "[User-ID nicht gefunden]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr ""
+"Schlüssel %s: geheimer Schlüssel ohne öffentlichen Schlüssel - übersprungen\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "`%s' automatisch via %s geholt\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "der Unterschlüssel %s wird anstelle des Hauptschlüssels %s verwendet\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr ""
-"Schlüssel %s: geheimer Schlüssel ohne öffentlichen Schlüssel - übersprungen\n"
-
msgid "make a signature"
msgstr "Eine Signatur erzeugen"
msgid "missing argument"
msgstr "Fehlendes Argument"
+msgid "invalid argument"
+msgstr "Ungültiges Argument"
+
msgid "invalid command"
msgstr "Ungültiger Befehl"
msgstr "Fehlendes Argument für Option \"%.50s\"\n"
#, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "Ungültiges Argument für Option \"%.50s\"\n"
+
+#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "Option \"%.50s\" erwartet kein Argument\n"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Óßãïõñá èÝëåôå íá áíáêëçèïýí ôá åðéëåãìÝíá êëåéäéÜ; "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "ìç Ýãêõñç öñÜóç êëåéäß"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "äåí õðïóôçñßæåôáé"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "óöÜëìá óôç äçìéïõñãßá ôçò öñÜóçò êëåéäß: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[User id äåí âñÝèçêå]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "êëåéäß %08lX: ìõóôéêü êëåéäß ÷ùñßò äçìüóéï - ðáñáëåßöèçêå\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "÷ñÞóç ôïõ äåõôåñåýïíôïò êëåéäéïý %08lX áíôß ôïõ ðñùôåýïíôïò %08lX\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "êëåéäß %08lX: ìõóôéêü êëåéäß ÷ùñßò äçìüóéï - ðáñáëåßöèçêå\n"
-
#, fuzzy
msgid "make a signature"
msgstr "äçìéïõñãßá ìéáò ìç ðñïóáñôçìÝíçò õðïãñáöÞò"
msgstr "ìç Ýãêõñï üñéóìá"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "ìç Ýãêõñç èùñÜêéóç"
+
+#, fuzzy
msgid "invalid command"
msgstr "óõãêñïõüìåíåò åíôïëÝò\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "ìç Ýãêõñåò åðéëïãÝò åéãáãùãÞò\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "ìç Ýãêõñï ðáêÝôï"
-#~ msgid "invalid armor"
-#~ msgstr "ìç Ýãêõñç èùñÜêéóç"
-
#~ msgid "no such user id"
#~ msgstr "Üãíùóôç ôáõôüôçôá ÷ñÞóôç (user id)"
#~ msgid "file create error"
#~ msgstr "óöÜëìá äçìéïõñãßáò áñ÷åßïõ"
-#~ msgid "invalid passphrase"
-#~ msgstr "ìç Ýãêõñç öñÜóç êëåéäß"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "ìç õëïðïéçìÝíïò áëãüñéèìïò äçìïóßïõ êëåéäéïý"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to create a sign and encrypt key? "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Æu vi vere volas krei subskriban kaj æifran þlosilon? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "nevalida pasfrazo"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "ne realigita"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "eraro dum kreado de pasfrazo: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[Uzantidentigilo ne trovita]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "þlosilo %08lX: sekreta þlosilo sen publika þlosilo - ignorita\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "uzas flankan þlosilon %08lX anstataý la æefa þlosilo %08lX\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "þlosilo %08lX: sekreta þlosilo sen publika þlosilo - ignorita\n"
-
#, fuzzy
msgid "make a signature"
msgstr "fari apartan subskribon"
msgstr "nevalida argumento"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "nevalida kiraso"
+
+#, fuzzy
msgid "invalid command"
msgstr "malkongruaj komandoj\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "nevalida kiraso"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "nevalida paketo"
-#~ msgid "invalid armor"
-#~ msgstr "nevalida kiraso"
-
#~ msgid "no such user id"
#~ msgstr "uzantidentigilo ne ekzistas"
#~ msgid "file create error"
#~ msgstr "eraro æe kreo de dosiero"
-#~ msgid "invalid passphrase"
-#~ msgstr "nevalida pasfrazo"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "nerealigita publikþlosila metodo"
#~ msgid "For info see http://www.gnupg.org"
#~ msgstr "Por informoj vidu http://www.gnupg.org"
-#~ msgid "Do you really want to create a sign and encrypt key? "
-#~ msgstr "Æu vi vere volas krei subskriban kaj æifran þlosilon? "
-
#~ msgid "can't lock keyring `%s': %s\n"
#~ msgstr "ne povas þlosi la þlosilaron '%s': %s\n"
msgid "|pinentry-label|_Cancel"
msgstr "|pinentry-label|_Cancelar"
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
msgid "|pinentry-label|PIN:"
msgstr "|pinentry-label|PIN:"
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_Cancelar"
+
+#, fuzzy
+#| msgid "Do you really want to create a sign and encrypt key? "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "¿De verdad quiere crear una clave de firma y cifrado? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "frase contraseña incorrecta"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "no disponible"
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "no permite reusar antiguas frases contraseña"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "|FICHERO|escribir variables de entorno también en FICHERO"
msgstr "[ID de usuario no encontrado]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "clave %s: clave secreta sin clave pública - omitida\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "recuperado automáticamente `%s' vía %s\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "usando subclave %s en vez de clave primaria %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "clave %s: clave secreta sin clave pública - omitida\n"
-
msgid "make a signature"
msgstr "crea una firma"
msgid "missing argument"
msgstr "falta el parámetro"
+#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armadura inválida"
+
msgid "invalid command"
msgstr "orden inválida"
msgid "missing argument for option \"%.50s\"\n"
msgstr "falta parámetro para la opción \"%.50s\"\n"
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "falta parámetro para la opción \"%.50s\"\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "la opción \"%.50s\" no necesita parámetros\n"
#~ msgid "invalid packet"
#~ msgstr "paquete inválido"
-#~ msgid "invalid armor"
-#~ msgstr "armadura inválida"
-
#~ msgid "no such user id"
#~ msgstr "no existe el ID de usuario"
#~ msgid "file create error"
#~ msgstr "error al crear fichero"
-#~ msgid "invalid passphrase"
-#~ msgstr "frase contraseña incorrecta"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "algoritmo de clave pública no implementado"
#~ msgid "%s: error checking key: %s\n"
#~ msgstr "%s: error comprobando la clave: %s\n"
-#~ msgid "Do you really want to create a sign and encrypt key? "
-#~ msgstr "¿De verdad quiere crear una clave de firma y cifrado? "
-
#~ msgid "Do you really need such a large keysize? "
#~ msgstr "¿De verdad necesita una clave tan grande? "
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Kas te tõesti soovite valitud võtmeid tühistada? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "vigane parool"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "ei ole toetatud"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "viga parooli loomisel: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[Kasutaja id puudub]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "võti %08lX: salajane võti avaliku võtmeta - jätsin vahele\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "kasutan sekundaarset võtit %08lX primaarse võtme %08lX asemel\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "võti %08lX: salajane võti avaliku võtmeta - jätsin vahele\n"
-
#, fuzzy
msgid "make a signature"
msgstr "loo eraldiseisev allkiri"
msgstr "vigane argument"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "vigane pakend"
+
+#, fuzzy
msgid "invalid command"
msgstr "vastuolulised käsud\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "vigased impordi võtmed\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "vigane pakett"
-#~ msgid "invalid armor"
-#~ msgstr "vigane pakend"
-
#~ msgid "no such user id"
#~ msgstr "sellist kasutaja id pole"
#~ msgid "file create error"
#~ msgstr "viga faili loomisel"
-#~ msgid "invalid passphrase"
-#~ msgstr "vigane parool"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "realiseerimata avaliku võtme algoritm"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Haluatko varmasti mitätöidä valitut avaimet? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "väärä salasana"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "ei tuettu"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "virhe luotaessa salasanaa: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[Käyttäjätunnusta ei löytynyt]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr ""
+"avain %08lX: salaisella avaimella ei ole vastaavaa \n"
+"julkista avainta - ohitetaan\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgstr ""
"käytetään toissijaista avainta %08lX ensisijaisen avaimen %08lX sijasta\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr ""
-"avain %08lX: salaisella avaimella ei ole vastaavaa \n"
-"julkista avainta - ohitetaan\n"
-
#, fuzzy
msgid "make a signature"
msgstr "tee erillinen allekirjoitus"
msgstr "virheellinen argumentti"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "virheellinen ascii-koodaus"
+
+#, fuzzy
msgid "invalid command"
msgstr "ristiriitainen komento\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "virheelliset tuontivalitsimet\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "virheellinen paketti"
-#~ msgid "invalid armor"
-#~ msgstr "virheellinen ascii-koodaus"
-
#~ msgid "no such user id"
#~ msgstr "käyttäjätunnusta ei löydy"
#~ msgid "file create error"
#~ msgstr "virhe tiedostoa luotaessa"
-#~ msgid "invalid passphrase"
-#~ msgstr "väärä salasana"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "julkisen avaimen algoritmi ei ole käytössä"
msgid "|pinentry-label|_Cancel"
msgstr "|pinentry-label|_Annuler"
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
msgid "|pinentry-label|PIN:"
msgstr "|pinentry-label|Code personnel :"
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_Annuler"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Voulez-vous vraiment révoquer les sous-clefs sélectionnées ? (o/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "phrase de passe incorrecte"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "activer la prise en charge de putty"
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "ne pas autoriser la réutilisation d'anciennes phrases secrètes"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "|FICHIER|écrire aussi les réglages d'env. dans FICHIER"
msgstr "[identité introuvable]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "clef %s : clef secrète sans clef publique — ignorée\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "« %s » automatiquement récupéré par %s\n"
"utilisation de la sous-clef %s à la place de la clef\n"
"principale %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "clef %s : clef secrète sans clef publique — ignorée\n"
-
msgid "make a signature"
msgstr "faire une signature"
msgid "missing argument"
msgstr "argument manquant"
+#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armure incorrecte"
+
msgid "invalid command"
msgstr "commande incorrecte"
msgid "missing argument for option \"%.50s\"\n"
msgstr "argument manquant pour l'option « %.50s »\n"
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "argument manquant pour l'option « %.50s »\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "l'option « %.50s » n'attend pas d'argument\n"
#~ msgid "invalid packet"
#~ msgstr "paquet incorrect"
-#~ msgid "invalid armor"
-#~ msgstr "armure incorrecte"
-
#~ msgid "no such user id"
#~ msgstr "cette identité n'existe pas"
#~ msgid "file create error"
#~ msgstr "erreur de création de fichier"
-#~ msgid "invalid passphrase"
-#~ msgstr "phrase de passe incorrecte"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "algorithme de clef publique non implémenté"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to create a sign and encrypt key? "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "¿Seguro que quere crear unha chave para asinar e cifrar? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "contrasinal incorrecto"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "non está soportado"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "erro ao crea-lo contrasinal: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[Non se atopou o id de usuario]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "chave %08lX: chave secreta sen chave pública - omitida\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "emprégase a chave secundaria %08lX no canto da primaria %08lX\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "chave %08lX: chave secreta sen chave pública - omitida\n"
-
#, fuzzy
msgid "make a signature"
msgstr "facer unha sinatura separada"
msgstr "argumento non válido"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armadura non válida"
+
+#, fuzzy
msgid "invalid command"
msgstr "comandos conflictivos\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opcións de importación non válidas\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "paquete non válido"
-#~ msgid "invalid armor"
-#~ msgstr "armadura non válida"
-
#~ msgid "no such user id"
#~ msgstr "non hai tal id de usuario"
#~ msgid "file create error"
#~ msgstr "erro de creación de ficheiro"
-#~ msgid "invalid passphrase"
-#~ msgstr "contrasinal incorrecto"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "algoritmo de chave pública non implementado"
#~ msgid "%s: error checking key: %s\n"
#~ msgstr "%s: erro ao verifica-la chave: %s\n"
-#~ msgid "Do you really want to create a sign and encrypt key? "
-#~ msgstr "¿Seguro que quere crear unha chave para asinar e cifrar? "
-
#~ msgid "Do you really need such a large keysize? "
#~ msgstr "¿Está seguro de precisar un tamaño de chave tan grande? "
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Valóban visszavonja a kijelölt kulcsokat? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "érvénytelen jelszó"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "nem támogatott"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "Hiba a jelszó létrehozásakor: %s.\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[ismeretlen kulcs]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "%08lX kulcs: titkos kulcs nyilvános kulcs nélkül - kihagytam.\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "A %08lX másodlagos kulcsot használjuk a %08lX elsõdleges helyett.\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "%08lX kulcs: titkos kulcs nyilvános kulcs nélkül - kihagytam.\n"
-
#, fuzzy
msgid "make a signature"
msgstr "különálló aláírás készítése"
msgstr "érvénytelen argumentum"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "érvénytelen páncél"
+
+#, fuzzy
msgid "invalid command"
msgstr "Egymásnak ellentmondó parancsok!\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "Érvénytelen import opciók!\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "érvénytelen csomag"
-#~ msgid "invalid armor"
-#~ msgstr "érvénytelen páncél"
-
#~ msgid "no such user id"
#~ msgstr "nincs ilyen felhasználói azonosító"
#~ msgid "file create error"
#~ msgstr "állománylétrehozási hiba"
-#~ msgid "invalid passphrase"
-#~ msgstr "érvénytelen jelszó"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "nem megvalósított nyilvános kulcsú algoritmus"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Anda ingin membatalkan kunci terpilih ini? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "passphrase tidak valid"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "tidak didukung"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "kesalahan penciptaan passphrase: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[User id tidak ditemukan]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "kunci %08lX: kunci rahasia tanpa kunci publik - dilewati\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "menggunakan kunci sekunder %08lX bukannya kunci primer %08lX\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "kunci %08lX: kunci rahasia tanpa kunci publik - dilewati\n"
-
#, fuzzy
msgid "make a signature"
msgstr "buat detached signature"
msgstr "argumen tidak valid"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armor tidak valid"
+
+#, fuzzy
msgid "invalid command"
msgstr "perintah saling konflik\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opsi impor tidak valid\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "paket tidak valid"
-#~ msgid "invalid armor"
-#~ msgstr "armor tidak valid"
-
#~ msgid "no such user id"
#~ msgstr "tidak ada user id tsb"
#~ msgid "file create error"
#~ msgstr "kesalahan buat file"
-#~ msgid "invalid passphrase"
-#~ msgstr "passphrase tidak valid"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "algoritma pubkey belum diimplementasikan"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Vuoi davvero revocare le chiavi selezionate? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "passphrase non valida"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "non gestito"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "errore nella creazione della passhprase: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[User ID non trovato]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "chiave %08lX: chiave segreta senza chiave pubblica - saltata\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "uso la chiave secondaria %08lX invece della chiave primaria %08lX\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "chiave %08lX: chiave segreta senza chiave pubblica - saltata\n"
-
#, fuzzy
msgid "make a signature"
msgstr "fai una firma separata"
msgstr "argomento non valido"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armatura non valida"
+
+#, fuzzy
msgid "invalid command"
msgstr "comandi in conflitto\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opzioni di importazione non valide\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "pacchetto non valido"
-#~ msgid "invalid armor"
-#~ msgstr "armatura non valida"
-
#~ msgid "no such user id"
#~ msgstr "l'user id non esiste"
#~ msgid "file create error"
#~ msgstr "errore durante la creazione del file"
-#~ msgid "invalid passphrase"
-#~ msgstr "passphrase non valida"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "algoritmo della chiave pubblica non implementato"
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU gnupg 2.0.26\n"
+"Project-Id-Version: GNU gnupg 2.0.27\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"PO-Revision-Date: 2014-11-18 11:04+0900\n"
+"PO-Revision-Date: 2015-06-02 13:05+0200\n"
"Last-Translator: NIIBE Yutaka <gniibe@fsij.org>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
"Language: ja\n"
msgid "|pinentry-label|_Cancel"
msgstr "|pinentry-label|_キャンセル"
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
msgid "|pinentry-label|PIN:"
msgstr "|pinentry-label|PIN:"
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_キャンセル"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "選択した副鍵を本当に失効しますか? (y/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "新しいパスフレーズを入力してください"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "puttyサポートを有効にする"
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "古いパスフレーズを再使用することを認めない"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "|FILE|FILEに環境変数の設定も書き出す"
msgstr "[ユーザIDが見つかりません]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "鍵%s: 公開鍵のない秘密鍵です - スキップします\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "「%s」を %s から自動取得\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "副鍵%s(主鍵%sではなく)を用います\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "鍵%s: 公開鍵のない秘密鍵です - スキップします\n"
-
msgid "make a signature"
msgstr "署名を作成"
" ユーザIDが主になると仮定する場合があります。\n"
msgid "WARNING: Your encryption subkey expires soon.\n"
-msgstr ""
+msgstr "*警告*: 暗号副鍵がもうすぐ期限切れとなります。\n"
-#, fuzzy
-#| msgid "You can't change the expiration date of a v3 key\n"
msgid "You may want to change its expiration date too.\n"
-msgstr "v3鍵の有効期限は変更できません\n"
+msgstr "有効期限の変更も検討ください。\n"
msgid ""
"WARNING: This is a PGP2-style key. Adding a photo ID may cause some "
msgstr ""
"*警告*: これはPGP2形式の鍵です。フォトIDの追加で、一部のバージョンのPGPで"
"は、\n"
-" この鍵を拒否するかもしれません。\n"
+" この鍵を拒否するかもしれません。\n"
msgid "Are you sure you still want to add it? (y/N) "
msgstr "それでも追加したいですか? (y/N) "
msgid "missing argument"
msgstr "引数ありません"
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "無効な値\n"
+
msgid "invalid command"
msgstr "無効なコマンド"
msgid "missing argument for option \"%.50s\"\n"
msgstr "オプション\"%.50s\"に引数がありません\n"
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "オプション\"%.50s\"に引数がありません\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "オプション\"%.50s\"は引数をとりません\n"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Vil du virkelig oppheve de valgte undernøklene? (j/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "ugyldig passfrase"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
#, fuzzy
msgid "enable putty support"
msgstr ""
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "feil ved opprettelse av passfrase: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgstr "[Brukerid ikke funnet]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "nøkkel %s: hemmelig nøkkel uten offentlig nøkkel - hoppet over\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "bruker undernøkkel %s i stedet for primærnøkkel %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "nøkkel %s: hemmelig nøkkel uten offentlig nøkkel - hoppet over\n"
-
#, fuzzy
msgid "make a signature"
msgstr "|[fil]|lage en signatur"
msgstr "ugydig argument"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "ugyldig beskyttelse"
+
+#, fuzzy
msgid "invalid command"
msgstr "Admin-reservert kommando\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "ugyldige listevalg\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "ugyldig pakke"
-#~ msgid "invalid armor"
-#~ msgstr "ugyldig beskyttelse"
-
#~ msgid "no such user id"
#~ msgstr "det finnes ingen slik brukerid"
#~ msgid "file create error"
#~ msgstr "feil ved opprettelse av fil"
-#~ msgid "invalid passphrase"
-#~ msgstr "ugyldig passfrase"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "uimplementert pubkey-algoritme"
msgid "|pinentry-label|_Cancel"
msgstr "|pinentry-label|_Annuleren"
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
msgid "|pinentry-label|PIN:"
msgstr "|pinentry-label|Pincode:"
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_Annuleren"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Wilt U de geselecteerde subsleutels echt intrekken? (j/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "ongeldige wachtwoordzin"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "putty-ondersteuning mogelijk maken"
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "laat het opnieuw gebruiken van oude wachtwoordzinnen niet toe"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "|BESTAND|schrijf omgevingsinstellingen ook weg naar BESTAND"
msgstr "[Gebruikers-ID niet gevonden]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "sleutel %s: geheime sleutel zonder publieke sleutel - overgeslagen\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "`%s' automatisch opgehaald via %s\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "subsleutel %s wordt gebruikt in plaats van primaire sleutel %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "sleutel %s: geheime sleutel zonder publieke sleutel - overgeslagen\n"
-
msgid "make a signature"
msgstr "maak een ondertekening"
msgid "missing argument"
msgstr "ontbrekende parameter"
+#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "ongeldig harnas"
+
msgid "invalid command"
msgstr "ongeldig commando"
msgid "missing argument for option \"%.50s\"\n"
msgstr "ontbrekende parameter voor optie \"%.50s\"\n"
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "ontbrekende parameter voor optie \"%.50s\"\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "optie \"%.50s\" verwacht geen parameter\n"
#~ msgid "invalid packet"
#~ msgstr "ongeldig pakket"
-#~ msgid "invalid armor"
-#~ msgstr "ongeldig harnas"
-
#~ msgid "no such user id"
#~ msgstr "een dergelijk gebruikers-id bestaat niet"
#~ msgid "file create error"
#~ msgstr "fout bij het aanmaken van het bestand"
-#~ msgid "invalid passphrase"
-#~ msgstr "ongeldige wachtwoordzin"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "niet geïmplementeerd algoritme voor de publieke sleutel"
msgid "|pinentry-label|_Cancel"
msgstr "|pinentry-label|_Anuluj"
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
msgid "|pinentry-label|PIN:"
msgstr "|pinentry-label|PIN:"
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|_Anuluj"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Czy na pewno chcesz unieważnić wybrane podklucze? (t/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Wprowadź nowe hasło"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "włączenie obsługi putty"
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "nie zezwalanie na ponowne użycie starych haseł"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "|PLIK|zapis ustawień środowiska także do PLIKU"
msgstr "[brak identyfikatora użytkownika]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "klucz %s: klucz tajny bez klucza jawnego - pominięty\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "automatycznie pobrano `%s' poprzez %s\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "używany jest podklucz %s zamiast klucza głównego %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "klucz %s: klucz tajny bez klucza jawnego - pominięty\n"
-
msgid "make a signature"
msgstr "złożenie podpisu"
msgid "missing argument"
msgstr "brak argumentu"
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "niepoprawna wartość\n"
+
msgid "invalid command"
msgstr "błędne polecenie"
msgid "missing argument for option \"%.50s\"\n"
msgstr "brak argumentu dla opcji ,,%.50s''\n"
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "brak argumentu dla opcji ,,%.50s''\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "opcja ,,%.50s'' nie może mieć argumentów\n"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Você quer realmente revogar as chaves selecionadas? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "frase-secreta inválida"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "não suportado"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "erro na criação da frase secreta: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[Utilizador não encontrado]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "usando chave secundária %08lX ao invés de chave primária %08lX\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n"
-
#, fuzzy
msgid "make a signature"
msgstr "fazer uma assinatura separada"
msgstr "argumento inválido"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armadura inválida"
+
+#, fuzzy
msgid "invalid command"
msgstr "comandos em conflito\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opções de importação inválidas\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "pacote inválido"
-#~ msgid "invalid armor"
-#~ msgstr "armadura inválida"
-
#~ msgid "no such user id"
#~ msgstr "identificador de utilizador inexistente"
#~ msgid "file create error"
#~ msgstr "erro na criação do ficheiro"
-#~ msgid "invalid passphrase"
-#~ msgstr "frase-secreta inválida"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "algoritmo de chave pública não implementado"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to create a sign and encrypt key? "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Você realmente quer criar uma chave para assinatura e criptografia? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "frase secreta inválida"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "não suportado"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "erro na criação da frase secreta: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[usuário não encontrado]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "usando chave secundária %08lX ao invés de chave primária %08lX\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n"
-
#, fuzzy
msgid "make a signature"
msgstr "fazer uma assinatura separada"
msgstr "argumento inválido"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armadura inválida"
+
+#, fuzzy
msgid "invalid command"
msgstr "comandos conflitantes\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "armadura inválida"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "pacote inválido"
-#~ msgid "invalid armor"
-#~ msgstr "armadura inválida"
-
#~ msgid "no such user id"
#~ msgstr "identificador de usuário inexistente"
#~ msgid "file create error"
#~ msgstr "erro na criação de arquivo"
-#~ msgid "invalid passphrase"
-#~ msgstr "frase secreta inválida"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "algoritmo de chave pública não implementado"
#~ "usuário `%s' não encontrado no banco de dados de confiabilidade - "
#~ "inserindo\n"
-#~ msgid "Do you really want to create a sign and encrypt key? "
-#~ msgstr ""
-#~ "Você realmente quer criar uma chave para assinatura e criptografia? "
-
#~ msgid "no default public keyring\n"
#~ msgstr "sem chaveiro público padrão\n"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Doriþi într-adevãr sã revocaþi subcheile selectate? (d/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "frazã-parolã invalidã"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
#, fuzzy
msgid "enable putty support"
msgstr "nu este suportat(ã)"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "eroare la crearea frazei-parolã: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgstr "[ID utilizator nu a fost gãsit]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "cheia %s: cheie secretã fãrã cheie publicã - sãritã\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "folosim subcheia %s în loc de cheia primarã %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "cheia %s: cheie secretã fãrã cheie publicã - sãritã\n"
-
#, fuzzy
msgid "make a signature"
msgstr "|[fiºier]|creazã o semnãturã"
msgstr "argument invalid"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "armurã invalidã"
+
+#, fuzzy
msgid "invalid command"
msgstr "Comandã numai-administrare\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "opþiuni enumerare invalide\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "pachet invalid"
-#~ msgid "invalid armor"
-#~ msgstr "armurã invalidã"
-
#~ msgid "no such user id"
#~ msgstr "nu existã acest id utilizator"
#~ msgid "file create error"
#~ msgstr "eroare creare fiºier"
-#~ msgid "invalid passphrase"
-#~ msgstr "frazã-parolã invalidã"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "algoritm pubkey neimplementat"
# !-- no such user (2011-01-11)
# Thanks Pawel I. Shajdo <pshajdo@gmail.com>.
# Thanks Cmecb for the inspiration.
-# Ineiev <ineiev@gnu.org>, 2014
+# Ineiev <ineiev@gnu.org>, 2014, 2015
#
# Designated-Translator: none
msgid ""
msgstr ""
"Project-Id-Version: GnuPG 2.0.10\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"PO-Revision-Date: 2014-11-18 17:16+0000\n"
+"PO-Revision-Date: 2015-02-14 17:16+0000\n"
"Last-Translator: Ineiev <ineiev@gnu.org>\n"
"Language-Team: Russian <gnupg-ru@gnupg.org>\n"
"Language: ru\n"
#, c-format
msgid "no suitable card key found: %s\n"
-msgstr "в карте не найдено подходящего ключа: %s\n"
+msgstr "на карте не найдено подходящего ключа: %s\n"
#, c-format
msgid "shadowing the key failed: %s\n"
msgstr "текстовый формат: %s\n"
msgid "invalid armor header: "
-msgstr "непÑ\80авилÑ\8cный текстовый заголовок: "
+msgstr "недопÑ\83Ñ\81Ñ\82имый текстовый заголовок: "
msgid "armor header: "
msgstr "текстовый заголовок: "
msgid "invalid clearsig header\n"
-msgstr "непÑ\80авилÑ\8cный заголовок текстовой подписи\n"
+msgstr "недопÑ\83Ñ\81Ñ\82имый заголовок текстовой подписи\n"
msgid "unknown armor header: "
msgstr "неизвестный текстовый заголовок: "
msgstr "неожиданный текстовый формат: "
msgid "invalid dash escaped line: "
-msgstr "непÑ\80авилÑ\8cнÑ\8bй оÑ\82Ñ\81Ñ\82Ñ\83п из минÑ\83Ñ\81ов: "
+msgstr "недопÑ\83Ñ\81Ñ\82имаÑ\8f Ñ\81Ñ\82Ñ\80ока, вÑ\8bделеннаÑ\8f деÑ\84иÑ\81ами: "
#, c-format
msgid "invalid radix64 character %02X skipped\n"
#, c-format
msgid "invalid armor: line longer than %d characters\n"
-msgstr "непÑ\80авилÑ\8cный текстовый формат: строка длиннее %d символов\n"
+msgstr "недопÑ\83Ñ\81Ñ\82имый текстовый формат: строка длиннее %d символов\n"
msgid ""
"quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr "Обнаружена карта OpenPGP номер %s\n"
msgid "can't do this in batch mode\n"
-msgstr "невозможно Ñ\81делаÑ\82Ñ\8c Ñ\8dÑ\82о в пакеÑ\82ном Ñ\80ежиме\n"
+msgstr "в пакеÑ\82ном Ñ\80ежиме Ñ\8dÑ\82о дейÑ\81Ñ\82вие невозможно\n"
msgid "This command is only available for version 2 cards\n"
msgstr "Эта команда доступна только для карт версии 2.\n"
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 "ошибка записи `%s': %s\n"
msgid "Login data (account name): "
-msgstr "Учетная запись (имя):"
+msgstr "Учетная запись (имя): "
#, c-format
msgid "Error: Login data too long (limit is %d characters).\n"
msgstr "отпечаток центра сертификации: "
msgid "Error: invalid formatted fingerprint.\n"
-msgstr "Ð\9eÑ\88ибка: непÑ\80авилÑ\8cный формат отпечатка.\n"
+msgstr "Ð\9eÑ\88ибка: недопÑ\83Ñ\81Ñ\82имый формат отпечатка.\n"
#, c-format
msgid "key operation not possible: %s\n"
msgstr "ошибка изменения размера ключа %d до %u бит: %s\n"
msgid "Make off-card backup of encryption key? (Y/n) "
-msgstr "Сделать архивную копию ключа шифрования вне карты? (Y/n)"
+msgstr "Сделать архивную копию ключа шифрования вне карты? (Y/n) "
msgid "NOTE: keys are already stored on the card!\n"
msgstr "ЗАМЕЧАНИЕ: ключи уже хранятся на карте!\n"
msgstr "изменить URL получения ключа"
msgid "fetch the key specified in the card URL"
-msgstr "запросить ключ, указанный по заданному картой URL"
+msgstr "запросить ключ по заданному картой URL"
msgid "change the login name"
msgstr "изменить имя учетной записи"
msgstr "не могу выполнить в пакетном режиме без \"--yes\"\n"
msgid "Delete this key from the keyring? (y/N) "
-msgstr "Удалить данный ключ из таблицы? (y/N)"
+msgstr "Удалить данный ключ из таблицы? (y/N) "
msgid "This is a secret key! - really delete? (y/N) "
-msgstr "Это закрытый ключ! - все равно удалить? (y/N)"
+msgstr "Это закрытый ключ! - все равно удалить? (y/N) "
#, c-format
msgid "deleting keyblock failed: %s\n"
msgstr "сбой при удалении блока ключа: %s\n"
msgid "ownertrust information cleared\n"
-msgstr "информация о доверии владельцу стерта\n"
+msgstr "сведения о доверии владельцу сброшены\n"
#, c-format
msgid "there is a secret key for public key \"%s\"!\n"
msgid ""
"WARNING: forcing symmetric cipher %s (%d) violates recipient preferences\n"
msgstr ""
-"Ð\92Ð\9dÐ\98Ð\9cÐ\90Ð\9dÐ\98Ð\95: иÑ\81полÑ\8cзование Ñ\81иммеÑ\82Ñ\80иÑ\87ного Ñ\88иÑ\84Ñ\80а %s (%d) пÑ\80оÑ\82ивоÑ\80еÑ\87ит\n"
-" предпочтениям получателя\n"
+"Ð\92Ð\9dÐ\98Ð\9cÐ\90Ð\9dÐ\98Ð\95: иÑ\81полÑ\8cзование Ñ\81иммеÑ\82Ñ\80иÑ\87ного Ñ\88иÑ\84Ñ\80а %s (%d) наÑ\80Ñ\83Ñ\88ает\n"
+" предпочтения получателя\n"
#, c-format
msgid ""
"WARNING: forcing compression algorithm %s (%d) violates recipient "
"preferences\n"
-msgstr ""
-"ВНИМАНИЕ: сжатие алгоритмом %s (%d) противоречит предпочтениям получателя\n"
+msgstr "ВНИМАНИЕ: сжатие алгоритмом %s (%d) нарушает предпочтения получателя\n"
#, c-format
msgid "forcing symmetric cipher %s (%d) violates recipient preferences\n"
msgstr ""
-"использование симметричного шифра %s (%d) противоречит предпочтениям "
-"получателя\n"
+"использование симметричного шифра %s (%d) нарушает предпочтения получателя\n"
#, c-format
msgid "you may not use %s while in %s mode\n"
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 "экспортировать ключи отзыва, помеченные как `особо важные'"
msgid "remove the passphrase from exported subkeys"
-msgstr "удалить пароль из выбранных подключей"
+msgstr "удалить фразу-пароль из выбранных подключей"
msgid "remove unusable parts from key during export"
msgstr "удалить при экспорте непригодные части ключа"
msgstr "создать открытый ключ при импорте закрытого ключа"
msgid "only accept updates to existing keys"
-msgstr "пÑ\80оводиÑ\82Ñ\8c Ñ\82олÑ\8cко обновлениÑ\8f Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89иÑ\85 клÑ\8eÑ\87ей"
+msgstr "обновлÑ\8fÑ\82Ñ\8c Ñ\82олÑ\8cко Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89ие клÑ\8eÑ\87и"
msgid "remove unusable parts from key after import"
msgstr "удалить после импорта непригодные части ключа"
#, c-format
msgid "%lu keys processed so far\n"
-msgstr "%lu ключей обработано\n"
+msgstr "обработано %lu ключей\n"
#, c-format
msgid "Total number processed: %lu\n"
msgid "re-distribute this key to avoid potential algorithm mismatch problems\n"
msgstr ""
-"распространили этот ключ, чтобы избежать потенциальных проблем несовпадения "
-"алгоритмов\n"
+"распространили этот ключ во избежание возможных нестыковок алгоритмов\n"
#, c-format
msgid "you can update your preferences with: gpg --edit-key %s updpref save\n"
msgstr ""
-"Вы можете обновить список предпочтений командой\n"
-" gpg --edit-key %s updpref save\n"
+"свои предпочтения можно обновить командой gpg --edit-key %s updpref save\n"
#, c-format
msgid "key %s: no user ID\n"
#, 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 пользователя\n"
msgid "this may be caused by a missing self-signature\n"
-msgstr "пÑ\80иÑ\87иной Ñ\8dÑ\82ого можеÑ\82 бÑ\8bÑ\82Ñ\8c оÑ\82Ñ\81Ñ\83Ñ\82Ñ\81Ñ\82вие самоподписи\n"
+msgstr "можеÑ\82 бÑ\8bÑ\82Ñ\8c, из-за оÑ\82Ñ\81Ñ\83Ñ\82Ñ\81Ñ\82виÑ\8f самоподписи\n"
#, c-format
msgid "key %s: public key not found: %s\n"
#, c-format
msgid "key %s: can't locate original keyblock: %s\n"
-msgstr "клÑ\8eÑ\87 %s: не наÑ\85ожÑ\83 оÑ\80игиналÑ\8cнÑ\8bй блок клÑ\8eÑ\87ей: %s\n"
+msgstr "клÑ\8eÑ\87 %s: оÑ\80игиналÑ\8cнÑ\8bй блок клÑ\8eÑ\87ей не найден: %s\n"
#, c-format
msgid "key %s: can't read original keyblock: %s\n"
-msgstr "клÑ\8eÑ\87 %s: не могÑ\83 пÑ\80оÑ\87иÑ\82аÑ\82Ñ\8c оÑ\80игиналÑ\8cнÑ\8bй блок клÑ\8eÑ\87ей: %s\n"
+msgstr "клÑ\8eÑ\87 %s: оÑ\80игиналÑ\8cнÑ\8bй блок клÑ\8eÑ\87ей не Ñ\87иÑ\82аеÑ\82Ñ\81Ñ\8f: %s\n"
#, c-format
msgid "key %s: \"%s\" 1 new user ID\n"
msgstr "закрытый ключ %s: %s\n"
msgid "importing secret keys not allowed\n"
-msgstr "импоÑ\80Ñ\82 закÑ\80Ñ\8bÑ\82ого клÑ\8eÑ\87а не позволен\n"
+msgstr "импоÑ\80Ñ\82 закÑ\80Ñ\8bÑ\82ого клÑ\8eÑ\87а не допÑ\83Ñ\81каеÑ\82Ñ\81Ñ\8f\n"
#, c-format
msgid "key %s: secret key with invalid cipher %d - skipped\n"
#, c-format
msgid "key %s: secret key not found: %s\n"
-msgstr "клÑ\8eÑ\87 %s: не найден закÑ\80Ñ\8bÑ\82Ñ\8bй клÑ\8eÑ\87: %s\n"
+msgstr "клÑ\8eÑ\87 %s: закÑ\80Ñ\8bÑ\82Ñ\8bй клÑ\8eÑ\87 не найден: %s\n"
#, c-format
msgid "key %s: no public key - can't apply revocation certificate\n"
#, 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"
#, c-format
msgid "key %s: invalid subkey binding\n"
-msgstr "клÑ\8eÑ\87 %s: непÑ\80авилÑ\8cная связь подключей\n"
+msgstr "клÑ\8eÑ\87 %s: недопÑ\83Ñ\81Ñ\82имая связь подключей\n"
#, c-format
msgid "key %s: removed multiple subkey binding\n"
#, c-format
msgid "key %s: invalid subkey revocation\n"
-msgstr "клÑ\8eÑ\87 %s: непÑ\80авилÑ\8cный отзыв подключа\n"
+msgstr "клÑ\8eÑ\87 %s: невеÑ\80ный отзыв подключа\n"
# test it
#, c-format
#, 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"
"ЗАМЕЧАНИЕ: серийный номер ключа не соответствует номеру ключа на карте\n"
msgid "NOTE: primary key is online and stored on card\n"
-msgstr "Ð\97Ð\90Ð\9cÐ\95ЧÐ\90Ð\9dÐ\98Ð\95: главнÑ\8bй клÑ\8eÑ\87 гоÑ\82ов и Ñ\81оÑ\85Ñ\80анен в карте\n"
+msgstr "Ð\97Ð\90Ð\9cÐ\95ЧÐ\90Ð\9dÐ\98Ð\95: главнÑ\8bй клÑ\8eÑ\87 гоÑ\82ов и Ñ\81оÑ\85Ñ\80анен на карте\n"
msgid "NOTE: secondary key is online and stored on card\n"
-msgstr "Ð\97Ð\90Ð\9cÐ\95ЧÐ\90Ð\9dÐ\98Ð\95: вÑ\82оÑ\80иÑ\87нÑ\8bй клÑ\8eÑ\87 гоÑ\82ов и Ñ\81оÑ\85Ñ\80анен в карте\n"
+msgstr "Ð\97Ð\90Ð\9cÐ\95ЧÐ\90Ð\9dÐ\98Ð\95: вÑ\82оÑ\80иÑ\87нÑ\8bй клÑ\8eÑ\87 гоÑ\82ов и Ñ\81оÑ\85Ñ\80анен на карте\n"
#, c-format
msgid "error creating keyring `%s': %s\n"
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"
msgid ""
"You may not make an OpenPGP signature on a PGP 2.x key while in --pgp2 "
"mode.\n"
-msgstr ""
-"Вы не можете сделать подпись OpenPGP на ключе PGP 2.x в режиме --pgp2.\n"
+msgstr "Подпись OpenPGP на ключе PGP 2.x в режиме --pgp2 делать нельзя.\n"
msgid "This would make the key unusable in PGP 2.x.\n"
-msgstr "ÐÑ\82о Ñ\81делаеÑ\82 клÑ\8eÑ\87 неÑ\81овмеÑ\81Ñ\82имÑ\8bм с PGP 2.x.\n"
+msgstr "Ð\9aлÑ\8eÑ\87 Ñ\81Ñ\82ал бÑ\8b неÑ\81овмеÑ\81Ñ\82им с PGP 2.x.\n"
msgid ""
"How carefully have you verified the key you are about to sign actually "
"to the person named above? If you don't know what to answer, enter \"0\".\n"
msgstr ""
"Насколько хорошо Вы проверили, что ключ действительно принадлежит\n"
-"Ñ\83казанномÑ\83 вÑ\8bÑ\88е Ñ\87еловекÑ\83? Ð\95Ñ\81ли Ð\92Ñ\8b не знаеÑ\82е, Ñ\87Ñ\82о оÑ\82веÑ\82иÑ\82Ñ\8c, введиÑ\82е \"0\".\n"
+"указанному выше человеку? Если не знаете, что ответить, введите \"0\".\n"
#, c-format
msgid " (0) I will not answer.%s\n"
"Are you sure that you want to sign this key with your\n"
"key \"%s\" (%s)\n"
msgstr ""
-"УвеÑ\80енÑ\8b ли Ð\92ы, что хотите подписать этот ключ\n"
+"Ð\92Ñ\8b Ñ\83веÑ\80ены, что хотите подписать этот ключ\n"
"своим ключом \"%s\" (%s)?\n"
msgid "This will be a self-signature.\n"
msgstr "Этот ключ проверен мной очень тщательно.\n"
msgid "Really sign? (y/N) "
-msgstr "Действительно подписать? (y/N)"
+msgstr "Действительно подписать? (y/N) "
#, c-format
msgid "signing failed: %s\n"
-msgstr "не Ñ\83далоÑ\81Ñ\8c подпиÑ\81аÑ\82ь: %s\n"
+msgstr "подпиÑ\81аÑ\82Ñ\8c не Ñ\83далоÑ\81ь: %s\n"
msgid "Key has only stub or on-card key items - no passphrase to change.\n"
msgstr ""
-"Ð\92 клÑ\8eÑ\87е Ñ\82олÑ\8cко загоÑ\82овка или Ñ\8dлеменÑ\82Ñ\8b длÑ\8f каÑ\80Ñ\82Ñ\8b - неÑ\82 паÑ\80олÑ\8f длÑ\8f изменениÑ\8f.\n"
+"Ð\92 клÑ\8eÑ\87е Ñ\82олÑ\8cко загоÑ\82овка или Ñ\8dлеменÑ\82Ñ\8b длÑ\8f каÑ\80Ñ\82Ñ\8b - паÑ\80олÑ\8f длÑ\8f изменениÑ\8f неÑ\82.\n"
msgid "This key is not protected.\n"
msgstr "Данный ключ не защищен.\n"
#, c-format
msgid "Can't edit this key: %s\n"
-msgstr "Ð\9dе могÑ\83 Ñ\80едакÑ\82иÑ\80оваÑ\82Ñ\8c даннÑ\8bй клÑ\8eÑ\87: %s\n"
+msgstr "Ð\94аннÑ\8bй клÑ\8eÑ\87 не Ñ\80едакÑ\82иÑ\80Ñ\83еÑ\82Ñ\81Ñ\8f: %s\n"
msgid ""
"Enter the new passphrase for this secret key.\n"
"\n"
msgid "Do you really want to do this? (y/N) "
-msgstr "Вы все равно хотите этого? (y/N)"
+msgstr "Вы все равно хотите этого? (y/N) "
msgid "moving a key signature to the correct place\n"
msgstr "перемещение подписи ключа в нужное место\n"
msgstr "установить примечание для выбранных ID пользователя"
msgid "change the passphrase"
-msgstr "сменить пароль"
+msgstr "сменить фразу-пароль"
msgid "change the ownertrust"
msgstr "изменить уровень доверия владельцу"
msgstr "отозвать ключ или выбранные подключи"
msgid "enable key"
-msgstr "включить ключ"
+msgstr "подключить ключ"
msgid "disable key"
msgstr "отключить ключ"
" a `t' for trust signatures (tsign), an `nr' for non-revocable signatures\n"
" (nrsign), or any combination thereof (ltsign, tnrsign, etc.).\n"
msgstr ""
-"* Ð\9aоманда `sign' можеÑ\82 имеÑ\82Ñ\8c пÑ\80еÑ\84икÑ\81 `l' (локальные подписи, lsign),\n"
+"* У командÑ\8b `sign' можеÑ\82 бÑ\8bÑ\82Ñ\8c пÑ\80иÑ\81Ñ\82авка `l' (локальные подписи, lsign),\n"
" `t' (подписи доверия, tsign), `nr' (неотзываемые, \n"
" nrsign) или любое их сочетание (ltsign, tnrsign и т.д.).\n"
msgstr "Ключ отозван."
msgid "Really sign all user IDs? (y/N) "
-msgstr "Действительно подписать все ID пользователя? (y/N)"
+msgstr "Действительно подписать все ID пользователя? (y/N) "
msgid "Hint: Select the user IDs to sign\n"
msgstr "Подсказка: Выберите ID пользователей для подписи\n"
#, c-format
msgid "Unknown signature type `%s'\n"
-msgstr "неизвестный тип подписи `%s'\n"
+msgstr "Ð\9dеизвестный тип подписи `%s'\n"
#, c-format
msgid "This command is not allowed while in %s mode.\n"
msgstr "Вы не можете удалить последний ID пользователя!\n"
msgid "Really remove all selected user IDs? (y/N) "
-msgstr "Действительно удалить все выбранные ID пользователей? (y/N)"
+msgstr "Действительно удалить все выбранные ID пользователей? (y/N) "
msgid "Really remove this user ID? (y/N) "
-msgstr "Действительно удалить этот ID пользователя? (y/N)"
+msgstr "Действительно удалить этот ID пользователя? (y/N) "
#. TRANSLATORS: Please take care: This is about
#. moving the key and not about removing it.
msgid "Really move the primary key? (y/N) "
-msgstr "Действительно удалить главный ключ? (y/N)"
+msgstr "Действительно удалить главный ключ? (y/N) "
msgid "You must select exactly one key.\n"
msgstr "Вы должны выбрать хотя бы один ключ.\n"
msgstr "сбой при обновлении закрытого ключа: %s\n"
msgid "Key not changed so no update needed.\n"
-msgstr "ключ не изменялся - обновление не нужно.\n"
+msgstr "Ð\9aлюч не изменялся - обновление не нужно.\n"
msgid "Digest: "
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"
"пользователя.\n"
msgid "WARNING: Your encryption subkey expires soon.\n"
-msgstr ""
+msgstr "ВНИМАНИЕ: Срок годности Вашего подключа скоро истечет.\n"
-#, fuzzy
-#| msgid "You can't change the expiration date of a v3 key\n"
msgid "You may want to change its expiration date too.\n"
-msgstr "Ð\9dелÑ\8cзÑ\8f измениÑ\82Ñ\8c Ñ\81Ñ\80ок дейÑ\81Ñ\82виÑ\8f клÑ\8eÑ\87а v3\n"
+msgstr "Ð\92озможно, надо измениÑ\82Ñ\8c и его Ñ\81Ñ\80ок дейÑ\81Ñ\82виÑ\8f.\n"
msgid ""
"WARNING: This is a PGP2-style key. Adding a photo ID may cause some "
msgstr "подключ %s не для подписей, он не нуждается в перекрестном заверении\n"
msgid "Please select exactly one user ID.\n"
-msgstr "Ð\92Ñ\8bбеÑ\80иÑ\82е Ñ\82олÑ\8cко один ID пользователя.\n"
+msgstr "Ð\92Ñ\8bбеÑ\80иÑ\82е Ñ\80овно один ID пользователя.\n"
#, c-format
msgid "skipping v3 self-signature on user ID \"%s\"\n"
#, c-format
msgid "keysize rounded up to %u bits\n"
-msgstr "Ñ\80азмеÑ\80 клÑ\8eÑ\87а пÑ\80иведен к %u биÑ\82ам\n"
+msgstr "Ñ\80азмеÑ\80 клÑ\8eÑ\87а окÑ\80Ñ\83глен ввеÑ\80Ñ\85 до %u биÑ\82\n"
msgid ""
"WARNING: some OpenPGP programs can't handle a DSA key with this digest size\n"
#, 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"
#, c-format
msgid "%s keys may be between %u and %u bits long.\n"
-msgstr "клÑ\8eÑ\87и %s могÑ\83Ñ\82 имеÑ\82Ñ\8c длинÑ\83 от %u до %u бит.\n"
+msgstr "длина клÑ\8eÑ\87ей %s можеÑ\82 бÑ\8bÑ\82Ñ\8c от %u до %u бит.\n"
#, c-format
msgid "What keysize do you want for the subkey? (%u) "
msgstr ""
"Выберите срок действия ключа.\n"
" 0 = без ограничения срока действия\n"
-" <n> = срок действия - n дней\n"
-" <n>w = срок действия - n недель\n"
-" <n>m = срок действия - n месяцев\n"
-" <n>y = срок действия - n лет\n"
+" <n> = срок действия ключа - n дней\n"
+" <n>w = срок действия ключа - n недель\n"
+" <n>m = срок действия ключа - n месяцев\n"
+" <n>y = срок действия ключа - n лет\n"
msgid ""
"Please specify how long the signature should be valid.\n"
#, c-format
msgid "Key expires at %s\n"
-msgstr "Ключ действителен до: %s\n"
+msgstr "Ключ действителен до %s\n"
#, c-format
msgid "Signature expires at %s\n"
"generator a better chance to gain enough entropy.\n"
msgstr ""
"Необходимо получить много случайных чисел. Желательно, чтобы Вы\n"
-"выполняли некоторые другие действия (печать на клавиатуре, движения мыши,\n"
-"обÑ\80аÑ\89ениÑ\8f к диÑ\81кам) в пÑ\80оÑ\86еÑ\81Ñ\81е генеÑ\80аÑ\86ии; это даст генератору\n"
+"в процессе генерации выполняли какие-то другие действия (печать\n"
+"на клавиаÑ\82Ñ\83Ñ\80е, движениÑ\8f мÑ\8bÑ\88и, обÑ\80аÑ\89ениÑ\8f к диÑ\81кам); это даст генератору\n"
"случайных чисел больше возможностей получить достаточное количество "
"энтропии.\n"
#, c-format
msgid "writing secret key stub to `%s'\n"
-msgstr "Ñ\81оÑ\85Ñ\80анение заглÑ\83Ñ\88ки закрытого ключа в `%s'\n"
+msgstr "Ñ\81оÑ\85Ñ\80анение загоÑ\82овки закрытого ключа в `%s'\n"
#, c-format
msgid "writing secret key to `%s'\n"
msgstr "никогда "
msgid "Critical signature policy: "
-msgstr "Ð\9aÑ\80иÑ\82иÑ\87еÑ\81кие пÑ\80авила длÑ\8f подпиÑ\81и: "
+msgstr "Критические правила подписи: "
msgid "Signature policy: "
msgstr "Правила подписи: "
#, c-format
msgid "WARNING: keyserver option `%s' is not used on this platform\n"
msgstr ""
-"Ð\92Ð\9dÐ\98Ð\9cÐ\90Ð\9dÐ\98Ð\95: паÑ\80амеÑ\82Ñ\80 Ñ\81еÑ\80веÑ\80а клÑ\8eÑ\87ей `%s' не иÑ\81полÑ\8cзÑ\83еÑ\82Ñ\81Ñ\8f на данной плаÑ\82Ñ\84оÑ\80ме\n"
+"Ð\92Ð\9dÐ\98Ð\9cÐ\90Ð\9dÐ\98Ð\95: паÑ\80амеÑ\82Ñ\80 Ñ\81еÑ\80веÑ\80а клÑ\8eÑ\87ей `%s' на данной плаÑ\82Ñ\84оÑ\80ме не иÑ\81полÑ\8cзÑ\83еÑ\82Ñ\81Ñ\8f\n"
msgid "disabled"
msgstr "отключен"
#, c-format
msgid "requesting key %s from %s server %s\n"
-msgstr "запрашиваю ключ %s с %s сервера %s\n"
+msgstr "запрашиваю ключ %s с сервера %s %s\n"
#, c-format
msgid "requesting key %s from %s\n"
#, c-format
msgid "searching for names from %s server %s\n"
-msgstr "поиск имен на %s сервере %s\n"
+msgstr "поиск имен на сервере %s %s\n"
#, c-format
msgid "searching for names from %s\n"
#, c-format
msgid "sending key %s to %s server %s\n"
-msgstr "отправка ключа %s на %s сервер %s\n"
+msgstr "отправка ключа %s на сервер %s %s\n"
#, c-format
msgid "sending key %s to %s\n"
#, c-format
msgid "searching for \"%s\" from %s server %s\n"
-msgstr "поиск \"%s\" на %s сервере %s\n"
+msgstr "поиск \"%s\" на сервере %s %s\n"
#, c-format
msgid "searching for \"%s\" from %s\n"
msgid "keyserver did not send VERSION\n"
msgstr "сервер ключей не прислал VERSION\n"
-#, c-format
-msgid "keyserver communications error: %s\n"
-msgstr "ошибка связи с сервером ключей: %s\n"
-
msgid "no keyserver known (use option --keyserver)\n"
msgstr "не заданы серверы ключей (используйте --keyserver)\n"
msgstr "внутренняя ошибка сервера ключей\n"
#, c-format
+msgid "keyserver communications error: %s\n"
+msgstr "ошибка связи с сервером ключей: %s\n"
+
+#, c-format
msgid "\"%s\" not a key ID: skipping\n"
msgstr "\"%s\" не идентификатор ключа: пропущен\n"
#, 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"
#, 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"
#, 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"
#, c-format
msgid "please use \"%s%s\" instead\n"
-msgstr "используйте \"%s%s\" взамен\n"
+msgstr "используйте вместо этого \"%s%s\"\n"
#, c-format
msgid "WARNING: \"%s\" is a deprecated command - do not use it\n"
"создан %s%s.\n"
msgid "Enter passphrase\n"
-msgstr "Введите пароль\n"
+msgstr "Введите фразу-пароль\n"
msgid "cancelled by user\n"
msgstr "прервано пользователем\n"
msgid ""
"You need a passphrase to unlock the secret key for\n"
"user: \"%s\"\n"
-msgstr "Необходим пароль для доступа к закрытому ключу пользователя: \"%s\"\n"
+msgstr ""
+"Необходима фраза-пароль для доступа к закрытому ключу пользователя: \"%s\"\n"
#, c-format
msgid "%u-bit %s key, ID %s, created %s"
"его размер! Рекомендуется размер около 240x288.\n"
msgid "Enter JPEG filename for photo ID: "
-msgstr "Введите имя JPEG файла для фотоидентификатора: "
+msgstr "Введите имя файла JPEG для фотоидентификатора: "
#, c-format
msgid "unable to open JPEG file `%s': %s\n"
-msgstr "Ð\9dе могу открыть файл JPEG `%s': %s\n"
+msgstr "не могу открыть файл JPEG `%s': %s\n"
#, c-format
msgid "This JPEG is really large (%d bytes) !\n"
#, c-format
msgid "(Probably you want to select %d here)\n"
-msgstr "(Ð\92озможно, Ð\92Ñ\8b Ñ\85оÑ\82иÑ\82е здеÑ\81Ñ\8c вÑ\8bбÑ\80аÑ\82Ñ\8c %d)\n"
+msgstr "(СкоÑ\80ее вÑ\81его, Ð\92Ñ\8b здеÑ\81Ñ\8c вÑ\8bбеÑ\80еÑ\82е %d)\n"
msgid "Enter an optional description; end it with an empty line:\n"
msgstr "Введите необязательное пояснение; закончите пустой строкой:\n"
#, c-format
msgid "assuming bad signature from key %s due to an unknown critical bit\n"
msgstr ""
-"предполагается плохая подпись ключа %s из-за неизвестного критического бита\n"
+"подпись ключа %s считается плохой из-за неизвестного критического бита\n"
#, c-format
msgid "key %s: no subkey for subkey revocation signature\n"
#, c-format
msgid "key %s occurs more than once in the trustdb\n"
-msgstr "клÑ\8eÑ\87 %s вÑ\81Ñ\82Ñ\80еÑ\87аеÑ\82Ñ\81Ñ\8f более одного Ñ\80аза в Ñ\82аблиÑ\86е довеÑ\80иÑ\8f\n"
+msgstr "клÑ\8eÑ\87 %s вÑ\81Ñ\82Ñ\80еÑ\87аеÑ\82Ñ\81Ñ\8f в Ñ\82аблиÑ\86е довеÑ\80иÑ\8f более одного Ñ\80аза\n"
#, c-format
msgid "key %s: no public key for trusted key - skipped\n"
# check it
#, c-format
msgid "%d marginal(s) needed, %d complete(s) needed, %s trust model\n"
-msgstr ""
-"%d ограниченных необходимо, %d выполненных необходимо, модель доверия %s\n"
+msgstr "требуется %d с ограниченным доверием, %d с полным, модель доверия %s\n"
#, c-format
msgid ""
"depth: %d valid: %3d signed: %3d trust: %d-, %dq, %dn, %dm, %df, %du\n"
msgstr ""
-"глÑ\83бина: %d коÑ\80Ñ\80екÑ\82нÑ\8bÑ\85: %3d подпиÑ\81аннÑ\8bÑ\85: %3d довеÑ\80иÑ\8f: %d-, %dq, %dn, %dm, "
+"глÑ\83бина: %d веÑ\80нÑ\8bÑ\85: %3d подпиÑ\81аннÑ\8bÑ\85: %3d довеÑ\80ие: %d-, %dq, %dn, %dm, "
"%df, %du\n"
#, c-format
#, c-format
msgid "input line %u too long or missing LF\n"
-msgstr "входная строка %u слишком длинная или пропущен перевод строки\n"
+msgstr "слишком длинная входная строка %u или пропущен перевод строки\n"
#, c-format
msgid "can't open fd %d: %s\n"
#, c-format
msgid "can't access %s - invalid OpenPGP card?\n"
-msgstr "нет доступа %s - неработоспособная карта OpenPGP?\n"
+msgstr "нет доступа %s - непригодная карта OpenPGP?\n"
msgid "||Please enter your PIN at the reader's pinpad"
msgstr "||Введите PIN на клавиатуре считывателя"
"S/N %s, ID 0x%08lX,\n"
"created %s, expires %s.\n"
msgstr ""
-"Введите фразу-пароль для доступа к закрытому ключу к сертификату X.509:\"%s"
-"\"\n"
+"Введите фразу-пароль для доступа к закрытому ключу сертификата X.509:\n"
+"\"%s\"\n"
"S/N %s, ID 0x%08lX,\n"
"создан %s, истекает %s.\n"
msgstr "|N|установить минимальную длину фразы-пароля равной N"
msgid "|N|require at least N non-alpha characters for a new passphrase"
-msgstr "|n|Ñ\82Ñ\80ебоваÑ\82Ñ\8c не менее N неалÑ\84авиÑ\82нÑ\8bÑ\85 Ñ\81имволов длÑ\8f новой Ñ\84Ñ\80азÑ\8b-паÑ\80олÑ\8f"
+msgstr "|n|Ñ\82Ñ\80ебоваÑ\82Ñ\8c длÑ\8f новой Ñ\84Ñ\80азÑ\8b-паÑ\80олÑ\8f не менее N неалÑ\84авиÑ\82нÑ\8bÑ\85 Ñ\81имволов"
msgid "|FILE|check new passphrases against pattern in FILE"
msgstr "|FILE|проверять новую фразу-пароль по файлу образцов FILE"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Skutoène chcete revokova» vybrané kµúèe? "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "nesprávne heslo"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "nepodporované"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "chyba pri vytváraní hesla: %s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgid "[User ID not found]"
msgstr "[User id not found]"
+#, fuzzy, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "kµúè %08lX: tajný kµúè bez verejného kµúèa - preskoèené\n"
+
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr ""
msgid "using subkey %s instead of primary key %s\n"
msgstr "pou¾ívam sekundárny kµúè %08lX namiesto primárneho kµúèa %08lX\n"
-#, fuzzy, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "kµúè %08lX: tajný kµúè bez verejného kµúèa - preskoèené\n"
-
#, fuzzy
msgid "make a signature"
msgstr "vytvori» podpis oddelený od dokumentu"
msgstr "neplatný argument"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "neplatný spôsob reprezentácie v ASCII"
+
+#, fuzzy
msgid "invalid command"
msgstr "konfliktné príkazy\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "neplatný parameter pre import\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "neplatný paket"
-#~ msgid "invalid armor"
-#~ msgstr "neplatný spôsob reprezentácie v ASCII"
-
#~ msgid "no such user id"
#~ msgstr "u¾ívateµ s týmto id neexistuje"
#~ msgid "file create error"
#~ msgstr "chyba pri vytváraní súboru"
-#~ msgid "invalid passphrase"
-#~ msgstr "nesprávne heslo"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "algoritmus verejného kµúèa nie je implementovaný"
msgid "|pinentry-label|_Cancel"
msgstr "_Avbryt"
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "_OK"
+
msgid "|pinentry-label|PIN:"
msgstr "PIN-kod:"
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "_Avbryt"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Vill du verkligen spärra de valda undernycklarna? (j/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Ange ny lösenfras"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr ""
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "tillåt inte återanvändning av gamla lösenfraser"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "|FIL|skriv även miljöinställningar till FIL"
msgstr "[Användaridentiteten hittades inte]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "nyckel %s: hemlig nyckel utan publik nyckel - hoppades över\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "hämtade \"%s\" automatiskt via %s\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "använder undernyckeln %s istället för primära nyckeln %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "nyckel %s: hemlig nyckel utan publik nyckel - hoppades över\n"
-
msgid "make a signature"
msgstr "skapa en signatur"
msgid "missing argument"
msgstr "argument saknas"
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "ogiltigt värde\n"
+
msgid "invalid command"
msgstr "ogiltigt kommando"
msgid "missing argument for option \"%.50s\"\n"
msgstr "argument för flaggan \"%.50s\" saknas\n"
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "argument för flaggan \"%.50s\" saknas\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "flaggan \"%.50s\" förväntar sig inte ett argument\n"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr ""
+"Seçili yardımcı anahtarları gerçekten yürürlükten kaldırmak istiyor musunuz? "
+"(e/H ya da y/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Yeni anahtar parolasını giriniz"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr ""
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "eski anahtar parolalarının yeniden kullanılmasına izin vermez"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "|DOSYA|ortam ayarlarını ayrıca DOSYAya da yazar"
msgstr "[Kullanıcı kimliği yok]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "anahtar %s: genel anahtarsız gizli anahtar - atlandı\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "`%s' %s üzerinden özdevinimli olarak alındı\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "yardımcı anahtar %s, asıl anahtar %s yerine kullanılıyor\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "anahtar %s: genel anahtarsız gizli anahtar - atlandı\n"
-
msgid "make a signature"
msgstr "bir imza yapar"
msgid "missing argument"
msgstr "eksik değiştirge"
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "değer hatalı\n"
+
msgid "invalid command"
msgstr "geçersiz komut"
msgid "missing argument for option \"%.50s\"\n"
msgstr "\"%.50s\" seçeneği için değiştirge eksik\n"
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "\"%.50s\" seçeneği için değiştirge eksik\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "\"%.50s\" seçeneğinin değiştirge ihtiyacı yok\n"
msgid "|pinentry-label|_Cancel"
msgstr "_Скасувати"
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "_Гаразд"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "_Гаразд"
+
msgid "|pinentry-label|PIN:"
msgstr "Пінкод:"
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "_Скасувати"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "Ви справді бажаєте відкликати позначені підключі? (y/N або т/Н) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "Enter new passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "Вкажіть новий пароль"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "увімкнути підтримку putty"
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "не дозволяти повторне використання старих паролів"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "записати параметри середовища і до файла"
msgstr "[Ідентифікатор не знайдено]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "ключ %s: закритий ключ без відкритого ключа — пропущено\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "автоматично отримано «%s» за допомогою %s\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "використовуємо підключ %s замість основного ключа %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "ключ %s: закритий ключ без відкритого ключа — пропущено\n"
-
msgid "make a signature"
msgstr "створити підпис"
msgid "missing argument"
msgstr "не вистачає аргументу"
+#, fuzzy
+#| msgid "invalid value\n"
+msgid "invalid argument"
+msgstr "некоректне значення\n"
+
msgid "invalid command"
msgstr "некоректна команда"
msgid "missing argument for option \"%.50s\"\n"
msgstr "не вказано аргументу до параметра «%.50s»\n"
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "не вказано аргументу до параметра «%.50s»\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "для параметра «%.50s» аргументи не потрібно вказувати\n"
msgid "|pinentry-label|_Cancel"
msgstr ""
+msgid "|pinentry-label|_Yes"
+msgstr ""
+
+msgid "|pinentry-label|_No"
+msgstr ""
+
msgid "|pinentry-label|PIN:"
msgstr ""
+msgid "|pinentry-label|_Save in password manager"
+msgstr ""
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "您真的要吊销选定的子钥吗?(y/N)"
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "无效的密码"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
#, fuzzy
msgid "enable putty support"
msgstr "未被支持"
+#, fuzzy
+msgid "disallow the use of an external password cache"
+msgstr "生成密码的时候发生错误:%s\n"
+
msgid "|FILE|write environment settings also to FILE"
msgstr ""
msgstr "[找不到用户标识]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "密钥 %s:无相应公钥的私钥――已跳过\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "自动获取‘%s’,通过 %s\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "使用子钥 %s 而非主钥 %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "密钥 %s:无相应公钥的私钥――已跳过\n"
-
#, fuzzy
msgid "make a signature"
msgstr "|[文件名]|生成一份签名"
msgstr "无效的参数"
#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "无效的 ASCII 封装格式"
+
+#, fuzzy
msgid "invalid command"
msgstr "仅供管理员使用的命令\n"
msgid "missing argument for option \"%.50s\"\n"
msgstr ""
+#, fuzzy, c-format
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "无效的列表选项\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr ""
#~ msgid "invalid packet"
#~ msgstr "无效包"
-#~ msgid "invalid armor"
-#~ msgstr "无效的 ASCII 封装格式"
-
#~ msgid "no such user id"
#~ msgstr "没有这个用户标识"
#~ msgid "file create error"
#~ msgstr "文件建立错误"
-#~ msgid "invalid passphrase"
-#~ msgstr "无效的密码"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "未实现的公钥算法"
msgid "|pinentry-label|_Cancel"
msgstr "|pinentry-label|取消 (_C)"
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_Yes"
+msgstr "|pinentry-label|_OK"
+
+#, fuzzy
+#| msgid "|pinentry-label|_OK"
+msgid "|pinentry-label|_No"
+msgstr "|pinentry-label|_OK"
+
msgid "|pinentry-label|PIN:"
msgstr "|pinentry-label|個人識別碼 (PIN):"
+#, fuzzy
+#| msgid "|pinentry-label|_Cancel"
+msgid "|pinentry-label|_Save in password manager"
+msgstr "|pinentry-label|取消 (_C)"
+
+#, fuzzy
+#| msgid "Do you really want to revoke the selected subkeys? (y/N) "
+msgid "Do you really want to make your passphrase visible on the screen?"
+msgstr "你真的想要撤銷所選的子鑰嗎? (y/N) "
+
+msgid "|pinentry-tt|Make passphrase visible"
+msgstr ""
+
+#, fuzzy
+#| msgid "invalid passphrase"
+msgid "|pinentry-tt|Hide passphrase"
+msgstr "無效的密語"
+
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
msgid "Quality:"
msgid "enable putty support"
msgstr "啟用 putty 支援"
+#, fuzzy
+#| msgid "do not allow the reuse of old passphrases"
+msgid "disallow the use of an external password cache"
+msgstr "不允許重複使用舊密語"
+
msgid "|FILE|write environment settings also to FILE"
msgstr "|檔案|將環境設定也寫至指定檔案"
msgstr "[找不到使用者 ID]"
#, c-format
+msgid "key %s: secret key without public key - skipped\n"
+msgstr "金鑰 %s: 祇有私鑰而沒有公鑰 - 已跳過\n"
+
+#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "已自動取回 `%s' (經由 %s )\n"
msgid "using subkey %s instead of primary key %s\n"
msgstr "使用子鑰 %s 來替換主鑰 %s\n"
-#, c-format
-msgid "key %s: secret key without public key - skipped\n"
-msgstr "金鑰 %s: 祇有私鑰而沒有公鑰 - 已跳過\n"
-
msgid "make a signature"
msgstr "建立簽章"
msgid "missing argument"
msgstr "無效的引數"
+#, fuzzy
+#| msgid "invalid armor"
+msgid "invalid argument"
+msgstr "無效的封裝"
+
msgid "invalid command"
msgstr "無效的指令"
msgid "missing argument for option \"%.50s\"\n"
msgstr "\"%.50s\" 選項遺失了引數\n"
+#, fuzzy, c-format
+#| msgid "missing argument for option \"%.50s\"\n"
+msgid "invalid argument for option \"%.50s\"\n"
+msgstr "\"%.50s\" 選項遺失了引數\n"
+
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "\"%.50s\" 選項沒料到會有引數\n"
#~ msgid "invalid packet"
#~ msgstr "無效的封包"
-#~ msgid "invalid armor"
-#~ msgstr "無效的封裝"
-
#~ msgid "no such user id"
#~ msgstr "沒有這個使用者 ID"
#~ msgid "file create error"
#~ msgstr "檔案建立錯誤"
-#~ msgid "invalid passphrase"
-#~ msgstr "無效的密語"
-
#~ msgid "unimplemented pubkey algorithm"
#~ msgstr "尚未實做的公鑰演算法"
long err;
err = pcsc_control (reader_table[slot].pcsc.card, ioctl_code,
- cntlbuf, len, buffer, *buflen, buflen);
+ cntlbuf, len, buffer, buflen? *buflen:0, buflen);
if (err)
{
log_error ("pcsc_control failed: %s (0x%lx)\n",
full_len = len;
- n = *buflen < len ? *buflen : len;
+ if (buflen)
+ n = *buflen < len ? *buflen : len;
+ else
+ n = 0;
if ((i=readn (slotp->pcsc.rsp_fd, buffer, n, &len)) || len != n)
{
log_error ("error receiving PC/SC CONTROL response: %s\n",
i? strerror (errno) : "premature EOF");
goto command_failed;
}
- *buflen = n;
+ if (buflen)
+ *buflen = n;
full_len -= len;
if (full_len)
long err;
int slot;
char *list = NULL;
- pcsc_dword_t nreader, listlen;
+ char *rdrname = NULL;
+ pcsc_dword_t nreader;
char *p;
slot = new_reader_slot ();
return -1;
}
- listlen = nreader;
p = list;
while (nreader)
{
if (!*p && !p[1])
break;
- if (*p)
- log_info ("detected reader `%s'\n", p);
+ log_info ("detected reader `%s'\n", p);
if (nreader < (strlen (p)+1))
{
log_error ("invalid response from pcsc_list_readers\n");
break;
}
+ if (!rdrname && portstr && !strncmp (p, portstr, strlen (portstr)))
+ rdrname = p;
nreader -= strlen (p)+1;
p += strlen (p) + 1;
}
- reader_table[slot].rdrname = xtrymalloc (strlen (portstr? portstr : list)+1);
+ if (!rdrname)
+ rdrname = list;
+
+ reader_table[slot].rdrname = xtrystrdup (rdrname);
if (!reader_table[slot].rdrname)
{
log_error ("error allocating memory for reader name\n");
unlock_slot (slot);
return -1;
}
- strcpy (reader_table[slot].rdrname, portstr? portstr : list);
xfree (list);
list = NULL;
apdu[apdulen++] = ins;
apdu[apdulen++] = p0;
apdu[apdulen++] = p1;
- apdu[apdulen++] = 0; /* Z byte: Extended length marker. */
- if (lc >= 0)
+ if (lc > 0)
{
+ apdu[apdulen++] = 0; /* Z byte: Extended length marker. */
apdu[apdulen++] = ((lc >> 8) & 0xff);
apdu[apdulen++] = (lc & 0xff);
memcpy (apdu+apdulen, data, lc);
}
if (le != -1)
{
+ if (lc <= 0)
+ apdu[apdulen++] = 0; /* Z byte: Extended length marker. */
apdu[apdulen++] = ((le >> 8) & 0xff);
apdu[apdulen++] = (le & 0xff);
}
size_t serialnolen; /* Length in octets of serialnumber. */
const char *apptype;
unsigned int card_version;
- int did_chv1;
- int force_chv1; /* True if the card does not cache CHV1. */
- int did_chv2;
- int did_chv3;
+ unsigned int did_chv1:1;
+ unsigned int force_chv1:1; /* True if the card does not cache CHV1. */
+ unsigned int did_chv2:1;
+ unsigned int did_chv3:1;
struct app_local_s *app_local; /* Local to the application. */
struct {
void (*deinit) (app_t app);
#define DRVNAME "ccid-driver: "
+/* Max length of buffer with out CCID message header of 10-byte
+ Sending: 547 for RSA-4096 key import
+ APDU size = 540 (24+4+256+256)
+ commnd + lc + le = 4 + 3 + 0
+ Sending: write data object of cardholder certificate
+ APDU size = 2048
+ commnd + lc + le = 4 + 3 + 0
+ Receiving: 2048 for cardholder certificate
+*/
+#define CCID_MAX_BUF (2048+7+10)
/* Depending on how this source is used we either define our error
output to go to stderr or to the jnlib based logging functions. We
unsigned char t1_nr;
unsigned char nonnull_nad;
int max_ifsd;
- int ifsd;
+ int max_ccid_msglen;
int ifsc;
unsigned char apdu_level:2; /* Reader supports short APDU level
exchange. With a value of 2 short
handle->nonnull_nad = 0;
handle->auto_ifsd = 0;
handle->max_ifsd = 32;
- handle->ifsd = 0;
+ handle->max_ccid_msglen = CCID_MAX_BUF;
handle->has_pinpad = 0;
handle->apdu_level = 0;
switch (handle->id_product)
handle->nonnull_nad = 0;
handle->auto_ifsd = 0;
handle->max_ifsd = 32;
- handle->ifsd = 0;
handle->has_pinpad = 0;
handle->apdu_level = 0;
handle->auto_voltage = 0;
us = convert_le_u32(buf+44);
DEBUGOUT_1 (" dwMaxCCIDMsgLen %5u\n", us);
+ handle->max_ccid_msglen = us;
DEBUGOUT ( " bClassGetResponse ");
if (buf[48] == 0xff)
/* Helper for ccid_transceive used for APDU level exchanges. */
static int
ccid_transceive_apdu_level (ccid_driver_t handle,
- const unsigned char *apdu_buf, size_t apdu_buflen,
+ const unsigned char *apdu_buf, size_t apdu_len,
unsigned char *resp, size_t maxresplen,
size_t *nresp)
{
int rc;
- unsigned char send_buffer[10+261+300], recv_buffer[10+261+300];
- const unsigned char *apdu;
- size_t apdulen;
- unsigned char *msg;
+ unsigned char msg[CCID_MAX_BUF];
+ const unsigned char *apdu_p;
+ size_t apdu_part_len;
size_t msglen;
unsigned char seqno;
int bwi = 4;
+ unsigned char chain = 0;
- msg = send_buffer;
+ if (apdu_len == 0 || apdu_len > sizeof (msg) - 10)
+ return CCID_DRIVER_ERR_INV_VALUE; /* Invalid length. */
- apdu = apdu_buf;
- apdulen = apdu_buflen;
- assert (apdulen);
+ apdu_p = apdu_buf;
+ while (1)
+ {
+ apdu_part_len = apdu_len;
+ if (apdu_part_len > handle->max_ccid_msglen - 10)
+ {
+ apdu_part_len = handle->max_ccid_msglen - 10;
+ chain |= 0x01;
+ }
- /* The maximum length for a short APDU T=1 block is 261. For an
- extended APDU T=1 block the maximum length 65544; however
- extended APDU exchange level is not fully supported yet. */
- if (apdulen > sizeof (send_buffer) - 10)
- return CCID_DRIVER_ERR_INV_VALUE; /* Invalid length. */
+ msg[0] = PC_to_RDR_XfrBlock;
+ msg[5] = 0; /* slot */
+ msg[6] = seqno = handle->seqno++;
+ msg[7] = bwi;
+ msg[8] = chain;
+ msg[9] = 0;
+ memcpy (msg+10, apdu_p, apdu_part_len);
+ set_msg_len (msg, apdu_part_len);
+ msglen = 10 + apdu_part_len;
- msg[0] = PC_to_RDR_XfrBlock;
- msg[5] = 0; /* slot */
- msg[6] = seqno = handle->seqno++;
- msg[7] = bwi; /* bBWI */
- msg[8] = 0; /* RFU */
- msg[9] = 0; /* RFU */
- memcpy (msg+10, apdu, apdulen);
- set_msg_len (msg, apdulen);
- msglen = 10 + apdulen;
+ rc = bulk_out (handle, msg, msglen, 0);
+ if (rc)
+ return rc;
- rc = bulk_out (handle, msg, msglen, 0);
- if (rc)
- return rc;
+ apdu_p += apdu_part_len;
+ apdu_len -= apdu_part_len;
- msg = recv_buffer;
- rc = bulk_in (handle, msg, sizeof recv_buffer, &msglen,
- RDR_to_PC_DataBlock, seqno, 5000, 0);
- if (rc)
- return rc;
+ rc = bulk_in (handle, msg, sizeof msg, &msglen,
+ RDR_to_PC_DataBlock, seqno, 5000, 0);
+ if (rc)
+ return rc;
+
+ if (!(chain & 0x01))
+ break;
- if (msg[9] == 1)
+ chain = 0x02;
+ }
+
+ apdu_len = 0;
+ while (1)
{
- size_t total_msglen = msglen;
+ apdu_part_len = msglen - 10;
+ if (resp && apdu_len + apdu_part_len <= maxresplen)
+ memcpy (resp + apdu_len, msg+10, apdu_part_len);
+ apdu_len += apdu_part_len;
- while (1)
- {
- unsigned char status;
+ if (!(msg[9] & 0x01))
+ break;
- msg = recv_buffer + total_msglen;
+ msg[0] = PC_to_RDR_XfrBlock;
+ msg[5] = 0; /* slot */
+ msg[6] = seqno = handle->seqno++;
+ msg[7] = bwi;
+ msg[8] = 0x10; /* Request next data block */
+ msg[9] = 0;
+ set_msg_len (msg, 0);
+ msglen = 10;
- msg[0] = PC_to_RDR_XfrBlock;
- msg[5] = 0; /* slot */
- msg[6] = seqno = handle->seqno++;
- msg[7] = bwi; /* bBWI */
- msg[8] = 0x10; /* Request next data block */
- msg[9] = 0;
- set_msg_len (msg, 0);
- msglen = 10;
-
- rc = bulk_out (handle, msg, msglen, 0);
- if (rc)
- return rc;
-
- rc = bulk_in (handle, msg, sizeof recv_buffer - total_msglen, &msglen,
- RDR_to_PC_DataBlock, seqno, 5000, 0);
- if (rc)
- return rc;
- status = msg[9];
- memmove (msg, msg+10, msglen - 10);
- total_msglen += msglen - 10;
- if (total_msglen >= sizeof recv_buffer)
- return CCID_DRIVER_ERR_OUT_OF_CORE;
-
- if (status == 0x02)
- break;
- }
+ rc = bulk_out (handle, msg, msglen, 0);
+ if (rc)
+ return rc;
- apdu = recv_buffer + 10;
- apdulen = total_msglen - 10;
- }
- else
- {
- apdu = msg + 10;
- apdulen = msglen - 10;
+ rc = bulk_in (handle, msg, sizeof msg, &msglen,
+ RDR_to_PC_DataBlock, seqno, 5000, 0);
+ if (rc)
+ return rc;
}
if (resp)
{
- if (apdulen > maxresplen)
+ if (apdu_len > maxresplen)
{
DEBUGOUT_2 ("provided buffer too short for received data "
"(%u/%u)\n",
- (unsigned int)apdulen, (unsigned int)maxresplen);
+ (unsigned int)apdu_len, (unsigned int)maxresplen);
return CCID_DRIVER_ERR_INV_VALUE;
}
- memcpy (resp, apdu, apdulen);
- *nresp = apdulen;
+ *nresp = apdu_len;
}
return 0;
handle_open (unsigned char *argbuf, size_t arglen)
{
long err;
- const char * portstr;
+ const char *portstr;
char *list = NULL;
+ char *rdrname = NULL;
pcsc_dword_t nreader, atrlen;
char *p;
pcsc_dword_t card_state, card_protocol;
/* Make sure there is only the port string */
if (arglen != strlen ((char*)argbuf))
bad_request ("OPEN");
- portstr = (char*)argbuf;
+ if (arglen == 0)
+ portstr = NULL;
+ else
+ portstr = (char*)argbuf;
if (driver_is_open)
{
fprintf (stderr, PGM": invalid response from pcsc_list_readers\n");
break;
}
+ if (!rdrname && portstr && !strncmp (p, portstr, strlen (portstr)))
+ rdrname = p;
nreader -= strlen (p)+1;
p += strlen (p) + 1;
}
- current_rdrname = malloc (strlen (portstr && *portstr? portstr:list)+1);
+ if (!rdrname)
+ rdrname = list;
+
+ current_rdrname = strdup (rdrname);
if (!current_rdrname)
{
fprintf (stderr, PGM": error allocating memory for reader name\n");
exit (1);
}
- strcpy (current_rdrname, portstr && *portstr? portstr:list);
free (list);
err = pcsc_connect (pcsc_context,
if (err)
return err;
- rc = gcry_md_open (&md, GCRY_MD_SHA1, 0);
+ rc = gcry_md_open (&md, GCRY_MD_SHA256, 0);
if (rc)
{
log_error ("md_open failed: %s\n", gpg_strerror (rc));
/* Note: If you change this default cipher algorithm , please
remember to update the Gpgconflist entry as well. */
- opt.def_cipher_algoid = "3DES"; /*des-EDE3-CBC*/
+ opt.def_cipher_algoid = "AES";
opt.homedir = default_homedir ();
#ifndef HAVE_W32_SYSTEM
printf ("prefer-system-dirmngr:%lu:\n", GC_OPT_FLAG_NONE);
#endif
- printf ("cipher-algo:%lu:\"3DES:\n", GC_OPT_FLAG_DEFAULT);
+ printf ("cipher-algo:%lu:\"AES:\n", GC_OPT_FLAG_DEFAULT);
printf ("p12-charset:%lu:\n", GC_OPT_FLAG_DEFAULT);
printf ("default-key:%lu:\n", GC_OPT_FLAG_DEFAULT);
printf ("encrypt-to:%lu:\n", GC_OPT_FLAG_DEFAULT);
percent ARGS
percent+ ARGS
Escape the args using the percent style. Tabs, formfeeds,
- linefeeds and carriage returns are also escaped.
- "percent+" also maps spaces to plus characters.
+ linefeeds, carriage return, and the plus sign are also
+ escaped. "percent+" also maps spaces to plus characters.
errcode ARG
Assuming ARG is an integer, return the gpg-error code.
else if ( (s - name) == 7 && !strncmp (name, "percent", 7))
{
s++;
- result = percent_escape (s, "\t\r\n\f\v");
+ result = percent_escape (s, "+\t\r\n\f\v");
}
else if ( (s - name) == 8 && !strncmp (name, "percent+", 8))
{
s++;
- result = percent_escape (s, "\t\r\n\f\v");
+ result = percent_escape (s, "+\t\r\n\f\v");
for (p=result; *p; p++)
if (*p == ' ')
*p = '+';
{ "ignore-cache-for-signing", GC_OPT_FLAG_RUNTIME,
GC_LEVEL_BASIC, "gnupg", "do not use the PIN cache when signing",
GC_ARG_TYPE_NONE, GC_BACKEND_GPG_AGENT },
+ { "no-allow-external-cache", GC_OPT_FLAG_RUNTIME,
+ GC_LEVEL_BASIC, "gnupg", "disallow the use of an external password cache",
+ GC_ARG_TYPE_NONE, GC_BACKEND_GPG_AGENT },
{ "no-allow-mark-trusted", GC_OPT_FLAG_RUNTIME,
GC_LEVEL_ADVANCED, "gnupg", "disallow clients to mark keys as \"trusted\"",
GC_ARG_TYPE_NONE, GC_BACKEND_GPG_AGENT },
if (err)
goto leave;
n++;
- nbytes = (n < hdr->nrecords)? RECORDSIZE : (hdr->size % RECORDSIZE);
+ if (n < hdr->nrecords || (hdr->size && !(hdr->size % RECORDSIZE)))
+ nbytes = RECORDSIZE;
+ else
+ nbytes = (hdr->size % RECORDSIZE);
+
nwritten = es_fwrite (record, 1, nbytes, outfp);
if (nwritten != nbytes)
{
s++; /* Move over the colon. */
for (;;)
{
- if (!*s)
+ while (!*s)
{
if (!hdr->next || !hdr->next->cont)
- break;
+ return tok; /* Ready. */
+
+ /* Next item is a header continuation line. */
hdr = hdr->next;
s = hdr->line;
}
invalid = 0;
for (s++;; s++)
{
- if (!*s)
+ while (!*s)
{
if (!hdr->next || !hdr->next->cont)
- break;
+ goto oparen_out;
+ /* Next item is a header continuation line. */
hdr = hdr->next;
s = hdr->line;
}
else if (*s == '\"')
in_quote = 1;
}
+ oparen_out:
if (!*s)
; /* Actually this is an error, but we don't care about it. */
else
if (*s2 || !hdr->next || !hdr->next->cont)
break;
+ /* Next item is a header continuation line. */
hdr = hdr->next;
s = hdr->line;
}
s++;
}
}
-
- return tok;
+ /*NOTREACHED*/
failure:
{