diff --git a/NEWS b/NEWS index 216d8728a..4fa20b2f5 100644 --- a/NEWS +++ b/NEWS @@ -47,6 +47,9 @@ Noteworthy changes in version 2.3.0 (unreleased) * agent: Improve robustness of the shutdown pending state. [Git#7ffedfab89] + See-also: gnupg-announce/2017q4/000417.html + + Changes also found in 2.2.2: * gpg: Avoid duplicate key imports by concurrently running gpg @@ -88,6 +91,8 @@ Noteworthy changes in version 2.3.0 (unreleased) * Add configure option --enable-werror. [#2423] + See-also: gnupg-announce/2017q4/000416.html + Changes also found in 2.2.1: * gpg: Fix formatting of the user id in batch mode key generation diff --git a/common/homedir.c b/common/homedir.c index a598900b9..65cf50fe7 100644 --- a/common/homedir.c +++ b/common/homedir.c @@ -554,7 +554,7 @@ _gnupg_socketdir_internal (int skip_checks, unsigned *r_info) }; int i; struct stat sb; - char prefix[13 + 1 + 20 + 6 + 1]; + char prefix[19 + 1 + 20 + 6 + 1]; const char *s; char *name = NULL; diff --git a/common/logging.h b/common/logging.h index 5a82be4a0..a20b8f895 100644 --- a/common/logging.h +++ b/common/logging.h @@ -150,4 +150,31 @@ void log_printhex (const void *buffer, size_t length, const char *text); void log_clock (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2); #endif /* Use gnupg internal logging functions. */ + +/* Some handy assertion macros which don't abort. */ + +#define return_if_fail(expr) do { \ + if (!(expr)) { \ + log_debug ("%s:%d: assertion '%s' failed\n", \ + __FILE__, __LINE__, #expr ); \ + return; \ + } } while (0) +#define return_null_if_fail(expr) do { \ + if (!(expr)) { \ + log_debug ("%s:%d: assertion '%s' failed\n", \ + __FILE__, __LINE__, #expr ); \ + return NULL; \ + } } while (0) +#define return_val_if_fail(expr,val) do { \ + if (!(expr)) { \ + log_debug ("%s:%d: assertion '%s' failed\n", \ + __FILE__, __LINE__, #expr ); \ + return (val); \ + } } while (0) +#define never_reached() do { \ + log_debug ("%s:%d: oops - should never get here\n", \ + __FILE__, __LINE__ ); \ + } while (0) + + #endif /*GNUPG_COMMON_LOGGING_H*/ diff --git a/configure.ac b/configure.ac index 311979ab8..549745c4c 100644 --- a/configure.ac +++ b/configure.ac @@ -59,7 +59,7 @@ NEED_LIBGCRYPT_API=1 NEED_LIBGCRYPT_VERSION=1.7.0 NEED_LIBASSUAN_API=2 -NEED_LIBASSUAN_VERSION=2.4.3 +NEED_LIBASSUAN_VERSION=2.5.0 NEED_KSBA_API=1 NEED_KSBA_VERSION=1.3.4 diff --git a/doc/gpg.texi b/doc/gpg.texi index 83b234e47..3a2c0ff7f 100644 --- a/doc/gpg.texi +++ b/doc/gpg.texi @@ -622,7 +622,9 @@ This section explains the main commands for key management. @table @gnupgtabopt @item --quick-generate-key @var{user-id} [@var{algo} [@var{usage} [@var{expire}]]] +@itemx --quick-gen-key @opindex quick-generate-key +@opindex quick-gen-key This is a simple command to generate a standard key with one user id. In contrast to @option{--generate-key} the key is generated directly without the need to answer a bunch of prompts. Unless the option @@ -3130,8 +3132,9 @@ will be read from file descriptor @var{n}. If you use 0 for @var{n}, the passphrase will be read from STDIN. This can only be used if only one passphrase is supplied. -Note that this passphrase is only used if the option @option{--batch} -has also been given. This is different from GnuPG version 1.x. +Note that since Version 2.0 this passphrase is only used if the +option @option{--batch} has also been given. Since Version 2.1 +the @option{--pinentry-mode} also needs to be set to @code{loopback}. @item --passphrase-file @var{file} @opindex passphrase-file @@ -3140,8 +3143,10 @@ be read from file @var{file}. This can only be used if only one passphrase is supplied. Obviously, a passphrase stored in a file is of questionable security if other users can read this file. Don't use this option if you can avoid it. -Note that this passphrase is only used if the option @option{--batch} -has also been given. This is different from GnuPG version 1.x. + +Note that since Version 2.0 this passphrase is only used if the +option @option{--batch} has also been given. Since Version 2.1 +the @option{--pinentry-mode} also needs to be set to @code{loopback}. @item --passphrase @var{string} @opindex passphrase @@ -3149,8 +3154,10 @@ Use @var{string} as the passphrase. This can only be used if only one passphrase is supplied. Obviously, this is of very questionable security on a multi-user system. Don't use this option if you can avoid it. -Note that this passphrase is only used if the option @option{--batch} -has also been given. This is different from GnuPG version 1.x. + +Note that since Version 2.0 this passphrase is only used if the +option @option{--batch} has also been given. Since Version 2.1 +the @option{--pinentry-mode} also needs to be set to @code{loopback}. @item --pinentry-mode @var{mode} @opindex pinentry-mode diff --git a/doc/tools.texi b/doc/tools.texi index 5104beaa5..9301334c7 100644 --- a/doc/tools.texi +++ b/doc/tools.texi @@ -407,6 +407,14 @@ changing. This means that the changes will take effect at run-time, as far as this is possible. Otherwise, they will take effect at the next start of the respective backend programs. + +@item --status-fd @var{n} +@opindex status-fd +Write special status strings to the file descriptor @var{n}. This +program returns the status messages SUCCESS or FAILURE which are +helpful when the caller uses a double fork approach and can't easily +get the return code of the process. + @manpause @end table diff --git a/doc/wks.texi b/doc/wks.texi index 55dfee6d5..131a4c2c2 100644 --- a/doc/wks.texi +++ b/doc/wks.texi @@ -174,18 +174,23 @@ Display a brief help page and exit. .br .B gpg-wks-server .RI [ options ] +.B \-\-check-key +.I user-id +.br +.B gpg-wks-server +.RI [ options ] .B \-\-install-key .I file .br .B gpg-wks-server .RI [ options ] .B \-\-remove-key -.I mailaddr +.I user-id .br .B gpg-wks-server .RI [ options ] .B \-\-revoke-key -.I mailaddr +.I user-id @end ifset @mansect description @@ -208,8 +213,22 @@ The command @option{--list-domains} prints all configured domains. Further it creates missing directories for the configuration and prints warnings pertaining to problems in the configuration. -The commands @option{--install-key}, @option{--remove-key}, and -@option{--revoke-key} are not yet functional. +The command @option{--check-key} (or just @option{--check}) checks +whether a key with the given user-id is installed. The process return +success in this case; to also print a diagnostic, use option +@option{-v}. If the key is not installed a diagnostics is printed and +the process returns failure; to suppress the diagnostic, use option +@option{-q}. More than one user-id can be given; see also option +@option{with-file}. + +The command @option{--remove-key} uninstalls a key from the WKD. The +process return success in this case; to also print a diagnostic, use +option @option{-v}. If the key is not installed a diagnostics is +printed and the process returns failure; to suppress the diagnostic, +use option @option{-q}. + +The commands @option{--install-key} and @option{--revoke-key} are not +yet functional. @mansect options @@ -237,6 +256,16 @@ Requires installation of that command. Write the created mail also to @var{file}. Note that the value @code{-} for @var{file} would write it to stdout. +@item --with-dir +@opindex with-dir +Also print the directory name for each domain listed by command +@option{--list-domains}. + +@item --with-file +@opindex with-file +With command @option{--check-key} print for each user-id, the address, +'i' for installed key or 'n' for not installed key, and the filename. + @item --verbose @opindex verbose Enable extra informational output. diff --git a/g10/keygen.c b/g10/keygen.c index d5f778262..cded87c45 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -1684,6 +1684,13 @@ gen_ecc (int algo, const char *curve, kbnode_t pub_root, if (!curve || !*curve) return gpg_error (GPG_ERR_UNKNOWN_CURVE); + /* Map the displayed short forms of some curves to their canonical + * names. */ + if (!ascii_strcasecmp (curve, "cv25519")) + curve = "Curve25519"; + else if (!ascii_strcasecmp (curve, "ed25519")) + curve = "Ed25519"; + /* Note that we use the "comp" flag with EdDSA to request the use of a 0x40 compression prefix octet. */ if (algo == PUBKEY_ALGO_EDDSA) @@ -2991,9 +2998,11 @@ generate_user_id (KBNODE keyblock, const char *uidstr) * success is returned. On error an error code is returned. Note * that STRING may be modified by this function. NULL may be passed * for any parameter. FOR_SUBKEY shall be true if this is used as a + * subkey. If CLEAR_CERT is set a default CERT usage will be cleared; + * this is useful if for example the default algorithm is used for a * subkey. */ static gpg_error_t -parse_key_parameter_part (char *string, int for_subkey, +parse_key_parameter_part (char *string, int for_subkey, int clear_cert, int *r_algo, unsigned int *r_size, unsigned int *r_keyuse, char const **r_curve) @@ -3144,6 +3153,10 @@ parse_key_parameter_part (char *string, int for_subkey, if (!for_subkey) keyuse |= PUBKEY_USAGE_CERT; + /* But if requested remove th cert usage. */ + if (clear_cert) + keyuse &= ~PUBKEY_USAGE_CERT; + /* Check that usage is actually possible. */ if (/**/((keyuse & (PUBKEY_USAGE_SIG|PUBKEY_USAGE_AUTH|PUBKEY_USAGE_CERT)) && !pubkey_get_nsig (algo)) @@ -3215,14 +3228,16 @@ parse_key_parameter_part (char *string, int for_subkey, * -1 := Both parts * 0 := Only the part of the primary key * 1 := If there is one part parse that one, if there are - * two parts parse the second part. Always return - * in the args for the primary key (R_ALGO,....). + * two parts parse the part which best matches the + * SUGGESTED_USE or in case that can't be evaluated the second part. + * Always return using the args for the primary key (R_ALGO,....). * */ gpg_error_t parse_key_parameter_string (const char *string, int part, + unsigned int suggested_use, int *r_algo, unsigned int *r_size, - unsigned *r_keyuse, + unsigned int *r_keyuse, char const **r_curve, int *r_subalgo, unsigned int *r_subsize, unsigned *r_subkeyuse, @@ -3249,9 +3264,10 @@ parse_key_parameter_string (const char *string, int part, *r_subcurve = NULL; if (!string || !*string - || !strcmp (string, "default") || !strcmp (string, "-")) + || !ascii_strcasecmp (string, "default") || !strcmp (string, "-")) string = get_default_pubkey_algo (); - else if (!strcmp (string, "future-default")) + else if (!ascii_strcasecmp (string, "future-default") + || !ascii_strcasecmp (string, "futuredefault")) string = FUTURE_STD_KEY_PARAM; primary = xstrdup (string); @@ -3260,18 +3276,31 @@ parse_key_parameter_string (const char *string, int part, *secondary++ = 0; if (part == -1 || part == 0) { - err = parse_key_parameter_part (primary, 0, r_algo, r_size, + err = parse_key_parameter_part (primary, 0, 0, r_algo, r_size, r_keyuse, r_curve); if (!err && part == -1) - err = parse_key_parameter_part (secondary, 1, r_subalgo, r_subsize, + err = parse_key_parameter_part (secondary, 1, 0, r_subalgo, r_subsize, r_subkeyuse, r_subcurve); } else if (part == 1) { /* If we have SECONDARY, use that part. If there is only one - * part consider this to be the subkey algo. */ - err = parse_key_parameter_part (secondary? secondary : primary, 1, - r_algo, r_size, r_keyuse, r_curve); + * part consider this to be the subkey algo. In case a + * SUGGESTED_USE has been given and the usage of the secondary + * part does not match SUGGESTED_USE try again using the primary + * part. Noet thar when falling back to the primary key we need + * to force clearing the cert usage. */ + if (secondary) + { + err = parse_key_parameter_part (secondary, 1, 0, + r_algo, r_size, r_keyuse, r_curve); + if (!err && suggested_use && r_keyuse && !(suggested_use & *r_keyuse)) + err = parse_key_parameter_part (primary, 1, 1 /*(clear cert)*/, + r_algo, r_size, r_keyuse, r_curve); + } + else + err = parse_key_parameter_part (primary, 1, 0, + r_algo, r_size, r_keyuse, r_curve); } xfree (primary); @@ -3358,7 +3387,7 @@ get_parameter_algo( struct para_data_s *para, enum para_name key, * for the curve etc. That is a ugly but demanded for backward * compatibility with the batch key generation. It would be * better to make full use of parse_key_parameter_string. */ - parse_key_parameter_string (NULL, 0, + parse_key_parameter_string (NULL, 0, 0, &i, NULL, NULL, NULL, NULL, NULL, NULL, NULL); @@ -4080,9 +4109,10 @@ quick_generate_keypair (ctrl_t ctrl, const char *uid, const char *algostr, if (!*expirestr || strcmp (expirestr, "-") == 0) expirestr = default_expiration_interval; - if ((!*algostr || !strcmp (algostr, "default") - || !strcmp (algostr, "future-default")) - && (!*usagestr || !strcmp (usagestr, "default") + if ((!*algostr || !ascii_strcasecmp (algostr, "default") + || !ascii_strcasecmp (algostr, "future-default") + || !ascii_strcasecmp (algostr, "futuredefault")) + && (!*usagestr || !ascii_strcasecmp (usagestr, "default") || !strcmp (usagestr, "-"))) { /* Use default key parameters. */ @@ -4091,7 +4121,7 @@ quick_generate_keypair (ctrl_t ctrl, const char *uid, const char *algostr, unsigned int keyuse, subkeyuse; const char *curve, *subcurve; - err = parse_key_parameter_string (algostr, -1, + err = parse_key_parameter_string (algostr, -1, 0, &algo, &size, &keyuse, &curve, &subalgo, &subsize, &subkeyuse, &subcurve); @@ -4470,7 +4500,7 @@ generate_keypair (ctrl_t ctrl, int full, const char *fname, #endif , "--full-generate-key" ); - err = parse_key_parameter_string (NULL, -1, + err = parse_key_parameter_string (NULL, -1, 0, &algo, &size, &keyuse, &curve, &subalgo, &subsize, &subkeyuse, &subcurve); @@ -5017,6 +5047,7 @@ parse_algo_usage_expire (ctrl_t ctrl, int for_subkey, } err = parse_key_parameter_string (algostr, for_subkey? 1 : 0, + usagestr? parse_usagestr (usagestr):0, &algo, &nbits, &use, &curve, NULL, NULL, NULL, NULL); if (err) @@ -5024,7 +5055,7 @@ parse_algo_usage_expire (ctrl_t ctrl, int for_subkey, /* Parse the usage string. */ if (!usagestr || !*usagestr - || !strcmp (usagestr, "default") || !strcmp (usagestr, "-")) + || !ascii_strcasecmp (usagestr, "default") || !strcmp (usagestr, "-")) ; /* Keep usage from parse_key_parameter_string. */ else if ((wantuse = parse_usagestr (usagestr)) != -1) use = wantuse; diff --git a/g10/mainproc.c b/g10/mainproc.c index accf25ed6..f2a28df74 100644 --- a/g10/mainproc.c +++ b/g10/mainproc.c @@ -495,7 +495,7 @@ proc_pubkey_enc (ctrl_t ctrl, CTX c, PACKET *pkt) || have_secret_key_with_kid (enc->keyid))) { if(opt.list_only) - result = -1; + result = GPG_ERR_MISSING_ACTION; /* fixme: Use better error code. */ else { c->dek = xmalloc_secure_clear (sizeof *c->dek); @@ -513,9 +513,7 @@ proc_pubkey_enc (ctrl_t ctrl, CTX c, PACKET *pkt) else result = GPG_ERR_PUBKEY_ALGO; - if (result == -1) - ; - else + if (1) { /* Store it for later display. */ struct kidlist_item *x = xmalloc (sizeof *x); @@ -583,6 +581,10 @@ print_pkenc_list (ctrl_t ctrl, struct kidlist_item *list, int failed) write_status_text (STATUS_NO_SECKEY, buf); } } + else if (gpg_err_code (list->reason) == GPG_ERR_MISSING_ACTION) + { + /* Not tested for secret key due to --list-only mode. */ + } else if (list->reason) { log_info (_("public key decryption failed: %s\n"), diff --git a/kbx/kbxutil.c b/kbx/kbxutil.c index e3814d316..2cfd07019 100644 --- a/kbx/kbxutil.c +++ b/kbx/kbxutil.c @@ -464,7 +464,6 @@ main( int argc, char **argv ) /*create_dotlock(NULL); register locking cleanup */ /* We need to use the gcry malloc function because jnlib uses them. */ - keybox_set_malloc_hooks (gcry_malloc, gcry_realloc, gcry_free); ksba_set_malloc_hooks (gcry_malloc, gcry_realloc, gcry_free ); diff --git a/kbx/keybox-defs.h b/kbx/keybox-defs.h index fd331f12b..be2dd721f 100644 --- a/kbx/keybox-defs.h +++ b/kbx/keybox-defs.h @@ -33,16 +33,7 @@ #include /* off_t */ -/* We include the type definitions from jnlib instead of defining our - owns here. This will not allow us build KBX in a standalone way - but there is currently no need for it anyway. Same goes for - stringhelp.h which for example provides a replacement for stpcpy - - fixme: Better use the LIBOBJ mechnism. */ -#include "../common/types.h" -#include "../common/stringhelp.h" -#include "../common/dotlock.h" -#include "../common/logging.h" - +#include "../common/util.h" #include "keybox.h" @@ -209,64 +200,10 @@ int _keybox_dump_cut_records (const char *filename, unsigned long from, /*-- keybox-util.c --*/ -void *_keybox_malloc (size_t n); -void *_keybox_calloc (size_t n, size_t m); -void *_keybox_realloc (void *p, size_t n); -void _keybox_free (void *p); - -#define xtrymalloc(a) _keybox_malloc ((a)) -#define xtrycalloc(a,b) _keybox_calloc ((a),(b)) -#define xtryrealloc(a,b) _keybox_realloc((a),(b)) -#define xfree(a) _keybox_free ((a)) - - -#define DIM(v) (sizeof(v)/sizeof((v)[0])) -#define DIMof(type,member) DIM(((type *)0)->member) -#ifndef STR -# define STR(v) #v -#endif -#define STR2(v) STR(v) /* - a couple of handy macros -*/ - -#define return_if_fail(expr) do { \ - if (!(expr)) { \ - fprintf (stderr, "%s:%d: assertion '%s' failed\n", \ - __FILE__, __LINE__, #expr ); \ - return; \ - } } while (0) -#define return_null_if_fail(expr) do { \ - if (!(expr)) { \ - fprintf (stderr, "%s:%d: assertion '%s' failed\n", \ - __FILE__, __LINE__, #expr ); \ - return NULL; \ - } } while (0) -#define return_val_if_fail(expr,val) do { \ - if (!(expr)) { \ - fprintf (stderr, "%s:%d: assertion '%s' failed\n", \ - __FILE__, __LINE__, #expr ); \ - return (val); \ - } } while (0) -#define never_reached() do { \ - fprintf (stderr, "%s:%d: oops; should never get here\n", \ - __FILE__, __LINE__ ); \ - } while (0) - - -/* some macros to replace ctype ones and avoid locale problems */ -#define digitp(p) (*(p) >= '0' && *(p) <= '9') -#define hexdigitp(a) (digitp (a) \ - || (*(a) >= 'A' && *(a) <= 'F') \ - || (*(a) >= 'a' && *(a) <= 'f')) -/* the atoi macros assume that the buffer has only valid digits */ -#define atoi_1(p) (*(p) - '0' ) -#define atoi_2(p) ((atoi_1(p) * 10) + atoi_1((p)+1)) -#define atoi_4(p) ((atoi_2(p) * 100) + atoi_2((p)+2)) -#define xtoi_1(p) (*(p) <= '9'? (*(p)- '0'): \ - *(p) <= 'F'? (*(p)-'A'+10):(*(p)-'a'+10)) -#define xtoi_2(p) ((xtoi_1(p) * 16) + xtoi_1((p)+1)) + * A couple of handy macros + */ #endif /*KEYBOX_DEFS_H*/ diff --git a/kbx/keybox-util.c b/kbx/keybox-util.c index b71335b7d..3ce5162cc 100644 --- a/kbx/keybox-util.c +++ b/kbx/keybox-util.c @@ -27,52 +27,6 @@ #endif #include "keybox-defs.h" -#include "../common/utilproto.h" - - -static void *(*alloc_func)(size_t n) = malloc; -static void *(*realloc_func)(void *p, size_t n) = realloc; -static void (*free_func)(void*) = free; - - - -void -keybox_set_malloc_hooks ( void *(*new_alloc_func)(size_t n), - void *(*new_realloc_func)(void *p, size_t n), - void (*new_free_func)(void*) ) -{ - alloc_func = new_alloc_func; - realloc_func = new_realloc_func; - free_func = new_free_func; -} - -void * -_keybox_malloc (size_t n) -{ - return alloc_func (n); -} - -void * -_keybox_realloc (void *a, size_t n) -{ - return realloc_func (a, n); -} - -void * -_keybox_calloc (size_t n, size_t m) -{ - void *p = _keybox_malloc (n*m); - if (p) - memset (p, 0, n* m); - return p; -} - -void -_keybox_free (void *p) -{ - if (p) - free_func (p); -} /* Store the two malloced temporary file names used for keybox updates @@ -146,10 +100,3 @@ keybox_tmp_names (const char *filename, int for_keyring, *r_tmpname = tmp_name; return 0; } - -gpg_error_t -keybox_file_rename (const char *oldname, const char *newname, - int *block_signals) -{ - return gnupg_rename_file (oldname, newname, block_signals); -} diff --git a/kbx/keybox.h b/kbx/keybox.h index 29884b05f..665b05fc0 100644 --- a/kbx/keybox.h +++ b/kbx/keybox.h @@ -127,10 +127,6 @@ int keybox_rebuild_cache (void *); /*-- keybox-util.c --*/ -void keybox_set_malloc_hooks ( void *(*new_alloc_func)(size_t n), - void *(*new_realloc_func)(void *p, size_t n), - void (*new_free_func)(void*) ); - gpg_error_t keybox_tmp_names (const char *filename, int for_keyring, char **r_bakname, char **r_tmpname); diff --git a/po/ca.po b/po/ca.po index 4d9ce668f..a65380cb6 100644 --- a/po/ca.po +++ b/po/ca.po @@ -495,10 +495,6 @@ msgstr "error mentre s'enviava a «%s»: %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "AVÍS: els permissos són insegurs en %s «%s»\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "ha fallat l'actualització: %s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "s'està escrivint la clau secreta a «%s»\n" @@ -9153,6 +9149,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "ha fallat l'actualització: %s\n" + #, fuzzy #~ msgid "" #~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" diff --git a/po/cs.po b/po/cs.po index 24d54c7c9..4693f7308 100644 --- a/po/cs.po +++ b/po/cs.po @@ -3,7 +3,8 @@ # 2005 Free Software Foundation, Inc. # Magda Procházková 2001, # Roman Pavlik 2001, 2002, 2003, 2004, 2005. -# Petr Pisar , 2009, 2010, 2011, 2013, 2014, 2015. +# Petr Pisar , 2009, 2010, 2011, 2013, 2014, 2015, 2016. +# Petr Pisar , 2017. # # A "%%0A" is used by Pinentry to insert a line break. The double percent # sign is actually needed because it is also a printf format string. If you @@ -24,6 +25,7 @@ # zákon o elektronickém podpisu, : # kvalifikovaný certifikát/podpis # +# administrator → správce # cache → keš # distribution point → místo distribuce # DP (distribution point (of CRL)) → DP @@ -33,9 +35,9 @@ # msgid "" msgstr "" -"Project-Id-Version: gnupg2 2.1.10\n" +"Project-Id-Version: gnupg2 2.2.1\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n" -"PO-Revision-Date: 2017-11-02 17:38+0100\n" +"PO-Revision-Date: 2017-11-17 10:33+01:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -174,10 +176,9 @@ msgstr "na kartě není autentizační klíč pro SSH: %s\n" msgid "no suitable card key found: %s\n" msgstr "nenalezen žádný vhodný klíč karty: %s\n" -#, fuzzy, c-format -#| msgid "error getting stored flags: %s\n" +#, c-format msgid "error getting list of cards: %s\n" -msgstr "chyba při získání uložených příznaků: %s\n" +msgstr "chyba při získávání seznamu karet: %s\n" #, c-format msgid "" @@ -329,10 +330,8 @@ msgstr "poběží v režimu démona (na pozadí)" msgid "run in server mode (foreground)" msgstr "poběží v režimu serveru (na popředí)" -#, fuzzy -#| msgid "run in server mode" msgid "run in supervised mode" -msgstr "pracovat v režimu serveru" +msgstr "poběží v režimu dohledu" msgid "verbose" msgstr "upovídaný režim" @@ -388,10 +387,8 @@ msgstr "nedovolit klientům označovat klíče za „důvěryhodné“" msgid "allow presetting passphrase" msgstr "umožnit přednastavení hesla" -#, fuzzy -#| msgid "allow caller to override the pinentry" msgid "disallow caller to override the pinentry" -msgstr "umožnit volajícímu přebít pinentry" +msgstr "zmemožnit volajícímu přebít pinentry" msgid "allow passphrase to be prompted through Emacs" msgstr "umožnit zadání hesla skrze Emacs" @@ -400,7 +397,7 @@ msgid "enable ssh support" msgstr "zapnout podporu pro OpenSSH" msgid "|ALGO|use ALGO to show ssh fingerprints" -msgstr "" +msgstr "|ALGORITMUS|ukazovat otkisky SSH pomocí ALGORITMU" msgid "enable putty support" msgstr "zapnout podporu pro PuTTY" @@ -464,15 +461,9 @@ msgstr "chyba při získávání soli pro socket\n" msgid "error binding socket to '%s': %s\n" msgstr "chyba při přilepování socketu na „%s“: %s\n" -# TODO: i18n of first %s -#, fuzzy, c-format -#| msgid "Warning: unsafe permissions on %s \"%s\"\n" -msgid "can't set permissions of '%s': %s\n" -msgstr "Varování: přístupová práva %s „%s“ nejsou bezpečná\n" - #, c-format -msgid "listen() failed: %s\n" -msgstr "volání listen() selhalo: %s\n" +msgid "can't set permissions of '%s': %s\n" +msgstr "přístupová práva „%s“ nelze nastavit: %s\n" #, c-format msgid "listening on socket '%s'\n" @@ -756,10 +747,9 @@ msgstr "chyba v běhu „%s“: návratový kód %d\n" msgid "error running '%s': terminated\n" msgstr "chyba v běhu „%s“: násilně ukončeno\n" -#, fuzzy, c-format -#| msgid "waiting for process %d to terminate failed: %s\n" +#, c-format msgid "waiting for processes to terminate failed: %s\n" -msgstr "čekání na konec procesu %d se nezdařilo: %s\n" +msgstr "čekání na ukončení procesu se nezdařilo: %s\n" #, c-format msgid "error getting exit code of process %d: %s\n" @@ -786,10 +776,9 @@ msgstr "Varování: vlastnictví %s „%s“ není nastaveno bezpečně\n" msgid "Warning: unsafe permissions on %s \"%s\"\n" msgstr "Varování: přístupová práva %s „%s“ nejsou bezpečná\n" -#, fuzzy, c-format -#| msgid "waiting for the agent to come up ... (%ds)\n" +#, c-format msgid "waiting for file '%s' to become accessible ...\n" -msgstr "čeká se na agenta… (%d s)\n" +msgstr "čekání, až se soubor „%s“ stane přístupným…\n" #, c-format msgid "renaming '%s' to '%s' failed: %s\n" @@ -1190,10 +1179,10 @@ msgstr "" "neplatný znak (quoted-printable) v ASCII kódování – pravděpodobně byl použit " "špatný MTA\n" -#, fuzzy, c-format -#| msgid "not human readable" +# TODO: Pluralize +#, c-format msgid "[ not human readable (%zu bytes: %s%s) ]" -msgstr "není v přímo čitelném formátu" +msgstr "[ nečitelné pro lidi (%zu bajtů: %s%s) ]" msgid "" "a notation name must have only printable characters or spaces, and end with " @@ -1211,19 +1200,11 @@ msgstr "jméno uživatele nesmí obsahovat více než jeden znak „@“\n" msgid "a notation value must not use any control characters\n" msgstr "hodnota nemůže obsahovat žádné kontrolní znaky\n" -#, fuzzy -#| msgid "a notation name must not contain more than one '@' character\n" msgid "a notation name may not contain an '=' character\n" -msgstr "jméno uživatele nesmí obsahovat více než jeden znak „@“\n" +msgstr "jméno uživatele nesmí obsahovat znak „=“\n" -#, fuzzy -#| msgid "" -#| "a notation name must have only printable characters or spaces, and end " -#| "with an '='\n" msgid "a notation name must have only printable characters or spaces\n" -msgstr "" -"symbolické jméno smí obsahovat pouze písmena, číslice, tečky nebo podtržítka " -"a musí končit znakem „=“\n" +msgstr "jméno uživatele musí obsahovat pouze tisknutelné znaky nebo mezery\n" msgid "WARNING: invalid notation data found\n" msgstr "VAROVÁNÍ: nalezen neplatný formát zápisu data\n" @@ -1235,32 +1216,29 @@ msgstr "předání dotazu %s klientovi se nezdařilo\n" msgid "Enter passphrase: " msgstr "Vložte heslo: " -#, fuzzy, c-format -#| msgid "error creating keyring '%s': %s\n" +#, c-format msgid "error getting version from '%s': %s\n" -msgstr "chyba při vytváření souboru klíčů (keyring) „%s“: %s\n" +msgstr "chyba při získávání verze z „%s“: %s\n" #, c-format msgid "server '%s' is older than us (%s < %s)" -msgstr "" +msgstr "server „%s“ je starší než my (%s < %s)" -#, fuzzy, c-format -#| msgid "WARNING: " +#, c-format msgid "WARNING: %s\n" -msgstr "VAROVÁNÍ: " +msgstr "VAROVÁNÍ: %s\n" msgid "Note: Outdated servers may lack important security fixes.\n" msgstr "" +"Poznámka: Zastaralé servery mohou postrádat důležité bezpečnostní opravy.\n" -#, fuzzy, c-format -#| msgid "Please use the command \"toggle\" first.\n" +#, c-format msgid "Note: Use the command \"%s\" to restart them.\n" -msgstr "Prosím, nejdříve použijte příkaz „toggle“ (přepnout).\n" +msgstr "Poznámka: Restartovat je můžete příkazem „%s“.\n" -#, fuzzy, c-format -#| msgid "%s does not yet work with %s\n" +#, c-format msgid "%s is not compliant with %s mode\n" -msgstr "%s dosud není funkční s %s\n" +msgstr "%s není v souladu s režimem %s\n" #, c-format msgid "OpenPGP card not available: %s\n" @@ -1271,7 +1249,7 @@ msgid "OpenPGP card no. %s detected\n" msgstr "Nalezena OpenPGP karta číslo %s\n" msgid "can't do this in batch mode\n" -msgstr "nelze provést v dávkovém módu\n" +msgstr "nelze provést v dávkovém režimu\n" msgid "This command is only available for version 2 cards\n" msgstr "Tento příkaz je dostupný pouze pro karty verze 2\n" @@ -1283,7 +1261,7 @@ msgid "Your selection? " msgstr "Váš výběr? " msgid "[not set]" -msgstr "[není nastaven]" +msgstr "[není nastaveno]" msgid "male" msgstr "muž" @@ -1430,7 +1408,7 @@ msgid "" "You should change them using the command --change-pin\n" msgstr "" "Prosím nezapomeňte, že tovární nastavení PINů je\n" -" PIN = „%s“ PIN administrátora = „%s“\n" +" PIN = „%s“ PIN správce = „%s“\n" "Měli byste je změnit příkazem --change-pin\n" msgid "Please select the type of key to generate:\n" @@ -1449,7 +1427,7 @@ msgid "Invalid selection.\n" msgstr "Neplatný výběr.\n" msgid "Please select where to store the key:\n" -msgstr "Prosím vyberte místo pro uchování klíče:\n" +msgstr "Prosím vyberte, kam uložit klíč:\n" #, c-format msgid "KEYTOCARD failed: %s\n" @@ -1472,7 +1450,7 @@ msgid "quit this menu" msgstr "ukončit toto menu" msgid "show admin commands" -msgstr "zobraz administrátorské příkazy" +msgstr "zobraz příkazy správce" msgid "show this help" msgstr "ukázat tuto pomoc" @@ -1523,13 +1501,13 @@ msgid "gpg/card> " msgstr "gpg/karta> " msgid "Admin-only command\n" -msgstr "pouze administrátorské příkazy\n" +msgstr "pouze příkazy správce\n" msgid "Admin commands are allowed\n" -msgstr "administrátorské příkazy jsou povoleny\n" +msgstr "příkazy správce jsou povoleny\n" msgid "Admin commands are not allowed\n" -msgstr "administrátorské příkazy nejsou povoleny\n" +msgstr "příkazy správce nejsou povoleny\n" msgid "Invalid command (try \"help\")\n" msgstr "Neplatný příkaz (zkuste „help“)\n" @@ -1557,7 +1535,7 @@ msgid "(unless you specify the key by fingerprint)\n" msgstr "(dokud neurčíte klíč jeho otiskem)\n" msgid "can't do this in batch mode without \"--yes\"\n" -msgstr "bez parametru „--yes“ to nemohu v dávkovém módu provést\n" +msgstr "bez parametru „--yes“ to nelze v dávkovém režimu provést\n" msgid "Delete this key from the keyring? (y/N) " msgstr "Smazat tento klíč ze souboru klíčů? (a/N) " @@ -1598,7 +1576,7 @@ msgid "error creating passphrase: %s\n" msgstr "chyba při vytváření hesla: %s\n" msgid "can't use a symmetric ESK packet due to the S2K mode\n" -msgstr "v módu S2K nelze použít symetrický ESK paket\n" +msgstr "v režimu S2K nelze použít symetrický ESK paket\n" #, c-format msgid "using cipher %s\n" @@ -1622,15 +1600,13 @@ msgid "" msgstr "" "VAROVÁNÍ: vyžádaná symetrická šifra %s (%d) nevyhovuje předvolbám příjemce\n" -#, fuzzy, c-format -#| msgid "you may not use cipher algorithm '%s' while in %s mode\n" +#, c-format msgid "cipher algorithm '%s' may not be used in %s mode\n" -msgstr "použití šifrovacího algoritmu „%s“ v módu %s není dovoleno\n" +msgstr "šifrovací algoritmus „%s“ se nesmí používat v režimu %s\n" -#, fuzzy, c-format -#| msgid "WARNING: \"%s%s\" is an obsolete option - it has no effect\n" +#, c-format msgid "WARNING: key %s is not suitable for encryption in %s mode\n" -msgstr "VAROVÁNÍ: „%s%s“ je zastaralý parametr – neúčinkuje\n" +msgstr "VAROVÁNÍ: klíč %s není vhodný pro šifrování v režimu %s\n" #, c-format msgid "" @@ -1648,10 +1624,9 @@ msgstr "vyžádaná symetrická šifra %s (%d) nevyhovuje předvolbám příjemc msgid "%s/%s encrypted for: \"%s\"\n" msgstr "%s/%s zašifrovaný pro: „%s“\n" -#, fuzzy, c-format -#| msgid "you may not use %s while in %s mode\n" +#, c-format msgid "option '%s' may not be used in %s mode\n" -msgstr "použití %s není v módu %s dovoleno\n" +msgstr "volba „%s“ se nesmí používat v režimu %s\n" #, c-format msgid "%s encrypted data\n" @@ -1728,7 +1703,7 @@ msgid "remove as much as possible from key during export" msgstr "odstranit při exportu z klíče vše, co lze" msgid "use the GnuPG key backup format" -msgstr "" +msgstr "použít záložní formát klíče GnuPG" msgid " - skipped" msgstr " – přeskočeno" @@ -1763,24 +1738,17 @@ msgstr "[ID uživatele nenalezeno]" msgid "(check argument of option '%s')\n" msgstr "(zkontrolujte argument volby „%s“)\n" -#, fuzzy, c-format -#| msgid "" -#| "Warning: value '%s' for option '%s' should be a long key ID or a " -#| "fingerprint\n" +#, c-format msgid "Warning: '%s' should be a long key ID or a fingerprint\n" -msgstr "" -"Pozor: hodnota „%s“ volby „%s“ by měla být\n" -"dlouhý identifikátor klíče nebo jeho otisk\n" +msgstr "Pozor: „%s“ by měl být dlouhý identifikátor klíče nebo jeho otisk\n" -#, fuzzy, c-format -#| msgid "error closing %s: %s\n" +#, c-format msgid "error looking up: %s\n" -msgstr "chyba při zavírání chyba %s: %s\n" +msgstr "chyba při vyhledávání: %s\n" -#, fuzzy, c-format -#| msgid "error searching the keyring: %s\n" +#, c-format msgid "Warning: %s appears in the keyring %d times\n" -msgstr "chyba při prohledávání souboru klíčů (keyring): %s\n" +msgstr "Pozor: %s se nachází v souboru klíčů (keyring) %dkrát\n" #, c-format msgid "automatically retrieved '%s' via %s\n" @@ -1797,19 +1765,17 @@ msgstr "Chybí otisk" msgid "secret key \"%s\" not found: %s\n" msgstr "tajný klíč „%s“ nenalezen: %s\n" -#, fuzzy, c-format -#| msgid "using \"%s\" as default secret key\n" +#, c-format msgid "Warning: not using '%s' as default key: %s\n" -msgstr "jako výchozí tajný klíč se použije „%s“\n" +msgstr "Pozor: jako výchozí klíč se nepoužije „%s“: %s\n" -#, fuzzy, c-format -#| msgid "using \"%s\" as default secret key\n" +#, c-format msgid "using \"%s\" as default secret key for signing\n" -msgstr "jako výchozí tajný klíč se použije „%s“\n" +msgstr "jako výchozí tajný klíč pro podepisování se použije „%s“\n" #, c-format msgid "all values passed to '%s' ignored\n" -msgstr "" +msgstr "všechny hodnoty předány „%s“ se ignorují\n" # c-format #, c-format @@ -1820,10 +1786,9 @@ msgstr "Neplatný klíč %s změněn na platný pomocí --always-non-selfsigned- 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" -#, fuzzy, c-format -#| msgid "invalid argument for option \"%.50s\"\n" +#, c-format msgid "valid values for option '%s':\n" -msgstr "neplatný argument u volby „%.50s“\n" +msgstr "platné hodnoty pro volbu „%s“:\n" msgid "make a signature" msgstr "vytvořit podpis" @@ -1870,15 +1835,11 @@ msgstr "rychle vytvořit nový pár klíčů" msgid "quickly add a new user-id" msgstr "rychle přidat novou identitu uživatele" -#, fuzzy -#| msgid "quickly add a new user-id" msgid "quickly revoke a user-id" -msgstr "rychle přidat novou identitu uživatele" +msgstr "rychle odvolat identitu uživatele" -#, fuzzy -#| msgid "quickly generate a new key pair" msgid "quickly set a new expiration date" -msgstr "rychle vytvořit nový pár klíčů" +msgstr "rychle nastavit nové datum konce platnosti" msgid "full featured key pair generation" msgstr "komplexní vytvoření páru klíčů" @@ -1946,15 +1907,11 @@ msgstr "vypsat hash zprávy" msgid "run in server mode" msgstr "pracovat v režimu serveru" -#, fuzzy -#| msgid "|VALUE|set the TOFU policy for a key (good, unknown, bad, ask, auto)" msgid "|VALUE|set the TOFU policy for a key" -msgstr "" -"|HODNOTA|nastavit TOFU politiku klíči (good [dobrý], unknown [neznámý], bad " -"[špatný], ask [zeptat se], auto)" +msgstr "|HODNOTA|nastavit TOFU politiku klíči" msgid "create ascii armored output" -msgstr "vytvoř výstup zakódovaný pomocí ASCII" +msgstr "vytvořit výstup zapsaný v ASCII" msgid "|USER-ID|encrypt for USER-ID" msgstr "|ID_UŽIVATELE|šifrovat pro ID_UŽIVATELE" @@ -1966,7 +1923,7 @@ msgid "|N|set compress level to N (0 disables)" msgstr "|N|nastavit úroveň komprese na N (0 – žádná)" msgid "use canonical text mode" -msgstr "použít kanonický textový mód" +msgstr "použít kanonický textový režim" msgid "|FILE|write output to FILE" msgstr "|SOUBOR|zapsat výstup do SOUBORU" @@ -1985,18 +1942,8 @@ msgid "" "(See the man page for a complete listing of all commands and options)\n" msgstr "" "@\n" -"(Pro kompletní seznam všech příkazů a možností použijte manuálové stránky.)\n" +"(Pro úplný seznam všech příkazů a voleb nahlédněte do manuálové stránky.)\n" -#, fuzzy -#| msgid "" -#| "@\n" -#| "Examples:\n" -#| "\n" -#| " -se -r Bob [file] sign and encrypt for user Bob\n" -#| " --clear-sign [file] make a clear text signature\n" -#| " --detach-sign [file] make a detached signature\n" -#| " --list-keys [names] show keys\n" -#| " --fingerprint [names] show fingerprints\n" msgid "" "@\n" "Examples:\n" @@ -2008,11 +1955,13 @@ msgid "" " --fingerprint [names] show fingerprints\n" msgstr "" "@\n" +"Příklady:\n" +"\n" " -se -r Bob [soubor] podepsat a zašifrovat pro uživatele Bob\n" -" --clear-sign [soubor] vytvořit podpis čitelného dokumentu\n" +" --clearsign [soubor] vytvořit podpis čitelného dokumentu\n" " --detach-sign [soubor] vytvořit podpis oddělený od dokumentu\n" -" --list-keys [jména] vypsat klíče\n" -" --fingerprint [jména] vypsat otisky\n" +" --list-keys [jména] ukázat klíče\n" +" --fingerprint [jména] ukázat otisky\n" msgid "Usage: @GPG@ [options] [files] (-h for help)" msgstr "Použití: @GPG@ [možnosti] [soubory] (-h pro nápovědu)" @@ -2182,10 +2131,9 @@ msgstr "Poznámka: %s není pro normální použití!\n" msgid "'%s' is not a valid signature expiration\n" msgstr "„%s“ není platná doba expirace podpisu\n" -#, fuzzy, c-format -#| msgid "line %d: not a valid email address\n" +#, c-format msgid "\"%s\" is not a proper mail address\n" -msgstr "řádek %d: neplatná e-mailová adresa\n" +msgstr "„%s“ není správná e-mailová adresa\n" #, c-format msgid "invalid pinentry mode '%s'\n" @@ -2212,10 +2160,9 @@ msgstr "%s:%d: neplatný parametr pro import\n" msgid "invalid import options\n" msgstr "neplatný parametr pro import\n" -#, fuzzy, c-format -#| msgid "invalid list options\n" +#, c-format msgid "invalid filter option: %s\n" -msgstr "neplatný parametr pro výpis\n" +msgstr "neplatná volba filtru: %s\n" #, c-format msgid "%s:%d: invalid export options\n" @@ -2333,10 +2280,10 @@ msgstr "" "nebo 3\n" msgid "Note: simple S2K mode (0) is strongly discouraged\n" -msgstr "Poznámka: jednoduchý mód S2K (0) je důrazně nedoporučován\n" +msgstr "Poznámka: jednoduchý režim S2K (0) je důrazně nedoporučován\n" msgid "invalid S2K mode; must be 0, 1 or 3\n" -msgstr "neplatný mód S2K; musí být 0, 1 nebo 3\n" +msgstr "neplatný režim S2K; musí být 0, 1 nebo 3\n" msgid "invalid default preferences\n" msgstr "neplatné implicitní předvolby\n" @@ -2354,15 +2301,13 @@ msgstr "neplatné uživatelské předvolby pro komprimaci\n" msgid "%s does not yet work with %s\n" msgstr "%s dosud není funkční s %s\n" -#, fuzzy, c-format -#| msgid "you may not use digest algorithm '%s' while in %s mode\n" +#, c-format msgid "digest algorithm '%s' may not be used in %s mode\n" -msgstr "použití hashovacího algoritmu „%s“ v módu %s není dovoleno\n" +msgstr "hashovací algoritmus „%s“ se nesmí používat v režimu %s\n" -#, fuzzy, c-format -#| msgid "you may not use compression algorithm '%s' while in %s mode\n" +#, c-format msgid "compression algorithm '%s' may not be used in %s mode\n" -msgstr "použití kompresního algoritmu „%s“ v módu %s není dovoleno\n" +msgstr "kompresní algoritmus „%s“ se nesmí používat v režimu %s\n" #, c-format msgid "failed to initialize the TrustDB: %s\n" @@ -2379,18 +2324,16 @@ msgstr "symetrické šifrování „%s“ se nepovedlo: %s\n" msgid "you cannot use --symmetric --encrypt with --s2k-mode 0\n" msgstr "nelze použít --symmetric --encrypt s příkazem --s2k-mode 0\n" -#, fuzzy, c-format -#| msgid "you cannot use --symmetric --encrypt while in %s mode\n" +#, c-format msgid "you cannot use --symmetric --encrypt in %s mode\n" -msgstr "nelze použít --symmetric --encrypt v módu %s\n" +msgstr "nelze použít --symmetric --encrypt v režimu %s\n" msgid "you cannot use --symmetric --sign --encrypt with --s2k-mode 0\n" msgstr "nelze použít --symmetric --sign --encrypt s příkazem --s2k-mode 0\n" -#, fuzzy, c-format -#| msgid "you cannot use --symmetric --sign --encrypt while in %s mode\n" +#, c-format msgid "you cannot use --symmetric --sign --encrypt in %s mode\n" -msgstr "nelze použít --symmetric --sign --encrypt v módu %s\n" +msgstr "nelze použít --symmetric --sign --encrypt v režimu %s\n" #, c-format msgid "keyserver send failed: %s\n" @@ -2404,10 +2347,9 @@ msgstr "získání dat z serveru klíčů se nezdařilo: %s\n" msgid "key export failed: %s\n" msgstr "export klíče se nepodařil: %s\n" -#, fuzzy, c-format -#| msgid "key export failed: %s\n" +#, c-format msgid "export as ssh key failed: %s\n" -msgstr "export klíče se nepodařil: %s\n" +msgstr "export jako SSH klíč se nepodařil: %s\n" #, c-format msgid "keyserver search failed: %s\n" @@ -2438,7 +2380,7 @@ msgid "'%s' does not appear to be a valid key ID, fingerprint or keygrip\n" msgstr "„%s“ nevypadá jako platné ID klíče, otisk klíče nebo keygrip\n" msgid "WARNING: no command supplied. Trying to guess what you mean ...\n" -msgstr "" +msgstr "POZOR: nezadán žádný příkaz. Váš záměr bude odhadnut…\n" msgid "Go ahead and type your message ...\n" msgstr "Začněte psát svou zprávu…\n" @@ -2462,7 +2404,7 @@ msgid "|FD|write status info to this FD" msgstr "|FD|zapsat informace o stavu do tohoto FD" msgid "|ALGO|reject signatures made with ALGO" -msgstr "" +msgstr "|ALGORITMUS|zamítnout podpisy založené na ALGORITMU" msgid "Usage: gpgv [options] [files] (-h for help)" msgstr "Použití: gpg [volby] [soubory] (-h pro pomoc)" @@ -2493,10 +2435,8 @@ msgstr "nemazat údaje o důvěře během importu" msgid "do not update the trustdb after import" msgstr "neaktualizovat databázi důvěry po importu" -#, fuzzy -#| msgid "show key fingerprint" msgid "show key during import" -msgstr "vypsat otisk klíče" +msgstr "při importu ukázat klíč" msgid "only accept updates to existing keys" msgstr "přijímat aktualizace pouze u existujících klíčů" @@ -2508,17 +2448,13 @@ msgid "remove as much as possible from key after import" msgstr "odstranit po importu z klíče vše, co lze" msgid "run import filters and export key immediately" -msgstr "" +msgstr "spustit importní filtry a exportovat klíč okamžitě" -#, fuzzy -#| msgid "assume input is in binary format" msgid "assume the GnuPG key backup format" -msgstr "předpokládat vstup v binárním formátu" +msgstr "předpokládat vstup ve formátu zálohy klíčů GnuPG" -#, fuzzy -#| msgid "show key fingerprint" msgid "repair keys on import" -msgstr "vypsat otisk klíče" +msgstr "při importu opravit klíče" #, c-format msgid "skipping block of type %d\n" @@ -2810,15 +2746,15 @@ msgstr "klíč %s: smazána vícenásobná vazba podklíče\n" #, c-format msgid "key %s: no subkey for key revocation\n" -msgstr "klíč %s: neexistuje podklíč pro revokaci klíče\n" +msgstr "klíč %s: neexistuje podklíč pro odvolání klíče\n" #, c-format msgid "key %s: invalid subkey revocation\n" -msgstr "klíč %s: neplatný revokační podklíč\n" +msgstr "klíč %s: neplatný odvolací podklíč\n" #, c-format msgid "key %s: removed multiple subkey revocation\n" -msgstr "klíč %s: smazána vícenásobná revokace podklíče\n" +msgstr "klíč %s: vícenásobná odvolání podklíče smazáno\n" #, c-format msgid "key %s: skipped user ID \"%s\"\n" @@ -2854,12 +2790,11 @@ msgstr "klíč %s: objeven duplikovaný identifikátor uživatele - sloučen\n" #, c-format msgid "WARNING: key %s may be revoked: fetching revocation key %s\n" -msgstr "" -"VAROVÁNÍ: klíč %s může být revokován: zkouším získat revokační klíč %s\n" +msgstr "VAROVÁNÍ: klíč %s může být odvolán: zkouším získat revokační klíč %s\n" #, c-format msgid "WARNING: key %s may be revoked: revocation key %s not present.\n" -msgstr "VAROVÁNÍ: klíč %s může být revokován: revokační klíč %s nenalezen.\n" +msgstr "VAROVÁNÍ: klíč %s může být odvolán: revokační klíč %s nenalezen.\n" #, c-format msgid "key %s: \"%s\" revocation certificate added\n" @@ -2898,7 +2833,7 @@ msgid "failed to rebuild keyring cache: %s\n" msgstr "selhalo obnovení vyrovnávací paměti klíčů: %s\n" msgid "[revocation]" -msgstr "[revokace]" +msgstr "[odvolání]" msgid "[self-signature]" msgstr "[podpis klíče jím samým]" @@ -2942,7 +2877,7 @@ msgstr "Přeskakuje se ID uživatele „%s“, což není textové ID.\n" #, c-format msgid "User ID \"%s\" is revoked." -msgstr "Uživatelské ID „%s“ je revokováno." +msgstr "Uživatelské ID „%s“ je odvoláno." msgid "Are you sure you still want to sign it? (y/N) " msgstr "Jste si jistý(á), že stále chcete podepsat tento klíč? (a/N) " @@ -3238,7 +3173,7 @@ msgstr "" " podpis (nrsign) nebo libovolnou jejich kombinací (ltsign, tnrsign, atd.).\n" msgid "Key is revoked." -msgstr "Klíč revokován." +msgstr "Klíč je odvolán." msgid "Really sign all user IDs? (y/N) " msgstr "Opravdu podepsat všechny id uživatele? (a/N) " @@ -3255,7 +3190,7 @@ msgstr "Neznámý typ podpisu „%s“\n" #, c-format msgid "This command is not allowed while in %s mode.\n" -msgstr "Tento příkaz není v módů %s dovolený.\n" +msgstr "Tento příkaz není v režimu %s dovolen.\n" msgid "You must select at least one user ID.\n" msgstr "Musíte vybrat alespoň jeden id uživatele.\n" @@ -3302,19 +3237,19 @@ msgid "Do you really want to delete this key? (y/N) " msgstr "Opravdu chcete smazat tento klíč? (a/N) " msgid "Really revoke all selected user IDs? (y/N) " -msgstr "Opravdu revokovat všechny vybrané id uživatele? (a/N) " +msgstr "Opravdu odvolat všechna vybraná ID uživatele? (a/N) " msgid "Really revoke this user ID? (y/N) " -msgstr "Opravdu revokovat tento id uživatele? (a/N) " +msgstr "Opravdu odvolat toto ID uživatele? (a/N) " msgid "Do you really want to revoke the entire key? (y/N) " -msgstr "Opravdu chcete revokovat celý klíč? (a/N) " +msgstr "Opravdu chcete odvolat celý klíč? (a/N) " msgid "Do you really want to revoke the selected subkeys? (y/N) " -msgstr "Opravdu chcete revokovat vybrané podklíče? (a/N) " +msgstr "Opravdu chcete odvolat vybrané podklíče? (a/N) " msgid "Do you really want to revoke this subkey? (y/N) " -msgstr "Opravdu chcete revokovat tento podklíč? (a/N) " +msgstr "Opravdu chcete odvolat tento podklíč? (a/N) " msgid "Owner trust may not be set while using a user provided trust database\n" msgstr "" @@ -3343,20 +3278,16 @@ msgstr "aktualizace selhala: %s\n" msgid "Key not changed so no update needed.\n" msgstr "Klíč nebyl změněn, takže není potřeba jej aktualizovat.\n" -#, fuzzy -#| msgid "You can't delete the last user ID!\n" msgid "cannot revoke the last valid user ID.\n" -msgstr "Nemůžete smazat poslední id uživatele!\n" +msgstr "poslední platné ID uživatele nelze odvolat.\n" -#, fuzzy, c-format -#| msgid "checking the trust list failed: %s\n" +#, c-format msgid "revoking the user ID failed: %s\n" -msgstr "kontrola seznamu důvěry se nepodařila: %s\n" +msgstr "odvolání ID uživatele se nepodařilo: %s\n" -#, fuzzy, c-format -#| msgid "checking the trust list failed: %s\n" +#, c-format msgid "setting the primary user ID failed: %s\n" -msgstr "kontrola seznamu důvěry se nepodařila: %s\n" +msgstr "nastavení primárního ID uživatele se nepodařilo: %s\n" #, c-format msgid "\"%s\" is not a fingerprint\n" @@ -3366,10 +3297,9 @@ msgstr "„%s“ není otisk\n" msgid "\"%s\" is not the primary fingerprint\n" msgstr "„%s“ není primární otisk\n" -#, fuzzy, c-format -#| msgid "read error in '%s': %s\n" +#, c-format msgid "Invalid user ID '%s': %s\n" -msgstr "chyba při čtení v „%s“: %s\n" +msgstr "Neplatné ID uživatele „%s“: %s\n" msgid "No matching user IDs." msgstr "Žádný identifikátor uživatele neodpovídá." @@ -3377,20 +3307,17 @@ msgstr "Žádný identifikátor uživatele neodpovídá." msgid "Nothing to sign.\n" msgstr "Nic na podepsání.\n" -#, fuzzy, c-format -#| msgid "'%s' is not a valid signature expiration\n" +#, c-format msgid "'%s' is not a valid expiration time\n" -msgstr "„%s“ není platná doba expirace podpisu\n" +msgstr "„%s“ není platná doba expirace\n" -#, fuzzy, c-format -#| msgid "\"%s\" is not a fingerprint\n" +#, c-format msgid "\"%s\" is not a proper fingerprint\n" -msgstr "„%s“ není otisk\n" +msgstr "„%s“ není řádný otisk\n" -#, fuzzy, c-format -#| msgid "key \"%s\" not found\n" +#, c-format msgid "subkey \"%s\" not found\n" -msgstr "klíč „%s“ nenalezen\n" +msgstr "podklíč „%s“ nenalezen\n" msgid "Digest: " msgstr "Hash: " @@ -3412,11 +3339,11 @@ msgstr "Uživatelský ID formátu PGP 2.x nemá žádné předvolby\n" #, c-format msgid "The following key was revoked on %s by %s key %s\n" -msgstr "V %s byl následující klíč revokován %s klíčem %s\n" +msgstr "V %s byl následující klíč odvolán %s klíčem %s\n" #, c-format msgid "This key may be revoked by %s key %s" -msgstr "Tento klíč může být revokován %s klíčem %s " +msgstr "Tento klíč může být odvolán %s klíčem %s " msgid "(sensitive)" msgstr "(citlivá informace)" @@ -3427,7 +3354,7 @@ msgstr "vytvořen: %s" #, c-format msgid "revoked: %s" -msgstr "revokován: %s" +msgstr "odvolán: %s" #, c-format msgid "expired: %s" @@ -3511,13 +3438,12 @@ msgstr "Smazat tento neznámý podpis? (a/N/u)" msgid "Really delete this self-signature? (y/N)" msgstr "Opravdu smazat tento podpis podepsaný sebou samým? (a/N)" -#, fuzzy, c-format -#| msgid "Deleted %d signature.\n" +#, c-format msgid "Deleted %d signature.\n" msgid_plural "Deleted %d signatures.\n" msgstr[0] "Smazán %d podpis.\n" -msgstr[1] "Smazán %d podpis.\n" -msgstr[2] "Smazán %d podpis.\n" +msgstr[1] "Smazány %d podpisy.\n" +msgstr[2] "Smazáno %d podpisů.\n" msgid "Nothing deleted.\n" msgstr "Nic nebylo smazáno.\n" @@ -3529,13 +3455,12 @@ msgstr "neplatný" msgid "User ID \"%s\" compacted: %s\n" msgstr "Uživatelské ID „%s“ směstnáno: %s\n" -#, fuzzy, c-format -#| msgid "User ID \"%s\": %d signature removed\n" +#, c-format msgid "User ID \"%s\": %d signature removed\n" msgid_plural "User ID \"%s\": %d signatures removed\n" -msgstr[0] "Uživatelské ID „%s“: %d podpisů odstraněno\n" -msgstr[1] "Uživatelské ID „%s“: %d podpisů odstraněno\n" -msgstr[2] "Uživatelské ID „%s“: %d podpisů odstraněno\n" +msgstr[0] "Uživatelské ID „%s“: odstraněn %d podpis\n" +msgstr[1] "Uživatelské ID „%s“: odstraněny %d podpisy\n" +msgstr[2] "Uživatelské ID „%s“: odstraněno %d podpisů\n" #, c-format msgid "User ID \"%s\": already minimized\n" @@ -3550,31 +3475,31 @@ msgid "" "cause\n" " some versions of PGP to reject this key.\n" msgstr "" -"VAROVÁNÍ: Toto je PGP2 klíč. Přidání 'pověření revokace' může v některých\n" +"VAROVÁNÍ: Toto je PGP2 klíč. Přidání pověřeého odvolatele může v některých\n" " verzích PGP vést k odmítnutí tohoto klíče.\n" msgid "You may not add a designated revoker to a PGP 2.x-style key.\n" -msgstr "Neměli by jste přidávat 'pověření revokace' k PGP2 klíči.\n" +msgstr "K PGP2 klíči byste neměli přidávat pověřeného odvolatele.\n" msgid "Enter the user ID of the designated revoker: " -msgstr "Vložte identifikátor uživatele pověřeného revokací: " +msgstr "Vložte identifikátor pověřeného odvolatele: " msgid "cannot appoint a PGP 2.x style key as a designated revoker\n" -msgstr "klíč formátu PGP 2.x nelze pověřit revokací\n" +msgstr "klíč formátu PGP 2.x nelze pověřit odvoláním\n" msgid "you cannot appoint a key as its own designated revoker\n" -msgstr "klíč nelze pověřit revokací jím samým\n" +msgstr "klíč nelze pověřit odvoláním sama sebe\n" msgid "this key has already been designated as a revoker\n" -msgstr "tento klíč již byl pověřen revokací\n" +msgstr "tento klíč již byl určen jako odvolatel\n" msgid "WARNING: appointing a key as a designated revoker cannot be undone!\n" msgstr "" -"VAROVÁNÍ: ustanovení klíče „pověřeným odvolatelem“ je nevratná operace!\n" +"VAROVÁNÍ: ustanovení klíče pověřeným odvolatelem je nevratná operace!\n" msgid "" "Are you sure you want to appoint this key as a designated revoker? (y/N) " -msgstr "Jste si jistí, že tento klíč chcete pověřit revokací? (a/N) " +msgstr "Jste si jistí, že tento klíč chcete pověřit odvoláním? (a/N) " msgid "" "Are you sure you want to change the expiration time for multiple subkeys? (y/" @@ -3652,10 +3577,10 @@ msgid "This signature expired on %s.\n" msgstr "Platnost podpisu vyprší %s.\n" msgid "Are you sure you still want to revoke it? (y/N) " -msgstr "Jste si jistý, že jej chcete stále revokovat? (a/N) " +msgstr "Jste si jisti, že jej chcete stále odvolat? (a/N) " msgid "Create a revocation certificate for this signature? (y/N) " -msgstr "Vytvořit pro tento podpis revokační certifikát? (a/N)" +msgstr "Vytvořit pro tento podpis odvolací certifikát? (a/N)" msgid "Not signed by you.\n" msgstr "Nepodepsáno vámi.\n" @@ -3669,50 +3594,47 @@ msgstr " (neodvolatelné)" #, c-format msgid "revoked by your key %s on %s\n" -msgstr "revokováno vaším klíčem %s v %s\n" +msgstr "odvoláno vaším klíčem %s v %s\n" msgid "You are about to revoke these signatures:\n" -msgstr "Chystáte se revokovat tyto podpisy:\n" +msgstr "Chystáte se odvolat tyto podpisy:\n" msgid "Really create the revocation certificates? (y/N) " -msgstr "Opravdu vytvořit revokační certifikáty? (a/N) " +msgstr "Opravdu vytvořit odvolací certifikáty? (a/N) " msgid "no secret key\n" msgstr "neexistuje tajný klíč\n" #, c-format msgid "tried to revoke a non-user ID: %s\n" -msgstr "" +msgstr "pokud odvolat ID neuživatele: %s\n" #, c-format msgid "user ID \"%s\" is already revoked\n" -msgstr "uživatelské ID „%s“ je již revokováno\n" +msgstr "uživatelské ID „%s“ je již odvoláno\n" #, c-format msgid "WARNING: a user ID signature is dated %d seconds in the future\n" msgstr "VAROVÁNÍ: podpis ID uživatele je datován %d sekund v budoucnosti\n" -#, fuzzy -#| msgid "You can't delete the last user ID!\n" msgid "Cannot revoke the last valid user ID.\n" -msgstr "Nemůžete smazat poslední id uživatele!\n" +msgstr "Poslední platné ID uživatele nelze odvolat.\n" #, c-format msgid "Key %s is already revoked.\n" -msgstr "Klíč %s je již revokován.\n" +msgstr "Klíč %s je již odvolán.\n" #, c-format msgid "Subkey %s is already revoked.\n" -msgstr "Podklíč %s je již revokován.\n" +msgstr "Podklíč %s je již odvolán.\n" #, c-format msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n" msgstr "Zobrazuji %s fotografický ID o velikosti %ld pro klíč %s (uid %d)\n" -#, fuzzy, c-format -#| msgid "invalid argument for option \"%.50s\"\n" +#, c-format msgid "invalid value for option '%s'\n" -msgstr "neplatný argument u volby „%.50s“\n" +msgstr "neplatný argument u volby „%s“\n" #, c-format msgid "preference '%s' duplicated\n" @@ -3920,7 +3842,7 @@ msgstr "" " y = doba platnosti podpisu skončí za n let\n" msgid "Key is valid for? (0) " -msgstr "Klíč je platný pro? (0) " +msgstr "Klíč je platný po? (0) " #, c-format msgid "Signature is valid for? (%s) " @@ -4178,45 +4100,40 @@ msgstr "Kritická podepisovací notace: " msgid "Signature notation: " msgstr "Podepisovací notace: " -#, fuzzy, c-format -#| msgid "%d good signatures\n" +#, c-format msgid "%d good signature\n" msgid_plural "%d good signatures\n" -msgstr[0] "%d dobrých podpisů\n" -msgstr[1] "%d dobrých podpisů\n" +msgstr[0] "%d dobrý podpis\n" +msgstr[1] "%d dobré podpisy\n" msgstr[2] "%d dobrých podpisů\n" -#, fuzzy, c-format -#| msgid "%d bad signatures\n" +#, c-format msgid "%d bad signature\n" msgid_plural "%d bad signatures\n" -msgstr[0] "%d špatných podpisů\n" -msgstr[1] "%d špatných podpisů\n" +msgstr[0] "%d špatný podpis\n" +msgstr[1] "%d špatné podpisy\n" msgstr[2] "%d špatných podpisů\n" -#, fuzzy, c-format -#| msgid "1 signature not checked due to a missing key\n" +#, c-format msgid "%d signature not checked due to a missing key\n" msgid_plural "%d signatures not checked due to missing keys\n" -msgstr[0] "1 podpis neověřen, protože chybí klíč\n" -msgstr[1] "1 podpis neověřen, protože chybí klíč\n" -msgstr[2] "1 podpis neověřen, protože chybí klíč\n" +msgstr[0] "%d podpis neověřen, protože chybí klíč\n" +msgstr[1] "%d podpisy neověřeny, protože chybí klíče\n" +msgstr[2] "%d podpisů neověřeno, protože chybí klíče\n" -#, fuzzy, c-format -#| msgid "1 signature not checked due to an error\n" +#, c-format msgid "%d signature not checked due to an error\n" msgid_plural "%d signatures not checked due to errors\n" -msgstr[0] "1 podpis neověřen, protože vznikla chyba\n" -msgstr[1] "1 podpis neověřen, protože vznikla chyba\n" -msgstr[2] "1 podpis neověřen, protože vznikla chyba\n" +msgstr[0] "%d podpis neověřen, protože došlo k chybě\n" +msgstr[1] "%d podpisy neověřeny, protože došlo k chybám\n" +msgstr[2] "%d podpisů neověřeno, protože došlo k chybám\n" -#, fuzzy, c-format -#| msgid "Warning: %lu key(s) skipped due to their large size\n" +#, c-format msgid "Warning: %lu key skipped due to its large size\n" msgid_plural "Warning: %lu keys skipped due to their large sizes\n" -msgstr[0] "Pozor: %lu klíč(ů) přeskočen(o) kvůli jejich přílišné velikosti\n" -msgstr[1] "Pozor: %lu klíč(ů) přeskočen(o) kvůli jejich přílišné velikosti\n" -msgstr[2] "Pozor: %lu klíč(ů) přeskočen(o) kvůli jejich přílišné velikosti\n" +msgstr[0] "Pozor: %lu klíč přeskočen kvůli jeho přílišné velikosti\n" +msgstr[1] "Pozor: %lu klíče přeskočeny kvůli jejich přílišné velikosti\n" +msgstr[2] "Pozor: %lu klíčů přeskočeno kvůli jejich přílišné velikosti\n" msgid "Keyring" msgstr "Soubor klíčů (keyring)" @@ -4245,29 +4162,26 @@ msgstr " Sériové číslo karty =" msgid "caching keyring '%s'\n" msgstr "zapamatovává se soubor klíčů „%s“\n" -#, fuzzy, c-format -#| msgid "%lu keys cached so far (%lu signatures)\n" +#, c-format msgid "%lu keys cached so far (%lu signature)\n" msgid_plural "%lu keys cached so far (%lu signatures)\n" -msgstr[0] "%lu klíčů již uloženo v keši (%lu podpisů)\n" -msgstr[1] "%lu klíčů již uloženo v keši (%lu podpisů)\n" +msgstr[0] "%lu klíčů již uloženo v keši (%lu podpis)\n" +msgstr[1] "%lu klíčů již uloženo v keši (%lu podpisy)\n" msgstr[2] "%lu klíčů již uloženo v keši (%lu podpisů)\n" -#, fuzzy, c-format -#| msgid "flush the cache" +#, c-format msgid "%lu key cached" msgid_plural "%lu keys cached" -msgstr[0] "vyprázdní keš" -msgstr[1] "vyprázdní keš" -msgstr[2] "vyprázdní keš" +msgstr[0] "%lu klíč uložen v keši" +msgstr[1] "%lu klíče uloženy v keši" +msgstr[2] "%lu klíčů uloženo v keši" -#, fuzzy, c-format -#| msgid "1 bad signature\n" +#, c-format msgid " (%lu signature)\n" msgid_plural " (%lu signatures)\n" -msgstr[0] "1 špatný podpis\n" -msgstr[1] "1 špatný podpis\n" -msgstr[2] "1 špatný podpis\n" +msgstr[0] " (%lu podpis)\n" +msgstr[1] " (%lu podpisy)\n" +msgstr[2] " (%lu podpisů)\n" #, c-format msgid "%s: keyring created\n" @@ -4308,13 +4222,12 @@ msgstr "neplatný protokol serveru klíčů (naše %d!=obsluha %d)\n" msgid "\"%s\" not a key ID: skipping\n" msgstr "„%s“ není ID klíče: přeskočeno\n" -#, fuzzy, c-format -#| msgid "refreshing %d keys from %s\n" +#, c-format msgid "refreshing %d key from %s\n" msgid_plural "refreshing %d keys from %s\n" -msgstr[0] "aktualizuji %d klíčů z %s\n" -msgstr[1] "aktualizuji %d klíčů z %s\n" -msgstr[2] "aktualizuji %d klíčů z %s\n" +msgstr[0] "aktualizuje se %d klíč z %s\n" +msgstr[1] "aktualizují se %d klíče z %s\n" +msgstr[2] "aktualizuje se %d klíčů z %s\n" #, c-format msgid "WARNING: unable to refresh key %s via %s: %s\n" @@ -4332,16 +4245,14 @@ msgstr "žádný server klíčů není znám (použijte volbu --keyserver)\n" #, c-format msgid "requesting key %s from %s server %s\n" -msgstr "požaduji klíč %s ze %s server %s\n" +msgstr "požaduji klíč %s z %s serveru %s\n" #, c-format msgid "requesting key %s from %s\n" msgstr "požaduji klíč %s z %s\n" -#, fuzzy -#| msgid "no keyserver action!\n" msgid "no keyserver known\n" -msgstr "žádná operace se serverem klíčů!\n" +msgstr "není znám žádný server s klíči\n" #, c-format msgid "skipped \"%s\": %s\n" @@ -4476,10 +4387,9 @@ msgstr " použití %s klíče %s\n" msgid "Signature made %s using %s key ID %s\n" msgstr "Podpis vytvořen %s pomocí klíče %s s ID uživatele %s\n" -#, fuzzy, c-format -#| msgid " aka \"%s\"" +#, c-format msgid " issuer \"%s\"\n" -msgstr " alias „%s“" +msgstr " vydavatel „%s“\n" msgid "Key available at: " msgstr "Klíč k dispozici na: " @@ -4491,10 +4401,9 @@ msgstr "[nejistý]" msgid " aka \"%s\"" msgstr " alias „%s“" -#, fuzzy, c-format -#| msgid "WARNING: This key is not certified with a trusted signature!\n" +#, c-format msgid "WARNING: This key is not suitable for signing in %s mode\n" -msgstr "VAROVÁNÍ: Tento klíč není certifikován důvěryhodným podpisem!\n" +msgstr "POZOR: Tento klíč se nehodí na podepisování v režimu %s\n" #, c-format msgid "Signature expired %s\n" @@ -4573,18 +4482,16 @@ msgstr "VAROVÁNÍ: vyžádaný algoritmus %s není doporučen\n" msgid "Note: signatures using the %s algorithm are rejected\n" msgstr "Poznámka: podpisy používající algoritmus %s jsou zamítány\n" -#, fuzzy, c-format -#| msgid "%s:%u: read error: %s\n" +#, c-format msgid "(reported error: %s)\n" -msgstr "%s:%u: chyba čtení: %s\n" +msgstr "(nahlášená chyba: %s)\n" -#, fuzzy, c-format -#| msgid "read error in '%s': %s\n" +#, c-format msgid "(reported error: %s <%s>)\n" -msgstr "chyba při čtení v „%s“: %s\n" +msgstr "(nahlášená chyba: %s <%s>)\n" msgid "(further info: " -msgstr "" +msgstr "(podrobnosti: " #, c-format msgid "%s:%d: deprecated option \"%s\"\n" @@ -4851,25 +4758,18 @@ msgstr "Tento klíč pravděpodobně náleží uvedenému uživateli\n" msgid "This key belongs to us\n" msgstr "Tento klíč náleží nám (máme odpovídající tajný klíč)\n" -#, fuzzy, c-format -#| msgid "root certificate has now been marked as trusted\n" +#, c-format msgid "%s: This key is bad! It has been marked as untrusted!\n" -msgstr "kořenový certifikát byl nyní označen za důvěryhodný\n" +msgstr "%s: Tento klíč je špatný! Byl označen jako nedůvěryhodný!\n" -#, fuzzy -#| msgid "" -#| "It is NOT certain that the key belongs to the person named\n" -#| "in the user ID. If you *really* know what you are doing,\n" -#| "you may answer the next question with yes.\n" msgid "" "This key is bad! It has been marked as untrusted! If you\n" "*really* know what you are doing, you may answer the next\n" "question with yes.\n" msgstr "" -"NENÍ jisté, zda tento klíč patří osobě, jejíž jméno je uvedeno\n" -"v uživatelském ID. Pokud *skutečně* víte, co děláte, můžete na\n" -"následující otázku odpovědět ano\n" -"\n" +"Tento klíč je špatný! Byl označen jako nedůvěryhodný!\n" +"Pokud *skutečně* víte, co děláte, můžete na\n" +"následující otázku odpovědět ano.\n" msgid "" "It is NOT certain that the key belongs to the person named\n" @@ -4878,8 +4778,7 @@ msgid "" msgstr "" "NENÍ jisté, zda tento klíč patří osobě, jejíž jméno je uvedeno\n" "v uživatelském ID. Pokud *skutečně* víte, co děláte, můžete na\n" -"následující otázku odpovědět ano\n" -"\n" +"následující otázku odpovědět ano.\n" msgid "Use this key anyway? (y/N) " msgstr "Použít přesto tento klíč? (a/N) " @@ -4956,10 +4855,9 @@ msgstr "%s: přeskočeno: veřejný klíč je neplatný (disabled)\n" msgid "%s: skipped: public key already present\n" msgstr "%s: přeskočeno: veřejný klíč je již obsažen v databázi\n" -#, fuzzy, c-format -#| msgid "can't connect to '%s': %s\n" +#, c-format msgid "can't encrypt to '%s'\n" -msgstr "nelze se připojit k „%s“: %s\n" +msgstr "nelze zašifrovat pro „%s“\n" #, c-format msgid "option '%s' given, but no valid default keys given\n" @@ -4970,8 +4868,7 @@ msgid "option '%s' given, but option '%s' not given\n" msgstr "zadána volba „%s“, ale chybí volba „%s“\n" msgid "You did not specify a user ID. (you may use \"-r\")\n" -msgstr "" -"Nespecifikoval jste identifikátor uživatele (user ID). Můžete použít \"-r\"\n" +msgstr "Nezadali jste identifikátor uživatele (můžete použít \"-r\")\n" msgid "Current recipients:\n" msgstr "Aktuální příjemci:\n" @@ -5034,17 +4931,16 @@ msgstr "nelze otevřít podepsaná data „%s“\n" msgid "can't open signed data fd=%d: %s\n" msgstr "nelze otevřít podepsaná data na deskriptoru=%d: %s\n" -#, fuzzy, c-format -#| msgid "certificate is not usable for encryption\n" +#, c-format msgid "key %s is not suitable for decryption in %s mode\n" -msgstr "certifikát není použitelný pro šifrování\n" +msgstr "klíč %s se nehodí na rozšifrování v režimu %s\n" #, c-format msgid "anonymous recipient; trying secret key %s ...\n" -msgstr "anonymní adresát; zkouším tajný klíč %s…\n" +msgstr "anonymní adresát; zkusí se tajný klíč %s…\n" msgid "okay, we are the anonymous recipient.\n" -msgstr "o.k., my jsme anonymní adresát.\n" +msgstr "dobrá, my jsme anonymní adresát.\n" msgid "old encoding of the DEK is not supported\n" msgstr "staré kódování DEK není podporováno\n" @@ -5106,13 +5002,10 @@ msgid "" "declare that a key shall not anymore be used. It is not possible\n" "to retract such a revocation certificate once it has been published." msgstr "" +"Odovolací certifikát je svým způsoben „bezpečnostní vypínač“, který\n" +"veřejně prohlašuje, že klíč by se již neměl používat. Jednou zveřejněný\n" +"odvolací certifikát již nelze vzít zpět." -#, fuzzy -#| msgid "" -#| "Use it to revoke this key in case of a compromise or loss of\n" -#| "the secret key. However, if the secret key is still accessible,\n" -#| "it is better to generate a new revocation certificate and give\n" -#| "a reason for the revocation." msgid "" "Use it to revoke this key in case of a compromise or loss of\n" "the secret key. However, if the secret key is still accessible,\n" @@ -5122,26 +5015,24 @@ msgid "" msgstr "" "Použijte jej pro odvolání tohoto klíče v případě zneužití nebo ztráty\n" "soukromého klíče. Avšak bude-li soukromý klíč stále přístupný, bude\n" -"lepší vytvořit nový revokační certifikát s vysvětlením odvolání." +"lepší vytvořit nový odvolací certifikát s odůvodněním odvolání.\n" +"Podrobnosti naleznete v manuálu GnuPG u popisu příkazu\n" +"„gpg --generate-revocation“." -#, fuzzy -#| msgid "" -#| "To avoid an accidental use of this file, a colon has been inserted\n" -#| "before the 5 dashes below. Remove this colon with a text editor\n" -#| "before making use of this revocation certificate." msgid "" "To avoid an accidental use of this file, a colon has been inserted\n" "before the 5 dashes below. Remove this colon with a text editor\n" "before importing and publishing this revocation certificate." msgstr "" -"Aby se zabránilo nechtěnému použití tohoto souboru, před 5 pomlček byla\n" -"vložena dvojtečka. Před použitím tohoto revokačního certifikátu odstraňte\n" -"tuto dvojtečku textovým editorem." +"Aby se zabránilo nechtěnému použití tohoto souboru, níže před 5 pomlček " +"byla\n" +"vložena dvojtečka. Před importem a zveřejněním tohoto odvolacího " +"certifikátu\n" +"odstraňte tuto dvojtečku textovým editorem." -#, fuzzy, c-format -#| msgid "Revocation certificate created.\n" +#, c-format msgid "revocation certificate stored as '%s.rev'\n" -msgstr "Revokační certifikát vytvořen.\n" +msgstr "odvolací certifikát uložen jako „%s.rev“\n" #, c-format msgid "secret key \"%s\" not found\n" @@ -5222,10 +5113,9 @@ msgstr "%s klíč %s vyžaduje hash o délce %zu nebo více bitů (hash je %s)\ msgid "WARNING: signature digest conflict in message\n" msgstr "VAROVÁNÍ: konflikt hashe podpisu ve zprávě\n" -#, fuzzy, c-format -#| msgid "you may not use %s while in %s mode\n" +#, c-format msgid "key %s may not be used for signing in %s mode\n" -msgstr "použití %s není v módu %s dovoleno\n" +msgstr "klíč %s se nesmí používat v režimu %s\n" #, c-format msgid "WARNING: signing subkey %s is not cross-certified\n" @@ -5239,54 +5129,48 @@ msgstr "více informací naleznete na adrese %s\n" msgid "WARNING: signing subkey %s has an invalid cross-certification\n" msgstr "VAROVÁNÍ: podepisovací podklíč %s má neplatnou křížovou certifikaci\n" -#, fuzzy, c-format -#| msgid "public key %s is %lu second newer than the signature\n" +#, c-format msgid "public key %s is %lu second newer than the signature\n" msgid_plural "public key %s is %lu seconds newer than the signature\n" -msgstr[0] "veřejný klíč %s je o %lu sekund novější než podpis\n" -msgstr[1] "veřejný klíč %s je o %lu sekund novější než podpis\n" +msgstr[0] "veřejný klíč %s je o %lu sekundu novější než podpis\n" +msgstr[1] "veřejný klíč %s je o %lu sekundy novější než podpis\n" msgstr[2] "veřejný klíč %s je o %lu sekund novější než podpis\n" -#, fuzzy, c-format -#| msgid "public key %s is %lu second newer than the signature\n" +#, c-format msgid "public key %s is %lu day newer than the signature\n" msgid_plural "public key %s is %lu days newer than the signature\n" -msgstr[0] "veřejný klíč %s je o %lu sekund novější než podpis\n" -msgstr[1] "veřejný klíč %s je o %lu sekund novější než podpis\n" -msgstr[2] "veřejný klíč %s je o %lu sekund novější než podpis\n" +msgstr[0] "veřejný klíč %s je o %lu den novější než podpis\n" +msgstr[1] "veřejný klíč %s je o %lu dny novější než podpis\n" +msgstr[2] "veřejný klíč %s je o %lu dnů novější než podpis\n" -#, fuzzy, c-format -#| msgid "" -#| "key %s was created %lu second in the future (time warp or clock problem)\n" +#, c-format msgid "" "key %s was created %lu second in the future (time warp or clock problem)\n" msgid_plural "" "key %s was created %lu seconds in the future (time warp or clock problem)\n" msgstr[0] "" -"klíč %s byl vytvořen %lu sekund v budoucnosti (došlo ke změně času nebo\n" -"je problém se systémovým časem)\n" +"klíč %s byl vytvořen %lu sekundu v budoucnosti (došlo ke změně času nebo\n" +"je problém s hodinami)\n" msgstr[1] "" -"klíč %s byl vytvořen %lu sekund v budoucnosti (došlo ke změně času nebo\n" -"je problém se systémovým časem)\n" +"klíč %s byl vytvořen %lu sekundy v budoucnosti (došlo ke změně času nebo\n" +"je problém s hodinami)\n" msgstr[2] "" "klíč %s byl vytvořen %lu sekund v budoucnosti (došlo ke změně času nebo\n" -"je problém se systémovým časem)\n" +"je problém s hodinami)\n" -#, fuzzy, c-format -#| msgid "" -#| "key %s was created %lu second in the future (time warp or clock problem)\n" +#, c-format msgid "key %s was created %lu day in the future (time warp or clock problem)\n" msgid_plural "" "key %s was created %lu days in the future (time warp or clock problem)\n" msgstr[0] "" -"klíč %s byl vytvořen %lu sekund v budoucnosti (došlo ke změně času nebo\n" -"je problém se systémovým časem)\n" +"klíč %s byl vytvořen %lu den v budoucnosti (došlo ke změně času nebo\n" +"je problém s hodinami)\n" msgstr[1] "" -"klíč %s byl vytvořen %lu sekund v budoucnosti (došlo ke změně času nebo\n" -"je problém se systémovým časem)\n" +"klíč %s byl vytvořen %lu dny v budoucnosti (došlo ke změně času nebo\n" +"je problém s hodinami)\n" msgstr[2] "" -"klíč %s byl vytvořen %lu sekund v budoucnosti (došlo ke změně času nebo\n" -"je problém se systémovým časem)\n" +"klíč %s byl vytvořen %lu dnů v budoucnosti (došlo ke změně času nebo\n" +"je problém s hodinami)\n" #, c-format msgid "Note: signature key %s expired %s\n" @@ -5515,339 +5399,320 @@ msgstr "nemohu pracovat s řádky delšími než %d znaků\n" msgid "input line longer than %d characters\n" msgstr "vstupní řádek je delší než %d znaků\n" -#, fuzzy, c-format -#| msgid "error sending standard options: %s\n" +#, c-format msgid "error beginning transaction on TOFU database: %s\n" -msgstr "chyba při odesílání standardního parametru: %s\n" +msgstr "chyba při zahájení transakce v databázi TOFU: %s\n" #, c-format msgid "error committing transaction on TOFU database: %s\n" -msgstr "" +msgstr "chyba při potvrzování transakce v datázi TOFU: %s\n" #, c-format msgid "error rolling back transaction on TOFU database: %s\n" -msgstr "" - -#, fuzzy, c-format -#| msgid "unsupported algorithm: %s" -msgid "unsupported TOFU database version: %s\n" -msgstr "nepodporovaný algoritmus: %s" - -#, fuzzy, c-format -#| msgid "error creating temporary file: %s\n" -msgid "error creating 'ultimately_trusted_keys' TOFU table: %s\n" -msgstr "chyba při vytváření dočasného souboru: %s\n" - -msgid "TOFU DB error" -msgstr "" - -#, fuzzy, c-format -#| msgid "error sending data: %s\n" -msgid "error reading TOFU database: %s\n" -msgstr "chyba při odesílání dat: %s\n" - -#, fuzzy, c-format -#| msgid "error writing base64 encoding: %s\n" -msgid "error determining TOFU database's version: %s\n" -msgstr "chyba při zápisu kódování base64: %s\n" - -#, fuzzy, c-format -#| msgid "error initializing reader object: %s\n" -msgid "error initializing TOFU database: %s\n" -msgstr "chyba při inicializaci čtecího objektu: %s\n" - -#, fuzzy, c-format -#| msgid "error sending data: %s\n" -msgid "error creating 'encryptions' TOFU table: %s\n" -msgstr "chyba při odesílání dat: %s\n" +msgstr "chyba při odvolávání transakce v databázi TOFU: %s\n" +#, c-format +msgid "unsupported TOFU database version: %s\n" +msgstr "nepodporovaná verze databáze TOFU: %s\n" + +#, c-format +msgid "error creating 'ultimately_trusted_keys' TOFU table: %s\n" +msgstr "chyba při vytváření TOFU tabulky „ultimately_trusted_keys“: %s\n" + +msgid "TOFU DB error" +msgstr "Chyba databáze TOFU" + +#, c-format +msgid "error reading TOFU database: %s\n" +msgstr "chyba při čtení databáze TOFU: %s\n" + +#, c-format +msgid "error determining TOFU database's version: %s\n" +msgstr "chyba při zjišťování databáze TOFU: %s\n" + +#, c-format +msgid "error initializing TOFU database: %s\n" +msgstr "chyba při inicializaci databáze TOFU: %s\n" + +#, c-format +msgid "error creating 'encryptions' TOFU table: %s\n" +msgstr "chyba při vytváření TOFU tabulky „encryptions“: %s\n" + +# ??? Typo: error adding #, c-format msgid "adding column effective_policy to bindings DB: %s\n" -msgstr "" +msgstr "přidávání sloupce effective_policy do vazeb databáze: %s\n" -#, fuzzy, c-format -#| msgid "error opening '%s': %s\n" +#, c-format msgid "error opening TOFU database '%s': %s\n" -msgstr "chyba při otevírání „%s“: %s\n" +msgstr "chyba při otevírání databáze TOFU „%s“: %s\n" -#, fuzzy, c-format -#| msgid "error sending data: %s\n" +#, c-format msgid "error updating TOFU database: %s\n" -msgstr "chyba při odesílání dat: %s\n" +msgstr "chyba při aktualizaci databáze TOFU: %s\n" #, c-format msgid "" "This is the first time the email address \"%s\" is being used with key %s." -msgstr "" +msgstr "Toto je poprvé, co se e-mailová adresa „%s“ používá s klíčem %s." #, c-format msgid "The email address \"%s\" is associated with %d key!" msgid_plural "The email address \"%s\" is associated with %d keys!" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "E-mailová adresa „%s“ je přidružena k %d klíči!" +msgstr[1] "E-mailová adresa „%s“ je přidružena k %d klíčům!" +msgstr[2] "E-mailová adresa „%s“ je přidružena k %d klíčům!" msgid " Since this binding's policy was 'auto', it has been changed to 'ask'." msgstr "" +" Protože pravidlo této vazby bylo „auto“, bylo změněno na „ask“ (zeptat se)." #, c-format msgid "" "Please indicate whether this email address should be associated with key %s " "or whether you think someone is impersonating \"%s\"." msgstr "" +"Prosím naznačte, jestli tato e-mailová adresa má být spojována s klíčem %s " +"nebo jestli si mylíste, že někdo se vydává za „%s“\n" +"." -#, fuzzy, c-format -#| msgid "error getting responder ID: %s\n" +#, c-format msgid "error gathering other user IDs: %s\n" -msgstr "chyba při zjišťování ID odpovídače: %s\n" +msgstr "chyba při sběru dalších ID uživetele: %s\n" -#, fuzzy -#| msgid "list key and user IDs" msgid "This key's user IDs:\n" -msgstr "vypsat seznam klíčů a id uživatelů" +msgstr "ID uživatelů tohoto klíče:\n" -#, fuzzy, c-format -#| msgid "validity: %s" +#, c-format msgid "policy: %s" -msgstr "platnost: %s" +msgstr "politika: %s" -#, fuzzy, c-format -#| msgid "error getting stored flags: %s\n" +#, c-format msgid "error gathering signature stats: %s\n" -msgstr "chyba při získání uložených příznaků: %s\n" +msgstr "chyba při sběru údajů o podpisech: %s\n" #, c-format msgid "The email address \"%s\" is associated with %d key:\n" msgid_plural "The email address \"%s\" is associated with %d keys:\n" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "E-mailová adresa „%s“ je spojena s %d klíčem:\n" +msgstr[1] "E-mailová adresa „%s“ je spojena s %d klíči:\n" +msgstr[2] "E-mailová adresa „%s“ je spojena s %d klíči:\n" #, c-format msgid "Statistics for keys with the email address \"%s\":\n" -msgstr "" +msgstr "Statistika pro klíče s e-mailovou adresou „%s“:\n" -#, fuzzy -#| msgid "list keys" msgid "this key" -msgstr "vypsat seznam klíčů" +msgstr "tento klíč" -#, fuzzy, c-format -#| msgid "print message digests" +#, c-format msgid "Verified %d message." msgid_plural "Verified %d messages." -msgstr[0] "vypsat hash zprávy" -msgstr[1] "vypsat hash zprávy" -msgstr[2] "vypsat hash zprávy" +msgstr[0] "%d zpráva ověřena." +msgstr[1] "%d zprávy ověřeny." +msgstr[2] "%d zpráv ověřeno." -#, fuzzy, c-format -#| msgid "encrypted with %lu passphrases\n" +#, c-format msgid "Encrypted %d message." msgid_plural "Encrypted %d messages." -msgstr[0] "zašifrováno s heslem %lu\n" -msgstr[1] "zašifrováno s heslem %lu\n" -msgstr[2] "zašifrováno s heslem %lu\n" +msgstr[0] "%d zpráva zašifrována." +msgstr[1] "%d zprávy zašifrovýny." +msgstr[2] "%d zpráv zašifrováno." -#, fuzzy, c-format -#| msgid "print message digests" +#, c-format msgid "Verified %d message in the future." msgid_plural "Verified %d messages in the future." -msgstr[0] "vypsat hash zprávy" -msgstr[1] "vypsat hash zprávy" -msgstr[2] "vypsat hash zprávy" +msgstr[0] "Ověřena %d zpráva v budoucnosti." +msgstr[1] "Ověřeny %d zprávy v budoucnosti." +msgstr[2] "Ověřeno %d zpráv v budoucnosti." -#, fuzzy, c-format -#| msgid "print message digests" +#, c-format msgid "Encrypted %d message in the future." msgid_plural "Encrypted %d messages in the future." -msgstr[0] "vypsat hash zprávy" -msgstr[1] "vypsat hash zprávy" -msgstr[2] "vypsat hash zprávy" +msgstr[0] "Zašifrována %d zpráva v budoucnosti." +msgstr[1] "Zašifrovány %d zprávy v budoucnosti." +msgstr[2] "Zašifrováno %d zpráv v budoucnosti." #, c-format msgid "Messages verified over the past %d day: %d." msgid_plural "Messages verified over the past %d days: %d." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Ověřeno zpráv za poslední %d den: %d." +msgstr[1] "Ověřeno zpráv za poslední %d dny: %d." +msgstr[2] "Ověřeno zpráv za posledních %d dnů: %d." #, c-format msgid "Messages encrypted over the past %d day: %d." msgid_plural "Messages encrypted over the past %d days: %d." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Zašifrováno zpráv za poslední %d den: %d." +msgstr[1] "Zašifrováno zpráv za poslední %d dny: %d." +msgstr[2] "Zašifrováno zpráv za posledních %d dnů: %d." #, c-format msgid "Messages verified over the past %d month: %d." msgid_plural "Messages verified over the past %d months: %d." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Ověřeno zpráv za poslední %d měsíc: %d." +msgstr[1] "Ověřeno zpráv za poslední %d měsíce: %d." +msgstr[2] "Ověřeno zpráv za posledních %d měsíců: %d." #, c-format msgid "Messages encrypted over the past %d month: %d." msgid_plural "Messages encrypted over the past %d months: %d." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Zašifrováno zpráv za poslední %d měsíc: %d." +msgstr[1] "Zašifrováno zpráv za poslední %d měsíce: %d." +msgstr[2] "Zašifrováno zpráv za posledních %d měsíců: %d." #, c-format msgid "Messages verified over the past %d year: %d." msgid_plural "Messages verified over the past %d years: %d." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Zpráv ověřeno za poslední %d rok: %d." +msgstr[1] "Zpráv ověřeno za poslední %d roky: %d." +msgstr[2] "Zpráv ověřeno za posledních %d roků: %d." #, c-format msgid "Messages encrypted over the past %d year: %d." msgid_plural "Messages encrypted over the past %d years: %d." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Ověřeno zpráv za poslední %d rok: %d." +msgstr[1] "Ověřeno zpráv za poslední %d roky: %d." +msgstr[2] "Ověřeno zpráv za posledních %d roků: %d." #, c-format msgid "Messages verified in the past: %d." -msgstr "" +msgstr "Zpráv ověřeno v minulosti: %d." -#, fuzzy, c-format -#| msgid "print message digests" +#, c-format msgid "Messages encrypted in the past: %d." -msgstr "vypsat hash zprávy" +msgstr "Zpráv zašifrovno v minulosti: %d." #. TRANSLATORS: Please translate the text found in the source #. * file below. We don't directly internationalize that text so #. * that we can tweak it without breaking translations. msgid "TOFU detected a binding conflict" -msgstr "" +msgstr "TOFU objevilo konflikt ve vazbě" #. TRANSLATORS: Two letters (normally the lower and upper case #. * version of the hotkey) for each of the five choices. If #. * there is only one choice in your language, repeat it. msgid "gGaAuUrRbB" -msgstr "" +msgstr "gGaAuUrRbB" msgid "(G)ood, (A)ccept once, (U)nknown, (R)eject once, (B)ad? " -msgstr "" +msgstr "(D)obrý, (P)řijmout jednou, (N)eznámý, (O)dmítnout jednou, špa(T)ný? " msgid "Defaulting to unknown.\n" -msgstr "" +msgstr "Použíje se výchozí volba neznýmý.\n" msgid "TOFU db corruption detected.\n" -msgstr "" +msgstr "Zjistěno poškození databýze TOFU.\n" -#, fuzzy, c-format -#| msgid "error writing key: %s\n" +#, c-format msgid "resetting keydb: %s\n" -msgstr "chyba při zápisu klíče: %s\n" +msgstr "databáze klíčů se resetuje: %s\n" -#, fuzzy, c-format -#| msgid "error setting OCSP target: %s\n" +#, c-format msgid "error setting TOFU binding's policy to %s\n" -msgstr "chyba při nastavování cíle OCSP: %s\n" +msgstr "chyba při nastavování politiky vazby TOFU na %s\n" -#, fuzzy, c-format -#| msgid "error creating a pipe: %s\n" +#, c-format msgid "error changing TOFU policy: %s\n" -msgstr "chyba při vytváření roury: %s\n" +msgstr "chyba při měnění politiky TOFU: %s\n" +# These strings are used as an argument in "Verified 2 signatures in past %s." #, c-format msgid "%lld~year" msgid_plural "%lld~years" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%lld~roku" +msgstr[1] "%lld~roků" +msgstr[2] "%lld~roků" #, c-format msgid "%lld~month" msgid_plural "%lld~months" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%lld~měsíce" +msgstr[1] "%lld~měsíců" +msgstr[2] "%lld~měsíců" #, c-format msgid "%lld~week" msgid_plural "%lld~weeks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%lld~týdne" +msgstr[1] "%lld~týdnů" +msgstr[2] "%lld~týdnů" #, c-format msgid "%lld~day" msgid_plural "%lld~days" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%lld~dne" +msgstr[1] "%lld~dnů" +msgstr[2] "%lld~dnů" #, c-format msgid "%lld~hour" msgid_plural "%lld~hours" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%lld~hodiny" +msgstr[1] "%lld~hodin" +msgstr[2] "%lld~hodin" #, c-format msgid "%lld~minute" msgid_plural "%lld~minutes" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%lld~minuty" +msgstr[1] "%lld~minut" +msgstr[2] "%lld~minut" #, c-format msgid "%lld~second" msgid_plural "%lld~seconds" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%lld~sekundy" +msgstr[1] "%lld~sekund" +msgstr[2] "%lld~sekund" #, c-format msgid "%s: Verified 0~signatures and encrypted 0~messages." -msgstr "" +msgstr "%s: Ověřeno 0~podpisů a zašifrováno 0~zpráv." -#, fuzzy, c-format -#| msgid "Deleted %d signatures.\n" +#, c-format msgid "%s: Verified 0 signatures." -msgstr "Smazáno %d podpisů.\n" +msgstr "%s: Ověřeno 0 podpisů." -#, fuzzy, c-format -#| msgid "print message digests" +# The final %s is replaced by a string like "7~months". +#, c-format msgid "%s: Verified %ld~signature in the past %s." msgid_plural "%s: Verified %ld~signatures in the past %s." -msgstr[0] "vypsat hash zprávy" -msgstr[1] "vypsat hash zprávy" -msgstr[2] "vypsat hash zprávy" +msgstr[0] "%s: Ověřen %ld~podpis za poslední období %s." +msgstr[1] "%s: Ověřeny %ld~podpisy za poslední období %s." +msgstr[2] "%s: Ověřeno %ld~podpisů za poslední období %s." -#, fuzzy -#| msgid "encrypted with %lu passphrases\n" msgid "Encrypted 0 messages." -msgstr "zašifrováno s heslem %lu\n" +msgstr "Zašifrováno 0 zpráv." -#, fuzzy, c-format -#| msgid "print message digests" +#, c-format msgid "Encrypted %ld~message in the past %s." msgid_plural "Encrypted %ld~messages in the past %s." -msgstr[0] "vypsat hash zprávy" -msgstr[1] "vypsat hash zprávy" -msgstr[2] "vypsat hash zprávy" +msgstr[0] "Zašifrována %ld~zpráva za poslední období %s." +msgstr[1] "Zašifrovány %ld~zprávy za poslední období %s." +msgstr[2] "Zašifrováno %ld~zpráv za poslední období %s." -#, fuzzy, c-format -#| msgid "validity: %s" +#, c-format msgid "(policy: %s)" -msgstr "platnost: %s" +msgstr "(politika: %s)" msgid "" "Warning: we have yet to see a message signed using this key and user id!\n" msgstr "" +"Pozor: ještě musíme vidět zprávu podepsanou tímto klíčem a idenitou " +"uživatele!\n" msgid "" "Warning: we've only seen one message signed using this key and user id!\n" msgstr "" +"Pozor: viděli jsme pouze jednu zprávu podepsanou tímto klíčem a idenitou\n" +"uživatele!\n" msgid "Warning: you have yet to encrypt a message to this key!\n" -msgstr "" +msgstr "Pozor: ješte je třeba zašifrovat zprávu tímto klíčem!\n" msgid "Warning: you have only encrypted one message to this key!\n" -msgstr "" +msgstr "Pozor: tímto klíčem jste zašifrovali pouze jednu zprávu!\n" #, c-format msgid "" @@ -5863,22 +5728,37 @@ msgid_plural "" " %s\n" "to mark it as being bad.\n" msgstr[0] "" +"Pozor: Pokud si myslíte, že jste viděli více podpisů tímto klíčem a " +"identitou uživatele, pak tento klíč může být podvrh! Pečlivě prozkoumejte e-" +"mailovou adresu. Jestliže je klíč podezřelý, použijte příkaz\n" +" %s\n" +"k označení, že je špatný.\n" msgstr[1] "" +"Pozor: Pokud si myslíte, že jste viděli více podpisů tímto klíčem a s těmito " +"identitami uživatele, pak tento klíč může být podvrh! Pečlivě prozkoumejte e-" +"mailové adresy. Jestliže je klíč podezřelý, použijte příkaz\n" +" %s\n" +"k označení, že je špatný.\n" msgstr[2] "" +"Pozor: Pokud si myslíte, že jste viděli více podpisů tímto klíčem a s těmito " +"identitami uživatele, pak tento klíč může být podvrh! Pečlivě prozkoumejte e-" +"mailové adresy. Jestliže je klíč podezřelý, použijte příkaz\n" +" %s\n" +"k označení, že je špatný.\n" -#, fuzzy, c-format -#| msgid "error sending data: %s\n" +#, c-format msgid "error opening TOFU database: %s\n" -msgstr "chyba při odesílání dat: %s\n" +msgstr "chyba při otevírání databáze TOFU: %s\n" #, c-format msgid "WARNING: Encrypting to %s, which has no non-revoked user ids\n" msgstr "" +"POZOR: Šifruje se pro %s, kterýžto nemá neodvolané identity uživatele\n" -#, fuzzy, c-format -#| msgid "error writing public keyring '%s': %s\n" +#, c-format msgid "error setting policy for key %s, user id \"%s\": %s" -msgstr "chyba při zápisu do souboru veřejných klíčů „%s“: %s\n" +msgstr "" +"chyba při nastavování politiky pro klíč %s a identitu uživatele „%s“: %s" #, c-format msgid "'%s' is not a valid long keyID\n" @@ -5948,21 +5828,19 @@ msgstr "prosím proveďte --check-trustdb\n" msgid "checking the trustdb\n" msgstr "kontroluji databázi důvěry\n" -#, fuzzy, c-format -#| msgid "%lu keys processed so far\n" +#, c-format msgid "%d key processed" msgid_plural "%d keys processed" -msgstr[0] "%lu klíče byly doposud zpracovány\n" -msgstr[1] "%lu klíče byly doposud zpracovány\n" -msgstr[2] "%lu klíče byly doposud zpracovány\n" +msgstr[0] "zpracován %d klíč" +msgstr[1] "zpracovány %d klíče" +msgstr[2] "zpracováno %d klíčů" -#, fuzzy, c-format -#| msgid "%d keys processed (%d validity counts cleared)\n" +#, c-format msgid " (%d validity count cleared)\n" msgid_plural " (%d validity counts cleared)\n" -msgstr[0] "zpracováno %d klíčů (%d validit vymazáno)\n" -msgstr[1] "zpracováno %d klíčů (%d validit vymazáno)\n" -msgstr[2] "zpracováno %d klíčů (%d validit vymazáno)\n" +msgstr[0] " (vymazáno %d počítadlo platnosti)\n" +msgstr[1] " (vymazána %d počítadla platnosti)\n" +msgstr[2] " (vymazáno %d počítadel platnosti)\n" msgid "no ultimately trusted keys found\n" msgstr "žádný absolutně důvěryhodný klíč nebyl nalezen\n" @@ -6021,10 +5899,8 @@ msgstr "[ neznámá ]" msgid "[ undef ]" msgstr "[nedefinovaná]" -#, fuzzy -#| msgid "never" msgid "[ never ]" -msgstr "žádná" +msgstr "[ nikdy ]" msgid "[marginal]" msgstr "[ částečná ]" @@ -6135,15 +6011,13 @@ msgid "error retrieving CHV status from card\n" msgstr "chyba při získání CHV z karty\n" msgid "response does not contain the RSA modulus\n" -msgstr "odpověď neobsahuje RSA modulus\n" +msgstr "odpověď neobsahuje modulus RSA\n" msgid "response does not contain the RSA public exponent\n" -msgstr "odpověď neobsahuje veřejný RSA exponent\n" +msgstr "odpověď neobsahuje veřejný exponent RSA\n" -#, fuzzy -#| msgid "response does not contain the EC public point\n" msgid "response does not contain the EC public key\n" -msgstr "odpověď neobsahuje veřejný bod EC\n" +msgstr "odpověď neobsahuje veřejný klíč EC\n" msgid "response does not contain the public key data\n" msgstr "odpověď neobsahuje veřejný klíč\n" @@ -6157,32 +6031,29 @@ msgstr "čtení veřejného klíče se nezdařilo: %s\n" #. * the %s at the start and end of the string. #, c-format msgid "%sNumber: %s%%0AHolder: %s%%0ACounter: %lu%s" -msgstr "" +msgstr "%sČíslo: %s%%0ADržitel: %s%%0APočítadlo: %lu%s" #, c-format msgid "%sNumber: %s%%0AHolder: %s%s" -msgstr "" +msgstr "%sČíslo: %s%%0ADržitel: %s%s" #. TRANSLATORS: This is the number of remaining attempts to #. * enter a PIN. Use %%0A (double-percent,0A) for a linefeed. #, c-format msgid "Remaining attempts: %d" -msgstr "" +msgstr "Zbývá pokusů: %d" #, c-format msgid "using default PIN as %s\n" -msgstr "používám implicitní PIN jako %s\n" +msgstr "použije se výchozí PIN jako %s\n" #, c-format msgid "failed to use default PIN as %s: %s - disabling further default use\n" msgstr "" -"použití implicitního PINu jako %s selhalo: %s – vypínám jeho budoucí " -"použití\n" +"použití výchozího PINu jako %s selhalo: %s – vypínám jeho budoucí použití\n" -#, fuzzy -#| msgid "||Please enter the PIN" msgid "||Please unlock the card" -msgstr "||Prosím vložte PIN" +msgstr "||Prosím, odemkněte kartu" #, c-format msgid "PIN for CHV%d is too short; minimum length is %d\n" @@ -6195,17 +6066,16 @@ msgstr "ověření CHV%d se nezdařilo: %s\n" msgid "card is permanently locked!\n" msgstr "karta je trvale uzamčena!\n" -#, fuzzy, c-format -#| msgid "%d Admin PIN attempts remaining before card is permanently locked\n" +#, c-format msgid "%d Admin PIN attempt remaining before card is permanently locked\n" msgid_plural "" "%d Admin PIN attempts remaining before card is permanently locked\n" msgstr[0] "" -"Do trvalého uzamčení karty zůstává %d pokusů o zadání PINu administrátora\n" +"Do trvalého uzamčení karty zůstává %d pokus na zadání PINu správce\n" msgstr[1] "" -"Do trvalého uzamčení karty zůstává %d pokusů o zadání PINu administrátora\n" +"Do trvalého uzamčení karty zůstávají %d pokusy na zadání PINu správce\n" msgstr[2] "" -"Do trvalého uzamčení karty zůstává %d pokusů o zadání PINu administrátora\n" +"Do trvalého uzamčení karty zůstává %d pokusů na zadání PINu správce\n" #. TRANSLATORS: Do not translate the "|A|" prefix but keep it at #. the start of the string. Use %0A (single percent) for a linefeed. @@ -6213,7 +6083,7 @@ msgid "|A|Please enter the Admin PIN" msgstr "|A|Prosím, zadejte PIN správce" msgid "access to admin commands is not configured\n" -msgstr "přístup k administrátorským příkazům není nakonfigurován\n" +msgstr "přístup k příkazům správce není nakonfigurován\n" msgid "||Please enter the PIN" msgstr "||Prosím vložte PIN" @@ -6281,12 +6151,11 @@ msgstr "prosím počkejte než bude klíč vygenerován…\n" msgid "generating key failed\n" msgstr "generování klíče se nezdařilo\n" -#, fuzzy, c-format -#| msgid "key generation completed (%d seconds)\n" +#, c-format msgid "key generation completed (%d second)\n" msgid_plural "key generation completed (%d seconds)\n" -msgstr[0] "generování klíče dokončeno (%d sekund)\n" -msgstr[1] "generování klíče dokončeno (%d sekund)\n" +msgstr[0] "generování klíče dokončeno (%d sekunda)\n" +msgstr[1] "generování klíče dokončeno (%d sekundy)\n" msgstr[2] "generování klíče dokončeno (%d sekund)\n" msgid "invalid structure of OpenPGP card (DO 0x93)\n" @@ -7149,10 +7018,9 @@ msgid " runtime cached certificates: %u\n" msgstr "za běhu nakešovaných certifikátů: %u\n" # XXX: Align with msgid "permanently loaded certificates:" -#, fuzzy, c-format -#| msgid " runtime cached certificates: %u\n" +#, c-format msgid " trusted certificates: %u (%u,%u,%u,%u)\n" -msgstr "za běhu nakešovaných certifikátů: %u\n" +msgstr " důvěryhodných certifikátů: %u (%u,%u,%u,%u)\n" msgid "certificate already cached\n" msgstr "certifikát již v keši\n" @@ -7736,7 +7604,7 @@ msgid "allow sending OCSP requests" msgstr "povolí odesílání OCSP dotazů" msgid "allow online software version check" -msgstr "" +msgstr "povolí kontrolu verze softwaru po síti" msgid "inhibit the use of HTTP" msgstr "zakáže použití HTTP" @@ -8371,7 +8239,7 @@ msgid "Options enforcing a passphrase policy" msgstr "Volby vynucující politiku hesel" msgid "do not allow bypassing the passphrase policy" -msgstr "nedovolit obejít politiku hesel" +msgstr "nedovolit obejití politiky hesel" msgid "|N|set minimal required length for new passphrases to N" msgstr "|N|nastavit minimální vyžadovanou délku nových hesel na N" @@ -8388,10 +8256,8 @@ msgstr "|N|omezit platnost hesla na N dnů" msgid "do not allow the reuse of old passphrases" msgstr "nedovolit opakovat stará hesla" -#, fuzzy -#| msgid "|N|set LDAP timeout to N seconds" msgid "|N|set the Pinentry timeout to N seconds" -msgstr "|N|nastaví časový limit pro LDAP na N sekund" +msgstr "|N|nastavit časový limit pro Pinentry na N sekund" msgid "|NAME|use NAME as default secret key" msgstr "|NÁZEV|použít NÁZEV jako implicitní tajný klíč" @@ -8447,33 +8313,23 @@ msgstr "Seznam LDAP serverů" msgid "Configuration for OCSP" msgstr "Nastavení OCSP" -#, fuzzy -#| msgid "GPG for OpenPGP" msgid "OpenPGP" -msgstr "GPG pro OpenPGP" +msgstr "OpenPGP" msgid "Private Keys" -msgstr "" +msgstr "Soukromé klíče" -#, fuzzy -#| msgid "Smartcard Daemon" msgid "Smartcards" -msgstr "Démon pro čipové karty" +msgstr "Čipové karty" -#, fuzzy -#| msgid "GPG for S/MIME" msgid "S/MIME" -msgstr "GPG pro S/MIME" +msgstr "S/MIME" -#, fuzzy -#| msgid "network error" msgid "Network" -msgstr "chyba sítě" +msgstr "Síť" -#, fuzzy -#| msgid "PIN and Passphrase Entry" msgid "Passphrase Entry" -msgstr "Zadávání kódu PIN a hesla" +msgstr "Pole pro heslo" msgid "Component not suitable for launching" msgstr "Komponenta není vhodná pro spuštění" @@ -8485,15 +8341,13 @@ msgstr "Selhalo externí ověření komponenty %s" msgid "Note that group specifications are ignored\n" msgstr "Vezměte na vědomí, že určení skupiny se ignoruje\n" -#, fuzzy, c-format -#| msgid "error closing '%s': %s\n" +#, c-format msgid "error closing '%s'\n" -msgstr "chyba při uzavírání „%s“: %s\n" +msgstr "chyba při uzavírání „%s“\n" -#, fuzzy, c-format -#| msgid "error hashing '%s': %s\n" +#, c-format msgid "error parsing '%s'\n" -msgstr "chyba při výpočtu haše „%s“: %s\n" +msgstr "chyba při rozboru „%s“\n" msgid "list all components" msgstr "vypsat všechny komponenty" @@ -8513,10 +8367,8 @@ msgstr "|KOMPONENTA|zkontrolovat volby" msgid "apply global default values" msgstr "aplikovat globální implicitní hodnoty" -#, fuzzy -#| msgid "|FILE|take policy information from FILE" msgid "|FILE|update configuration files using FILE" -msgstr "|SOUBOR|vzít politiky ze SOUBORU" +msgstr "|SOUBOR|aktualizovat konfigurační soubory pomocí SOUBORU" msgid "get the configuration directories for @GPGCONF@" msgstr "získat adresáře s nastavením @GPGCONF@" @@ -8527,10 +8379,8 @@ msgstr "vypsat globální konfigurační soubor" msgid "check global configuration file" msgstr "zkontrolovat globální konfigurační soubor" -#, fuzzy -#| msgid "update the trust database" msgid "query the software version database" -msgstr "aktualizovat databázi důvěry" +msgstr "dotázat se databázi verzí softwaru" msgid "reload all or a given component" msgstr "znovu načíst všechny nebo zadané komponenty" @@ -8710,9 +8560,27 @@ msgstr "" "Syntaxe: gpg-check-pattern [volby] soubor_se_vzorem\n" "Prověří heslo zadané na vstupu proti souboru se vzory\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "volání listen() selhalo: %s\n" + +#~ msgid "shadowing the key failed: %s\n" +#~ msgstr "výroba stínového klíče se nezdařila: %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "neuzurpovat si klávesnici a myš" +#~ msgid "communication problem with gpg-agent\n" +#~ msgstr "problémy v komunikaci s gpg-agentem\n" + +#~ msgid "canceled by user\n" +#~ msgstr "zrušeno uživatelem\n" + +#~ msgid "problem with the agent\n" +#~ msgstr "problém s agentem\n" + +#~ msgid "you found a bug ... (%s:%d)\n" +#~ msgstr "našli jste chybu… (%s:%d)\n" + #~ msgid "Error: URL too long (limit is %d characters).\n" #~ msgstr "Chyba: URL je příliš dlouhé (limit je %d znaků).\n" @@ -8722,64 +8590,20 @@ msgstr "" #~ msgid "Error: Private DO too long (limit is %d characters).\n" #~ msgstr "Chyba: Privátní DO je příliš dlouhé (limit je %d znaků).\n" -#, fuzzy -#~| msgid "key %s: unsupported public key algorithm\n" -#~ msgid "" -#~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" -#~ msgstr "klíč %s: nepodporovaný algoritmus veřejného klíče\n" +#~ msgid "available TOFU policies:\n" +#~ msgstr "dostupné politiky TOFU:\n" -#, fuzzy -#~| msgid "card does not support digest algorithm %s\n" -#~ msgid "" -#~ "can't check signature with unsupported message-digest algorithm %d: %s.\n" -#~ msgstr "karta nepodporuje hashovací algoritmus %s\n" +#~ msgid "unknown TOFU DB format '%s'\n" +#~ msgstr "neznámý formát „%s“ databáze TOFU\n" -#, fuzzy -#~| msgid "Good signature from" -#~ msgid " (reordered signatures follow)" -#~ msgstr "Dobrý podpis od" +#~ msgid "key specification '%s' is ambiguous\n" +#~ msgstr "výběr klíče pomocí „%s“ není jednoznačné\n" -#, fuzzy -#~| msgid "key %s: %s\n" -#~ msgid "key %s:\n" -#~ msgstr "klíč %s: %s\n" +#~ msgid "'%s' matches at least:\n" +#~ msgstr "„%s“ odpovídá přinejmenším:\n" -#, fuzzy -#~| msgid "User ID \"%s\": %d signature removed\n" -#~ msgid "%d duplicate signature removed\n" -#~ msgid_plural "%d duplicate signatures removed\n" -#~ msgstr[0] "Uživatelské ID „%s“: %d podpisů odstraněno\n" -#~ msgstr[1] "Uživatelské ID „%s“: %d podpisů odstraněno\n" -#~ msgstr[2] "Uživatelské ID „%s“: %d podpisů odstraněno\n" - -#, fuzzy -#~| msgid "Good signature from" -#~ msgid "%d signature reordered\n" -#~ msgid_plural "%d signatures reordered\n" -#~ msgstr[0] "Dobrý podpis od" -#~ msgstr[1] "Dobrý podpis od" -#~ msgstr[2] "Dobrý podpis od" - -#~ msgid "new configuration file '%s' created\n" -#~ msgstr "vytvořen nový konfigurační soubor „%s“\n" - -#~ msgid "WARNING: options in '%s' are not yet active during this run\n" -#~ msgstr "" -#~ "VAROVÁNÍ: nastavení z „%s“ nejsou při tomto spuštění zatím aktivní\n" - -#, fuzzy -#~| msgid "Key generation failed: %s\n" -#~ msgid "User ID revocation failed: %s\n" -#~ msgstr "Vytvoření klíče se nepodařilo: %s\n" - -#~ msgid "||Please enter the PIN%%0A[sigs done: %lu]" -#~ msgstr "||Prosím vložte PIN%%0A[podpis hotov: %lu]" - -#~ msgid "|A|Please enter the Admin PIN%%0A[remaining attempts: %d]" -#~ msgstr "|A|Prosím, zadejte PIN správce%%0A[zbývá pokusů: %d]" - -#~ msgid "DSA requires the use of a 160 bit hash algorithm\n" -#~ msgstr "DSA požaduje použití 160bitového hašovacího algoritmu\n" +#~ msgid "libgcrypt is too old (need %s, have %s)\n" +#~ msgstr "libgcrypt je příliš stará (potřebuji %s, mám %s)\n" #~ msgid "--store [filename]" #~ msgstr "--store [jméno souboru]" @@ -8805,8 +8629,8 @@ msgstr "" #~ msgid "--sign --symmetric [filename]" #~ msgstr "--sign --symmetric [jméno souboru]" -#~ msgid "--clear-sign [filename]" -#~ msgstr "--clear-sign [jméno souboru]" +#~ msgid "--clearsign [filename]" +#~ msgstr "--clearsign [jméno souboru]" #~ msgid "--decrypt [filename]" #~ msgstr "--decrypt [jméno souboru]" @@ -8826,104 +8650,6 @@ msgstr "" #~ msgid "[filename]" #~ msgstr "[jméno souboru]" -#~ msgid "shadowing the key failed: %s\n" -#~ msgstr "výroba stínového klíče se nezdařila: %s\n" - -#~ msgid "available TOFU policies:\n" -#~ msgstr "dostupné politiky TOFU:\n" - -#, fuzzy -#~| msgid "print message digests" -#~ msgid "%ld message signed" -#~ msgid_plural "%ld messages signed" -#~ msgstr[0] "vypsat hash zprávy" -#~ msgstr[1] "vypsat hash zprávy" -#~ msgstr[2] "vypsat hash zprávy" - -#~ msgid "GPG Agent" -#~ msgstr "Agent GPG" - -#~ msgid "Key Acquirer" -#~ msgstr "Stahovač klíčů" - -#~ msgid "communication problem with gpg-agent\n" -#~ msgstr "problémy v komunikaci s gpg-agentem\n" - -#~ msgid "canceled by user\n" -#~ msgstr "zrušeno uživatelem\n" - -#~ msgid "problem with the agent\n" -#~ msgstr "problém s agentem\n" - -#, fuzzy -#~| msgid "problem with the agent: %s\n" -#~ msgid "problem with the agent (unexpected response \"%s\")\n" -#~ msgstr "problém s agentem: %s\n" - -#~ msgid "unknown TOFU DB format '%s'\n" -#~ msgstr "neznámý formát „%s“ databáze TOFU\n" - -#~ msgid "libgcrypt is too old (need %s, have %s)\n" -#~ msgstr "libgcrypt je příliš stará (potřebuji %s, mám %s)\n" - -#~ msgid "" -#~ "Please enter the passphrase to unlock the secret key for the OpenPGP " -#~ "certificate:\n" -#~ "\"%.*s\"\n" -#~ "%u-bit %s key, ID %s,\n" -#~ "created %s%s.\n" -#~ msgstr "" -#~ "Prosím, zadejte heslo, abyste odemkli tajný klíč příslušející OpenPGP " -#~ "certifikátu:\n" -#~ "„%.*s“\n" -#~ "Klíč o délce %u bitů, typ %s, ID %s\n" -#~ "vytvořený %s%s.\n" - -#~ msgid "" -#~ "You need a passphrase to unlock the secret key for\n" -#~ "user: \"%s\"\n" -#~ msgstr "" -#~ "Musíte znát heslo, abyste odemkli tajný klíč pro\n" -#~ "uživatele: „%s“\n" - -#~ msgid "%u-bit %s key, ID %s, created %s" -#~ msgstr "délka %u bitů, typ %s, klíč %s, vytvořený %s" - -#~ msgid " (subkey on main key ID %s)" -#~ msgstr " (podklíč na hlavním klíči ID %s)" - -#~ msgid "can't access directory '%s': %s\n" -#~ msgstr "k adresáři „%s“ nelze přistoupit: %s\n" - -#~ msgid "run as windows service (background)" -#~ msgstr "poběží jako služba Windows (na pozadí)" - -#~ msgid "running in compatibility mode - certificate chain not checked!\n" -#~ msgstr "provoz v režimu kompatibility – řetěz certifikátů nezkontrolován!\n" - -#~ msgid "you found a bug ... (%s:%d)\n" -#~ msgstr "našli jste chybu… (%s:%d)\n" - -#, fuzzy -#~| msgid "%d user IDs without valid self-signatures detected\n" -#~ msgid "%d user ID without valid self-signature detected\n" -#~ msgid_plural "%d user IDs without valid self-signatures detected\n" -#~ msgstr[0] "" -#~ "objeveno %d identifikátorů uživatele bez platného podpisu jím samým\n" -#~ msgstr[1] "" -#~ "objeveno %d identifikátorů uživatele bez platného podpisu jím samým\n" -#~ msgstr[2] "" -#~ "objeveno %d identifikátorů uživatele bez platného podpisu jím samým\n" - -#~ msgid "moving a key signature to the correct place\n" -#~ msgstr "přesunuji podpis klíče na správné místo\n" - -#~ msgid "key specification '%s' is ambiguous\n" -#~ msgstr "výběr klíče pomocí „%s“ není jednoznačné\n" - -#~ msgid "'%s' matches at least:\n" -#~ msgstr "„%s“ odpovídá přinejmenším:\n" - #~ msgid "%d signatures not checked due to missing keys\n" #~ msgstr "%d podpisů neověřených, protože chybí klíč\n" @@ -8933,6 +8659,16 @@ msgstr "" #~ msgid "1 user ID without valid self-signature detected\n" #~ msgstr "objeven 1 identifikátor uživatele bez platného podpisu jím samým\n" +#~ msgid "%d user IDs without valid self-signatures detected\n" +#~ msgstr "" +#~ "objeveno %d identifikátorů uživatele bez platného podpisu jím samým\n" + +#~ msgid "moving a key signature to the correct place\n" +#~ msgstr "přesunuji podpis klíče na správné místo\n" + +#~ msgid "Deleted %d signatures.\n" +#~ msgstr "Smazáno %d podpisů.\n" + #~ msgid "User ID \"%s\": %d signatures removed\n" #~ msgstr "Uživatelské ID „%s“: %d podpisů odstraněno\n" @@ -8982,6 +8718,39 @@ msgstr "" #~ msgid "sending key %s to %s server %s\n" #~ msgstr "posílám klíč %s na %s server %s\n" +#~ msgid "new configuration file '%s' created\n" +#~ msgstr "vytvořen nový konfigurační soubor „%s“\n" + +#~ msgid "WARNING: options in '%s' are not yet active during this run\n" +#~ msgstr "" +#~ "VAROVÁNÍ: nastavení z „%s“ nejsou při tomto spuštění zatím aktivní\n" + +#~ msgid "" +#~ "Please enter the passphrase to unlock the secret key for the OpenPGP " +#~ "certificate:\n" +#~ "\"%.*s\"\n" +#~ "%u-bit %s key, ID %s,\n" +#~ "created %s%s.\n" +#~ msgstr "" +#~ "Prosím, zadejte heslo, abyste odemkli tajný klíč příslušející OpenPGP " +#~ "certifikátu:\n" +#~ "„%.*s“\n" +#~ "Klíč o délce %u bitů, typ %s, ID %s\n" +#~ "vytvořený %s%s.\n" + +#~ msgid "" +#~ "You need a passphrase to unlock the secret key for\n" +#~ "user: \"%s\"\n" +#~ msgstr "" +#~ "Musíte znát heslo, abyste odemkli tajný klíč pro\n" +#~ "uživatele: „%s“\n" + +#~ msgid "%u-bit %s key, ID %s, created %s" +#~ msgstr "délka %u bitů, typ %s, klíč %s, vytvořený %s" + +#~ msgid " (subkey on main key ID %s)" +#~ msgstr " (podklíč na hlavním klíči ID %s)" + #~ msgid "public key %s is %lu seconds newer than the signature\n" #~ msgstr "veřejný klíč %s je o %lu sekund novější než podpis\n" @@ -8995,6 +8764,30 @@ msgstr "" #~ msgid "%d marginal(s) needed, %d complete(s) needed, %s trust model\n" #~ msgstr "požadováno %d částečné důvěry a %d úplné důvěry, model %s\n" +#~ msgid "||Please enter the PIN%%0A[sigs done: %lu]" +#~ msgstr "||Prosím vložte PIN%%0A[podpis hotov: %lu]" + +#~ msgid "|A|Please enter the Admin PIN%%0A[remaining attempts: %d]" +#~ msgstr "|A|Prosím, zadejte PIN správce%%0A[zbývá pokusů: %d]" + +#~ msgid "can't access directory '%s': %s\n" +#~ msgstr "k adresáři „%s“ nelze přistoupit: %s\n" + +#~ msgid "run as windows service (background)" +#~ msgstr "poběží jako služba Windows (na pozadí)" + +#~ msgid "running in compatibility mode - certificate chain not checked!\n" +#~ msgstr "provoz v režimu kompatibility – řetěz certifikátů nezkontrolován!\n" + +#~ msgid "DSA requires the use of a 160 bit hash algorithm\n" +#~ msgstr "DSA požaduje použití 160bitového hašovacího algoritmu\n" + +#~ msgid "GPG Agent" +#~ msgstr "Agent GPG" + +#~ msgid "Key Acquirer" +#~ msgstr "Stahovač klíčů" + #~ msgid "Passphrase" #~ msgstr "Heslo" @@ -9997,7 +9790,7 @@ msgstr "" #~ "na aktuální seznam předvoleb. Časová razítka všech dotčených podpisů\n" #~ "klíčů jimi samotnými budou posunuty o jednu vteřinu dopředu.\n" -#~ msgid "Please enter the passphrase; this is a secret sentence \n" +#~ msgid "Please enter the passhrase; this is a secret sentence \n" #~ msgstr "Prosím, vložte heslo; toto je tajná věta \n" #~ msgid "" diff --git a/po/da.po b/po/da.po index abc12577e..e30e3b617 100644 --- a/po/da.po +++ b/po/da.po @@ -505,10 +505,6 @@ msgstr "fejl ved binding af sokkel til »%s«: %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "Advarsel: usikre rettigheder på %s »%s«\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "listen() mislykkedes: %s\n" - #, fuzzy, c-format #| msgid "listening on socket `%s'\n" msgid "listening on socket '%s'\n" @@ -9213,6 +9209,9 @@ msgstr "" "Syntaks: gpg-check-pattern [tilvalg] mønsterfil\n" "Kontroller en adgangsfrase angivet på stdin mod mønsterfilen\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "listen() mislykkedes: %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "fang ikke tastatur og mus" diff --git a/po/de.po b/po/de.po index e974ddcd7..4351d32bd 100644 --- a/po/de.po +++ b/po/de.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg-2.1.0\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n" -"PO-Revision-Date: 2017-11-02 17:36+0100\n" +"PO-Revision-Date: 2017-12-19 12:28+0100\n" "Last-Translator: Werner Koch \n" "Language-Team: German \n" "Language: de\n" @@ -452,10 +452,6 @@ msgstr "Der Socket kann nicht an `%s' gebunden werden: %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "Zugriffsrechte für '%s' können nicht gesetzt werden: %s\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "Der listen()-Aufruf ist fehlgeschlagen: %s\n" - #, c-format msgid "listening on socket '%s'\n" msgstr "Es wird auf Socket `%s' gehört\n" @@ -955,7 +951,7 @@ msgid "Data decryption succeeded" msgstr "Entschlüsselung der Daten erfolgreich" msgid "Encryption algorithm supported" -msgstr "Verschlüsselungsverfahren %d%s wird nicht unterstützt" +msgstr "Verschlüsselungsverfahren wird unterstützt" msgid "Data verification succeeded" msgstr "Prüfung der Signatur erfolgreich" @@ -8759,6 +8755,9 @@ msgstr "" "Syntax: gpg-check-pattern [optionen] Musterdatei\n" "Die von stdin gelesene Passphrase gegen die Musterdatei prüfen\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "Der listen()-Aufruf ist fehlgeschlagen: %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "Tastatur und Maus nicht \"grabben\"" diff --git a/po/el.po b/po/el.po index cc9439ecf..749b333ee 100644 --- a/po/el.po +++ b/po/el.po @@ -466,10 +466,6 @@ msgstr "σφάλμα στη αποστολή προς το `%s': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: μη ασφαλείς άδειες στο %s \"%s\"\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "η ενημέρωση απέτυχε: %s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "εγγραφή του μυστικού κλειδιού στο `%s'\n" @@ -8979,6 +8975,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "η ενημέρωση απέτυχε: %s\n" + #, fuzzy #~ msgid "" #~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" diff --git a/po/eo.po b/po/eo.po index 611b987ae..002e2dc17 100644 --- a/po/eo.po +++ b/po/eo.po @@ -466,10 +466,6 @@ msgstr "eraro dum sendo al '%s': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "Averto: malsekuraj permesoj sur %s \"%s\"\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "aktualigo malsukcesis: %s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "skribas sekretan ŝlosilon al '%s'\n" @@ -8920,6 +8916,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "aktualigo malsukcesis: %s\n" + #, fuzzy #~ msgid "" #~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" diff --git a/po/es.po b/po/es.po index 76d3952e5..a631ced9f 100644 --- a/po/es.po +++ b/po/es.po @@ -521,10 +521,6 @@ msgstr "error enlazando el socket con `%s': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "Aviso: permisos inseguros en %s \"%s\"\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "listen() falló: %s\n" - #, fuzzy, c-format #| msgid "listening on socket `%s'\n" msgid "listening on socket '%s'\n" @@ -9252,6 +9248,9 @@ msgstr "" "Compara frase contraseña dada en entrada estándar con un fichero de " "patrones\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "listen() falló: %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "no acaparar teclado y ratón" diff --git a/po/et.po b/po/et.po index 66e905b5f..b6a12e4d4 100644 --- a/po/et.po +++ b/po/et.po @@ -463,10 +463,6 @@ msgstr "viga teate saatmisel serverile `%s': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "HOIATUS: ebaturvalised õigused %s \"%s\"\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "uuendamine ebaõnnestus: %s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "kirjutan salajase võtme faili `%s'\n" @@ -8895,6 +8891,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "uuendamine ebaõnnestus: %s\n" + #, fuzzy #~ msgid "" #~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" diff --git a/po/fi.po b/po/fi.po index 15f7ce7ce..96ed7355e 100644 --- a/po/fi.po +++ b/po/fi.po @@ -480,10 +480,6 @@ msgstr "virhe lähettäessä kohteeseen \"%s\": %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "VAROITUS: oikeudet kohteessa %s \"%s\" eivät ole turvallisia\"\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "päivitys epäonnistui: %s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "kirjoitan salaisen avaimen kohteeseen \"%s\"\n" @@ -8957,6 +8953,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "päivitys epäonnistui: %s\n" + #, fuzzy #~ msgid "" #~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" diff --git a/po/fr.po b/po/fr.po index fa1e87f2b..30f61bb59 100644 --- a/po/fr.po +++ b/po/fr.po @@ -467,10 +467,6 @@ msgstr "erreur de lien de la socket à « %s » : %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "Avertissement : les droits de %s ne sont pas sûrs « %s »\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "échec de listen() : %s\n" - #, c-format msgid "listening on socket '%s'\n" msgstr "écoute sur la socket « %s »\n" @@ -8935,6 +8931,9 @@ msgstr "" "Vérifier une phrase secrète donnée sur l'entrée standard par rapport à " "ficmotif\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "échec de listen() : %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "ne pas capturer le clavier et la souris" diff --git a/po/gl.po b/po/gl.po index 3b1870296..ac878c6df 100644 --- a/po/gl.po +++ b/po/gl.po @@ -467,10 +467,6 @@ msgstr "erro ao enviar a `%s': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "AVISO: permisos inseguros en %s \"%s\"\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "a actualización fallou: %s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "gravando a chave secreta en `%s'\n" @@ -8986,6 +8982,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "a actualización fallou: %s\n" + #, fuzzy #~ msgid "" #~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" diff --git a/po/hu.po b/po/hu.po index f18609df0..4afd8ef08 100644 --- a/po/hu.po +++ b/po/hu.po @@ -463,10 +463,6 @@ msgstr "Hiba %s-ra/-re küldéskor: %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "FIGYELEM: nem biztonságos engedélyek: %s \"%s\"\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "Frissítés sikertelen: %s.\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "Írom a titkos kulcsot a %s állományba.\n" @@ -8925,6 +8921,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "Frissítés sikertelen: %s.\n" + #, fuzzy #~ msgid "" #~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" diff --git a/po/id.po b/po/id.po index 635ed7d55..e3f4b504c 100644 --- a/po/id.po +++ b/po/id.po @@ -468,10 +468,6 @@ msgstr "kesalahan mengirim ke `%s': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "Peringatan: permisi tidak aman pada %s \"%s\"\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "gagal memperbarui: %s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "menulis kunci rahasia ke `%s'\n" @@ -8918,6 +8914,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "gagal memperbarui: %s\n" + #, fuzzy #~ msgid "" #~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" diff --git a/po/it.po b/po/it.po index fc4324447..1eb3a79c5 100644 --- a/po/it.po +++ b/po/it.po @@ -463,10 +463,6 @@ msgstr "errore leggendo `%s': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "ATTENZIONE: i permessi \"%s\" di %s sono insicuri\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "aggiornamento fallito: %s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "scrittura della chiave segreta in `%s'\n" @@ -8959,6 +8955,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "aggiornamento fallito: %s\n" + #, fuzzy #~ msgid "" #~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" diff --git a/po/ja.po b/po/ja.po index a3e8ab86b..ac4ad784a 100644 --- a/po/ja.po +++ b/po/ja.po @@ -433,10 +433,6 @@ msgstr "'%s'でソケットのバインドのエラー: %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "'%s'の許可が設定できません: %s\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "listen() に失敗しました: %s\n" - #, c-format msgid "listening on socket '%s'\n" msgstr "ソケット'%s'でlisten\n" @@ -1342,7 +1338,8 @@ msgstr "認証鍵の鍵長は? (%u) " #, c-format msgid "The card will now be re-configured to generate a key of type: %s\n" -msgstr "カードは、今、こちらのタイプの鍵を生成するように再コンフィグされました: %s\n" +msgstr "" +"カードは、今、こちらのタイプの鍵を生成するように再コンフィグされました: %s\n" #, c-format msgid "rounded up to %u bits\n" @@ -8322,6 +8319,9 @@ msgstr "" "形式: gpg-check-pattern [オプション] パターンファイル\n" "パターンファイルに対して標準入力のパスフレーズを確認する\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "listen() に失敗しました: %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "キーボードとマウスを占有しない" diff --git a/po/nb.po b/po/nb.po index 8be672407..eea3fd793 100644 --- a/po/nb.po +++ b/po/nb.po @@ -437,10 +437,6 @@ msgstr "feil under knytning av sokkel til «%s»: %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "klarte ikke å endre tillatelser til «%s»: %s\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "listen() mislyktes: %s\n" - #, c-format msgid "listening on socket '%s'\n" msgstr "lytter på sokkel «%s»\n" @@ -8440,6 +8436,9 @@ msgstr "" "Syntaks: gpg-check-pattern [valg] mønsterfil\n" "Kontroller passordfrase oppgitt på standard innkanal mot valgt mønsterfil\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "listen() mislyktes: %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "ikke bruk tastatur og mus" diff --git a/po/nl.po b/po/nl.po index 6c447ec51..f8a53e88a 100644 --- a/po/nl.po +++ b/po/nl.po @@ -30,7 +30,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 2.0.28\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n" -"PO-Revision-Date: 2015-06-07 16:56+0200\n" +"PO-Revision-Date: 2017-12-19 12:28+0100\n" "Last-Translator: Frans Spiesschaert \n" "Language-Team: Debian Dutch l10n Team \n" "Language: nl\n" @@ -6501,7 +6501,7 @@ msgid "keybox `%s' created\n" msgstr "sleuteldoosje `%s' is aangemaakt\n" msgid "failed to get the fingerprint\n" -msgstr "opvragen van de vingerafdruk is mislukt: %s\n" +msgstr "opvragen van de vingerafdruk is mislukt\n" #, c-format msgid "problem looking for existing certificate: %s\n" diff --git a/po/pl.po b/po/pl.po index ef392ac41..74ade4fb5 100644 --- a/po/pl.po +++ b/po/pl.po @@ -494,10 +494,6 @@ msgstr "błąd podczas przypisywania gniazda do ,,%s'': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "Ostrzeżenie: niebezpieczne prawa dostępu do %s ,,%s''\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "listen() nie powiodło się: %s\n" - #, fuzzy, c-format #| msgid "listening on socket `%s'\n" msgid "listening on socket '%s'\n" @@ -9281,6 +9277,9 @@ msgstr "" "Składnia: gpg-check-pattern [opcje] plik-wzorców\n" "Sprawdzanie hasła ze standardowego wejścia względem pliku wzorców\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "listen() nie powiodło się: %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "nie przechwytywanie klawiatury i myszy" diff --git a/po/pt.po b/po/pt.po index 3caa5cab2..dab31d82c 100644 --- a/po/pt.po +++ b/po/pt.po @@ -468,10 +468,6 @@ msgstr "erro ao enviar para `%s': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "AVISO: permissões pouco seguras em %s \"%s\"\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "actualização falhou: %s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "a escrever chave privada para `%s'\n" @@ -8927,6 +8923,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "actualização falhou: %s\n" + #, fuzzy #~ msgid "" #~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" diff --git a/po/ro.po b/po/ro.po index 30a99249d..bf4daec45 100644 --- a/po/ro.po +++ b/po/ro.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.4.2rc1\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n" -"PO-Revision-Date: 2005-05-31 22:00-0500\n" +"PO-Revision-Date: 2017-12-19 12:30+0100\n" "Last-Translator: Laurentiu Buzdugan \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -478,10 +478,6 @@ msgstr "eroare trimitere la `%s': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "AVERTISMENT: permisiuni nesigure (unsafe) pentru extensia `%s'\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "actualizarea a eşuat: %s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "scriu cheia secretă în `%s'\n" @@ -3078,8 +3074,9 @@ msgstr "" msgid "User ID \"%s\" is revoked." msgstr "ID utilizator \"%s\" a fost revocat." +#, fuzzy msgid "Are you sure you still want to sign it? (y/N) " -msgstr "Sunteţi sigur(ă) că doriţi să ştergeţi permanent \"%s\"? (d/N)" +msgstr "Sunteţi sigur(ă) că doriţi să ştergeţi permanent? (d/N)" msgid " Unable to sign.\n" msgstr " Nu pot semna.\n" @@ -9002,6 +8999,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "actualizarea a eşuat: %s\n" + #~ msgid "Error: URL too long (limit is %d characters).\n" #~ msgstr "Eroare: URL prea lung (limita este de %d caractere).\n" diff --git a/po/ru.po b/po/ru.po index a2d038352..793bb0b72 100644 --- a/po/ru.po +++ b/po/ru.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: GnuPG 2.2.0\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n" -"PO-Revision-Date: 2017-11-02 17:41+0100\n" +"PO-Revision-Date: 2017-12-13 17:41+0100\n" "Last-Translator: Ineiev \n" "Language-Team: Russian \n" "Language: ru\n" @@ -444,10 +444,6 @@ msgstr "ошибка связывания сокета с '%s': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "не удалось задать права доступа для '%s': %s\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "сбой listen(): %s\n" - #, c-format msgid "listening on socket '%s'\n" msgstr "слушаем сокет '%s'\n" @@ -1349,10 +1345,9 @@ msgstr "Какой Вам нужен размер ключа для шифров msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Какой Вам нужен размер ключа для удостоверения личности? (%u) " -#, fuzzy, c-format -#| msgid "The card will now be re-configured to generate a key of %u bits\n" +#, c-format msgid "The card will now be re-configured to generate a key of type: %s\n" -msgstr "Теперь карта будет перенастроена на генерацию ключа длиной %u бит\n" +msgstr "Теперь карта будет перенастроена на генерацию ключа типа %s\n" #, c-format msgid "rounded up to %u bits\n" @@ -8583,6 +8578,9 @@ msgstr "" "Синтаксис: gpg-check-pattern [параметры] файл_образцов\n" "Проверить фразу-пароль, поступающую из stdin, по файлу образцов\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "сбой listen(): %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "не захватывать клавиатуру и мышь" diff --git a/po/sk.po b/po/sk.po index 6880122c0..cb0a41fc3 100644 --- a/po/sk.po +++ b/po/sk.po @@ -468,10 +468,6 @@ msgstr "chyba pri posielaní na `%s': %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "VAROVANIE: prístupové práva pre %s nie sú nastavené bezpečne \"%s\"\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "aktualizácia zlyhala: %s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "zapisujem tajný kľúč do `%s'\n" @@ -4951,6 +4947,7 @@ msgstr "\"%s\" nie je súbor JPEG\n" msgid "Is this photo correct (y/N/q)? " msgstr "Je táto fotografia správna (a/N/u)? " +#, fuzzy msgid "unable to display photo ID!\n" msgstr "nemožno nastaviť exec-path na %s\n" @@ -8949,6 +8946,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "aktualizácia zlyhala: %s\n" + #, fuzzy #~ msgid "" #~ "can't check signature with unsupported public-key algorithm (%d): %s.\n" diff --git a/po/sv.po b/po/sv.po index 8d94c9a89..d5da7cabe 100644 --- a/po/sv.po +++ b/po/sv.po @@ -523,10 +523,6 @@ msgstr "fel när \"%s\" bands till uttag: %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "Varning: osäkra rättigheter på %s \"%s\"\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "listen() misslyckades: %s\n" - #, fuzzy, c-format #| msgid "listening on socket `%s'\n" msgid "listening on socket '%s'\n" @@ -9359,6 +9355,9 @@ msgstr "" "Syntax: gpg-check-pattern [flaggor] mönsterfil\n" "Kontrollera en lösenfras angiven på standard in mot mönsterfilen\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "listen() misslyckades: %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "fånga inte tangentbord och mus" diff --git a/po/tr.po b/po/tr.po index cc77eb919..f5e08ebd3 100644 --- a/po/tr.po +++ b/po/tr.po @@ -489,10 +489,6 @@ msgstr "soket `%s'e bağlanırken hata: %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "UYARI: %s üzerinde izinler güvensiz: \"%s\"\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "soket dinleme başarısız: %s\n" - #, fuzzy, c-format #| msgid "listening on socket `%s'\n" msgid "listening on socket '%s'\n" @@ -9265,6 +9261,9 @@ msgstr "" "Standart girdiden verilen anahtar parolasını örüntü dosyasıyla " "karşılaştırır\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "soket dinleme başarısız: %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "klavye ve fare gaspedilmez" diff --git a/po/uk.po b/po/uk.po index 9316d8156..2881bb217 100644 --- a/po/uk.po +++ b/po/uk.po @@ -439,10 +439,6 @@ msgstr "помилка під час спроби прив’язування с msgid "can't set permissions of '%s': %s\n" msgstr "не вдалося встановити права доступу до «%s»: %s\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "помилка listen(): %s\n" - #, c-format msgid "listening on socket '%s'\n" msgstr "очікування даних на сокеті «%s»\n" @@ -8693,6 +8689,9 @@ msgstr "" "Синтаксис: gpg-check-pattern [параметри] файл_шаблонів\n" "Перевірити пароль, вказаний у stdin, за допомогою файла_шаблонів\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "помилка listen(): %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "не захоплювати керування клавіатурою і мишею" diff --git a/po/zh_CN.po b/po/zh_CN.po index 4b3954c6b..9caeaef29 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -476,10 +476,6 @@ msgstr "在‘%s’中寻找信任度记录时出错:%s\n" msgid "can't set permissions of '%s': %s\n" msgstr "警告:扩展模块‘%s’权限不安全\n" -#, fuzzy, c-format -msgid "listen() failed: %s\n" -msgstr "更新失败:%s\n" - #, fuzzy, c-format msgid "listening on socket '%s'\n" msgstr "正在将私钥写至`%s'\n" @@ -8826,6 +8822,10 @@ msgid "" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +#, fuzzy +#~ msgid "listen() failed: %s\n" +#~ msgstr "更新失败:%s\n" + #~ msgid "Error: URL too long (limit is %d characters).\n" #~ msgstr "错误:URL 太长(至多 %d 个字符)\n" diff --git a/po/zh_TW.po b/po/zh_TW.po index f997fa1b2..51b3798a8 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -446,10 +446,6 @@ msgstr "綁定 socket 至 '%s' 時出錯: %s\n" msgid "can't set permissions of '%s': %s\n" msgstr "警告: %s 的權限 \"%s\" 並不安全\n" -#, c-format -msgid "listen() failed: %s\n" -msgstr "listen() 失敗: %s\n" - #, c-format msgid "listening on socket '%s'\n" msgstr "正在候聽 socket '%s'\n" @@ -8476,6 +8472,9 @@ msgstr "" "語法: gpg-check-pattern [選項] 樣式檔案\n" "用樣式檔案來檢查由標準輸入給定的密語\n" +#~ msgid "listen() failed: %s\n" +#~ msgstr "listen() 失敗: %s\n" + #~ msgid "do not grab keyboard and mouse" #~ msgstr "不要奪取鍵盤及滑鼠" diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index 689d880d4..fb869b2bf 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -121,6 +121,7 @@ static struct { /* V3.0 */ { 0x7F74, 0, 0, 1, 0, 0, 0, 0, "General Feature Management"}, { 0x00D5, 0, 0, 1, 0, 0, 0, 0, "AES key data"}, + { 0x00F9, 0, 0, 1, 0, 0, 0, 0, "KDF data object"}, { 0 } }; @@ -199,7 +200,7 @@ struct app_local_s { unsigned int private_dos:1; unsigned int algo_attr_change:1; /* Algorithm attributes changeable. */ unsigned int has_decrypt:1; /* Support symmetric decryption. */ - unsigned int kdf_do:1; /* Support KDF DOs. */ + unsigned int kdf_do:1; /* Support KDF DO. */ unsigned int sm_algo:2; /* Symmetric crypto algo for SM. */ unsigned int pin_blk2:1; /* PIN block 2 format supported. */ @@ -980,6 +981,7 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name) { "PRIVATE-DO-4", 0x0104 }, { "$AUTHKEYID", 0x0000, -3 }, { "$DISPSERIALNO",0x0000, -4 }, + { "KDF", 0x00F9 }, { NULL, 0 } }; int idx, i, rc; @@ -2054,6 +2056,47 @@ get_prompt_info (app_t app, int chvno, unsigned long sigcount, int remaining) return result; } +/* Compute hash if KDF-DO is available. CHVNO must be 0 for reset + code, 1 or 2 for user pin and 3 for admin pin. + */ +static gpg_error_t +pin2hash_if_kdf (app_t app, int chvno, char *pinvalue, int *r_pinlen) +{ + gpg_error_t err = 0; + void *relptr; + unsigned char *buffer; + size_t buflen; + + if (app->app_local->extcap.kdf_do + && (relptr = get_one_do (app, 0x00F9, &buffer, &buflen, NULL))) + { + char *salt; + unsigned long s2k_count; + char dek[32]; + + salt = &buffer[(chvno==3 ? 34 : (chvno==0 ? 24 : 14))]; + s2k_count = (((unsigned int)buffer[8] << 24) + | (buffer[9] << 16) | (buffer[10] << 8) | buffer[11]); + err = gcry_kdf_derive (pinvalue, strlen (pinvalue), + GCRY_KDF_ITERSALTED_S2K, + DIGEST_ALGO_SHA256, salt, 8, + s2k_count, sizeof (dek), dek); + if (!err) + { + /* pinvalue has a buffer of MAXLEN_PIN+1, 32 is OK. */ + *r_pinlen = 32; + memcpy (pinvalue, dek, *r_pinlen); + wipememory (dek, *r_pinlen); + } + + xfree (relptr); + } + else + *r_pinlen = strlen (pinvalue); + + return err; +} + /* Verify a CHV either using the pinentry or if possible by using a pinpad. PINCB and PINCB_ARG describe the usual callback @@ -2068,8 +2111,8 @@ get_prompt_info (app_t app, int chvno, unsigned long sigcount, int remaining) static gpg_error_t verify_a_chv (app_t app, gpg_error_t (*pincb)(void*, const char *, char **), - void *pincb_arg, - int chvno, unsigned long sigcount, char **pinvalue) + void *pincb_arg, int chvno, unsigned long sigcount, + char **pinvalue, int *pinlen) { int rc = 0; char *prompt_buffer = NULL; @@ -2081,6 +2124,7 @@ verify_a_chv (app_t app, log_assert (chvno == 1 || chvno == 2); *pinvalue = NULL; + *pinlen = 0; remaining = get_remaining_tries (app, 0); if (remaining == -1) @@ -2169,8 +2213,9 @@ verify_a_chv (app_t app, return gpg_error (GPG_ERR_BAD_PIN); } - rc = iso7816_verify (app->slot, 0x80+chvno, - *pinvalue, strlen (*pinvalue)); + rc = pin2hash_if_kdf (app, chvno, *pinvalue, pinlen); + if (!rc) + rc = iso7816_verify (app->slot, 0x80+chvno, *pinvalue, *pinlen); } if (rc) @@ -2194,11 +2239,12 @@ verify_chv2 (app_t app, { int rc; char *pinvalue; + int pinlen; if (app->did_chv2) return 0; /* We already verified CHV2. */ - rc = verify_a_chv (app, pincb, pincb_arg, 2, 0, &pinvalue); + rc = verify_a_chv (app, pincb, pincb_arg, 2, 0, &pinvalue, &pinlen); if (rc) return rc; app->did_chv2 = 1; @@ -2209,7 +2255,7 @@ verify_chv2 (app_t app, the card is not configured to require a verification before each CHV1 controlled operation (force_chv1) and if we are not using the pinpad (PINVALUE == NULL). */ - rc = iso7816_verify (app->slot, 0x81, pinvalue, strlen (pinvalue)); + rc = iso7816_verify (app->slot, 0x81, pinvalue, pinlen); if (gpg_err_code (rc) == GPG_ERR_BAD_PIN) rc = gpg_error (GPG_ERR_PIN_NOT_SYNCED); if (rc) @@ -2319,6 +2365,7 @@ verify_chv3 (app_t app, else { char *pinvalue; + int pinlen; rc = pincb (pincb_arg, prompt, &pinvalue); xfree (prompt); @@ -2338,7 +2385,9 @@ verify_chv3 (app_t app, return gpg_error (GPG_ERR_BAD_PIN); } - rc = iso7816_verify (app->slot, 0x83, pinvalue, strlen (pinvalue)); + rc = pin2hash_if_kdf (app, 3, pinvalue, &pinlen); + if (!rc) + rc = iso7816_verify (app->slot, 0x83, pinvalue, pinlen); xfree (pinvalue); } @@ -2389,6 +2438,7 @@ do_setattr (app_t app, const char *name, { "SM-KEY-MAC", 0x00D2, 3, 0, 1 }, { "KEY-ATTR", 0, 0, 3, 1 }, { "AESKEY", 0x00D5, 3, 0, 1 }, + { "KDF", 0x00F9, 3, 0, 1 }, { NULL, 0 } }; int exmode; @@ -2501,6 +2551,8 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, pininfo_t pininfo; int use_pinpad = 0; int minlen = 6; + int pinlen0 = 0; + int pinlen = 0; (void)ctrl; memset (&pininfo, 0, sizeof pininfo); @@ -2685,10 +2737,17 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, rc = gpg_error_from_syserror (); else { - strcpy (stpcpy (buffer, resetcode), pinvalue); - rc = iso7816_reset_retry_counter_with_rc (app->slot, 0x81, - buffer, strlen (buffer)); - wipememory (buffer, strlen (buffer)); + strcpy (buffer, resetcode); + rc = pin2hash_if_kdf (app, 0, buffer, &pinlen0); + if (!rc) + { + strcpy (buffer+pinlen0, pinvalue); + rc = pin2hash_if_kdf (app, 0, buffer+pinlen0, &pinlen); + } + if (!rc) + rc = iso7816_reset_retry_counter_with_rc (app->slot, 0x81, + buffer, pinlen0+pinlen); + wipememory (buffer, pinlen0 + pinlen); xfree (buffer); } } @@ -2700,16 +2759,19 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, rc = gpg_error (GPG_ERR_BAD_PIN); } else - rc = iso7816_put_data (app->slot, 0, 0xD3, - pinvalue, strlen (pinvalue)); + { + rc = pin2hash_if_kdf (app, 0, pinvalue, &pinlen); + if (!rc) + rc = iso7816_put_data (app->slot, 0, 0xD3, pinvalue, pinlen); + } } else if (reset_mode) { - rc = iso7816_reset_retry_counter (app->slot, 0x81, - pinvalue, strlen (pinvalue)); + rc = pin2hash_if_kdf (app, 1, pinvalue, &pinlen); + if (!rc) + rc = iso7816_reset_retry_counter (app->slot, 0x81, pinvalue, pinlen); if (!rc && !app->app_local->extcap.is_v2) - rc = iso7816_reset_retry_counter (app->slot, 0x82, - pinvalue, strlen (pinvalue)); + rc = iso7816_reset_retry_counter (app->slot, 0x82, pinvalue, pinlen); } else if (!app->app_local->extcap.is_v2) { @@ -2750,14 +2812,20 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, pincb (pincb_arg, NULL, NULL); /* Dismiss the prompt. */ } else - rc = iso7816_change_reference_data (app->slot, 0x80 + chvno, - oldpinvalue, strlen (oldpinvalue), - pinvalue, strlen (pinvalue)); + { + rc = pin2hash_if_kdf (app, chvno, oldpinvalue, &pinlen0); + if (!rc) + rc = pin2hash_if_kdf (app, chvno, pinvalue, &pinlen); + if (!rc) + rc = iso7816_change_reference_data (app->slot, 0x80 + chvno, + oldpinvalue, pinlen0, + pinvalue, pinlen); + } } if (pinvalue) { - wipememory (pinvalue, strlen (pinvalue)); + wipememory (pinvalue, pinlen); xfree (pinvalue); } if (rc) @@ -2771,7 +2839,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, } if (oldpinvalue) { - wipememory (oldpinvalue, strlen (oldpinvalue)); + wipememory (oldpinvalue, pinlen0); xfree (oldpinvalue); } return rc; @@ -4277,8 +4345,9 @@ do_sign (app_t app, const char *keyidstr, int hashalgo, if (!app->did_chv1 || app->force_chv1 ) { char *pinvalue; + int pinlen; - rc = verify_a_chv (app, pincb, pincb_arg, 1, sigcount, &pinvalue); + rc = verify_a_chv (app, pincb, pincb_arg, 1, sigcount, &pinvalue, &pinlen); if (rc) return rc; @@ -4291,7 +4360,7 @@ do_sign (app_t app, const char *keyidstr, int hashalgo, pinpad has been used. */ if (!app->did_chv2 && pinvalue && !app->app_local->extcap.is_v2) { - rc = iso7816_verify (app->slot, 0x82, pinvalue, strlen (pinvalue)); + rc = iso7816_verify (app->slot, 0x82, pinvalue, pinlen); if (gpg_err_code (rc) == GPG_ERR_BAD_PIN) rc = gpg_error (GPG_ERR_PIN_NOT_SYNCED); if (rc) diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c index 4f4a32dfc..5046da555 100644 --- a/scd/ccid-driver.c +++ b/scd/ccid-driver.c @@ -1778,6 +1778,7 @@ do_close_reader (ccid_driver_t handle) } libusb_free_transfer (handle->transfer); + handle->transfer = NULL; } libusb_release_interface (handle->idev, handle->ifc_no); --ccid_usb_thread_is_alive; @@ -2038,10 +2039,14 @@ bulk_in (ccid_driver_t handle, unsigned char *buffer, size_t length, /* * Communication failure by device side. * Possibly, it was forcibly suspended and resumed. + * + * Only detect this kind of failure when interrupt transfer is + * not supported. For card reader with interrupt transfer + * support removal is detected by intr_cb. */ - DEBUGOUT ("CCID: card inactive/removed\n"); - if (handle->transfer == NULL) + if (handle->ep_intr < 0) { + DEBUGOUT ("CCID: card inactive/removed\n"); handle->powered_off = 1; scd_kick_the_loop (); } @@ -2539,6 +2544,14 @@ ccid_get_atr (ccid_driver_t handle, if (statusbits == 2) return CCID_DRIVER_ERR_NO_CARD; + /* + * In the first invocation of ccid_slot_status, card reader may + * return CCID_DRIVER_ERR_CARD_INACTIVE and handle->powered_off may + * become 1. Because inactive card is no problem (we are turning it + * ON here), clear the flag. + */ + handle->powered_off = 0; + /* For an inactive and also for an active card, issue the PowerOn command to get the ATR. */ again: diff --git a/sm/gpgsm.c b/sm/gpgsm.c index 650b13030..982be58ba 100644 --- a/sm/gpgsm.c +++ b/sm/gpgsm.c @@ -1009,8 +1009,6 @@ main ( int argc, char **argv) assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT); setup_libassuan_logging (&opt.debug, NULL); - keybox_set_malloc_hooks (gcry_malloc, gcry_realloc, gcry_free); - /* Setup a default control structure for command line mode */ memset (&ctrl, 0, sizeof ctrl); gpgsm_init_default_ctrl (&ctrl); diff --git a/tools/applygnupgdefaults b/tools/applygnupgdefaults index 54365ce34..316509faf 100755 --- a/tools/applygnupgdefaults +++ b/tools/applygnupgdefaults @@ -1,5 +1,5 @@ #!/bin/sh -# Apply defaults from /etc/gnupg/gpg.conf to all users -*- sh -*- +# Apply defaults from /etc/gnupg/gpgconf.conf to all users -*- sh -*- # # Copyright 2007 Free Software Foundation, Inc. # diff --git a/tools/gpg-wks-server.c b/tools/gpg-wks-server.c index 7e3f05017..0b1d64261 100644 --- a/tools/gpg-wks-server.c +++ b/tools/gpg-wks-server.c @@ -66,11 +66,14 @@ enum cmd_and_opt_values aInstallKey, aRevokeKey, aRemoveKey, + aCheck, oGpgProgram, oSend, oFrom, oHeader, + oWithDir, + oWithFile, oDummy }; @@ -86,12 +89,15 @@ static ARGPARSE_OPTS opts[] = { ("run regular jobs")), ARGPARSE_c (aListDomains, "list-domains", ("list configured domains")), + ARGPARSE_c (aCheck, "check", + ("check whether a key is installed")), + ARGPARSE_c (aCheck, "check-key", "@"), ARGPARSE_c (aInstallKey, "install-key", - "|FILE|install a key from FILE into the WKD"), + "install a key from FILE into the WKD"), ARGPARSE_c (aRemoveKey, "remove-key", - "|ADDR|remove the key ADDR from the WKD"), + "remove a key from the WKD"), ARGPARSE_c (aRevokeKey, "revoke-key", - "|ADDR|mark the key ADDR in the WKD as revoked"), + "mark a key as revoked"), ARGPARSE_group (301, ("@\nOptions:\n ")), @@ -104,6 +110,8 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_s_s (oFrom, "from", "|ADDR|use ADDR as the default sender"), ARGPARSE_s_s (oHeader, "header" , "|NAME=VALUE|add \"NAME: VALUE\" as header to all mails"), + ARGPARSE_s_n (oWithDir, "with-dir", "@"), + ARGPARSE_s_n (oWithFile, "with-file", "@"), ARGPARSE_end () }; @@ -132,6 +140,13 @@ struct server_ctx_s }; typedef struct server_ctx_s *server_ctx_t; + +/* Flag for --with-dir. */ +static int opt_with_dir; +/* Flag for --with-file. */ +static int opt_with_file; + + /* Prototypes. */ static gpg_error_t get_domain_list (strlist_t *r_list); @@ -142,6 +157,7 @@ static gpg_error_t command_list_domains (void); static gpg_error_t command_install_key (const char *fname); static gpg_error_t command_remove_key (const char *mailaddr); static gpg_error_t command_revoke_key (const char *mailaddr); +static gpg_error_t command_check_key (const char *mailaddr); static gpg_error_t command_cron (void); @@ -220,10 +236,17 @@ parse_arguments (ARGPARSE_ARGS *pargs, ARGPARSE_OPTS *popts) case oOutput: opt.output = pargs->r.ret_str; break; + case oWithDir: + opt_with_dir = 1; + break; + case oWithFile: + opt_with_file = 1; + break; case aReceive: case aCron: case aListDomains: + case aCheck: case aInstallKey: case aRemoveKey: case aRevokeKey: @@ -243,7 +266,7 @@ parse_arguments (ARGPARSE_ARGS *pargs, ARGPARSE_OPTS *popts) int main (int argc, char **argv) { - gpg_error_t err; + gpg_error_t err, firsterr; ARGPARSE_ARGS pargs; enum cmd_and_opt_values cmd; @@ -360,16 +383,29 @@ main (int argc, char **argv) case aRemoveKey: if (argc != 1) - wrong_args ("--remove-key MAILADDR"); + wrong_args ("--remove-key USER-ID"); err = command_remove_key (*argv); break; case aRevokeKey: if (argc != 1) - wrong_args ("--revoke-key MAILADDR"); + wrong_args ("--revoke-key USER-ID"); err = command_revoke_key (*argv); break; + case aCheck: + if (!argc) + wrong_args ("--check USER-IDs"); + firsterr = 0; + for (; argc; argc--, argv++) + { + err = command_check_key (*argv); + if (!firsterr) + firsterr = err; + } + err = firsterr; + break; + default: usage (1); err = gpg_error (GPG_ERR_BUG); @@ -1776,7 +1812,11 @@ command_list_domains (void) domain = strrchr (sl->d, '/'); log_assert (domain); domain++; - es_printf ("%s\n", domain); + if (opt_with_dir) + es_printf ("%s %s\n", domain, sl->d); + else + es_printf ("%s\n", domain); + /* Check that the required directories are there. */ for (i=0; i < DIM (requireddirs); i++) @@ -1900,12 +1940,140 @@ command_install_key (const char *fname) } -/* Remove the key with mail address MAILADDR. */ +/* Return the filename and optioanlly the addrspec for USERID at + * R_FNAME and R_ADDRSPEC. R_ADDRSPEC might also be set on error. */ static gpg_error_t -command_remove_key (const char *mailaddr) +fname_from_userid (const char *userid, char **r_fname, char **r_addrspec) { - (void)mailaddr; - return gpg_error (GPG_ERR_NOT_IMPLEMENTED); + gpg_error_t err; + char *addrspec = NULL; + const char *domain; + char *hash = NULL; + const char *s; + char shaxbuf[32]; /* Used for SHA-1 and SHA-256 */ + + *r_fname = NULL; + if (r_addrspec) + *r_addrspec = NULL; + + addrspec = mailbox_from_userid (userid); + if (!addrspec) + { + if (opt.verbose) + log_info ("\"%s\" is not a proper mail address\n", userid); + err = gpg_error (GPG_ERR_INV_USER_ID); + goto leave; + } + + domain = strchr (addrspec, '@'); + log_assert (domain); + domain++; + + /* Hash user ID and create filename. */ + s = strchr (addrspec, '@'); + log_assert (s); + gcry_md_hash_buffer (GCRY_MD_SHA1, shaxbuf, addrspec, s - addrspec); + hash = zb32_encode (shaxbuf, 8*20); + if (!hash) + { + err = gpg_error_from_syserror (); + goto leave; + } + + *r_fname = make_filename_try (opt.directory, domain, "hu", hash, NULL); + if (!*r_fname) + err = gpg_error_from_syserror (); + else + err = 0; + + leave: + if (r_addrspec && addrspec) + *r_addrspec = addrspec; + else + xfree (addrspec); + xfree (hash); + return err; +} + + +/* Check whether the key with USER_ID is installed. */ +static gpg_error_t +command_check_key (const char *userid) +{ + gpg_error_t err; + char *addrspec = NULL; + char *fname = NULL; + + err = fname_from_userid (userid, &fname, &addrspec); + if (err) + goto leave; + + if (access (fname, R_OK)) + { + err = gpg_error_from_syserror (); + if (opt_with_file) + es_printf ("%s n %s\n", addrspec, fname); + if (gpg_err_code (err) == GPG_ERR_ENOENT) + { + if (!opt.quiet) + log_info ("key for '%s' is NOT installed\n", addrspec); + log_inc_errorcount (); + err = 0; + } + else + log_error ("error stating '%s': %s\n", fname, gpg_strerror (err)); + goto leave; + } + + if (opt_with_file) + es_printf ("%s i %s\n", addrspec, fname); + + if (opt.verbose) + log_info ("key for '%s' is installed\n", addrspec); + err = 0; + + leave: + xfree (fname); + xfree (addrspec); + return err; +} + + +/* Remove the key with mail address in USERID. */ +static gpg_error_t +command_remove_key (const char *userid) +{ + gpg_error_t err; + char *addrspec = NULL; + char *fname = NULL; + + err = fname_from_userid (userid, &fname, &addrspec); + if (err) + goto leave; + + if (gnupg_remove (fname)) + { + err = gpg_error_from_syserror (); + if (gpg_err_code (err) == GPG_ERR_ENOENT) + { + if (!opt.quiet) + log_info ("key for '%s' is not installed\n", addrspec); + log_inc_errorcount (); + err = 0; + } + else + log_error ("error removing '%s': %s\n", fname, gpg_strerror (err)); + goto leave; + } + + if (opt.verbose) + log_info ("key for '%s' removed\n", addrspec); + err = 0; + + leave: + xfree (fname); + xfree (addrspec); + return err; } @@ -1913,6 +2081,7 @@ command_remove_key (const char *mailaddr) static gpg_error_t command_revoke_key (const char *mailaddr) { - (void)mailaddr; - return gpg_error (GPG_ERR_NOT_IMPLEMENTED); + /* Remove should be different from removing but we have not yet + * defined a suitable way to do this. */ + return command_remove_key (mailaddr); } diff --git a/tools/gpgconf-comp.c b/tools/gpgconf-comp.c index c799143cd..099f43952 100644 --- a/tools/gpgconf-comp.c +++ b/tools/gpgconf-comp.c @@ -48,6 +48,7 @@ #include "../common/i18n.h" #include "../common/exechelp.h" #include "../common/sysutils.h" +#include "../common/status.h" #include "../common/gc-opt-flags.h" #include "gpgconf.h" @@ -99,7 +100,7 @@ gc_error (int status, int errnum, const char *fmt, ...) { log_printf (NULL); log_printf ("fatal error (exit status %i)\n", status); - exit (status); + gpgconf_failure (gpg_error_from_errno (errnum)); } } @@ -1310,7 +1311,7 @@ gc_component_launch (int component) { es_fputs (_("Component not suitable for launching"), es_stderr); es_putc ('\n', es_stderr); - exit (1); + gpgconf_failure (0); } pgmname = gnupg_module_name (GNUPG_MODULE_NAME_CONNECT_AGENT); @@ -3757,6 +3758,10 @@ gc_process_gpgconf_conf (const char *fname_arg, int update, int defaults, { gc_error (0, 0, "missing rule at '%s', line %d", fname, lineno); result = -1; + gpgconf_write_status (STATUS_WARNING, + "gpgconf.conf %d file '%s' line %d " + "missing rule", + GPG_ERR_SYNTAX, fname, lineno); continue; } *p++ = 0; @@ -3786,6 +3791,10 @@ gc_process_gpgconf_conf (const char *fname_arg, int update, int defaults, { gc_error (0, 0, "missing component at '%s', line %d", fname, lineno); + gpgconf_write_status (STATUS_WARNING, + "gpgconf.conf %d file '%s' line %d " + " missing component", + GPG_ERR_NO_NAME, fname, lineno); result = -1; continue; } @@ -3797,6 +3806,10 @@ gc_process_gpgconf_conf (const char *fname_arg, int update, int defaults, { gc_error (0, 0, "unknown component at '%s', line %d", fname, lineno); + gpgconf_write_status (STATUS_WARNING, + "gpgconf.conf %d file '%s' line %d " + "unknown component", + GPG_ERR_UNKNOWN_NAME, fname, lineno); result = -1; } @@ -3809,6 +3822,10 @@ gc_process_gpgconf_conf (const char *fname_arg, int update, int defaults, { gc_error (0, 0, "missing option at '%s', line %d", fname, lineno); + gpgconf_write_status (STATUS_WARNING, + "gpgconf.conf %d file '%s' line %d " + "missing option", + GPG_ERR_INV_NAME, fname, lineno); result = -1; continue; } @@ -3821,6 +3838,10 @@ gc_process_gpgconf_conf (const char *fname_arg, int update, int defaults, { gc_error (0, 0, "unknown option at '%s', line %d", fname, lineno); + gpgconf_write_status (STATUS_WARNING, + "gpgconf.conf %d file '%s' line %d " + "unknown option", + GPG_ERR_UNKNOWN_OPTION, fname, lineno); result = -1; } } @@ -3837,6 +3858,10 @@ gc_process_gpgconf_conf (const char *fname_arg, int update, int defaults, { gc_error (0, 0, "syntax error in rule at '%s', line %d", fname, lineno); + gpgconf_write_status (STATUS_WARNING, + "gpgconf.conf %d file '%s' line %d " + "syntax error in rule", + GPG_ERR_SYNTAX, fname, lineno); result = -1; continue; } diff --git a/tools/gpgconf.c b/tools/gpgconf.c index 09b2a76e9..59085d8b5 100644 --- a/tools/gpgconf.c +++ b/tools/gpgconf.c @@ -29,6 +29,7 @@ #include "../common/i18n.h" #include "../common/sysutils.h" #include "../common/init.h" +#include "../common/status.h" /* Constants to identify the commands and options. */ @@ -45,6 +46,7 @@ enum cmd_and_opt_values oNoVerbose = 500, oHomedir, oBuilddir, + oStatusFD, aListComponents, aCheckPrograms, @@ -100,6 +102,7 @@ static ARGPARSE_OPTS opts[] = { oQuiet, "quiet", 0, N_("quiet") }, { oDryRun, "dry-run", 0, N_("do not make any changes") }, { oRuntime, "runtime", 0, N_("activate changes at runtime, if possible") }, + ARGPARSE_s_i (oStatusFD, "status-fd", N_("|FD|write status info to this FD")), /* hidden options */ { oHomedir, "homedir", 2, "@" }, { oBuilddir, "build-prefix", 2, "@" }, @@ -110,6 +113,11 @@ static ARGPARSE_OPTS opts[] = }; +/* The stream to output the status information. Status Output is disabled if + * this is NULL. */ +static estream_t statusfp; + + /* Print usage information and provide strings for help. */ static const char * my_strusage( int level ) @@ -159,6 +167,60 @@ get_outfp (estream_t *fp) } +/* Set the status FD. */ +static void +set_status_fd (int fd) +{ + static int last_fd = -1; + + if (fd != -1 && last_fd == fd) + return; + + if (statusfp && statusfp != es_stdout && statusfp != es_stderr) + es_fclose (statusfp); + statusfp = NULL; + if (fd == -1) + return; + + if (fd == 1) + statusfp = es_stdout; + else if (fd == 2) + statusfp = es_stderr; + else + statusfp = es_fdopen (fd, "w"); + if (!statusfp) + { + log_fatal ("can't open fd %d for status output: %s\n", + fd, gpg_strerror (gpg_error_from_syserror ())); + } + last_fd = fd; +} + + +/* Write a status line with code NO followed by the output of the + * printf style FORMAT. The caller needs to make sure that LFs and + * CRs are not printed. */ +void +gpgconf_write_status (int no, const char *format, ...) +{ + va_list arg_ptr; + + if (!statusfp) + return; /* Not enabled. */ + + es_fputs ("[GNUPG:] ", statusfp); + es_fputs (get_status_string (no), statusfp); + if (format) + { + es_putc (' ', statusfp); + va_start (arg_ptr, format); + es_vfprintf (statusfp, format, arg_ptr); + va_end (arg_ptr); + } + es_putc ('\n', statusfp); +} + + static void list_dirs (estream_t fp, char **names) { @@ -493,6 +555,9 @@ main (int argc, char **argv) case oHomedir: gnupg_set_homedir (pargs.r.ret_str); break; case oBuilddir: gnupg_set_builddir (pargs.r.ret_str); break; case oNull: opt.null = 1; break; + case oStatusFD: + set_status_fd (translate_sys2libc_fd_int (pargs.r.ret_int, 1)); + break; case aListDirs: case aListComponents: @@ -518,7 +583,7 @@ main (int argc, char **argv) } if (log_get_errorcount (0)) - exit (2); + gpgconf_failure (GPG_ERR_USER_2); /* Print a warning if an argument looks like an option. */ if (!opt.quiet && !(pargs.flags & ARGPARSE_FLAG_STOP_SEEN)) @@ -554,7 +619,7 @@ main (int argc, char **argv) es_putc ('\n', es_stderr); es_fputs (_("Need one component argument"), es_stderr); es_putc ('\n', es_stderr); - exit (2); + gpgconf_failure (GPG_ERR_USER_2); } else { @@ -563,7 +628,7 @@ main (int argc, char **argv) { es_fputs (_("Component not found"), es_stderr); es_putc ('\n', es_stderr); - exit (1); + gpgconf_failure (0); } if (cmd == aCheckOptions) gc_component_check_options (idx, get_outfp (&outfp), NULL); @@ -571,7 +636,7 @@ main (int argc, char **argv) { gc_component_retrieve_options (idx); if (gc_process_gpgconf_conf (NULL, 1, 0, NULL)) - exit (1); + gpgconf_failure (0); if (cmd == aListOptions) gc_component_list_options (idx, get_outfp (&outfp)); else if (cmd == aChangeOptions) @@ -589,14 +654,14 @@ main (int argc, char **argv) es_putc ('\n', es_stderr); es_fputs (_("Need one component argument"), es_stderr); es_putc ('\n', es_stderr); - exit (2); + gpgconf_failure (GPG_ERR_USER_2); } else if (!strcmp (fname, "all")) { if (cmd == aLaunch) { if (gc_component_launch (-1)) - exit (1); + gpgconf_failure (0); } else { @@ -613,12 +678,12 @@ main (int argc, char **argv) { es_fputs (_("Component not found"), es_stderr); es_putc ('\n', es_stderr); - exit (1); + gpgconf_failure (0); } else if (cmd == aLaunch) { if (gc_component_launch (idx)) - exit (1); + gpgconf_failure (0); } else { @@ -646,7 +711,7 @@ main (int argc, char **argv) { es_fputs (_("Component not found"), es_stderr); es_putc ('\n', es_stderr); - exit (1); + gpgconf_failure (0); } else { @@ -657,12 +722,12 @@ main (int argc, char **argv) case aListConfig: if (gc_process_gpgconf_conf (fname, 0, 0, get_outfp (&outfp))) - exit (1); + gpgconf_failure (0); break; case aCheckConfig: if (gc_process_gpgconf_conf (fname, 0, 0, NULL)) - exit (1); + gpgconf_failure (0); break; case aApplyDefaults: @@ -672,17 +737,17 @@ main (int argc, char **argv) es_putc ('\n', es_stderr); es_fputs (_("No argument allowed"), es_stderr); es_putc ('\n', es_stderr); - exit (2); + gpgconf_failure (GPG_ERR_USER_2); } gc_component_retrieve_options (-1); if (gc_process_gpgconf_conf (NULL, 1, 1, NULL)) - exit (1); + gpgconf_failure (0); break; case aApplyProfile: gc_component_retrieve_options (-1); if (gc_apply_profile (fname)) - exit (1); + gpgconf_failure (0); break; case aListDirs: @@ -697,7 +762,7 @@ main (int argc, char **argv) { es_fprintf (es_stderr, "usage: %s --query-swdb NAME [VERSION]\n", GPGCONF_NAME); - exit (2); + gpgconf_failure (GPG_ERR_USER_2); } get_outfp (&outfp); query_swdb (outfp, fname, argc > 1? argv[1] : NULL); @@ -804,5 +869,22 @@ main (int argc, char **argv) if (es_fclose (outfp)) gc_error (1, errno, "error closing '%s'", opt.outfile); + + if (log_get_errorcount (0)) + gpgconf_failure (0); + else + gpgconf_write_status (STATUS_SUCCESS, NULL); return 0; } + + +void +gpgconf_failure (gpg_error_t err) +{ + if (!err) + err = gpg_error (GPG_ERR_GENERAL); + gpgconf_write_status + (STATUS_FAILURE, "- %u", + gpg_err_code (err) == GPG_ERR_USER_2? GPG_ERR_EINVAL : err); + exit (gpg_err_code (err) == GPG_ERR_USER_2? 2 : 1); +} diff --git a/tools/gpgconf.h b/tools/gpgconf.h index d6d7627aa..8a061ef68 100644 --- a/tools/gpgconf.h +++ b/tools/gpgconf.h @@ -36,6 +36,10 @@ struct } opt; +/*-- gpgconf.c --*/ +void gpgconf_write_status (int no, const char *format, + ...) GPGRT_ATTR_PRINTF(2,3); +void gpgconf_failure (gpg_error_t err) GPGRT_ATTR_NORETURN; /*-- gpgconf-comp.c --*/