From 4257cbb06c8e091e834e989064612f94aa879239 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 8 Nov 2023 11:39:57 +0900 Subject: [PATCH 01/42] scd: Return GPG_ERR_PIN_BLOCKED when it's blocked. * scd/app-openpgp.c (build_enter_admin_pin_prompt): Fix to use GPG_ERR_PIN_BLOCKED. (check_pin): Likewise. -- Cherry-pick from master commit: e6b3d53db36dba8aef640fc0a99cc079551a965a GnuPG-bug-id: 6425 Signed-off-by: NIIBE Yutaka --- scd/app-openpgp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index fd9ce554c..014cd9395 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -2859,7 +2859,7 @@ build_enter_admin_pin_prompt (app_t app, char **r_prompt, int *r_remaining) if (!remaining) { log_info (_("card is permanently locked!\n")); - return gpg_error (GPG_ERR_BAD_PIN); + return gpg_error (GPG_ERR_PIN_BLOCKED); } log_info (ngettext("%d Admin PIN attempt remaining before card" @@ -5998,7 +5998,7 @@ do_check_pin (app_t app, ctrl_t ctrl, const char *keyidstr, if (!count) { log_info (_("card is permanently locked!\n")); - return gpg_error (GPG_ERR_BAD_PIN); + return gpg_error (GPG_ERR_PIN_BLOCKED); } else if (count < 3) { From 4db2e13e2c8c9dd711500c772eedd9a5f7ca6300 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 8 Nov 2023 13:31:55 +0900 Subject: [PATCH 02/42] tools:gpg-card: Fix an error code for Reset Code. * tools/gpg-card.c (cmd_unblock): Use GPG_ERR_NO_RESET_CODE. -- Cherry-pick from master commit of: 65607fb81def5fc55320a1abfbb8ebdad9512011 GnuPG-bug-id: 6425 Signed-off-by: NIIBE Yutaka --- tools/gpg-card.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/gpg-card.c b/tools/gpg-card.c index 290ed485d..4b0457ab9 100644 --- a/tools/gpg-card.c +++ b/tools/gpg-card.c @@ -2981,7 +2981,7 @@ cmd_unblock (card_info_t info) else if (!info->chvinfo[1]) { log_error (_("Reset Code not or not anymore available\n")); - err = gpg_error (GPG_ERR_PIN_BLOCKED); + err = gpg_error (GPG_ERR_NO_RESET_CODE); } else { From d6f738729f0f4bf83c3a44fc4bba33ea6aaba622 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 8 Nov 2023 13:41:16 +0900 Subject: [PATCH 03/42] gpg,tools: Handle GPG_ERR_PIN_BLOCKED and GPG_ERR_NO_RESET_CODE. * g10/card-util.c (write_sc_op_status): Emit 3 and 4 in status line. * tools/card-call-scd.c (status_sc_op_failure): Likewise. -- Cherry-pick from master commit of: 64f5f7b74e428b15205f6e8ae14dec84663c3076 GnuPG-bug-id: 6425 Signed-off-by: NIIBE Yutaka --- g10/card-util.c | 6 ++++++ tools/card-call-scd.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/g10/card-util.c b/g10/card-util.c index b83472285..a66c2e3de 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -65,6 +65,12 @@ write_sc_op_status (gpg_error_t err) case GPG_ERR_BAD_RESET_CODE: write_status_text (STATUS_SC_OP_FAILURE, "2"); break; + case GPG_ERR_PIN_BLOCKED: + write_status_text (STATUS_SC_OP_FAILURE, "3"); + break; + case GPG_ERR_NO_RESET_CODE: + write_status_text (STATUS_SC_OP_FAILURE, "4"); + break; default: write_status (STATUS_SC_OP_FAILURE); break; diff --git a/tools/card-call-scd.c b/tools/card-call-scd.c index 98d3ddeb7..34b03e694 100644 --- a/tools/card-call-scd.c +++ b/tools/card-call-scd.c @@ -238,6 +238,12 @@ status_sc_op_failure (gpg_error_t err) case GPG_ERR_BAD_RESET_CODE: gnupg_status_printf (STATUS_SC_OP_FAILURE, "2"); break; + case GPG_ERR_PIN_BLOCKED: + gnupg_status_printf (STATUS_SC_OP_FAILURE, "3"); + break; + case GPG_ERR_NO_RESET_CODE: + gnupg_status_printf (STATUS_SC_OP_FAILURE, "4"); + break; default: gnupg_status_printf (STATUS_SC_OP_FAILURE, NULL); break; From 3a669f175f0d23a845088902e1bca884a525cedb Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 8 Nov 2023 16:07:08 +0100 Subject: [PATCH 04/42] gpgsm: Cleanup of legacy variable name use. * sm/encrypt.c (gpgsm_encrypt): Unify use of RC and ERR. * sm/sign.c (gpgsm_sign): ditto. -- Initially we didn't used the gpg_error_t thingy and while migrating we sometimes used RC and ERR for tracking the error. This is pretty error prone and thus we better remove it (after 20 years). --- sm/encrypt.c | 78 +++++++++++++------------------ sm/sign.c | 128 ++++++++++++++++++++++----------------------------- 2 files changed, 89 insertions(+), 117 deletions(-) diff --git a/sm/encrypt.c b/sm/encrypt.c index 024f48673..3c43edf61 100644 --- a/sm/encrypt.c +++ b/sm/encrypt.c @@ -576,9 +576,8 @@ encrypt_cb (void *cb_value, char *buffer, size_t count, size_t *nread) int gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) { - int rc = 0; + gpg_error_t err = 0; gnupg_ksba_io_t b64writer = NULL; - gpg_error_t err; ksba_writer_t writer; ksba_reader_t reader = NULL; ksba_cms_t cms = NULL; @@ -607,7 +606,7 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) log_error(_("no valid recipients given\n")); gpgsm_status (ctrl, STATUS_NO_RECP, "0"); audit_log_i (ctrl->audit, AUDIT_GOT_RECIPIENTS, 0); - rc = gpg_error (GPG_ERR_NO_PUBKEY); + err = gpg_error (GPG_ERR_NO_PUBKEY); goto leave; } @@ -619,7 +618,7 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) if (!kh) { log_error (_("failed to allocate keyDB handle\n")); - rc = gpg_error (GPG_ERR_GENERAL); + err = gpg_error (GPG_ERR_GENERAL); goto leave; } @@ -627,29 +626,27 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) data_fp = es_fdopen_nc (data_fd, "rb"); if (!data_fp) { - rc = gpg_error_from_syserror (); - log_error ("fdopen() failed: %s\n", strerror (errno)); + err = gpg_error_from_syserror (); + log_error ("fdopen() failed: %s\n", gpg_strerror (err)); goto leave; } err = ksba_reader_new (&reader); + if (!err) + err = ksba_reader_set_cb (reader, encrypt_cb, &encparm); if (err) - rc = err; - if (!rc) - rc = ksba_reader_set_cb (reader, encrypt_cb, &encparm); - if (rc) - goto leave; + goto leave; encparm.fp = data_fp; ctrl->pem_name = "ENCRYPTED MESSAGE"; - rc = gnupg_ksba_create_writer + err = gnupg_ksba_create_writer (&b64writer, ((ctrl->create_pem? GNUPG_KSBA_IO_PEM : 0) | (ctrl->create_base64? GNUPG_KSBA_IO_BASE64 : 0)), ctrl->pem_name, out_fp, &writer); - if (rc) + if (err) { - log_error ("can't create writer: %s\n", gpg_strerror (rc)); + log_error ("can't create writer: %s\n", gpg_strerror (err)); goto leave; } @@ -659,17 +656,13 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) err = ksba_cms_new (&cms); if (err) - { - rc = err; - goto leave; - } + goto leave; err = ksba_cms_set_reader_writer (cms, reader, writer); if (err) { log_error ("ksba_cms_set_reader_writer failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } @@ -684,7 +677,6 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) { log_error ("ksba_cms_set_content_type failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } @@ -696,34 +688,34 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) log_error (_("cipher algorithm '%s' may not be used in %s mode\n"), opt.def_cipher_algoid, gnupg_compliance_option_string (opt.compliance)); - rc = gpg_error (GPG_ERR_CIPHER_ALGO); + err = gpg_error (GPG_ERR_CIPHER_ALGO); goto leave; } if (!gnupg_rng_is_compliant (opt.compliance)) { - rc = gpg_error (GPG_ERR_FORBIDDEN); + err = gpg_error (GPG_ERR_FORBIDDEN); log_error (_("%s is not compliant with %s mode\n"), "RNG", gnupg_compliance_option_string (opt.compliance)); gpgsm_status_with_error (ctrl, STATUS_ERROR, - "random-compliance", rc); + "random-compliance", err); goto leave; } /* Create a session key */ dek = xtrycalloc_secure (1, sizeof *dek); if (!dek) - rc = out_of_core (); + err = gpg_error_from_syserror (); else - { - dek->algoid = opt.def_cipher_algoid; - rc = init_dek (dek); - } - if (rc) + { + dek->algoid = opt.def_cipher_algoid; + err = init_dek (dek); + } + if (err) { log_error ("failed to create the session key: %s\n", - gpg_strerror (rc)); + gpg_strerror (err)); goto leave; } @@ -732,7 +724,6 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) { log_error ("ksba_cms_set_content_enc_algo failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } @@ -742,7 +733,7 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) encparm.buffer = xtrymalloc (encparm.bufsize); if (!encparm.buffer) { - rc = out_of_core (); + err = gpg_error_from_syserror (); goto leave; } @@ -784,12 +775,12 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) xfree (curve); curve = NULL; - rc = encrypt_dek (dek, cl->cert, pk_algo, &encval); - if (rc) + err = encrypt_dek (dek, cl->cert, pk_algo, &encval); + if (err) { - audit_log_cert (ctrl->audit, AUDIT_ENCRYPTED_TO, cl->cert, rc); + audit_log_cert (ctrl->audit, AUDIT_ENCRYPTED_TO, cl->cert, err); log_error ("encryption failed for recipient no. %d: %s\n", - recpno, gpg_strerror (rc)); + recpno, gpg_strerror (err)); goto leave; } @@ -799,7 +790,6 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) audit_log_cert (ctrl->audit, AUDIT_ENCRYPTED_TO, cl->cert, err); log_error ("ksba_cms_add_recipient failed: %s\n", gpg_strerror (err)); - rc = err; xfree (encval); goto leave; } @@ -811,7 +801,6 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) { log_error ("ksba_cms_set_enc_val failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } } @@ -825,7 +814,7 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) log_error (_("operation forced to fail due to" " unfulfilled compliance rules\n")); gpgsm_errors_seen = 1; - rc = gpg_error (GPG_ERR_FORBIDDEN); + err = gpg_error (GPG_ERR_FORBIDDEN); goto leave; } @@ -837,7 +826,6 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) if (err) { log_error ("creating CMS object failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } } @@ -846,15 +834,15 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) if (encparm.readerror) { log_error ("error reading input: %s\n", strerror (encparm.readerror)); - rc = gpg_error (gpg_err_code_from_errno (encparm.readerror)); + err = gpg_error (gpg_err_code_from_errno (encparm.readerror)); goto leave; } - rc = gnupg_ksba_finish_writer (b64writer); - if (rc) + err = gnupg_ksba_finish_writer (b64writer); + if (err) { - log_error ("write failed: %s\n", gpg_strerror (rc)); + log_error ("write failed: %s\n", gpg_strerror (err)); goto leave; } audit_log (ctrl->audit, AUDIT_ENCRYPTION_DONE); @@ -869,5 +857,5 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp) xfree (dek); es_fclose (data_fp); xfree (encparm.buffer); - return rc; + return err; } diff --git a/sm/sign.c b/sm/sign.c index c3781506d..cd0ddceb3 100644 --- a/sm/sign.c +++ b/sm/sign.c @@ -624,8 +624,8 @@ int gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, int data_fd, int detached, estream_t out_fp) { - int i, rc; gpg_error_t err; + int i; gnupg_ksba_io_t b64writer = NULL; ksba_writer_t writer; estream_t sig_fp = NULL; /* Used for detached signatures. */ @@ -648,18 +648,18 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, if (!kh) { log_error (_("failed to allocate keyDB handle\n")); - rc = gpg_error (GPG_ERR_GENERAL); + err = gpg_error (GPG_ERR_GENERAL); goto leave; } if (!gnupg_rng_is_compliant (opt.compliance)) { - rc = gpg_error (GPG_ERR_FORBIDDEN); + err = gpg_error (GPG_ERR_FORBIDDEN); log_error (_("%s is not compliant with %s mode\n"), "RNG", gnupg_compliance_option_string (opt.compliance)); gpgsm_status_with_error (ctrl, STATUS_ERROR, - "random-compliance", rc); + "random-compliance", err); goto leave; } @@ -671,20 +671,20 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, if (binary_detached) { sig_fp = es_fopenmem (0, "w+"); - rc = sig_fp? 0 : gpg_error_from_syserror (); - if (!rc) - rc = gnupg_ksba_create_writer (&b64writer, 0, NULL, sig_fp, &writer); + err = sig_fp? 0 : gpg_error_from_syserror (); + if (!err) + err = gnupg_ksba_create_writer (&b64writer, 0, NULL, sig_fp, &writer); } else { - rc = gnupg_ksba_create_writer + err = gnupg_ksba_create_writer (&b64writer, ((ctrl->create_pem? GNUPG_KSBA_IO_PEM : 0) | (ctrl->create_base64? GNUPG_KSBA_IO_BASE64 : 0)), ctrl->pem_name, out_fp, &writer); } - if (rc) + if (err) { - log_error ("can't create writer: %s\n", gpg_strerror (rc)); + log_error ("can't create writer: %s\n", gpg_strerror (err)); goto leave; } @@ -694,17 +694,13 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, err = ksba_cms_new (&cms); if (err) - { - rc = err; - goto leave; - } + goto leave; err = ksba_cms_set_reader_writer (cms, NULL, writer); if (err) { log_debug ("ksba_cms_set_reader_writer failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } @@ -721,7 +717,6 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, { log_debug ("ksba_cms_set_content_type failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } @@ -734,23 +729,23 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, log_error ("no default signer found\n"); gpgsm_status2 (ctrl, STATUS_INV_SGNR, get_inv_recpsgnr_code (GPG_ERR_NO_SECKEY), NULL); - rc = gpg_error (GPG_ERR_GENERAL); + err = gpg_error (GPG_ERR_GENERAL); goto leave; } /* Although we don't check for ambiguous specification we will check that the signer's certificate is usable and valid. */ - rc = gpgsm_cert_use_sign_p (cert, 0); - if (!rc) - rc = gpgsm_validate_chain (ctrl, cert, + err = gpgsm_cert_use_sign_p (cert, 0); + if (!err) + err = gpgsm_validate_chain (ctrl, cert, GNUPG_ISOTIME_NONE, NULL, 0, NULL, 0, NULL); - if (rc) + if (err) { char *tmpfpr; tmpfpr = gpgsm_get_fingerprint_hexstring (cert, 0); gpgsm_status2 (ctrl, STATUS_INV_SGNR, - get_inv_recpsgnr_code (rc), tmpfpr, NULL); + get_inv_recpsgnr_code (err), tmpfpr, NULL); xfree (tmpfpr); goto leave; } @@ -759,7 +754,7 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, signerlist = xtrycalloc (1, sizeof *signerlist); if (!signerlist) { - rc = out_of_core (); + err = gpg_error_from_syserror (); ksba_cert_release (cert); goto leave; } @@ -867,22 +862,21 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, /* Gather certificates of signers and store them in the CMS object. */ for (cl=signerlist; cl; cl = cl->next) { - rc = gpgsm_cert_use_sign_p (cl->cert, 0); - if (rc) + err = gpgsm_cert_use_sign_p (cl->cert, 0); + if (err) goto leave; err = ksba_cms_add_signer (cms, cl->cert); if (err) { log_error ("ksba_cms_add_signer failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } - rc = add_certificate_list (ctrl, cms, cl->cert); - if (rc) + err = add_certificate_list (ctrl, cms, cl->cert); + if (err) { log_error ("failed to store list of certificates: %s\n", - gpg_strerror(rc)); + gpg_strerror (err)); goto leave; } /* Set the hash algorithm we are going to use */ @@ -891,7 +885,6 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, { log_debug ("ksba_cms_add_digest_algo failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } } @@ -913,7 +906,6 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, { log_error (_("checking for qualified certificate failed: %s\n"), gpg_strerror (err)); - rc = err; goto leave; } if (*buffer) @@ -921,19 +913,16 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, else err = gpgsm_not_qualified_warning (ctrl, cl->cert); if (err) - { - rc = err; - goto leave; - } + goto leave; } } /* Prepare hashing (actually we are figuring out what we have set above). */ - rc = gcry_md_open (&data_md, 0, 0); - if (rc) + err = gcry_md_open (&data_md, 0, 0); + if (err) { - log_error ("md_open failed: %s\n", gpg_strerror (rc)); + log_error ("md_open failed: %s\n", gpg_strerror (err)); goto leave; } if (DBG_HASHING) @@ -945,7 +934,7 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, if (!algo) { log_error ("unknown hash algorithm '%s'\n", algoid? algoid:"?"); - rc = gpg_error (GPG_ERR_BUG); + err = gpg_error (GPG_ERR_BUG); goto leave; } gcry_md_enable (data_md, algo); @@ -970,7 +959,7 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, if ( !digest || !digest_len ) { log_error ("problem getting the hash of the data\n"); - rc = gpg_error (GPG_ERR_BUG); + err = gpg_error (GPG_ERR_BUG); goto leave; } err = ksba_cms_set_message_digest (cms, signer, digest, digest_len); @@ -978,7 +967,6 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, { log_error ("ksba_cms_set_message_digest failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } } @@ -992,7 +980,6 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, { log_error ("ksba_cms_set_signing_time failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } } @@ -1034,7 +1021,6 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, if (err) { log_error ("creating CMS object failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } @@ -1046,8 +1032,8 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, log_assert (!detached); - rc = hash_and_copy_data (data_fd, data_md, writer); - if (rc) + err = hash_and_copy_data (data_fd, data_md, writer); + if (err) goto leave; audit_log (ctrl->audit, AUDIT_GOT_DATA); for (cl=signerlist,signer=0; cl; cl = cl->next, signer++) @@ -1057,7 +1043,7 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, if ( !digest || !digest_len ) { log_error ("problem getting the hash of the data\n"); - rc = gpg_error (GPG_ERR_BUG); + err = gpg_error (GPG_ERR_BUG); goto leave; } err = ksba_cms_set_message_digest (cms, signer, @@ -1066,7 +1052,6 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, { log_error ("ksba_cms_set_message_digest failed: %s\n", gpg_strerror (err)); - rc = err; goto leave; } } @@ -1076,10 +1061,10 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, /* Compute the signature for all signers. */ gcry_md_hd_t md; - rc = gcry_md_open (&md, 0, 0); - if (rc) + err = gcry_md_open (&md, 0, 0); + if (err) { - log_error ("md_open failed: %s\n", gpg_strerror (rc)); + log_error ("md_open failed: %s\n", gpg_strerror (err)); goto leave; } if (DBG_HASHING) @@ -1104,20 +1089,20 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, } } - rc = ksba_cms_hash_signed_attrs (cms, signer); - if (rc) + err = ksba_cms_hash_signed_attrs (cms, signer); + if (err) { log_debug ("hashing signed attrs failed: %s\n", - gpg_strerror (rc)); + gpg_strerror (err)); gcry_md_close (md); goto leave; } - rc = gpgsm_create_cms_signature (ctrl, cl->cert, - md, cl->hash_algo, &sigval); - if (rc) + err = gpgsm_create_cms_signature (ctrl, cl->cert, + md, cl->hash_algo, &sigval); + if (err) { - audit_log_cert (ctrl->audit, AUDIT_SIGNED_BY, cl->cert, rc); + audit_log_cert (ctrl->audit, AUDIT_SIGNED_BY, cl->cert, err); gcry_md_close (md); goto leave; } @@ -1129,7 +1114,6 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, audit_log_cert (ctrl->audit, AUDIT_SIGNED_BY, cl->cert, err); log_error ("failed to store the signature: %s\n", gpg_strerror (err)); - rc = err; gcry_md_close (md); goto leave; } @@ -1138,11 +1122,10 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, fpr = gpgsm_get_fingerprint_hexstring (cl->cert, GCRY_MD_SHA1); if (!fpr) { - rc = gpg_error (GPG_ERR_ENOMEM); + err = gpg_error (GPG_ERR_ENOMEM); gcry_md_close (md); goto leave; } - rc = 0; if (opt.verbose) { char *pkalgostr = gpgsm_pubkey_algo_string (cl->cert, NULL); @@ -1159,9 +1142,9 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, signed_at, fpr); if (!buf) - rc = gpg_error_from_syserror (); + err = gpg_error_from_syserror (); xfree (fpr); - if (rc) + if (err) { gcry_md_close (md); goto leave; @@ -1175,10 +1158,10 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, } while (stopreason != KSBA_SR_READY); - rc = gnupg_ksba_finish_writer (b64writer); - if (rc) + err = gnupg_ksba_finish_writer (b64writer); + if (err) { - log_error ("write failed: %s\n", gpg_strerror (rc)); + log_error ("write failed: %s\n", gpg_strerror (err)); goto leave; } @@ -1187,13 +1170,14 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, void *blob = NULL; size_t bloblen; - rc = es_fclose_snatch (sig_fp, &blob, &bloblen); + err = (es_fclose_snatch (sig_fp, &blob, &bloblen)? + gpg_error_from_syserror () : 0); sig_fp = NULL; - if (rc) + if (err) goto leave; - rc = write_detached_signature (ctrl, blob, bloblen, out_fp); + err = write_detached_signature (ctrl, blob, bloblen, out_fp); xfree (blob); - if (rc) + if (err) goto leave; } @@ -1202,9 +1186,9 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, log_info ("signature created\n"); leave: - if (rc) + if (err) log_error ("error creating signature: %s <%s>\n", - gpg_strerror (rc), gpg_strsource (rc) ); + gpg_strerror (err), gpg_strsource (err) ); if (release_signerlist) gpgsm_release_certlist (signerlist); xfree (curve); @@ -1213,5 +1197,5 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, keydb_release (kh); gcry_md_close (data_md); es_fclose (sig_fp); - return rc; + return err; } From bf7b785b0e471533e5bb2db0e6a2b05b8e17d59d Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 8 Nov 2023 16:08:25 +0100 Subject: [PATCH 05/42] common: Declare two LibrePGP constants for future use * common/openpgpdefs.h (SIGSUBPKT_META_HASH): New. (SIGSUBPKT_TRUST_ALIAS): New. --- common/openpgpdefs.h | 3 +++ g10/keyedit.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/common/openpgpdefs.h b/common/openpgpdefs.h index 625747983..180680bcc 100644 --- a/common/openpgpdefs.h +++ b/common/openpgpdefs.h @@ -122,6 +122,9 @@ typedef enum SIGSUBPKT_ATTST_SIGS = 37, /* Attested Certifications. */ SIGSUBPKT_KEY_BLOCK = 38, /* Entire key used. */ + SIGSUBPKT_META_HASH = 40, /* Literal Data Meta Hash. */ + SIGSUBPKT_TRUST_ALIAS = 41, /* Trust Alias. */ + SIGSUBPKT_FLAG_CRITICAL = 128 } sigsubpkttype_t; diff --git a/g10/keyedit.c b/g10/keyedit.c index 21c1ee8d8..1f614fb7e 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -4794,7 +4794,7 @@ fail: /* * Ask for a new additional decryption subkey and add it to the key * block. Returns true if the keyblock was changed and false - * otherwise. If ADSKFPR is not NULL, this fucntion has been called + * otherwise. If ADSKFPR is not NULL, this function has been called * by quick_addadsk and gives the fingerprint of the to be added key. */ static int From 3572b19fbd8f6eea1edcaa8f753a7c9654702bed Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 8 Nov 2023 17:09:04 +0100 Subject: [PATCH 06/42] gpgsm: Support ECDSA in de-vs mode. * common/compliance.h (PK_ALGO_FLAG_ECC18): New. * common/compliance.c (gnupg_pk_is_allowed): Implement. * sm/decrypt.c (gpgsm_decrypt): Pass new flag. * sm/sign.c (gpgsm_sign): Ditto. * sm/verify.c (gpgsm_verify): Ditto. -- GnuPG-bug-id: 6802 --- NEWS | 2 ++ common/compliance.c | 13 +++++++++++-- common/compliance.h | 1 + sm/decrypt.c | 3 ++- sm/sign.c | 4 ++-- sm/verify.c | 1 + 6 files changed, 19 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index 7f6162cbb..889aff8e1 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,8 @@ Noteworthy changes in version 2.4.4 (unreleased) ------------------------------------------------ + * gpgsm: Support ECDSA in de-vs compliance mode. [T6802] + * Fix garbled time output in non-English Windows. [T6741] Release-info: https://dev.gnupg.org/T6578 diff --git a/common/compliance.c b/common/compliance.c index 59d94038d..04978ed1b 100644 --- a/common/compliance.c +++ b/common/compliance.c @@ -256,6 +256,13 @@ gnupg_pk_is_allowed (enum gnupg_compliance_mode compliance, if (! initialized) return 1; + /* Map the the generic ECC algo to ECDSA if requested. */ + if ((algo_flags & PK_ALGO_FLAG_ECC18) + && algo == GCRY_PK_ECC + && (use == PK_USE_VERIFICATION + || use == PK_USE_SIGNING)) + algo = GCRY_PK_ECDSA; + switch (compliance) { case CO_DE_VS: @@ -280,7 +287,6 @@ gnupg_pk_is_allowed (enum gnupg_compliance_mode compliance, default: log_assert (!"reached"); } - (void)algo_flags; break; case PUBKEY_ALGO_DSA: @@ -301,7 +307,7 @@ gnupg_pk_is_allowed (enum gnupg_compliance_mode compliance, result = (use == PK_USE_DECRYPTION); break; - case PUBKEY_ALGO_ECDH: + case PUBKEY_ALGO_ECDH: /* Same value as GCRY_PK_ECC, i.e. 18 */ case GCRY_PK_ECDH: if (use == PK_USE_DECRYPTION) result = 1; @@ -549,6 +555,9 @@ gnupg_rng_is_compliant (enum gnupg_compliance_mode compliance) int *result; int res; + /* #warning debug code ahead */ + /* return 1; */ + result = get_compliance_cache (compliance, 1); if (result && *result != -1) diff --git a/common/compliance.h b/common/compliance.h index ead11472c..111fdc74b 100644 --- a/common/compliance.h +++ b/common/compliance.h @@ -50,6 +50,7 @@ enum pk_use_case /* Flags to distinguish public key algorithm variants. */ #define PK_ALGO_FLAG_RSAPSS 1 /* Use rsaPSS padding. */ +#define PK_ALGO_FLAG_ECC18 256 /* GCRY_PK_ECC is used in a generic way. */ int gnupg_pk_is_compliant (enum gnupg_compliance_mode compliance, int algo, diff --git a/sm/decrypt.c b/sm/decrypt.c index 787e2f5e6..6d63189b8 100644 --- a/sm/decrypt.c +++ b/sm/decrypt.c @@ -1318,7 +1318,8 @@ gpgsm_decrypt (ctrl_t ctrl, int in_fd, estream_t out_fp) /* Check compliance. */ if (!gnupg_pk_is_allowed (opt.compliance, PK_USE_DECRYPTION, - pk_algo, 0, NULL, nbits, curve)) + pk_algo, PK_ALGO_FLAG_ECC18, + NULL, nbits, curve)) { char kidstr[10+1]; diff --git a/sm/sign.c b/sm/sign.c index cd0ddceb3..3e8f26cbd 100644 --- a/sm/sign.c +++ b/sm/sign.c @@ -835,8 +835,8 @@ gpgsm_sign (ctrl_t ctrl, certlist_t signerlist, goto leave; } - if (!gnupg_pk_is_allowed (opt.compliance, PK_USE_SIGNING, pk_algo, 0, - NULL, nbits, curve)) + if (!gnupg_pk_is_allowed (opt.compliance, PK_USE_SIGNING, pk_algo, + PK_ALGO_FLAG_ECC18, NULL, nbits, curve)) { char kidstr[10+1]; diff --git a/sm/verify.c b/sm/verify.c index 1f5c1d378..e83a24f44 100644 --- a/sm/verify.c +++ b/sm/verify.c @@ -503,6 +503,7 @@ gpgsm_verify (ctrl_t ctrl, int in_fd, int data_fd, estream_t out_fp) audit_log_i (ctrl->audit, AUDIT_DATA_HASH_ALGO, algo); /* Check compliance. */ + pkalgoflags |= PK_ALGO_FLAG_ECC18; if (! gnupg_pk_is_allowed (opt.compliance, PK_USE_VERIFICATION, pkalgo, pkalgoflags, NULL, nbits, pkcurve)) { From bafa7bf27f7d059708d73abc739dbd4e5f5c5682 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Thu, 9 Nov 2023 13:36:12 +0900 Subject: [PATCH 07/42] gpg,sm: Set confidential in assuan communication for password. * g10/call-agent.c (default_inq_cb): Call assuan_begin_confidential and assuan_end_confidential. * sm/call-agent.c (default_inq_cb): Likewise. -- Cherry pick from master commit of: ec1446f9446506b5fbdf90cdeb9cbe1f410a657e GnuPG-bug-id: 6654 Signed-off-by: NIIBE Yutaka --- g10/call-agent.c | 2 ++ sm/call-agent.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/g10/call-agent.c b/g10/call-agent.c index eb9f8e29b..4defa7990 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -161,6 +161,7 @@ default_inq_cb (void *opaque, const char *line) || has_leading_keyword (line, "NEW_PASSPHRASE")) && opt.pinentry_mode == PINENTRY_MODE_LOOPBACK) { + assuan_begin_confidential (parm->ctx); if (have_static_passphrase ()) { s = get_static_passphrase (); @@ -187,6 +188,7 @@ default_inq_cb (void *opaque, const char *line) err = assuan_send_data (parm->ctx, pw, strlen (pw)); xfree (pw); } + assuan_end_confidential (parm->ctx); } else if ((s = has_leading_keyword (line, "CONFIRM")) && opt.pinentry_mode == PINENTRY_MODE_LOOPBACK diff --git a/sm/call-agent.c b/sm/call-agent.c index 698039504..71768910f 100644 --- a/sm/call-agent.c +++ b/sm/call-agent.c @@ -221,7 +221,9 @@ default_inq_cb (void *opaque, const char *line) && have_static_passphrase ()) { const char *s = get_static_passphrase (); + assuan_begin_confidential (parm->ctx); err = assuan_send_data (parm->ctx, s, strlen (s)); + assuan_end_confidential (parm->ctx); } else log_error ("ignoring gpg-agent inquiry '%s'\n", line); From e6cedba11900226caf781d39ab4193d98e2cc0d7 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 14 Nov 2023 09:47:13 +0100 Subject: [PATCH 08/42] gpgsm: Re-introduce the bad passphrase hint for pkcs#12. * sm/minip12.c (parse_bag_encrypted_data): Set the badpass flag. (parse_shrouded_key_bag): Ditto. -- --- sm/minip12.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sm/minip12.c b/sm/minip12.c index ae81d821b..1bbe126ae 100644 --- a/sm/minip12.c +++ b/sm/minip12.c @@ -936,6 +936,7 @@ parse_bag_encrypted_data (struct p12_parse_ctx_s *ctx, tlv_parser_t tlv) if (!datalen) { err = gpg_error (GPG_ERR_DECRYPT_FAILED); + ctx->badpass = 1; /* This is the most likley reason. */ goto bailout; } @@ -1461,6 +1462,7 @@ parse_shrouded_key_bag (struct p12_parse_ctx_s *ctx, tlv_parser_t tlv) if (!datalen) { err = gpg_error (GPG_ERR_DECRYPT_FAILED); + ctx->badpass = 1; goto bailout; } From def8f5f3d28bd5b19fd68e9fbd2eeb1d04c08db1 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 14 Nov 2023 15:08:20 +0100 Subject: [PATCH 09/42] gpg,gpgsm: Hide password in debug output also for asked passwords. * g10/call-agent.c (agent_get_passphrase): Call assuan_begin_confidential and assuan_end_confidential. * sm/call-agent.c (gpgsm_agent_ask_passphrase): Ditto. -- GnuPG-bug-id: 6654 The drawback of this solution is that we don't see any IPC lines from the assuan_transact. Everything else would require larger changes to libassuan. --- g10/call-agent.c | 6 +++++- sm/call-agent.c | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/g10/call-agent.c b/g10/call-agent.c index 4defa7990..c90cdfda5 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -1995,7 +1995,7 @@ agent_get_passphrase (const char *cache_id, char *arg4 = NULL; membuf_t data; struct default_inq_parm_s dfltparm; - int have_newsymkey; + int have_newsymkey, wasconf; memset (&dfltparm, 0, sizeof dfltparm); @@ -2047,10 +2047,14 @@ agent_get_passphrase (const char *cache_id, xfree (arg4); init_membuf_secure (&data, 64); + wasconf = assuan_get_flag (agent_ctx, ASSUAN_CONFIDENTIAL); + assuan_begin_confidential (agent_ctx); rc = assuan_transact (agent_ctx, line, put_membuf_cb, &data, default_inq_cb, &dfltparm, NULL, NULL); + if (!wasconf) + assuan_end_confidential (agent_ctx); if (rc) xfree (get_membuf (&data, NULL)); diff --git a/sm/call-agent.c b/sm/call-agent.c index 71768910f..eb6671692 100644 --- a/sm/call-agent.c +++ b/sm/call-agent.c @@ -1322,6 +1322,7 @@ gpgsm_agent_ask_passphrase (ctrl_t ctrl, const char *desc_msg, int repeat, char *arg4 = NULL; membuf_t data; struct default_inq_parm_s inq_parm; + int wasconf; *r_passphrase = NULL; @@ -1340,9 +1341,13 @@ gpgsm_agent_ask_passphrase (ctrl_t ctrl, const char *desc_msg, int repeat, xfree (arg4); init_membuf_secure (&data, 64); + wasconf = assuan_get_flag (agent_ctx, ASSUAN_CONFIDENTIAL); + assuan_begin_confidential (agent_ctx); err = assuan_transact (agent_ctx, line, put_membuf_cb, &data, default_inq_cb, &inq_parm, NULL, NULL); + if (!wasconf) + assuan_end_confidential (agent_ctx); if (err) xfree (get_membuf (&data, NULL)); From a33ad8f9bf92d144285769a7d17891c595365fa2 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 16 Nov 2023 17:04:02 +0100 Subject: [PATCH 10/42] scd: Minor debug output tweak * scd/apdu.c (send_le): Do not dump "[all zero]" if tehre is no data. * scd/iso7816.c (iso7816_select_mf): Cosmetic fix. --- scd/apdu.c | 4 +++- scd/iso7816.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/scd/apdu.c b/scd/apdu.c index deb1134e6..7f3c320d2 100644 --- a/scd/apdu.c +++ b/scd/apdu.c @@ -3049,7 +3049,9 @@ send_le (int slot, int class, int ins, int p0, int p1, sw, (unsigned int)resultlen); if ( !retbuf && (sw == SW_SUCCESS || (sw & 0xff00) == SW_MORE_DATA)) { - if (all_zero_p (result, resultlen)) + if (!resultlen) + ; + else if (all_zero_p (result, resultlen)) log_debug (" dump: [all zero]\n"); else log_printhex (result, resultlen, " dump:"); diff --git a/scd/iso7816.c b/scd/iso7816.c index 47e16056c..703f1fdab 100644 --- a/scd/iso7816.c +++ b/scd/iso7816.c @@ -166,7 +166,7 @@ iso7816_select_mf (int slot) { int sw; - sw = apdu_send_simple (slot, 0, 0x00, CMD_SELECT_FILE, 0x000, 0x0c, -1, NULL); + sw = apdu_send_simple (slot, 0, 0x00, CMD_SELECT_FILE, 0x00, 0x0c, -1, NULL); return map_sw (sw); } From 5304c9b080b407bcbf8944ccd3ed669a6ab02616 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 16 Nov 2023 17:10:08 +0100 Subject: [PATCH 11/42] scd:p15: Basic support for Starcos 3.2. * scd/app-p15.c (CARD_TYPE_STARCOS_32): New. (card_atr_list): Add ATR for my sample card. (cardtype2str): Add starcos string. (select_ef_by_path): Factor all code out to ... (select_by_path): this. Add arg to request a directory. Simplify the case pathlen>1 case. Fix error printing. (select_df_by_path): New. (prepare_verify_pin): For starcos select a DF. (app_select_p15): Don't use extended mode for starcos. -- This allows reading the certificates from my sample cards. Signing does not yet work; I need to do get some I/O traces using other software. The basic support for AET cards shut still work but I have not found my AET card. --- scd/app-p15.c | 85 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 52 insertions(+), 33 deletions(-) diff --git a/scd/app-p15.c b/scd/app-p15.c index 4338a623e..85c28d9a7 100644 --- a/scd/app-p15.c +++ b/scd/app-p15.c @@ -75,7 +75,8 @@ typedef enum CARD_TYPE_CARDOS_50, CARD_TYPE_CARDOS_53, CARD_TYPE_AET, /* A.E.T. Europe JCOP card. */ - CARD_TYPE_BELPIC /* Belgian eID card specs. */ + CARD_TYPE_BELPIC, /* Belgian eID card specs. */ + CARD_TYPE_STARCOS_32 } card_type_t; @@ -126,6 +127,9 @@ static struct { 24, X("\x3b\xfe\x18\x00\x00\x80\x31\xfe\x45\x53\x43\x45" "\x36\x30\x2d\x43\x44\x30\x38\x31\x2d\x6e\x46\xa9"), CARD_TYPE_AET }, + { 25, X("\x3b\x9f\x96\x81\xb1\xfe\x45\x1f\x07\x00\x64\x05" + "\x1e\xb2\x00\x31\xb0\x73\x96\x21\xdb\x05\x90\x00\x5c"), + CARD_TYPE_STARCOS_32 }, { 0 } }; #undef X @@ -518,6 +522,8 @@ struct app_local_s /*** Local prototypes. ***/ static gpg_error_t select_ef_by_path (app_t app, const unsigned short *path, size_t pathlen); +static gpg_error_t select_df_by_path (app_t app, const unsigned short *path, + size_t pathlen); static gpg_error_t keygrip_from_prkdf (app_t app, prkdf_object_t prkdf); static gpg_error_t readcert_by_cdf (app_t app, cdf_object_t cdf, unsigned char **r_cert, size_t *r_certlen); @@ -538,6 +544,7 @@ cardtype2str (card_type_t cardtype) case CARD_TYPE_CARDOS_53: return "CardOS 5.3"; case CARD_TYPE_BELPIC: return "Belgian eID"; case CARD_TYPE_AET: return "AET"; + case CARD_TYPE_STARCOS_32:return "STARCOS 3.2"; } return ""; } @@ -765,20 +772,28 @@ select_and_read_record (app_t app, unsigned short efid, int recno, /* This function calls select file to read a file using a complete - path which may or may not start at the master file (MF). */ + * path which may or may not start at the master file (MF). If + * EXPECT_DF is set a directory or file is expected - otherwise an + * elementary file expected. */ static gpg_error_t -select_ef_by_path (app_t app, const unsigned short *path, size_t pathlen) +select_by_path (app_t app, const unsigned short *path, size_t pathlen, + int expect_df) { gpg_error_t err; int i, j; + int home_df_used = 0; if (!pathlen) return gpg_error (GPG_ERR_INV_VALUE); - /* log_debug ("%s: path=", __func__); */ - /* for (j=0; j < pathlen; j++) */ - /* log_printf ("%s%04hX", j? "/":"", path[j]); */ - /* log_printf ("%s\n",app->app_local->direct_path_selection?" (direct)":"");*/ + if (opt.debug) + { + log_debug ("%s: path=", __func__); + for (j=0; j < pathlen; j++) + log_printf ("%s%04hX", j? "/":"", path[j]); + log_printf ("%s\n",expect_df?" (DF requested)":""); + log_printf ("%s\n",app->app_local->direct_path_selection?" (direct)":""); + } if (app->app_local->direct_path_selection) { @@ -791,35 +806,17 @@ select_ef_by_path (app_t app, const unsigned short *path, size_t pathlen) 0); } else - err = iso7816_select_path (app_get_slot (app), path, pathlen, - app->app_local->home_df); + { + home_df_used = 1; + err = iso7816_select_path (app_get_slot (app), path, pathlen, + app->app_local->home_df); + } if (err) { log_error ("p15: error selecting path "); goto err_print_path; } } - else if (pathlen > 1 && path[0] == 0x3fff) - { - err = iso7816_select_file (app_get_slot (app), 0x3f00, 0); - if (err) - { - log_error ("p15: error selecting part %d from path ", 0); - goto err_print_path; - } - path++; - pathlen--; - for (i=0; i < pathlen; i++) - { - err = iso7816_select_file (app_get_slot (app), - path[i], (i+1 == pathlen)? 2 : 1); - if (err) - { - log_error ("p15: error selecting part %d from path ", i); - goto err_print_path; - } - } - } else { if (pathlen && *path != 0x3f00 ) @@ -829,7 +826,7 @@ select_ef_by_path (app_t app, const unsigned short *path, size_t pathlen) for (i=0; i < pathlen; i++) { err = iso7816_select_file (app_get_slot (app), - path[i], !(i+1 == pathlen)); + path[i], (expect_df || (i+1 < pathlen))); if (err) { log_error ("p15: error selecting part %d from path ", i); @@ -842,7 +839,7 @@ select_ef_by_path (app_t app, const unsigned short *path, size_t pathlen) err_print_path: if (pathlen && *path != 0x3f00 ) log_printf ("3F00/"); - else + else if (home_df_used) log_printf ("%04hX/", app->app_local->home_df); for (j=0; j < pathlen; j++) log_printf ("%s%04hX", j? "/":"", path[j]); @@ -851,6 +848,20 @@ select_ef_by_path (app_t app, const unsigned short *path, size_t pathlen) } +static gpg_error_t +select_ef_by_path (app_t app, const unsigned short *path, size_t pathlen) +{ + return select_by_path (app, path, pathlen, 0); +} + + +static gpg_error_t +select_df_by_path (app_t app, const unsigned short *path, size_t pathlen) +{ + return select_by_path (app, path, pathlen, 1); +} + + /* Parse a cert Id string (or a key Id string) and return the binary object Id string in a newly allocated buffer stored at R_OBJID and R_OBJIDLEN. On Error NULL will be stored there and an error code @@ -3245,7 +3256,7 @@ read_ef_aodf (app_t app, unsigned short fid, aodf_object_t *result) if (aodf->max_length_valid) log_printf (" max=%lu", aodf->max_length); if (aodf->pad_char_valid) - log_printf (" pad=0x%02x", aodf->pad_char); + log_printf (" pad=0x%02x", (unsigned char)aodf->pad_char); log_info ("p15: flags="); s = ""; @@ -5023,6 +5034,13 @@ prepare_verify_pin (app_t app, const char *keyref, log_error ("p15: error selecting D-TRUST's AID for key %s: %s\n", keyref, gpg_strerror (err)); } + else if (prkdf && app->app_local->card_type == CARD_TYPE_STARCOS_32) + { + err = select_df_by_path (app, prkdf->path, prkdf->pathlen); + if (err) + log_error ("p15: error selecting file for key %s: %s\n", + keyref, gpg_strerror (err)); + } else if (prkdf) { /* Standard case: Select the key file. Note that this may @@ -6287,6 +6305,7 @@ app_select_p15 (app_t app) direct = 1; break; case CARD_TYPE_AET: + case CARD_TYPE_STARCOS_32: app->app_local->no_extended_mode = 1; break; default: From 960877b10f42ba664af4fb29130a3ba48141e64a Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 24 May 2023 10:36:04 +0900 Subject: [PATCH 12/42] gpg: Report BEGIN_* status before examining the input. * common/miscellaneous.c (is_openpgp_compressed_packet) (is_file_compressed): Moved to ... * common/iobuf.c: ... in this file. (is_file_compressed): Change the argument to INP, the iobuf. * common/util.h (is_file_compressed): Remove. * common/iobuf.h (is_file_compressed): Add. * g10/cipher-aead.c (write_header): Don't call write_status_printf here. (cipher_filter_aead): Call write_status_printf when called with IOBUFCTRL_INIT. * g10/cipher-cfb.c (write_header): Don't call write_status_printf here. (cipher_filter_cfb): Call write_status_printf when called with IOBUFCTRL_INIT. * g10/encrypt.c (encrypt_simple): Use new is_file_compressed function, after call of iobuf_push_filter. (encrypt_crypt): Likewise. * g10/sign.c (sign_file): Likewise. -- Cherry-pick from master commit of: 2f872fa68c6576724b9dabee9fb0844266f55d0d GnuPG-bug-id: 6481 Signed-off-by: NIIBE Yutaka --- common/iobuf.c | 120 +++++++++++++++++++++++++++++++++++++++++ common/iobuf.h | 3 ++ common/miscellaneous.c | 106 ------------------------------------ common/util.h | 2 - g10/cipher-aead.c | 7 ++- g10/cipher-cfb.c | 9 ++-- g10/encrypt.c | 103 ++++++++++++++--------------------- g10/sign.c | 13 +---- 8 files changed, 174 insertions(+), 189 deletions(-) diff --git a/common/iobuf.c b/common/iobuf.c index 161769a35..748e6935d 100644 --- a/common/iobuf.c +++ b/common/iobuf.c @@ -3028,3 +3028,123 @@ iobuf_skip_rest (iobuf_t a, unsigned long n, int partial) } } } + + +/* Check whether (BUF,LEN) is valid header for an OpenPGP compressed + * packet. LEN should be at least 6. */ +static int +is_openpgp_compressed_packet (const unsigned char *buf, size_t len) +{ + int c, ctb, pkttype; + int lenbytes; + + ctb = *buf++; len--; + if (!(ctb & 0x80)) + return 0; /* Invalid packet. */ + + if ((ctb & 0x40)) /* New style (OpenPGP) CTB. */ + { + pkttype = (ctb & 0x3f); + if (!len) + return 0; /* Expected first length octet missing. */ + c = *buf++; len--; + if (c < 192) + ; + else if (c < 224) + { + if (!len) + return 0; /* Expected second length octet missing. */ + } + else if (c == 255) + { + if (len < 4) + return 0; /* Expected length octets missing */ + } + } + else /* Old style CTB. */ + { + pkttype = (ctb>>2)&0xf; + lenbytes = ((ctb&3)==3)? 0 : (1<<(ctb & 3)); + if (len < lenbytes) + return 0; /* Not enough length bytes. */ + } + + return (pkttype == 8); +} + + +/* + * Check if the file is compressed, by peeking the iobuf. You need to + * pass the iobuf with INP. Returns true if the buffer seems to be + * compressed. + */ +int +is_file_compressed (iobuf_t inp) +{ + int i; + char buf[32]; + int buflen; + + struct magic_compress_s + { + byte len; + byte extchk; + byte magic[5]; + } magic[] = + { + { 3, 0, { 0x42, 0x5a, 0x68, 0x00 } }, /* bzip2 */ + { 3, 0, { 0x1f, 0x8b, 0x08, 0x00 } }, /* gzip */ + { 4, 0, { 0x50, 0x4b, 0x03, 0x04 } }, /* (pk)zip */ + { 5, 0, { '%', 'P', 'D', 'F', '-'} }, /* PDF */ + { 4, 1, { 0xff, 0xd8, 0xff, 0xe0 } }, /* Maybe JFIF */ + { 5, 2, { 0x89, 'P','N','G', 0x0d} } /* Likely PNG */ + }; + + if (!inp) + return 0; + + for ( ; inp->chain; inp = inp->chain ) + ; + + buflen = iobuf_ioctl (inp, IOBUF_IOCTL_PEEK, sizeof buf, buf); + if (buflen < 0) + { + buflen = 0; + log_debug ("peeking at input failed\n"); + } + + if ( buflen < 6 ) + { + return 0; /* Too short to check - assume uncompressed. */ + } + + for ( i = 0; i < DIM (magic); i++ ) + { + if (!memcmp( buf, magic[i].magic, magic[i].len)) + { + switch (magic[i].extchk) + { + case 0: + return 1; /* Is compressed. */ + case 1: + if (buflen > 11 && !memcmp (buf + 6, "JFIF", 5)) + return 1; /* JFIF: this likely a compressed JPEG. */ + break; + case 2: + if (buflen > 8 + && buf[5] == 0x0a && buf[6] == 0x1a && buf[7] == 0x0a) + return 1; /* This is a PNG. */ + break; + default: + break; + } + } + } + + if (buflen >= 6 && is_openpgp_compressed_packet (buf, buflen)) + { + return 1; /* Already compressed. */ + } + + return 0; /* Not detected as compressed. */ +} diff --git a/common/iobuf.h b/common/iobuf.h index 751ae73c3..04e6b4421 100644 --- a/common/iobuf.h +++ b/common/iobuf.h @@ -625,6 +625,9 @@ void iobuf_set_partial_body_length_mode (iobuf_t a, size_t len); from the following filter (which may or may not return EOF). */ void iobuf_skip_rest (iobuf_t a, unsigned long n, int partial); +/* Check if the file is compressed, by peeking the iobuf. */ +int is_file_compressed (iobuf_t inp); + #define iobuf_where(a) "[don't know]" /* Each time a filter is allocated (via iobuf_alloc()), a diff --git a/common/miscellaneous.c b/common/miscellaneous.c index f19cc539d..1a090b1f5 100644 --- a/common/miscellaneous.c +++ b/common/miscellaneous.c @@ -415,112 +415,6 @@ decode_c_string (const char *src) } -/* Check whether (BUF,LEN) is valid header for an OpenPGP compressed - * packet. LEN should be at least 6. */ -static int -is_openpgp_compressed_packet (const unsigned char *buf, size_t len) -{ - int c, ctb, pkttype; - int lenbytes; - - ctb = *buf++; len--; - if (!(ctb & 0x80)) - return 0; /* Invalid packet. */ - - if ((ctb & 0x40)) /* New style (OpenPGP) CTB. */ - { - pkttype = (ctb & 0x3f); - if (!len) - return 0; /* Expected first length octet missing. */ - c = *buf++; len--; - if (c < 192) - ; - else if (c < 224) - { - if (!len) - return 0; /* Expected second length octet missing. */ - } - else if (c == 255) - { - if (len < 4) - return 0; /* Expected length octets missing */ - } - } - else /* Old style CTB. */ - { - pkttype = (ctb>>2)&0xf; - lenbytes = ((ctb&3)==3)? 0 : (1<<(ctb & 3)); - if (len < lenbytes) - return 0; /* Not enough length bytes. */ - } - - return (pkttype == 8); -} - - - -/* - * Check if the file is compressed. You need to pass the first bytes - * of the file as (BUF,BUFLEN). Returns true if the buffer seems to - * be compressed. - */ -int -is_file_compressed (const byte *buf, unsigned int buflen) -{ - int i; - - struct magic_compress_s - { - byte len; - byte extchk; - byte magic[5]; - } magic[] = - { - { 3, 0, { 0x42, 0x5a, 0x68, 0x00 } }, /* bzip2 */ - { 3, 0, { 0x1f, 0x8b, 0x08, 0x00 } }, /* gzip */ - { 4, 0, { 0x50, 0x4b, 0x03, 0x04 } }, /* (pk)zip */ - { 5, 0, { '%', 'P', 'D', 'F', '-'} }, /* PDF */ - { 4, 1, { 0xff, 0xd8, 0xff, 0xe0 } }, /* Maybe JFIF */ - { 5, 2, { 0x89, 'P','N','G', 0x0d} } /* Likely PNG */ - }; - - if ( buflen < 6 ) - { - return 0; /* Too short to check - assume uncompressed. */ - } - - for ( i = 0; i < DIM (magic); i++ ) - { - if (!memcmp( buf, magic[i].magic, magic[i].len)) - { - switch (magic[i].extchk) - { - case 0: - return 1; /* Is compressed. */ - case 1: - if (buflen > 11 && !memcmp (buf + 6, "JFIF", 5)) - return 1; /* JFIF: this likely a compressed JPEG. */ - break; - case 2: - if (buflen > 8 - && buf[5] == 0x0a && buf[6] == 0x1a && buf[7] == 0x0a) - return 1; /* This is a PNG. */ - break; - default: - break; - } - } - } - - if (buflen >= 6 && is_openpgp_compressed_packet (buf, buflen)) - { - return 1; /* Already compressed. */ - } - - return 0; /* Not detected as compressed. */ -} - - /* Try match against each substring of multistr, delimited by | */ int match_multistr (const char *multistr,const char *match) diff --git a/common/util.h b/common/util.h index 875969187..fff2e6e83 100644 --- a/common/util.h +++ b/common/util.h @@ -367,8 +367,6 @@ char *try_make_printable_string (const void *p, size_t n, int delim); char *make_printable_string (const void *p, size_t n, int delim); char *decode_c_string (const char *src); -int is_file_compressed (const byte *buf, unsigned int buflen); - int match_multistr (const char *multistr,const char *match); int gnupg_compare_version (const char *a, const char *b); diff --git a/g10/cipher-aead.c b/g10/cipher-aead.c index 640d8432f..0c07e65de 100644 --- a/g10/cipher-aead.c +++ b/g10/cipher-aead.c @@ -174,8 +174,6 @@ write_header (cipher_filter_context_t *cfx, iobuf_t a) log_debug ("aead packet: len=%lu extralen=%d\n", (unsigned long)ed.len, ed.extralen); - write_status_printf (STATUS_BEGIN_ENCRYPTION, "0 %d %d", - cfx->dek->algo, ed.aead_algo); print_cipher_algo_note (cfx->dek->algo); if (build_packet( a, &pkt)) @@ -488,6 +486,11 @@ cipher_filter_aead (void *opaque, int control, { mem2str (buf, "cipher_filter_aead", *ret_len); } + else if (control == IOBUFCTRL_INIT) + { + write_status_printf (STATUS_BEGIN_ENCRYPTION, "0 %d %d", + cfx->dek->algo, cfx->dek->use_aead); + } return rc; } diff --git a/g10/cipher-cfb.c b/g10/cipher-cfb.c index 3ba8eb738..29bf2477c 100644 --- a/g10/cipher-cfb.c +++ b/g10/cipher-cfb.c @@ -72,9 +72,6 @@ write_header (cipher_filter_context_t *cfx, iobuf_t a) log_info (_("Hint: Do not use option %s\n"), "--rfc2440"); } - write_status_printf (STATUS_BEGIN_ENCRYPTION, "%d %d", - ed.mdc_method, cfx->dek->algo); - init_packet (&pkt); pkt.pkttype = cfx->dek->use_mdc? PKT_ENCRYPTED_MDC : PKT_ENCRYPTED; pkt.pkt.encrypted = &ed; @@ -182,6 +179,12 @@ cipher_filter_cfb (void *opaque, int control, { mem2str (buf, "cipher_filter_cfb", *ret_len); } + else if (control == IOBUFCTRL_INIT) + { + write_status_printf (STATUS_BEGIN_ENCRYPTION, "%d %d", + cfx->dek->use_mdc ? DIGEST_ALGO_SHA1 : 0, + cfx->dek->algo); + } return rc; } diff --git a/g10/encrypt.c b/g10/encrypt.c index 9aeafa292..b335b9797 100644 --- a/g10/encrypt.c +++ b/g10/encrypt.c @@ -410,8 +410,6 @@ encrypt_simple (const char *filename, int mode, int use_seskey) text_filter_context_t tfx; progress_filter_context_t *pfx; int do_compress = !!default_compress_algo(); - char peekbuf[32]; - int peekbuflen; if (!gnupg_rng_is_compliant (opt.compliance)) { @@ -448,14 +446,6 @@ encrypt_simple (const char *filename, int mode, int use_seskey) return rc; } - peekbuflen = iobuf_ioctl (inp, IOBUF_IOCTL_PEEK, sizeof peekbuf, peekbuf); - if (peekbuflen < 0) - { - peekbuflen = 0; - if (DBG_FILTER) - log_debug ("peeking at input failed\n"); - } - handle_progress (pfx, inp, filename); if (opt.textmode) @@ -517,17 +507,6 @@ encrypt_simple (const char *filename, int mode, int use_seskey) /**/ : "CFB"); } - if (do_compress - && cfx.dek - && (cfx.dek->use_mdc || cfx.dek->use_aead) - && !opt.explicit_compress_option - && is_file_compressed (peekbuf, peekbuflen)) - { - if (opt.verbose) - log_info(_("'%s' already compressed\n"), filename? filename: "[stdin]"); - do_compress = 0; - } - if ( rc || (rc = open_outfile (-1, filename, opt.armor? 1:0, 0, &out ))) { iobuf_cancel (inp); @@ -598,6 +577,24 @@ encrypt_simple (const char *filename, int mode, int use_seskey) else filesize = opt.set_filesize ? opt.set_filesize : 0; /* stdin */ + /* Register the cipher filter. */ + if (mode) + iobuf_push_filter (out, + cfx.dek->use_aead? cipher_filter_aead + /**/ : cipher_filter_cfb, + &cfx ); + + if (do_compress + && cfx.dek + && (cfx.dek->use_mdc || cfx.dek->use_aead) + && !opt.explicit_compress_option + && is_file_compressed (inp)) + { + if (opt.verbose) + log_info(_("'%s' already compressed\n"), filename? filename: "[stdin]"); + do_compress = 0; + } + if (!opt.no_literal) { /* Note that PT has been initialized above in !no_literal mode. */ @@ -617,13 +614,6 @@ encrypt_simple (const char *filename, int mode, int use_seskey) pkt.pkt.generic = NULL; } - /* Register the cipher filter. */ - if (mode) - iobuf_push_filter (out, - cfx.dek->use_aead? cipher_filter_aead - /**/ : cipher_filter_cfb, - &cfx ); - /* Register the compress filter. */ if ( do_compress ) { @@ -783,7 +773,7 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename, PKT_plaintext *pt = NULL; DEK *symkey_dek = NULL; STRING2KEY *symkey_s2k = NULL; - int rc = 0, rc2 = 0; + int rc = 0; u32 filesize; cipher_filter_context_t cfx; armor_filter_context_t *afx = NULL; @@ -792,8 +782,6 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename, progress_filter_context_t *pfx; PK_LIST pk_list; int do_compress; - char peekbuf[32]; - int peekbuflen; if (filefd != -1 && filename) return gpg_error (GPG_ERR_INV_ARG); /* Both given. */ @@ -866,14 +854,6 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename, if (opt.verbose) log_info (_("reading from '%s'\n"), iobuf_get_fname_nonnull (inp)); - peekbuflen = iobuf_ioctl (inp, IOBUF_IOCTL_PEEK, sizeof peekbuf, peekbuf); - if (peekbuflen < 0) - { - peekbuflen = 0; - if (DBG_FILTER) - log_debug ("peeking at input failed\n"); - } - handle_progress (pfx, inp, filename); if (opt.textmode) @@ -900,25 +880,6 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename, if (!cfx.dek->use_aead) cfx.dek->use_mdc = !!use_mdc (pk_list, cfx.dek->algo); - /* Only do the is-file-already-compressed check if we are using a - * MDC or AEAD. This forces compressed files to be re-compressed if - * we do not have a MDC to give some protection against chosen - * ciphertext attacks. */ - if (do_compress - && (cfx.dek->use_mdc || cfx.dek->use_aead) - && !opt.explicit_compress_option - && is_file_compressed (peekbuf, peekbuflen)) - { - if (opt.verbose) - log_info(_("'%s' already compressed\n"), filename? filename: "[stdin]"); - do_compress = 0; - } - if (rc2) - { - rc = rc2; - goto leave; - } - make_session_key (cfx.dek); if (DBG_CRYPTO) log_printhex (cfx.dek->key, cfx.dek->keylen, "DEK is: "); @@ -959,6 +920,26 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename, else filesize = opt.set_filesize ? opt.set_filesize : 0; /* stdin */ + /* Register the cipher filter. */ + iobuf_push_filter (out, + cfx.dek->use_aead? cipher_filter_aead + /**/ : cipher_filter_cfb, + &cfx); + + /* Only do the is-file-already-compressed check if we are using a + * MDC or AEAD. This forces compressed files to be re-compressed if + * we do not have a MDC to give some protection against chosen + * ciphertext attacks. */ + if (do_compress + && (cfx.dek->use_mdc || cfx.dek->use_aead) + && !opt.explicit_compress_option + && is_file_compressed (inp)) + { + if (opt.verbose) + log_info(_("'%s' already compressed\n"), filename? filename: "[stdin]"); + do_compress = 0; + } + if (!opt.no_literal) { pt->timestamp = make_timestamp(); @@ -973,12 +954,6 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename, else cfx.datalen = filesize && !do_compress ? filesize : 0; - /* Register the cipher filter. */ - iobuf_push_filter (out, - cfx.dek->use_aead? cipher_filter_aead - /**/ : cipher_filter_cfb, - &cfx); - /* Register the compress filter. */ if (do_compress) { diff --git a/g10/sign.c b/g10/sign.c index f9984f811..d6ab396af 100644 --- a/g10/sign.c +++ b/g10/sign.c @@ -1034,9 +1034,6 @@ sign_file (ctrl_t ctrl, strlist_t filenames, int detached, strlist_t locusr, int multifile = 0; u32 duration=0; pt_extra_hash_data_t extrahash = NULL; - char peekbuf[32]; - int peekbuflen = 0; - pfx = new_progress_context (); afx = new_armor_context (); @@ -1095,14 +1092,6 @@ sign_file (ctrl_t ctrl, strlist_t filenames, int detached, strlist_t locusr, goto leave; } - peekbuflen = iobuf_ioctl (inp, IOBUF_IOCTL_PEEK, sizeof peekbuf, peekbuf); - if (peekbuflen < 0) - { - peekbuflen = 0; - if (DBG_FILTER) - log_debug ("peeking at input failed\n"); - } - handle_progress (pfx, inp, fname); } @@ -1260,7 +1249,7 @@ sign_file (ctrl_t ctrl, strlist_t filenames, int detached, strlist_t locusr, int compr_algo = opt.compress_algo; if (!opt.explicit_compress_option - && is_file_compressed (peekbuf, peekbuflen)) + && is_file_compressed (inp)) { if (opt.verbose) log_info(_("'%s' already compressed\n"), fname? fname: "[stdin]"); From 2fa916ebff0b815dbb1b7a2d01e1d989a0cbbbb5 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Mon, 20 Nov 2023 10:53:09 +0900 Subject: [PATCH 13/42] po: Update Japanese Translation. -- Signed-off-by: NIIBE Yutaka --- po/ja.po | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/po/ja.po b/po/ja.po index d9a1dcd71..d067bf202 100644 --- a/po/ja.po +++ b/po/ja.po @@ -9,9 +9,9 @@ # msgid "" msgstr "" -"Project-Id-Version: gnupg 2.4.1\n" +"Project-Id-Version: gnupg 2.4.3\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n" -"PO-Revision-Date: 2023-05-25 11:12+0900\n" +"PO-Revision-Date: 2023-11-20 10:50+0900\n" "Last-Translator: NIIBE Yutaka \n" "Language-Team: none\n" "Language: ja\n" @@ -226,8 +226,8 @@ msgid "" "Please enter a passphrase to protect the received secret key%%0A %s%%0A " "%s%%0Awithin gpg-agent's key storage" msgstr "" -"パスフレーズを入力してください。gpg-agentの鍵の保管で受信した秘密鍵%%0A %s" -"%%0A %s%%0Aを保護します。" +"パスフレーズを入力してください。gpg-agentの鍵の保管で受信した秘密鍵%%0A " +"%s%%0A %s%%0Aを保護します。" #, c-format msgid "failed to create stream from socket: %s\n" @@ -755,8 +755,8 @@ msgstr "" #, c-format msgid "" -"Do you really want to delete the key identified by keygrip%%0A %s%%0A %%C" -"%%0A?" +"Do you really want to delete the key identified by keygrip%%0A %s%%0A " +"%%C%%0A?" msgstr "本当にこの鍵: keygrip%%0A %s%%0A %%C%%0Aを削除しますか?" msgid "Delete key" @@ -1788,14 +1788,14 @@ msgstr "S2Kモードのため、SKESKパケットを使えません\n" msgid "using cipher %s.%s\n" msgstr "暗号方式 %s.%s を使います\n" -#, c-format -msgid "'%s' already compressed\n" -msgstr "'%s'はもう圧縮済みです\n" - #, c-format msgid "WARNING: '%s' is an empty file\n" msgstr "*警告*: '%s'は空のファイルです\n" +#, c-format +msgid "'%s' already compressed\n" +msgstr "'%s'はもう圧縮済みです\n" + #, c-format msgid "digest algorithm '%s' may not be used in %s mode\n" msgstr "ダイジェスト・アルゴリズム'%s'を%sモードで使うことはできません\n" @@ -1869,7 +1869,7 @@ msgstr "'%s'への書き込み\n" #, c-format msgid "key %s: key material on-card - skipped\n" -msgstr "鍵%s: 鍵マテリアルはカード上にあります - スキップします\n" +msgstr "鍵%s: 鍵の実体はカード上にあります - スキップします\n" #, c-format msgid "exporting secret keys not allowed\n" @@ -2893,7 +2893,7 @@ msgstr "鍵 %s: エージェントへの送信エラー: %s\n" #, c-format msgid "key %s: card reference is overridden by key material\n" -msgstr "鍵 %s: カード参照が鍵マテリアルで上書きされます\n" +msgstr "鍵 %s: カード参照が鍵の実体で上書きされます\n" #. TRANSLATORS: For a smartcard, each private key on host has a #. * reference (stub) to a smartcard and actual private key data From e43bd2a7a7831a2d23fb9aa06b913f17dad89478 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 17 Nov 2023 14:40:38 +0100 Subject: [PATCH 14/42] scd: New option --debug-allow-pin-logging. * scd/scdaemon.c (oDebugAllowPINLogging): New. (opts): Add option. (main): Set option. * scd/scdaemon.h (opt): Add debug_allow_pin_logging. * scd/apdu.c (pcsc_send_apdu): Do not hide the PIN dat in the debug output if the option is set. (send_apdu_ccid): Ditto. -- This option is only required during development. --- scd/apdu.c | 8 ++++---- scd/scdaemon.c | 5 +++++ scd/scdaemon.h | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/scd/apdu.c b/scd/apdu.c index 7f3c320d2..98158648b 100644 --- a/scd/apdu.c +++ b/scd/apdu.c @@ -775,8 +775,8 @@ pcsc_send_apdu (int slot, unsigned char *apdu, size_t apdulen, if (DBG_CARD_IO) { /* Do not dump the PIN in a VERIFY command. */ - if (apdulen > 5 && apdu[1] == 0x20) - log_debug ("PCSC_data: %02X %02X %02X %02X %02X [redacted]\n", + if (apdulen > 5 && apdu[1] == 0x20 && !opt.debug_allow_pin_logging) + log_debug ("PCSC_data: %02X %02X %02X %02X %02X [hidden]\n", apdu[0], apdu[1], apdu[2], apdu[3], apdu[4]); else log_printhex (apdu, apdulen, "PCSC_data:"); @@ -1564,8 +1564,8 @@ send_apdu_ccid (int slot, unsigned char *apdu, size_t apdulen, if (DBG_CARD_IO) { /* Do not dump the PIN in a VERIFY command. */ - if (apdulen > 5 && apdu[1] == 0x20) - log_debug (" raw apdu: %02x%02x%02x%02x%02x [redacted]\n", + if (apdulen > 5 && apdu[1] == 0x20 && !opt.debug_allow_pin_logging) + log_debug (" raw apdu: %02x%02x%02x%02x%02x [hidden]\n", apdu[0], apdu[1], apdu[2], apdu[3], apdu[4]); else log_printhex (apdu, apdulen, " raw apdu:"); diff --git a/scd/scdaemon.c b/scd/scdaemon.c index e43769f85..ed7fdc03a 100644 --- a/scd/scdaemon.c +++ b/scd/scdaemon.c @@ -79,6 +79,7 @@ enum cmd_and_opt_values oDebugAllowCoreDump, oDebugCCIDDriver, oDebugLogTid, + oDebugAllowPINLogging, oDebugAssuanLogCats, oNoGreeting, oNoOptions, @@ -138,6 +139,7 @@ static gpgrt_opt_t opts[] = { ARGPARSE_s_n (oDebugAllowCoreDump, "debug-allow-core-dump", "@"), ARGPARSE_s_n (oDebugCCIDDriver, "debug-ccid-driver", "@"), ARGPARSE_s_n (oDebugLogTid, "debug-log-tid", "@"), + ARGPARSE_s_n (oDebugAllowPINLogging, "debug-allow-pin-logging", "@"), ARGPARSE_p_u (oDebugAssuanLogCats, "debug-assuan-log-cats", "@"), ARGPARSE_s_s (oLogFile, "log-file", N_("|FILE|write a log to FILE")), @@ -587,6 +589,9 @@ main (int argc, char **argv ) case oDebugLogTid: log_set_pid_suffix_cb (tid_log_callback); break; + case oDebugAllowPINLogging: + opt.debug_allow_pin_logging = 1; + break; case oDebugAssuanLogCats: set_libassuan_log_cats (pargs.r.ret_ulong); break; diff --git a/scd/scdaemon.h b/scd/scdaemon.h index 68136b886..7b82d1b21 100644 --- a/scd/scdaemon.h +++ b/scd/scdaemon.h @@ -66,6 +66,7 @@ struct strlist_t disabled_applications; /* Card applications we do not want to use. */ unsigned long card_timeout; /* Disconnect after N seconds of inactivity. */ + int debug_allow_pin_logging; /* Allow PINs in debug output. */ } opt; From cf2d3f7ba0b7ffd0f1c014186fb60630c132dba1 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 21 Nov 2023 08:34:04 +0100 Subject: [PATCH 15/42] agent: Update the key file only if not changed. * common/name-value.c (struct name_value_container): Add flag "modified". (nvc_modified): New. (nvc_new): Set flag. (_nvc_add): Set flag. (nvc_delete): Set flag. (nvc_set): Set flag unless value did not change. (nve_set): Add arg PK. Change the caller. * agent/findkey.c (agent_write_private_key): Update only if modified. -- This helps software which uses a file system watcher to track changes to private keys. In particular smartcard triggered changes are a problem for such software because this may at worst trigger another smartcard read. GnuPG-bug-id: 6829 --- agent/findkey.c | 11 ++++++++++- common/name-value.c | 47 +++++++++++++++++++++++++++++++++++++++------ common/name-value.h | 7 +++++-- 3 files changed, 56 insertions(+), 9 deletions(-) diff --git a/agent/findkey.c b/agent/findkey.c index a5f022574..9e5550225 100644 --- a/agent/findkey.c +++ b/agent/findkey.c @@ -146,6 +146,8 @@ agent_write_private_key (const unsigned char *grip, } } + nvc_modified (pk, 1); /* Clear that flag after a read. */ + if (!pk) { /* Key is still in the old format or does not exist - create a @@ -242,7 +244,7 @@ agent_write_private_key (const unsigned char *grip, ; /* No need to update Token entry. */ else { - err = nve_set (item, token); + err = nve_set (pk, item, token); if (err) goto leave; } @@ -263,6 +265,13 @@ agent_write_private_key (const unsigned char *grip, goto leave; } + /* Check whether we need to write the file at all. */ + if (!nvc_modified (pk, 0)) + { + err = 0; + goto leave; + } + /* Create a temporary file for writing. */ tmpfname = fname_from_keygrip (grip, 1); fp = tmpfname ? es_fopen (tmpfname, "wbx,mode=-rw") : NULL; diff --git a/common/name-value.c b/common/name-value.c index 0dffc63b4..b7bc32844 100644 --- a/common/name-value.c +++ b/common/name-value.c @@ -48,6 +48,7 @@ struct name_value_container struct name_value_entry *first; struct name_value_entry *last; unsigned int private_key_mode:1; + unsigned int modified:1; }; @@ -87,11 +88,15 @@ my_error (gpg_err_code_t ec) /* Allocation and deallocation. */ -/* Allocate a private key container structure. */ +/* Allocate a name value container structure. */ nvc_t nvc_new (void) { - return xtrycalloc (1, sizeof (struct name_value_container)); + nvc_t nvc; + nvc = xtrycalloc (1, sizeof (struct name_value_container)); + if (nvc) + nvc->modified = 1; + return nvc; } @@ -142,6 +147,24 @@ nvc_release (nvc_t pk) xfree (pk); } + +/* Return the modified-flag of the container and clear it if CLEAR is + * set. That flag is set for a new container and set with each + * update. */ +int +nvc_modified (nvc_t pk, int clear) +{ + int modified; + + if (!pk) + return 0; + modified = pk->modified; + if (clear) + pk->modified = 0; + return modified; +} + + /* Dealing with names and values. */ @@ -427,6 +450,8 @@ _nvc_add (nvc_t pk, char *name, char *value, strlist_t raw_value, else pk->first = pk->last = e; + pk->modified = 1; + leave: if (err) { @@ -470,6 +495,7 @@ gpg_error_t nvc_set (nvc_t pk, const char *name, const char *value) { nve_t e; + char *v; if (! valid_name (name)) return GPG_ERR_INV_NAME; @@ -477,7 +503,12 @@ nvc_set (nvc_t pk, const char *name, const char *value) e = nvc_lookup (pk, name); if (e) { - char *v; + if (e->value && value && !strcmp (e->value, value)) + { + /* Setting same value - ignore this call and don't set the + * modified flag. */ + return 0; + } v = xtrystrdup (value); if (v == NULL) @@ -489,7 +520,7 @@ nvc_set (nvc_t pk, const char *name, const char *value) wipememory (e->value, strlen (e->value)); xfree (e->value); e->value = v; - + pk->modified = 1; return 0; } else @@ -497,9 +528,10 @@ nvc_set (nvc_t pk, const char *name, const char *value) } -/* Update entry E to VALUE. */ +/* Update entry E to VALUE. PK is optional; if given its modified + * flag will be updated. */ gpg_error_t -nve_set (nve_t e, const char *value) +nve_set (nvc_t pk, nve_t e, const char *value) { char *v; @@ -516,6 +548,8 @@ nve_set (nve_t e, const char *value) wipememory (e->value, strlen (e->value)); xfree (e->value); e->value = v; + if (pk) + pk->modified = 1; return 0; } @@ -536,6 +570,7 @@ nvc_delete (nvc_t pk, nve_t entry) pk->last = entry->prev; nve_release (entry, pk->private_key_mode); + pk->modified = 1; } diff --git a/common/name-value.h b/common/name-value.h index b3fc2f63c..dfded6678 100644 --- a/common/name-value.h +++ b/common/name-value.h @@ -50,6 +50,9 @@ nvc_t nvc_new_private_key (void); /* Release a name value container structure. */ void nvc_release (nvc_t pk); +/* Return the modified flag and optionally clear it. */ +int nvc_modified (nvc_t pk, int clear); + /* Get the name. */ char *nve_name (nve_t pke); @@ -92,8 +95,8 @@ gpg_error_t nvc_add (nvc_t pk, const char *name, const char *value); first entry is updated. */ gpg_error_t nvc_set (nvc_t pk, const char *name, const char *value); -/* Update entry E to VALUE. */ -gpg_error_t nve_set (nve_t e, const char *value); +/* Update entry E to VALUE. PK is optional. */ +gpg_error_t nve_set (nvc_t pk, nve_t e, const char *value); /* Delete the given entry from PK. */ void nvc_delete (nvc_t pk, nve_t pke); From 813bb65d952d7d02039f8c04c18cc74a512eacf7 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 21 Nov 2023 08:55:56 +0100 Subject: [PATCH 16/42] common: Check wether to set the modified flag in nve_set. * common/name-value.c (nvc_set): Factor code out to ... (nve_set): here. --- common/name-value.c | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/common/name-value.c b/common/name-value.c index b7bc32844..ea6a84f56 100644 --- a/common/name-value.c +++ b/common/name-value.c @@ -495,34 +495,13 @@ gpg_error_t nvc_set (nvc_t pk, const char *name, const char *value) { nve_t e; - char *v; if (! valid_name (name)) return GPG_ERR_INV_NAME; e = nvc_lookup (pk, name); if (e) - { - if (e->value && value && !strcmp (e->value, value)) - { - /* Setting same value - ignore this call and don't set the - * modified flag. */ - return 0; - } - - v = xtrystrdup (value); - if (v == NULL) - return my_error_from_syserror (); - - free_strlist_wipe (e->raw_value); - e->raw_value = NULL; - if (e->value) - wipememory (e->value, strlen (e->value)); - xfree (e->value); - e->value = v; - pk->modified = 1; - return 0; - } + return nve_set (pk, e, value); else return nvc_add (pk, name, value); } @@ -538,6 +517,13 @@ nve_set (nvc_t pk, nve_t e, const char *value) if (!e) return GPG_ERR_INV_ARG; + if (e->value && value && !strcmp (e->value, value)) + { + /* Setting same value - ignore this call and don't set the + * modified flag (if PK is given). */ + return 0; + } + v = xtrystrdup (value? value:""); if (!v) return my_error_from_syserror (); From 09329d52b5f0e1dba32d44cecc8c50ab57cb31bd Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 21 Nov 2023 12:13:50 +0100 Subject: [PATCH 17/42] agent: Update the key file only if changed (slight return). * agent/findkey.c (read_key_file): Add optional arg r_orig_key_value to return the old Key value. Change all callers. (agent_write_private_key): Detect whether the Key entry was really changed. -- GnuPG-bug-id: 6829 --- agent/findkey.c | 64 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/agent/findkey.c b/agent/findkey.c index 9e5550225..4e55119e3 100644 --- a/agent/findkey.c +++ b/agent/findkey.c @@ -41,7 +41,8 @@ static gpg_error_t read_key_file (const unsigned char *grip, - gcry_sexp_t *result, nvc_t *r_keymeta); + gcry_sexp_t *result, nvc_t *r_keymeta, + char **r_orig_key_value); static gpg_error_t is_shadowed_key (gcry_sexp_t s_skey); @@ -129,12 +130,15 @@ agent_write_private_key (const unsigned char *grip, char **tokenfields = NULL; int is_regular; int blocksigs = 0; + char *orig_key_value = NULL; + const char *s; + int force_modify = 0; fname = fname_from_keygrip (grip, 0); if (!fname) return gpg_error_from_syserror (); - err = read_key_file (grip, &key, &pk); + err = read_key_file (grip, &key, &pk, &orig_key_value); if (err) { if (gpg_err_code (err) == GPG_ERR_ENOENT) @@ -158,6 +162,7 @@ agent_write_private_key (const unsigned char *grip, err = gpg_error_from_syserror (); goto leave; } + force_modify = 1; } /* Check whether we already have a regular key. */ @@ -173,6 +178,19 @@ agent_write_private_key (const unsigned char *grip, if (err) goto leave; + /* Detect whether the key value actually changed and if not clear + * the modified flag. This extra check is required because + * read_key_file removes the Key entry from the container and we + * then create a new Key entry which might be the same, though. */ + if (!force_modify + && orig_key_value && (s = nvc_get_string (pk, "Key:")) + && !strcmp (orig_key_value, s)) + { + nvc_modified (pk, 1); /* Clear that flag. */ + } + xfree (orig_key_value); + orig_key_value = NULL; + /* Check that we do not update a regular key with a shadow key. */ if (is_regular && gpg_err_code (is_shadowed_key (key)) == GPG_ERR_TRUE) { @@ -194,7 +212,6 @@ agent_write_private_key (const unsigned char *grip, if (serialno && keyref) { nve_t item; - const char *s; size_t token0len; if (dispserialno) @@ -319,6 +336,7 @@ agent_write_private_key (const unsigned char *grip, es_fclose (fp); if (removetmp && tmpfname) gnupg_remove (tmpfname); + xfree (orig_key_value); xfree (fname); xfree (tmpfname); xfree (token); @@ -865,10 +883,13 @@ unprotect (ctrl_t ctrl, const char *cache_nonce, const char *desc_text, * return it as an gcrypt S-expression object in RESULT. If R_KEYMETA * is not NULL and the extended key format is used, the meta data * items are stored there. However the "Key:" item is removed from - * it. On failure returns an error code and stores NULL at RESULT and - * R_KEYMETA. */ + * it. If R_ORIG_KEY_VALUE is non-NULL and the Key item was removed, + * its original value is stored at that R_ORIG_KEY_VALUE and the + * caller must free it. On failure returns an error code and stores + * NULL at RESULT and R_KEYMETA. */ static gpg_error_t -read_key_file (const unsigned char *grip, gcry_sexp_t *result, nvc_t *r_keymeta) +read_key_file (const unsigned char *grip, gcry_sexp_t *result, nvc_t *r_keymeta, + char **r_orig_key_value) { gpg_error_t err; char *fname; @@ -882,6 +903,8 @@ read_key_file (const unsigned char *grip, gcry_sexp_t *result, nvc_t *r_keymeta) *result = NULL; if (r_keymeta) *r_keymeta = NULL; + if (r_orig_key_value) + *r_orig_key_value = NULL; fname = fname_from_keygrip (grip, 0); if (!fname) @@ -936,7 +959,24 @@ read_key_file (const unsigned char *grip, gcry_sexp_t *result, nvc_t *r_keymeta) log_error ("error getting private key from '%s': %s\n", fname, gpg_strerror (err)); else - nvc_delete_named (pk, "Key:"); + { + if (r_orig_key_value) + { + const char *s = nvc_get_string (pk, "Key:"); + if (s) + { + *r_orig_key_value = xtrystrdup (s); + if (!*r_orig_key_value) + { + err = gpg_error_from_syserror (); + nvc_release (pk); + xfree (fname); + return err; + } + } + } + nvc_delete_named (pk, "Key:"); + } } if (!err && r_keymeta) @@ -1186,7 +1226,7 @@ agent_key_from_file (ctrl_t ctrl, const char *cache_nonce, if (!grip && !ctrl->have_keygrip) return gpg_error (GPG_ERR_NO_SECKEY); - err = read_key_file (grip? grip : ctrl->keygrip, &s_skey, &keymeta); + err = read_key_file (grip? grip : ctrl->keygrip, &s_skey, &keymeta, NULL); if (err) { if (gpg_err_code (err) == GPG_ERR_ENOENT) @@ -1445,7 +1485,7 @@ agent_raw_key_from_file (ctrl_t ctrl, const unsigned char *grip, *result = NULL; - err = read_key_file (grip, &s_skey, r_keymeta); + err = read_key_file (grip, &s_skey, r_keymeta, NULL); if (!err) *result = s_skey; return err; @@ -1488,7 +1528,7 @@ public_key_from_file (ctrl_t ctrl, const unsigned char *grip, if (r_sshorder) *r_sshorder = 0; - err = read_key_file (grip, &s_skey, for_ssh? &keymeta : NULL); + err = read_key_file (grip, &s_skey, for_ssh? &keymeta : NULL, NULL); if (err) return err; @@ -1660,7 +1700,7 @@ agent_key_info_from_file (ctrl_t ctrl, const unsigned char *grip, { gcry_sexp_t sexp; - err = read_key_file (grip, &sexp, NULL); + err = read_key_file (grip, &sexp, NULL, NULL); if (err) { if (gpg_err_code (err) == GPG_ERR_ENOENT) @@ -1744,7 +1784,7 @@ agent_delete_key (ctrl_t ctrl, const char *desc_text, char *default_desc = NULL; int key_type; - err = read_key_file (grip, &s_skey, NULL); + err = read_key_file (grip, &s_skey, NULL, NULL); if (gpg_err_code (err) == GPG_ERR_ENOENT) err = gpg_error (GPG_ERR_NO_SECKEY); if (err) From 4c456bf07508cb65f4937394afc1ee18f1fd2655 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 23 Nov 2023 16:01:58 +0100 Subject: [PATCH 18/42] scd:openpgp: Fallback to default ECDH params in writekey. * scd/app-openpgp.c (ecc_writekey): Use default ECDH parameters and remove the now useless check. -- This seems to be better than bailing out. In almost all cases our standard parameters are used and if not, well, the fingerprint will be wrong. GnuPG-bug-id: 6378 --- scd/app-openpgp.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index 014cd9395..3e77f8540 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -4733,9 +4733,11 @@ ecc_writekey (app_t app, ctrl_t ctrl, if (algo == PUBKEY_ALGO_ECDH && !ecdh_param) { - log_error ("opgp: ecdh parameters missing\n"); - err = gpg_error (GPG_ERR_INV_VALUE); - goto leave; + /* In case this is used by older clients we fallback to our + * default ecc parameters. */ + log_info ("opgp: using default ecdh parameters\n"); + ecdh_param = ecdh_params (curve); + ecdh_param_len = 4; } oidstr = openpgp_curve_to_oid (curve, &n, NULL); From 73aa6dc6e41f16fd0b4fdd52c4a01a9f29ab9fea Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 27 Nov 2023 12:34:38 +0100 Subject: [PATCH 19/42] gpgsm: Set validity flag in keylisting to n for untrusted root cert. * sm/keylist.c (list_cert_colon): Map not_trusted to 'n' for non-root certs like we do for root certs. -- GnuPG-bug-id: 6841 --- sm/keylist.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sm/keylist.c b/sm/keylist.c index ed1b74729..47fe69f30 100644 --- a/sm/keylist.c +++ b/sm/keylist.c @@ -532,6 +532,8 @@ list_cert_colon (ctrl_t ctrl, ksba_cert_t cert, unsigned int validity, { if (gpgsm_cert_has_well_known_private_key (cert)) *truststring = 'w'; /* Well, this is dummy CA. */ + else if (gpg_err_code (valerr) == GPG_ERR_NOT_TRUSTED) + *truststring = 'n'; /* Likely the root cert is not trusted. */ else *truststring = 'i'; } From a14f73a1921e6cd002a58ff8a5ba3d39129729f3 Mon Sep 17 00:00:00 2001 From: Daniel Cerqueira Date: Wed, 29 Nov 2023 13:54:47 +0000 Subject: [PATCH 20/42] po: Update Portuguese Translation. -- This commit log (with no ChangeLog entry) is written by gniibe, following the practice; Translation update don't need a ChangeLog entry in a commit log. Signed-off-by: Daniel Cerqueira --- doc/help.pt.txt | 413 ++- po/pt.po | 8886 +++++++++++++++++------------------------------ 2 files changed, 3531 insertions(+), 5768 deletions(-) diff --git a/doc/help.pt.txt b/doc/help.pt.txt index da9a18153..95bd3f650 100644 --- a/doc/help.pt.txt +++ b/doc/help.pt.txt @@ -1,4 +1,4 @@ -# help.pt.txt - pt GnuPG online help +# help.pt.txt - Portuguese GnuPG online help # Copyright (C) 2007 Free Software Foundation, Inc. # # This file is part of GnuPG. @@ -7,247 +7,436 @@ # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. -# +# # GnuPG is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, see . +# Note that this help file needs to be UTF-8 encoded. When looking +# for a help item, GnuPG scans the help files in the following order +# (assuming a GNU or Unix system): +# +# /etc/gnupg/help.LL_TT.txt +# /etc/gnupg/help.LL.txt +# /etc/gnupg/help.txt +# /usr/share/gnupg/help.LL_TT.txt +# /usr/share/gnupg/help.LL.txt +# /usr/share/gnupg/help.txt +# +# Here LL_TT denotes the full name of the current locale with the +# territory (.e.g. "de_DE"), LL denotes just the locale name +# (e.g. "de"). The first matching item is returned. To put a dot or +# a hash mark at the beginning of a help text line, it needs to be +# prefixed with ". ". A single dot may be used to terminated a help +# entry. + +.pinentry.qualitybar.tooltip +# [remove the hash mark from the key to enable this text] +# This entry is just an example on how to customize the tooltip shown +# when hovering over the quality bar of the pinentry. We don't +# install this text so that the hardcoded translation takes +# precedence. An administrator should write up a short help to tell +# the users about the configured passphrase constraints and save that +# to /etc/gnupg/help.txt. The help text should not be longer than +# about 800 characters. +Esta barra indica a qualidade da frase-secreta introduzida acima. + +Enquanto a barra estiver vermelha, o GnuPG considera a frase-secreta +demasiada fraca para a aceitar. Peça ao seu administrador detalhes +sobre as restrições de frase-secreta configuradas. +. + +.pinentry.constraints.hint.short +# [remove the hash mark from the key to enable this hint] +# This entry is used by some pinentries to display a hint about +# enabled passphrase constraints. These constraints are configurable +# and the admin may give a hint about them by using this help entry. +Use letras e dígitos. +. + +.pinentry.constraints.hint.long +# [remove the hash mark from the key to enable this hint] +# This entry is used by some pinentries to show a tooltip with more +# information about the configured passphrase constraints. +Use letras e dígitos. +Restrições extras são impostas, por exemplo +o uso de matrículas comuns de veículos. +. + +.pinentry.formatted_passphrase.hint", +# [remove the hash mark from the key to enable this hint] +# If this entry is not set a standard text is shown +Nota: Os espaços em branco não fazem parte da frase-secreta. +. + +.gnupg.agent-problem +# There was a problem accessing or starting the agent. +Não foi possível conectar-se a um Gpg-Agent em execução ou +ocorreu um problema de comunicação com um agent em execução. + +O sistema usa um processo em segundo plano, chamado Gpg-Agent, para +procestamento chaves privadas e pedir frase-secretas. O agent +geralmente é iniciado quando o utilizador faz login e é executado, +enquanto o utilizador estiver logado. Caso nenhum agent esteja +disponível, o sistema tenta iniciar um em tempo real mas esta versão +do agent é um pouco limitada em funcionalidade e assim, pode levar a +pequenos problemas. + +Você provavelmente precisa perguntar ao seu administrador sobre como +resolver o problema. Como solução alternativa, você pode tentar sair +e entrar na sua sessão e ver se isso ajuda. Se isso ajudar, por +favor, informe mesmo assim o administrador, porque isto indica um bug +no software. +. + +.gnupg.dirmngr-problem +# There was a problen accessing the dirmngr. +Não foi possível conectar-se a um Dirmngr em execução ou ocorreu um +problema de comunicação com um Dirmngr em execução. + +Para pesquisar listas de revogação de certificados (CRLs), executar +validação OCSP e para pesquisar chaves através de servidores LDAP, o +sistema usa um programa de serviço externo chamado Dirmngr. O Dirmngr +geralmente está em execução como um serviço do sistema (daemon) e não +precisa de qualquer atenção por parte do utilizador. Em caso de +problemas, o sistema poderá iniciar sua própria cópia do Dirmngr tendo +por base uma requisição; esta é a solução alternativa e produz +desempenho limitado. + +Se você encontrar este problema, você deve perguntar ao seu +administrador de sistema como proceder. Como uma solução provisória, +você pode tentar desabilitar a verificação de CRL na configuração do +gpgsm. +. + .gpg.edit_ownertrust.value -Você decide que valor usar aqui; este valor nunca será exportado para -terceiros. Precisamos dele implementar a rede de confiança, que não tem -nada a ver com a rede de certificados (implicitamente criada). +# The help identies prefixed with "gpg." used to be hard coded in gpg +# but may now be overridden by help texts from this file. +Cabe a você atribuir um valor aqui; este valor nunca será exportado a +quaisquer terceiros. Precisamos dele para implementar a +Rede-da-Confiança; que tem nada a ver com a rede-de-certificados +(criada implicitamente). . .gpg.edit_ownertrust.set_ultimate.okay -Para construir a Teia-de-Confiança ('Web-of-Trust'), o GnuPG precisa de -saber quais são as chaves em que deposita confiança absoluta - normalmente -estas são as chaves a que tem acesso à chave privada. Responda "sim" para -que esta chave seja de confiança absoluta. - +Para construir a Rede-da-Confiança, o GnuPG precisa saber quais são as +chaves plenamente confiáveis - essas são geralmente as chaves +para as quais você tem acesso à chave secreta. Responder "sim" para +definir esta chave como plenamente confiável. . .gpg.untrusted_key.override -Se você quiser usar esta chave, não de confiança, assim mesmo, responda "sim". +Se você, mesmo assim, quiser usar esta chave não confiável, responder +"sim". . .gpg.pklist.user_id.enter -Digite o ID de utilizador do destinatário para quem quer enviar a -mensagem. +Introduzir a ID de utilizador do destinatário para quem você deseja +enviar a mensagem. . -.#gpg.keygen.algo -# fixme: Please translate and remove the hash mark from the key line. -Select the algorithm to use. +.gpg.keygen.algo +Selecionar o algoritmo a ser usado. -DSA (aka DSS) is the Digital Signature Algorithm and can only be used -for signatures. +DSA (aka DSS) é o Algoritmo de Assinatura Digital e só pode ser usado +para assinaturas. -Elgamal is an encrypt-only algorithm. +Elgamal é um algoritmo só para cifração. -RSA may be used for signatures or encryption. +O RSA pode ser usado para assinaturas ou cifração. -The first (primary) key must always be a key which is capable of signing. +A primeira chave (principal) deve ser sempre uma chave capaz de +assinar. . .gpg.keygen.algo.rsa_se -Em geral não é uma boa ideia utilizar a mesma chave para assinar e para -cifrar. Este algoritmo só deve ser utilizado em alguns domínios. -Por favor consulte primeiro o seu perito em segurança. +De modo geral, não é uma boa ideia usar a mesma chave para assinar e +cifrar. Este algoritmo só deve ser usado em determinados domínios. +Consulte primeiro o seu especialista em segurança. +. + +.gpg.keygen.cardkey +Selecionar qual chave do cartão será utilizada. + +A listagem mostra o índice de seleção, o keygrip (uma string de +dígitos hex), a referência da chave específica do cartão, o algoritmo +que foi usado para esta chave, e, entre parênteses, a utilização da +chave (cert, sign, auth, encr). Se conhecida, a utilização padrão de +uma chave está marcada com um asterisco. +. + +.gpg.keygen.keygrip +Introduzir o keygrip da chave a ser adicionada. + +O keygrip é uma string de 40 dígitos hex que identifica uma chave. +Ele deve pertencer a uma chave secreta ou a uma subchave secreta +armazenada no seu porta-chaves. +. + +.gpg.keygen.flags +Alterne as capacidades da chave. + +Só é possível alternar as capacidades que são possíveis para o +algoritmo selecionado. + +Para definir rapidamente os recursos de uma só vez, é possível inserir +um '=' como primeiro caractere seguido de uma lista de letras +indicando a capacidade a definir: 's' para assinatura, 'e' para +cifração e 'a' para autenticação. Letras inválidas e capacidades +impossíveis são ignoradas. Este submenu é imediatamente fechado +depois de usar este atalho. . .gpg.keygen.size -Insira o tamanho da chave +Introduzir o tamanho da chave. + +A pré-definição sugerida geralmente é uma boa escolha. + +Se você quiser usar um tamanho de chave grande, por exemplo, 4096 bit, +pense novamente se realmente faz sentido para você. Você poderá +querer ver a página web https://www.xkcd.com/538/ . . .gpg.keygen.size.huge.okay -Responda "sim" ou "não" +Responder "sim" ou "não". . .gpg.keygen.size.large.okay -Responda "sim" ou "não" +Responder "sim" ou "não". . .gpg.keygen.valid -Digite o valor necessário conforme pedido. -É possível digitar uma data ISO (AAAA-MM-DD) mas você não terá uma boa -reacção a erros - o sistema tentará interpretar o valor dado como um intervalo. +Introduzir o valor exigido, conforme mostrado no prompt. +É possível inserir uma data ISO (AAAA-MM-DD), mas você não vai obter +uma boa resposta de erro - em vez disso, o sistema tenta interpretar o +valor dado como um intervalo. . .gpg.keygen.valid.okay -Responda "sim" ou "não" +Responder "sim" ou "não". . .gpg.keygen.name -Digite o nome do possuidor da chave +Introduzir o nome do titular da chave. +Os caracteres "<" e ">" não são permitidos. +Exemplo: Heinrich Heine . .gpg.keygen.email -por favor digite um endereço de email (opcional mas recomendado) +Introduza um endereço de email opcional, mas altamente sugerido. +Exemplo: heinrichh@duesteldorf.de . .gpg.keygen.comment -Por favor digite um comentário (opcional) +Introduza um comentário opcional. +Os caracteres "(" e ")" não são permitidos. +De modo geral, não há necessidade de comentários. . .gpg.keygen.userid.cmd -N para mudar o nome. -C para mudar o comentário. -E para mudar o endereço de email -O para continuar a geração da chave. -S para interromper a geração da chave. +# (Keep a leading empty line) + +N para alterar o nome. +C para alterar o comentário. +E para alterar o endereço de email. +O para continuar com a geração de chaves. +Q para sair da geração de chaves. . .gpg.keygen.sub.okay -Responda "sim" (ou apenas "s") se quiser gerar a subchave. +Responder "sim" (ou apenas "s") se não houver problema em gerar a +subchave. . .gpg.sign_uid.okay -Responda "sim" ou "não" +Responder "sim" ou "não". . .gpg.sign_uid.class -Quando assina uma chave de identificação de um utilizador, deve primeiro -verificar que a chave pertence realmente à pessoa em questão. É útil para -terceiros saberem com que cuidado é que efectuou esta verificação. +Ao assinar uma ID de utilizador de uma chave, você deve primeiro +verificar que a chave pertence à pessoa correta da ID de utilizador. +É útil para os outros saber com que cuidado você verificou isso. -"0" significa que não deseja declarar a forma com verificou a chave +"0" significa que você faz nenhuma reivindicação específica sobre o + quão cuidadosamente você verificou o chave. -"1" significa que acredita que a chave pertence à pessoa em questão, mas - não conseguiu ou não tentou verificar. Este grau é útil para quando - assina a chave de uma utilizador pseudo-anónimo. +"1" significa que você acredita que a pessoa é dona da chave que + afirma possuí-la mas você não pôde, ou não verificou a chave. + Isto é útil para uma verificação de "persona", onde você assina a + chave de um utilizador pseudónimo. -"2" significa que efectuou uma verificação normal da chave. Por exemplo, - isto pode significar que verificou a impressão digital da chave e - verificou o identificador de utilizador da chave contra uma identificação - fotográfica. +"2" significa que você fez uma verificação casual da chave. Por + exemplo, isso poderia significar que você verificou a impressão + digital da chave e verificou a ID de utilizador da chave em + relação a uma ID fotográfica. -"3" significa que efectuou uma verificação exaustiva da chave. Por exemplo, - isto pode significar que efectuou a verificação pessoalmente, e que - utilizou um documento, com fotografia, difícil de falsificar - (como por exemplo um passaporte) que o nome do dono da chave é o - mesmo do que o identificador da chave, e que, finalmente, verificou - (através de troca de e-mail) que o endereço de email da chave pertence - ao done da chave. +"3" significa que você fez uma verificação completa da chave. Por + exemplo, isto poderia significa que você verificou a impressão + digital da chave com o dono da chave em pessoa, e que você + verificou, por meio de um documento difícil de falsificar com uma + ID fotográfica (como um passaporte) que o nome do dono da chave + corresponde ao na ID de utilizador na chave e, finalmente, que + você verificou (por troca de email) que o endereço de email na + chave pertence ao dono da chave. -Atenção: os exemplos dados para os níveis 2 e 3 são *apenas* exemplos. -Compete-lhe a si decidir o que considera, ao assinar chaves, uma verificação -"normal" e uma verificação "exaustiva". +Note que os exemplos dados acima para os níveis 2 e 3 são *apenas* +exemplos. No final, cabe a você decidir o que "casual" e "completo" +significa para você quando você assina outras chaves. -Se não sabe qual é a resposta correcta, responda "0". +Se você não sabe qual é a resposta certa, responda "0". . .gpg.change_passwd.empty.okay -Responda "sim" ou "não" +Responder "sim" ou "não". . .gpg.keyedit.save.okay -Responda "sim" ou "não" +Responder "sim" ou "não". . .gpg.keyedit.cancel.okay -Responda "sim" ou "não" +Responder "sim" ou "não". . -.#gpg.keyedit.sign_all.okay -# fixme: Please translate and remove the hash mark from the key line. -Answer "yes" if you want to sign ALL the user IDs +.gpg.keyedit.sign_all.okay +Responder "sim" se quiser assinar TODAS as IDs de utilizador. . .gpg.keyedit.remove.uid.okay -Responda "sim" se quiser realmente remover este ID de utilizador. -Todos os certificados também serão perdidos! +Responda "sim" se tem a certeza que você quer apagar esta ID de +utilizador. Todos os certificados também são perdidos! . .gpg.keyedit.remove.subkey.okay -Responda "sim" se quiser remover a subchave +Responder "sim" se não houver problema em apagar a subchave. . .gpg.keyedit.delsig.valid -Esta é uma assinatura válida na chave; normalmente não é desejável -remover esta assinatura porque ela pode ser importante para estabelecer -uma conexão de confiança à chave ou a outra chave certificada por esta. +Esta é uma assinatura válida na chave; você normalmente não quer +apagar esta assinatura porque pode ser importante para estabelecer uma +conexão de confiança com a chave ou com outra chave certificada por +esta chave. . .gpg.keyedit.delsig.unknown Esta assinatura não pode ser verificada porque você não tem a chave -correspondente. Você deve adiar sua remoção até saber que chave foi usada -porque a chave desta assinatura pode estabelecer uma conexão de confiança -através de outra chave já certificada. +correspondente. Você deve adiar apagar, até quando você souber qual +chave foi usada, porque esta chave de assinatura pode estabelecer uma +conexão de confiança por meio de outra chave já certificada. . .gpg.keyedit.delsig.invalid -A assinatura não é válida. Faz sentido removê-la do seu porta-chaves. +A assinatura não é válida. Faz sentido removê-la de seu porta-chaves. . .gpg.keyedit.delsig.selfsig -Esta é uma assinatura que liga o ID de utilizador à chave. Geralmente -não é uma boa idéia remover tal assinatura. É possível que o GnuPG -não consiga mais usar esta chave. Faça isto apenas se por alguma -razão esta auto-assinatura não for válida e há uma segunda disponível. +Esta é uma assinatura que vincula a ID de utilizador à chave. +Geralmente não é uma boa ideia remover tal assinatura. Até porque o +GnuPG pode deixar de ser capaz de usar esta chave. Por isso, faça +isso só se, por algum motivo, esta auto-assinatura não for válida e +uma segunda assinatura estiver disponível. . .gpg.keyedit.updpref.okay -Muda as preferências de todos os identificadores de utilizadores -(ou apenas dos seleccionados) para a lista actual de preferências. -O 'timestamp' de todas as auto-assinaturas afectuadas será avançado -em um segundo. - +Alterar as preferências de todas as IDs de utilizador (ou apenas das +selecionadas) para a lista atual de preferências. O timestamp de todas +as auto-assinaturas afetadas serão adiantadas em um segundo. . .gpg.passphrase.enter -Por favor digite a frase secreta +# (keep a leading empty line) +Introduza a frase-secreta; esta é uma frase que é secreta. . .gpg.passphrase.repeat -Por favor repita a frase secreta, para ter certeza do que digitou. +Repita a última frase-secreta, para ter certeza da que introduziu. . .gpg.detached_signature.filename -Dê o nome para o ficheiro ao qual a assinatura se aplica +Fornecer o nome do ficheiro ao qual a assinatura se aplica. . .gpg.openfile.overwrite.okay -Responda "sim" se quiser escrever por cima do ficheiro +# openfile.c (overwrite_filep) +Responder "sim" se não houver problema em sobrescrever o ficheiro. . .gpg.openfile.askoutname -Por favor digite um novo nome de ficheiro. Se você apenas carregar em RETURN -o ficheiro por omissão (que é mostrado entre parênteses) será utilizado. +# openfile.c (ask_outfile_name) +Introduza um novo nome de ficheiro. Se você apenas carregar RETURN o +ficheiro pré-definido (que está entre parênteses) será usado. . .gpg.ask_revocation_reason.code -Deve especificar uma razão para a emissão do certificado. Dependendo no -contexto, pode escolher as seguintes opções desta lista: - "A chave foi comprometida" - Utilize esta opção se tem razões para acreditar que indivíduos não - autorizados obtiveram acesso à sua chave secreta. - "A chave foi substituida" - Utilize esta opção se substituiu esta chave com uma mais recente. - "A chave já não é utilizada" - Utilize esta opção se já não utiliza a chave. - "O identificador do utilizador já não é válido" - Utilize esta opção para comunicar que o identificador do utilizador - não deve ser mais utilizado; normalmente utilizada para indicar - que um endereço de email é inválido. +# revoke.c (ask_revocation_reason) +Você deve especificar um motivo para a revogação. Dependendo do +contexto que você pode escolher a partir desta lista: + "Chave foi comprometida" + Usar isto se você tiver um motivo para acreditar que pessoas não + autorizadas tiveram acesso à sua chave secreta. + "Chave foi substituída" + Usar isto se você tiver substituído esta chave por uma mais + recente. + "Chave não é mais usada" + Usar isto se você tiver desativado esta chave. + "ID de utilizador não é mais válido" + Usar isto para declarar que a ID de utilizador não deve ser mais + utilizada; isto normalmente é usado para marcar um endereço de + email como inválido. . .gpg.ask_revocation_reason.text -Se desejar, pode inserir uma texto descrevendo a razão pela qual criou -este certificado de revogação. Por favor mantenha este texto conciso. +# revoke.c (ask_revocation_reason) +Se desejar, você pode introduzir um texto descrevendo porque você emite +este certificado de revogação. Mantenha este texto conciso. Uma linha vazia termina o texto. +. +.gpg.tofu.conflict +# tofu.c +TOFU detetou outra chave com o mesmo endereço de email (ou um muito +semelhante). Pode ser que o utilizador tenha criado uma nova +chave. Neste caso, você pode confiar com segurança na nova chave (mas +confirme perguntando à pessoa). No entanto, também pode ser que a +chave seja uma falsificação ou esteja a occorrer um ataque de +Man-in-the-Middle (MitM). Neste caso, você deve marcar a chave como +sendo incorreta, para que não seja confiável. Marcar uma chave como +sendo não confiável significa que quaisquer assinaturas serão +consideradas incorretas e que as tentativas de cifrar para a chave +serão sinalizadas. Se você tem dúvidas e não pode verificar de +momento, você deve ou aceitar uma vez ou rejeitar uma vez. +. + +.gpgsm.root-cert-not-trusted +# This text gets displayed by the audit log if +# a root certificates was not trusted. +O certificado raiz (a âncora-de-confiança) não é confiável. Dependendo +da configuração, você poderá aparecer-lhe um prompt, para marcar esse +certificado raiz como confiável ou você poderá precisar de dizer +manualmente ao GnuPG para confiar nesse certificado. Os certificados +confiáveis são configurados no ficheiro trustlist.txt da pasta home do +GnuPG. Em caso de dúvida, pergunte ao seu administrador de sistema se +deve confiar neste certificado. +. + +.gpgsm.crl-problem +# This text is displayed by the audit log for problems with +# the CRL or OCSP checking. +Dependendo da sua configuração, ocorreu um problema ao obter a CRL ou +a realizar de uma verificação OCSP. Há uma grande variedade de razões +pelas quais isto não funcionou. Verifique o manual para possíveis +soluções. . - # Local variables: -# mode: fundamental +# mode: default-generic # coding: utf-8 # End: diff --git a/po/pt.po b/po/pt.po index e7ba4118c..cf440b3a3 100644 --- a/po/pt.po +++ b/po/pt.po @@ -1,25 +1,80 @@ # pt messages for gnupg -# Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. -# Pedro Morais +# Copyright (C) 1999, 2000, 2001, 2002, 2023 Free Software Foundation, Inc. +# Daniel Cerqueira # # Based on pt_PT work done by: +# Pedro Morais # Thiago Jung Bauermann # Rafael Caetano dos Santos +# +# +# GnuPG glossary for Portuguese translators +# +# English | Portuguese +# ----------------------------------+-------------------------------------- +# cryptography | cifragem +# encryption | cifração +# (to) encrypt | cifrar +# decryption | decifração +# (to) decrypt | decifrar +# cipher | a cifra +# passphrase(s) | frase-secreta(s) +# password | senha +# socket | socket +# directory | pasta +# handler | handler +# string | string +# batch mode | modo batch +# delete | apagar +# request | pedido +# armor | blindagem +# compression | compressão +# ownership | ownership +# self-sign | auto-assinar +# keyring | porta-chaves +# enter | introduzir +# prompt | perguntar +# agent | agent +# smartcard | smartcard +# primary | principal +# digest | digest +# deprecated | depreciado +# stale | obsoleto +# photo ID | ID fotográfica +# subject | entidade +# chain | corrente +# write | escrever +# a record | um registo +# timestamp | timestamp +# S-expression | S-expression +# keyflag | keyflag +# flag | flag +# (to) flag | marcar +# merge | fundir +# homedir | homedir +# overwrite | sobrescrever +# (conjugation) please enter (verb) | introduza +# (conjugation) enter (verb) | introduzir +# usage: | uso: +# usage | utilização +# +# msgid "" msgstr "" "Project-Id-Version: gnupg\n" "Report-Msgid-Bugs-To: translations@gnupg.org\n" -"PO-Revision-Date: 2015-02-11 19:17+0100\n" -"Last-Translator: Pedro Morais \n" -"Language-Team: pt \n" +"PO-Revision-Date: 2023-11-29 13:11+0000\n" +"Last-Translator: Daniel Cerqueira \n" +"Language-Team: pt \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#, fuzzy, c-format +#, c-format msgid "failed to acquire the pinentry lock: %s\n" -msgstr "falha ao inicializar a base de dados de confiança: %s\n" +msgstr "falha ao adquirir o bloqueio pinentry: %s\n" #. TRANSLATORS: These are labels for buttons etc as used in #. * Pinentries. In your translation copy the text before the @@ -28,42 +83,39 @@ msgstr "falha ao inicializar a base de dados de confiança: %s\n" #. * used as an accelerator. Double the underscore to have #. * pinentry display a literal underscore. msgid "|pinentry-label|_OK" -msgstr "" +msgstr "|pinentry-label|_OK" msgid "|pinentry-label|_Cancel" -msgstr "" +msgstr "|pinentry-label|_Cancelar" msgid "|pinentry-label|_Yes" -msgstr "" +msgstr "|pinentry-label|_Sim" msgid "|pinentry-label|_No" -msgstr "" +msgstr "|pinentry-label|_Não" msgid "|pinentry-label|PIN:" -msgstr "" +msgstr "|pinentry-label|PIN:" msgid "|pinentry-label|_Save in password manager" -msgstr "" +msgstr "|pinentry-label|_Guardar no gestor de senhas" -#, fuzzy msgid "Do you really want to make your passphrase visible on the screen?" -msgstr "Você quer realmente remover as chaves selecionadas? " +msgstr "De certeza que você deseja tornar sua frase-secreta visível no ecrã?" msgid "|pinentry-tt|Make passphrase visible" -msgstr "" +msgstr "|pinentry-tt|Tornar a frase-secreta visível" -#, fuzzy -#| msgid "invalid passphrase" msgid "|pinentry-tt|Hide passphrase" -msgstr "frase-secreta inválida" +msgstr "|pinentry-tt|Esconder frase-secreta" msgid "Caps Lock is on" -msgstr "" +msgstr "Caps Lock está ativado" #. TRANSLATORS: This string is displayed by Pinentry as the label #. for generating a passphrase. msgid "Suggest" -msgstr "" +msgstr "Sugerir" #. TRANSLATORS: This string is a tooltip, shown by pinentry when #. hovering over the generate button. Please use an appropriate @@ -73,25 +125,24 @@ msgstr "" #. will be used. The strcmp thingy is there to detect a #. non-translated string. msgid "pinentry.genpin.tooltip" -msgstr "" +msgstr "Sugerir uma frase-secreta aleatória." #. TRANSLATORS: This is a text shown by pinentry if the option #. for formatted passphrase is enabled. The length is #. limited to about 900 characters. msgid "Note: The blanks are not part of the passphrase." -msgstr "" +msgstr "Nota: Os espaços em branco não fazem parte da frase-secreta." #. TRANSLATORS: This is a text shown by pinentry as title of a dialog #. telling the user that the entered new passphrase does not satisfy #. the passphrase constraints. Please keep it short. -#, fuzzy msgid "Passphrase Not Allowed" -msgstr "frase secreta demasiado longa\n" +msgstr "Frase-secreta Não Permitida" #. TRANSLATORS: This string is displayed by Pinentry as the label #. for the quality bar. msgid "Quality:" -msgstr "" +msgstr "Qualidade:" #. TRANSLATORS: This string is a tooltip, shown by pinentry when #. hovering over the quality bar. Please use an appropriate @@ -101,528 +152,510 @@ msgstr "" #. will be used. msgid "pinentry.qualitybar.tooltip" msgstr "" +"A qualidade do texto inserido acima.\n" +"Peça ao administrador detalhes sobre\n" +"os critérios." msgid "" "Please enter your PIN, so that the secret key can be unlocked for this " "session" msgstr "" +"Introduza o seu PIN, para que a chave secreta possa ser desbloqueada para " +"esta sessão" -#, fuzzy msgid "" "Please enter your passphrase, so that the secret key can be unlocked for " "this session" -msgstr "Por favor digite a frase secreta \n" +msgstr "" +"Introduza a sua frase-secreta, para que a chave secreta possa ser " +"desbloqueada para esta sessão" msgid "PIN:" -msgstr "" +msgstr "PIN:" -#, fuzzy msgid "Passphrase:" -msgstr "frase secreta incorrecta" +msgstr "Frase-secreta:" msgid "does not match - try again" -msgstr "" +msgstr "não corresponde - tente novamente" -#, fuzzy msgid "Passphrases match." -msgstr "frase secreta incorrecta" +msgstr "Frase-secretas correspondem." #. TRANSLATORS: The string is appended to an error message in #. the pinentry. The %s is the actual error message, the #. two %d give the current and maximum number of tries. #, c-format msgid "SETERROR %s (try %d of %d)" -msgstr "" +msgstr "SETERROR %s (tentativa %d de %d)" msgid "Repeat:" -msgstr "" +msgstr "Repetir:" -#, fuzzy msgid "PIN too long" -msgstr "frase secreta demasiado longa\n" +msgstr "PIN muito longo" -#, fuzzy msgid "Passphrase too long" -msgstr "frase secreta demasiado longa\n" +msgstr "Frase-secreta muito longa" -#, fuzzy msgid "Invalid characters in PIN" -msgstr "Caracter inválido no nome\n" +msgstr "Caracteres inválidos no PIN" msgid "PIN too short" -msgstr "" +msgstr "PIN muito curto" -#, fuzzy msgid "Bad PIN" -msgstr "MPI incorreto" +msgstr "PIN inválido" -#, fuzzy msgid "Bad Passphrase" -msgstr "frase secreta incorrecta" +msgstr "Frase-secreta inválida" msgid "Note: Request from the web browser." -msgstr "" +msgstr "Nota: Pedido do navegador da Web." msgid "Note: Request from a remote site." -msgstr "" +msgstr "Nota: Pedido de um site remoto." -#, fuzzy, c-format +#, c-format msgid "error getting serial number of card: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao obter o número de série do cartão: %s\n" -#, fuzzy msgid "Please re-enter this passphrase" -msgstr "muda a frase secreta" +msgstr "Re-introduza esta frase-secreta" -#, fuzzy, c-format +#, c-format msgid "" "Please enter the passphrase to protect the imported object within the %s " "system." -msgstr "Por favor digite a frase secreta \n" +msgstr "" +"Introduza a frase-secreta para proteger o objeto importado dentro do sistema " +"%s." msgid "" "This key (or subkey) is not protected with a passphrase. Please enter a new " "passphrase to export it." msgstr "" +"Esta chave (ou subchave) não está protegida com uma frase-secreta. " +"Introduza uma nova frase-secreta para exportá-la." -#, fuzzy, c-format +#, c-format msgid "ssh keys greater than %d bits are not supported\n" -msgstr "algoritmo de protecção %d%s não é suportado\n" +msgstr "chaves ssh maiores que %d bits não são suportadas\n" -#, fuzzy, c-format -#| msgid "can't create `%s': %s\n" +#, c-format msgid "can't create '%s': %s\n" -msgstr "impossível criar `%s': %s\n" +msgstr "não é possível criar '%s': %s\n" -#, fuzzy, c-format -#| msgid "can't open `%s': %s\n" +#, c-format msgid "can't open '%s': %s\n" -msgstr "impossível abrir `%s': %s\n" +msgstr "não é possível abrir '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "no suitable card key found: %s\n" -msgstr "nenhum porta-chaves secreto com permissões de escrita encontrado: %s\n" +msgstr "nenhuma chave de cartão adequada encontrada: %s\n" -#, fuzzy, c-format +#, c-format msgid "error getting list of cards: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao obter a lista de cartões: %s\n" #, c-format msgid "" "An ssh process requested the use of key%%0A %s%%0A (%s)%%0ADo you want to " "allow this?" msgstr "" +"Um processo ssh pediu o uso da chave%%0A %s%%0A (%s)%%0ADeseja permitir " +"isto?" msgid "Allow" -msgstr "" +msgstr "Permitir" msgid "Deny" -msgstr "" +msgstr "Negar" -#, fuzzy, c-format +#, c-format msgid "Please enter the passphrase for the ssh key%%0A %F%%0A (%c)" -msgstr "Por favor digite a frase secreta \n" +msgstr "Introduza a frase-secreta da chave ssh%%0A %F%%0A (%c)" -#, fuzzy, c-format +#, c-format msgid "" "Please enter a passphrase to protect the received secret key%%0A %s%%0A " "%s%%0Awithin gpg-agent's key storage" -msgstr "Por favor digite a frase secreta \n" +msgstr "" +"Introduza uma frase-secreta para proteger a chave secreta recebida%%0A " +"%s%%0A %s%%0Adentro do armazenamento de chaves do gpg-agent" -#, fuzzy, c-format +#, c-format msgid "failed to create stream from socket: %s\n" -msgstr "%s: falha ao criar tabela de dispersão: %s\n" +msgstr "falha ao criar fluxo de socket: %s\n" msgid "Admin PIN" -msgstr "" +msgstr "PIN do Admin" #. TRANSLATORS: A PUK is the Personal Unblocking Code #. used to unblock a PIN. msgid "PUK" -msgstr "" +msgstr "PUK" msgid "Reset Code" -msgstr "" +msgstr "Código de Reset" msgid "Push ACK button on card/token." -msgstr "" +msgstr "Pressione o botão ACK no cartão/token." msgid "Use the reader's pinpad for input." -msgstr "" +msgstr "Usar o pinpad do leitor para entrada." -#, fuzzy msgid "Repeat this Reset Code" -msgstr "Repita a frase secreta: " +msgstr "Repetir este Código de Reset" -#, fuzzy msgid "Repeat this PUK" -msgstr "Repita a frase secreta: " +msgstr "Repetir este PUK" -#, fuzzy msgid "Repeat this PIN" -msgstr "Repita a frase secreta: " +msgstr "Repetir este PIN" -#, fuzzy msgid "Reset Code not correctly repeated; try again" -msgstr "a frase secreta não foi repetida corretamente; tente outra vez" +msgstr "Código de Reset incorretamente repetido; tente novamente" -#, fuzzy msgid "PUK not correctly repeated; try again" -msgstr "a frase secreta não foi repetida corretamente; tente outra vez" +msgstr "PUK incorretamente repetido; tente novamente" -#, fuzzy msgid "PIN not correctly repeated; try again" -msgstr "a frase secreta não foi repetida corretamente; tente outra vez" +msgstr "PIN incorretamente repetido; tente novamente" #, c-format msgid "Please enter the PIN%s%s%s to unlock the card" -msgstr "" +msgstr "Introduza o PIN%s%s%s para desbloquear o cartão" -#, fuzzy, c-format +#, c-format msgid "error writing to pipe: %s\n" -msgstr "erro na escrita do porta-chaves `%s': %s\n" +msgstr "erro ao escrever no pipe: %s\n" -#, fuzzy msgid "Enter new passphrase" -msgstr "Insira a frase secreta\n" +msgstr "Introduzir nova frase-secreta" #, c-format msgid "" "You have not entered a passphrase!%0AAn empty passphrase is not allowed." msgstr "" +"Você não introduziu uma frase-secreta!%0AUma frase-secreta vazia não é " +"permitida." #, c-format msgid "" "You have not entered a passphrase - this is in general a bad idea!%0APlease " "confirm that you do not want to have any protection on your key." msgstr "" +"Você não introduziu uma frase-secreta - isto, geralmente, é uma má ideia!" +"%0AConfirme que você quer ter nenhuma proteção em sua chave." msgid "Yes, protection is not needed" -msgstr "" +msgstr "Sim, a proteção não é necessária" -#, fuzzy, c-format -#| msgid "Name must be at least 5 characters long\n" +#, c-format msgid "A passphrase should be at least %u character long." msgid_plural "A passphrase should be at least %u characters long." -msgstr[0] "O nome deve ter pelo menos 5 caracteres\n" -msgstr[1] "O nome deve ter pelo menos 5 caracteres\n" +msgstr[0] "Uma frase-secreta deve ter pelo menos %u caracter." +msgstr[1] "Uma frase-secreta deve ter pelo menos %u caracteres." #, c-format msgid "A passphrase should contain at least %u digit or%%0Aspecial character." msgid_plural "" "A passphrase should contain at least %u digits or%%0Aspecial characters." msgstr[0] "" +"Uma frase-secreta deve conter pelo menos %u dígito ou%%0Acaracter especial." msgstr[1] "" +"Uma frase-secreta deve conter pelo menos %u dígitos ou%%0Acaracteres " +"especiais." #, c-format msgid "A passphrase may not be a known term or match%%0Acertain pattern." msgstr "" +"Uma frase-secreta não pode ser um termo conhecido ou corresponder%%0Aa um " +"determinado padrão." msgid "Warning: You have entered an insecure passphrase." -msgstr "" +msgstr "Aviso: Você introduziu uma frase-secreta insegura." -#, fuzzy msgid "Take this one anyway" -msgstr "Usar esta chave de qualquer modo? " +msgstr "Mesmo assim, leve esta" -#, fuzzy, c-format +#, c-format msgid "Please enter the passphrase to%0Aprotect your new key" -msgstr "" -"Você precisa de uma frase secreta para proteger a sua chave.\n" -"\n" +msgstr "Introduza a frase-secreta para%0Aproteger a sua nova chave" -#, fuzzy msgid "Please enter the new passphrase" -msgstr "muda a frase secreta" +msgstr "Introduza a nova frase-secreta" msgid "Options used for startup" -msgstr "" +msgstr "Opções usadas para inicialização" msgid "run in daemon mode (background)" -msgstr "" +msgstr "executar no modo daemon (em segundo plano)" msgid "run in server mode (foreground)" -msgstr "" +msgstr "executar no modo de servidor (primeiro plano)" msgid "do not detach from the console" -msgstr "" +msgstr "não desanexar da consola" msgid "sh-style command output" -msgstr "" +msgstr "saída de comando tipo-sh" msgid "csh-style command output" -msgstr "" +msgstr "saída de comando tipo-csh" -#, fuzzy msgid "|FILE|read options from FILE" -msgstr "|FICHEIRO|carregar módulo de extensão FICHEIRO" +msgstr "|FILE|ler opções de FILE" msgid "Options controlling the diagnostic output" -msgstr "" +msgstr "Opções que controlam a saída do diagnóstico" msgid "verbose" -msgstr "detalhado" +msgstr "verboso" msgid "be somewhat more quiet" msgstr "ser mais silencioso" msgid "|FILE|write server mode logs to FILE" -msgstr "" +msgstr "|FILE|escrever logs do modo de servidor no FILE" msgid "Options controlling the configuration" -msgstr "" +msgstr "Opções que controlam a configuração" -#, fuzzy msgid "do not use the SCdaemon" -msgstr "actualizar a base de dados de confiança" +msgstr "não usar o SCdaemon" msgid "|PGM|use PGM as the SCdaemon program" -msgstr "" +msgstr "|PGM|usar PGM como o programa SCdaemon" msgid "|PGM|use PGM as the tpm2daemon program" -msgstr "" +msgstr "|PGM|usar PGM como o programa tpm2daemon" -#, fuzzy -#| msgid "|NAME|set terminal charset to NAME" msgid "|NAME|accept some commands via NAME" -msgstr "" -"|NOME|definir mapa de caracteres do terminal como\n" -"NOME" +msgstr "|NAME|aceitar alguns comandos via NAME" msgid "ignore requests to change the TTY" -msgstr "" +msgstr "ignorar pedidos para alterar o TTY" msgid "ignore requests to change the X display" -msgstr "" +msgstr "ignorar pedidos para alterar a exibição X" -#, fuzzy -#| msgid "not supported" msgid "enable ssh support" -msgstr "não suportado" +msgstr "habilitar suporte a ssh" msgid "|ALGO|use ALGO to show ssh fingerprints" -msgstr "" +msgstr "|ALGO|usar ALGO para mostrar impressões digitais ssh" -#, fuzzy -#| msgid "not supported" msgid "enable putty support" -msgstr "não suportado" +msgstr "habilitar suporte a putty" -#, fuzzy -#| msgid "not supported" msgid "enable Win32-OpenSSH support" -msgstr "não suportado" +msgstr "habilitar o suporte a Win32-OpenSSH" msgid "Options controlling the security" -msgstr "" +msgstr "Opções que controlam a segurança" msgid "|N|expire cached PINs after N seconds" -msgstr "" +msgstr "|N|expirar PINs armazenados em cache após N segundos" msgid "|N|expire SSH keys after N seconds" -msgstr "" +msgstr "|N|expirar chaves SSH após N segundos" msgid "|N|set maximum PIN cache lifetime to N seconds" -msgstr "" +msgstr "|N|definir o tempo de vida máximo da cache do PIN para N segundos" msgid "|N|set maximum SSH key lifetime to N seconds" -msgstr "" +msgstr "|N|definir o tempo de vida máximo da chave SSH para N segundos" msgid "do not use the PIN cache when signing" -msgstr "" +msgstr "não usar a cache de PIN ao assinar" -#, fuzzy msgid "disallow the use of an external password cache" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "não permitir o uso de uma cache de senhas externa" msgid "disallow clients to mark keys as \"trusted\"" -msgstr "" +msgstr "não permitir que os clientes marquem chaves como \"confiável\"" -#, fuzzy msgid "allow presetting passphrase" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "permitir pré-definir frase-secreta" msgid "Options enforcing a passphrase policy" -msgstr "" +msgstr "Opções que impõem uma política de frase-secreta" msgid "do not allow bypassing the passphrase policy" -msgstr "" +msgstr "não permitir ignorar a política de frase-secreta" msgid "|N|set minimal required length for new passphrases to N" msgstr "" +"|N|definir o comprimento mínimo necessário de N para novas frases-secretas" msgid "|N|require at least N non-alpha characters for a new passphrase" msgstr "" +"|N|exigir pelo menos N caracteres não-alfabéticos para uma nova frase-secreta" msgid "|FILE|check new passphrases against pattern in FILE" -msgstr "" +msgstr "|FILE|verificar novas frases-secretas em relação ao padrão no FILE" -#, fuzzy msgid "|N|expire the passphrase after N days" -msgstr "|N|usar mode de frase secreta N" +msgstr "|N|expirar a frase-secreta após N dias" -#, fuzzy msgid "do not allow the reuse of old passphrases" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "não permitir a reutilização de frase-secretas antigas" msgid "Options controlling the PIN-Entry" -msgstr "" +msgstr "Opções que controlam o PIN-Entry" -#, fuzzy -#| msgid "use the gpg-agent" msgid "never use the PIN-entry" -msgstr "utilizar o gpg-agent" +msgstr "nunca usar o PIN-entry" msgid "disallow caller to override the pinentry" -msgstr "" +msgstr "não permitir que o chamador sobreponha o pinentry" msgid "let PIN-Entry grab keyboard and mouse" -msgstr "" +msgstr "deixar o PIN-Entry agarrar o teclado e o rato" msgid "|PGM|use PGM as the PIN-Entry program" -msgstr "" +msgstr "|PGM|usar PGM como o programa PIN-Entry" msgid "|N|set the Pinentry timeout to N seconds" -msgstr "" +msgstr "|N|definir o tempo limite do Pinentry para N segundos" msgid "allow passphrase to be prompted through Emacs" -msgstr "" +msgstr "permitir que a frase-secreta seja perguntada pelo Emacs" #. TRANSLATORS: @EMAIL@ will get replaced by the actual bug #. reporting address. This is so that we can change the #. reporting address without breaking the translations. -#, fuzzy msgid "Please report bugs to <@EMAIL@>.\n" -msgstr "Por favor comunique bugs para .\n" +msgstr "Reporte bugs para <@EMAIL@>.\n" -#, fuzzy msgid "Usage: @GPG_AGENT@ [options] (-h for help)" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "Uso: @GPG_AGENT@ [opções] (-h para ajuda)" msgid "" "Syntax: @GPG_AGENT@ [options] [command [args]]\n" "Secret key management for @GNUPG@\n" msgstr "" +"Sintaxe: @GPG_AGENT@ [opções] [comando [args]]\n" +"Gerir as chaves secretas para @GNUPG@\n" #, c-format msgid "invalid debug-level '%s' given\n" -msgstr "" +msgstr "fornecido debug-level inválido '%s'\n" #, c-format msgid "selected digest algorithm is invalid\n" -msgstr "o algoritmo de \"digest\" selecionado é inválido\n" +msgstr "o algoritmo de digest selecionado é inválido\n" -#, fuzzy, c-format -#| msgid "reading options from `%s'\n" +#, c-format msgid "reading options from '%s'\n" -msgstr "a ler opções de `%s'\n" +msgstr "lendo opções de '%s'\n" -#, fuzzy, c-format -#| msgid "WARNING: \"%s\" is a deprecated option\n" +#, c-format msgid "Note: '%s' is not considered an option\n" -msgstr "AVISO: \"%s\" é uma opção depreciada\n" +msgstr "Nota: '%s' não é considerada uma opção\n" #, c-format msgid "WARNING: \"%s\" is a deprecated option\n" msgstr "AVISO: \"%s\" é uma opção depreciada\n" -#, fuzzy, c-format +#, c-format msgid "can't create socket: %s\n" -msgstr "impossível criar %s: %s\n" +msgstr "não é possível criar socket: %s\n" #, c-format msgid "socket name '%s' is too long\n" -msgstr "" +msgstr "o nome do socket '%s' é muito longo\n" #, c-format msgid "trying to steal socket from running %s\n" -msgstr "" +msgstr "tentando roubar o socket de executar %s\n" -#, fuzzy, c-format +#, c-format msgid "a gpg-agent is already running - not starting a new one\n" -msgstr "o gpg-agent não está disponível nesta sessão\n" +msgstr "um gpg-agent já está em execução - não iniciando um novo\n" -#, fuzzy, c-format +#, c-format msgid "error getting nonce for the socket\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao obter nonce para o socket\n" -#, fuzzy, c-format +#, c-format msgid "error binding socket to '%s': %s\n" -msgstr "erro ao enviar para `%s': %s\n" +msgstr "erro ao vincular socket a '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "can't set permissions of '%s': %s\n" -msgstr "AVISO: permissões pouco seguras em %s \"%s\"\n" +msgstr "não é possível definir permissões de '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "listening on socket '%s'\n" -msgstr "a escrever chave privada para `%s'\n" +msgstr "ouvindo no socket '%s'\n" -#, fuzzy, c-format +#, c-format msgid "can't create directory '%s': %s\n" -msgstr "%s: impossível criar directoria: %s\n" +msgstr "não é possível criar a pasta '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "directory '%s' created\n" -msgstr "%s: directoria criada\n" +msgstr "pasta '%s' criada\n" -#, fuzzy, c-format +#, c-format msgid "stat() failed for '%s': %s\n" -msgstr "base de dados de confiança: leitura falhou (n=%d): %s\n" +msgstr "stat() falhou para '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "can't use '%s' as home directory\n" -msgstr "%s: impossível criar directoria: %s\n" +msgstr "não é possível usar '%s' como pasta home\n" -#, fuzzy, c-format +#, c-format msgid "error reading nonce on fd %d: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao ler nonce em fd %d: %s\n" #, c-format msgid "handler 0x%lx for fd %d started\n" -msgstr "" +msgstr "handler 0x%lx para fd %d iniciado\n" #, c-format msgid "handler 0x%lx for fd %d terminated\n" -msgstr "" +msgstr "handler 0x%lx para fd %d terminado\n" #, c-format msgid "ssh handler 0x%lx for fd %d started\n" -msgstr "" +msgstr "handler ssh 0x%lx para fd %d iniciado\n" #, c-format msgid "ssh handler 0x%lx for fd %d terminated\n" -msgstr "" +msgstr "handler ssh 0x%lx para fd %d terminado\n" -#, fuzzy, c-format +#, c-format msgid "npth_pselect failed: %s - waiting 1s\n" -msgstr "actualização da chave secreta falhou: %s\n" +msgstr "npth_pselect falhou: %s - aguardando 1s\n" -#, fuzzy, c-format +#, c-format msgid "%s %s stopped\n" -msgstr "%s: ignorado: %s\n" +msgstr "%s %s interrompido\n" -#, fuzzy, c-format +#, c-format msgid "no gpg-agent running in this session\n" -msgstr "o gpg-agent não está disponível nesta sessão\n" +msgstr "nenhum gpg-agent em execução nesta sessão\n" -#, fuzzy msgid "" "@Options:\n" " " msgstr "" -"@\n" -"Opções:\n" +"@Opções:\n" " " -#, fuzzy msgid "Usage: gpg-preset-passphrase [options] KEYGRIP (-h for help)\n" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "Uso: gpg-preset-passphrase [opções] KEYGRIP (-h para ajuda)\n" msgid "" "Syntax: gpg-preset-passphrase [options] KEYGRIP\n" "Password cache maintenance\n" msgstr "" +"Sintaxe: gpg-preset-passphrase [opções] KEYGRIP\n" +"Manutenção da cache de senhas\n" msgid "" "@Commands:\n" @@ -640,73 +673,75 @@ msgstr "" "Opções:\n" " " -#, fuzzy msgid "Usage: gpg-protect-tool [options] (-h for help)\n" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "Uso: gpg-protect-tool [opções] (-h para ajuda)\n" msgid "" "Syntax: gpg-protect-tool [options] [args]\n" "Secret key maintenance tool\n" msgstr "" +"Sintaxe: gpg-protect-tool [opções] [args]\n" +"Ferramenta de manutenção de chave secreta\n" -#, fuzzy msgid "Please enter the passphrase to unprotect the PKCS#12 object." -msgstr "Por favor digite a frase secreta \n" +msgstr "Introduza a frase-secreta para desproteger o objeto PKCS#12." -#, fuzzy msgid "Please enter the passphrase to protect the new PKCS#12 object." -msgstr "Por favor digite a frase secreta \n" +msgstr "Introduza a frase-secreta para proteger o novo objeto PKCS#12." msgid "" "Please enter the passphrase to protect the imported object within the GnuPG " "system." msgstr "" +"Introduza a frase-secreta para proteger o objeto importado dentro do sistema " +"GnuPG." -#, fuzzy msgid "" "Please enter the passphrase or the PIN\n" "needed to complete this operation." -msgstr "Por favor digite a frase secreta \n" +msgstr "" +"Introduza a frase-secreta ou o PIN\n" +"necessário para concluir esta operação." -#, fuzzy, c-format +#, c-format msgid "cancelled\n" -msgstr "cancelado pelo utilizador\n" +msgstr "cancelado\n" -#, fuzzy, c-format +#, c-format msgid "error while asking for the passphrase: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao perguntar pela frase-secreta: %s\n" -#, fuzzy, c-format +#, c-format msgid "error opening '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao abrir '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "file '%s', line %d: %s\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "ficheiro '%s', linha %d: %s\n" -#, fuzzy, c-format +#, c-format msgid "statement \"%s\" ignored in '%s', line %d\n" -msgstr "armadura: %s\n" +msgstr "instrução \"%s\" ignorada em '%s', linha %d\n" -#, fuzzy, c-format +#, c-format msgid "system trustlist '%s' not available\n" -msgstr "partes da chave secreta não disponíveis\n" +msgstr "lista da confiança do sistema '%s' não disponível\n" -#, fuzzy, c-format +#, c-format msgid "bad fingerprint in '%s', line %d\n" -msgstr "armadura: %s\n" +msgstr "impressão digital inválida em '%s', linha %d\n" -#, fuzzy, c-format +#, c-format msgid "invalid keyflag in '%s', line %d\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "keyflag inválida em '%s', linha %d\n" -#, fuzzy, c-format +#, c-format msgid "error reading '%s', line %d: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao ler '%s', linha %d: %s\n" #, c-format msgid "error reading list of trusted root certificates\n" -msgstr "" +msgstr "erro ao ler lista de certificados raiz confiáveis\n" #. TRANSLATORS: This prompt is shown by the Pinentry #. and has one special property: A "%%0A" is used by @@ -721,13 +756,14 @@ msgid "" "Do you ultimately trust%%0A \"%s\"%%0Ato correctly certify user " "certificates?" msgstr "" +"Você confia plenamente em%%0A \"%s\"%%0Apara certificar corretamente " +"certificados de utilizador?" -#, fuzzy msgid "Yes" -msgstr "sim" +msgstr "Sim" msgid "No" -msgstr "" +msgstr "Não" #. TRANSLATORS: This prompt is shown by the Pinentry and has #. one special property: A "%%0A" is used by Pinentry to @@ -742,157 +778,141 @@ msgid "" "Please verify that the certificate identified as:%%0A \"%s\"%%0Ahas the " "fingerprint:%%0A %s" msgstr "" +"Verifique que o certificado identificado como:%%0A \"%s\"%%0Atem a " +"impressão digital:%%0A %s" #. TRANSLATORS: "Correct" is the label of a button and intended #. to be hit if the fingerprint matches the one of the CA. The #. other button is "the default "Cancel" of the Pinentry. msgid "Correct" -msgstr "" +msgstr "Correta" msgid "Wrong" -msgstr "" +msgstr "Errada" #, c-format msgid "Note: This passphrase has never been changed.%0APlease change it now." -msgstr "" +msgstr "Nota: Esta frase-secreta nunca foi alterada.%0AAltere-a agora." #, c-format msgid "" "This passphrase has not been changed%%0Asince %.4s-%.2s-%.2s. Please change " "it now." msgstr "" +"Esta frase-secreta não foi alterada%%0Adesde %.4s-%.2s-%.2s. Altere-a agora." -#, fuzzy msgid "Change passphrase" -msgstr "muda a frase secreta" +msgstr "Alterar frase-secreta" msgid "I'll change it later" -msgstr "" +msgstr "Vou alterá-la mais tarde" msgid "Please insert the card with serial number" -msgstr "" +msgstr "Insira o cartão com o número de série" #, c-format msgid "Requested the use of key%%0A %s%%0A %s%%0ADo you want to allow this?" -msgstr "" +msgstr "Pediu o uso da chave%%0A %s%%0A %s%%0ADeseja permitir isso?" -#, fuzzy, c-format +#, c-format msgid "" -"Do you really want to delete the key identified by keygrip%%0A %s%%0A %%C" -"%%0A?" -msgstr "Você quer realmente remover as chaves selecionadas? " +"Do you really want to delete the key identified by keygrip%%0A %s%%0A " +"%%C%%0A?" +msgstr "" +"De certeza que você deseja apagar a chave identificada por keygrip%%0A " +"%s%%0A %%C%%0A?" -#, fuzzy msgid "Delete key" -msgstr "activa uma chave" +msgstr "Apagar chave" msgid "" "Warning: This key is also listed for use with SSH!\n" "Deleting the key might remove your ability to access remote machines." msgstr "" +"Aviso: Esta chave também está listada para uso com SSH!\n" +"Apagar esta chave pode remover sua capacidade de aceder máquinas remotas." #, c-format msgid "DSA requires the hash length to be a multiple of 8 bits\n" -msgstr "" +msgstr "o DSA requer que o comprimento da hash seja um múltiplo de 8 bits\n" #, c-format msgid "%s key uses an unsafe (%u bit) hash\n" -msgstr "" +msgstr "a chave %s usa um hash inseguro (%u bit)\n" #, c-format msgid "a %zu bit hash is not valid for a %u bit %s key\n" -msgstr "" +msgstr "um hash de %zu bit não é válido para os %u bit de uma chave %s\n" #, c-format msgid "checking created signature failed: %s\n" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "a verificação da assinatura criada falhou: %s\n" #, c-format msgid "secret key parts are not available\n" msgstr "partes da chave secreta não disponíveis\n" -#, fuzzy, c-format -#| msgid "protection algorithm %d%s is not supported\n" +#, c-format msgid "public key algorithm %d (%s) is not supported\n" -msgstr "algoritmo de protecção %d%s não é suportado\n" +msgstr "o algoritmo de chave pública %d (%s) não é suportado\n" -#, fuzzy, c-format -#| msgid "protection algorithm %d%s is not supported\n" +#, c-format msgid "protection algorithm %d (%s) is not supported\n" -msgstr "algoritmo de protecção %d%s não é suportado\n" +msgstr "o algoritmo de proteção %d (%s) não é suportado\n" -#, fuzzy, c-format -#| msgid "protection algorithm %d%s is not supported\n" +#, c-format msgid "protection hash algorithm %d (%s) is not supported\n" -msgstr "algoritmo de protecção %d%s não é suportado\n" +msgstr "o algoritmo de proteção de hash %d (%s) não é suportado\n" -#, fuzzy, c-format +#, c-format msgid "error creating a pipe: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao criar um pipe: %s\n" -#, fuzzy, c-format +#, c-format msgid "error creating a stream for a pipe: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao criar um fluxo para um pipe: %s\n" -#, fuzzy, c-format +#, c-format msgid "error forking process: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao fazer fork de processo: %s\n" #, c-format msgid "waiting for process %d to terminate failed: %s\n" -msgstr "" +msgstr "falha ao aguardar pelo encerramento do processo %d: %s\n" -#, fuzzy, c-format -msgid "error running '%s': probably not installed\n" -msgstr "erro na leitura de `%s': %s\n" +#, c-format +msgid "waiting for process to terminate failed: ec=%d\n" +msgstr "falha ao esperar que o processo terminasse: ec=%d\n" -#, fuzzy, c-format -msgid "error running '%s': exit status %d\n" -msgstr "erro na leitura de `%s': %s\n" - -#, fuzzy, c-format -msgid "error running '%s': terminated\n" -msgstr "erro na leitura de `%s': %s\n" - -#, fuzzy, c-format -msgid "waiting for processes to terminate failed: %s\n" -msgstr "actualização falhou: %s\n" - -#, fuzzy, c-format -msgid "error getting exit code of process %d: %s\n" -msgstr "erro ao escrever no porta-chaves secreto `%s': %s\n" - -#, fuzzy, c-format -#| msgid "can't connect to `%s': %s\n" +#, c-format msgid "can't connect to '%s': %s\n" -msgstr "impossível ligar a `%s': %s\n" +msgstr "não é possível conectar-se a '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "problem setting the gpg-agent options\n" -msgstr "problema com o agente: o agente returnou 0x%lx\n" +msgstr "problema ao definir as opções do gpg-agent\n" #, c-format msgid "can't disable core dumps: %s\n" -msgstr "impossível desactivar core dumps: %s\n" +msgstr "não é possível desabilitar core dumps: %s\n" -#, fuzzy, c-format +#, c-format msgid "Warning: unsafe ownership on %s \"%s\"\n" -msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" +msgstr "Aviso: ownership não seguro em %s \"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "Warning: unsafe permissions on %s \"%s\"\n" -msgstr "AVISO: permissões pouco seguras em %s \"%s\"\n" +msgstr "Aviso: permissões não seguras em %s \"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "waiting for file '%s' to become accessible ...\n" -msgstr "actualização falhou: %s\n" +msgstr "aguardando que o ficheiro '%s' se torne acessível...\n" -#, fuzzy, c-format +#, c-format msgid "renaming '%s' to '%s' failed: %s\n" -msgstr "criação de armadura falhou: %s\n" +msgstr "falha ao renomear '%s' para '%s': %s\n" #. TRANSLATORS: See doc/TRANSLATE about this string. -#, fuzzy msgid "yes" msgstr "sim" @@ -915,398 +935,369 @@ msgstr "qQ" #. TRANSLATORS: See doc/TRANSLATE about this string. msgid "okay|okay" -msgstr "" +msgstr "okay|ok" #. TRANSLATORS: See doc/TRANSLATE about this string. msgid "cancel|cancel" -msgstr "" +msgstr "cancelar" msgid "oO" -msgstr "" +msgstr "oO" -#, fuzzy msgid "cC" -msgstr "c" +msgstr "cC" #, c-format msgid "out of core in secure memory while allocating %lu bytes" -msgstr "" +msgstr "fora do core na memória segura ao alocar %lu bytes" #, c-format msgid "out of core while allocating %lu bytes" -msgstr "" +msgstr "fora do core ao alocar %lu bytes" -#, fuzzy, c-format +#, c-format msgid "error allocating enough memory: %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "erro tentando alocar memória suficiente: %s\n" #, c-format msgid "%s:%u: obsolete option \"%s\" - it has no effect\n" -msgstr "" +msgstr "%s:%u: opção obsoleta \"%s\" - não tem efeito\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: \"%s%s\" is an obsolete option - it has no effect\n" -msgstr "AVISO: \"%s\" é uma opção depreciada\n" +msgstr "AVISO: \"%s%s\" é uma opção obsoleta - não tem efeito\n" #, c-format msgid "unknown debug flag '%s' ignored\n" -msgstr "" +msgstr "debug flag desconhecida '%s' ignorada\n" -#, fuzzy, c-format +#, c-format msgid "waiting for the dirmngr to come up ... (%ds)\n" -msgstr "actualização falhou: %s\n" +msgstr "a esperar que o dirmngr apareça... (%ds)\n" -#, fuzzy, c-format +#, c-format msgid "waiting for the keyboxd to come up ... (%ds)\n" -msgstr "actualização falhou: %s\n" +msgstr "a esperar que o keyboxd apareça... (%ds)\n" -#, fuzzy, c-format +#, c-format msgid "waiting for the agent to come up ... (%ds)\n" -msgstr "actualização falhou: %s\n" +msgstr "a esperar que o agent apareça... (%ds)\n" -#, fuzzy, c-format +#, c-format msgid "connection to the dirmngr established\n" -msgstr "impossível fazer isso em modo não-interativo\n" +msgstr "conexão com o dirmngr estabelecida\n" -#, fuzzy, c-format +#, c-format msgid "connection to the keyboxd established\n" -msgstr "impossível fazer isso em modo não-interativo\n" +msgstr "conexão com o keyboxd estabelecida\n" -#, fuzzy, c-format +#, c-format msgid "connection to the agent established\n" -msgstr "impossível fazer isso em modo não-interativo\n" +msgstr "conexão com o agent estabelecida\n" -#, fuzzy, c-format +#, c-format msgid "no running %s - starting '%s'\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "sem execução de %s - iniciando '%s'\n" -#, fuzzy, c-format +#, c-format msgid "connection to the agent is in restricted mode\n" -msgstr "impossível fazer isso em modo não-interativo\n" +msgstr "conexão com o agent está no modo restrito\n" -#, fuzzy, c-format -#| msgid "error creating keyring `%s': %s\n" +#, c-format msgid "error getting version from '%s': %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "erro ao obter a versão de '%s': %s\n" #, c-format msgid "server '%s' is older than us (%s < %s)" -msgstr "" +msgstr "o servidor '%s' é mais antigo que nós (%s < %s)" -#, fuzzy, c-format -#| msgid "WARNING: %s overrides %s\n" +#, c-format msgid "WARNING: %s\n" -msgstr "AVISO: %s sobrepõe %s\n" +msgstr "AVISO: %s\n" #, c-format msgid "Note: Outdated servers may lack important security fixes.\n" msgstr "" +"Nota: Servidores desatualizados podem não ter correções de segurança " +"importantes.\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 "Por favor utilize o comando \"toggle\" primeiro.\n" +msgstr "Nota: Usar o comando \"%s\" para reiniciá-los.\n" #. TRANSLATORS: Copy the prefix between the vertical bars #. verbatim. It will not be printed. msgid "|audit-log-result|Good" -msgstr "" +msgstr "|audit-log-result|Válido" msgid "|audit-log-result|Bad" -msgstr "" +msgstr "|audit-log-result|Inválido" msgid "|audit-log-result|Not supported" -msgstr "" +msgstr "|audit-log-result|Não suportado" -#, fuzzy msgid "|audit-log-result|No certificate" -msgstr "certificado incorrecto" +msgstr "|audit-log-result|Sem certificado" -#, fuzzy msgid "|audit-log-result|Not enabled" -msgstr "certificado incorrecto" +msgstr "|audit-log-result|Não habilitado" msgid "|audit-log-result|Error" -msgstr "" +msgstr "|audit-log-result|Erro" -#, fuzzy msgid "|audit-log-result|Not used" -msgstr "certificado incorrecto" +msgstr "|audit-log-result|Não utilizado" -#, fuzzy msgid "|audit-log-result|Okay" -msgstr "certificado incorrecto" +msgstr "|audit-log-result|Okay" -#, fuzzy msgid "|audit-log-result|Skipped" -msgstr "certificado incorrecto" +msgstr "|audit-log-result|Ignorado" -#, fuzzy msgid "|audit-log-result|Some" -msgstr "certificado incorrecto" +msgstr "|audit-log-result|Algum" -#, fuzzy msgid "Certificate chain available" -msgstr "certificado incorrecto" +msgstr "Corrente de certificados disponível" -#, fuzzy msgid "root certificate missing" -msgstr "certificado incorrecto" +msgstr "certificado raiz ausente" msgid "Data encryption succeeded" -msgstr "" +msgstr "Cifração de dados bem-sucedida" -#, fuzzy msgid "Data available" -msgstr "Nenhuma ajuda disponível" +msgstr "Dados disponíveis" -#, fuzzy msgid "Session key created" -msgstr "%s: porta-chaves criado\n" +msgstr "Chave de sessão criada" -#, fuzzy, c-format +#, c-format msgid "algorithm: %s" -msgstr "armadura: %s\n" +msgstr "algoritmo: %s" -#, fuzzy, c-format +#, c-format msgid "unsupported algorithm: %s" -msgstr "" -"\n" -"Algoritmos suportados:\n" +msgstr "algoritmo não suportado: %s" -#, fuzzy msgid "seems to be not encrypted" -msgstr "não cifrado" +msgstr "parece não estar cifrado" msgid "Number of recipients" -msgstr "" +msgstr "Número de destinatários" #, c-format msgid "Recipient %d" -msgstr "" +msgstr "Destinatário %d" msgid "Data signing succeeded" -msgstr "" +msgstr "Assinatura de dados bem-sucedida" -#, fuzzy, c-format +#, c-format msgid "data hash algorithm: %s" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "algoritmo de hash de dados: %s" -#, fuzzy, c-format +#, c-format msgid "Signer %d" -msgstr "Esta assinatura expirou em %s.\n" +msgstr "Signatário %d" -#, fuzzy, c-format +#, c-format msgid "attr hash algorithm: %s" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "algoritmo de hash attr: %s" msgid "Data decryption succeeded" -msgstr "" +msgstr "Decifração de dados bem-sucedida" -#, fuzzy msgid "Encryption algorithm supported" -msgstr "algoritmo de protecção %d%s não é suportado\n" +msgstr "Algoritmo de cifração suportado" -#, fuzzy msgid "Data verification succeeded" -msgstr "verificação de assinatura suprimida\n" +msgstr "Verificação de dados bem-sucedida" -#, fuzzy msgid "Signature available" -msgstr "Esta assinatura expirou em %s.\n" +msgstr "Assinatura disponível" -#, fuzzy msgid "Parsing data succeeded" -msgstr "Assinatura correcta de \"" +msgstr "Processamento de dados foi bem-sucedido" -#, fuzzy, c-format +#, c-format msgid "bad data hash algorithm: %s" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "algoritmo de hash de dados inválido: %s" -#, fuzzy, c-format +#, c-format msgid "Signature %d" -msgstr "Esta assinatura expirou em %s.\n" +msgstr "Assinatura %d" -#, fuzzy msgid "Certificate chain valid" -msgstr "Esta chave expirou!" +msgstr "Corrente de certificados válida" -#, fuzzy msgid "Root certificate trustworthy" -msgstr "certificado incorrecto" +msgstr "Certificado raiz confiável" -#, fuzzy msgid "no CRL found for certificate" -msgstr "certificado incorrecto" +msgstr "nenhuma CRL encontrada para o certificado" -#, fuzzy msgid "the available CRL is too old" -msgstr "Nenhuma ajuda disponível" +msgstr "a CRL disponível é muito antiga" -#, fuzzy msgid "CRL/OCSP check of certificates" -msgstr "certificado incorrecto" +msgstr "verificação CRL/OCSP de certificados" -#, fuzzy msgid "Included certificates" -msgstr "certificado incorrecto" +msgstr "Certificados incluídos" msgid "No audit log entries." -msgstr "" +msgstr "Nenhuma entrada de log de auditoria." -#, fuzzy msgid "Unknown operation" -msgstr "versão desconhecida" +msgstr "Operação desconhecida" msgid "Gpg-Agent usable" -msgstr "" +msgstr "Gpg-Agent utilizável" msgid "Dirmngr usable" -msgstr "" +msgstr "Dirmngr utilizável" -#, fuzzy, c-format +#, c-format msgid "No help available for '%s'." -msgstr "Nenhuma ajuda disponível para `%s'" +msgstr "Nenhuma ajuda disponível para '%s'." -#, fuzzy msgid "ignoring garbage line" -msgstr "erro na última linha\n" +msgstr "ignorando linha de lixo" -#, fuzzy msgid "[none]" -msgstr "versão desconhecida" +msgstr "[nenhum]" -#, fuzzy, c-format +#, c-format msgid "invalid radix64 character %02x skipped\n" -msgstr "caracter radix64 inválido %02x ignorado\n" +msgstr "caractere radix64 inválido %02x ignorado\n" #, c-format msgid "Sorry, we are in batchmode - can't get input\n" -msgstr "" +msgstr "Desculpe, estamos em modo batch - não é possível obter a entrada\n" #, c-format msgid "Sorry, no terminal at all requested - can't get input\n" -msgstr "" +msgstr "Desculpe, nenhum terminal pedido - não é possível obter a entrada\n" #, c-format msgid "too many errors; giving up\n" -msgstr "" +msgstr "muitos erros; desistindo\n" #, c-format msgid "Control-D detected\n" -msgstr "" +msgstr "Control-D detetado\n" -#, fuzzy, c-format +#, c-format msgid "conversion from '%s' to '%s' not available\n" -msgstr "criação de armadura falhou: %s\n" +msgstr "conversão de '%s' para '%s' não disponível\n" -#, fuzzy, c-format +#, c-format msgid "iconv_open failed: %s\n" -msgstr "impossível abrir %s: %s\n" +msgstr "iconv_open falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "conversion from '%s' to '%s' failed: %s\n" -msgstr "criação de armadura falhou: %s\n" +msgstr "falha na conversão de '%s' para '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "failed to create temporary file '%s': %s\n" -msgstr "%s: impossível criar directoria: %s\n" +msgstr "falha ao criar o ficheiro temporário '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "error writing to '%s': %s\n" -msgstr "erro na escrita do porta-chaves `%s': %s\n" +msgstr "erro ao escrever em '%s': %s\n" #, c-format msgid "removing stale lockfile (created by %d)\n" -msgstr "" +msgstr "removendo ficheiro de bloqueio obsoleto (criado por %d)\n" -#, fuzzy, c-format +#, c-format msgid "waiting for lock (held by %d%s) %s...\n" -msgstr "a escrever chave privada para `%s'\n" +msgstr "aguardando bloqueio (mantido por %d%s) %s...\n" msgid "(deadlock?) " -msgstr "" +msgstr "(deadlock?) " -#, fuzzy, c-format +#, c-format msgid "lock '%s' not made: %s\n" -msgstr "chave pública %08lX não encontrada: %s\n" +msgstr "bloqueio '%s' não feito: %s\n" -#, fuzzy, c-format +#, c-format msgid "waiting for lock %s...\n" -msgstr "a escrever chave privada para `%s'\n" +msgstr "aguardando bloqueio %s...\n" #, c-format msgid "%s is too old (need %s, have %s)\n" -msgstr "" +msgstr "%s é muito antigo (precisa de %s, tem %s)\n" -#, fuzzy, c-format -#| msgid "error creating `%s': %s\n" +#, c-format msgid "error creating '%s': %s\n" -msgstr "erro ao criar `%s': %s\n" +msgstr "erro ao criar '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "error closing '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao fechar '%s': %s\n" #, c-format msgid "armor: %s\n" -msgstr "armadura: %s\n" +msgstr "blindagem: %s\n" #, c-format msgid "invalid armor header: " -msgstr "cabeçalho de armadura inválido: " +msgstr "cabeçalho da blindagem inválido: " #, c-format msgid "armor header: " -msgstr "cabeçalho de armadura: " +msgstr "cabeçalho da blindagem: " #, c-format msgid "invalid clearsig header\n" -msgstr "cabeçalho de assinatura em texto puro inválido\n" +msgstr "cabeçalho clearsig inválido\n" -#, fuzzy, c-format +#, c-format msgid "unknown armor header: " -msgstr "cabeçalho de armadura: " +msgstr "cabeçalho da blindagem desconhecido: " #, c-format msgid "nested clear text signatures\n" -msgstr "assinaturas em texto puro aninhadas\n" +msgstr "assinaturas de texto claro aninhadas\n" -#, fuzzy, c-format +#, c-format msgid "unexpected armor: " -msgstr "armadura inesperada:" +msgstr "blindagem inesperada: " #, c-format msgid "invalid dash escaped line: " -msgstr "linha com hífen inválida: " +msgstr "traço inválido escapou linha: " -#, fuzzy, c-format +#, c-format msgid "invalid radix64 character %02X skipped\n" -msgstr "caracter radix64 inválido %02x ignorado\n" +msgstr "caractere radix64 inválido %02X ignorado\n" #, c-format msgid "premature eof (no CRC)\n" -msgstr "fim de ficheiro prematuro (sem CRC)\n" +msgstr "EOF prematuro (sem CRC)\n" #, c-format msgid "premature eof (in CRC)\n" -msgstr "fim de ficheiro prematuro (no CRC)\n" +msgstr "EOF prematuro (no CRC)\n" #, c-format msgid "malformed CRC\n" msgstr "CRC malformado\n" -#, fuzzy, c-format +#, c-format msgid "CRC error; %06lX - %06lX\n" -msgstr "erro de CRC; %06lx - %06lx\n" +msgstr "erro de CRC; %06lX - %06lX\n" -#, fuzzy, c-format +#, c-format msgid "premature eof (in trailer)\n" -msgstr "fim de ficheiro prematuro (no \"Trailer\")\n" +msgstr "EOF prematuro (em rodapé)\n" #, c-format msgid "error in trailer line\n" -msgstr "erro na última linha\n" +msgstr "erro na linha de rodapé\n" #, c-format msgid "no valid OpenPGP data found.\n" @@ -1314,19 +1305,18 @@ msgstr "nenhum dado OpenPGP válido encontrado.\n" #, c-format msgid "invalid armor: line longer than %d characters\n" -msgstr "armadura inválida: linha maior que %d caracteres\n" +msgstr "blindagem inválida: linha maior que %d caracteres\n" #, c-format msgid "" "quoted printable character in armor - probably a buggy MTA has been used\n" msgstr "" -"caracter \"quoted printable\" na armadura - provavelmente um MTA com bugs " -"foi usado\n" +"caractere imprimível citado na blindagem - provavelmente uma MTA bugada foi " +"usada\n" -#, fuzzy, c-format -#| msgid "not human readable" +#, c-format msgid "[ not human readable (%zu bytes: %s%s) ]" -msgstr "não legível por humanos" +msgstr "[ não legível para humanos (%zu bytes: %s%s) ]" #, c-format msgid "" @@ -1338,28 +1328,23 @@ msgstr "" #, c-format msgid "a user notation name must contain the '@' character\n" -msgstr "um valor de notação de utilizador não deve conter o caracter '@'\n" +msgstr "um nome de notação de utilizador deve conter o caractere '@'\n" -#, fuzzy, c-format +#, c-format msgid "a notation name must not contain more than one '@' character\n" -msgstr "um valor de notação de utilizador não deve conter o caracter '@'\n" +msgstr "um nome de notação não deve conter mais de um caractere '@'\n" #, c-format msgid "a notation value must not use any control characters\n" msgstr "um valor de notação não deve usar caracteres de controle\n" -#, fuzzy, c-format +#, c-format msgid "a notation name may not contain an '=' character\n" -msgstr "um valor de notação de utilizador não deve conter o caracter '@'\n" +msgstr "um nome de notação pode não conter um caractere '='\n" -#, fuzzy, c-format -#| msgid "" -#| "a notation name must have only printable characters or spaces, and end " -#| "with an '='\n" +#, c-format msgid "a notation name must have only printable characters or spaces\n" -msgstr "" -"um nome de notação deve ter apenas caracteres imprimíveis ou espaços, e " -"terminar com um '='\n" +msgstr "um nome de notação deve ter apenas caracteres imprimíveis ou espaços\n" #, c-format msgid "WARNING: invalid notation data found\n" @@ -1367,184 +1352,173 @@ msgstr "AVISO: dados de notação inválidos encontrados\n" #, c-format msgid "failed to proxy %s inquiry to client\n" -msgstr "" +msgstr "falha ao reencaminhar inquérito %s para o cliente\n" msgid "Enter passphrase: " -msgstr "Digite a frase secreta: " +msgstr "Introduzir a frase-secreta: " -#, fuzzy, c-format +#, c-format msgid "%s is not compliant with %s mode\n" -msgstr "%s não faz sentido com %s!\n" +msgstr "%s não é compatível com o modo %s\n" -#, fuzzy, c-format +#, c-format msgid "error from TPM: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro do TPM: %s\n" -#, fuzzy, c-format +#, c-format msgid "problem with the agent: %s\n" -msgstr "problema com o agente: o agente returnou 0x%lx\n" +msgstr "problema com o agent: %s\n" -#, fuzzy, c-format +#, c-format msgid "no dirmngr running in this session\n" -msgstr "o gpg-agent não está disponível nesta sessão\n" +msgstr "nenhum dirmngr em execução nesta sessão\n" -#, fuzzy, c-format -#| msgid "you may not use %s while in %s mode\n" +#, c-format msgid "keyserver option \"honor-keyserver-url\" may not be used in Tor mode\n" -msgstr "não pode utilizar %s enquanto estiver no modo %s\n" +msgstr "" +"opção de servidor de chaves \"honor-keyserver-url\" não pode ser usada no " +"modo Tor\n" msgid "WKD uses a cached result" -msgstr "" +msgstr "WKD usa um resultado armazenado em cache" msgid "Tor is not running" -msgstr "" +msgstr "Tor não está em execução" -#, fuzzy msgid "Tor is not properly configured" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "Tor não está configurado corretamente" -#, fuzzy msgid "DNS is not properly configured" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "DNS não está configurado corretamente" msgid "unacceptable HTTP redirect from server" -msgstr "" +msgstr "redirecionamento HTTP inaceitável do servidor" msgid "unacceptable HTTP redirect from server was cleaned up" -msgstr "" +msgstr "redirecionamento HTTP inaceitável do servidor foi limpo" -#, fuzzy -#| msgid "generate a revocation certificate" msgid "server uses an invalid certificate" -msgstr "gerar um certificado de revogação" +msgstr "servidor usa um certificado inválido" -#, fuzzy, c-format -#| msgid "armor: %s\n" +#, c-format msgid "Note: %s\n" -msgstr "armadura: %s\n" +msgstr "Nota: %s\n" -#, fuzzy, c-format +#, c-format msgid "OpenPGP card not available: %s\n" -msgstr "chave secreta não disponível" +msgstr "cartão OpenPGP não disponível: %s\n" #, c-format msgid "OpenPGP card no. %s detected\n" -msgstr "" +msgstr "cartão OpenPGP nº %s detetado\n" -#, fuzzy, c-format +#, c-format msgid "can't do this in batch mode\n" -msgstr "impossível fazer isso em modo não-interativo\n" +msgstr "não é possível fazer isso no modo batch\n" -#, fuzzy, c-format +#, c-format msgid "This command is only available for version 2 cards\n" -msgstr "Este comando não é permitido no modo %s.\n" +msgstr "Este comando só está disponível para cartões da versão 2\n" -#, fuzzy, c-format +#, c-format msgid "Reset Code not or not anymore available\n" -msgstr "partes da chave secreta não disponíveis\n" +msgstr "Código de Reset não disponível ou não está mais disponível\n" msgid "Your selection? " -msgstr "Opção? " +msgstr "Sua opção? " msgid "[not set]" -msgstr "" +msgstr "[não definido]" msgid "Mr." -msgstr "" +msgstr "Sr." msgid "Ms." -msgstr "" +msgstr "Sra." -#, fuzzy msgid "not forced" -msgstr "não processado" +msgstr "não forçado" msgid "forced" -msgstr "" +msgstr "forçado" #, c-format msgid "Please try command \"%s\" if the listing does not look correct\n" -msgstr "" +msgstr "Tente o comando \"%s\" se a listagem não parecer correta\n" msgid "Error: Only plain ASCII is currently allowed.\n" -msgstr "" +msgstr "Erro: Só ASCII simples é permitido de momento.\n" msgid "Error: The \"<\" character may not be used.\n" -msgstr "" +msgstr "Erro: O caractere \"<\" não pode ser usado.\n" msgid "Error: Double spaces are not allowed.\n" -msgstr "" +msgstr "Erro: Espaços duplos não são permitidos.\n" msgid "Cardholder's surname: " -msgstr "" +msgstr "Nome de família do titular do cartão: " msgid "Cardholder's given name: " -msgstr "" +msgstr "Nome próprio do titular do cartão: " #, c-format msgid "Error: Combined name too long (limit is %d characters).\n" -msgstr "" +msgstr "Erro: Nome combinado muito longo (limite é %d caracteres).\n" -#, fuzzy msgid "URL to retrieve public key: " -msgstr "a escrever chave pública para `%s'\n" +msgstr "URL para buscar a chave pública: " -#, fuzzy, c-format -#| msgid "error reading `%s': %s\n" +#, c-format msgid "error reading '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao ler '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "error writing '%s': %s\n" -msgstr "erro na escrita do porta-chaves `%s': %s\n" +msgstr "erro ao escrever '%s': %s\n" msgid "Login data (account name): " -msgstr "" +msgstr "Dados de login (nome da conta): " msgid "Private DO data: " -msgstr "" +msgstr "Dados DO privados: " -#, fuzzy msgid "Language preferences: " -msgstr "preferências actualizadas" +msgstr "Preferências de idioma: " -#, fuzzy, c-format +#, c-format msgid "Error: invalid length of preference string.\n" -msgstr "caracter inválido na cadeia de caractéres da preferência\n" +msgstr "Erro: comprimento inválido da string de preferência.\n" -#, fuzzy, c-format +#, c-format msgid "Error: invalid characters in preference string.\n" -msgstr "caracter inválido na cadeia de caractéres da preferência\n" +msgstr "Erro: caracteres inválidos na string de preferência.\n" msgid "Salutation (M = Mr., F = Ms., or space): " -msgstr "" +msgstr "Saudação (M = Sr., F = Sra., ou espaço): " -#, fuzzy msgid "Error: invalid response.\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "Erro: resposta inválida.\n" -#, fuzzy msgid "CA fingerprint: " -msgstr "mostra impressão digital" +msgstr "Impressão digital da CA: " -#, fuzzy, c-format +#, c-format msgid "Error: invalid formatted fingerprint.\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "Erro: impressão digital formatada inválida.\n" -#, fuzzy, c-format +#, c-format msgid "key operation not possible: %s\n" -msgstr "A geração de chaves falhou: %s\n" +msgstr "operação de chave não é possível: %s\n" -#, fuzzy msgid "not an OpenPGP card" -msgstr "nenhum dado OpenPGP válido encontrado.\n" +msgstr "não é um cartão OpenPGP" -#, fuzzy, c-format +#, c-format msgid "error getting current key info: %s\n" -msgstr "erro ao escrever no porta-chaves secreto `%s': %s\n" +msgstr "erro ao obter informações de chave atual: %s\n" msgid "Replace existing key? (y/N) " -msgstr "" +msgstr "Substituir chave existente? (s/N) " msgid "" "Note: There is no guarantee that the card supports the requested\n" @@ -1552,10 +1526,14 @@ msgid "" " please check the documentation of your card to see which\n" " key types and sizes are supported.\n" msgstr "" +"Nota: Não há garantia de que o cartão suporte o tipo ou tamanho de\n" +" chave pedida. Se a geração de chaves não for bem-sucedida,\n" +" verifique a documentação do seu cartão para ver quais são os\n" +" tipos e tamanhos de chaves suportados.\n" -#, fuzzy, c-format +#, c-format msgid "What keysize do you want? (%u) " -msgstr "Qual o tamanho de chave desejado? (1024) " +msgstr "Qual tamanho de chave você quer? (%u) " #, c-format msgid "rounded up to %u bits\n" @@ -1563,66 +1541,63 @@ msgstr "arredondado para %u bits\n" #, c-format msgid "%s keysizes must be in the range %u-%u\n" -msgstr "" +msgstr "%s tamanhos de chaves devem estar no intervalo %u-%u\n" msgid "Changing card key attribute for: " -msgstr "" +msgstr "Alterando o atributo de chave do cartão para: " -#, fuzzy msgid "Signature key\n" -msgstr "Esta assinatura expirou em %s.\n" +msgstr "Chave de assinatura\n" -#, fuzzy msgid "Encryption key\n" -msgstr " (%d) RSA (apenas cifragem)\n" +msgstr "Chave de cifração\n" msgid "Authentication key\n" -msgstr "" +msgstr "Chave de autenticação\n" msgid "Please select what kind of key you want:\n" -msgstr "Por favor selecione o tipo de chave desejado:\n" +msgstr "Selecione o tipo de chave desejado:\n" -#, fuzzy, c-format +#, c-format msgid " (%d) RSA\n" -msgstr " (%d) RSA (apenas assinatura)\n" +msgstr " (%d) RSA\n" -#, fuzzy, c-format +#, c-format msgid " (%d) ECC\n" -msgstr " (%d) DSA e ElGamal (por omissão)\n" +msgstr " (%d) ECC\n" msgid "Invalid selection.\n" -msgstr "Opção inválida.\n" +msgstr "Seleção inválida.\n" #, c-format msgid "The card will now be re-configured to generate a key of %u bits\n" -msgstr "" +msgstr "O cartão agora será reconfigurado para gerar uma chave de %u bits\n" #, c-format msgid "The card will now be re-configured to generate a key of type: %s\n" -msgstr "" +msgstr "O cartão agora será reconfigurado para gerar uma chave do tipo: %s\n" -#, fuzzy, c-format +#, c-format msgid "error changing key attribute for key %d: %s\n" -msgstr "erro ao enviar para `%s': %s\n" +msgstr "erro ao alterar o atributo de chave para a chave %d: %s\n" -#, fuzzy, c-format +#, c-format msgid "error getting card info: %s\n" -msgstr "erro ao escrever no porta-chaves secreto `%s': %s\n" +msgstr "erro ao obter informações do cartão: %s\n" -#, fuzzy, c-format -#| msgid "This command is not allowed while in %s mode.\n" +#, c-format msgid "This command is not supported by this card\n" -msgstr "Este comando não é permitido no modo %s.\n" +msgstr "Este comando não é suportado por este cartão\n" msgid "Make off-card backup of encryption key? (Y/n) " -msgstr "" +msgstr "Fazer backup fora-do-cartão da chave de cifração? (S/n) " -#, fuzzy, c-format +#, c-format msgid "Note: keys are already stored on the card!\n" -msgstr "ignorado: a chave secreta já está presente\n" +msgstr "Nota: as chaves já estão armazenadas no cartão!\n" msgid "Replace existing keys? (y/N) " -msgstr "" +msgstr "Substituir chaves existentes? (s/N) " #, c-format msgid "" @@ -1630,138 +1605,121 @@ msgid "" " PIN = '%s' Admin PIN = '%s'\n" "You should change them using the command --change-pin\n" msgstr "" +"Observe que as configurações de fábrica dos PINs são\n" +" PIN = '%s' PIN do Admin = '%s'\n" +"Você deve alterá-los usando o comando --change-pin\n" -#, fuzzy msgid "Please select the type of key to generate:\n" -msgstr "Por favor selecione o tipo de chave desejado:\n" +msgstr "Selecione o tipo de chave a ser gerada:\n" -#, fuzzy msgid " (1) Signature key\n" -msgstr "Esta assinatura expirou em %s.\n" +msgstr " (1) Chave de assinatura\n" -#, fuzzy msgid " (2) Encryption key\n" -msgstr " (%d) RSA (apenas cifragem)\n" +msgstr " (2) Chave de cifração\n" msgid " (3) Authentication key\n" -msgstr "" +msgstr " (3) Chave de autenticação\n" -#, fuzzy msgid "Please select where to store the key:\n" -msgstr "motivo da revocação: " +msgstr "Selecione onde armazenar a chave:\n" -#, fuzzy, c-format +#, c-format msgid "KEYTOCARD failed: %s\n" -msgstr "actualização falhou: %s\n" +msgstr "Falha no KEYTOCARD: %s\n" -#, fuzzy, c-format +#, c-format msgid "Note: This command destroys all keys stored on the card!\n" -msgstr "ignorado: a chave secreta já está presente\n" +msgstr "Nota: Este comando destrói todas as chaves armazenadas no cartão!\n" -#, fuzzy msgid "Continue? (y/N) " -msgstr "Realmente assinar? " +msgstr "Continuar? (s/N) " msgid "Really do a factory reset? (enter \"yes\") " -msgstr "" +msgstr "De certeza que deseja fazer um reset de fábrica? (introduzir \"sim\") " -#, fuzzy, c-format +#, c-format msgid "error for setup KDF: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro para a configuração KDF: %s\n" -#, fuzzy, c-format +#, c-format msgid "error for setup UIF: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro para a configuração UIF: %s\n" msgid "quit this menu" msgstr "sair deste menu" -#, fuzzy msgid "show admin commands" -msgstr "comandos em conflito\n" +msgstr "mostrar comandos de admin" msgid "show this help" msgstr "mostra esta ajuda" -#, fuzzy msgid "list all available data" -msgstr "Nenhuma ajuda disponível" +msgstr "listar todos os dados disponíveis" msgid "change card holder's name" -msgstr "" +msgstr "alterar o nome do titular do cartão" msgid "change URL to retrieve key" -msgstr "" +msgstr "alterar URL para buscar a chave" msgid "fetch the key specified in the card URL" -msgstr "" +msgstr "buscar a chave especificada na URL do cartão" -#, fuzzy msgid "change the login name" -msgstr "muda a data de validade" +msgstr "alterar o nome de login" -#, fuzzy msgid "change the language preferences" -msgstr "muda os valores de confiança" +msgstr "alterar as preferências de idioma" msgid "change card holder's salutation" -msgstr "" +msgstr "alterar a saudação do titular do cartão" -#, fuzzy msgid "change a CA fingerprint" -msgstr "mostra impressão digital" +msgstr "alterar uma impressão digital da CA" msgid "toggle the signature force PIN flag" -msgstr "" +msgstr "alternar a flag de PIN forçado de assinatura" -#, fuzzy msgid "generate new keys" -msgstr "gerar um novo par de chaves" +msgstr "gerar novas chaves" msgid "menu to change or unblock the PIN" -msgstr "" +msgstr "menu para alterar ou desbloquear o PIN" msgid "verify the PIN and list all data" -msgstr "" +msgstr "verificar o PIN e listar todos os dados" msgid "unblock the PIN using a Reset Code" -msgstr "" +msgstr "desbloquear o PIN usando um Código de Reset" msgid "destroy all keys and data" -msgstr "" +msgstr "destruir todas as chaves e dados" -#, fuzzy -#| msgid "|NAME|use NAME as default recipient" msgid "setup KDF for PIN authentication (on/single/off)" -msgstr "|NOME|usar NOME como destinatário por omissão" +msgstr "configurar o KDF para autenticação por PIN (on/single/off)" -#, fuzzy -#| msgid "change the ownertrust" msgid "change the key attribute" -msgstr "muda os valores de confiança" +msgstr "alterar o atributo da chave" -#, fuzzy -#| msgid "change the ownertrust" msgid "change the User Interaction Flag" -msgstr "muda os valores de confiança" +msgstr "alterar a Flag User Interaction" msgid "switch to the OpenPGP app" -msgstr "" +msgstr "mudar para a app OpenPGP" msgid "gpg/card> " -msgstr "" +msgstr "gpg/cartão> " -#, fuzzy msgid "Admin-only command\n" -msgstr "comandos em conflito\n" +msgstr "Comando só-de-Admin\n" -#, fuzzy msgid "Admin commands are allowed\n" -msgstr "comandos em conflito\n" +msgstr "Comandos de Admin são permitidos\n" -#, fuzzy msgid "Admin commands are not allowed\n" -msgstr "a escrever chave privada para `%s'\n" +msgstr "Comandos de Admin não são permitidos\n" #, c-format msgid "Invalid command (try \"help\")\n" @@ -1771,74 +1729,70 @@ msgstr "Comando inválido (tente \"help\")\n" msgid "--output doesn't work for this command\n" msgstr "--output não funciona para este comando\n" -#, fuzzy, c-format -#| msgid "can't open `%s'\n" +#, c-format msgid "can't open '%s'\n" -msgstr "impossível abrir `%s'\n" +msgstr "não é possível abrir '%s'\n" -#, fuzzy, c-format +#, c-format msgid "key \"%s\" not found: %s\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "chave \"%s\" não encontrada: %s\n" #, c-format msgid "error reading keyblock: %s\n" -msgstr "erro na leitura do bloco de chave: %s\n" +msgstr "erro ao ler keyblock: %s\n" -#, fuzzy, c-format +#, c-format msgid "key \"%s\" not found\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "chave \"%s\" não encontrada\n" -#, fuzzy, c-format +#, c-format msgid "can't do this in batch mode without \"--yes\"\n" -msgstr "impossível fazer isso em modo não-interactivo sem utilizar \"--yes\"\n" +msgstr "não é possível fazer isso no modo batch sem \"--yes\"\n" #, c-format msgid "(unless you specify the key by fingerprint)\n" -msgstr "(a não ser que escolha a chave pela sua impressão digital)\n" +msgstr "(a menos que você especifique a chave por impressão digital)\n" msgid "Note: The public primary key and all its subkeys will be deleted.\n" msgstr "" +"Nota: A chave pública principal e todas as suas subchaves serão apagadas.\n" msgid "Note: Only the shown public subkey will be deleted.\n" -msgstr "" +msgstr "Nota: Só a subchave pública mostrada será apagada.\n" msgid "Note: Only the secret part of the shown primary key will be deleted.\n" -msgstr "" +msgstr "Nota: Só a parte secreta da chave principal mostrada será apagada.\n" msgid "Note: Only the secret part of the shown subkey will be deleted.\n" -msgstr "" +msgstr "Nota: Só a parte secreta da subchave mostrada será apagada.\n" -#, fuzzy msgid "Delete this key from the keyring? (y/N) " -msgstr "Remover esta chave do porta-chaves?" +msgstr "Apagar esta chave do porta-chaves? (s/N) " -#, fuzzy msgid "This is a secret key! - really delete? (y/N) " -msgstr "Esta chave é secreta! - apagar de qualquer modo? " +msgstr "Esta é uma chave secreta! - de certeza que deseja apagar? (s/N) " -#, fuzzy, c-format +#, c-format msgid "deleting secret %s failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha ao apagar %s secreta: %s\n" msgid "key" -msgstr "key" +msgstr "chave" -#, fuzzy -#| msgid "Pubkey: " msgid "subkey" -msgstr "Chave pública: " +msgstr "subchave" #, c-format msgid "update failed: %s\n" -msgstr "actualização falhou: %s\n" +msgstr "falha ao atualizar: %s\n" #, c-format msgid "deleting keyblock failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha ao excluir o keyblock: %s\n" #, c-format msgid "ownertrust information cleared\n" -msgstr "informações de 'ownertrust' limpas\n" +msgstr "informação de ownertrust limpa\n" #, c-format msgid "there is a secret key for public key \"%s\"!\n" @@ -1846,84 +1800,78 @@ msgstr "há uma chave secreta para a chave pública \"%s\"!\n" #, c-format msgid "use option \"--delete-secret-keys\" to delete it first.\n" -msgstr "utilize a opção \"--delete-secret-keys\" para a apagar primeiro.\n" +msgstr "usar a opção \"--delete-secret-keys\" para apagá-la primeiro.\n" -#, fuzzy, c-format +#, c-format msgid "" "WARNING: forcing symmetric cipher %s (%d) violates recipient preferences\n" msgstr "" -"ao forçar a cifra simétrica %s (%d) viola as preferências do destinatário\n" +"AVISO: forçar a cifra simétrica %s (%d) viola as preferências do " +"destinatário\n" -#, fuzzy, c-format +#, c-format msgid "cipher algorithm '%s' may not be used for encryption\n" -msgstr "não pode utilizar %s enquanto estiver no modo %s\n" +msgstr "o algoritmo de cifra '%s' não pode ser usado para a cifração\n" #, c-format msgid "(use option \"%s\" to override)\n" -msgstr "" +msgstr "(use a opção \"%s\" sobrepor)\n" -#, fuzzy, c-format +#, c-format msgid "cipher algorithm '%s' may not be used in %s mode\n" -msgstr "não pode utilizar %s enquanto estiver no modo %s\n" +msgstr "o algoritmo de cifra '%s' não pode ser usado no modo %s\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: key %s is not suitable for encryption in %s mode\n" -msgstr "AVISO: \"%s\" é uma opção depreciada\n" +msgstr "AVISO: a chave %s não é adequada para a cifração no modo %s\n" #, c-format msgid "error creating passphrase: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao criar frase-secreta: %s\n" -#, fuzzy, c-format -#| msgid "can't use a symmetric ESK packet due to the S2K mode\n" +#, c-format msgid "can't use a SKESK packet due to the S2K mode\n" -msgstr "não é possível utilizar o pacote ESK simétrico devido ao modo S2K\n" +msgstr "não é possível usar um pacote SKESK devido ao modo S2K\n" -#, fuzzy, c-format +#, c-format msgid "using cipher %s.%s\n" -msgstr "assinatura falhou: %s\n" +msgstr "usando a cifra %s.%s\n" -#, fuzzy, c-format -#| msgid "`%s' already compressed\n" -msgid "'%s' already compressed\n" -msgstr "%s' já comprimido\n" - -#, fuzzy, c-format -#| msgid "WARNING: `%s' is an empty file\n" +#, c-format msgid "WARNING: '%s' is an empty file\n" -msgstr "AVISO: `%s' é um ficheiro vazio\n" +msgstr "AVISO: '%s' é um ficheiro vazio\n" -#, fuzzy, c-format +#, c-format +msgid "'%s' already compressed\n" +msgstr "'%s' já compresso\n" + +#, c-format msgid "digest algorithm '%s' may not be used in %s mode\n" -msgstr "não pode utilizar %s enquanto estiver no modo %s\n" +msgstr "o algoritmo de digest '%s' não pode ser usado no modo %s\n" -#, fuzzy, c-format -#| msgid "reading from `%s'\n" +#, c-format msgid "reading from '%s'\n" -msgstr "lendo de `%s'\n" +msgstr "lendo de '%s'\n" -#, fuzzy, c-format +#, c-format msgid "" "WARNING: forcing compression algorithm %s (%d) violates recipient " "preferences\n" msgstr "" -"ao forçar o algoritmo de compressão %s (%d) viola as preferências do " +"AVISO: forçar o algoritmo de compressão %s (%d) viola as preferências do " "destinatário\n" -#, fuzzy, c-format -#| msgid "%s/%s encrypted for: \"%s\"\n" +#, c-format msgid "%s/%s.%s encrypted for: \"%s\"\n" -msgstr "%s/%s cifrado para: \"%s\"\n" +msgstr "%s/%s.%s cifrado para: \"%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 "não pode utilizar %s enquanto estiver no modo %s\n" +msgstr "a opção '%s' não pode ser usada no modo %s\n" -#, fuzzy, c-format -#| msgid "%s encrypted data\n" +#, c-format msgid "%s encrypted data\n" -msgstr "dados cifrados com %s\n" +msgstr "%s dados cifrados\n" #, c-format msgid "encrypted with unknown algorithm %d\n" @@ -1933,142 +1881,126 @@ msgstr "cifrado com algoritmo desconhecido %d\n" msgid "" "WARNING: message was encrypted with a weak key in the symmetric cipher.\n" msgstr "" -"AVISO: A mensagem foi cifrada com uma chave fraca na cifragem simétrica.\n" +"AVISO: A mensagem foi cifrada com uma chave fraca na cifra simétrica.\n" #, c-format msgid "problem handling encrypted packet\n" -msgstr "problema ao tratar pacote cifrado\n" +msgstr "problema ao lidar com pacote cifrado\n" -#, fuzzy msgid "export signatures that are marked as local-only" -msgstr "" -"\n" -"A assinatura será marcada como não-revocável.\n" +msgstr "exportar assinaturas marcadas como local-only" msgid "export attribute user IDs (generally photo IDs)" -msgstr "" +msgstr "exportar IDs de utilizador de atributo (geralmente IDs fotográficas)" msgid "export revocation keys marked as \"sensitive\"" -msgstr "" +msgstr "exportar chaves de revogação marcadas como \"sensitivo\"" -#, fuzzy msgid "remove unusable parts from key during export" -msgstr "chave secreta não utilizável" +msgstr "remover partes inutilizáveis da chave durante a exportação" msgid "remove as much as possible from key during export" -msgstr "" +msgstr "remover o máximo possível da chave durante a exportação" -#, fuzzy -#| msgid "generate a revocation certificate" msgid "export only revocation certificates" -msgstr "gerar um certificado de revogação" +msgstr "exportar apenas certificados de revogação" msgid "use the GnuPG key backup format" -msgstr "" +msgstr "usar o formato de backup de chave GnuPG" -#, fuzzy msgid "export secret keys using the GnuPG format" -msgstr "a escrever chave privada para `%s'\n" +msgstr "exportar chaves secretas usando o formato GnuPG" -#, fuzzy -#| msgid "%s: skipped: %s\n" msgid " - skipped" -msgstr "%s: ignorado: %s\n" +msgstr " - ignorada" -#, fuzzy, c-format -#| msgid "writing to `%s'\n" +#, c-format msgid "writing to '%s'\n" -msgstr "a escrever para `%s'\n" +msgstr "escrevendo em '%s'\n" -#, fuzzy, c-format +#, c-format msgid "key %s: key material on-card - skipped\n" -msgstr "chave %08lX: assintura da subchave no local errado - ignorado\n" +msgstr "chave %s: material da chave no cartão - ignorada\n" -#, fuzzy, c-format +#, c-format msgid "exporting secret keys not allowed\n" -msgstr "a escrever chave privada para `%s'\n" +msgstr "exportação de chaves secretas não permitida\n" -#, fuzzy, c-format +#, c-format msgid "key %s: PGP 2.x style key - skipped\n" -msgstr "chave %08lX: tipo PGP 2.x - ignorada\n" +msgstr "chave %s: chave tipo PGP 2.x - ignorada\n" #, c-format msgid "WARNING: nothing exported\n" msgstr "AVISO: nada exportado\n" -#, fuzzy msgid "[User ID not found]" -msgstr "[Utilizador não encontrado]" +msgstr "[ID de utilizador não encontrada]" -#, fuzzy, c-format +#, c-format msgid "automatically retrieved '%s' via %s\n" -msgstr "erro ao criar `%s': %s\n" +msgstr "'%s' obtido automaticamente via %s\n" -#, fuzzy, c-format +#, c-format msgid "error retrieving '%s' via %s: %s\n" -msgstr "erro ao criar `%s': %s\n" +msgstr "erro ao obter '%s' via %s: %s\n" -#, fuzzy msgid "No fingerprint" -msgstr "mostra impressão digital" +msgstr "Sem impressão digital" #, c-format msgid "checking for a fresh copy of an expired key via %s\n" -msgstr "" +msgstr "verificando se há uma nova cópia de uma chave expirada via %s\n" -#, fuzzy, c-format +#, c-format msgid "secret key \"%s\" not found: %s\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "chave secreta \"%s\" não encontrada: %s\n" -#, fuzzy, c-format +#, c-format msgid "(check argument of option '%s')\n" -msgstr "opções de importação inválidas\n" +msgstr "(verifica argumento da opção '%s')\n" -#, fuzzy, c-format -#| msgid "|NAME|use NAME as default secret key" +#, c-format msgid "Warning: not using '%s' as default key: %s\n" -msgstr "|NOME|usar NOME como chave secreta por omissão" +msgstr "Aviso: a não usar '%s' como chave pré-definida: %s\n" -#, fuzzy, c-format -#| msgid "|NAME|use NAME as default secret key" +#, c-format msgid "using \"%s\" as default secret key for signing\n" -msgstr "|NOME|usar NOME como chave secreta por omissão" +msgstr "a usar \"%s\" como chave secreta pré-definida para assinatura\n" #, c-format msgid "all values passed to '%s' ignored\n" -msgstr "" +msgstr "todos os valores passados para '%s' ignorados\n" -#, fuzzy, c-format +#, c-format msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n" -msgstr "Chave inválida %08lX tornada válida por --allow-non-selfsigned-uid\n" +msgstr "Chave inválida %s tornada válida por --allow-non-selfsigned-uid\n" -#, fuzzy, c-format +#, c-format msgid "using subkey %s instead of primary key %s\n" -msgstr "usando chave secundária %08lX ao invés de chave primária %08lX\n" +msgstr "usando a subchave %s em vez da chave principal %s\n" -#, fuzzy, c-format +#, c-format msgid "valid values for option '%s':\n" -msgstr "opções de importação inválidas\n" +msgstr "valores válidos para a opção '%s':\n" -#, fuzzy msgid "make a signature" -msgstr "fazer uma assinatura separada" +msgstr "fazer uma assinatura" -#, fuzzy msgid "make a clear text signature" -msgstr "|[ficheiro]|fazer uma assinatura em texto puro" +msgstr "fazer uma assinatura de texto claro" msgid "make a detached signature" -msgstr "fazer uma assinatura separada" +msgstr "fazer uma assinatura desanexada" msgid "encrypt data" msgstr "cifrar dados" msgid "encryption only with symmetric cipher" -msgstr "cifrar apenas com cifra simétrica" +msgstr "cifração apenas com a cifra simétrica" msgid "decrypt data (default)" -msgstr "decifrar dados (acção por omissão)" +msgstr "decifrar dados (ação pré-definida)" msgid "verify a signature" msgstr "verificar uma assinatura" @@ -2079,9 +2011,8 @@ msgstr "listar as chaves" msgid "list keys and signatures" msgstr "listar as chaves e as assinaturas" -#, fuzzy msgid "list and check key signatures" -msgstr "verificar as assinaturas das chaves" +msgstr "listar e verificar assinaturas de chave" msgid "list keys and fingerprints" msgstr "listar as chaves e as impressões digitais" @@ -2092,28 +2023,20 @@ msgstr "listar as chaves secretas" msgid "generate a new key pair" msgstr "gerar um novo par de chaves" -#, fuzzy -#| msgid "generate a new key pair" msgid "quickly generate a new key pair" -msgstr "gerar um novo par de chaves" +msgstr "gerar rapidamente um novo par de chaves" -#, fuzzy -#| msgid "generate a new key pair" msgid "quickly add a new user-id" -msgstr "gerar um novo par de chaves" +msgstr "adicionar rapidamente um novo user-id" -#, fuzzy -#| msgid "generate a new key pair" msgid "quickly revoke a user-id" -msgstr "gerar um novo par de chaves" +msgstr "revogar rapidamente um user-id" -#, fuzzy -#| msgid "generate a new key pair" msgid "quickly set a new expiration date" -msgstr "gerar um novo par de chaves" +msgstr "definir rapidamente uma nova data de expiração" msgid "full featured key pair generation" -msgstr "" +msgstr "geração completa de pares de chaves" msgid "generate a revocation certificate" msgstr "gerar um certificado de revogação" @@ -2124,20 +2047,14 @@ msgstr "remover chaves do porta-chaves público" msgid "remove keys from the secret keyring" msgstr "remover chaves do porta-chaves secreto" -#, fuzzy -#| msgid "sign a key" msgid "quickly sign a key" -msgstr "assinar uma chave" +msgstr "assinar rapidamente uma chave" -#, fuzzy -#| msgid "sign a key locally" msgid "quickly sign a key locally" -msgstr "assinar uma chave localmente" +msgstr "assinar rapidamente uma chave localmente" -#, fuzzy -#| msgid "generate a new key pair" msgid "quickly revoke a key signature" -msgstr "gerar um novo par de chaves" +msgstr "revogar rapidamente uma assinatura de chave" msgid "sign a key" msgstr "assinar uma chave" @@ -2148,9 +2065,8 @@ msgstr "assinar uma chave localmente" msgid "sign or edit a key" msgstr "assinar ou editar uma chave" -#, fuzzy msgid "change a passphrase" -msgstr "muda a frase secreta" +msgstr "alterar uma frase-secreta" msgid "export keys" msgstr "exportar chaves" @@ -2162,118 +2078,104 @@ msgid "import keys from a keyserver" msgstr "importar chaves de um servidor de chaves" msgid "search for keys on a keyserver" -msgstr "procurar chaves num servidor de chaves" +msgstr "pesquisar chaves num servidor de chaves" msgid "update all keys from a keyserver" -msgstr "actualizar todas as chaves a partir de um servidor de chaves" +msgstr "atualizar todas as chaves de um servidor de chaves" msgid "import/merge keys" msgstr "importar/fundir chaves" msgid "print the card status" -msgstr "" +msgstr "mostrar o status do cartão" msgid "change data on a card" -msgstr "" +msgstr "alterar dados de um cartão" msgid "change a card's PIN" -msgstr "" +msgstr "alterar o PIN de um cartão" msgid "update the trust database" -msgstr "actualizar a base de dados de confiança" +msgstr "atualizar a base de dados da confiança" -#, fuzzy msgid "print message digests" -msgstr "|algo [ficheiros]|imprimir \"digests\" de mensagens" +msgstr "mostrar digests de mensagens" msgid "run in server mode" -msgstr "" +msgstr "executar no modo de servidor" msgid "|VALUE|set the TOFU policy for a key" -msgstr "" +msgstr "|VALUE|definir a política de TOFU para uma chave" msgid "|NAME|use NAME as default secret key" -msgstr "|NOME|usar NOME como chave secreta por omissão" +msgstr "|NAME|usar NAME como chave secreta pré-definida" -#, fuzzy msgid "|NAME|encrypt to user ID NAME as well" -msgstr "|NOME|cifrar para NOME" +msgstr "|NAME|cifrar também para ID de utilizador NAME" msgid "|SPEC|set up email aliases" -msgstr "" +msgstr "|SPEC|configurar aliases de email" msgid "use strict OpenPGP behavior" -msgstr "" +msgstr "usar estritamente comportamento OpenPGP" msgid "do not make any changes" -msgstr "não fazer alterações" +msgstr "não fazer quaisquer alterações" msgid "prompt before overwriting" -msgstr "perguntar antes de sobrepôr" +msgstr "perguntar antes de sobrescrever" msgid "Options controlling the input" -msgstr "" +msgstr "Opções que controlam a entrada" msgid "Options controlling the output" -msgstr "" +msgstr "Opções que controlam a saída" msgid "create ascii armored output" -msgstr "criar saída com armadura ascii" +msgstr "criar saída blindada ASCII" -#, fuzzy msgid "|FILE|write output to FILE" -msgstr "|FICHEIRO|carregar módulo de extensão FICHEIRO" +msgstr "|FILE|escrever saída em FILE" msgid "use canonical text mode" -msgstr "usar modo de texto canônico" +msgstr "usar modo de texto canónico" -#, fuzzy msgid "|N|set compress level to N (0 disables)" -msgstr "" -"|N|estabelecer nível de compressão N\n" -"(0 desactiva)" +msgstr "|N|definir nível de compressão para N (0 desabilita)" msgid "Options controlling key import and export" -msgstr "" +msgstr "Opções que controlam a importação e exportação de chaves" msgid "|MECHANISMS|use MECHANISMS to locate keys by mail address" msgstr "" +"|MECHANISMS|usar MECHANISMS para localizar chaves por endereço de email" -#, fuzzy -#| msgid "import keys from a keyserver" msgid "import missing key from a signature" -msgstr "importar chaves de um servidor de chaves" +msgstr "importar chave ausente a partir de uma assinatura" -#, fuzzy msgid "include the public key in signatures" -msgstr "verificar as assinaturas das chaves" +msgstr "incluir a chave pública nas assinaturas" msgid "disable all access to the dirmngr" -msgstr "" +msgstr "desabilitar todo o acesso ao dirmngr" msgid "Options controlling key listings" -msgstr "" +msgstr "Opções que controlam as listagens de chaves" -#, fuzzy -#| msgid "list secret keys" msgid "Options to specify keys" -msgstr "listar as chaves secretas" +msgstr "Opções para especificar chaves" -#, fuzzy msgid "|USER-ID|encrypt for USER-ID" -msgstr "|NOME|cifrar para NOME" +msgstr "|USER-ID|cifrar para USER-ID" -#, fuzzy msgid "|USER-ID|use USER-ID to sign or decrypt" -msgstr "" -"usar este identificador de utilizador para\n" -"assinar ou decifrar" +msgstr "|USER-ID|usar USER-ID para assinar ou decifrar" msgid "Options for unattended use" -msgstr "" +msgstr "Opções para uso autónomo" msgid "Other options" -msgstr "" +msgstr "Outras opções" msgid "" "@\n" @@ -2282,16 +2184,6 @@ msgstr "" "@\n" "(Veja a página man para uma lista completa de comandos e opções)\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" @@ -2306,29 +2198,22 @@ msgstr "" "Exemplos:\n" "\n" " -se -r Bob [ficheiro] assinar e cifrar para o utilizador Bob\n" -" --clear-sign [ficheiro] criar uma assinatura em texto puro\n" -" --detach-sign [ficheiro] criar uma assinatura separada\n" +" --clear-sign [ficheiro] fazer uma assinatura de texto claro\n" +" --detach-sign [ficheiro] fazer uma assinatura desanexada\n" " --list-keys [nomes] mostrar chaves\n" " --fingerprint [nomes] mostrar impressões digitais\n" -#, fuzzy -#| msgid "Usage: gpg [options] [files] (-h for help)" msgid "Usage: @GPG@ [options] [files] (-h for help)" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "Uso: @GPG@ [opções] [ficheiros] (-h para ajuda)" -#, fuzzy -#| msgid "" -#| "Syntax: gpg [options] [files]\n" -#| "sign, check, encrypt or decrypt\n" -#| "default operation depends on the input data\n" msgid "" "Syntax: @GPG@ [options] [files]\n" "Sign, check, encrypt or decrypt\n" "Default operation depends on the input data\n" msgstr "" -"Sintaxe: gpg [opções] [ficheiros]\n" -"assina, verifica, cifra ou decifra\n" -"a operação por omissão depende dos dados de entrada\n" +"Sintaxe: @GPG@ [opções] [ficheiros]\n" +"Assinar, verificar, cifrar, ou decifrar\n" +"A operação pré-definida depende dos dados de entrada\n" msgid "" "\n" @@ -2344,175 +2229,175 @@ msgid "Cipher: " msgstr "Cifra: " msgid "Hash: " -msgstr "Dispersão: " +msgstr "Hash: " msgid "Compression: " msgstr "Compressão: " -#, fuzzy, c-format +#, c-format msgid "usage: %s [options] %s\n" -msgstr "uso: gpg [opções] " +msgstr "uso: %s [opções] %s\n" #, c-format msgid "conflicting commands\n" msgstr "comandos em conflito\n" -#, fuzzy, c-format +#, c-format msgid "no = sign found in group definition '%s'\n" -msgstr "nenhum sinal = encontrada na definição de grupo \"%s\"\n" +msgstr "nenhum sinal '=' encontrado na definição de grupo '%s'\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unsafe ownership on homedir '%s'\n" -msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" +msgstr "AVISO: ownership inseguro na homedir '%s'\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unsafe ownership on configuration file '%s'\n" -msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" +msgstr "AVISO: ownership inseguro no ficheiro de configuração '%s'\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unsafe ownership on extension '%s'\n" -msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" +msgstr "AVISO: ownership inseguro na extensão '%s'\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unsafe permissions on homedir '%s'\n" -msgstr "AVISO: permissões pouco seguras em %s \"%s\"\n" +msgstr "AVISO: permissões inseguras na homedir '%s'\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unsafe permissions on configuration file '%s'\n" -msgstr "AVISO: permissões pouco seguras em %s \"%s\"\n" +msgstr "AVISO: permissões inseguras no ficheiro de configuração '%s'\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unsafe permissions on extension '%s'\n" -msgstr "AVISO: permissões pouco seguras em %s \"%s\"\n" +msgstr "AVISO: permissões inseguras na extensão '%s'\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unsafe enclosing directory ownership on homedir '%s'\n" -msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" +msgstr "AVISO: ownership inseguro da pasta envolvente a homedir '%s'\n" -#, fuzzy, c-format +#, c-format msgid "" "WARNING: unsafe enclosing directory ownership on configuration file '%s'\n" -msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" +msgstr "" +"AVISO: ownership inseguro da pasta envolvente ao ficheiro de configuração " +"'%s'\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unsafe enclosing directory ownership on extension '%s'\n" -msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" +msgstr "AVISO: ownership inseguro da pasta envolvente à extensão '%s'\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unsafe enclosing directory permissions on homedir '%s'\n" -msgstr "AVISO: permissões pouco seguras em %s \"%s\"\n" +msgstr "AVISO: permissões inseguras da pasta envolvente a homedir '%s'\n" -#, fuzzy, c-format +#, c-format msgid "" "WARNING: unsafe enclosing directory permissions on configuration file '%s'\n" -msgstr "AVISO: permissões pouco seguras em %s \"%s\"\n" +msgstr "" +"AVISO: permissões inseguras da pasta envolvente ao ficheiro de configuração " +"'%s'\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unsafe enclosing directory permissions on extension '%s'\n" -msgstr "AVISO: permissões pouco seguras em %s \"%s\"\n" +msgstr "AVISO: permissões inseguras da pasta envolvente à extensão '%s'\n" -#, fuzzy, c-format +#, c-format msgid "unknown configuration item '%s'\n" -msgstr "criado um novo ficheiro de configuração `%s'\n" +msgstr "item de configuração '%s' desconhecido\n" msgid "display photo IDs during key listings" -msgstr "" +msgstr "exibir IDs fotográficas durante as listagens de chaves" -#, fuzzy msgid "show key usage information during key listings" -msgstr "Nenhuma assinatura correspondente no porta-chaves secreto\n" +msgstr "" +"mostrar informação de utilização da chave durante as listagens de chaves" msgid "show policy URLs during signature listings" -msgstr "" +msgstr "mostrar URLs de política durante listagens de assinaturas" -#, fuzzy msgid "show all notations during signature listings" -msgstr "Nenhuma assinatura correspondente no porta-chaves secreto\n" +msgstr "mostrar todas as anotações durante as listagens de assinaturas" msgid "show IETF standard notations during signature listings" -msgstr "" +msgstr "mostrar notações da norma IETF durante listagens de assinaturas" msgid "show user-supplied notations during signature listings" -msgstr "" +msgstr "mostrar anotações user-supplied durante as listagens de assinaturas" -#, fuzzy msgid "show preferred keyserver URLs during signature listings" -msgstr "a URL de política de assinatura dada é inválida\n" +msgstr "" +"mostrar URLs de servidor de chaves preferenciais durante listagens de " +"assinaturas" msgid "show user ID validity during key listings" -msgstr "" +msgstr "mostrar a validade da ID de utilizador durante as listagens de chaves" msgid "show revoked and expired user IDs in key listings" -msgstr "" +msgstr "mostrar IDs de utilizador revogadas e expiradas em listagens de chaves" msgid "show revoked and expired subkeys in key listings" -msgstr "" +msgstr "mostrar subchaves revogadas e expiradas em listagens de chaves" -#, fuzzy msgid "show signatures with invalid algorithms during signature listings" -msgstr "Nenhuma assinatura correspondente no porta-chaves secreto\n" +msgstr "" +"mostrar assinaturas com algoritmos inválidos durante as listagens de " +"assinaturas" -#, fuzzy msgid "show the keyring name in key listings" -msgstr "mostrar em que porta-chave a chave está" +msgstr "mostrar o nome do porta-chaves nas listagens de chaves" -#, fuzzy msgid "show expiration dates during signature listings" -msgstr "Nenhuma assinatura correspondente no porta-chaves secreto\n" +msgstr "mostrar datas de expiração durante as listagens de assinaturas" -#, fuzzy -#| msgid "set preference list" msgid "show preferences" -msgstr "configurar lista de preferências" +msgstr "mostrar preferências" -#, fuzzy, c-format +#, c-format msgid "unknown TOFU policy '%s'\n" -msgstr "destinatário por omissão desconhecido `%s'\n" +msgstr "política TOFU desconhecida '%s'\n" #, c-format msgid "(use \"help\" to list choices)\n" -msgstr "" +msgstr "(usar \"help\" para listar opções)\n" #, c-format msgid "This command is not allowed while in %s mode.\n" msgstr "Este comando não é permitido no modo %s.\n" -#, fuzzy, c-format -#| msgid "NOTE: %s is not for normal use!\n" +#, c-format msgid "Note: %s is not for normal use!\n" -msgstr "NOTA: %s não é para uso normal!\n" +msgstr "Nota: %s não é para o uso normal!\n" -#, fuzzy, c-format +#, c-format msgid "'%s' is not a valid signature expiration\n" -msgstr "%s não é um conjunto de caracteres válido\n" +msgstr "'%s' não é uma expiração de assinatura válida\n" -#, fuzzy, c-format +#, c-format msgid "\"%s\" is not a proper mail address\n" -msgstr "Endereço eletrónico inválido\n" +msgstr "\"%s\" não é um endereço de email correto\n" -#, fuzzy, c-format +#, c-format msgid "invalid pinentry mode '%s'\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "modo de pinentry inválido '%s'\n" -#, fuzzy, c-format +#, c-format msgid "invalid request origin '%s'\n" -msgstr "opções de importação inválidas\n" +msgstr "origem de pedido inválida '%s'\n" -#, fuzzy, c-format +#, c-format msgid "'%s' is not a valid character set\n" -msgstr "%s não é um conjunto de caracteres válido\n" +msgstr "'%s' não é um set de caracteres válido\n" -#, fuzzy, c-format +#, c-format msgid "could not parse keyserver URL\n" -msgstr "não consegui processar a URI do servidor de chaves\n" +msgstr "não foi possível processar a URL do servidor de chaves\n" -#, fuzzy, c-format +#, c-format msgid "%s:%d: invalid keyserver options\n" -msgstr "%s:%d: opções de exportação inválidas\n" +msgstr "%s:%d: opções inválidas do servidor de chaves\n" -#, fuzzy, c-format +#, c-format msgid "invalid keyserver options\n" -msgstr "opções de exportação inválidas\n" +msgstr "Opções inválidas do servidor de chaves\n" #, c-format msgid "%s:%d: invalid import options\n" @@ -2522,9 +2407,9 @@ msgstr "%s:%d: opções de importação inválidas\n" msgid "invalid import options\n" msgstr "opções de importação inválidas\n" -#, fuzzy, c-format +#, c-format msgid "invalid filter option: %s\n" -msgstr "opções de importação inválidas\n" +msgstr "opção de filtro inválida: %s\n" #, c-format msgid "%s:%d: invalid export options\n" @@ -2534,72 +2419,73 @@ msgstr "%s:%d: opções de exportação inválidas\n" msgid "invalid export options\n" msgstr "opções de exportação inválidas\n" -#, fuzzy, c-format +#, c-format msgid "%s:%d: invalid list options\n" -msgstr "%s:%d: opções de importação inválidas\n" +msgstr "%s:%d: opções de listagem inválidas\n" -#, fuzzy, c-format +#, c-format msgid "invalid list options\n" -msgstr "opções de importação inválidas\n" +msgstr "opções de lista inválidas\n" msgid "display photo IDs during signature verification" -msgstr "" +msgstr "exibir IDs fotográficas durante a verificação da assinatura" msgid "show policy URLs during signature verification" -msgstr "" +msgstr "mostrar URLs de política durante a verificação da assinatura" -#, fuzzy msgid "show all notations during signature verification" -msgstr "%s não é um conjunto de caracteres válido\n" +msgstr "mostrar todas as anotações durante a verificação da assinatura" msgid "show IETF standard notations during signature verification" -msgstr "" +msgstr "mostrar notações da norma IETF durante a verificação da assinatura" msgid "show user-supplied notations during signature verification" -msgstr "" +msgstr "mostrar anotações user-supplied durante a verificação da assinatura" -#, fuzzy msgid "show preferred keyserver URLs during signature verification" -msgstr "a URL de política de assinatura dada é inválida\n" +msgstr "" +"mostrar URLs preferenciais do servidor de chaves durante a verificação da " +"assinatura" -#, fuzzy msgid "show user ID validity during signature verification" -msgstr "%s não é um conjunto de caracteres válido\n" +msgstr "" +"mostrar a validade da ID de utilizador durante a verificação da assinatura" msgid "show revoked and expired user IDs in signature verification" msgstr "" +"mostrar IDs de utilizador revogadas e expiradas na verificação da assinatura" -#, fuzzy msgid "show only the primary user ID in signature verification" -msgstr "%s não é um conjunto de caracteres válido\n" +msgstr "" +"mostrar apenas a ID de utilizador principal na verificação da assinatura" -#, fuzzy, c-format +#, c-format msgid "%s:%d: invalid verify options\n" -msgstr "%s:%d: opções de exportação inválidas\n" +msgstr "%s:%d: opções de verificação inválidas\n" -#, fuzzy, c-format +#, c-format msgid "invalid verify options\n" -msgstr "opções de exportação inválidas\n" +msgstr "opções de verificação inválidas\n" #, c-format msgid "unable to set exec-path to %s\n" -msgstr "não foi possível alterar o exec-path para %s\n" +msgstr "incapaz de definir exec-path para %s\n" -#, fuzzy, c-format +#, c-format msgid "%s:%d: invalid auto-key-locate list\n" -msgstr "%s:%d: opções de exportação inválidas\n" +msgstr "%s:%d: lista auto-key-locate inválida\n" #, c-format msgid "invalid auto-key-locate list\n" -msgstr "" +msgstr "lista auto-key-locate inválida\n" -#, fuzzy, c-format +#, c-format msgid "invalid argument for option \"%.50s\"\n" -msgstr "opções de importação inválidas\n" +msgstr "argumento inválido para a opção \"%.50s\"\n" #, c-format msgid "WARNING: program may create a core file!\n" -msgstr "AVISO: O programa pode criar um ficheiro core!\n" +msgstr "AVISO: o programa poderá criar um ficheiro core!\n" #, c-format msgid "WARNING: %s overrides %s\n" @@ -2615,23 +2501,23 @@ msgstr "%s não faz sentido com %s!\n" #, c-format msgid "WARNING: running with faked system time: " -msgstr "" +msgstr "AVISO: a correr com tempo de sistema falsificado: " -#, fuzzy, c-format +#, c-format msgid "will not run with insecure memory due to %s\n" -msgstr "a escrever chave privada para `%s'\n" +msgstr "não correrei com memória insegura devido a %s\n" #, c-format msgid "selected cipher algorithm is invalid\n" -msgstr "o algoritmo de cifragem selecionado é inválido\n" +msgstr "o algoritmo de cifra selecionado é inválido\n" -#, fuzzy, c-format +#, c-format msgid "selected compression algorithm is invalid\n" -msgstr "o algoritmo de cifragem selecionado é inválido\n" +msgstr "o algoritmo de compressão selecionado é inválido\n" #, c-format msgid "selected certification digest algorithm is invalid\n" -msgstr "o algoritmo de \"digest\" de certificação selecionado é inválido\n" +msgstr "o algoritmo selecionado de digest da certificação é inválido\n" #, c-format msgid "completes-needed must be greater than 0\n" @@ -2641,289 +2527,276 @@ msgstr "completes-needed deve ser maior que 0\n" msgid "marginals-needed must be greater than 1\n" msgstr "marginals-needed deve ser maior que 1\n" -#, fuzzy, c-format +#, c-format msgid "max-cert-depth must be in the range from 1 to 255\n" -msgstr "max-cert-depth deve estar na entre 1 e 255\n" +msgstr "max-cert-depth deve estar na faixa entre 1 a 255\n" -#, fuzzy, c-format +#, c-format msgid "invalid default-cert-level; must be 0, 1, 2, or 3\n" -msgstr "nível de verificação por omissão inválido: deve ser 0, 1, 2 ou 3\n" +msgstr "default-cert-level inválido; deve ser 0, 1, 2, ou 3\n" -#, fuzzy, c-format +#, c-format msgid "invalid min-cert-level; must be 1, 2, or 3\n" -msgstr "nível de verificação por omissão inválido: deve ser 0, 1, 2 ou 3\n" +msgstr "min-cert-level inválido; deve ser 1, 2, ou 3\n" -#, fuzzy, c-format -#| msgid "NOTE: simple S2K mode (0) is strongly discouraged\n" +#, c-format msgid "Note: simple S2K mode (0) is strongly discouraged\n" -msgstr "NOTA: o modo S2K simples (0) não é recomendável\n" +msgstr "Nota: o modo S2K simples (0) é fortemente desencorajado\n" #, c-format msgid "invalid S2K mode; must be 0, 1 or 3\n" -msgstr "modo S2K inválido: deve ser 0, 1 ou 3\n" +msgstr "modo S2K inválido: deve ser 0, 1, ou 3\n" #, c-format msgid "invalid default preferences\n" -msgstr "preferências por omissão inválidas\n" +msgstr "preferências pré-definidas inválidas\n" #, c-format msgid "invalid personal cipher preferences\n" -msgstr "preferências pessoais de cifra inválidas\n" +msgstr "preferências pessoais da cifra inválidas\n" #, c-format msgid "invalid personal digest preferences\n" -msgstr "preferências pessoais de 'digest' inválidas\n" +msgstr "preferências pessoais de digest inválidas\n" #, c-format msgid "invalid personal compress preferences\n" -msgstr "preferências pessoais de compressão inválidas\n" +msgstr "preferências pessoais da compressão inválidas\n" -#, fuzzy, c-format -#| msgid "keysize invalid; using %u bits\n" +#, c-format msgid "chunk size invalid - using %d\n" -msgstr "tamanho de chave inválido; a utilizar %u bits\n" +msgstr "tamanho do chunk inválido - usando %d\n" -#, fuzzy, c-format +#, c-format msgid "%s does not yet work with %s\n" -msgstr "%s não faz sentido com %s!\n" +msgstr "%s ainda não funciona com %s\n" -#, fuzzy, c-format +#, c-format msgid "compression algorithm '%s' may not be used in %s mode\n" -msgstr "não pode utilizar %s enquanto estiver no modo %s\n" +msgstr "o algoritmo de compressão '%s' não pode ser usado no modo %s\n" #, c-format msgid "failed to initialize the TrustDB: %s\n" -msgstr "falha ao inicializar a base de dados de confiança: %s\n" +msgstr "falha ao inicializar a TrustDB: %s\n" #, c-format msgid "WARNING: recipients (-r) given without using public key encryption\n" msgstr "" -"AVISO: destinatários (-r) dados sem utilizar uma cifra de chave pública\n" +"AVISO: destinatários (-r) fornecidos sem usar cifração de chave pública\n" -#, fuzzy, c-format +#, c-format msgid "symmetric encryption of '%s' failed: %s\n" -msgstr "decifragem falhou: %s\n" +msgstr "falha na cifração simétrica de '%s': %s\n" #, c-format msgid "you cannot use --symmetric --encrypt with --s2k-mode 0\n" -msgstr "" +msgstr "você não pode usar --symmetric --encrypt com --s2k-mode 0\n" -#, fuzzy, c-format +#, c-format msgid "you cannot use --symmetric --encrypt in %s mode\n" -msgstr "não pode utilizar %s enquanto estiver no modo %s\n" +msgstr "você não pode usar --symmetric --encrypt no modo %s\n" #, c-format msgid "you cannot use --symmetric --sign --encrypt with --s2k-mode 0\n" -msgstr "" +msgstr "você não pode usar --symmetric --sign --encrypt com --s2k-mode 0\n" -#, fuzzy, c-format +#, c-format msgid "you cannot use --symmetric --sign --encrypt in %s mode\n" -msgstr "não pode utilizar %s enquanto estiver no modo %s\n" +msgstr "você não pode usar --symmetric --sign --encrypt no modo %s\n" -#, fuzzy, c-format +#, c-format msgid "keyserver send failed: %s\n" -msgstr "A geração de chaves falhou: %s\n" +msgstr "falhou o envio ao servidor de chaves: %s\n" -#, fuzzy, c-format +#, c-format msgid "keyserver receive failed: %s\n" -msgstr "A geração de chaves falhou: %s\n" +msgstr "falhou o receber do servidor de chaves: %s\n" -#, fuzzy, c-format +#, c-format msgid "key export failed: %s\n" -msgstr "A geração de chaves falhou: %s\n" +msgstr "falhou a exportação de chaves: %s\n" -#, fuzzy, c-format +#, c-format msgid "export as ssh key failed: %s\n" -msgstr "A geração de chaves falhou: %s\n" +msgstr "falhou a exportação como chave ssh: %s\n" -#, fuzzy, c-format +#, c-format msgid "keyserver search failed: %s\n" -msgstr "A geração de chaves falhou: %s\n" +msgstr "falhou a pesquisa no servidor de chaves: %s\n" -#, fuzzy, c-format +#, c-format msgid "keyserver refresh failed: %s\n" -msgstr "actualização da chave secreta falhou: %s\n" +msgstr "falhou a atualização do servidor de chaves: %s\n" #, c-format msgid "dearmoring failed: %s\n" -msgstr "retirada de armadura falhou: %s\n" +msgstr "falhou ao desblindar: %s\n" #, c-format msgid "enarmoring failed: %s\n" -msgstr "criação de armadura falhou: %s\n" +msgstr "falhou ao blindar: %s\n" -#, fuzzy, c-format -#| msgid "invalid hash algorithm `%s'\n" +#, c-format msgid "invalid hash algorithm '%s'\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "algoritmo de hash inválido '%s'\n" -#, fuzzy, c-format +#, c-format msgid "error parsing key specification '%s': %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao processar a especificação de chave '%s': %s\n" #, c-format msgid "'%s' does not appear to be a valid key ID, fingerprint or keygrip\n" msgstr "" +"'%s' não parece ser uma ID de chave, impressão digital, ou keygrip, válidas\n" #, c-format msgid "WARNING: no command supplied. Trying to guess what you mean ...\n" msgstr "" +"AVISO: nenhum comando fornecido. A tentar adivinhar o que você quer " +"dizer...\n" #, c-format msgid "Go ahead and type your message ...\n" -msgstr "Digite a sua mensagem ...\n" +msgstr "Esteja à vontade para digitar a sua mensagem ...\n" #, c-format msgid "the given certification policy URL is invalid\n" -msgstr "a URL de política de certificação dada é inválida\n" +msgstr "a URL da política de certificação fornecida é inválida\n" #, c-format msgid "the given signature policy URL is invalid\n" -msgstr "a URL de política de assinatura dada é inválida\n" +msgstr "a URL de política de assinatura fornecida é inválida\n" -#, fuzzy, c-format +#, c-format msgid "the given preferred keyserver URL is invalid\n" -msgstr "a URL de política de assinatura dada é inválida\n" +msgstr "a URL fornecida do servidor de chaves preferencial é inválida\n" -#, fuzzy msgid "|FILE|take the keys from the keyring FILE" -msgstr "Remover esta chave do porta-chaves?" +msgstr "|FILE|tome as chaves do porta-chaves FILE" -#, fuzzy msgid "make timestamp conflicts only a warning" -msgstr "conflito de \"timestamp\"" +msgstr "tornar os conflitos de timestamp apenas um aviso" msgid "|FD|write status info to this FD" -msgstr "" -"|DF|escrever informações de estado para o\n" -"descritor de ficheiro DF" +msgstr "|FD|escrever informações de status para este FD" msgid "|ALGO|reject signatures made with ALGO" -msgstr "" +msgstr "|ALGO|rejeitar assinaturas feitas com ALGO" -#, fuzzy msgid "Usage: gpgv [options] [files] (-h for help)" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "Uso: gpgv [opções] [ficheiros] (-h para ajuda)" msgid "" "Syntax: gpgv [options] [files]\n" "Check signatures against known trusted keys\n" msgstr "" +"Sintaxe: gpgv [opções] [ficheiros]\n" +"Verificar assinaturas em relação a chaves confiáveis conhecidas\n" msgid "No help available" msgstr "Nenhuma ajuda disponível" -#, fuzzy, c-format -#| msgid "No help available for `%s'" +#, c-format msgid "No help available for '%s'" -msgstr "Nenhuma ajuda disponível para `%s'" +msgstr "Nenhuma ajuda disponível para '%s'" msgid "import signatures that are marked as local-only" -msgstr "" +msgstr "importar assinaturas marcadas como local-only" msgid "repair damage from the pks keyserver during import" -msgstr "" +msgstr "reparar os danos do servidor de chaves pks durante a importação" -#, fuzzy msgid "do not clear the ownertrust values during import" -msgstr "actualizar a base de dados de confiança" +msgstr "não limpar os valores de ownertrust durante a importação" -#, fuzzy msgid "do not update the trustdb after import" -msgstr "actualizar a base de dados de confiança" +msgstr "não atualizar a trustdb após a importação" -#, fuzzy -#| msgid "not supported" msgid "enable bulk import mode" -msgstr "não suportado" +msgstr "habilitar o modo de importação em massa" -#, fuzzy msgid "show key during import" -msgstr "mostra impressão digital" +msgstr "mostrar chave durante a importação" -#, fuzzy msgid "show key but do not actually import" -msgstr "mostra impressão digital" +msgstr "mostrar chave, mas não chegar a importar" msgid "only accept updates to existing keys" -msgstr "" +msgstr "aceitar apenas atualizações para chaves existentes" -#, fuzzy msgid "remove unusable parts from key after import" -msgstr "chave secreta não utilizável" +msgstr "remover partes inutilizáveis da chave após a importação" msgid "remove as much as possible from key after import" -msgstr "" +msgstr "remover da chave o máximo possível após a importação" msgid "ignore key-signatures which are not self-signatures" -msgstr "" +msgstr "ignorar assinaturas de chave que não são auto-assinaturas" msgid "run import filters and export key immediately" -msgstr "" +msgstr "executar filtros de importação e exportar chave imediatamente" msgid "assume the GnuPG key backup format" -msgstr "" +msgstr "assumir o formato de backup de chave GnuPG" -#, fuzzy msgid "repair keys on import" -msgstr "mostra impressão digital" +msgstr "reparar chaves ao importar" #, c-format msgid "skipping block of type %d\n" msgstr "ignorando bloco do tipo %d\n" -#, fuzzy, c-format +#, c-format msgid "%lu keys processed so far\n" msgstr "%lu chaves processadas até agora\n" #, c-format msgid "Total number processed: %lu\n" -msgstr "Número total processado: %lu\n" +msgstr " Número total processado: %lu\n" -#, fuzzy, c-format -#| msgid " skipped new keys: %lu\n" +#, c-format msgid " skipped PGP-2 keys: %lu\n" -msgstr " ignorei novas chaves: %lu\n" +msgstr " chaves PGP-2 ignoradas: %lu\n" #, c-format msgid " skipped new keys: %lu\n" -msgstr " ignorei novas chaves: %lu\n" +msgstr " novas chaves ignoradas: %lu\n" #, c-format msgid " w/o user IDs: %lu\n" -msgstr " sem IDs de utilizadores: %lu\n" +msgstr " sem IDs de utilizadores: %lu\n" #, c-format msgid " imported: %lu" -msgstr " importados: %lu" +msgstr " importadas: %lu" #, c-format msgid " unchanged: %lu\n" -msgstr " não modificados: %lu\n" +msgstr " não modificadas: %lu\n" #, c-format msgid " new user IDs: %lu\n" -msgstr " novos IDs de utilizadores: %lu\n" +msgstr " novas IDs de utilizadores: %lu\n" #, c-format msgid " new subkeys: %lu\n" -msgstr " novas subchaves: %lu\n" +msgstr " novas subchaves: %lu\n" #, c-format msgid " new signatures: %lu\n" -msgstr " novas assinaturas: %lu\n" +msgstr " novas assinaturas: %lu\n" #, c-format msgid " new key revocations: %lu\n" -msgstr " novas revogações de chaves: %lu\n" +msgstr " novas revogações de chaves: %lu\n" #, c-format msgid " secret keys read: %lu\n" -msgstr " chaves secretas lidas: %lu\n" +msgstr " chaves secretas lidas: %lu\n" #, c-format msgid " secret keys imported: %lu\n" -msgstr " chaves secretas importadas: %lu\n" +msgstr " chaves secretas importadas: %lu\n" #, c-format msgid " secret keys unchanged: %lu\n" @@ -2931,162 +2804,165 @@ msgstr " chaves secretas não modificadas: %lu\n" #, c-format msgid " not imported: %lu\n" -msgstr " não importadas: %lu\n" +msgstr " não importadas: %lu\n" -#, fuzzy, c-format +#, c-format msgid " signatures cleaned: %lu\n" -msgstr " novas assinaturas: %lu\n" +msgstr " assinaturas limpas: %lu\n" -#, fuzzy, c-format +#, c-format msgid " user IDs cleaned: %lu\n" -msgstr " chaves secretas lidas: %lu\n" +msgstr " IDs de utilizador limpas: %lu\n" #, c-format msgid "" "WARNING: key %s contains preferences for unavailable\n" "algorithms on these user IDs:\n" msgstr "" +"AVISO: a chave %s contém preferências para algoritmos\n" +"indisponíveis nestas IDs de utilizador:\n" #, c-format msgid " \"%s\": preference for cipher algorithm %s\n" -msgstr "" +msgstr " \"%s\": preferência para algoritmo da cifra %s\n" -#, fuzzy, c-format +#, c-format msgid " \"%s\": preference for AEAD algorithm %s\n" -msgstr "assinatura %s de: \"%s\"\n" +msgstr " \"%s\": preferência para algoritmo AEAD %s\n" -#, fuzzy, c-format +#, c-format msgid " \"%s\": preference for digest algorithm %s\n" -msgstr "assinatura %s de: \"%s\"\n" +msgstr " \"%s\": preferência para algoritmo digest %s\n" #, c-format msgid " \"%s\": preference for compression algorithm %s\n" -msgstr "" +msgstr " \"%s\": preferência para algoritmo de compressão %s\n" #, c-format msgid "it is strongly suggested that you update your preferences and\n" -msgstr "" +msgstr "é altamente recomendável que você atualize suas preferências e\n" #, c-format msgid "re-distribute this key to avoid potential algorithm mismatch problems\n" msgstr "" +"redistribua esta chave para evitar possíveis problemas de incompatibilidade " +"de algoritmos\n" #, c-format msgid "you can update your preferences with: gpg --edit-key %s updpref save\n" msgstr "" +"você pode atualizar suas preferências com: gpg --edit-key %s updpref save\n" -#, fuzzy, c-format +#, c-format msgid "key %s: no user ID\n" -msgstr "chave %08lX: sem ID de utilizador\n" +msgstr "chave %s: sem ID de utilizador\n" -#, fuzzy, c-format +#, c-format msgid "key %s: %s\n" -msgstr "ignorado `%s': %s\n" +msgstr "chave %s: %s\n" msgid "rejected by import screener" -msgstr "" +msgstr "rejeitado pelo rastreador de importação" -#, fuzzy, c-format +#, c-format msgid "key %s: PKS subkey corruption repaired\n" -msgstr "chave %08lX: subchave HKP corrompida foi reparada\n" +msgstr "chave %s: corrupção de subchave PKS reparada\n" -#, fuzzy, c-format +#, c-format msgid "key %s: accepted non self-signed user ID \"%s\"\n" -msgstr "chave %08lX: aceite ID de utilizador sem auto-assinatura '%s'\n" +msgstr "chave %s: foi aceite ID de utilizador não auto-assinada \"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "key %s: no valid user IDs\n" -msgstr "chave %08lX: sem IDs de utilizadores válidos\n" +msgstr "chave %s: sem IDs de utilizador válidas\n" #, c-format msgid "this may be caused by a missing self-signature\n" -msgstr "isto pode ser causado por falta de auto-assinatura\n" +msgstr "isto pode ser causado pela ausência de auto-assinatura\n" -#, fuzzy, c-format +#, c-format msgid "key %s: public key not found: %s\n" -msgstr "chave %08lX: chave pública não encontrada: %s\n" +msgstr "chave %s: chave pública não encontrada: %s\n" -#, fuzzy, c-format +#, c-format msgid "key %s: new key - skipped\n" -msgstr "chave %08lX: chave nova - ignorada\n" +msgstr "chave %s: nova chave - ignorada\n" #, c-format msgid "no writable keyring found: %s\n" -msgstr "não foi encontrada nenhum porta-chaves onde escrever: %s\n" +msgstr "nenhum porta-chaves com permissão de escrita encontrado: %s\n" -#, fuzzy, c-format -#| msgid "error writing keyring `%s': %s\n" +#, c-format msgid "error writing keyring '%s': %s\n" -msgstr "erro na escrita do porta-chaves `%s': %s\n" +msgstr "erro ao escrever porta-chaves '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "key %s: public key \"%s\" imported\n" -msgstr "chave %08lX: chave pública \"%s\" importada\n" +msgstr "chave %s: chave pública \"%s\" importada\n" -#, fuzzy, c-format +#, c-format msgid "key %s: doesn't match our copy\n" -msgstr "chave %08lX: não corresponde à nossa cópia\n" +msgstr "chave %s: não corresponde à nossa cópia\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" 1 new user ID\n" -msgstr "chave %8lX: \"%s\" 1 novo ID de utilizador\n" +msgstr "chave %s: \"%s\" 1 nova ID de utilizador\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" %d new user IDs\n" -msgstr "chave %08lX: \"%s\" %d novos IDs de utilizadores\n" +msgstr "chave %s: \"%s\" %d novas IDs de utilizador\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" 1 new signature\n" -msgstr "chave %08lX: \"%s\" 1 nova assinatura\n" +msgstr "chave %s: \"%s\" 1 nova assinatura\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" %d new signatures\n" -msgstr "chave %08lX: \"%s\" %d novas assinaturas\n" +msgstr "chave %s: \"%s\" %d novas assinaturas\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" 1 new subkey\n" -msgstr "chave %08lX: \"%s\" 1 nova subchave\n" +msgstr "chave %s: \"%s\" 1 nova subchave\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" %d new subkeys\n" -msgstr "chave %08lX: \"%s\" %d novas subchaves\n" +msgstr "chave %s: \"%s\" %d novas subchaves\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" %d signature cleaned\n" -msgstr "chave %08lX: \"%s\" %d novas assinaturas\n" +msgstr "chave %s: \"%s\" %d assinatura limpa\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" %d signatures cleaned\n" -msgstr "chave %08lX: \"%s\" %d novas assinaturas\n" +msgstr "chave %s: \"%s\" %d assinaturas limpas\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" %d user ID cleaned\n" -msgstr "chave %08lX: \"%s\" %d novos IDs de utilizadores\n" +msgstr "chave %s: \"%s\" %d ID de utilizador limpa\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" %d user IDs cleaned\n" -msgstr "chave %08lX: \"%s\" %d novos IDs de utilizadores\n" +msgstr "chave %s: \"%s\" %d IDs de utilizador limpas\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" not changed\n" -msgstr "chave %08lX: \"%s\" não modificada\n" +msgstr "chave %s: \"%s\" não alterada\n" -#, fuzzy, c-format +#, c-format msgid "key %s: secret key imported\n" -msgstr "chave %08lX: chave secreta importada\n" +msgstr "chave %s: chave secreta importada\n" -#, fuzzy, c-format -#| msgid "skipped: secret key already present\n" +#, c-format msgid "key %s: secret key already exists\n" -msgstr "ignorado: a chave secreta já está presente\n" +msgstr "chave %s: chave secreta já existe\n" -#, fuzzy, c-format +#, c-format msgid "key %s: error sending to agent: %s\n" -msgstr "erro ao enviar para `%s': %s\n" +msgstr "chave %s: erro ao enviar para o agent: %s\n" #, c-format msgid "key %s: card reference is overridden by key material\n" -msgstr "" +msgstr "chave %s: a referência do cartão é sobreposta pelo material da chave\n" #. TRANSLATORS: For a smartcard, each private key on host has a #. * reference (stub) to a smartcard and actual private key data @@ -3098,25 +2974,25 @@ msgstr "" #. * again. #, c-format msgid "To migrate '%s', with each smartcard, run: %s\n" -msgstr "" +msgstr "Para migrar '%s', com cada smartcard, execute: %s\n" -#, fuzzy, c-format +#, c-format msgid "secret key %s: %s\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "chave secreta %s: %s\n" -#, fuzzy, c-format +#, c-format msgid "importing secret keys not allowed\n" -msgstr "a escrever chave privada para `%s'\n" +msgstr "importação de chaves secretas não permitida\n" -#, fuzzy, c-format +#, c-format msgid "key %s: secret key with invalid cipher %d - skipped\n" -msgstr "chave %08lX: chave secreta com cifra inválida %d - ignorada\n" +msgstr "chave %s: chave secreta com a cifra %d inválida - ignorada\n" msgid "No reason specified" msgstr "Nenhum motivo especificado" msgid "Key is superseded" -msgstr "A chave foi substituída" +msgstr "A chave foi suplantada" msgid "Key has been compromised" msgstr "A chave foi comprometida" @@ -3125,217 +3001,218 @@ msgid "Key is no longer used" msgstr "A chave já não é utilizada" msgid "User ID is no longer valid" -msgstr "O identificador do utilizador já não é válido" +msgstr "A ID de utilizador já não é válida" #, c-format msgid "reason for revocation: " -msgstr "motivo da revocação: " +msgstr "motivo da revogação: " #, c-format msgid "revocation comment: " -msgstr "comentário da revocação: " +msgstr "comentário da revogação: " -#, fuzzy, c-format +#, c-format msgid "key %s: no public key - can't apply revocation certificate\n" msgstr "" -"chave %08lX: sem chave pública - impossível aplicar certificado\n" -"de revogação\n" +"chave %s: nenhuma chave pública - não é possível aplicar certificado de " +"revogação\n" -#, fuzzy, c-format +#, c-format msgid "key %s: can't locate original keyblock: %s\n" -msgstr "chave %08lX: impossível localizar bloco de chaves original: %s\n" +msgstr "chave %s: não é possível localizar o keyblock original: %s\n" -#, fuzzy, c-format +#, c-format msgid "key %s: can't read original keyblock: %s\n" -msgstr "chave %08lX: impossível ler bloco de chaves original: %s\n" +msgstr "chave %s: não é possível ler o keyblock original: %s\n" -#, fuzzy, c-format +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" -msgstr "chave %08lX: certificado de revogação inválido: %s - rejeitado\n" +msgstr "chave %s: certificado de revogação inválido: %s - rejeitado\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" revocation certificate imported\n" -msgstr "chave %08lX: \"%s\" certificado de revogação importado\n" +msgstr "chave %s: certificado de revogação \"%s\" importado\n" -#, fuzzy, c-format +#, c-format msgid "key %s: no user ID for signature\n" -msgstr "chave %08lX: nenhum ID de utilizador para assinatura\n" +msgstr "chave %s: nenhuma ID de utilizador para assinatura\n" -#, fuzzy, c-format +#, c-format msgid "key %s: unsupported public key algorithm on user ID \"%s\"\n" msgstr "" -"chave %08lX: algoritmo de chave pública não suportado no utilizador \"%s\"\n" +"chave %s: sem suporte a algoritmo de chave pública na ID de utilizador " +"\"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "key %s: invalid self-signature on user ID \"%s\"\n" -msgstr "chave %08lX: auto-assinatura inválida do utilizador \"%s\"\n" +msgstr "chave %s: auto-assinatura inválida na ID de utilizador \"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "key %s: unsupported public key algorithm\n" -msgstr "chave %08lX: algoritmo de chave pública não suportado\n" +msgstr "chave %s: sem suporte ao algoritmo de chave pública\n" -#, fuzzy, c-format +#, c-format msgid "key %s: invalid direct key signature\n" -msgstr "chave %08lX: assinatura directa de chave adicionada\n" +msgstr "chave %s: assinatura de chave direta inválida\n" -#, fuzzy, c-format +#, c-format msgid "key %s: no subkey for key binding\n" -msgstr "chave %08lX: sem subchave para ligação de chaves\n" +msgstr "chave %s: nenhuma subchave para vinculação de chave\n" -#, fuzzy, c-format +#, c-format msgid "key %s: invalid subkey binding\n" -msgstr "chave %08lX: ligação de subchave inválida\n" +msgstr "chave %s: vinculação de subchave inválida\n" -#, fuzzy, c-format +#, c-format msgid "key %s: removed multiple subkey binding\n" -msgstr "chave %08lX: apagada ligação múltipla de subchave \n" +msgstr "chave %s: vinculação de várias subchaves removida\n" -#, fuzzy, c-format +#, c-format msgid "key %s: no subkey for key revocation\n" -msgstr "chave %08lX: sem subchave para revocação de chave\n" +msgstr "chave %s: nenhuma subchave para revogação de chave\n" -#, fuzzy, c-format +#, c-format msgid "key %s: invalid subkey revocation\n" -msgstr "chave %08lX: revocação de subchave inválida\n" +msgstr "chave %s: revogação de subchave inválida\n" -#, fuzzy, c-format +#, c-format msgid "key %s: removed multiple subkey revocation\n" -msgstr "chave %08lX: removida revogação múltiplace de subchaves\n" +msgstr "chave %s: revogação de várias subchaves removida\n" -#, fuzzy, c-format +#, c-format msgid "key %s: skipped user ID \"%s\"\n" -msgstr "chave %08lX: ignorado ID de utilizador '" +msgstr "chave %s: ID de utilizador \"%s\" ignorada\n" -#, fuzzy, c-format +#, c-format msgid "key %s: skipped subkey\n" -msgstr "chave %08lX: subchave ignorada\n" +msgstr "chave %s: subchave ignorada\n" -#, fuzzy, c-format +#, c-format msgid "key %s: non exportable signature (class 0x%02X) - skipped\n" -msgstr "chave %08lX: assinatura não exportável (classe %02x) - ignorada\n" +msgstr "chave %s: assinatura não exportável (classe 0x%02X) - ignorada\n" -#, fuzzy, c-format +#, c-format msgid "key %s: revocation certificate at wrong place - skipped\n" -msgstr "chave %08lX: certificado de revogação no local errado - ignorado\n" +msgstr "chave %s: certificado de revogação no local errado - ignorado\n" -#, fuzzy, c-format +#, c-format msgid "key %s: invalid revocation certificate: %s - skipped\n" -msgstr "chave %08lX: certificado de revogação inválido: %s - ignorado\n" +msgstr "Chave %s: certificado de revogação inválido: %s - ignorado\n" -#, fuzzy, c-format +#, c-format msgid "key %s: subkey signature in wrong place - skipped\n" -msgstr "chave %08lX: assintura da subchave no local errado - ignorado\n" +msgstr "Tecla %s: assinatura de subchave no lugar errado - ignorada\n" -#, fuzzy, c-format +#, c-format msgid "key %s: unexpected signature class (0x%02X) - skipped\n" -msgstr "chave %08lX: classe de assinatura inesperada (%02x) - ignorada\n" +msgstr "chave %s: classe de assinatura inesperada (0x%02X) - ignorada\n" -#, fuzzy, c-format +#, c-format msgid "key %s: duplicated user ID detected - merged\n" -msgstr "chave %08lX: detectado ID de utilizador duplicado - fundido\n" +msgstr "chave %s: detetada ID de utilizador duplicada - fundida\n" -#, fuzzy, c-format +#, c-format msgid "key %s: duplicated subkeys detected - merged\n" -msgstr "chave %08lX: detectado ID de utilizador duplicado - fundido\n" +msgstr "chave %s: detetadas subchaves duplicadas - fundidas\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: key %s may be revoked: fetching revocation key %s\n" msgstr "" -"AVISO: a chave %08lX pode estar revocada: a transferir a chave de revocação " -"%08lX\n" +"AVISO: a chave %s pode ser revogada: buscando a chave de revogação %s\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: key %s may be revoked: revocation key %s not present.\n" msgstr "" -"AVISO: a chave %08lX pode estar revocada: chave de revocação %08lX não " +"AVISO: a chave %s pode ser revogada: a chave de revogação %s não está " "presente.\n" -#, fuzzy, c-format +#, c-format msgid "key %s: \"%s\" revocation certificate added\n" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "chave %s: certificado de revogação \"%s\" adicionado\n" -#, fuzzy, c-format +#, c-format msgid "key %s: direct key signature added\n" -msgstr "chave %08lX: assinatura directa de chave adicionada\n" +msgstr "chave %s: assinatura de chave direta adicionada\n" -#, fuzzy, c-format +#, c-format msgid "error allocating memory: %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "erro ao alocar memória: %s\n" -#, fuzzy, c-format +#, c-format msgid "can't check signature with unsupported public-key algorithm (%d): %s.\n" -msgstr "chave %08lX: algoritmo de chave pública não suportado\n" +msgstr "" +"não é possível verificar a assinatura com algoritmo de chave pública " +"insuportado (%d): %s.\n" -#, fuzzy, c-format +#, c-format msgid "" "can't check signature with unsupported message-digest algorithm %d: %s.\n" -msgstr "assinatura %s de: \"%s\"\n" +msgstr "" +"não é possível verificar a assinatura com o algoritmo de digest de mensagens " +"insuportado %d: %s.\n" -#, fuzzy msgid " (reordered signatures follow)" -msgstr "Assinatura correcta de \"" +msgstr " (seguem-se as assinaturas reordenadas)" -#, fuzzy, c-format +#, c-format msgid "key %s:\n" -msgstr "ignorado `%s': %s\n" +msgstr "chave %s:\n" -#, fuzzy, c-format +#, c-format msgid "%d duplicate signature removed\n" msgid_plural "%d duplicate signatures removed\n" -msgstr[0] "Utilizador \"%s\" está revocado." -msgstr[1] "Utilizador \"%s\" está revocado." +msgstr[0] "%d assinatura duplicada removida\n" +msgstr[1] "%d assinaturas duplicadas removidas\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 assinatura não verificada por falta de chave\n" -msgstr[1] "1 assinatura não verificada por falta de chave\n" +msgstr[0] "%d assinatura não verificada devido a chave ausente\n" +msgstr[1] "%d assinaturas não verificadas devido a chaves ausentes\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 assinaturas incorrectas\n" -msgstr[1] "%d assinaturas incorrectas\n" +msgstr[0] "%d assinatura inválida\n" +msgstr[1] "%d assinaturas inválidas\n" -#, fuzzy, c-format +#, c-format msgid "%d signature reordered\n" msgid_plural "%d signatures reordered\n" -msgstr[0] "Assinatura correcta de \"" -msgstr[1] "Assinatura correcta de \"" +msgstr[0] "%d assinatura reordenada\n" +msgstr[1] "%d assinaturas reordenadas\n" #, c-format msgid "" "Warning: errors found and only checked self-signatures, run '%s' to check " "all signatures.\n" msgstr "" +"Aviso: erros encontrados e apenas auto-assinaturas verificadas, execute '%s' " +"para verificar todas as assinaturas.\n" -#, fuzzy, c-format +#, c-format msgid "error creating keybox '%s': %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "erro ao criar keybox '%s': %s\n" -#, fuzzy, c-format -#| msgid "error creating keyring `%s': %s\n" +#, c-format msgid "error creating keyring '%s': %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "erro ao criar porta-chaves '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "keybox '%s' created\n" -msgstr "porta-chaves `%s' criado\n" +msgstr "keybox '%s' criada\n" -#, fuzzy, c-format -#| msgid "keyring `%s' created\n" +#, c-format msgid "keyring '%s' created\n" -msgstr "porta-chaves `%s' criado\n" +msgstr "porta-chaves '%s' criado\n" -#, fuzzy, c-format +#, c-format msgid "keyblock resource '%s': %s\n" -msgstr "erro ao criar `%s': %s\n" +msgstr "recurso keyblock '%s': %s\n" #, c-format msgid "failed to rebuild keyring cache: %s\n" -msgstr "falha ao criar 'cache' do porta-chaves: %s\n" +msgstr "falha ao criar a cache do porta-chaves: %s\n" msgid "[revocation]" msgstr "[revogação]" @@ -3343,87 +3220,89 @@ msgstr "[revogação]" msgid "[self-signature]" msgstr "[auto-assinatura]" -#, fuzzy msgid "" "Please decide how far you trust this user to correctly verify other users' " "keys\n" "(by looking at passports, checking fingerprints from different sources, " "etc.)\n" msgstr "" -"Por favor decida quanto confia neste utilizador para\n" -"verificar correctamente as chaves de outros utilizadores\n" -"(vendo passaportes, verificando impressões digitais...)?\n" -"\n" +"Decida até onde você confia neste utilizador para verificar\n" +"corretamente as chaves dos outros utilizadores\n" +"(olhando para passaportes, verificando impressões digitais de\n" +"diferentes fontes, etc.)\n" -#, fuzzy, c-format +#, c-format msgid " %d = I trust marginally\n" -msgstr " %d = Confio moderadamente\n" +msgstr " %d = Confio marginalmente\n" -#, fuzzy, c-format +#, c-format msgid " %d = I trust fully\n" -msgstr " %d = Confio plenamente\n" +msgstr " %d = Confio completamente\n" msgid "" "Please enter the depth of this trust signature.\n" "A depth greater than 1 allows the key you are signing to make\n" "trust signatures on your behalf.\n" msgstr "" +"Introduza a profundidade desta assinatura da confiança. Uma\n" +"profundidade maior que 1 permite que a chave que você está a assinar\n" +"faça assinaturas da confiança em seu nome.\n" msgid "Please enter a domain to restrict this signature, or enter for none.\n" msgstr "" +"Introduza um domínio para restringir essa assinatura, ou introduzir nada " +"para nenhum.\n" #, c-format msgid "Skipping user ID \"%s\", which is not a text ID.\n" -msgstr "" +msgstr "Ignorando a ID de utilizador \"%s\", que não é uma ID de texto.\n" #, c-format msgid "User ID \"%s\" is revoked." -msgstr "Utilizador \"%s\" está revocado." +msgstr "ID de utilizador \"%s\" está revogada." msgid "Are you sure you still want to sign it? (y/N) " -msgstr "Você tem certeza de que quer adicioná-la de qualquer forma? (s/N) " +msgstr "Tem certeza de que ainda deseja assiná-la? (s/N) " msgid " Unable to sign.\n" -msgstr " Não foi possível assinar.\n" +msgstr " Não é possível assinar.\n" -#, fuzzy, c-format +#, c-format msgid "User ID \"%s\" is expired." -msgstr "Utilizador \"%s\" está revocado." +msgstr "A ID de utilizador \"%s\" expirou." -#, fuzzy, c-format +#, c-format msgid "User ID \"%s\" is not self-signed." -msgstr "AVISO: o ID do utilizador \"%s\" não é auto-assinado.\n" +msgstr "A ID de utilizador \"%s\" não é auto-assinada." -#, fuzzy, c-format +#, c-format msgid "User ID \"%s\" is signable. " -msgstr "AVISO: o ID do utilizador \"%s\" não é auto-assinado.\n" +msgstr "A ID de utilizador \"%s\" é assinável. " -#, fuzzy msgid "Sign it? (y/N) " -msgstr "Realmente assinar? " +msgstr "Assiná-la? (s/N) " #, c-format msgid "" "The self-signature on \"%s\"\n" "is a PGP 2.x-style signature.\n" msgstr "" -"A sua auto-assinatura em \"%s\"\n" +"A auto-assinatura em \"%s\"\n" "é uma assinatura do tipo PGP 2.x.\n" msgid "Do you want to promote it to an OpenPGP self-signature? (y/N) " msgstr "Quer promovê-la a uma auto-assinatura OpenPGP? (s/N) " -#, fuzzy, c-format +#, c-format msgid "" "Your current signature on \"%s\"\n" "has expired.\n" msgstr "" -"A sua assinatura actual em \"%s\"\n" -"é uma assinatura local.\n" +"A sua assinatura atual em \"%s\"\n" +"expirou.\n" -#, fuzzy msgid "Do you want to issue a new signature to replace the expired one? (y/N) " -msgstr "Quer que a sua assinatura expire na mesma altura? (S/n) " +msgstr "Deseja emitir uma nova assinatura para substituir a expirada? (s/N) " #, c-format msgid "" @@ -3434,23 +3313,22 @@ msgstr "" "é uma assinatura local.\n" msgid "Do you want to promote it to a full exportable signature? (y/N) " -msgstr "Quer promovê-la a uma assinatura exportável? (s/N)" +msgstr "Quer promovê-la a uma assinatura exportável? (s/N) " -#, fuzzy, c-format +#, c-format msgid "\"%s\" was already locally signed by key %s\n" -msgstr "\"%s\" já foi assinado localmente pela chave %08lX\n" +msgstr "\"%s\" já estava assinado localmente pela chave %s\n" -#, fuzzy, c-format +#, c-format msgid "\"%s\" was already signed by key %s\n" -msgstr "\"%s\" já foi assinado pela chave %08lX\n" +msgstr "\"%s\" já estava assinado pela chave %s\n" -#, fuzzy msgid "Do you want to sign it again anyway? (y/N) " -msgstr "Você tem certeza de que quer adicioná-la de qualquer forma? (s/N) " +msgstr "Mesmo assim, quer voltar a assinar de novo? (s/N) " -#, fuzzy, c-format +#, c-format msgid "Nothing to sign with key %s\n" -msgstr "Nada para assinar com a chave %08lX\n" +msgstr "Nada a assinar com a chave %s\n" msgid "This key has expired!" msgstr "Esta chave expirou!" @@ -3467,13 +3345,13 @@ msgid "" "belongs\n" "to the person named above? If you don't know what to answer, enter \"0\".\n" msgstr "" -"Com que cuidado é que verificou que chave que está prestes a assinar " -"pertence\n" -"à pessoa correcta? Se não sabe o que responder, escolha \"0\".\n" +"Com que cuidado é que verificou que chave que está prestes a assinar\n" +"pertence à pessoa correta? Se não souber o que responder, introduzir\n" +"\"0\".\n" #, c-format msgid " (0) I will not answer.%s\n" -msgstr " (0) Não vou responder.%s\n" +msgstr " (0) Não irei responder.%s\n" #, c-format msgid " (1) I have not checked at all.%s\n" @@ -3487,240 +3365,198 @@ msgstr " (2) Verifiquei por alto.%s\n" msgid " (3) I have done very careful checking.%s\n" msgstr " (3) Verifiquei com bastante cuidado.%s\n" -#, fuzzy msgid "Your selection? (enter '?' for more information): " -msgstr " i = mostrar mais informações\n" +msgstr "A sua seleção? (introduzir '?' para mais informações): " -#, fuzzy, c-format +#, c-format msgid "" "Are you sure that you want to sign this key with your\n" "key \"%s\" (%s)\n" msgstr "" -"Você tem certeza de que quer assinar esta chave com\n" -"a sua chave: \"" +"Tem certeza de que deseja assinar esta chave com a sua\n" +"chave \"%s\" (%s)\n" -#, fuzzy msgid "This will be a self-signature.\n" -msgstr "" -"\n" -"Isto será uma auto-assinatura.\n" +msgstr "Isto será uma auto-assinatura.\n" -#, fuzzy msgid "WARNING: the signature will not be marked as non-exportable.\n" -msgstr "" -"\n" -"AVISO: a assinatura não será marcada como não-exportável.\n" +msgstr "AVISO: a assinatura não será marcada como não-exportável.\n" -#, fuzzy msgid "WARNING: the signature will not be marked as non-revocable.\n" -msgstr "" -"\n" -"AVISO: a assinatura não será marcada como não-revocável.\n" +msgstr "AVISO: a assinatura não será marcada como não-revogável.\n" -#, fuzzy msgid "The signature will be marked as non-exportable.\n" -msgstr "" -"\n" -"A assinatura será marcada como não-exportável.\n" +msgstr "A assinatura será marcada como não-exportável.\n" -#, fuzzy msgid "The signature will be marked as non-revocable.\n" -msgstr "" -"\n" -"A assinatura será marcada como não-revocável.\n" +msgstr "A assinatura será marcada como não-revogável.\n" -#, fuzzy msgid "I have not checked this key at all.\n" -msgstr "" -"\n" -"Não verifiquei esta chave.\n" +msgstr "Eu não cheguei a verificar esta chave.\n" -#, fuzzy msgid "I have checked this key casually.\n" -msgstr "" -"\n" -"Verifiquei por alto esta chave.\n" +msgstr "Eu verifiquei esta chave por alto.\n" -#, fuzzy msgid "I have checked this key very carefully.\n" -msgstr "" -"\n" -"Verifiquei esta chave com muito cuidado.\n" +msgstr "Eu verifiquei esta chave com muito cuidado.\n" -#, fuzzy msgid "Really sign? (y/N) " -msgstr "Realmente assinar? " +msgstr "De certeza que deseja assinar? (s/N) " #, c-format msgid "signing failed: %s\n" -msgstr "assinatura falhou: %s\n" +msgstr "falha ao assinar: %s\n" msgid "Key has only stub or on-card key items - no passphrase to change.\n" msgstr "" +"A chave apenas tem os itens de chave stub ou dentro-do-cartão -\n" +"nenhuma frase-secreta para alterar.\n" -#, fuzzy, c-format -#| msgid "error creating passphrase: %s\n" +#, c-format msgid "key %s: error changing passphrase: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "chave %s: erro ao alterar a frase-secreta: %s\n" msgid "save and quit" msgstr "gravar e sair" -#, fuzzy msgid "show key fingerprint" -msgstr "mostra impressão digital" +msgstr "mostrar impressão digital da chave" -#, fuzzy msgid "show the keygrip" -msgstr "Notação de assinatura: " +msgstr "mostrar o keygrip" msgid "list key and user IDs" -msgstr "lista chave e identificadores de utilizadores" +msgstr "listar chave e IDs de utilizador" msgid "select user ID N" -msgstr "seleciona ID de utilizador N" +msgstr "selecionar ID de utilizador N" -#, fuzzy msgid "select subkey N" -msgstr "seleciona ID de utilizador N" +msgstr "selecionar subchave N" -#, fuzzy msgid "check signatures" -msgstr "revoga assinaturas" +msgstr "verificar assinaturas" msgid "sign selected user IDs [* see below for related commands]" msgstr "" +"assinar IDs de utilizador selecionadas [* veja abaixo os comandos " +"relacionados]" -#, fuzzy msgid "sign selected user IDs locally" -msgstr "assina a chave localmente" +msgstr "assinar localmente IDs de utilizador selecionadas" -#, fuzzy msgid "sign selected user IDs with a trust signature" -msgstr "Sugestão: Selecione os IDs de utilizador para assinar\n" +msgstr "assinar IDs de utilizador selecionadas com uma assinatura da confiança" msgid "sign selected user IDs with a non-revocable signature" msgstr "" +"assinar IDs de utilizador selecionadas com uma assinatura não-revogável" msgid "add a user ID" -msgstr "adiciona um novo ID de utilizador" +msgstr "adicionar uma ID de utilizador" msgid "add a photo ID" -msgstr "adiciona um identificador fotográfico" +msgstr "adicionar uma ID fotográfica" -#, fuzzy msgid "delete selected user IDs" -msgstr "remove ID de utilizador" +msgstr "apagar IDs de utilizador selecionadas" -#, fuzzy msgid "add a subkey" -msgstr "addkey" +msgstr "adicionar uma subchave" msgid "add a key to a smartcard" -msgstr "" +msgstr "adicionar uma chave a um smartcard" msgid "move a key to a smartcard" -msgstr "" +msgstr "mover uma chave para um smartcard" msgid "convert a key to TPM form using the local TPM" -msgstr "" +msgstr "converter uma chave para a forma TPM usando o TPM local" msgid "move a backup key to a smartcard" -msgstr "" +msgstr "mover uma chave de backup para um smartcard" -#, fuzzy msgid "delete selected subkeys" -msgstr "remove uma chave secundária" +msgstr "apagar subchaves selecionadas" msgid "add a revocation key" -msgstr "adiciona uma chave de revocação" +msgstr "adicionar uma chave de revogação" msgid "add an additional decryption subkey" -msgstr "" +msgstr "adicionar uma subchave adicional de decifração" -#, fuzzy msgid "delete signatures from the selected user IDs" -msgstr "" -"Realmente actualizar as preferências para os utilizadores seleccionados?" +msgstr "apagar assinaturas das IDs de utilizador selecionadas" -#, fuzzy msgid "change the expiration date for the key or selected subkeys" -msgstr "Você não pode modificar a data de validade de uma chave v3\n" +msgstr "alterar a data de expiração da chave ou das subchaves selecionadas" -#, fuzzy msgid "flag the selected user ID as primary" -msgstr "seleccionar o identificador do utilizador como primário" +msgstr "marcar a ID de utilizador selecionada como principal" msgid "list preferences (expert)" -msgstr "lista preferências (perito)" +msgstr "listar preferências (perito)" msgid "list preferences (verbose)" -msgstr "lista preferências (detalhadamente)" +msgstr "listar preferências (verboso)" -#, fuzzy msgid "set preference list for the selected user IDs" -msgstr "" -"Realmente actualizar as preferências para os utilizadores seleccionados?" +msgstr "definir lista de preferências para as IDs de utilizador selecionadas" -#, fuzzy msgid "set the preferred keyserver URL for the selected user IDs" -msgstr "não consegui processar a URI do servidor de chaves\n" - -#, fuzzy -msgid "set a notation for the selected user IDs" msgstr "" -"Realmente actualizar as preferências para os utilizadores seleccionados?" +"definir a URL preferencial do servidor de chaves para as IDs de utilizador " +"selecionadas" + +msgid "set a notation for the selected user IDs" +msgstr "definir uma notação para as IDs de utilizador selecionadas" msgid "change the passphrase" -msgstr "muda a frase secreta" +msgstr "alterar a frase-secreta" msgid "change the ownertrust" -msgstr "muda os valores de confiança" +msgstr "alterar o ownertrust" -#, fuzzy msgid "revoke signatures on the selected user IDs" -msgstr "Realmente revocar todos os IDs de utilizador seleccionados? " +msgstr "revogar assinaturas nas IDs de utilizador selecionadas" -#, fuzzy msgid "revoke selected user IDs" -msgstr "revocar um ID de utilizador" +msgstr "revogar IDs de utilizador selecionadas" -#, fuzzy msgid "revoke key or selected subkeys" -msgstr "revoga uma chave secundária" +msgstr "revogar chave ou subchaves selecionadas" -#, fuzzy msgid "enable key" -msgstr "activa uma chave" +msgstr "habilitar chave" -#, fuzzy msgid "disable key" -msgstr "desactiva uma chave" +msgstr "desabilitar chave" -#, fuzzy msgid "show selected photo IDs" -msgstr "mostrar identificador fotográfico" +msgstr "mostrar IDs fotográficas selecionadas" msgid "compact unusable user IDs and remove unusable signatures from key" msgstr "" +"compactar IDs de utilizador inutilizáveis e remover assinaturas " +"inutilizáveis da chave" msgid "compact unusable user IDs and remove all signatures from key" msgstr "" +"compactar IDs de utilizador inutilizáveis e remover todas as assinaturas da " +"chave" msgid "Secret key is available.\n" -msgstr "Chave secreta disponível.\n" +msgstr "Chave secreta está disponível.\n" -#, fuzzy -#| msgid "Secret key is available.\n" msgid "Secret subkeys are available.\n" -msgstr "Chave secreta disponível.\n" +msgstr "Subchaves secretas estão disponíveis.\n" msgid "" "Note: the local copy of the secret key will only be deleted with \"save\".\n" -msgstr "" +msgstr "Nota: a cópia local da chave secreta só será apagada com \"save\".\n" msgid "Need the secret key to do this.\n" -msgstr "A chave secreta é necessária para fazer isto.\n" +msgstr "É preciso a chave secreta para fazer isto.\n" msgid "" "* The 'sign' command may be prefixed with an 'l' for local signatures " @@ -3728,290 +3564,273 @@ msgid "" " a 't' for trust signatures (tsign), an 'nr' for non-revocable signatures\n" " (nrsign), or any combination thereof (ltsign, tnrsign, etc.).\n" msgstr "" +"* O comando 'sign' pode ter como prefixo com um 'l' para assinaturas\n" +" locais (lsign), um 't' para assinaturas da confiança (tsign), um\n" +" 'nr' para assinaturas não-revogáveis (nrsign), ou qualquer\n" +" combinação destes (ltsign, tnrsign, etc.).\n" msgid "Key is revoked." msgstr "A chave está revogada." -#, fuzzy msgid "Really sign all text user IDs? (y/N) " -msgstr "Realmente assinar todos os IDs de utilizador? " +msgstr "" +"De certeza que deseja assinar todas as IDs de utilizador de texto? (s/N) " -#, fuzzy msgid "Really sign all user IDs? (y/N) " -msgstr "Realmente assinar todos os IDs de utilizador? " +msgstr "De certeza que deseja assinar todas as IDs de utilizador? (s/N) " msgid "Hint: Select the user IDs to sign\n" -msgstr "Sugestão: Selecione os IDs de utilizador para assinar\n" +msgstr "Dica: Selecione as IDs de utilizador para assinar\n" -#, fuzzy, c-format +#, c-format msgid "Unknown signature type '%s'\n" -msgstr "classe de assinatura desconhecida" +msgstr "Tipo de assinatura desconhecido '%s'\n" msgid "You must select at least one user ID.\n" -msgstr "Você precisa selecionar pelo menos um ID de utilizador.\n" +msgstr "Você precisa selecionar pelo menos uma ID de utilizador.\n" #, c-format msgid "(Use the '%s' command.)\n" -msgstr "" +msgstr "(Usar o comando '%s'.)\n" msgid "You can't delete the last user ID!\n" -msgstr "Você não pode remover o último ID de utilizador!\n" +msgstr "Você não pode apagar a última ID de utilizador!\n" -#, fuzzy msgid "Really remove all selected user IDs? (y/N) " -msgstr "Realmente remover todos os IDs de utilizador seleccionados? " +msgstr "" +"De certeza que deseja remover todas as IDs de utilizador selecionadas? (s/N) " -#, fuzzy msgid "Really remove this user ID? (y/N) " -msgstr "Realmente remover este ID de utilizador? " +msgstr "De certeza que deseja remover esta ID de utilizador? (s/N) " #. TRANSLATORS: Please take care: This is about #. moving the key and not about removing it. -#, fuzzy msgid "Really move the primary key? (y/N) " -msgstr "Realmente remover este ID de utilizador? " +msgstr "De certeza que deseja mover a chave principal? (s/N) " -#, fuzzy msgid "You must select exactly one key.\n" -msgstr "Você deve selecionar pelo menos uma chave.\n" +msgstr "Você deve selecionar exatamente uma chave.\n" msgid "Command expects a filename argument\n" -msgstr "" +msgstr "Comando espera como argumento um nome de ficheiro\n" -#, fuzzy, c-format +#, c-format msgid "Can't open '%s': %s\n" -msgstr "impossível abrir `%s': %s\n" +msgstr "Não é possível abrir '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "Error reading backup key from '%s': %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "Erro ao ler a chave de backup a partir de '%s': %s\n" msgid "You must select at least one key.\n" msgstr "Você deve selecionar pelo menos uma chave.\n" -#, fuzzy msgid "Do you really want to delete the selected keys? (y/N) " -msgstr "Você quer realmente remover as chaves selecionadas? " +msgstr "De certeza que você deseja apagar as chaves selecionadas? (s/N) " -#, fuzzy msgid "Do you really want to delete this key? (y/N) " -msgstr "Você quer realmente remover esta chave? " +msgstr "De certeza que você deseja apagar esta chave? (s/N) " -#, fuzzy msgid "Really revoke all selected user IDs? (y/N) " -msgstr "Realmente revocar todos os IDs de utilizador seleccionados? " +msgstr "" +"De certeza que deseja revogar todas as IDs de utilizador selecionadas? (s/N) " -#, fuzzy msgid "Really revoke this user ID? (y/N) " -msgstr "Realmente revocar este ID de utilizador? " +msgstr "De certeza que deseja revogar esta ID de utilizador? (s/N) " -#, fuzzy msgid "Do you really want to revoke the entire key? (y/N) " -msgstr "Você quer realmente revogar esta chave? " +msgstr "De certeza que você deseja revogar a chave inteira? (s/N) " -#, fuzzy msgid "Do you really want to revoke the selected subkeys? (y/N) " -msgstr "Você quer realmente revogar as chaves selecionadas? " +msgstr "De certeza que você deseja revogar as subchaves selecionadas? (s/N) " -#, fuzzy msgid "Do you really want to revoke this subkey? (y/N) " -msgstr "Você quer realmente revogar esta chave? " +msgstr "De certeza que você deseja revogar esta subchave? (s/N) " msgid "Owner trust may not be set while using a user provided trust database\n" msgstr "" +"Owner trust não pode ser definida ao usar uma base de dados da\n" +"confiança fornecido pelo utilizador\n" -#, fuzzy msgid "Set preference list to:\n" -msgstr "configurar lista de preferências" +msgstr "Defina a lista de preferências para:\n" -#, fuzzy msgid "Really update the preferences for the selected user IDs? (y/N) " msgstr "" -"Realmente actualizar as preferências para os utilizadores seleccionados?" +"De certeza que deseja atualizar as preferências para as IDs de utilizador " +"selecionadas? (s/N) " -#, fuzzy msgid "Really update the preferences? (y/N) " -msgstr "Realmente actualizar as preferências?" +msgstr "De certeza que deseja atualizar as preferências? (s/N) " -#, fuzzy msgid "Save changes? (y/N) " -msgstr "Gravar alterações? " +msgstr "Gravar alterações? (s/N) " -#, fuzzy msgid "Quit without saving? (y/N) " -msgstr "Sair sem gravar? " +msgstr "Sair sem gravar? (s/N) " -#, fuzzy, c-format +#, c-format msgid "deleting copy of secret key failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha ao apagar cópia da chave secreta: %s\n" #, c-format msgid "Key not changed so no update needed.\n" -msgstr "Chave não alterada, nenhuma actualização é necessária.\n" +msgstr "Chave não alterada, por isso, é necessária nenhuma atualização.\n" -#, fuzzy, c-format -#| msgid "You can't delete the last user ID!\n" +#, c-format msgid "cannot revoke the last valid user ID.\n" -msgstr "Você não pode remover o último ID de utilizador!\n" +msgstr "não é possível revogar a última ID de utilizador válida.\n" -#, fuzzy, c-format +#, c-format msgid "revoking the user ID failed: %s\n" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "falha ao revogar a ID de utilizador: %s\n" -#, fuzzy, c-format +#, c-format msgid "setting the primary user ID failed: %s\n" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "falha ao definir a ID de utilizador principal: %s\n" -#, fuzzy, c-format +#, c-format msgid "\"%s\" is not a fingerprint\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "\"%s\" não é uma impressão digital\n" -#, fuzzy, c-format +#, c-format msgid "\"%s\" is not the primary fingerprint\n" -msgstr "falha ao inicializar a base de dados de confiança: %s\n" +msgstr "\"%s\" não é a impressão digital principal\n" -#, fuzzy, c-format -#| msgid "invalid value\n" +#, c-format msgid "Invalid user ID '%s': %s\n" -msgstr "valor inválido\n" +msgstr "ID de utilizador '%s' inválida: %s\n" -#, fuzzy -#| msgid "No such user ID.\n" msgid "No matching user IDs." -msgstr "Identificador de utilizador inexistente.\n" +msgstr "Não há IDs de utilizador correspondentes." -#, fuzzy msgid "Nothing to sign.\n" -msgstr "Nada para assinar com a chave %08lX\n" +msgstr "Nada a assinar.\n" -#, fuzzy, c-format +#, c-format msgid "Not signed by you.\n" -msgstr " assinado por %08lX em %s%s\n" +msgstr "Não assinado por você.\n" -#, fuzzy, c-format -#| msgid "checking created signature failed: %s\n" +#, c-format msgid "revoking the key signature failed: %s\n" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "falha ao revogar a assinatura da chave: %s\n" -#, fuzzy, c-format +#, c-format msgid "'%s' is not a valid expiration time\n" -msgstr "%s não é um conjunto de caracteres válido\n" +msgstr "'%s' não é um tempo de expiração válido\n" -#, fuzzy, c-format +#, c-format msgid "\"%s\" is not a proper fingerprint\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "\"%s\" não é propriamente uma impressão digital\n" -#, fuzzy, c-format +#, c-format msgid "subkey \"%s\" not found\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "subchave \"%s\" não encontrada\n" msgid "Preferred keyserver: " -msgstr "" +msgstr "Servidor de chaves preferido: " -#, fuzzy msgid "Notations: " -msgstr "Notação: " +msgstr "Notações: " msgid "There are no preferences on a PGP 2.x-style user ID.\n" -msgstr "Não há preferências no ID de utilizador tipo PGP 2.x.\n" +msgstr "Não há preferências numa ID de utilizador tipo PGP 2.x.\n" -#, fuzzy, c-format +#, c-format msgid "The following key was revoked on %s by %s key %s\n" -msgstr "Esta chave pode ser revogada pela chave %s " +msgstr "A chave seguinte foi revogada em %s pela chave %s de %s\n" -#, fuzzy, c-format +#, c-format msgid "This key may be revoked by %s key %s" -msgstr "Esta chave pode ser revogada pela chave %s " +msgstr "Esta chave pode ser revogada pela chave %s de %s" -#, fuzzy msgid "(sensitive)" -msgstr " (sensível)" +msgstr "(sensitivo)" -#, fuzzy, c-format +#, c-format msgid "created: %s" -msgstr "impossível criar %s: %s\n" +msgstr "criada: %s" -#, fuzzy, c-format +#, c-format msgid "revoked: %s" -msgstr "revkey" +msgstr "revogada: %s" -#, fuzzy, c-format +#, c-format msgid "expired: %s" -msgstr "[expira: %s]" +msgstr "expirada: %s" -#, fuzzy, c-format +#, c-format msgid "expires: %s" -msgstr "[expira: %s]" +msgstr "expira: %s" -#, fuzzy, c-format +#, c-format msgid "usage: %s" -msgstr " confiança: %c/%c" +msgstr "uso: %s" msgid "card-no: " -msgstr "" +msgstr "nº do cartão: " -#, fuzzy, c-format +#, c-format msgid "trust: %s" -msgstr " confiança: %c/%c" +msgstr "confiança: %s" #, c-format msgid "validity: %s" -msgstr "" +msgstr "validade: %s" msgid "This key has been disabled" -msgstr "Esta chave foi desactivada" +msgstr "Esta chave foi desabilitada" msgid "" "Please note that the shown key validity is not necessarily correct\n" "unless you restart the program.\n" msgstr "" -"Não se esqueça que a validade de chave mostrada não é necessáriamente a\n" -"correcta a não ser que reinicie o programa.\n" +"Note que a validade da chave mostrada não é necessariamente a\n" +"correta a menos que reinicie o programa.\n" -#, fuzzy msgid "revoked" -msgstr "revkey" +msgstr "revogada" -#, fuzzy msgid "expired" -msgstr "expire" +msgstr "expirada" #, c-format msgid "" "WARNING: no user ID has been marked as primary. This command may\n" " cause a different user ID to become the assumed primary.\n" msgstr "" +"AVISO: nenhuma ID de utilizador foi marcada como principal. Este\n" +" comando pode fazer com que uma ID de utilizador diferente\n" +" se torne como a presumida principal.\n" #, c-format msgid "WARNING: Your encryption subkey expires soon.\n" -msgstr "" +msgstr "AVISO: Sua subchave de cifração expira em breve.\n" -#, fuzzy, c-format -#| msgid "You can't change the expiration date of a v3 key\n" +#, c-format msgid "You may want to change its expiration date too.\n" -msgstr "Você não pode modificar a data de validade de uma chave v3\n" +msgstr "Você pode também querer alterar sua data de expiração.\n" #, c-format msgid "WARNING: No valid encryption subkey left over.\n" -msgstr "" +msgstr "AVISO: Sobrou nenhuma subchave de cifração válida.\n" msgid "" "WARNING: This is a PGP2-style key. Adding a photo ID may cause some " "versions\n" " of PGP to reject this key.\n" msgstr "" -"AVISO: Esta chave é do tipo PGP2. Se adicionar um identificador fotográfico\n" -" algumas versão do PGP podem rejeitá-la.\n" +"AVISO: Esta chave é do tipo PGP2. Se adicionar uma ID fotográfica\n" +" algumas versão do PGP podem rejeitar a chave.\n" msgid "Are you sure you still want to add it? (y/N) " -msgstr "Tem a certeza de que quer adicioná-la de qualquer forma? (s/N) " +msgstr "Tem a certeza de que ainda deseja adicioná-la? (s/N) " msgid "You may not add a photo ID to a PGP2-style key.\n" -msgstr "" -"Não pode adicionar um identificador fotográfico a uma chave tipo PGP2.\n" +msgstr "Não pode adicionar uma ID fotográfica a uma chave tipo PGP2.\n" msgid "Such a user ID already exists on this key!" -msgstr "" +msgstr "Esse ID de utilizador já existe nesta chave!" msgid "Delete this good signature? (y/N/q)" msgstr "Apagar esta assinatura válida? (s/N/q)" @@ -4023,201 +3842,195 @@ msgid "Delete this unknown signature? (y/N/q)" msgstr "Apagar esta assinatura desconhecida? (s/N/q)" msgid "Really delete this self-signature? (y/N)" -msgstr "Realmente remover esta auto-assinatura? (s/N)" +msgstr "De certeza que deseja apagar esta auto-assinatura? (s/N)" -#, fuzzy, c-format -#| msgid "Deleted %d signature.\n" +#, c-format msgid "Deleted %d signature.\n" msgid_plural "Deleted %d signatures.\n" -msgstr[0] "%d assinatura removida.\n" -msgstr[1] "%d assinatura removida.\n" +msgstr[0] "%d assinatura apagada.\n" +msgstr[1] "%d assinaturas apagadas.\n" msgid "Nothing deleted.\n" -msgstr "Nada removido.\n" +msgstr "Nada apagada.\n" -#, fuzzy msgid "invalid" -msgstr "armadura inválida" +msgstr "inválida" -#, fuzzy, c-format +#, c-format msgid "User ID \"%s\" compacted: %s\n" -msgstr "Utilizador \"%s\" está revocado." +msgstr "ID de utilizador \"%s\" compactada: %s\n" -#, fuzzy, c-format +#, c-format msgid "User ID \"%s\": %d signature removed\n" msgid_plural "User ID \"%s\": %d signatures removed\n" -msgstr[0] "Utilizador \"%s\" está revocado." -msgstr[1] "Utilizador \"%s\" está revocado." +msgstr[0] "ID do utilizador \"%s\": %d assinatura removida\n" +msgstr[1] "ID do utilizador \"%s\": %d assinaturas removidas\n" -#, fuzzy, c-format +#, c-format msgid "User ID \"%s\": already minimized\n" -msgstr "o utilizador com o id \"%s\" já está revocado\n" +msgstr "ID de utilizador \"%s\": já estava minimizada\n" -#, fuzzy, c-format +#, c-format msgid "User ID \"%s\": already clean\n" -msgstr "o utilizador com o id \"%s\" já está revocado\n" +msgstr "ID de utilizador \"%s\": já estava limpa\n" msgid "" "WARNING: This is a PGP 2.x-style key. Adding a designated revoker may " "cause\n" " some versions of PGP to reject this key.\n" msgstr "" -"AVISO: Esta chave é do tipo PGP 2.x. Se adicionar um revogador designado\n" -" algumas versão do PGP podem rejeitá-la.\n" +"AVISO: Esta chave é do tipo PGP 2.x. Se adicionar uma revogadora designada\n" +" algumas versão do PGP podem rejeitar esta chave.\n" msgid "You may not add a designated revoker to a PGP 2.x-style key.\n" -msgstr "Não pode adicionar um revogador designado a uma chave tipo PGP 2.x.\n" +msgstr "" +"Não pode adicionar uma revogadora designada a uma chave tipo PGP 2.x.\n" msgid "Enter the user ID of the designated revoker: " -msgstr "Insira o ID de utilizador do revogador escolhido: " +msgstr "Introduzir a ID de utilizador da revogadora designada: " #, c-format msgid "cannot appoint a PGP 2.x style key as a designated revoker\n" -msgstr "não pode escolher uma chave do tipo PGP 2.x como revogadora\n" +msgstr "não pode nomear uma chave do tipo PGP 2.x como revogadora designada\n" #, c-format msgid "you cannot appoint a key as its own designated revoker\n" -msgstr "não pode escolher uma chave como revogadora de si mesmo\n" +msgstr "não pode nomear uma chave como revogadora designada de si própria\n" -#, fuzzy, c-format +#, c-format msgid "this key has already been designated as a revoker\n" -msgstr "AVISO: Esta chave foi revogada pelo seu dono!\n" +msgstr "esta chave já foi designada como revogadora\n" -#, fuzzy msgid "WARNING: appointing a key as a designated revoker cannot be undone!\n" -msgstr "não pode escolher uma chave como revogadora de si mesmo\n" +msgstr "" +"ATENÇÃO: a nomeação de uma chave como revogadora designada não pode ser " +"desfeita!\n" -#, fuzzy msgid "" "Are you sure you want to appoint this key as a designated revoker? (y/N) " -msgstr "não pode escolher uma chave como revogadora de si mesmo\n" +msgstr "" +"Tem certeza de que deseja nomear esta chave como uma revogadora designada? " +"(s/N) " msgid "Enter the fingerprint of the additional decryption subkey: " -msgstr "" +msgstr "Introduzir a impressão digital da subchave de decifração adicional: " -#, fuzzy, c-format -#| msgid "(unless you specify the key by fingerprint)\n" +#, c-format msgid "Did you specify the fingerprint of a subkey?\n" -msgstr "(a não ser que escolha a chave pela sua impressão digital)\n" +msgstr "Especificou a impressão digital de uma subchave?\n" -#, fuzzy, c-format +#, c-format msgid "key \"%s\" is already on this keyblock\n" -msgstr "o utilizador com o id \"%s\" já está revocado\n" +msgstr "A chave \"%s\" já está neste keyblock\n" -#, fuzzy msgid "" "Are you sure you want to change the expiration time for multiple subkeys? (y/" "N) " -msgstr "não pode escolher uma chave como revogadora de si mesmo\n" +msgstr "" +"Tem certeza de que deseja alterar o tempo de expiração de várias subchaves? " +"(s/N) " -#, fuzzy msgid "Changing expiration time for a subkey.\n" -msgstr "A modificar a data de validade para uma chave secundária.\n" +msgstr "Alterando o tempo de expiração de uma subchave.\n" msgid "Changing expiration time for the primary key.\n" -msgstr "Modificar a data de validade para uma chave primária.\n" +msgstr "Modificando a data de expiração para a chave principal.\n" #, c-format msgid "You can't change the expiration date of a v3 key\n" -msgstr "Você não pode modificar a data de validade de uma chave v3\n" +msgstr "Você não pode modificar a data de expiração de uma chave v3\n" -#, fuzzy msgid "Changing usage of a subkey.\n" -msgstr "A modificar a data de validade para uma chave secundária.\n" +msgstr "Alterando a utilização de uma subchave.\n" -#, fuzzy -#| msgid "Changing expiration time for the primary key.\n" msgid "Changing usage of the primary key.\n" -msgstr "Modificar a data de validade para uma chave primária.\n" +msgstr "Alterando a utilização da chave principal.\n" -#, fuzzy, c-format +#, c-format msgid "signing subkey %s is already cross-certified\n" -msgstr "não pode escolher uma chave como revogadora de si mesmo\n" +msgstr "a subchave de assinatura %s já é cruzadamente certificada\n" #, c-format msgid "subkey %s does not sign and so does not need to be cross-certified\n" msgstr "" +"a subchave %s não assina e, por isso, não precisa ser cruzadamente " +"certificada\n" msgid "Please select exactly one user ID.\n" -msgstr "Seleccione exactamente um identificador de utilizador.\n" +msgstr "Selecione exatamente uma ID de utilizador.\n" -#, fuzzy, c-format +#, c-format msgid "skipping v3 self-signature on user ID \"%s\"\n" -msgstr "a ignorar auto-assinatura v3 no utilizar com o id \"%s\"\n" +msgstr "ignorando a auto-assinatura v3 na ID de utilizador \"%s\"\n" msgid "Enter your preferred keyserver URL: " -msgstr "" +msgstr "Introduzir a URL do servidor de chaves preferido: " -#, fuzzy msgid "Are you sure you want to replace it? (y/N) " -msgstr "Você tem certeza de que quer adicioná-la de qualquer forma? (s/N) " +msgstr "Tem certeza de que deseja substituí-la? (s/N) " -#, fuzzy msgid "Are you sure you want to delete it? (y/N) " -msgstr "Você tem certeza de que quer adicioná-la de qualquer forma? (s/N) " +msgstr "Tem certeza de que deseja apagá-la? (s/N) " -#, fuzzy msgid "Enter the notation: " -msgstr "Notação de assinatura: " +msgstr "Introduzir a notação: " -#, fuzzy msgid "Proceed? (y/N) " -msgstr "Escrever por cima (s/N)? " +msgstr "Prosseguir? (s/N) " #, c-format msgid "No user ID with index %d\n" -msgstr "Nenhum ID de utilizador com índice %d\n" +msgstr "Nenhuma ID de utilizador com índice %d\n" -#, fuzzy, c-format +#, c-format msgid "No user ID with hash %s\n" -msgstr "Nenhum ID de utilizador com índice %d\n" +msgstr "Nenhuma ID de utilizador com hash %s\n" -#, fuzzy, c-format +#, c-format msgid "No subkey with key ID '%s'.\n" -msgstr "Nenhum ID de utilizador com índice %d\n" +msgstr "Nenhuma subchave com ID de chave '%s'.\n" -#, fuzzy, c-format +#, c-format msgid "No subkey with index %d\n" -msgstr "Nenhum ID de utilizador com índice %d\n" +msgstr "Nenhuma subchave com índice %d\n" -#, fuzzy, c-format +#, c-format msgid "user ID: \"%s\"\n" -msgstr "ID de utilizador: \"" +msgstr "ID de utilizador: \"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "signed by your key %s on %s%s%s\n" -msgstr " assinado por %08lX em %s%s%s\n" +msgstr "assinado pela sua chave %s em %s%s%s\n" msgid " (non-exportable)" -msgstr " (não-exportável)" +msgstr " (não-exportável)" #, c-format msgid "This signature expired on %s.\n" msgstr "Esta assinatura expirou em %s.\n" msgid "Are you sure you still want to revoke it? (y/N) " -msgstr "Tem a certeza de que quer revogá-la de qualquer forma? (s/N) " +msgstr "Tem a certeza de que ainda deseja revogá-la? (s/N) " msgid "Create a revocation certificate for this signature? (y/N) " -msgstr "Gerar um certificado de revogação para esta assinatura? (s/N)" +msgstr "Criar um certificado de revogação para esta assinatura? (s/N) " -#, fuzzy, c-format +#, c-format msgid "You have signed these user IDs on key %s:\n" -msgstr "Assinou estes identificadores de utilizadores:\n" +msgstr "Você assinou estas IDs de utilizador na chave %s:\n" -#, fuzzy msgid " (non-revocable)" -msgstr " (não-exportável)" +msgstr " (não-revogável)" -#, fuzzy, c-format +#, c-format msgid "revoked by your key %s on %s\n" -msgstr " revogado por %08lX em %s\n" +msgstr "revogado pela sua chave %s em %s\n" msgid "You are about to revoke these signatures:\n" msgstr "Está prestes a revogar estas assinaturas:\n" msgid "Really create the revocation certificates? (y/N) " -msgstr "Realmente criar os certificados de revogação? (s/N) " +msgstr "De certeza que deseja criar os certificados de revogação? (s/N) " #, c-format msgid "no secret key\n" @@ -4225,78 +4038,75 @@ msgstr "nenhuma chave secreta\n" #, c-format msgid "tried to revoke a non-user ID: %s\n" -msgstr "" +msgstr "tentou revogar uma ID sem-utilizador: %s\n" #, c-format msgid "user ID \"%s\" is already revoked\n" -msgstr "o utilizador com o id \"%s\" já está revocado\n" +msgstr "ID de utilizador \"%s\" já está revogada\n" #, c-format msgid "WARNING: a user ID signature is dated %d seconds in the future\n" -msgstr "" -"AVISO: a assintura do ID do utilizador tem data %d segundos no futuro\n" +msgstr "AVISO: a assinatura da ID do utilizador está a %d segundos no futuro\n" -#, fuzzy, c-format -#| msgid "You can't delete the last user ID!\n" +#, c-format msgid "Cannot revoke the last valid user ID.\n" -msgstr "Você não pode remover o último ID de utilizador!\n" +msgstr "Não é possível revogar a última ID de utilizador válida.\n" -#, fuzzy, c-format +#, c-format msgid "Key %s is already revoked.\n" -msgstr "o utilizador com o id \"%s\" já está revocado\n" +msgstr "A chave %s já está revogada.\n" -#, fuzzy, c-format +#, c-format msgid "Subkey %s is already revoked.\n" -msgstr "o utilizador com o id \"%s\" já está revocado\n" +msgstr "A subchave %s já está revogada.\n" -#, fuzzy, c-format +#, c-format msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n" -msgstr "" -"A mostrar a fotografia %s com o tamanho %ld da chave 0x%08lX (uid %d)\n" +msgstr "Exibindo ID fotográfica %s de tamanho %ld para a chave %s (uid %d)\n" -#, fuzzy, c-format +#, c-format msgid "invalid value for option '%s'\n" -msgstr "opções de importação inválidas\n" +msgstr "valor inválido para a opção '%s'\n" -#, fuzzy, c-format +#, c-format msgid "preference '%s' duplicated\n" -msgstr "preferência %c%lu duplicada\n" +msgstr "preferência '%s' duplicada\n" -#, fuzzy, c-format +#, c-format msgid "too many cipher preferences\n" -msgstr "demasiadas preferências `%c'\n" +msgstr "demasiadas preferências da cifra\n" -#, fuzzy, c-format +#, c-format msgid "too many digest preferences\n" -msgstr "demasiadas preferências `%c'\n" +msgstr "demasiadas preferências de digest\n" -#, fuzzy, c-format +#, c-format msgid "too many compression preferences\n" -msgstr "demasiadas preferências `%c'\n" +msgstr "demasiadas preferências de compressão\n" -#, fuzzy, c-format +#, c-format msgid "too many AEAD preferences\n" -msgstr "demasiadas preferências `%c'\n" +msgstr "demasiadas preferências AEAD\n" -#, fuzzy, c-format +#, c-format msgid "invalid item '%s' in preference string\n" -msgstr "caracter inválido na cadeia de caractéres da preferência\n" +msgstr "item inválido '%s' na string de preferência\n" #, c-format msgid "writing direct signature\n" -msgstr "a escrever a assinatura directa\n" +msgstr "escrevendo a assinatura direta\n" #, c-format msgid "writing self signature\n" -msgstr "a escrever a auto-assinatura\n" +msgstr "escrevendo a auto-assinatura\n" #, c-format msgid "writing key binding signature\n" -msgstr "a escrever a assinatura ligada a uma chave\n" +msgstr "escrevendo a assinatura ligada a uma chave\n" #, c-format msgid "keysize invalid; using %u bits\n" -msgstr "tamanho de chave inválido; a utilizar %u bits\n" +msgstr "tamanho de chave inválido; usando %u bits\n" #, c-format msgid "keysize rounded up to %u bits\n" @@ -4306,20 +4116,20 @@ msgstr "tamanho da chave arredondado para %u bits\n" msgid "" "WARNING: some OpenPGP programs can't handle a DSA key with this digest size\n" msgstr "" +"AVISO: alguns programas OpenPGP não conseguem lidar com uma chave DSA deste " +"tamanho de digest\n" -#, fuzzy msgid "Sign" -msgstr "sign" +msgstr "Assinar" msgid "Certify" -msgstr "" +msgstr "Certificar" -#, fuzzy msgid "Encrypt" -msgstr "cifrar dados" +msgstr "Cifrar" msgid "Authenticate" -msgstr "" +msgstr "Autenticar" #. TRANSLATORS: Please use only plain ASCII characters for the #. * translation. If this is not possible use single digits. The @@ -4332,143 +4142,129 @@ msgstr "" #. * q = Finish #. msgid "SsEeAaQq" -msgstr "" +msgstr "SsEeAaTt" #, c-format msgid "Possible actions for this %s key: " -msgstr "" +msgstr "Ações possíveis para esta chave %s: " msgid "Current allowed actions: " -msgstr "" +msgstr "Ações permitidas atualmente: " #, c-format msgid " (%c) Toggle the sign capability\n" -msgstr "" +msgstr " (%c) Alternar o capacidade de assinar\n" -#, fuzzy, c-format +#, c-format msgid " (%c) Toggle the encrypt capability\n" -msgstr " (%d) ElGamal (apenas cifragem)\n" +msgstr " (%c) Alternar a capacidade de cifrar\n" #, c-format msgid " (%c) Toggle the authenticate capability\n" -msgstr "" +msgstr " (%c) Alternar a capacidade de autenticação\n" #, c-format msgid " (%c) Finished\n" -msgstr "" +msgstr " (%c) Terminado\n" -#, fuzzy, c-format +#, c-format msgid " (%d) RSA and RSA%s\n" -msgstr " (%d) DSA e ElGamal (por omissão)\n" +msgstr " (%d) RSA e RSA%s\n" -#, fuzzy, c-format +#, c-format msgid " (%d) DSA and Elgamal%s\n" -msgstr " (%d) DSA e ElGamal (por omissão)\n" +msgstr " (%d) DSA e Elgamal%s\n" -#, fuzzy, c-format -#| msgid " (%d) DSA (sign only)\n" +#, c-format msgid " (%d) DSA (sign only)%s\n" -msgstr " (%d) DSA (apenas assinatura)\n" +msgstr " (%d) DSA (apenas de assinar)%s\n" -#, fuzzy, c-format -#| msgid " (%d) RSA (sign only)\n" +#, c-format msgid " (%d) RSA (sign only)%s\n" -msgstr " (%d) RSA (apenas assinatura)\n" +msgstr " (%d) RSA (apenas de assinar)%s\n" -#, fuzzy, c-format +#, c-format msgid " (%d) Elgamal (encrypt only)%s\n" -msgstr " (%d) ElGamal (apenas cifragem)\n" +msgstr " (%d) Elgamal (apenas de cifrar)%s\n" -#, fuzzy, c-format -#| msgid " (%d) RSA (encrypt only)\n" +#, c-format msgid " (%d) RSA (encrypt only)%s\n" -msgstr " (%d) RSA (apenas cifragem)\n" +msgstr " (%d) RSA (apenas de cifrar)%s\n" -#, fuzzy, c-format +#, c-format msgid " (%d) DSA (set your own capabilities)%s\n" -msgstr " (%d) RSA (apenas cifragem)\n" +msgstr " (%d) DSA (defina as suas capacidades)%s\n" -#, fuzzy, c-format +#, c-format msgid " (%d) RSA (set your own capabilities)%s\n" -msgstr " (%d) RSA (apenas cifragem)\n" +msgstr " (%d) RSA (defina as suas capacidades)%s\n" -#, fuzzy, c-format -#| msgid " (%d) ElGamal (sign and encrypt)\n" +#, c-format msgid " (%d) ECC (sign and encrypt)%s\n" -msgstr " (%d) ElGamal (assinatura e cifragem)\n" +msgstr " (%d) ECC (de assinar e cifrar)%s\n" -#, fuzzy -#| msgid " (default)" msgid " *default*" -msgstr " (por omissão)" +msgstr " *pré-definição*" -#, fuzzy, c-format -#| msgid " (%d) DSA (sign only)\n" +#, c-format msgid " (%d) ECC (sign only)\n" -msgstr " (%d) DSA (apenas assinatura)\n" +msgstr " (%d) ECC (apenas de assinar)\n" -#, fuzzy, c-format +#, c-format msgid " (%d) ECC (set your own capabilities)%s\n" -msgstr " (%d) RSA (apenas cifragem)\n" +msgstr " (%d) ECC (defina as suas capacidades)%s\n" -#, fuzzy, c-format -#| msgid " (%d) RSA (encrypt only)\n" +#, c-format msgid " (%d) ECC (encrypt only)%s\n" -msgstr " (%d) RSA (apenas cifragem)\n" +msgstr " (%d) ECC (apenas de cifrar)%s\n" -#, fuzzy, c-format +#, c-format msgid " (%d) Existing key%s\n" -msgstr " (%d) RSA (apenas cifragem)\n" +msgstr " (%d) Chave existente%s\n" -#, fuzzy, c-format +#, c-format msgid " (%d) Existing key from card%s\n" -msgstr " (%d) RSA (apenas cifragem)\n" +msgstr " (%d) Chave do cartão existente%s\n" -#, fuzzy msgid "Enter the keygrip: " -msgstr "Notação de assinatura: " +msgstr "Introduzir o keygrip: " #, c-format msgid "Not a valid keygrip (expecting 40 hex digits)\n" -msgstr "" +msgstr "Não é um keygrip válido (à espera de 40 dígitos hex)\n" -#, fuzzy msgid "No key with this keygrip\n" -msgstr "Nenhum ID de utilizador com índice %d\n" +msgstr "Nenhuma chave com este keygrip\n" -#, fuzzy, c-format +#, c-format msgid "error reading the card: %s\n" -msgstr "%s: erro ao ler registo livre: %s\n" +msgstr "erro ao ler o cartão: %s\n" -#, fuzzy, c-format +#, c-format msgid "Serial number of the card: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "Número de série do cartão: %s\n" -#, fuzzy msgid "Available keys:\n" -msgstr "desactiva uma chave" +msgstr "Chaves disponíveis:\n" -#, fuzzy, c-format -#| msgid "rounded up to %u bits\n" +#, c-format msgid "rounded to %u bits\n" msgstr "arredondado para %u bits\n" #, c-format msgid "%s keys may be between %u and %u bits long.\n" -msgstr "" +msgstr "As chaves %s podem estar entre %u e %u bits de comprimento.\n" -#, fuzzy, c-format +#, c-format msgid "What keysize do you want for the subkey? (%u) " -msgstr "Qual o tamanho de chave desejado? (1024) " +msgstr "Qual o tamanho de chave que você deseja para a subchave? (%u) " #, c-format msgid "Requested keysize is %u bits\n" msgstr "O tamanho de chave pedido é %u bits\n" -#, fuzzy -#| msgid "Please select what kind of key you want:\n" msgid "Please select which elliptic curve you want:\n" -msgstr "Por favor selecione o tipo de chave desejado:\n" +msgstr "Selecione qual a curva elíptica que você deseja:\n" msgid "" "Please specify how long the key should be valid.\n" @@ -4478,7 +4274,7 @@ msgid "" " m = key expires in n months\n" " y = key expires in n years\n" msgstr "" -"Por favor especifique por quanto tempo a chave deve ser válida.\n" +"Especifique quando a chave expira.\n" " 0 = chave não expira\n" " = chave expira em n dias\n" " w = chave expira em n semanas\n" @@ -4493,7 +4289,7 @@ msgid "" " m = signature expires in n months\n" " y = signature expires in n years\n" msgstr "" -"Por favor especifique por quanto tempo a assinatura deve ser válida.\n" +"Especifique quando a assinatura expira.\n" " 0 = assinatura não expira\n" " = assinatura expira em n dias\n" " w = assinatura expira em n semanas\n" @@ -4501,53 +4297,52 @@ msgstr "" " y = assinatura expira em n anos\n" msgid "Key is valid for? (0) " -msgstr "A chave é valida por? (0) " +msgstr "Quando a chave expira? (0) " -#, fuzzy, c-format +#, c-format msgid "Signature is valid for? (%s) " -msgstr "A assinatura é valida por? (0) " +msgstr "Quando a assinatura expira? (%s) " msgid "invalid value\n" msgstr "valor inválido\n" -#, fuzzy msgid "Key does not expire at all\n" -msgstr "A %s não expira nunca\n" +msgstr "A chave não expira de forma alguma\n" -#, fuzzy msgid "Signature does not expire at all\n" -msgstr "A %s não expira nunca\n" +msgstr "A assinatura não expira de forma alguma\n" -#, fuzzy, c-format +#, c-format msgid "Key expires at %s\n" -msgstr "%s expira em %s\n" +msgstr "A chave expira em %s\n" -#, fuzzy, c-format +#, c-format msgid "Signature expires at %s\n" -msgstr "Esta assinatura expirou em %s.\n" +msgstr "A assinatura expira em %s\n" msgid "" "Your system can't display dates beyond 2038.\n" "However, it will be correctly handled up to 2106.\n" msgstr "" "O seu sistema não consegue mostrar datas para além de 2038.\n" -"No entanto, estas vão ser tratadas correctamente até 2106.\n" +"No entanto, será lidado corretamente até 2106.\n" -#, fuzzy msgid "Is this correct? (y/N) " -msgstr "Está correto (s/n)? " +msgstr "Isto está correto? (s/N) " msgid "" "\n" "GnuPG needs to construct a user ID to identify your key.\n" "\n" msgstr "" +"\n" +"O GnuPG precisa construir uma ID de utilizador para identificar sua chave.\n" +"\n" #. TRANSLATORS: This string is in general not anymore used #. but you should keep your existing translation. In case #. the new string is not translated this old string will #. be used. -#, fuzzy msgid "" "\n" "You need a user ID to identify your key; the software constructs the user " @@ -4557,39 +4352,37 @@ msgid "" "\n" msgstr "" "\n" -"Você precisa de um identificador de utilizador para identificar sua chave; " -"o\n" -"programa constrói o identificador a partir do Nome Completo, Comentário e\n" -"Endereço Eletrónico desta forma:\n" +"Você precisa de uma ID de utilizador para identificar sua chave; o\n" +"software constrói a ID de utilizador a partir de o Nome Verdadeiro, o\n" +"Comentário, e o Endereço de email com esta forma:\n" " \"Heinrich Heine (Der Dichter) \"\n" "\n" msgid "Real name: " -msgstr "Nome completo: " +msgstr "Nome verdadeiro: " msgid "Invalid character in name\n" -msgstr "Caracter inválido no nome\n" +msgstr "Caractere inválido no nome\n" #, c-format msgid "The characters '%s' and '%s' may not appear in name\n" -msgstr "" +msgstr "Os caracteres '%s' e '%s' não podem aparecer no nome\n" msgid "Email address: " -msgstr "Endereço de correio eletrónico: " +msgstr "Endereço de email: " msgid "Not a valid email address\n" -msgstr "Endereço eletrónico inválido\n" +msgstr "Endereço de email inválido\n" msgid "Comment: " msgstr "Comentário: " msgid "Invalid character in comment\n" -msgstr "Caracter inválido no comentário\n" +msgstr "Caractere inválido no comentário\n" -#, fuzzy, c-format -#| msgid "You are using the `%s' character set.\n" +#, c-format msgid "You are using the '%s' character set.\n" -msgstr "Você está usando o conjunto de caracteres `%s'.\n" +msgstr "Você está usando o set de caracteres '%s'.\n" #, c-format msgid "" @@ -4597,17 +4390,15 @@ msgid "" " \"%s\"\n" "\n" msgstr "" -"Você selecionou este identificador de utilizador:\n" +"Você selecionou este USER-ID:\n" " \"%s\"\n" "\n" msgid "Please don't put the email address into the real name or the comment\n" -msgstr "" -"Por favor não coloque o endereço de email no nome verdadeiro ou no " -"comentário\n" +msgstr "Não coloque o endereço de email no nome verdadeiro ou no comentário\n" msgid "Such a user ID already exists on this key!\n" -msgstr "" +msgstr "Tal ID de utilizador já existe nesta chave!\n" #. TRANSLATORS: These are the allowed answers in #. lower and uppercase. Below you will find the matching @@ -4624,23 +4415,19 @@ msgid "NnCcEeOoQq" msgstr "NnCcEeOoSs" msgid "Change (N)ame, (C)omment, (E)mail or (Q)uit? " -msgstr "Mudar (N)ome, (C)omentário, (E)mail ou (S)air? " +msgstr "Alterar (N)ome, (C)omentário, (E)mail, ou (S)air? " msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? " -msgstr "Mudar (N)ome, (C)omentário, (E)ndereço ou (O)k/(S)air? " +msgstr "Alterar (N)ome, (C)omentário, (E)ndereço, ou (O)k/(S)air? " -#, fuzzy -#| msgid "Change (N)ame, (C)omment, (E)mail or (Q)uit? " msgid "Change (N)ame, (E)mail, or (Q)uit? " -msgstr "Mudar (N)ome, (C)omentário, (E)mail ou (S)air? " +msgstr "Alterar (N)ome, (E)mail, ou (S)air? " -#, fuzzy -#| msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? " msgid "Change (N)ame, (E)mail, or (O)kay/(Q)uit? " -msgstr "Mudar (N)ome, (C)omentário, (E)ndereço ou (O)k/(S)air? " +msgstr "Alterar (N)ome, (E)mail, ou (O)k/(S)air? " msgid "Please correct the error first\n" -msgstr "Por favor corrija primeiro o erro\n" +msgstr "Corrija primeiro o erro\n" msgid "" "We need to generate a lot of random bytes. It is a good idea to perform\n" @@ -4649,13 +4436,13 @@ msgid "" "generator a better chance to gain enough entropy.\n" msgstr "" "Precisamos gerar muitos bytes aleatórios. É uma boa ideia realizar outra\n" -"actividade (escrever no teclado, mover o rato, usar os discos) durante a\n" -"geração dos números primos; isso dá ao gerador de números aleatórios\n" +"atividade (escrever no teclado, mover o rato, usar os discos) durante a\n" +"geração dos números primos; isto dá ao gerador de números aleatórios\n" "uma hipótese maior de ganhar entropia suficiente.\n" #, c-format msgid "WARNING: v4 is specified, but overridden by v5.\n" -msgstr "" +msgstr "AVISO: v4 está especificada, mas é sobreposta pela v5.\n" #, c-format msgid "Key generation failed: %s\n" @@ -4667,119 +4454,117 @@ msgid "" " \"%s\"\n" "\n" msgstr "" +"Prestes a criar uma chave para:\n" +" \"%s\"\n" +"\n" msgid "Continue? (Y/n) " -msgstr "" +msgstr "Continuar? (S/n) " -#, fuzzy, c-format +#, c-format msgid "A key for \"%s\" already exists\n" -msgstr "%s' já comprimido\n" +msgstr "Já existe uma chave para \"%s\"\n" -#, fuzzy -#| msgid "Create anyway? " msgid "Create anyway? (y/N) " -msgstr "Criar mesmo assim?" +msgstr "Mesmo assim, criar? (s/N) " -#, fuzzy, c-format -#| msgid "Create anyway? " +#, c-format msgid "creating anyway\n" -msgstr "Criar mesmo assim?" +msgstr "mesmo assim, criando\n" #, c-format msgid "Note: Use \"%s %s\" for a full featured key generation dialog.\n" msgstr "" +"Nota: Usar \"%s %s\" para uma caixa de diálogo completa de geração de " +"chave.\n" #, c-format msgid "Key generation canceled.\n" msgstr "Geração de chave cancelada.\n" -#, fuzzy, c-format +#, c-format msgid "can't create backup file '%s': %s\n" -msgstr "impossível criar `%s': %s\n" +msgstr "não é possível criar o ficheiro de backup '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "Note: backup of card key saved to '%s'\n" -msgstr "NOTA: chave secreta %08lX expirou em %s\n" +msgstr "Nota: backup da chave do cartão guardada em '%s'\n" -#, fuzzy, c-format -#| msgid "writing public key to `%s'\n" +#, c-format msgid "writing public key to '%s'\n" -msgstr "a escrever chave pública para `%s'\n" +msgstr "escrevendo chave pública para '%s'\n" #, c-format msgid "no writable public keyring found: %s\n" -msgstr "nenhum porta-chaves público com permissões de escrita encontrado: %s\n" +msgstr "nenhum porta-chaves público com permissão de escrita encontrado: %s\n" -#, fuzzy, c-format -#| msgid "error writing public keyring `%s': %s\n" +#, c-format msgid "error writing public keyring '%s': %s\n" -msgstr "erro ao escrever no porta-chaves público `%s': %s\n" +msgstr "erro ao escrever o porta-chaves público '%s': %s\n" msgid "public and secret key created and signed.\n" msgstr "chaves pública e privada criadas e assinadas.\n" -#, fuzzy msgid "" "Note that this key cannot be used for encryption. You may want to use\n" "the command \"--edit-key\" to generate a subkey for this purpose.\n" msgstr "" -"Note que esta chave não pode ser usada para cifragem. Você pode usar\n" -"o comando \"--edit-key\" para gerar uma chave secundária para esse fim.\n" +"Repare que esta chave não pode ser usada para cifração. Poderá querer usar\n" +"o comando \"--edit-key\" para gerar uma subchave com esta finalidade.\n" #, c-format msgid "" "key has been created %lu second in future (time warp or clock problem)\n" msgstr "" -"a chave foi criada %lu segundo no futuro\n" -"(viagem no tempo ou problema no relógio)\n" +"chave foi criada %lu segundo no futuro (deformação temporal ou problema de " +"relógio)\n" #, c-format msgid "" "key has been created %lu seconds in future (time warp or clock problem)\n" msgstr "" -"a chave foi criada %lu segundos no futuro\n" -"(viagem no tempo ou problema no relógio)\n" +"chave foi criada %lu segundos no futuro (deformação temporal ou problema de " +"relógio)\n" -#, fuzzy, c-format -#| msgid "NOTE: creating subkeys for v3 keys is not OpenPGP compliant\n" +#, c-format msgid "Note: creating subkeys for v3 keys is not OpenPGP compliant\n" -msgstr "NOTA: a criação de sub-chave para chaves v3 não respeito o OpenPGP\n" +msgstr "" +"Nota: a criação de subchaves para chaves v3 não é compatível com OpenPGP\n" #, c-format msgid "Secret parts of primary key are not available.\n" -msgstr "Componentes secretas da chave primária não disponíveis.\n" +msgstr "Partes secretas da chave principal não disponíveis.\n" -#, fuzzy, c-format +#, c-format msgid "Secret parts of primary key are stored on-card.\n" -msgstr "Componentes secretas da chave primária não disponíveis.\n" +msgstr "Partes secretas da chave principal estão armazenadas no cartão.\n" -#, fuzzy msgid "Really create? (y/N) " -msgstr "Realmente criar? " +msgstr "De certeza que deseja criar? (s/N) " msgid "never " -msgstr "" +msgstr "nunca " msgid "AEAD: " -msgstr "" +msgstr "AEAD: " msgid "Digest: " -msgstr "'Digest': " +msgstr "Digest: " msgid "Features: " msgstr "Características: " msgid "Keyserver no-modify" -msgstr "" +msgstr "Servidor de chaves no-modify" msgid "Critical signature policy: " -msgstr "Politica de assinatura crítica: " +msgstr "Política de assinatura crítica: " msgid "Signature policy: " -msgstr "Politica de assinatura: " +msgstr "Política de assinatura: " msgid "Critical preferred keyserver: " -msgstr "" +msgstr "Servidor de chaves preferencial crítico: " msgid "Critical signature notation: " msgstr "Notação de assinatura crítica: " @@ -4787,208 +4572,200 @@ msgstr "Notação de assinatura crítica: " msgid "Signature notation: " msgstr "Notação de assinatura: " -#, fuzzy, c-format -#| msgid "%d bad signatures\n" +#, c-format msgid "%d good signature\n" msgid_plural "%d good signatures\n" -msgstr[0] "%d assinaturas incorrectas\n" -msgstr[1] "%d assinaturas incorrectas\n" +msgstr[0] "%d assinatura válida\n" +msgstr[1] "%d assinaturas válidas\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 assinatura não verificada devido a um erro\n" -msgstr[1] "1 assinatura não verificada devido a um erro\n" +msgstr[0] "%d assinatura não verificada devido a erro\n" +msgstr[1] "%d assinaturas não verificadas devido a erros\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] "" -msgstr[1] "" +msgstr[0] "Aviso: %lu chave ignorada devido ao seu tamanho grande\n" +msgstr[1] "Aviso: %lu chaves ignoradas devido aos seus tamanhos grandes\n" msgid "Keyring" msgstr "Porta-chaves" msgid "Primary key fingerprint:" -msgstr "Impressão da chave primária:" +msgstr "Impressão digital da chave principal:" msgid " Subkey fingerprint:" -msgstr " Impressão da subchave:" +msgstr " Impressão digital da subchave:" #. TRANSLATORS: this should fit into 24 bytes so that the #. * fingerprint data is properly aligned with the user ID msgid " Primary key fingerprint:" -msgstr "Impressão da chave primária:" +msgstr " Impressão chave princ.:" msgid " Subkey fingerprint:" -msgstr " Impressão da subchave:" +msgstr " Impressão da subchave:" -#, fuzzy msgid " Key fingerprint =" -msgstr " Impressão da chave =" +msgstr " Impressão da chave =" msgid " Card serial no. =" -msgstr "" +msgstr "Nº de série do cartão =" -#, fuzzy, c-format +#, c-format msgid "caching keyring '%s'\n" -msgstr "a verificar o porta chaves `%s'\n" +msgstr "guardando na cache do porta-chaves '%s'\n" -#, fuzzy, c-format +#, c-format msgid "%lu keys cached so far (%lu signature)\n" msgid_plural "%lu keys cached so far (%lu signatures)\n" -msgstr[0] "%lu chave verificadas (%lu assinaturas)\n" -msgstr[1] "%lu chave verificadas (%lu assinaturas)\n" +msgstr[0] "" +"%lu chaves que, até agora, foram guardadas na cache (%lu assinatura)\n" +msgstr[1] "" +"%lu chaves que, até agora, foram guardadas na cache (%lu assinaturas)\n" #, c-format msgid "%lu key cached" msgid_plural "%lu keys cached" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%lu chave guardada na cache" +msgstr[1] "%lu chaves guardadas na cache" -#, fuzzy, c-format -#| msgid "1 bad signature\n" +#, c-format msgid " (%lu signature)\n" msgid_plural " (%lu signatures)\n" -msgstr[0] "1 assinatura incorrecta\n" -msgstr[1] "1 assinatura incorrecta\n" +msgstr[0] " (%lu assinatura)\n" +msgstr[1] " (%lu assinaturas)\n" #, c-format msgid "%s: keyring created\n" msgstr "%s: porta-chaves criado\n" msgid "override proxy options set for dirmngr" -msgstr "" +msgstr "sobrepor opções de proxy definidas para dirmngr" msgid "include revoked keys in search results" -msgstr "" +msgstr "incluir chaves revogadas nos resultados da pesquisa" msgid "include subkeys when searching by key ID" -msgstr "" +msgstr "incluir subchaves ao pesquisar pela ID de chave" msgid "override timeout options set for dirmngr" -msgstr "" +msgstr "sobrepor opções de tempo limite definidas para dirmngr" msgid "automatically retrieve keys when verifying signatures" -msgstr "" +msgstr "obter chaves automaticamente quando se verifica assinaturas" -#, fuzzy msgid "honor the preferred keyserver URL set on the key" -msgstr "a URL de política de assinatura dada é inválida\n" +msgstr "honrar a URL do servidor de chaves preferencial definida na chave" -#, fuzzy msgid "disabled" -msgstr "disable" +msgstr "desabilitado" msgid "Enter number(s), N)ext, or Q)uit > " -msgstr "" +msgstr "Introduzir o(s) número(s), N)ext, ou Q)uit > " -#, fuzzy, c-format +#, c-format msgid "invalid keyserver protocol (us %d!=handler %d)\n" -msgstr "opções de exportação inválidas\n" +msgstr "protocolo de servidor de chaves inválido (nós %d!=handler %d)\n" #, c-format msgid "\"%s\" not a key ID: skipping\n" -msgstr "" +msgstr "\"%s\" não é uma ID de chave: ignorando\n" -#, fuzzy, c-format +#, c-format msgid "refreshing %d key from %s\n" msgid_plural "refreshing %d keys from %s\n" -msgstr[0] "a pedir a chave %08lX de %s\n" -msgstr[1] "a pedir a chave %08lX de %s\n" +msgstr[0] "atualizando %d chave de %s\n" +msgstr[1] "atualizando %d chaves de %s\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unable to refresh key %s via %s: %s\n" -msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" +msgstr "AVISO: não é possível atualizar a chave %s via %s: %s\n" -#, fuzzy, c-format +#, c-format msgid "key \"%s\" not found on keyserver\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "chave \"%s\" não encontrada no servidor de chaves\n" -#, fuzzy, c-format +#, c-format msgid "key not found on keyserver\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "chave não encontrada no servidor de chaves\n" -#, fuzzy, c-format +#, c-format msgid "requesting key %s from %s\n" -msgstr "a pedir a chave %08lX de %s\n" +msgstr "pedindo chave %s de %s\n" -#, fuzzy, c-format +#, c-format msgid "no keyserver known\n" -msgstr "opções de exportação inválidas\n" +msgstr "nenhum servidor de chaves conhecido\n" -#, fuzzy, c-format +#, c-format msgid "skipped \"%s\": %s\n" -msgstr "ignorado `%s': %s\n" +msgstr "ignorado \"%s\": %s\n" -#, fuzzy, c-format +#, c-format msgid "sending key %s to %s\n" -msgstr "" -"\"\n" -"assinado com a sua chave %08lX em %s\n" +msgstr "enviando a chave %s para %s\n" -#, fuzzy, c-format +#, c-format msgid "requesting key from '%s'\n" -msgstr "a pedir a chave %08lX de %s\n" +msgstr "pedindo chave de '%s'\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unable to fetch URI %s: %s\n" -msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" +msgstr "AVISO: não é possível buscar o URI %s: %s\n" #, c-format msgid "weird size for an encrypted session key (%d)\n" msgstr "tamanho estranho para uma chave de sessão cifrada (%d)\n" -#, fuzzy, c-format +#, c-format msgid "%s.%s encrypted session key\n" -msgstr "tamanho estranho para uma chave de sessão cifrada (%d)\n" +msgstr "%s.%s chave de sessão cifrada\n" -#, fuzzy, c-format -#| msgid "%s encrypted data\n" +#, c-format msgid "%s.%s encrypted data\n" -msgstr "dados cifrados com %s\n" +msgstr "%s.%s dados cifrados\n" -#, fuzzy, c-format -#| msgid "encrypted with unknown algorithm %d\n" +#, c-format msgid "encrypted with unknown algorithm %d.%s\n" -msgstr "cifrado com algoritmo desconhecido %d\n" +msgstr "cifrado com algoritmo desconhecido %d.%s\n" -#, fuzzy, c-format +#, c-format msgid "passphrase generated with unknown digest algorithm %d\n" -msgstr "cifrado com algoritmo desconhecido %d\n" +msgstr "frase-secreta gerada com algoritmo de digest desconhecido %d\n" -#, fuzzy, c-format +#, c-format msgid "public key is %s\n" -msgstr "a chave pública é %08lX\n" +msgstr "chave pública é %s\n" -#, fuzzy, c-format +#, c-format msgid "encrypted with %s key, ID %s, created %s\n" -msgstr "cifrado com chave %u-bit %s, ID %08lX, criada em %s\n" +msgstr "cifrado com chave %s, ID %s, criado em %s\n" -#, fuzzy, c-format +#, c-format msgid " \"%s\"\n" -msgstr " ou \"" +msgstr " \"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "encrypted with %s key, ID %s\n" -msgstr "cifrado com chave %s, ID %08lX\n" +msgstr "cifrado com chave %s, ID %s\n" #, c-format msgid "WARNING: multiple plaintexts seen\n" -msgstr "" +msgstr "AVISO: vários textos simples vistos\n" -#, fuzzy, c-format +#, c-format msgid "encrypted with %lu passphrases\n" -msgstr "Repita a frase secreta\n" +msgstr "cifrado com %lu frase-secretas\n" -#, fuzzy, c-format +#, c-format msgid "encrypted with 1 passphrase\n" -msgstr "Repita a frase secreta\n" +msgstr "cifrado com 1 frase-secreta\n" #, c-format msgid "public key decryption failed: %s\n" -msgstr "decifragem de chave pública falhou: %s\n" +msgstr "falha ao decifrar com chave pública: %s\n" #, c-format msgid "public key encrypted data: good DEK\n" @@ -4996,34 +4773,36 @@ msgstr "dados cifrados com chave pública: DEK válido\n" #, c-format msgid "assuming %s encrypted data\n" -msgstr "a assumir dados cifrados %s\n" +msgstr "assumindo %s dados cifrados\n" #, c-format msgid "IDEA cipher unavailable, optimistically attempting to use %s instead\n" -msgstr "Cifra IDEO não disponível, a tentar utilizar %s em substituição\n" +msgstr "a cifra IDEA não está disponível, tentando utilizar %s invés\n" #, c-format msgid "WARNING: message was not integrity protected\n" -msgstr "AVISO: a mensagem não tinha a sua integridade protegida\n" +msgstr "AVISO: a mensagem não tinha proteção de integridade\n" msgid "" "Hint: If this message was created before the year 2003 it is\n" "likely that this message is legitimate. This is because back\n" "then integrity protection was not widely used.\n" msgstr "" +"Dica: Se esta mensagem foi criada antes do ano de 2003 é\n" +"provável que esta mensagem seja legítima. Isto porque dantes\n" +"a proteção da integridade não era amplamente utilizada.\n" #, c-format msgid "Use the option '%s' to decrypt anyway.\n" -msgstr "" +msgstr "Usar a opção '%s' para, mesmo assim, decifrar.\n" -#, fuzzy, c-format -#| msgid "decryption failed: %s\n" +#, c-format msgid "decryption forced to fail!\n" -msgstr "decifragem falhou: %s\n" +msgstr "decifração forçada a falhar!\n" #, c-format msgid "decryption okay\n" -msgstr "decifragem correcta\n" +msgstr "decifração ok\n" #, c-format msgid "WARNING: encrypted message has been manipulated!\n" @@ -5031,16 +4810,16 @@ msgstr "CUIDADO: a mensagem cifrada foi manipulada!\n" #, c-format msgid "decryption failed: %s\n" -msgstr "decifragem falhou: %s\n" +msgstr "decifração falhou: %s\n" #, c-format msgid "operation forced to fail due to unfulfilled compliance rules\n" msgstr "" +"operação forçada a falhar devido a regras de conformidade não cumpridas\n" -#, fuzzy, c-format -#| msgid "NOTE: sender requested \"for-your-eyes-only\"\n" +#, c-format msgid "Note: sender requested \"for-your-eyes-only\"\n" -msgstr "NOTA: o remetente solicitou \"apenas-para-seus-olhos\"\n" +msgstr "Nota: remetente pediu \"for-your-eyes-only\"\n" #, c-format msgid "original file name='%.*s'\n" @@ -5048,317 +4827,307 @@ msgstr "nome do ficheiro original='%.*s'\n" #, c-format msgid "standalone revocation - use \"gpg --import\" to apply\n" -msgstr "revocação solitária - utilize \"gpg --import\" para aplicar\n" +msgstr "revogação autónoma - usar \"gpg --import\" para aplicar\n" -#, fuzzy, c-format +#, c-format msgid "no signature found\n" -msgstr "Assinatura correcta de \"" +msgstr "nenhuma assinatura encontrada\n" -#, fuzzy, c-format +#, c-format msgid "BAD signature from \"%s\"" -msgstr "Assinatura INCORRECTA de \"" +msgstr "Assinatura INVÁLIDA de \"%s\"" -#, fuzzy, c-format +#, c-format msgid "Expired signature from \"%s\"" -msgstr "Assinatura expirada de \"" +msgstr "Assinatura expirada de \"%s\"" -#, fuzzy, c-format +#, c-format msgid "Good signature from \"%s\"" -msgstr "Assinatura correcta de \"" +msgstr "Assinatura válida de \"%s\"" #, c-format msgid "signature verification suppressed\n" msgstr "verificação de assinatura suprimida\n" -#, fuzzy, c-format +#, c-format msgid "can't handle this ambiguous signature data\n" -msgstr "não consigo tratar estas assinaturas múltiplas\n" +msgstr "não é possível lidar com esses dados de assinatura ambíguos\n" -#, fuzzy, c-format +#, c-format msgid "Signature made %s\n" -msgstr "Esta assinatura expirou em %s.\n" +msgstr "Assinatura feita em %s\n" -#, fuzzy, c-format +#, c-format msgid " using %s key %s\n" -msgstr " ou \"" +msgstr " usando a chave %s de %s\n" -#, fuzzy, c-format +#, c-format msgid "Signature made %s using %s key ID %s\n" -msgstr "Assinatura feita em %.*s usando %s, ID da chave %08lX\n" +msgstr "Assinatura feita em %s usando %s com ID de chave %s\n" -#, fuzzy, c-format +#, c-format msgid " issuer \"%s\"\n" -msgstr " ou \"" +msgstr " emissor \"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "Key available at: " -msgstr "Nenhuma ajuda disponível" +msgstr "Chave disponível em: " #, c-format msgid "Note: Use '%s' to make use of this info\n" -msgstr "" +msgstr "Nota: Usar '%s' para fazer uso desta info\n" msgid "[uncertain]" msgstr "[incerto]" -#, fuzzy, c-format +#, c-format msgid " aka \"%s\"" -msgstr " ou \"" +msgstr " aka \"%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 "AVISO: Esta chave não está certificada com uma assinatura confiável!\n" +msgstr "AVISO: Esta chave não é adequada para assinar no modo %s\n" -#, fuzzy, c-format +#, c-format msgid "Signature expired %s\n" -msgstr "Esta assinatura expirou em %s.\n" +msgstr "A assinatura expirou %s\n" -#, fuzzy, c-format +#, c-format msgid "Signature expires %s\n" -msgstr "Esta assinatura expirou em %s.\n" +msgstr "A assinatura expira %s\n" -#, fuzzy, c-format +#, c-format msgid "%s signature, digest algorithm %s%s%s\n" -msgstr "assinatura %s de: \"%s\"\n" +msgstr "assinatura %s, algoritmo de digest %s%s%s\n" -#, fuzzy msgid "binary" -msgstr "primary" +msgstr "binário" msgid "textmode" -msgstr "" +msgstr "modo de texto" -#, fuzzy msgid "unknown" -msgstr "versão desconhecida" +msgstr "desconhecido" -#, fuzzy -#| msgid "unknown pubkey algorithm" msgid ", key algorithm " -msgstr "algoritmo de chave pública desconhecido" +msgstr ", algoritmo da chave " #, c-format msgid "WARNING: not a detached signature; file '%s' was NOT verified!\n" msgstr "" +"ATENÇÃO: não é uma assinatura desanexada; ficheiro '%s' NÃO foi verificado!\n" #, c-format msgid "Can't check signature: %s\n" -msgstr "Impossível verificar assinatura: %s\n" +msgstr "Não é possível verificar a assinatura: %s\n" #, c-format msgid "not a detached signature\n" -msgstr "não é uma assinatura separada\n" +msgstr "não é uma assinatura desanexada\n" #, c-format msgid "" "WARNING: multiple signatures detected. Only the first will be checked.\n" msgstr "" -"AVISO: várias assinaturas detectadas. Apenas a primeira será verificada.\n" +"AVISO: várias assinaturas detetadas. Apenas a primeira será verificada.\n" #, c-format msgid "standalone signature of class 0x%02x\n" -msgstr "assinatura de classe 0x%02x\n" +msgstr "assinatura autónoma da classe 0x%02x\n" #, c-format msgid "old style (PGP 2.x) signature\n" -msgstr "formato de assinatura antigo (PGP2.x)\n" +msgstr "tipo de assinatura antigo (PGP 2.x)\n" -#, fuzzy, c-format +#, c-format msgid "fstat of '%s' failed in %s: %s\n" -msgstr "impossível abrir %s: %s\n" +msgstr "fstat de '%s' falhou em %s: %s\n" -#, fuzzy, c-format +#, c-format msgid "fstat(%d) failed in %s: %s\n" -msgstr "base de dados de confiança: leitura falhou (n=%d): %s\n" +msgstr "fstat(%d) falhou em %s: %s\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: using experimental public key algorithm %s\n" -msgstr "impossível manipular algoritmo de chave pública %d\n" +msgstr "AVISO: usando o algoritmo de chave pública experimental %s\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: Elgamal sign+encrypt keys are deprecated\n" -msgstr "" -"forçar o algoritmo de 'digest' %s (%d) viola as preferências do " -"destinatário\n" +msgstr "AVISO: chaves Elgamal de assinar+cifrar estão depreciadas\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: using experimental cipher algorithm %s\n" -msgstr "algoritmo de criptografia não implementado" +msgstr "AVISO: usando o algoritmo de cifra experimental %s\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: using experimental digest algorithm %s\n" -msgstr "assinatura %s de: \"%s\"\n" +msgstr "AVISO: usando o algoritmo de digest experimental %s\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: digest algorithm %s is deprecated\n" -msgstr "" -"forçar o algoritmo de 'digest' %s (%d) viola as preferências do " -"destinatário\n" +msgstr "AVISO: o algoritmo de digest %s foi depreciado\n" -#, fuzzy, c-format +#, c-format msgid "Note: signatures using the %s algorithm are rejected\n" -msgstr "assinatura %s de: \"%s\"\n" +msgstr "Nota: as assinaturas que usam o algoritmo %s são rejeitadas\n" -#, fuzzy, c-format +#, c-format msgid "Note: third-party key signatures using the %s algorithm are rejected\n" -msgstr "assinatura %s de: \"%s\"\n" +msgstr "" +"Nota: assinaturas de chave de terceiros usando o algoritmo %s são " +"rejeitadas\n" -#, fuzzy, c-format +#, c-format msgid "(reported error: %s)\n" -msgstr "armadura: %s\n" +msgstr "(reportado erro: %s)\n" -#, fuzzy, c-format +#, c-format msgid "(reported error: %s <%s>)\n" -msgstr "armadura: %s\n" +msgstr "(reportado erro: %s <%s>)\n" #, c-format msgid "(further info: " -msgstr "" +msgstr "(mais informações: " #, c-format msgid "%s:%d: deprecated option \"%s\"\n" -msgstr "%s:%d: opção depreciada \"%s\"\n" +msgstr "%s:%d: opção \"%s\" depreciada\n" #, c-format msgid "please use \"%s%s\" instead\n" -msgstr "por favor utilize \"%s%s\" em vez dela\n" +msgstr "use \"%s%s\" invés\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: \"%s\" is a deprecated command - do not use it\n" -msgstr "AVISO: \"%s\" é uma opção depreciada\n" +msgstr "AVISO: \"%s\" é um comando depreciado - não o use\n" -#, fuzzy, c-format +#, c-format msgid "%s:%u: \"%s\" is obsolete in this file - it only has effect in %s\n" -msgstr "AVISO: \"%s\" é uma opção depreciada\n" +msgstr "%s:%u: \"%s\" está obsoleto neste ficheiro - ele só tem efeito em %s\n" -#, fuzzy, c-format +#, c-format msgid "" "WARNING: \"%s%s\" is an obsolete option - it has no effect except on %s\n" -msgstr "AVISO: \"%s\" é uma opção depreciada\n" +msgstr "AVISO: \"%s%s\" é uma opção obsoleta - não tem efeito exceto em %s\n" -#, fuzzy msgid "Uncompressed" -msgstr "não processado" +msgstr "Descomprimido" #. TRANSLATORS: See doc/TRANSLATE about this string. -#, fuzzy msgid "uncompressed|none" -msgstr "não processado" +msgstr "descomprimido|nenhum" #, c-format msgid "this message may not be usable by %s\n" msgstr "esta mensagem poderá não ser utilizável pelo %s\n" -#, fuzzy, c-format +#, c-format msgid "ambiguous option '%s'\n" -msgstr "a ler opções de `%s'\n" +msgstr "opção ambígua '%s'\n" -#, fuzzy, c-format +#, c-format msgid "unknown option '%s'\n" -msgstr "destinatário por omissão desconhecido `%s'\n" +msgstr "opção desconhecida '%s'\n" #, c-format msgid "ECDSA public key is expected to be in SEC encoding multiple of 8 bits\n" msgstr "" +"É esperado que a chave pública ECDSA esteja na codificação SEC múltiplo de 8 " +"bits\n" -#, fuzzy, c-format +#, c-format msgid "unknown weak digest '%s'\n" -msgstr "classe de assinatura desconhecida" +msgstr "digest '%s' fraco e desconhecido\n" -#, fuzzy, c-format -#| msgid "File `%s' exists. " +#, c-format msgid "File '%s' exists. " -msgstr "Arquivo `%s' já existe. " +msgstr "O ficheiro '%s' existe. " -#, fuzzy msgid "Overwrite? (y/N) " -msgstr "Escrever por cima (s/N)? " +msgstr "Sobrescrever? (s/N) " #, c-format msgid "%s: unknown suffix\n" msgstr "%s: sufixo desconhecido\n" msgid "Enter new filename" -msgstr "Digite novo nome de ficheiro" +msgstr "Introduzir um novo nome de ficheiro" #, c-format msgid "writing to stdout\n" -msgstr "a escrever em \"stdout\"\n" +msgstr "escrevendo para stdout\n" -#, fuzzy, c-format -#| msgid "assuming signed data in `%s'\n" +#, c-format msgid "assuming signed data in '%s'\n" -msgstr "a assumir dados assinados em `%s'\n" +msgstr "assumindo dados assinados em '%s'\n" #, c-format msgid "can't handle public key algorithm %d\n" -msgstr "impossível manipular algoritmo de chave pública %d\n" +msgstr "não é possível lidar com o algoritmo de chave pública %d\n" #, c-format msgid "WARNING: potentially insecure symmetrically encrypted session key\n" msgstr "" +"AVISO: chave de sessão simetricamente cifrada potencialmente insegura\n" -#, fuzzy, c-format -#| msgid "Critical signature notation: " +#, c-format msgid "Unknown critical signature notation: " -msgstr "Notação de assinatura crítica: " +msgstr "Notação de assinatura crítica desconhecida: " #, c-format msgid "subpacket of type %d has critical bit set\n" -msgstr "subpacote do tipo %d tem bit crítico ligado\n" +msgstr "sub-pacote do tipo %d tem bit crítico definido\n" -#, fuzzy msgid "Please enter the passphrase for decryption." -msgstr "muda a frase secreta" +msgstr "Introduza a frase-secreta para decifração." msgid "Enter passphrase\n" -msgstr "Insira a frase secreta\n" +msgstr "Introduzir a frase-secreta\n" #, c-format msgid "cancelled by user\n" -msgstr "cancelado pelo utilizador\n" +msgstr "cancelada pelo utilizador\n" -#, fuzzy, c-format +#, c-format msgid " (main key ID %s)" -msgstr " (ID principal da chave %08lX)" +msgstr " (ID da chave principal %s)" -#, fuzzy msgid "Please enter the passphrase to unlock the OpenPGP secret key:" -msgstr "Por favor digite a frase secreta \n" +msgstr "Introduza a frase-secreta para desbloquear a chave secreta OpenPGP:" -#, fuzzy msgid "Please enter the passphrase to import the OpenPGP secret key:" -msgstr "Por favor digite a frase secreta \n" +msgstr "Introduza a frase-secreta para importar a chave secreta OpenPGP:" -#, fuzzy msgid "Please enter the passphrase to export the OpenPGP secret subkey:" -msgstr "Por favor digite a frase secreta \n" +msgstr "Introduza a frase-secreta para exportar a subchave secreta OpenPGP:" -#, fuzzy msgid "Please enter the passphrase to export the OpenPGP secret key:" -msgstr "Por favor digite a frase secreta \n" +msgstr "Introduza a frase-secreta para exportar a chave secreta OpenPGP:" -#, fuzzy msgid "Do you really want to permanently delete the OpenPGP secret subkey key:" -msgstr "Você quer realmente remover as chaves selecionadas? " +msgstr "" +"De certeza que você deseja apagar permanentemente a subchave secreta OpenPGP:" -#, fuzzy msgid "Do you really want to permanently delete the OpenPGP secret key:" -msgstr "Você quer realmente remover as chaves selecionadas? " +msgstr "" +"De certeza que você deseja apagar permanentemente a chave secreta OpenPGP:" -#, fuzzy msgid "Please enter the passphrase to export the secret key with keygrip:" -msgstr "Por favor digite a frase secreta \n" +msgstr "Introduza a frase-secreta para exportar a chave secreta com keygrip:" -#, fuzzy, c-format +#, c-format msgid "" "%s\n" "\"%.*s\"\n" "%u-bit %s key, ID %s,\n" "created %s%s.\n" "%s" -msgstr "chave de %u-bit/%s, ID %08lX, criada em %s" +msgstr "" +"%s\n" +"\"%.*s\"\n" +"%u-bit chave %s, ID %s,\n" +"criada %s%s.\n" +"%s" msgid "" "\n" @@ -5367,66 +5136,74 @@ msgid "" "very large picture, your key will become very large as well!\n" "Keeping the image close to 240x288 is a good size to use.\n" msgstr "" +"\n" +"Escolha uma imagem para usar como ID fotográfica. A imagem deve ser um\n" +"ficheiro JPEG.\n" +"Lembre-se de que a imagem é armazenada dentro da sua chave pública.\n" +"Se você usar uma imagem muito grande, sua chave também se vai tornar\n" +"muito grande!\n" +"Manter a imagem perto de 240x288 é um bom tamanho para se usar.\n" msgid "Enter JPEG filename for photo ID: " -msgstr "" +msgstr "Introduzir um nome do ficheiro JPEG para a ID fotográfica: " -#, fuzzy, c-format +#, c-format msgid "unable to open JPEG file '%s': %s\n" -msgstr "impossível abrir %s: %s\n" +msgstr "não é possível abrir o ficheiro JPEG '%s': %s\n" #, c-format msgid "This JPEG is really large (%d bytes) !\n" -msgstr "" +msgstr "Este JPEG é mesmo grande (%d bytes) !\n" -#, fuzzy msgid "Are you sure you want to use it? (y/N) " -msgstr "Você tem certeza de que quer adicioná-la de qualquer forma? (s/N) " +msgstr "Tem certeza de que deseja usá-lo? (s/N) " -#, fuzzy, c-format +#, c-format msgid "'%s' is not a JPEG file\n" -msgstr "%s: não é um base de dados de confiança\n" +msgstr "'%s' não é um ficheiro JPEG\n" -#, fuzzy msgid "Is this photo correct (y/N/q)? " -msgstr "Está correto (s/n)? " +msgstr "Esta foto está correta? (s/N/q) " #, c-format msgid "no remote program execution supported\n" -msgstr "" +msgstr "não há suporte a execução de programas remotos\n" -#, fuzzy, c-format +#, c-format msgid "this platform requires temporary files when calling external programs\n" -msgstr "%s: erro ao ler registo de versão: %s\n" +msgstr "" +"esta plataforma requer ficheiros temporários ao chamar programas externos\n" -#, fuzzy, c-format +#, c-format msgid "unable to execute shell '%s': %s\n" -msgstr "não foi possível alterar o exec-path para %s\n" +msgstr "não é possível executar o shell '%s': %s\n" #, c-format msgid "unnatural exit of external program\n" -msgstr "" +msgstr "saída não natural do programa externo\n" -#, fuzzy, c-format +#, c-format msgid "system error while calling external program: %s\n" -msgstr "%s: erro ao ler registo de versão: %s\n" +msgstr "erro do sistema ao chamar o programa externo: %s\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unable to remove tempfile (%s) '%s': %s\n" -msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" +msgstr "AVISO: não é possível remover o ficheiro temporário (%s) '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: unable to remove temp directory '%s': %s\n" -msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" +msgstr "AVISO: não é possível remover a pasta temporária '%s': %s\n" #, c-format msgid "" "external program calls are disabled due to unsafe options file permissions\n" msgstr "" +"As chamadas de programa externo estão desativadas devido a opções não\n" +"seguras de permissões de ficheiro\n" -#, fuzzy, c-format +#, c-format msgid "unable to display photo ID!\n" -msgstr "não foi possível alterar o exec-path para %s\n" +msgstr "não é possível exibir uma ID fotográfica!\n" #. TRANSLATORS: These are the allowed answers in lower and #. uppercase. Below you will find the matching strings which @@ -5439,76 +5216,71 @@ msgstr "não foi possível alterar o exec-path para %s\n" #. q = quit #. msgid "iImMqQsS" -msgstr "iImMqQsS" +msgstr "mMvVsSiI" -#, fuzzy msgid "No trust value assigned to:\n" -msgstr "" -"Nenhum valor de confiança designado para:\n" -"%4u%c/%08lX %s \"" +msgstr "Nenhum valor da confiança atribuído a:\n" -#, fuzzy, c-format +#, c-format msgid " aka \"%s\"\n" -msgstr " ou \"" +msgstr " aka \"%s\"\n" -#, fuzzy msgid "" "How much do you trust that this key actually belongs to the named user?\n" -msgstr "Esta chave provavelmente pertence ao dono\n" +msgstr "" +"Quanto é que você confia que esta chave realmente pertence a tal " +"utilizador?\n" -#, fuzzy, c-format +#, c-format msgid " %d = I don't know or won't say\n" -msgstr " %d = Não sei\n" +msgstr " %d = Não sei ou não vou dizer\n" -#, fuzzy, c-format +#, c-format msgid " %d = I do NOT trust\n" -msgstr " %d = Eu NÃO confio\n" +msgstr " %d = NÃO confio\n" -#, fuzzy, c-format +#, c-format msgid " %d = I trust ultimately\n" -msgstr " %d = Confio de forma total\n" +msgstr " %d = Confio plenamente\n" -#, fuzzy msgid " m = back to the main menu\n" -msgstr " m = voltar ao menu principal\n" +msgstr " v = voltar ao menu principal\n" -#, fuzzy msgid " s = skip this key\n" -msgstr " s = saltar esta chave\n" +msgstr " i = ignorar esta chave\n" -#, fuzzy msgid " q = quit\n" -msgstr " q = sair\n" +msgstr " s = sair\n" #, c-format msgid "" "The minimum trust level for this key is: %s\n" "\n" msgstr "" +"O nível mínimo da confiança para esta chave é: %s\n" +"\n" msgid "Your decision? " -msgstr "Decisão? " +msgstr "Sua decisão? " -#, fuzzy msgid "Do you really want to set this key to ultimate trust? (y/N) " -msgstr "Tem a certeza que quer confiar totalmente nesta chave?" +msgstr "" +"De certeza que você deseja definir confiança plena para esta chave? (s/N) " msgid "Certificates leading to an ultimately trusted key:\n" msgstr "Certificados que levam a uma chave confiada plenamente:\n" -#, fuzzy, c-format +#, c-format msgid "%s: There is no assurance this key belongs to the named user\n" -msgstr "" -"%08lx: Não há indicação de que a assinatura pertence realmente ao dono.\n" +msgstr "%s: Não há garantia de que esta chave pertence a tal utilizador\n" -#, fuzzy, c-format +#, c-format msgid "%s: There is limited assurance this key belongs to the named user\n" -msgstr "" -"%08lx: Não há indicação de que a assinatura pertence realmente ao dono.\n" +msgstr "%s: Há garantia limitada de que esta chave pertence a tal utilizador\n" -#, fuzzy, c-format +#, c-format msgid "This key probably belongs to the named user\n" -msgstr "Esta chave provavelmente pertence ao dono\n" +msgstr "Esta chave provavelmente pertence a tal utilizador\n" #, c-format msgid "This key belongs to us\n" @@ -5516,69 +5288,64 @@ msgstr "Esta chave pertence-nos\n" #, c-format msgid "%s: This key is bad! It has been marked as untrusted!\n" -msgstr "" +msgstr "%s: Esta chave é inválida! Foi marcada como não confiável!\n" -#, fuzzy 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 "" -"NÃO se tem certeza de que esta chave pertence ao seu dono.\n" -"Se você *realmente* sabe o que está a fazer, pode responder\n" -"sim à próxima pergunta\n" -"\n" +"Esta chave é inválida! Foi marcada como não confiável! Se você\n" +"tem a *certeza* do que está fazendo, você pode responder à próxima\n" +"pergunta com sim.\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" msgstr "" -"NÃO se tem certeza de que esta chave pertence ao seu dono.\n" -"Se você *realmente* sabe o que está a fazer, pode responder\n" -"sim à próxima pergunta\n" -"\n" +"NÃO é certo que a chave pertença à pessoa da ID de utilizador.\n" +"Se você tem a *certeza* do que está fazendo, você pode responder\n" +"à próxima pergunta com sim.\n" -#, fuzzy msgid "Use this key anyway? (y/N) " -msgstr "Usar esta chave de qualquer modo? " +msgstr "Mesmo assim, usar esta chave? (s/N) " #, c-format msgid "WARNING: Using untrusted key!\n" -msgstr "AVISO: A utilizar uma chave que não é de confiança!\n" +msgstr "AVISO: Usando chave não confiável!\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: this key might be revoked (revocation key not present)\n" msgstr "" -"AVISO: a chave %08lX pode estar revocada: chave de revocação %08lX não " -"presente.\n" +"AVISO: esta chave pode estar revogada (chave de revogação não presente)\n" -#, fuzzy, c-format +#, c-format msgid "checking User ID \"%s\"\n" -msgstr "ID de utilizador: \"" +msgstr "verificando a ID de Utilizador \"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "option %s given but issuer \"%s\" does not match\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "opção %s dada, mas não corresponde ao emissor \"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "issuer \"%s\" does not match any User ID\n" -msgstr "chave %08lX: não corresponde à nossa cópia\n" +msgstr "o emissor \"%s\" não corresponde a qualquer ID de Utilizador\n" -#, fuzzy, c-format +#, c-format msgid "option %s given but no matching User ID found\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "" +"opção %s dada, mas nenhuma ID de utilizador correspondente encontrada\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: This key has been revoked by its designated revoker!\n" -msgstr "AVISO: Esta chave foi revogada pelo seu dono!\n" +msgstr "AVISO: Esta chave foi revogada pela sua revogadora designada!\n" #, c-format msgid "WARNING: This key has been revoked by its owner!\n" msgstr "AVISO: Esta chave foi revogada pelo seu dono!\n" -#, fuzzy, c-format +#, c-format msgid " This could mean that the signature is forged.\n" msgstr " Isto pode significar que a assinatura é falsificada.\n" @@ -5588,16 +5355,17 @@ msgstr "AVISO: Esta subchave foi revogada pelo seu dono!\n" #, c-format msgid "Note: This key has been disabled.\n" -msgstr "Nota: Esta chave foi desactivada.\n" +msgstr "Nota: Esta chave foi desabilitada.\n" #, c-format msgid "Note: This key has expired!\n" msgstr "Nota: Esta chave expirou!\n" -#, fuzzy, c-format -#| msgid "WARNING: This key is not certified with a trusted signature!\n" +#, c-format msgid "WARNING: The key's User ID is not certified with a trusted signature!\n" -msgstr "AVISO: Esta chave não está certificada com uma assinatura confiável!\n" +msgstr "" +"AVISO: A ID de utilizador da chave não está certificada com uma assinatura " +"confiável!\n" #, c-format msgid "WARNING: This key is not certified with a trusted signature!\n" @@ -5606,7 +5374,7 @@ msgstr "AVISO: Esta chave não está certificada com uma assinatura confiável!\ #, c-format msgid "" " There is no indication that the signature belongs to the owner.\n" -msgstr " Não há indicação de que a assinatura pertence ao dono.\n" +msgstr " Não há indicação que a assinatura pertença ao dono.\n" #, c-format msgid "WARNING: We do NOT trust this key!\n" @@ -5616,137 +5384,133 @@ msgstr "AVISO: Nós NÃO confiamos nesta chave!\n" msgid " The signature is probably a FORGERY.\n" msgstr " A assinatura é provavelmente uma FALSIFICAÇÃO.\n" -#, fuzzy, c-format -#| msgid "" -#| "WARNING: This key is not certified with sufficiently trusted signatures!\n" +#, c-format msgid "" "WARNING: The key's User ID is not certified with sufficiently trusted " "signatures!\n" msgstr "" -"AVISO: Esta chave não está certificada com assinaturas suficientemente\n" -" confiáveis!\n" +"AVISO: A ID de utilizador da chave não é certificada com assinaturas " +"suficientemente confiáveis!\n" #, c-format msgid "" "WARNING: This key is not certified with sufficiently trusted signatures!\n" msgstr "" -"AVISO: Esta chave não está certificada com assinaturas suficientemente\n" -" confiáveis!\n" +"AVISO: Esta chave não está certificada com assinaturas suficientemente " +"confiáveis!\n" #, c-format msgid " It is not certain that the signature belongs to the owner.\n" -msgstr " Não se tem certeza de que a assinatura pertence ao dono.\n" +msgstr " Não há certeza que a assinatura pertença ao dono.\n" #, c-format msgid "%s: skipped: %s\n" -msgstr "%s: ignorado: %s\n" +msgstr "%s: ignorada: %s\n" #, c-format msgid "%s: skipped: public key is disabled\n" -msgstr "%s: ignorado: a chave pública está desactivada\n" +msgstr "%s: ignorada: a chave pública está desabilitada\n" #, c-format msgid "%s: skipped: public key already present\n" -msgstr "%s: ignorado: a chave pública já está presente\n" +msgstr "%s: ignorada: a chave pública já está presente\n" -#, fuzzy, c-format -#| msgid "can't connect to `%s': %s\n" +#, c-format msgid "can't encrypt to '%s'\n" -msgstr "impossível ligar a `%s': %s\n" +msgstr "não é possível cifrar para '%s'\n" -#, fuzzy, c-format +#, c-format msgid "option '%s' given, but no valid default keys given\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "opção '%s' dada, mas nenhuma chave pré-definida válida dada\n" -#, fuzzy, c-format +#, c-format msgid "option '%s' given, but option '%s' not given\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "opção '%s' dada, mas opção '%s' não foi dada\n" msgid "You did not specify a user ID. (you may use \"-r\")\n" -msgstr "Não especificou um identificador de utilizador. (pode usar \"-r\")\n" +msgstr "Não especificou uma ID de utilizador. (pode usar \"-r\")\n" msgid "Current recipients:\n" -msgstr "" +msgstr "Destinatários atuais:\n" msgid "" "\n" "Enter the user ID. End with an empty line: " msgstr "" "\n" -"Insira o identificador do utilizador. Termine com uma linha vazia: " +"Introduzir a ID do utilizador. Terminar com uma linha vazia: " msgid "No such user ID.\n" -msgstr "Identificador de utilizador inexistente.\n" +msgstr "Não existe tal ID de utilizador.\n" #, c-format msgid "skipped: public key already set as default recipient\n" -msgstr "ignorado: chave pública já colocada como destinatário por omissão\n" +msgstr "ignorada: chave pública já definida como destinatário pré-definido\n" msgid "Public key is disabled.\n" -msgstr "A chave pública está desativada.\n" +msgstr "A chave pública está desabilitada.\n" #, c-format msgid "skipped: public key already set\n" -msgstr "ignorado: a chave pública já está presente\n" +msgstr "ignorada: a chave pública já está presente\n" -#, fuzzy, c-format +#, c-format msgid "unknown default recipient \"%s\"\n" -msgstr "destinatário por omissão desconhecido `%s'\n" +msgstr "destinatário pré-definido \"%s\" desconhecido\n" #, c-format msgid "no valid addressees\n" -msgstr "nenhum endereço válido\n" +msgstr "nenhum destinatário válido\n" -#, fuzzy, c-format +#, c-format msgid "Note: key %s has no %s feature\n" -msgstr "chave %08lX: sem ID de utilizador\n" +msgstr "Nota: a chave %s não tem a característica %s\n" -#, fuzzy, c-format +#, c-format msgid "Note: key %s has no preference for %s\n" -msgstr "chave %08lX: sem ID de utilizador\n" +msgstr "Nota: a chave %s não tem preferência por %s\n" #, c-format msgid "data not saved; use option \"--output\" to save it\n" msgstr "dados não gravados; use a opção \"--output\" para gravá-los\n" msgid "Detached signature.\n" -msgstr "Assinatura separada.\n" +msgstr "Assinatura desanexada.\n" msgid "Please enter name of data file: " -msgstr "Por favor digite o nome do ficheiro de dados: " +msgstr "Introduza o nome do ficheiro de dados: " #, c-format msgid "reading stdin ...\n" -msgstr "lendo do \"stdin\" ...\n" +msgstr "lendo do stdin ...\n" #, c-format msgid "no signed data\n" -msgstr "não há dados assinados\n" +msgstr "sem dados assinados\n" -#, fuzzy, c-format -#| msgid "can't open signed data `%s'\n" +#, c-format msgid "can't open signed data '%s'\n" -msgstr "impossível abrir dados assinados `%s'\n" +msgstr "não é possível abrir dados assinados '%s'\n" -#, fuzzy, c-format +#, c-format msgid "can't open signed data fd=%d: %s\n" -msgstr "impossível abrir dados assinados `%s'\n" +msgstr "não é possível abrir dados assinados fd=%d: %s\n" -#, fuzzy, c-format +#, c-format msgid "key %s is not suitable for decryption in %s mode\n" -msgstr "chave %08lX: sem ID de utilizador\n" +msgstr "a chave %s não é adequada para decifração no modo %s\n" -#, fuzzy, c-format +#, c-format msgid "anonymous recipient; trying secret key %s ...\n" -msgstr "destinatário anónimo; a tentar chave secreta %08lX ...\n" +msgstr "destinatário anónimo; tentando chave secreta %s ...\n" -#, fuzzy, c-format +#, c-format msgid "used key is not marked for encryption use.\n" -msgstr "chave %08lX: sem ID de utilizador\n" +msgstr "a chave usada não está marcada para uso de cifração.\n" #, c-format msgid "okay, we are the anonymous recipient.\n" -msgstr "certo, nós somos o destinatário anónimo.\n" +msgstr "ok, nós somos o destinatário anónimo.\n" #, c-format msgid "old encoding of the DEK is not supported\n" @@ -5754,68 +5518,67 @@ msgstr "codificação antiga do DEK não suportada\n" #, c-format msgid "cipher algorithm %d%s is unknown or disabled\n" -msgstr "algoritmo de cifra %d%s é desconhecido ou foi desactivado\n" +msgstr "o algoritmo de cifra %d%s é desconhecido ou foi desabilitado\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: cipher algorithm %s not found in recipient preferences\n" -msgstr "NOTA: algoritmo de cifragem %d não encontrado nas preferências\n" +msgstr "" +"AVISO: o algoritmo de cifra %s não foi encontrado nas preferências do " +"destinatário\n" -#, fuzzy, c-format +#, c-format msgid "Note: secret key %s expired at %s\n" -msgstr "NOTA: chave secreta %08lX expirou em %s\n" +msgstr "Nota: a chave secreta %s expirou em %s\n" -#, fuzzy, c-format -#| msgid "NOTE: key has been revoked" +#, c-format msgid "Note: key has been revoked" -msgstr "NOTA: a chave foi revogada" +msgstr "Nota: a chave foi revogada" -#, fuzzy, c-format +#, c-format msgid "build_packet failed: %s\n" -msgstr "actualização falhou: %s\n" +msgstr "build_packet falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "key %s has no user IDs\n" -msgstr "chave %08lX: sem ID de utilizador\n" +msgstr "a chave %s não tem IDs de utilizador\n" msgid "To be revoked by:\n" -msgstr "" +msgstr "Para ser revogada por:\n" msgid "(This is a sensitive revocation key)\n" -msgstr "" +msgstr "(Esta é uma chave de revogação sensitiva)\n" -#, fuzzy -#| msgid "Secret key is available.\n" msgid "Secret key is not available.\n" -msgstr "Chave secreta disponível.\n" +msgstr "A chave secreta não está disponível.\n" -#, fuzzy msgid "Create a designated revocation certificate for this key? (y/N) " -msgstr "Gerar um certificado de revogação para esta assinatura? (s/N)" +msgstr "Criar um certificado de revogação designado para esta chave? (s/N) " msgid "ASCII armored output forced.\n" -msgstr "" +msgstr "Saída blindada ASCII forçada.\n" -#, fuzzy, c-format +#, c-format msgid "make_keysig_packet failed: %s\n" -msgstr "actualização da chave secreta falhou: %s\n" +msgstr "make_keysig_packet falhou: %s\n" -#, fuzzy msgid "Revocation certificate created.\n" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "Certificado de revogação criado.\n" #, c-format msgid "no revocation keys found for \"%s\"\n" -msgstr "" +msgstr "Nenhuma chave de revogação encontrada para \"%s\"\n" -#, fuzzy msgid "This is a revocation certificate for the OpenPGP key:" -msgstr "Gerar um certificado de revogação para esta assinatura? (s/N)" +msgstr "Este é um certificado de revogação para a chave OpenPGP:" msgid "" "A revocation certificate is a kind of \"kill switch\" to publicly\n" "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 "" +"Um certificado de revogação é uma espécie de \"kill switch\" para\n" +"declarar publicamente que uma chave não deverá ser mais usada. Não\n" +"é possível retirar tal certificado de revogação depois de publicado." msgid "" "Use it to revoke this key in case of a compromise or loss of\n" @@ -5824,36 +5587,43 @@ msgid "" "a reason for the revocation. For details see the description of\n" "of the gpg command \"--generate-revocation\" in the GnuPG manual." msgstr "" +"Use-o para revogar esta chave caso seja comprometida ou em caso de\n" +"perda da chave secreta. No entanto, se a chave secreta ainda for\n" +"acessível, é melhor gerar um novo certificado de revogação e dar um\n" +"motivo para a revogação. Para obter detalhes, consulte a descrição do\n" +"comando gpg \"--generate-revocation\" no manual do GnuPG." 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 "" +"Para evitar o uso acidental deste ficheiro, 'dois pontos' foram\n" +"inseridos antes dos 5 traços abaixo. Remova estes 'dois pontos' com\n" +"um editor de texto antes de importar e publicar este certificado de\n" +"revogação." -#, fuzzy, c-format +#, c-format msgid "revocation certificate stored as '%s.rev'\n" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "certificado de revogação armazenado como '%s.rev'\n" -#, fuzzy, c-format +#, c-format msgid "secret key \"%s\" not found\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "chave secreta \"%s\" não encontrada\n" #. TRANSLATORS: The %s prints a key specification which #. for example has been given at the command line. Several lines #. lines with secret key infos are printed after this message. #, c-format msgid "'%s' matches multiple secret keys:\n" -msgstr "" +msgstr "'%s' corresponde a várias chaves secretas:\n" -#, fuzzy, c-format -#| msgid "error creating keyring `%s': %s\n" +#, c-format msgid "error searching the keyring: %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "erro ao pesquisar o porta-chaves: %s\n" -#, fuzzy msgid "Create a revocation certificate for this key? (y/N) " -msgstr "Gerar um certificado de revogação para esta assinatura? (s/N)" +msgstr "Criar um certificado de revogação para esta chave? (s/N) " msgid "" "Revocation certificate created.\n" @@ -5864,34 +5634,37 @@ msgid "" "your media become unreadable. But have some caution: The print system of\n" "your machine might store the data and make it available to others!\n" msgstr "" +"Certificado de revogação criado.\n" +"\n" +"Mova-o para um sítio em que você o possa esconder; se Mallory tiver\n" +"acesso a este certificado, ele poderá usá-lo para tornar sua chave\n" +"inutilizável. É inteligente imprimir este certificado e guardá-lo,\n" +"caso se torne ilegível em seu dispositivo. Mas tenha algum cuidado: o\n" +"sistema de impressão da sua máquina pode armazenar os dados e\n" +"disponibilizá-los para outras pessoas!\n" -#, fuzzy msgid "Please select the reason for the revocation:\n" -msgstr "motivo da revocação: " +msgstr "Selecione o motivo da revogação:\n" msgid "Cancel" -msgstr "" +msgstr "Cancelar" #, c-format msgid "(Probably you want to select %d here)\n" -msgstr "" +msgstr "(Provavelmente aqui você desejará selecionar %d)\n" -#, fuzzy msgid "Enter an optional description; end it with an empty line:\n" -msgstr "" -"\n" -"Insira o identificador do utilizador. Termine com uma linha vazia: " +msgstr "Introduzir uma descrição opcional; finalize com uma linha vazia:\n" -#, fuzzy, c-format +#, c-format msgid "Reason for revocation: %s\n" -msgstr "motivo da revocação: " +msgstr "Motivo da revogação: %s\n" msgid "(No description given)\n" -msgstr "" +msgstr "(Nenhuma descrição dada)\n" -#, fuzzy msgid "Is this okay? (y/N) " -msgstr "Usar esta chave de qualquer modo? " +msgstr "Isto está ok? (s/N) " #, c-format msgid "weak key created - retrying\n" @@ -5900,233 +5673,227 @@ msgstr "chave fraca criada - tentando novamente\n" #, c-format msgid "cannot avoid weak key for symmetric cipher; tried %d times!\n" msgstr "" -"impossível evitar chave fraca para criptografia simétrica;\n" -"tentei %d vezes!\n" +"não pude evitar a chave fraca para a cifra simétrica; tentei %d vezes!\n" #, c-format msgid "%s key %s uses an unsafe (%zu bit) hash\n" -msgstr "" +msgstr "chave %s %s usa um hash não seguro (%zu bit)\n" #, c-format msgid "%s key %s requires a %zu bit or larger hash (hash is %s)\n" -msgstr "" +msgstr "chave %s %s requer um hash %zu bit ou maior (hash é %s)\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 "não pode utilizar %s enquanto estiver no modo %s\n" +msgstr "A chave %s não pode ser usada para assinar no modo %s\n" #, c-format msgid "WARNING: signature digest conflict in message\n" -msgstr "AVISO: conflito no 'digest' de assinatura da mensagem\n" +msgstr "AVISO: conflito no digest de assinatura na mensagem\n" #, c-format msgid "WARNING: signing subkey %s is not cross-certified\n" -msgstr "" +msgstr "AVISO: a subchave de assinatura %s não é cruzadamente certificada\n" -#, fuzzy, c-format +#, c-format msgid "please see %s for more information\n" -msgstr " i = mostrar mais informações\n" +msgstr "consulte %s para mais informações\n" -#, fuzzy, c-format +#, c-format msgid "WARNING: signing subkey %s has an invalid cross-certification\n" -msgstr "não pode escolher uma chave como revogadora de si mesmo\n" +msgstr "" +"AVISO: a subchave de assinatura %s tem uma certificação cruzada inválida\n" -#, fuzzy, c-format +#, 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] "a chave pública %08lX é %lu segundo mais nova que a assinatura\n" -msgstr[1] "a chave pública %08lX é %lu segundo mais nova que a assinatura\n" +msgstr[0] "a chave pública %s é %lu segundo mais recente que a assinatura\n" +msgstr[1] "a chave pública %s é %lu segundos mais recente que a assinatura\n" -#, fuzzy, c-format +#, 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] "a chave pública %08lX é %lu segundo mais nova que a assinatura\n" -msgstr[1] "a chave pública %08lX é %lu segundo mais nova que a assinatura\n" +msgstr[0] "a chave pública %s é %lu dia mais recente que a assinatura\n" +msgstr[1] "a chave pública %s é %lu dias mais recente que a assinatura\n" -#, fuzzy, c-format +#, 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] "" -"a chave foi criada %lu segundo no futuro\n" -"(viagem no tempo ou problema no relógio)\n" +"a chave %s foi criada %lu segundo no futuro (deformação temporal ou problema " +"de relógio)\n" msgstr[1] "" -"a chave foi criada %lu segundo no futuro\n" -"(viagem no tempo ou problema no relógio)\n" +"a chave %s foi criada %lu segundos no futuro (deformação temporal ou " +"problema de relógio)\n" -#, fuzzy, c-format +#, 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] "" -"a chave foi criada %lu segundo no futuro\n" -"(viagem no tempo ou problema no relógio)\n" +"a chave %s foi criada %lu dia no futuro (deformação temporal ou problema de " +"relógio)\n" msgstr[1] "" -"a chave foi criada %lu segundo no futuro\n" -"(viagem no tempo ou problema no relógio)\n" +"a chave %s foi criada %lu dias no futuro (deformação temporal ou problema de " +"relógio)\n" -#, fuzzy, c-format +#, c-format msgid "Note: signature key %s expired %s\n" -msgstr "NOTA: chave de assinatura %08lx expirou %s\n" +msgstr "Nota: a chave de assinatura %s expirou em %s\n" -#, fuzzy, c-format +#, c-format msgid "Note: signature key %s has been revoked\n" -msgstr "NOTA: a chave foi revogada" +msgstr "Nota: a chave de assinatura %s foi revogada\n" -#, fuzzy, c-format -#| msgid "standalone signature of class 0x%02x\n" +#, c-format msgid "bad key signature from key %s: %s (0x%02x, 0x%x)\n" -msgstr "assinatura de classe 0x%02x\n" +msgstr "assinatura de chave inválida da chave %s: %s (0x%02x, 0x%x)\n" -#, fuzzy, c-format -#| msgid "standalone signature of class 0x%02x\n" +#, c-format msgid "bad data signature from key %s: %s (0x%02x, 0x%x)\n" -msgstr "assinatura de classe 0x%02x\n" +msgstr "assinatura de dados inválida da chave %s: %s (0x%02x, 0x%x)\n" -#, fuzzy, c-format +#, c-format msgid "assuming bad signature from key %s due to an unknown critical bit\n" msgstr "" -"assumindo assinatura incorrecta na chave %08lX devido a um bit crítico " +"assumindo assinatura inválida da chave %s devido a um bit crítico " "desconhecido\n" -#, fuzzy, c-format +#, c-format msgid "key %s: no subkey for subkey revocation signature\n" -msgstr "chave %08lX: sem subchave para o pacote revocação de subchave\n" +msgstr "chave %s: nenhuma subchave para assinatura de revogação de subchave\n" -#, fuzzy, c-format +#, c-format msgid "key %s: no subkey for subkey binding signature\n" -msgstr "chave %08lX: sem subchave para ligação de chaves\n" +msgstr "chave %s: nenhuma subchave para assinatura de vinculação de subchave\n" #, c-format msgid "WARNING: unable to %%-expand notation (too large). Using unexpanded.\n" msgstr "" -"AVISO: impossível expandir-%% a url de política (demasiado grande). A " -"utilizar não expandida.\n" +"AVISO: não é possível expandir-%% a notação (demasiado grande). Usando não " +"expandida.\n" -#, fuzzy, c-format +#, c-format msgid "" "WARNING: unable to %%-expand policy URL (too large). Using unexpanded.\n" msgstr "" -"AVISO: impossível expandir-%% a url de política (demasiado grande).\n" -"A utilizar não expandida.\n" +"AVISO: não é possível %%-expandir a URL da política (muito grande). Usando " +"não expandida.\n" -#, fuzzy, c-format +#, c-format msgid "" "WARNING: unable to %%-expand preferred keyserver URL (too large). Using " "unexpanded.\n" msgstr "" -"AVISO: impossível expandir-%% a url de política (demasiado grande).\n" -"A utilizar não expandida.\n" +"AVISO: não é possível %%-expandir a URL do servidor de chaves preferencial " +"(muito grande). Usando não expandida.\n" -#, fuzzy, c-format +#, c-format msgid "%s/%s signature from: \"%s\"\n" -msgstr "assinatura %s de: \"%s\"\n" +msgstr "assinatura %s/%s de: \"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "" "WARNING: forcing digest algorithm %s (%d) violates recipient preferences\n" msgstr "" -"forçar o algoritmo de 'digest' %s (%d) viola as preferências do " +"AVISO: forçar o algoritmo de digest %s (%d) viola as preferências do " "destinatário\n" #, c-format msgid "signing:" -msgstr "a assinar:" +msgstr "assinando:" -#, fuzzy, c-format -#| msgid "%s encryption will be used\n" +#, c-format msgid "%s.%s encryption will be used\n" -msgstr "será utilizada a cifragem %s\n" +msgstr "a cifração %s.%s será usada\n" #, c-format msgid "key is not flagged as insecure - can't use it with the faked RNG!\n" msgstr "" -"a chave não está marcada insegura - impossível usá-la com o RNG falso!\n" +"chave não está marcada como insegura - não pode usá-la com o RNG " +"falsificado!\n" -#, fuzzy, c-format +#, c-format msgid "skipped \"%s\": duplicated\n" -msgstr "ignorado `%s': duplicada\n" +msgstr "ignorado \"%s\": duplicada\n" #, c-format msgid "skipped: secret key already present\n" -msgstr "ignorado: a chave secreta já está presente\n" +msgstr "ignorada: a chave secreta já está presente\n" -#, fuzzy msgid "this is a PGP generated Elgamal key which is not secure for signatures!" msgstr "" -"ignorado `%s': esta é uma chave ElGamal gerada pelo PGP que não é segura " -"para assinaturas!\n" +"esta é uma chave Elgamal gerada por PGP que não é segura para assinaturas!" #, c-format msgid "trust record %lu, type %d: write failed: %s\n" -msgstr "registo de confiança %lu, tipo %d: escrita falhou: %s\n" +msgstr "registo da confiança %lu, tipo %d: falha ao escrever: %s\n" #, c-format msgid "" "# List of assigned trustvalues, created %s\n" "# (Use \"gpg --import-ownertrust\" to restore them)\n" msgstr "" +"# Lista de valores da confiança atribuídos, criado a %s\n" +"# (Usar \"gpg --import-ownertrust\" para restaurá-los)\n" -#, fuzzy, c-format +#, c-format msgid "error in '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro em '%s': %s\n" -#, fuzzy msgid "line too long" -msgstr "frase secreta demasiado longa\n" +msgstr "linha muito longa" msgid "colon missing" -msgstr "" +msgstr "'dois pontos' ausente" -#, fuzzy msgid "invalid fingerprint" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "impressão digital inválida" -#, fuzzy msgid "ownertrust value missing" -msgstr "importar os valores de confiança" +msgstr "valor ownertrust ausente" -#, fuzzy, c-format +#, c-format msgid "error finding trust record in '%s': %s\n" -msgstr "%s: erro ao escrever registo de diretório: %s\n" +msgstr "erro ao localizar registo da confiança em '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "read error in '%s': %s\n" -msgstr "armadura: %s\n" +msgstr "erro de leitura em '%s': %s\n" #, c-format msgid "trustdb: sync failed: %s\n" -msgstr "base de dados de confiança: sincronização falhou: %s\n" +msgstr "trustdb: falha na sincronização: %s\n" -#, fuzzy, c-format +#, c-format msgid "can't create lock for '%s'\n" -msgstr "impossível criar `%s': %s\n" +msgstr "não é possível criar bloqueio para '%s'\n" -#, fuzzy, c-format +#, c-format msgid "can't lock '%s'\n" -msgstr "impossível abrir `%s'\n" +msgstr "não é possível bloquear '%s'\n" #, c-format msgid "trustdb rec %lu: lseek failed: %s\n" -msgstr "base de dados de confiança rec %lu: lseek falhou: %s\n" +msgstr "registo trustdb %lu: falha no lseek: %s\n" #, c-format msgid "trustdb rec %lu: write failed (n=%d): %s\n" -msgstr "base de dados de confiança rec %lu: escrita falhou (n=%d): %s\n" +msgstr "registo trustdb %lu: falha ao escrever (n=%d): %s\n" #, c-format msgid "trustdb transaction too large\n" -msgstr "transação de base de dados de confiança muito grande\n" +msgstr "transação trustdb muito grande\n" #, c-format msgid "%s: directory does not exist!\n" -msgstr "%s: diretoria inexistente!\n" +msgstr "%s: pasta não existe!\n" -#, fuzzy, c-format +#, c-format msgid "can't access '%s': %s\n" -msgstr "impossível fechar `%s': %s\n" +msgstr "não é possível aceder '%s': %s\n" #, c-format msgid "%s: failed to create version record: %s" @@ -6134,28 +5901,27 @@ msgstr "%s: falha ao criar registo de versão: %s" #, c-format msgid "%s: invalid trustdb created\n" -msgstr "%s: base de dados de confiança inválida criada\n" +msgstr "%s: trustdb inválida criada\n" #, c-format msgid "%s: trustdb created\n" -msgstr "%s: base de dados de confiança criada\n" +msgstr "%s: trustdb criada\n" -#, fuzzy, c-format -#| msgid "NOTE: trustdb not writable\n" +#, c-format msgid "Note: trustdb not writable\n" -msgstr "NOTA: não é possível escrever na trustdb\n" +msgstr "Nota: trustdb sem permissão de escrita\n" #, c-format msgid "%s: invalid trustdb\n" -msgstr "%s: base de dados de confiança inválida\n" +msgstr "%s: trustdb inválida\n" #, c-format msgid "%s: failed to create hashtable: %s\n" -msgstr "%s: falha ao criar tabela de dispersão: %s\n" +msgstr "%s: falha ao criar hashtable: %s\n" #, c-format msgid "%s: error updating version record: %s\n" -msgstr "%s: erro a actualizar registo de versão: %s\n" +msgstr "%s: erro ao atualizar registo de versão: %s\n" #, c-format msgid "%s: error reading version record: %s\n" @@ -6167,15 +5933,15 @@ msgstr "%s: erro ao escrever registo de versão: %s\n" #, c-format msgid "trustdb: lseek failed: %s\n" -msgstr "base de dados de confiança: lseek falhou: %s\n" +msgstr "trustdb: falha no lseek: %s\n" #, c-format msgid "trustdb: read failed (n=%d): %s\n" -msgstr "base de dados de confiança: leitura falhou (n=%d): %s\n" +msgstr "trustdb: falha ao ler (n=%d): %s\n" #, c-format msgid "%s: not a trustdb file\n" -msgstr "%s: não é um base de dados de confiança\n" +msgstr "%s: não é um ficheiro trustdb\n" #, c-format msgid "%s: version record with recnum %lu\n" @@ -6191,7 +5957,7 @@ msgstr "%s: erro ao ler registo livre: %s\n" #, c-format msgid "%s: error writing dir record: %s\n" -msgstr "%s: erro ao escrever registo de diretório: %s\n" +msgstr "%s: erro ao escrever registo de pasta: %s\n" #, c-format msgid "%s: failed to zero a record: %s\n" @@ -6199,288 +5965,287 @@ msgstr "%s: falha ao zerar um registo: %s\n" #, c-format msgid "%s: failed to append a record: %s\n" -msgstr "%s: falha ao anexar um registo: %s\n" +msgstr "%s: falha ao acrescentar um registo: %s\n" -#, fuzzy, c-format +#, c-format msgid "Error: The trustdb is corrupted.\n" -msgstr "%s: base de dados de confiança criada\n" +msgstr "Erro: A trustdb está corrompida.\n" #, c-format msgid "can't handle text lines longer than %d characters\n" -msgstr "impossível manipular linhas de texto maiores que %d caracteres\n" +msgstr "não é possível lidar com linhas de texto maiores que %d caracteres\n" #, c-format msgid "input line longer than %d characters\n" msgstr "linha de entrada maior que %d caracteres\n" -#, fuzzy, c-format +#, c-format msgid "error beginning transaction on TOFU database: %s\n" -msgstr "erro ao enviar para `%s': %s\n" +msgstr "erro ao iniciar a transação na base de dados TOFU: %s\n" #, c-format msgid "error committing transaction on TOFU database: %s\n" -msgstr "" +msgstr "erro ao confirmar transação na base de dados TOFU: %s\n" #, c-format msgid "error rolling back transaction on TOFU database: %s\n" -msgstr "" +msgstr "erro ao reverter transação na base de dados TOFU: %s\n" -#, fuzzy, c-format +#, c-format msgid "unsupported TOFU database version: %s\n" -msgstr "" -"\n" -"Algoritmos suportados:\n" +msgstr "versão da base de dados TOFU sem suporte: %s\n" #, c-format msgid "TOFU DB error" -msgstr "" +msgstr "erro na base de dados TOFU" -#, fuzzy, c-format +#, c-format msgid "error reading TOFU database: %s\n" -msgstr "erro ao enviar para `%s': %s\n" +msgstr "erro ao ler a base de dados TOFU: %s\n" -#, fuzzy, c-format -#| msgid "error writing secret keyring `%s': %s\n" +#, c-format msgid "error determining TOFU database's version: %s\n" -msgstr "erro ao escrever no porta-chaves secreto `%s': %s\n" +msgstr "erro ao determinar a versão da base de dados TOFU: %s\n" -#, fuzzy, c-format -#| msgid "%s: error writing dir record: %s\n" +#, c-format msgid "error initializing TOFU database: %s\n" -msgstr "%s: erro ao escrever registo de diretório: %s\n" +msgstr "erro ao inicializar a base de dados TOFU: %s\n" -#, fuzzy, c-format +#, c-format msgid "error opening TOFU database '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao abrir a base de dados TOFU '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "error updating TOFU database: %s\n" -msgstr "erro ao enviar para `%s': %s\n" +msgstr "erro ao atualizar a base de dados TOFU: %s\n" #, c-format msgid "" "This is the first time the email address \"%s\" is being used with key %s." msgstr "" +"Esta é a primeira vez que o endereço de email \"%s\" está a ser usado com a " +"chave %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[0] "O endereço de email \"%s\" está associado a %d chave!" +msgstr[1] "O endereço de email \"%s\" está associado a %d chaves!" msgid " Since this binding's policy was 'auto', it has been changed to 'ask'." msgstr "" +" Como a política desta vinculação era 'auto', foi alterada para 'ask'." #, c-format msgid "" "Please indicate whether this email address should be associated with key %s " "or whether you think someone is impersonating \"%s\"." msgstr "" +"Indique se este endereço de email deve ser associado à chave %s ou se acha " +"que alguém está a fazer-se passar por \"%s\"." -#, fuzzy, c-format +#, c-format msgid "error gathering other user IDs: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao colecionar outros IDs de utilizador: %s\n" -#, fuzzy -#| msgid "list key and user IDs" msgid "This key's user IDs:\n" -msgstr "lista chave e identificadores de utilizadores" +msgstr "IDs de utilizador desta chave:\n" -#, fuzzy, c-format -#| msgid "Policy: " +#, c-format msgid "policy: %s" -msgstr "Política: " +msgstr "política: %s" -#, fuzzy, c-format +#, c-format msgid "error gathering signature stats: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao colecionar estatísticas de assinatura: %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[0] "O endereço de email \"%s\" está associado à chave %d:\n" +msgstr[1] "O endereço de email \"%s\" está associado às chaves %d:\n" #, c-format msgid "Statistics for keys with the email address \"%s\":\n" -msgstr "" +msgstr "Estatísticas para chaves com o endereço de email \"%s\":\n" -#, fuzzy -#| msgid "list keys" msgid "this key" -msgstr "listar as chaves" +msgstr "esta chave" -#, fuzzy, c-format +#, c-format msgid "Verified %d message." msgid_plural "Verified %d messages." -msgstr[0] "|algo [ficheiros]|imprimir \"digests\" de mensagens" -msgstr[1] "|algo [ficheiros]|imprimir \"digests\" de mensagens" +msgstr[0] "Verifiquei %d mensagem." +msgstr[1] "Verifiquei %d mensagens." -#, fuzzy, c-format +#, c-format msgid "Encrypted %d message." msgid_plural "Encrypted %d messages." -msgstr[0] "Repita a frase secreta\n" -msgstr[1] "Repita a frase secreta\n" +msgstr[0] "Cifrei %d mensagem." +msgstr[1] "Cifrei %d mensagens." -#, fuzzy, c-format +#, c-format msgid "Verified %d message in the future." msgid_plural "Verified %d messages in the future." -msgstr[0] "|algo [ficheiros]|imprimir \"digests\" de mensagens" -msgstr[1] "|algo [ficheiros]|imprimir \"digests\" de mensagens" +msgstr[0] "Verifiquei %d mensagem no futuro." +msgstr[1] "Verifiquei %d mensagens no futuro." -#, fuzzy, c-format +#, c-format msgid "Encrypted %d message in the future." msgid_plural "Encrypted %d messages in the future." -msgstr[0] "|algo [ficheiros]|imprimir \"digests\" de mensagens" -msgstr[1] "|algo [ficheiros]|imprimir \"digests\" de mensagens" +msgstr[0] "Cifrei %d mensagem no futuro." +msgstr[1] "Cifrei %d mensagens no futuro." #, 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[0] "Mensagens verificadas no último %d dia: %d." +msgstr[1] "Mensagens verificadas nos últimos %d dias: %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[0] "Mensagens cifradas no último %d dia: %d." +msgstr[1] "Mensagens cifradas nos últimos %d dias: %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[0] "Mensagens verificadas no último %d mês: %d." +msgstr[1] "Mensagens verificadas nos últimos %d meses: %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[0] "Mensagens cifradas no último %d mês: %d." +msgstr[1] "Mensagens cifradas nos últimos %d meses: %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[0] "Mensagens verificadas no último %d ano: %d." +msgstr[1] "Mensagens verificadas nos últimos %d anos: %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[0] "Mensagens cifradas no último %d ano: %d." +msgstr[1] "Mensagens cifradas nos últimos %d anos: %d." #, c-format msgid "Messages verified in the past: %d." -msgstr "" +msgstr "Mensagens verificadas no passado: %d." -#, fuzzy, c-format +#, c-format msgid "Messages encrypted in the past: %d." -msgstr "|algo [ficheiros]|imprimir \"digests\" de mensagens" +msgstr "Mensagens cifradas no passado: %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 "O TOFU detetou um conflito de vinculação" #. 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 "cCaAdDrRiI" msgid "(G)ood, (A)ccept once, (U)nknown, (R)eject once, (B)ad? " msgstr "" +"(C)orreta, (A)ceitar uma vez, (D)esconhecida, (R)ejeitar uma vez, " +"(I)ncorreta? " msgid "Defaulting to unknown.\n" -msgstr "" +msgstr "Pré-definindo como desconhecido.\n" #, c-format msgid "TOFU db corruption detected.\n" -msgstr "" +msgstr "corrupção de base de dados TOFU detetada.\n" -#, fuzzy, c-format +#, c-format msgid "error changing TOFU policy: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao alterar a política de TOFU: %s\n" #, c-format msgid "%lld~year" msgid_plural "%lld~years" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%lld~ano" +msgstr[1] "%lld~anos" #, c-format msgid "%lld~month" msgid_plural "%lld~months" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%lld~mês" +msgstr[1] "%lld~meses" #, c-format msgid "%lld~week" msgid_plural "%lld~weeks" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%lld~semana" +msgstr[1] "%lld~semanas" #, c-format msgid "%lld~day" msgid_plural "%lld~days" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%lld~dia" +msgstr[1] "%lld~dias" #, c-format msgid "%lld~hour" msgid_plural "%lld~hours" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%lld~hora" +msgstr[1] "%lld~horas" #, c-format msgid "%lld~minute" msgid_plural "%lld~minutes" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%lld~minuto" +msgstr[1] "%lld~minutos" #, c-format msgid "%lld~second" msgid_plural "%lld~seconds" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%lld~segundo" +msgstr[1] "%lld~segundos" #, c-format msgid "%s: Verified 0~signatures and encrypted 0~messages." -msgstr "" +msgstr "%s: 0~assinaturas verificadas e 0~mensagens cifradas." -#, fuzzy, c-format -#| msgid "Deleted %d signatures.\n" +#, c-format msgid "%s: Verified 0 signatures." -msgstr "%d assinaturas removidas.\n" +msgstr "%s: Verificado 0 assinaturas." -#, fuzzy msgid "Encrypted 0 messages." -msgstr "Repita a frase secreta\n" +msgstr "Cifrado 0 mensagens." -#, fuzzy, c-format -#| msgid "Policy: " +#, c-format msgid "(policy: %s)" -msgstr "Política: " +msgstr "(política: %s)" #, c-format msgid "" "Warning: we have yet to see a message signed using this key and user id!\n" msgstr "" +"Atenção: ainda não vimos uma mensagem assinada com esta chave e ID de " +"utilizador!\n" #, c-format msgid "" "Warning: we've only seen one message signed using this key and user id!\n" msgstr "" +"Atenção: apenas vimos uma mensagem assinada com esta chave e ID de " +"utilizador!\n" #, c-format msgid "Warning: you have yet to encrypt a message to this key!\n" -msgstr "" +msgstr "Atenção: você ainda não cifrou uma mensagem para esta chave!\n" #, c-format msgid "Warning: you have only encrypted one message to this key!\n" -msgstr "" +msgstr "Atenção: você apenas cifrou uma mensagem para esta chave!\n" #, c-format msgid "" @@ -6496,136 +6261,153 @@ msgid_plural "" " %s\n" "to mark it as being bad.\n" msgstr[0] "" +"Atenção: se acha que viu mais assinaturas feitas por esta chave e este ID de " +"utilizador, então esta chave pode ser uma falsificação! Examine " +"cuidadosamente o endereço de email à procura de de pequenas variações. Se a " +"chave for suspeita, use\n" +" %s\n" +"para marcá-la como sendo inválida.\n" msgstr[1] "" +"Atenção: se acha que viu mais assinaturas feitas por esta chave e estes IDs " +"de utilizador, então esta chave pode ser uma falsificação! Examine " +"cuidadosamente os endereços de email à procura de de pequenas variações. Se " +"a chave for suspeita, use\n" +" %s\n" +"para marcá-la como sendo inválida.\n" -#, fuzzy, c-format +#, c-format msgid "error opening TOFU database: %s\n" -msgstr "erro ao enviar para `%s': %s\n" +msgstr "erro ao abrir a base de dados TOFU: %s\n" #, c-format msgid "WARNING: Encrypting to %s, which has no non-revoked user ids\n" -msgstr "" +msgstr "AVISO: Cifrando para %s, que não tem ids de utilizador não revogados\n" -#, fuzzy, c-format -#| msgid "`%s' is not a valid long keyID\n" +#, c-format msgid "'%s' is not a valid long keyID\n" -msgstr "`%s' não é um identificador longo de chave válido\n" +msgstr "'%s' não é um keyID longo válido\n" -#, fuzzy, c-format +#, c-format msgid "key %s: accepted as trusted key\n" -msgstr "chave %08lX: aceite como chave de confiança\n" +msgstr "chave %s: aceite como chave confiável\n" -#, fuzzy, c-format +#, c-format msgid "key %s occurs more than once in the trustdb\n" -msgstr "chave %08lX ocrreu mais do que uma vez na base de dados de confiança\n" +msgstr "a chave %s ocorre mais de uma vez na trustdb\n" -#, fuzzy, c-format +#, c-format msgid "key %s: no public key for trusted key - skipped\n" -msgstr "" -"chave %08lX: nenhuma chave pública para chave de confiança - ignorada\n" -"\n" +msgstr "chave %s: nenhuma chave pública para a chave confiável - ignorada\n" -#, fuzzy, c-format +#, c-format msgid "key %s marked as ultimately trusted\n" -msgstr "chave marcada como de confiança absoluta\n" +msgstr "chave %s marcada como plenamente confiável\n" #, c-format msgid "trust record %lu, req type %d: read failed: %s\n" -msgstr "registo de confiança %lu, tipo req %d: falha na leitura: %s\n" +msgstr "registo da confiança %lu, tipo pedido %d: falha na leitura: %s\n" #, c-format msgid "trust record %lu is not of requested type %d\n" -msgstr "registo de confiança %lu não é do tipo pedido %d\n" +msgstr "registo da confiança %lu não é do tipo %d pedido\n" #, c-format msgid "You may try to re-create the trustdb using the commands:\n" -msgstr "" +msgstr "Você pode tentar recriar a trustdb usando os comandos:\n" #, c-format msgid "If that does not work, please consult the manual\n" -msgstr "" +msgstr "Se isso não funcionar, consulte o manual\n" #, c-format msgid "unable to use unknown trust model (%d) - assuming %s trust model\n" msgstr "" +"não é possível usar modelo da confiança desconhecido (%d) - assumindo o " +"modelo da confiança %s\n" #, c-format msgid "using %s trust model\n" -msgstr "" +msgstr "usando o modelo da confiança %s\n" #, c-format msgid "no need for a trustdb check\n" -msgstr "não é necessária uma verificação da base de dados de confiança\n" +msgstr "não há necessidade de uma verificação da trustdb\n" #, c-format msgid "next trustdb check due at %s\n" -msgstr "proxima verificação da base de dados de confiança a %s\n" +msgstr "próxima verificação da trustdb a %s\n" -#, fuzzy, c-format +#, c-format msgid "no need for a trustdb check with '%s' trust model\n" -msgstr "não é necessária uma verificação da base de dados de confiança\n" +msgstr "" +"não há necessidade de uma verificação da trustdb, com o modelo da confiança " +"'%s'\n" -#, fuzzy, c-format +#, c-format msgid "no need for a trustdb update with '%s' trust model\n" -msgstr "não é necessária uma verificação da base de dados de confiança\n" +msgstr "" +"não há necessidade de uma atualização da trustdb, com o modelo da confiança " +"'%s'\n" -#, fuzzy, c-format +#, c-format msgid "public key %s not found: %s\n" -msgstr "chave pública %08lX não encontrada: %s\n" +msgstr "chave pública %s não encontrada: %s\n" #, c-format msgid "please do a --check-trustdb\n" -msgstr "" +msgstr "faça uma --check-trustdb\n" #, c-format msgid "checking the trustdb\n" -msgstr "a verificar a base de dados de confiança\n" +msgstr "verificando a trustdb\n" -#, fuzzy, c-format +#, c-format msgid "%d key processed" msgid_plural "%d keys processed" -msgstr[0] "%lu chaves processadas até agora\n" -msgstr[1] "%lu chaves processadas até agora\n" +msgstr[0] "%d chave processada" +msgstr[1] "%d chaves processadas" #, c-format msgid " (%d validity count cleared)\n" msgid_plural " (%d validity counts cleared)\n" -msgstr[0] "" -msgstr[1] "" +msgstr[0] " (%d contagem da validade limpa)\n" +msgstr[1] " (%d contagens das validades limpas)\n" -#, fuzzy, c-format +#, c-format msgid "no ultimately trusted keys found\n" -msgstr "" -"chave pública da chave absolutamente de confiança %08lX não encontrada\n" +msgstr "nenhumas chaves plenamente confiáveis encontradas\n" -#, fuzzy, c-format +#, c-format msgid "public key of ultimately trusted key %s not found\n" -msgstr "" -"chave pública da chave absolutamente de confiança %08lX não encontrada\n" +msgstr "chave pública da chave plenamente confiável %s não encontrada\n" #, c-format msgid "" "depth: %d valid: %3d signed: %3d trust: %d-, %dq, %dn, %dm, %df, %du\n" msgstr "" +"profundidade: %d válidas: %3d assinadas: %3d confiáveis: %d-, %di, %dn, %dm, " +"%dc, %dp\n" -#, fuzzy, c-format +#, c-format msgid "unable to update trustdb version record: write failed: %s\n" -msgstr "registo de confiança %lu, tipo %d: escrita falhou: %s\n" +msgstr "" +"não é possível atualizar o registo de versão da trustdb: falha ao escrever: " +"%s\n" msgid "undefined" -msgstr "" +msgstr "indefinida" msgid "never" -msgstr "" +msgstr "nunca" msgid "marginal" -msgstr "" +msgstr "marginal" msgid "full" -msgstr "" +msgstr "completa" msgid "ultimate" -msgstr "" +msgstr "plena" #. TRANSLATORS: these strings are similar to those in #. trust_value_to_string(), but are a fixed length. This is needed to @@ -6636,34 +6418,31 @@ msgstr "" #. essentially a comment and need not be translated. Either key and #. uid are both NULL, or neither are NULL. msgid "10 translator see trust.c:uid_trust_string_fixed" -msgstr "" +msgstr "12 translator see trust.c:uid_trust_string_fixed" -#, fuzzy msgid "[ revoked]" -msgstr "revkey" +msgstr "[ revogada ]" -#, fuzzy msgid "[ expired]" -msgstr "expire" +msgstr "[ expirada ]" -#, fuzzy msgid "[ unknown]" -msgstr "versão desconhecida" +msgstr "[desconhec.]" msgid "[ undef ]" -msgstr "" +msgstr "[indefinida]" msgid "[ never ]" -msgstr "" +msgstr "[ nunca ]" msgid "[marginal]" -msgstr "" +msgstr "[ marginal ]" msgid "[ full ]" -msgstr "" +msgstr "[ completa ]" msgid "[ultimate]" -msgstr "" +msgstr "[ plena ]" #, c-format msgid "" @@ -6672,665 +6451,643 @@ msgid "" "should be the first file given on the command line.\n" msgstr "" "a assinatura não pode ser verificada.\n" -"Não se esqueça que o ficheiro com a assinatura (.sig ou .asc)\n" -"deve ser o primeiro a ser dado na linha de comando.\n" +"Lembre-se que o ficheiro com a assinatura (.sig ou .asc)\n" +"deve ser o primeiro ficheiro a ser dado na linha de comando.\n" #, c-format msgid "input line %u too long or missing LF\n" -msgstr "linha de entrada %u demasiado longa ou falta o LF\n" +msgstr "linha de entrada %u demasiado longa ou LF ausente\n" -#, fuzzy, c-format +#, c-format msgid "can't open fd %d: %s\n" -msgstr "impossível abrir `%s': %s\n" +msgstr "não é possível abrir fd %d: %s\n" -#, fuzzy, c-format -#| msgid "WARNING: message was not integrity protected\n" +#, c-format msgid "WARNING: encrypting without integrity protection is dangerous\n" -msgstr "AVISO: a mensagem não tinha a sua integridade protegida\n" +msgstr "AVISO: cifrar sem proteção de integridade é perigoso\n" -#, fuzzy, c-format +#, c-format msgid "Hint: Do not use option %s\n" -msgstr "a ler opções de `%s'\n" +msgstr "Dica: Não use a opção %s\n" msgid "set debugging flags" -msgstr "" +msgstr "definindo flags de debug" msgid "enable full debugging" -msgstr "" +msgstr "habilitando debug completo" -#, fuzzy msgid "Usage: kbxutil [options] [files] (-h for help)" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "Uso: kbxutil [opções] [ficheiros] (-h para ajuda)" -#, fuzzy msgid "" "Syntax: kbxutil [options] [files]\n" "List, export, import Keybox data\n" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "" +"Sintaxe: kbxutil [opções] [ficheiros]\n" +"Listar, exportar, importar dados da Keybox\n" #. TRANSLATORS: Put a \x1f right before a colon. This can be #. * used by pinentry to nicely align the names and values. Keep #. * the %s at the start and end of the string. #, c-format msgid "%sNumber: %s%%0AHolder: %s%s" -msgstr "" +msgstr "%sNúmero: %s%%0ATitular: %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 "Tentativas restantes: %d" -#, fuzzy msgid "|N|Please enter the new Global-PIN" -msgstr "muda a frase secreta" +msgstr "|N|Introduza o novo Global-PIN" -#, fuzzy msgid "||Please enter the Global-PIN of your PIV card" -msgstr "motivo da revocação: " +msgstr "||Introduza o Global-PIN do seu cartão PIV" -#, fuzzy msgid "|N|Please enter the new PIN" -msgstr "muda a frase secreta" +msgstr "|N|Introduza o novo PIN" -#, fuzzy msgid "||Please enter the PIN of your PIV card" -msgstr "motivo da revocação: " +msgstr "||Introduza o PIN do seu cartão PIV" -#, fuzzy msgid "|N|Please enter the new Unblocking Key" -msgstr "muda a frase secreta" +msgstr "|N|Introduza a nova Unblocking Key" -#, fuzzy msgid "||Please enter the Unblocking Key of your PIV card" -msgstr "motivo da revocação: " +msgstr "||Introduza a Unblocking Key do seu cartão PIV" #, c-format msgid "PIN callback returned error: %s\n" -msgstr "" +msgstr "callback de PIN retornou erro: %s\n" #, c-format msgid "PIN is too short; minimum length is %d\n" -msgstr "" +msgstr "O PIN é muito curto; o comprimento mínimo é %d\n" #, c-format msgid "PIN is too long; maximum length is %d\n" -msgstr "" +msgstr "O PIN é muito longo; o comprimento máximo é %d\n" #, c-format msgid "PIN has invalid characters; only digits are allowed\n" -msgstr "" +msgstr "O PIN tem caracteres inválidos; apenas dígitos são permitidos\n" -#, fuzzy, c-format +#, c-format msgid "key already exists\n" -msgstr "%s' já comprimido\n" +msgstr "chave já existe\n" #, c-format msgid "existing key will be replaced\n" -msgstr "" +msgstr "a chave existente será substituída\n" -#, fuzzy, c-format +#, c-format msgid "generating new key\n" -msgstr "gerar um novo par de chaves" +msgstr "gerando nova chave\n" -#, fuzzy, c-format +#, c-format msgid "writing new key\n" -msgstr "gerar um novo par de chaves" +msgstr "escrevendo nova chave\n" -#, fuzzy, c-format +#, c-format msgid "failed to store the key: %s\n" -msgstr "falha ao inicializar a base de dados de confiança: %s\n" +msgstr "falha ao armazenar a chave: %s\n" #, c-format msgid "response does not contain the RSA modulus\n" -msgstr "" +msgstr "resposta não contém o módulo de RSA\n" #, c-format msgid "response does not contain the RSA public exponent\n" -msgstr "" +msgstr "resposta não contém o expoente público de RSA\n" -#, fuzzy, c-format -#| msgid "remove keys from the public keyring" +#, c-format msgid "response does not contain the EC public key\n" -msgstr "remover chaves do porta-chaves público" +msgstr "resposta não contém a chave pública de EC\n" #, c-format msgid "please wait while key is being generated ...\n" -msgstr "" +msgstr "aguarde enquanto a chave está a ser gerada ...\n" -#, fuzzy, c-format +#, c-format msgid "generating key failed\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha ao gerar chave\n" -#, fuzzy, c-format +#, c-format msgid "key generation completed (%d second)\n" msgid_plural "key generation completed (%d seconds)\n" -msgstr[0] "A geração de chaves falhou: %s\n" -msgstr[1] "A geração de chaves falhou: %s\n" +msgstr[0] "geração de chave concluída (%d segundo)\n" +msgstr[1] "geração de chave concluída (%d segundos)\n" #, c-format msgid "response does not contain the public key data\n" -msgstr "" +msgstr "a resposta não contém os dados da chave pública\n" msgid "||Please enter the PIN for the key to create qualified signatures." -msgstr "" +msgstr "||Introduza o PIN da chave para criar assinaturas qualificadas." #. TRANSLATORS: Do not translate the "|A|" prefix but keep it at #. the start of the string. Use %0A (single percent) for a linefeed. -#, fuzzy msgid "|A|Please enter the Admin PIN" -msgstr "muda a frase secreta" +msgstr "|A|Introduza o PIN do Admin" -#, fuzzy msgid "|P|Please enter the PIN Unblocking Code (PUK) for the standard keys." -msgstr "motivo da revocação: " +msgstr "|P|Introduza o PIN Unblocking Code (PUK) para as chaves padrão." -#, fuzzy msgid "||Please enter the PIN for the standard keys." -msgstr "muda a frase secreta" +msgstr "||Introduza o PIN das chaves padrão." #, c-format msgid "RSA modulus missing or not of size %d bits\n" -msgstr "" +msgstr "Módulo de RSA ausente ou não tem o tamanho de %d bits\n" #, c-format msgid "RSA public exponent missing or larger than %d bits\n" -msgstr "" +msgstr "Expoente público de RSA ausente ou maior que %d bits\n" -#, fuzzy -#| msgid "Note: This key has been disabled.\n" msgid "Note: PIN has not yet been enabled." -msgstr "Nota: Esta chave foi desactivada.\n" +msgstr "Nota: o PIN ainda não foi habilitado." #, c-format msgid "the NullPIN has not yet been changed\n" -msgstr "" +msgstr "o NullPIN ainda não foi alterado\n" -#, fuzzy msgid "|N|Please enter a new PIN for the standard keys." -msgstr "muda a frase secreta" +msgstr "|N|Introduza um novo PIN para as chaves padrão." -#, fuzzy msgid "|NP|Please enter a new PIN Unblocking Code (PUK) for the standard keys." -msgstr "motivo da revocação: " +msgstr "" +"|NP|Introduza um novo PIN Unblocking Code (PUK) para as chaves padrão. " msgid "|N|Please enter a new PIN for the key to create qualified signatures." -msgstr "" +msgstr "|N|Introduza um novo PIN para a chave criar assinaturas qualificadas." msgid "" "|NP|Please enter a new PIN Unblocking Code (PUK) for the key to create " "qualified signatures." msgstr "" +"|NP|Introduza um novo PIN Unblocking Code (PUK) para a chave criar " +"assinaturas qualificadas." msgid "" "|P|Please enter the PIN Unblocking Code (PUK) for the key to create " "qualified signatures." msgstr "" +"|P|Introduza o PIN Unblocking Code (PUK) para a chave criar assinaturas " +"qualificadas." -#, fuzzy, c-format +#, c-format msgid "error getting new PIN: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao obter novo PIN: %s\n" -#, fuzzy, c-format +#, c-format msgid "failed to store the fingerprint: %s\n" -msgstr "falha ao inicializar a base de dados de confiança: %s\n" +msgstr "falha ao armazenar a impressão digital: %s\n" -#, fuzzy, c-format +#, c-format msgid "failed to store the creation date: %s\n" -msgstr "falha ao criar 'cache' do porta-chaves: %s\n" +msgstr "falha ao armazenar a data de criação: %s\n" #, c-format msgid "error retrieving CHV status from card\n" -msgstr "" +msgstr "erro ao obter o status CHV do cartão\n" -#, fuzzy, c-format +#, c-format msgid "reading public key failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha ao ler a chave pública: %s\n" #. TRANSLATORS: Put a \x1f right before a colon. This can be #. * used by pinentry to nicely align the names and values. Keep #. * the %s at the start and end of the string. #, c-format msgid "%sNumber: %s%%0AHolder: %s%%0ACounter: %lu%s" -msgstr "" +msgstr "%sNúmero: %s%%0ATitular: %s%%0AContador: %lu%s" #, c-format msgid "using default PIN as %s\n" -msgstr "" +msgstr "usando o PIN pré-definido como %s\n" #, c-format msgid "failed to use default PIN as %s: %s - disabling further default use\n" msgstr "" +"falha ao usar o PIN pré-definido como %s: %s - desabilitando um uso pré-" +"definido adicional\n" -#, fuzzy msgid "||Please unlock the card" -msgstr "muda a frase secreta" +msgstr "||Desbloqueie o cartão" #, c-format msgid "PIN for CHV%d is too short; minimum length is %d\n" -msgstr "" +msgstr "O PIN para CHV%d é muito curto; o comprimento mínimo é %d\n" -#, fuzzy, c-format +#, c-format msgid "verify CHV%d failed: %s\n" -msgstr "A geração de chaves falhou: %s\n" +msgstr "verificar CHV%d falhou: %s\n" #, c-format msgid "card is permanently locked!\n" -msgstr "" +msgstr "cartão está permanentemente bloqueado!\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] "" +"%d tentativa de PIN do Admin restante antes de o cartão ser permanentemente " +"bloqueado\n" msgstr[1] "" +"%d tentativas de PIN do Admin restantes antes de o cartão ser " +"permanentemente bloqueado\n" #, c-format msgid "access to admin commands is not configured\n" -msgstr "" +msgstr "o acesso aos comandos admin não está configurado\n" -#, fuzzy msgid "||Please enter the PIN" -msgstr "muda a frase secreta" +msgstr "||Introduza o PIN" -#, fuzzy msgid "||Please enter the Reset Code for the card" -msgstr "motivo da revocação: " +msgstr "||Introduza o Código de Reset do cartão" #, c-format msgid "Reset Code is too short; minimum length is %d\n" -msgstr "" +msgstr "O Código de Reset é muito curto; o comprimento mínimo é %d\n" #. TRANSLATORS: Do not translate the "|*|" prefixes but #. keep it at the start of the string. We need this elsewhere #. to get some infos on the string. msgid "|RN|New Reset Code" -msgstr "" +msgstr "|RN|Novo Código de Reset" msgid "|AN|New Admin PIN" -msgstr "" +msgstr "|AN|Novo PIN do Admin" msgid "|N|New PIN" -msgstr "" +msgstr "|N|Novo PIN" -#, fuzzy msgid "||Please enter the Admin PIN and New Admin PIN" -msgstr "muda a frase secreta" +msgstr "||Introduza o PIN do Admin e o Novo PIN do Admin" -#, fuzzy msgid "||Please enter the PIN and New PIN" -msgstr "muda a frase secreta" +msgstr "||Introduza o PIN e o Novo PIN" -#, fuzzy, c-format +#, c-format msgid "error reading application data\n" -msgstr "erro na leitura do bloco de chave: %s\n" +msgstr "erro ao ler dados da aplicação\n" -#, fuzzy, c-format +#, c-format msgid "error reading fingerprint DO\n" -msgstr "%s: erro ao ler registo livre: %s\n" +msgstr "erro ao ler impressão digital DO\n" #, c-format msgid "creation timestamp missing\n" -msgstr "" +msgstr "timestamp de criação ausente\n" #, c-format msgid "RSA prime %s missing or not of size %d bits\n" -msgstr "" +msgstr "primo %s de RSA ausente ou não tem o tamanho de %d bits\n" -#, fuzzy, c-format -#| msgid "unsupported URI" +#, c-format msgid "unsupported curve\n" -msgstr "URI não suportado" +msgstr "sem suporte à curva\n" #, c-format msgid "invalid structure of OpenPGP card (DO 0x93)\n" -msgstr "" +msgstr "estrutura inválida do cartão OpenPGP (DO 0x93)\n" #, c-format msgid "fingerprint on card does not match requested one\n" -msgstr "" +msgstr "impressão digital no cartão não corresponde à pedida\n" -#, fuzzy, c-format +#, c-format msgid "card does not support digest algorithm %s\n" -msgstr "assinatura %s de: \"%s\"\n" +msgstr "cartão não suporta algoritmo digest %s\n" #, c-format msgid "signatures created so far: %lu\n" -msgstr "" +msgstr "assinaturas criadas até agora: %lu\n" #, c-format msgid "" "verification of Admin PIN is currently prohibited through this command\n" msgstr "" +"a verificação do PIN do Admin é atualmente proibida através deste comando\n" -#, fuzzy, c-format +#, c-format msgid "can't access %s - invalid OpenPGP card?\n" -msgstr "nenhum dado OpenPGP válido encontrado.\n" +msgstr "incapaz aceder %s - cartão OpenPGP inválido?\n" -#, fuzzy msgid "||Please enter your PIN at the reader's pinpad" -msgstr "muda a frase secreta" +msgstr "||Introduza o seu PIN no pinpad do leitor" #. TRANSLATORS: Do not translate the "|*|" prefixes but #. keep it at the start of the string. We need this elsewhere #. to get some infos on the string. msgid "|N|Initial New PIN" -msgstr "" +msgstr "|N|Novo PIN Inicial" msgid "run in multi server mode (foreground)" -msgstr "" +msgstr "executar no modo multi server (primeiro plano)" msgid "|LEVEL|set the debugging level to LEVEL" -msgstr "" +msgstr "|LEVEL|definir o nível de debug para LEVEL" -#, fuzzy msgid "|FILE|write a log to FILE" -msgstr "|FICHEIRO|carregar módulo de extensão FICHEIRO" +msgstr "|FILE|escrever um log no FILE" msgid "|N|connect to reader at port N" -msgstr "" +msgstr "|N|conectar ao leitor na porta N" -#, fuzzy msgid "|NAME|use NAME as ct-API driver" -msgstr "|NOME|usar NOME como destinatário por omissão" +msgstr "|NAME|usar NAME como driver ct-API" -#, fuzzy msgid "|NAME|use NAME as PC/SC driver" -msgstr "|NOME|usar NOME como destinatário por omissão" +msgstr "|NAME|usar NAME como driver de PC/SC" -#, fuzzy msgid "do not use the internal CCID driver" -msgstr "nunca usar o terminal" +msgstr "não usar o driver CCID interno" msgid "|N|disconnect the card after N seconds of inactivity" -msgstr "" +msgstr "|N|desconectar o cartão após N segundos de inatividade" msgid "do not use a reader's pinpad" -msgstr "" +msgstr "não usar o pinpad de um leitor" msgid "use variable length input for pinpad" -msgstr "" +msgstr "usar entrada de comprimento variável para o pinpad" msgid "|LIST|change the application priority to LIST" -msgstr "" +msgstr "|LIST|alterar a prioridade da aplicação para LIST" -#, fuzzy msgid "deny the use of admin card commands" -msgstr "comandos em conflito\n" +msgstr "negar o uso de comandos admin do cartão" -#, fuzzy msgid "Usage: @SCDAEMON@ [options] (-h for help)" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "Uso: @SCDAEMON@ [opções] (-h para ajuda)" msgid "" "Syntax: scdaemon [options] [command [args]]\n" "Smartcard daemon for @GNUPG@\n" msgstr "" +"Sintaxe: scdaemon [opções] [comando [args]]\n" +"Daemon de smartcard para @GNUPG@\n" #, c-format msgid "please use the option '--daemon' to run the program in the background\n" -msgstr "" +msgstr "use a opção '--daemon' para executar o programa em segundo plano\n" #, c-format msgid "handler for fd %d started\n" -msgstr "" +msgstr "handler para fd %d iniciado\n" #, c-format msgid "handler for fd %d terminated\n" -msgstr "" +msgstr "handler para fd %d terminado\n" -#, fuzzy, c-format +#, c-format msgid "error getting key usage information: %s\n" -msgstr "erro ao escrever no porta-chaves secreto `%s': %s\n" +msgstr "erro ao obter informações de utilização da chave: %s\n" msgid "Tor might be in use - network access is limited" -msgstr "" +msgstr "O Tor pode estar em uso - o acesso à rede é limitado" #, c-format msgid "validation model requested by certificate: %s" -msgstr "" +msgstr "modelo de validação pedido pelo certificado: %s" msgid "chain" -msgstr "" +msgstr "corrente" -#, fuzzy msgid "shell" -msgstr "help" +msgstr "shell" -#, fuzzy, c-format +#, c-format msgid "critical certificate extension %s is not supported" -msgstr "a versão %d do protocolo gpg-agent não é suportada\n" +msgstr "extensão de certificado crítico %s não é suportada" #, c-format msgid "issuer certificate is not marked as a CA" -msgstr "" +msgstr "certificado do emissor não está marcado como uma CA" msgid "critical marked policy without configured policies" -msgstr "" +msgstr "política marcada crítica sem políticas configuradas" -#, fuzzy, c-format +#, c-format msgid "failed to open '%s': %s\n" -msgstr "impossível abrir `%s': %s\n" +msgstr "falha ao abrir '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "Note: non-critical certificate policy not allowed" -msgstr "a escrever chave privada para `%s'\n" +msgstr "Nota: a política de certificado não crítico não é permitida" -#, fuzzy, c-format +#, c-format msgid "certificate policy not allowed" -msgstr "a escrever chave privada para `%s'\n" +msgstr "política de certificado não permitida" -#, fuzzy, c-format +#, c-format msgid "failed to get the fingerprint\n" -msgstr "falha ao inicializar a base de dados de confiança: %s\n" +msgstr "falha ao obter a impressão digital\n" #, c-format msgid "looking up issuer at external location\n" -msgstr "" +msgstr "procurando o emissor no local externo\n" #, c-format msgid "number of issuers matching: %d\n" -msgstr "" +msgstr "número de emissores correspondentes: %d\n" -#, fuzzy, c-format -#| msgid "%s: can't access: %s\n" +#, c-format msgid "can't get authorityInfoAccess: %s\n" -msgstr "%s: impossível aceder: %s\n" +msgstr "não é possível obter authorityInfoAccess: %s\n" #, c-format msgid "looking up issuer from the Dirmngr cache\n" -msgstr "" +msgstr "procurando o emissor a partir da cache do Dirmngr\n" -#, fuzzy, c-format +#, c-format msgid "number of matching certificates: %d\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "número de certificados correspondentes: %d\n" -#, fuzzy, c-format +#, c-format msgid "dirmngr cache-only key lookup failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha ao procurar por chave apenas na cache do dirmngr: %s\n" -#, fuzzy, c-format +#, c-format msgid "failed to allocate keyDB handle\n" -msgstr "falha ao inicializar a base de dados de confiança: %s\n" +msgstr "falha ao alocar handle de keyDB\n" -#, fuzzy msgid "certificate has been revoked" -msgstr "NOTA: a chave foi revogada" +msgstr "o certificado foi revogado" msgid "the status of the certificate is unknown" -msgstr "" +msgstr "o status do certificado é desconhecido" #, c-format msgid "please make sure that the \"dirmngr\" is properly installed\n" -msgstr "" +msgstr "certifique-se de que o \"dirmngr\" está instalado corretamente\n" -#, fuzzy, c-format +#, c-format msgid "checking the CRL failed: %s" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "falha ao verificar a CRL: %s" #, c-format msgid "certificate with invalid validity: %s" -msgstr "" +msgstr "certificado com validação inválida: %s" #, c-format msgid "certificate not yet valid" -msgstr "" +msgstr "certificado ainda não está válido" -#, fuzzy msgid "root certificate not yet valid" -msgstr "a escrever chave privada para `%s'\n" +msgstr "certificado raiz ainda não está válido" msgid "intermediate certificate not yet valid" -msgstr "" +msgstr "certificado intermediário ainda não está válido" -#, fuzzy, c-format +#, c-format msgid "certificate has expired" -msgstr "Esta chave expirou!" +msgstr "o certificado expirou" -#, fuzzy msgid "root certificate has expired" -msgstr "Esta chave expirou!" +msgstr "o certificado raiz expirou" -#, fuzzy msgid "intermediate certificate has expired" -msgstr "Esta chave expirou!" +msgstr "o certificado intermediário expirou" #, c-format msgid "required certificate attributes missing: %s%s%s" -msgstr "" +msgstr "atributos de certificado necessários ausentes: %s%s%s" -#, fuzzy msgid "certificate with invalid validity" -msgstr "Esta chave expirou!" +msgstr "certificado com validação inválida" msgid "signature not created during lifetime of certificate" -msgstr "" +msgstr "assinatura não criada durante a vida útil do certificado" msgid "certificate not created during lifetime of issuer" -msgstr "" +msgstr "certificado não criado durante a vida útil do emissor" msgid "intermediate certificate not created during lifetime of issuer" -msgstr "" +msgstr "certificado intermediário não criado durante a vida útil do emissor" -#, fuzzy, c-format +#, c-format msgid " ( signature created at " -msgstr " novas assinaturas: %lu\n" +msgstr " ( assinatura criada em " -#, fuzzy, c-format +#, c-format msgid " (certificate created at " -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr " ( certificado criado em " -#, fuzzy, c-format +#, c-format msgid " (certificate valid from " -msgstr "certificado incorrecto" +msgstr " (certificado válido desde " #, c-format msgid " ( issuer valid from " -msgstr "" +msgstr " ( emissor válido desde " -#, fuzzy, c-format +#, c-format msgid "fingerprint=%s\n" -msgstr "mostra impressão digital" +msgstr "impressão digital=%s\n" #, c-format msgid "root certificate has now been marked as trusted\n" -msgstr "" +msgstr "o certificado raiz foi agora marcado como confiável\n" #, c-format msgid "interactive marking as trusted not enabled in gpg-agent\n" -msgstr "" +msgstr "marcar interativamente como confiável não habilitado no gpg-agent\n" #, c-format msgid "interactive marking as trusted disabled for this session\n" -msgstr "" +msgstr "marcar interativamente como confiável desabilitado para esta sessão\n" msgid "WARNING: creation time of signature not known - assuming current time" msgstr "" +"AVISO: tempo de criação da assinatura não conhecido - supondo a hora atual" -#, fuzzy msgid "no issuer found in certificate" -msgstr "gerar um certificado de revogação" +msgstr "nenhum emissor encontrado no certificado" msgid "self-signed certificate has a BAD signature" -msgstr "" +msgstr "certificado auto-assinado tem uma assinatura INVÁLIDA" #, c-format msgid "root certificate is not marked trusted" -msgstr "" +msgstr "o certificado raiz não está marcado como confiável" -#, fuzzy, c-format +#, c-format msgid "checking the trust list failed: %s\n" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "falha ao verificar a lista da confiança: %s\n" #, c-format msgid "certificate chain too long\n" -msgstr "" +msgstr "corrente de certificados muito longa\n" #, c-format msgid "issuer certificate not found" -msgstr "" +msgstr "certificado do emissor não encontrado" -#, fuzzy, c-format +#, c-format msgid "certificate has a BAD signature" -msgstr "verificar uma assinatura" +msgstr "certificado tem uma assinatura INVÁLIDA" msgid "found another possible matching CA certificate - trying again" msgstr "" +"encontrado outro certificado de CA que possivelmente corresponde - tentando " +"novamente" #, c-format msgid "certificate chain longer than allowed by CA (%d)" -msgstr "" +msgstr "corrente de certificados maior do que o permitido pela CA (%d)" -#, fuzzy, c-format +#, c-format msgid "certificate is good\n" -msgstr "preferência %c%lu duplicada\n" +msgstr "certificado é válido\n" -#, fuzzy, c-format +#, c-format msgid "intermediate certificate is good\n" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "certificado intermediário é válido\n" -#, fuzzy, c-format +#, c-format msgid "root certificate is good\n" -msgstr "certificado incorrecto" +msgstr "certificado raiz é válido\n" msgid "switching to chain model" -msgstr "" +msgstr "mudando para o modelo de corrente" #, c-format msgid "validation model used: %s" -msgstr "" +msgstr "modelo de validação usado: %s" #, c-format msgid "a %u bit hash is not valid for a %u bit %s key\n" -msgstr "" +msgstr "um hash de %u bit não é válido para uma chave de %u bit %s\n" -#, fuzzy, c-format +#, c-format msgid "out of core\n" -msgstr "não processado" +msgstr "fora do core\n" #, c-format msgid "(this is the MD2 algorithm)\n" -msgstr "" +msgstr "(este é o algoritmo MD2)\n" -#, fuzzy msgid "none" -msgstr "não" +msgstr "nenhuma" -#, fuzzy msgid "[Error - invalid encoding]" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "[Erro - codificação inválida]" msgid "[Error - out of core]" -msgstr "" +msgstr "[Erro - fora do core]" msgid "[Error - No name]" -msgstr "" +msgstr "[Erro - Sem nome]" -#, fuzzy msgid "[Error - invalid DN]" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "[Erro - DN inválido]" -#, fuzzy, c-format +#, c-format msgid "" "Please enter the passphrase to unlock the secret key for the X.509 " "certificate:\n" @@ -7338,343 +7095,325 @@ msgid "" "S/N %s, ID 0x%08lX,\n" "created %s, expires %s.\n" msgstr "" -"Precisa de uma frase secreta para desbloquear a chave secreta do " -"utilizador:\n" -"\n" -"\"%.*s\"\n" -"chave %u bits %s, ID %08lx, criada %s%s\n" +"Introduza a frase-secreta para desbloquear a chave secreta para o " +"certificado X.509:\n" +"\"%s\"\n" +"S/N %s, ID 0x%08lX,\n" +"criado %s, expira %s.\n" #, c-format msgid "no key usage specified - assuming all usages\n" msgstr "" +"nenhuma utilização da chave especificada - supondo todos as utilizações\n" #, c-format msgid "certificate should not have been used for certification\n" -msgstr "" +msgstr "certificado não deveria ter sido usado para certificação\n" #, c-format msgid "certificate should not have been used for OCSP response signing\n" msgstr "" +"certificado não deveria ter sido usado para assinatura de resposta OCSP\n" #, c-format msgid "certificate should not have been used for encryption\n" -msgstr "" +msgstr "certificado não deveria ter sido usado para a cifração\n" #, c-format msgid "certificate should not have been used for signing\n" -msgstr "" +msgstr "certificado não deveria ter sido usado para a assinatura\n" #, c-format msgid "certificate is not usable for encryption\n" -msgstr "" +msgstr "o certificado não é utilizável para cifração\n" #, c-format msgid "certificate is not usable for signing\n" -msgstr "" +msgstr "o certificado não é utilizável para assinar\n" -#, fuzzy, c-format +#, c-format msgid "looking for another certificate\n" -msgstr "certificado incorrecto" +msgstr "à procura de outro certificado\n" -#, fuzzy, c-format +#, c-format msgid "line %d: invalid algorithm\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "linha %d: algoritmo inválido\n" #, c-format msgid "line %d: invalid key length %u (valid are %d to %d)\n" -msgstr "" +msgstr "linha %d: comprimento de chave %u inválido (é válido desde %d a %d)\n" #, c-format msgid "line %d: no subject name given\n" -msgstr "" +msgstr "linha %d: nenhum nome de entidade fornecido\n" -#, fuzzy, c-format +#, c-format msgid "line %d: invalid subject name label '%.*s'\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "linha %d: rótulo do nome de entidade '%.*s' inválido\n" -#, fuzzy, c-format +#, c-format msgid "line %d: invalid subject name '%s' at pos %d\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "linha %d: nome de entidade '%s' inválido no PDV %d\n" -#, fuzzy, c-format +#, c-format msgid "line %d: not a valid email address\n" -msgstr "Endereço eletrónico inválido\n" +msgstr "linha %d: não é um endereço de email válido\n" -#, fuzzy, c-format +#, c-format msgid "line %d: invalid serial number\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "linha %d: número de série inválido\n" #, c-format msgid "line %d: invalid issuer name label '%.*s'\n" -msgstr "" +msgstr "linha %d: rótulo do nome do emissor '%.*s' inválido\n" #, c-format msgid "line %d: invalid issuer name '%s' at pos %d\n" -msgstr "" +msgstr "linha %d: nome do emissor '%s' inválido no PDV %d\n" -#, fuzzy, c-format +#, c-format msgid "line %d: invalid date given\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "linha %d: fornecida data inválida\n" -#, fuzzy, c-format +#, c-format msgid "line %d: error getting signing key by keygrip '%s': %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "linha %d: erro ao obter a chave de assinatura pelo keygrip '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "line %d: invalid hash algorithm given\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "linha %d: fornecido algoritmo de hash inválido\n" -#, fuzzy, c-format +#, c-format msgid "line %d: invalid authority-key-id\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "linha %d: authority-key-id inválido\n" -#, fuzzy, c-format +#, c-format msgid "line %d: invalid subject-key-id\n" -msgstr "chave %08lX: ligação de subchave inválida\n" +msgstr "linha %d: subject-key-id inválido\n" -#, fuzzy, c-format +#, c-format msgid "line %d: invalid extension syntax\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "linha %d: sintaxe de extensão inválida\n" -#, fuzzy, c-format +#, c-format msgid "line %d: error reading key '%s' from card: %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "linha %d: erro ao ler a chave '%s' do cartão: %s\n" -#, fuzzy, c-format +#, c-format msgid "line %d: error getting key by keygrip '%s': %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "linha %d: erro ao obter chave por keygrip '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "line %d: key generation failed: %s <%s>\n" -msgstr "A geração de chaves falhou: %s\n" +msgstr "linha %d: falha na geração de chaves: %s <%s>\n" msgid "" "To complete this certificate request please enter the passphrase for the key " "you just created once more.\n" msgstr "" +"Para concluir este pedido de certificado, introduza mais uma vez a frase-" +"secreta para a chave que você acabou de criar.\n" -#, fuzzy, c-format +#, c-format msgid " (%d) Existing key\n" -msgstr " (%d) RSA (apenas cifragem)\n" +msgstr " (%d) Chave existente\n" #, c-format msgid " (%d) Existing key from card\n" -msgstr "" +msgstr " (%d) Chave existente do cartão\n" #, c-format msgid "Possible actions for a %s key:\n" -msgstr "" +msgstr "Ações possíveis para uma chave %s:\n" -#, fuzzy, c-format +#, c-format msgid " (%d) sign, encrypt\n" -msgstr " (%d) RSA (assinatura e cifragem)\n" +msgstr " (%d) assinar, cifrar\n" -#, fuzzy, c-format +#, c-format msgid " (%d) sign\n" -msgstr " (%d) DSA (apenas assinatura)\n" +msgstr " (%d) assinar\n" -#, fuzzy, c-format +#, c-format msgid " (%d) encrypt\n" -msgstr " (%d) RSA (apenas cifragem)\n" +msgstr " (%d) cifrar\n" msgid "Enter the X.509 subject name: " -msgstr "" +msgstr "Introduzir o nome de entidade X.509: " msgid "No subject name given\n" -msgstr "" +msgstr "Nenhum nome de entidade fornecido\n" -#, fuzzy, c-format +#, c-format msgid "Invalid subject name label '%.*s'\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "Rótulo do nome de entidade inválido '%.*s'\n" #. TRANSLATORS: The 22 in the second string is the #. length of the first string up to the "%s". Please #. adjust it do the length of your translation. The #. second string is merely passed to atoi so you can #. drop everything after the number. -#, fuzzy, c-format +#, c-format msgid "Invalid subject name '%s'\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "Nome de entidade inválido '%s'\n" msgid "22 translator: see certreg-ui.c:gpgsm_gencertreq_tty" -msgstr "" +msgstr "27 translator: see certreg-ui.c:gpgsm_gencertreq_tty" -#, fuzzy msgid "Enter email addresses" -msgstr "Endereço de correio eletrónico: " +msgstr "Introduzir os endereços de email" -#, fuzzy msgid " (end with an empty line):\n" -msgstr "" -"\n" -"Insira o identificador do utilizador. Termine com uma linha vazia: " +msgstr " (terminar com uma linha vazia):\n" -#, fuzzy msgid "Enter DNS names" -msgstr "Digite novo nome de ficheiro" +msgstr "Introduzir nomes DNS" -#, fuzzy msgid " (optional; end with an empty line):\n" -msgstr "" -"\n" -"Insira o identificador do utilizador. Termine com uma linha vazia: " +msgstr " (opcional; terminar com uma linha vazia):\n" msgid "Enter URIs" -msgstr "" +msgstr "Introduzir URIs" -#, fuzzy msgid "Create self-signed certificate? (y/N) " -msgstr "Gerar um certificado de revogação para esta assinatura? (s/N)" +msgstr "Criar certificado auto-assinado? (s/N) " msgid "These parameters are used:\n" -msgstr "" +msgstr "São usados estes parâmetros:\n" -#, fuzzy, c-format +#, c-format msgid "error creating temporary file: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao criar ficheiro temporário: %s\n" msgid "Now creating self-signed certificate. " -msgstr "" +msgstr "Criando agora certificado auto-assinado. " -#, fuzzy msgid "Now creating certificate request. " -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "Criando agora o pedido de certificado. " msgid "This may take a while ...\n" -msgstr "" +msgstr "Isto pode demorar um pouco...\n" msgid "Ready.\n" -msgstr "" +msgstr "Pronto.\n" msgid "Ready. You should now send this request to your CA.\n" -msgstr "" +msgstr "Pronto. Agora você deverá enviar este pedido para sua CA.\n" #, c-format msgid "resource problem: out of core\n" -msgstr "" +msgstr "problema de recurso: fora do core\n" #, c-format msgid "(this is the RC2 algorithm)\n" -msgstr "" +msgstr "(este é o algoritmo RC2)\n" #, c-format msgid "(this does not seem to be an encrypted message)\n" -msgstr "" +msgstr "(esta não parece ser uma mensagem cifrada)\n" -#, fuzzy, c-format +#, c-format msgid "encrypted to %s key %s\n" -msgstr "cifrado com chave %s, ID %08lX\n" +msgstr "cifrado para chave %s %s\n" -#, fuzzy, c-format +#, c-format msgid "certificate '%s' not found: %s\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "certificado '%s' não encontrado: %s\n" -#, fuzzy, c-format +#, c-format msgid "error locking keybox: %s\n" -msgstr "erro na leitura do bloco de chave: %s\n" +msgstr "erro ao bloquear a keybox: %s\n" -#, fuzzy, c-format +#, c-format msgid "duplicated certificate '%s' deleted\n" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "certificado duplicado '%s' apagado\n" -#, fuzzy, c-format +#, c-format msgid "certificate '%s' deleted\n" -msgstr "preferência %c%lu duplicada\n" +msgstr "certificado '%s' apagado\n" -#, fuzzy, c-format +#, c-format msgid "deleting certificate \"%s\" failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha ao apagar o certificado \"%s\": %s\n" -#, fuzzy, c-format +#, c-format msgid "no valid recipients given\n" -msgstr "resposta do agente inválida\n" +msgstr "nenhum destinatário válido fornecido\n" -#, fuzzy msgid "list external keys" -msgstr "listar as chaves secretas" +msgstr "listar chaves externas" -#, fuzzy msgid "list certificate chain" -msgstr "certificado incorrecto" +msgstr "listar corrente de certificados" -#, fuzzy msgid "import certificates" -msgstr "certificado incorrecto" +msgstr "importar certificados" -#, fuzzy msgid "export certificates" -msgstr "certificado incorrecto" +msgstr "exportar certificados" msgid "register a smartcard" -msgstr "" +msgstr "registar um smartcard" msgid "pass a command to the dirmngr" -msgstr "" +msgstr "passar um comando para o dirmngr" msgid "invoke gpg-protect-tool" -msgstr "" +msgstr "invocar gpg-protect-tool" msgid "don't use the terminal at all" msgstr "nunca usar o terminal" msgid "|N|number of certificates to include" -msgstr "" +msgstr "|N|número de certificados a incluir" msgid "|FILE|take policy information from FILE" -msgstr "" +msgstr "|FILE|pegar informações de política do FILE" msgid "assume input is in PEM format" -msgstr "" +msgstr "supor que a entrada esteja no formato PEM" msgid "assume input is in base-64 format" -msgstr "" +msgstr "supor que a entrada esteja no formato base-64" msgid "assume input is in binary format" -msgstr "" +msgstr "supor que a entrada esteja em formato binário" -#, fuzzy msgid "create base-64 encoded output" -msgstr "criar saída com armadura ascii" +msgstr "criar saída codificada em base-64" -#, fuzzy msgid "|USER-ID|use USER-ID as default secret key" -msgstr "|NOME|usar NOME como chave secreta por omissão" +msgstr "|USER-ID|usar USER-ID como chave secreta pré-definida" -#, fuzzy msgid "|FILE|add keyring to the list of keyrings" -msgstr "" -"adicionar este porta-chaves\n" -"à lista de porta-chaves" +msgstr "|FILE|adicionar porta-chaves à lista dos porta-chaves" msgid "fetch missing issuer certificates" -msgstr "" +msgstr "buscar certificados de emissor ausentes" -#, fuzzy msgid "|NAME|use encoding NAME for PKCS#12 passphrases" -msgstr "" -"|NOME|usar algoritmo de criptografia NOME para\n" -"frases secretas" +msgstr "|NAME|usar a codificação NAME para frases-secretas PKCS#12" msgid "never consult a CRL" -msgstr "" +msgstr "nunca consultar uma CRL" msgid "do not check CRLs for root certificates" -msgstr "" +msgstr "não verificar CRLs para certificados raiz" msgid "check validity using OCSP" -msgstr "" +msgstr "verificar a validade usando OCSP" msgid "do not check certificate policies" -msgstr "" +msgstr "não verificar políticas de certificado" msgid "|NAME|use cipher algorithm NAME" -msgstr "|NOME|usar algoritmo de criptografia NOME" +msgstr "|NAME|usar algoritmo da cifra NAME" msgid "|NAME|use message digest algorithm NAME" -msgstr "|NOME|usar algoritmo de \"digest\" de mensagens NOME" +msgstr "|NAME|usar algoritmo de digest das mensagens NAME" msgid "batch mode: never ask" -msgstr "modo não-interactivo: nunca perguntar" +msgstr "modo batch: nunca perguntar" msgid "assume yes on most questions" msgstr "assumir sim para a maioria das perguntas" @@ -7682,111 +7421,107 @@ msgstr "assumir sim para a maioria das perguntas" msgid "assume no on most questions" msgstr "assumir não para a maioria das perguntas" -#, fuzzy msgid "|FILE|write an audit log to FILE" -msgstr "|FICHEIRO|carregar módulo de extensão FICHEIRO" +msgstr "|FILE|escrever um log de auditoria no FILE" -#, fuzzy -#| msgid "Usage: gpg [options] [files] (-h for help)" msgid "Usage: @GPGSM@ [options] [files] (-h for help)" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "Uso: @GPGSM@ [opções] [ficheiros] (-h para ajuda)" -#, fuzzy msgid "" "Syntax: @GPGSM@ [options] [files]\n" "Sign, check, encrypt or decrypt using the S/MIME protocol\n" "Default operation depends on the input data\n" msgstr "" -"Sintaxe: gpg [opções] [ficheiros]\n" -"assina, verifica, cifra ou decifra\n" -"a operação por omissão depende dos dados de entrada\n" +"Sintaxe: @GPGSM@ [opções] [ficheiros]\n" +"Assinar, verificar, cifrar, ou decifrar usando o protocolo S/MIME\n" +"A operação pré-definida depende dos dados de entrada\n" -#, fuzzy, c-format +#, c-format msgid "Note: won't be able to encrypt to '%s': %s\n" -msgstr "impossível ligar a `%s': %s\n" +msgstr "Nota: não será possível cifrar para '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "unknown validation model '%s'\n" -msgstr "destinatário por omissão desconhecido `%s'\n" +msgstr "modelo de validação '%s' desconhecido\n" -#, fuzzy, c-format +#, c-format msgid "importing common certificates '%s'\n" -msgstr "a escrever para `%s'\n" +msgstr "importando certificados comuns '%s'\n" -#, fuzzy, c-format +#, c-format msgid "can't sign using '%s': %s\n" -msgstr "impossível fechar `%s': %s\n" +msgstr "não é possível assinar usando '%s': %s\n" #, c-format msgid "invalid command (there is no implicit command)\n" -msgstr "" +msgstr "comando inválido (não há comando implícito)\n" -#, fuzzy, c-format +#, c-format msgid "total number processed: %lu\n" -msgstr "Número total processado: %lu\n" +msgstr "número total processado: %lu\n" -#, fuzzy, c-format +#, c-format msgid "error storing certificate\n" -msgstr "gerar um certificado de revogação" +msgstr "erro ao armazenar certificado\n" #, c-format msgid "basic certificate checks failed - not imported\n" -msgstr "" +msgstr "falha nas verificações básicas de certificado - não importado\n" -#, fuzzy, c-format +#, c-format msgid "error getting stored flags: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao obter flags armazenadas: %s\n" -#, fuzzy, c-format +#, c-format msgid "error importing certificate: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao importar certificado: %s\n" -#, fuzzy, c-format +#, c-format msgid "error reading input: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao ler a entrada: %s\n" -#, fuzzy, c-format +#, c-format msgid "no keyboxd running in this session\n" -msgstr "o gpg-agent não está disponível nesta sessão\n" +msgstr "nenhum keyboxd em execução nesta sessão\n" -#, fuzzy, c-format +#, c-format msgid "error opening key DB: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao abrir keyDB: %s\n" #, c-format msgid "problem looking for existing certificate: %s\n" -msgstr "" +msgstr "problema ao procurar certificado existente: %s\n" -#, fuzzy, c-format +#, c-format msgid "error finding writable keyDB: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao encontrar keyDB com permissão de escrita: %s\n" -#, fuzzy, c-format +#, c-format msgid "error storing certificate: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao armazenar certificado: %s\n" -#, fuzzy, c-format +#, c-format msgid "problem re-searching certificate: %s\n" -msgstr "rev? problema ao verificar revogação: %s\n" +msgstr "problema ao pesquisar novamente o certificado: %s\n" -#, fuzzy, c-format +#, c-format msgid "error storing flags: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao armazenar flags: %s\n" msgid "Error - " -msgstr "" +msgstr "Erro - " #, c-format msgid "GPG_TTY has not been set - using maybe bogus default\n" -msgstr "" +msgstr "GPG_TTY não foi definido - talvez esteja usando falsa pré-definição\n" -#, fuzzy, c-format +#, c-format msgid "invalid formatted fingerprint in '%s', line %d\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "impressão digital formatada está inválida em '%s', linha %d\n" -#, fuzzy, c-format +#, c-format msgid "invalid country code in '%s', line %d\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "código de país está inválido em '%s', linha %d\n" #, c-format msgid "" @@ -7797,12 +7532,20 @@ msgid "" "\n" "%s%sAre you really sure that you want to do this?" msgstr "" +"Você está prestes a criar uma assinatura usando seu certificado:\n" +"\"%s\"\n" +"Isto criará uma assinatura qualificada por lei equiparada a uma assinatura " +"manuscrita.\n" +"\n" +"%s%sTem certeza de que deseja fazer isto?" #, c-format msgid "" "Note, that this software is not officially approved to create or verify such " "signatures.\n" msgstr "" +"Note que este software não é oficialmente aprovado para criar ou verificar " +"tais assinaturas.\n" #, c-format msgid "" @@ -7810,604 +7553,601 @@ msgid "" "\"%s\"\n" "Note, that this certificate will NOT create a qualified signature!" msgstr "" +"Você está prestes a criar uma assinatura usando seu certificado:\n" +"\"%s\"\n" +"Note que este certificado NÃO criará uma assinatura qualificada!" -#, fuzzy, c-format +#, c-format msgid "hash algorithm %d (%s) for signer %d not supported; using %s\n" -msgstr "algoritmo de protecção %d%s não é suportado\n" +msgstr "" +"algoritmo de hash %d (%s) para o signatário %d não suportado; usando %s\n" #, c-format msgid "hash algorithm used for signer %d: %s (%s)\n" -msgstr "" +msgstr "algoritmo de hash usado para o signatário %d: %s (%s)\n" -#, fuzzy, c-format +#, c-format msgid "checking for qualified certificate failed: %s\n" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "falha na verificação do certificado qualificado: %s\n" -#, fuzzy, c-format +#, c-format msgid "%s/%s signature using %s key %s\n" -msgstr "Assinatura feita em %.*s usando %s, ID da chave %08lX\n" +msgstr "assinatura %s/%s usando a chave %s %s\n" -#, fuzzy, c-format +#, c-format msgid "Signature made " -msgstr "Esta assinatura expirou em %s.\n" +msgstr "Assinatura feita " #, c-format msgid "[date not given]" -msgstr "" +msgstr "[data não fornecida]" -#, fuzzy, c-format +#, c-format msgid "algorithm:" -msgstr "armadura: %s\n" +msgstr "algoritmo:" #, c-format msgid "" "invalid signature: message digest attribute does not match computed one\n" msgstr "" +"assinatura inválida: o atributo digest da mensagem não corresponde ao " +"computado\n" -#, fuzzy, c-format +#, c-format msgid "Good signature from" -msgstr "Assinatura correcta de \"" +msgstr "Assinatura válida de" -#, fuzzy, c-format +#, c-format msgid " aka" -msgstr " ou \"" +msgstr " aka" -#, fuzzy, c-format +#, c-format msgid "This is a qualified signature\n" -msgstr "" -"\n" -"Isto será uma auto-assinatura.\n" +msgstr "Esta é uma assinatura qualificada\n" -#, fuzzy, c-format +#, c-format msgid "can't initialize certificate cache lock: %s\n" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "não é possível inicializar o bloqueio da cache de certificados: %s\n" #, c-format msgid "can't acquire read lock on the certificate cache: %s\n" msgstr "" +"não é possível adquirir bloqueio de leitura da cache de certificados: %s\n" #, c-format msgid "can't acquire write lock on the certificate cache: %s\n" msgstr "" +"não é possível adquirir bloqueio de escrita da cache de certificados: %s\n" #, c-format msgid "can't release lock on the certificate cache: %s\n" -msgstr "" +msgstr "não é possível libertar o bloqueio da cache de certificados: %s\n" #, c-format msgid "dropping %u certificates from the cache\n" -msgstr "" +msgstr "descartando %u certificados da cache\n" -#, fuzzy, c-format -#| msgid "can't create `%s': %s\n" +#, c-format msgid "can't parse certificate '%s': %s\n" -msgstr "impossível criar `%s': %s\n" +msgstr "não é possível processar o certificado '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "certificate '%s' already cached\n" -msgstr "preferência %c%lu duplicada\n" +msgstr "certificado '%s' já armazenado em cache\n" -#, fuzzy, c-format +#, c-format msgid "trusted certificate '%s' loaded\n" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "certificado confiável '%s' carregado\n" -#, fuzzy, c-format +#, c-format msgid "certificate '%s' loaded\n" -msgstr "preferência %c%lu duplicada\n" +msgstr "certificado '%s' carregado\n" -#, fuzzy, c-format +#, c-format msgid " SHA1 fingerprint = %s\n" -msgstr "mostra impressão digital" +msgstr " impressão digital SHA1 = %s\n" msgid " issuer =" -msgstr "" +msgstr " emissor =" msgid " subject =" -msgstr "" +msgstr " entidade =" -#, fuzzy, c-format +#, c-format msgid "error loading certificate '%s': %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao carregar o certificado '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "permanently loaded certificates: %u\n" -msgstr "certificado incorrecto" +msgstr " certificados permanentemente carregados: %u\n" -#, fuzzy, c-format +#, c-format msgid " runtime cached certificates: %u\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "certificados de cache em tempo de execução: %u\n" -#, fuzzy, c-format +#, c-format msgid " trusted certificates: %u (%u,%u,%u,%u)\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr " certificados confiáveis: %u (%u,%u,%u,%u)\n" -#, fuzzy, c-format +#, c-format msgid "certificate already cached\n" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "certificado já em cache\n" -#, fuzzy, c-format +#, c-format msgid "certificate cached\n" -msgstr "preferência %c%lu duplicada\n" +msgstr "certificado armazenado em cache\n" -#, fuzzy, c-format +#, c-format msgid "error caching certificate: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao armazenar o certificado em cache: %s\n" -#, fuzzy, c-format +#, c-format msgid "invalid SHA1 fingerprint string '%s'\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "string de impressão digital SHA1 inválida '%s'\n" -#, fuzzy, c-format +#, c-format msgid "error fetching certificate by S/N: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao buscar certificado por S/N: %s\n" -#, fuzzy, c-format +#, c-format msgid "error fetching certificate by subject: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao buscar certificado por entidade: %s\n" -#, fuzzy, c-format +#, c-format msgid "no issuer found in certificate\n" -msgstr "gerar um certificado de revogação" +msgstr "nenhum emissor encontrado no certificado\n" -#, fuzzy, c-format +#, c-format msgid "error getting authorityKeyIdentifier: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao obter authorityKeyIdentifier: %s\n" -#, fuzzy, c-format +#, c-format msgid "creating directory '%s'\n" -msgstr "%s: impossível criar directoria: %s\n" +msgstr "criando a pasta '%s'\n" -#, fuzzy, c-format +#, c-format msgid "error creating directory '%s': %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "erro ao criar a pasta '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "ignoring database dir '%s'\n" -msgstr "erro na última linha\n" +msgstr "ignorando a pasta da base de dados '%s'\n" -#, fuzzy, c-format +#, c-format msgid "error reading directory '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao ler a pasta '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "removing cache file '%s'\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "removendo o ficheiro de cache '%s'\n" -#, fuzzy, c-format -#| msgid "enarmoring failed: %s\n" +#, c-format msgid "not removing file '%s'\n" -msgstr "criação de armadura falhou: %s\n" +msgstr "não removendo ficheiro '%s'\n" -#, fuzzy, c-format +#, c-format msgid "error closing cache file: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao fechar o ficheiro de cache: %s\n" -#, fuzzy, c-format +#, c-format msgid "failed to open cache dir file '%s': %s\n" -msgstr "impossível abrir `%s': %s\n" +msgstr "falha ao abrir o ficheiro '%s' da pasta de cache: %s\n" -#, fuzzy, c-format +#, c-format msgid "error creating new cache dir file '%s': %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao criar novo ficheiro '%s' da pasta de cache: %s\n" -#, fuzzy, c-format -#| msgid "error writing secret keyring `%s': %s\n" +#, c-format msgid "error writing new cache dir file '%s': %s\n" -msgstr "erro ao escrever no porta-chaves secreto `%s': %s\n" +msgstr "erro ao escrever novo ficheiro '%s' da pasta de cache: %s\n" -#, fuzzy, c-format +#, c-format msgid "error closing new cache dir file '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao fechar novo ficheiro '%s' da pasta de cache: %s\n" -#, fuzzy, c-format -#| msgid "new configuration file `%s' created\n" +#, c-format msgid "new cache dir file '%s' created\n" -msgstr "criado um novo ficheiro de configuração `%s'\n" +msgstr "novo ficheiro '%s' da pasta de cache criado\n" -#, fuzzy, c-format +#, c-format msgid "failed to re-open cache dir file '%s': %s\n" -msgstr "%s: impossível criar directoria: %s\n" +msgstr "falha ao reabrir ficheiro '%s' da pasta de cache: %s\n" #, c-format msgid "first record of '%s' is not the version\n" -msgstr "" +msgstr "primeiro registo de '%s' não é a versão\n" #, c-format msgid "old version of cache directory - cleaning up\n" -msgstr "" +msgstr "versão antiga da pasta de cache - limpando\n" #, c-format msgid "old version of cache directory - giving up\n" -msgstr "" +msgstr "versão antiga da pasta de cache - desistindo\n" #, c-format msgid "extra field detected in crl record of '%s' line %u\n" -msgstr "" +msgstr "campo extra detetado no registo crl de '%s' linha %u\n" -#, fuzzy, c-format +#, c-format msgid "invalid line detected in '%s' line %u\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "linha inválida detetada em '%s' linha %u\n" -#, fuzzy, c-format +#, c-format msgid "duplicate entry detected in '%s' line %u\n" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "entrada duplicada detetada em '%s' linha %u\n" #, c-format msgid "unsupported record type in '%s' line %u skipped\n" -msgstr "" +msgstr "tipo de registo sem suporte em '%s' linha %u ignorada\n" -#, fuzzy, c-format +#, c-format msgid "invalid issuer hash in '%s' line %u\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "hash do emissor inválido em '%s' linha %u\n" -#, fuzzy, c-format +#, c-format msgid "no issuer DN in '%s' line %u\n" -msgstr "armadura: %s\n" +msgstr "nenhum DN emissor em '%s' linha %u\n" -#, fuzzy, c-format +#, c-format msgid "invalid timestamp in '%s' line %u\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "timestamp inválido em '%s' linha %u\n" -#, fuzzy, c-format -#| msgid "WARNING: invalid size of random_seed file - not used\n" +#, c-format msgid "WARNING: invalid cache file hash in '%s' line %u\n" -msgstr "" -"AVISO: o ficheiro random_seed tem um tamanho inválido - não utilizado\n" +msgstr "AVISO: hash de ficheiro de cache inválido em '%s' linha %u\n" #, c-format msgid "detected errors in cache dir file\n" -msgstr "" +msgstr "erros detetados no ficheiro da pasta de cache\n" #, c-format msgid "please check the reason and manually delete that file\n" -msgstr "" +msgstr "verifique o motivo e apague manualmente este ficheiro\n" -#, fuzzy, c-format +#, c-format msgid "failed to create temporary cache dir file '%s': %s\n" -msgstr "%s: impossível criar directoria: %s\n" +msgstr "falha ao criar o ficheiro temporário '%s' da pasta de cache: %s\n" -#, fuzzy, c-format -#| msgid "error reading `%s': %s\n" +#, c-format msgid "error renaming '%s' to '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao renomear '%s' para '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "can't hash '%s': %s\n" -msgstr "impossível fechar `%s': %s\n" +msgstr "não é possível fazer hash de '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "error setting up MD5 hash context: %s\n" -msgstr "erro ao enviar para `%s': %s\n" +msgstr "erro ao definir o contexto da hash MD5: %s\n" -#, fuzzy, c-format +#, c-format msgid "error hashing '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao fazer hash de '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "invalid formatted checksum for '%s'\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "checksum formatada inválida para '%s'\n" #, c-format msgid "too many open cache files; can't open anymore\n" -msgstr "" +msgstr "muitos ficheiros de cache abertos; posso abrir mais nenhum\n" -#, fuzzy, c-format +#, c-format msgid "opening cache file '%s'\n" -msgstr "assinatura falhou: %s\n" +msgstr "abrindo o ficheiro de cache '%s'\n" -#, fuzzy, c-format +#, c-format msgid "error opening cache file '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao abrir o ficheiro de cache '%s': %s\n" #, c-format msgid "error initializing cache file '%s' for reading: %s\n" -msgstr "" +msgstr "erro ao inicializar o ficheiro de cache '%s' para leitura: %s\n" #, c-format msgid "calling unlock_db_file on a closed file\n" -msgstr "" +msgstr "chamando unlock_db_file num ficheiro fechado\n" #, c-format msgid "calling unlock_db_file on an unlocked file\n" -msgstr "" +msgstr "chamando unlock_db_file num ficheiro desbloqueado\n" -#, fuzzy, c-format +#, c-format msgid "failed to create a new cache object: %s\n" -msgstr "%s: falha ao criar tabela de dispersão: %s\n" +msgstr "falha ao criar um novo objeto de cache: %s\n" -#, fuzzy, c-format -#| msgid "No help available for `%s'" +#, c-format msgid "no CRL available for issuer id %s\n" -msgstr "Nenhuma ajuda disponível para `%s'" +msgstr "nenhuma CRL disponível para a id do emissor %s\n" #, c-format msgid "cached CRL for issuer id %s too old; update required\n" msgstr "" +"CRL em cache muito antiga para a id do emissor %s; atualização necessária\n" #, c-format msgid "" "force-crl-refresh active and %d minutes passed for issuer id %s; update " "required\n" msgstr "" +"force-crl-refresh ativa e %d minutos passados para a id do emissor %s; " +"atualização necessária\n" #, c-format msgid "force-crl-refresh active for issuer id %s; update required\n" msgstr "" +"force-crl-refresh ativa para a id do emissor %s; atualização necessária\n" #, c-format msgid "available CRL for issuer ID %s can't be used\n" -msgstr "" +msgstr "CRL disponível para a id do emissor %s não pode ser usada\n" #, c-format msgid "cached CRL for issuer id %s tampered; we need to update\n" msgstr "" +"CRL em cache adulterada para a id do emissor %s; precisamos atualizar\n" #, c-format msgid "WARNING: invalid cache record length for S/N " -msgstr "" +msgstr "AVISO: comprimento do registo de cache inválido para S/N " -#, fuzzy, c-format +#, c-format msgid "problem reading cache record for S/N %s: %s\n" -msgstr "erro ao criar porta-chaves `%s': %s\n" +msgstr "problema ao ler o registo de cache para S/N %s: %s\n" #, c-format msgid "S/N %s is not valid; reason=%02X date=%.15s\n" -msgstr "" +msgstr "S/N %s não é válido; razão=%02X data=%.15s\n" #, c-format msgid "S/N %s is valid, it is not listed in the CRL\n" -msgstr "" +msgstr "S/N %s é válido, não está listado na CRL\n" -#, fuzzy, c-format +#, c-format msgid "error getting data from cache file: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao obter os dados do ficheiro de cache: %s\n" #, c-format msgid "got an invalid S-expression from libksba\n" -msgstr "" +msgstr "obtive uma S-expression inválida da libksba\n" -#, fuzzy, c-format +#, c-format msgid "converting S-expression failed: %s\n" -msgstr "impossível abrir %s: %s\n" +msgstr "falha na conversão da S-expression: %s\n" -#, fuzzy, c-format -#| msgid "invalid hash algorithm `%s'\n" +#, c-format msgid "unknown hash algorithm '%s'\n" -msgstr "algoritmo de dispersão inválido `%s'\n" +msgstr "algoritmo de hash desconhecido '%s'\n" #, c-format msgid "gcry_md_open for algorithm %d failed: %s\n" -msgstr "" +msgstr "gcry_md_open para o algoritmo %d falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "creating S-expression failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha ao criar a S-expression: %s\n" -#, fuzzy, c-format +#, c-format msgid "ksba_crl_parse failed: %s\n" -msgstr "actualização falhou: %s\n" +msgstr "ksba_crl_parse falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "error getting update times of CRL: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao obter tempos de atualização da CRL: %s\n" #, c-format msgid "update times of this CRL: this=%s next=%s\n" -msgstr "" +msgstr "tempos de atualização desta CRL: este=%s próximo=%s\n" #, c-format msgid "nextUpdate not given; assuming a validity period of one day\n" -msgstr "" +msgstr "nextUpdate não fornecido; assumindo que expira num período de um dia\n" -#, fuzzy, c-format +#, c-format msgid "error getting CRL item: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao obter o item da CRL: %s\n" -#, fuzzy, c-format +#, c-format msgid "error inserting item into temporary cache file: %s\n" -msgstr "a escrever para `%s'\n" +msgstr "erro ao inserir item no ficheiro de cache temporário: %s\n" -#, fuzzy, c-format +#, c-format msgid "no CRL issuer found in CRL: %s\n" -msgstr "gerar um certificado de revogação" +msgstr "nenhum emissor de CRL encontrado na CRL: %s\n" #, c-format msgid "locating CRL issuer certificate by authorityKeyIdentifier\n" msgstr "" +"localizando o certificado do emissor da CRL por authorityKeyIdentifier\n" -#, fuzzy, c-format -#| msgid "signature verification suppressed\n" +#, c-format msgid "CRL signature verification failed: %s\n" -msgstr "verificação de assinatura suprimida\n" +msgstr "falha na verificação de assinatura da CRL: %s\n" -#, fuzzy, c-format +#, c-format msgid "error checking validity of CRL issuer certificate: %s\n" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "erro ao verificar a validade do certificado do emissor da CRL: %s\n" -#, fuzzy, c-format +#, c-format msgid "ksba_crl_new failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "ksba_crl_new falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "ksba_crl_set_reader failed: %s\n" -msgstr "actualização falhou: %s\n" +msgstr "ksba_crl_set_reader falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "removed stale temporary cache file '%s'\n" -msgstr "%s: impossível criar directoria: %s\n" +msgstr "ficheiro de cache temporário obsoleto '%s' foi removido\n" -#, fuzzy, c-format +#, c-format msgid "problem removing stale temporary cache file '%s': %s\n" -msgstr "%s: impossível criar directoria: %s\n" +msgstr "problema ao remover o ficheiro de cache temporário obsoleto '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "error creating temporary cache file '%s': %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao criar o ficheiro de cache temporário '%s': %s\n" -#, fuzzy, c-format -#| msgid "update secret failed: %s\n" +#, c-format msgid "crl_parse_insert failed: %s\n" -msgstr "actualização da chave secreta falhou: %s\n" +msgstr "crl_parse_insert falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "error finishing temporary cache file '%s': %s\n" -msgstr "a escrever para `%s'\n" +msgstr "erro ao finalizar o ficheiro de cache temporário '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "error closing temporary cache file '%s': %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao fechar o ficheiro de cache temporário '%s': %s\n" #, c-format msgid "WARNING: new CRL still too old; it expired on %s - loading anyway\n" msgstr "" +"ATENÇÃO: nova CRL ainda muito antiga; ela expirou em %s - carregando mesmo " +"assim\n" #, c-format msgid "new CRL still too old; it expired on %s\n" -msgstr "" +msgstr "nova CRL ainda muito antiga; expirou em %s\n" #, c-format msgid "unknown critical CRL extension %s\n" -msgstr "" +msgstr "extensão crítica de CRL desconhecida %s\n" -#, fuzzy, c-format +#, c-format msgid "error reading CRL extensions: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao ler extensões de CRL: %s\n" -#, fuzzy, c-format +#, c-format msgid "creating cache file '%s'\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "criando o ficheiro de cache '%s'\n" -#, fuzzy, c-format +#, c-format msgid "problem renaming '%s' to '%s': %s\n" -msgstr "criação de armadura falhou: %s\n" +msgstr "problema ao renomear '%s' para '%s': %s\n" #, c-format msgid "" "updating the DIR file failed - cache entry will get lost with the next " "program start\n" msgstr "" +"falha ao atualizar o ficheiro DIR - a entrada de cache será perdida com o " +"próximo início do programa\n" #, c-format msgid "Begin CRL dump (retrieved via %s)\n" -msgstr "" +msgstr "Iniciar dump de CRL (obtido via %s)\n" msgid "" " ERROR: The CRL will not be used because it was still too old after an " "update!\n" msgstr "" +" ERRO: A CRL não será usada porque ainda era muito antiga após uma " +"atualização!\n" msgid "" " ERROR: The CRL will not be used due to an unknown critical extension!\n" msgstr "" +" ERRO: A CRL não será usada devido a uma extensão crítica desconhecida!\n" msgid " ERROR: The CRL will not be used\n" -msgstr "" +msgstr " ERRO: A CRL não será usada\n" msgid " ERROR: This cached CRL may have been tampered with!\n" -msgstr "" +msgstr " ERRO: Esta CRL em cache pode ter sido adulterada!\n" -#, fuzzy, c-format -#| msgid "WARNING: invalid size of random_seed file - not used\n" +#, c-format msgid " WARNING: invalid cache record length\n" -msgstr "" -"AVISO: o ficheiro random_seed tem um tamanho inválido - não utilizado\n" +msgstr " AVISO: comprimento de registo de cache inválido\n" -#, fuzzy, c-format +#, c-format msgid "problem reading cache record: %s\n" -msgstr "%s: erro ao ler registo livre: %s\n" +msgstr "problema ao ler o registo de cache: %s\n" -#, fuzzy, c-format +#, c-format msgid "problem reading cache key: %s\n" -msgstr "rev? problema ao verificar revogação: %s\n" +msgstr "problema ao ler a chave de cache: %s\n" -#, fuzzy, c-format +#, c-format msgid "error reading cache entry from db: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao ler a entrada de cache da base de dados: %s\n" msgid "End CRL dump\n" -msgstr "" +msgstr "Fim do dump de CRL\n" -#, fuzzy, c-format +#, c-format msgid "crl_fetch via DP failed: %s\n" -msgstr "actualização falhou: %s\n" +msgstr "crl_fetch via DP falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "crl_cache_insert via DP failed: %s\n" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "crl_cache_insert via DP falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "crl_cache_insert via issuer failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "crl_cache_insert via emissor falhou: %s\n" #, c-format msgid "reader to file mapping table full - waiting\n" -msgstr "" +msgstr "leitor cheio para tabela de mapeamento de ficheiros - aguardando\n" -#, fuzzy msgid "CRL access not possible due to Tor mode" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "o acesso à CRL não é possível devido ao modo Tor" #, c-format msgid "CRL access not possible due to disabled %s\n" -msgstr "" +msgstr "o acesso à CRL não é possível devido a %s estar desabilitado\n" -#, fuzzy, c-format +#, c-format msgid "error retrieving '%s': %s\n" -msgstr "erro ao criar `%s': %s\n" +msgstr "erro ao obter '%s': %s\n" -#, fuzzy, c-format -#| msgid "%s: error writing dir record: %s\n" +#, c-format msgid "error initializing reader object: %s\n" -msgstr "%s: erro ao escrever registo de diretório: %s\n" +msgstr "erro ao inicializar o objeto leitor: %s\n" -#, fuzzy, c-format +#, c-format msgid "certificate search not possible due to disabled %s\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "" +"a pesquisa de certificados não é possível devido a %s estar desabilitado\n" msgid "use OCSP instead of CRLs" -msgstr "" +msgstr "usar OCSP em vez de CRLs" msgid "check whether a dirmngr is running" -msgstr "" +msgstr "verificar se um dirmngr está em execução" -#, fuzzy msgid "add a certificate to the cache" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "adicionar um certificado à cache" -#, fuzzy msgid "validate a certificate" -msgstr "certificado incorrecto" +msgstr "validar um certificado" -#, fuzzy msgid "lookup a certificate" -msgstr "certificado incorrecto" +msgstr "procurar um certificado" -#, fuzzy msgid "lookup only locally stored certificates" -msgstr "certificado incorrecto" +msgstr "procurar apenas certificados armazenados localmente" msgid "expect an URL for --lookup" -msgstr "" +msgstr "esperar uma URL para --lookup" msgid "load a CRL into the dirmngr" -msgstr "" +msgstr "carregar uma CRL no dirmngr" msgid "special mode for use by Squid" -msgstr "" +msgstr "modo especial para uso pelo Squid" -#, fuzzy msgid "expect certificates in PEM format" -msgstr "certificado incorrecto" +msgstr "esperar certificados no formato PEM" -#, fuzzy -#| msgid "Enter the user ID of the designated revoker: " msgid "force the use of the default OCSP responder" -msgstr "Insira o ID de utilizador do revogador escolhido: " +msgstr "forçar o uso do respondente OCSP pré-definido" -#, fuzzy -#| msgid "Usage: gpg [options] [files] (-h for help)" msgid "Usage: dirmngr-client [options] [certfile|pattern] (-h for help)\n" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "" +"Uso: dirmngr-client [opções] [ficheiro-cert|padrão] (-h para obter ajuda)\n" msgid "" "Syntax: dirmngr-client [options] [certfile|pattern]\n" @@ -8415,2987 +8155,821 @@ msgid "" "The process returns 0 if the certificate is valid, 1 if it is\n" "not valid and other error codes for general failures\n" msgstr "" +"Sintaxe: dirmngr-client [opções] [ficheiro-cert|padrão]\n" +"Testar um certificado X.509 em relação a uma CRL ou fazer uma\n" +"verificação OCSP.\n" +"O processo retorna 0 se o certificado for válido, 1 se não for\n" +"válido, e outros códigos de erro para falhas gerais.\n" -#, fuzzy, c-format +#, c-format msgid "error reading certificate from stdin: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao ler certificado de stdin: %s\n" -#, fuzzy, c-format +#, c-format msgid "error reading certificate from '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao ler o certificado de '%s': %s\n" #, c-format msgid "certificate too large to make any sense\n" -msgstr "" +msgstr "certificado demasiado grande para fazer qualquer sentido\n" -#, fuzzy, c-format -#| msgid "can't connect to `%s': %s\n" +#, c-format msgid "can't connect to the dirmngr: %s\n" -msgstr "impossível ligar a `%s': %s\n" +msgstr "não é possível conectar-se ao dirmngr: %s\n" -#, fuzzy, c-format -#| msgid "update failed: %s\n" +#, c-format msgid "lookup failed: %s\n" -msgstr "actualização falhou: %s\n" +msgstr "falha na procura: %s\n" -#, fuzzy, c-format +#, c-format msgid "loading CRL '%s' failed: %s\n" -msgstr "criação de armadura falhou: %s\n" +msgstr "falha ao carregar a CRL '%s': %s\n" #, c-format msgid "a dirmngr daemon is up and running\n" -msgstr "" +msgstr "um daemon dirmngr está a correr\n" -#, fuzzy, c-format +#, c-format msgid "validation of certificate failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha na validação do certificado: %s\n" -#, fuzzy, c-format +#, c-format msgid "certificate is valid\n" -msgstr "preferência %c%lu duplicada\n" +msgstr "certificado é válido\n" -#, fuzzy, c-format +#, c-format msgid "certificate has been revoked\n" -msgstr "NOTA: a chave foi revogada" +msgstr "o certificado foi revogado\n" -#, fuzzy, c-format +#, c-format msgid "certificate check failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha na verificação do certificado: %s\n" -#, fuzzy, c-format -#| msgid "can't stat `%s': %s\n" +#, c-format msgid "got status: '%s'\n" -msgstr "impossível 'stat' a `%s': %s\n" +msgstr "recebi status: '%s'\n" -#, fuzzy, c-format -#| msgid "error writing secret keyring `%s': %s\n" +#, c-format msgid "error writing base64 encoding: %s\n" -msgstr "erro ao escrever no porta-chaves secreto `%s': %s\n" +msgstr "erro ao escrever codificação base64: %s\n" -#, fuzzy, c-format +#, c-format msgid "unsupported inquiry '%s'\n" -msgstr "" -"\n" -"Algoritmos suportados:\n" +msgstr "inquérito não suportado '%s'\n" #, c-format msgid "absolute file name expected\n" -msgstr "" +msgstr "esperado nome absoluto de ficheiro\n" #, c-format msgid "looking up '%s'\n" -msgstr "" +msgstr "procurando '%s'\n" msgid "list the contents of the CRL cache" -msgstr "" +msgstr "listar o conteúdo da cache de CRL" -#, fuzzy msgid "|FILE|load CRL from FILE into cache" -msgstr "|FICHEIRO|carregar módulo de extensão FICHEIRO" +msgstr "|FILE|carregar CRL de FILE para cache" msgid "|URL|fetch a CRL from URL" -msgstr "" +msgstr "|URL|buscar uma CRL de URL" msgid "shutdown the dirmngr" -msgstr "" +msgstr "terminar o dirmngr" msgid "flush the cache" -msgstr "" +msgstr "limpar a cache" msgid "allow online software version check" -msgstr "" +msgstr "permitir verificação online da versão do software" msgid "|N|do not return more than N items in one query" -msgstr "" +msgstr "|N|não retornar mais de N itens em uma consulta" msgid "Network related options" -msgstr "" +msgstr "Opções relacionadas à rede" msgid "route all network traffic via Tor" -msgstr "" +msgstr "direcionar todo o tráfego de rede via Tor" msgid "Configuration for HTTP servers" -msgstr "" +msgstr "Configurações para servidores HTTP" msgid "inhibit the use of HTTP" -msgstr "" +msgstr "inibir o uso de HTTP" msgid "ignore HTTP CRL distribution points" -msgstr "" +msgstr "ignorar os pontos de distribuição de CRL que são HTTP" msgid "|URL|redirect all HTTP requests to URL" -msgstr "" +msgstr "|URL|redirecionar todas os pedidos HTTP para URL" msgid "use system's HTTP proxy setting" -msgstr "" +msgstr "usar a definição de proxy HTTP do sistema" msgid "Configuration for OpenPGP servers" -msgstr "" +msgstr "Configurações para servidores OpenPGP" -#, fuzzy msgid "|URL|use keyserver at URL" -msgstr "não consegui processar a URI do servidor de chaves\n" +msgstr "|URL|usar servidor de chaves na URL" msgid "|FILE|use the CA certificates in FILE for HKP over TLS" -msgstr "" +msgstr "|FILE|usar os certificados CA em FILE para HKP sobre TLS" msgid "Configuration for X.509 servers" -msgstr "" +msgstr "Configurações para servidores X.509" msgid "inhibit the use of LDAP" -msgstr "" +msgstr "inibir o uso do LDAP" msgid "ignore LDAP CRL distribution points" -msgstr "" +msgstr "ignorar os pontos de distribuição de CRL que são LDAP" msgid "|HOST|use HOST for LDAP queries" -msgstr "" +msgstr "|HOST|usar HOST para consultas LDAP" msgid "do not use fallback hosts with --ldap-proxy" -msgstr "" +msgstr "não usar hosts de fallback com --ldap-proxy" -#, fuzzy msgid "|SPEC|use this keyserver to lookup keys" -msgstr "|ENDEREÇO|usar este servidor para buscar chaves" +msgstr "|SPEC|usar este servidor de chaves para procurar por chaves" -#, fuzzy msgid "|FILE|read LDAP server list from FILE" -msgstr "|FICHEIRO|carregar módulo de extensão FICHEIRO" +msgstr "|FILE|ler lista de servidores LDAP do FILE" msgid "add new servers discovered in CRL distribution points to serverlist" msgstr "" +"adicionar novos servidores descobertos em pontos de distribuição de CRL à " +"serverlist" msgid "|N|set LDAP timeout to N seconds" -msgstr "" +msgstr "|N|definir tempo limite LDAP para N segundos" msgid "Configuration for OCSP" -msgstr "" +msgstr "Configurações para OCSP" msgid "allow sending OCSP requests" -msgstr "" +msgstr "permitir enviar pedidos OCSP" msgid "ignore certificate contained OCSP service URLs" -msgstr "" +msgstr "ignorar URL de serviço OCSP contido no certificado" -#, fuzzy msgid "|URL|use OCSP responder at URL" -msgstr "não consegui processar a URI do servidor de chaves\n" +msgstr "|URL|usar o respondente de OCSP na URL" msgid "|FPR|OCSP response signed by FPR" -msgstr "" +msgstr "|FPR|resposta OCSP assinada por FPR" msgid "force loading of outdated CRLs" -msgstr "" +msgstr "forçar o carregar de CRLs desatualizados" -#, fuzzy -#| msgid "" -#| "@\n" -#| "(See the man page for a complete listing of all commands and options)\n" msgid "" "@\n" "(See the \"info\" manual for a complete listing of all commands and " "options)\n" msgstr "" "@\n" -"(Veja a página man para uma lista completa de comandos e opções)\n" +"(Veja o manual \"info\" para obter uma lista completa de todos os comandos e " +"opções)\n" -#, fuzzy msgid "Usage: @DIRMNGR@ [options] (-h for help)" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "Uso: @DIRMNGR@ [opções] (-h para ajuda)" msgid "" "Syntax: @DIRMNGR@ [options] [command [args]]\n" "Keyserver, CRL, and OCSP access for @GNUPG@\n" msgstr "" +"Sintaxe: @DIRMNGR@ [opções] [comando [args]]\n" +"Acesso a servidor de chaves, CRL, e OCSP para @GNUPG@\n" #, c-format msgid "valid debug levels are: %s\n" -msgstr "" +msgstr "os níveis de debug válidos são: %s\n" -#, fuzzy, c-format +#, c-format msgid "usage: %s [options] " -msgstr "uso: gpg [opções] " +msgstr "uso: %s [opções] " -#, fuzzy, c-format -#| msgid "%s not allowed with %s!\n" +#, c-format msgid "colons are not allowed in the socket name\n" -msgstr "%s não é permitido com %s!\n" +msgstr "'dois pontos' não são permitidos no nome do socket\n" -#, fuzzy, c-format +#, c-format msgid "fetching CRL from '%s' failed: %s\n" -msgstr "criação de armadura falhou: %s\n" +msgstr "falha ao buscar a CRL de '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "processing CRL from '%s' failed: %s\n" -msgstr "criação de armadura falhou: %s\n" +msgstr "falha ao processar a CRL de '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "%s:%u: line too long - skipped\n" -msgstr "frase secreta demasiado longa\n" +msgstr "%s:%u: linha muito longa - ignorada\n" -#, fuzzy, c-format +#, c-format msgid "%s:%u: invalid fingerprint detected\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "%s:%u: impressão digital inválida detetada\n" -#, fuzzy, c-format +#, c-format msgid "%s:%u: read error: %s\n" -msgstr "armadura: %s\n" +msgstr "%s:%u: erro de leitura: %s\n" #, c-format msgid "%s:%u: garbage at end of line ignored\n" -msgstr "" +msgstr "%s:%u: lixo no final da linha ignorado\n" #, c-format msgid "SIGHUP received - re-reading configuration and flushing caches\n" -msgstr "" +msgstr "SIGHUP recebido - re-lendo a configuração e limpando as caches\n" #, c-format msgid "SIGUSR2 received - no action defined\n" -msgstr "" +msgstr "SIGUSR2 recebido - nenhuma ação definida\n" #, c-format msgid "SIGTERM received - shutting down ...\n" -msgstr "" +msgstr "SIGTERM recebido - terminando ...\n" #, c-format msgid "SIGTERM received - still %d active connections\n" -msgstr "" +msgstr "SIGTERM recebido - ainda há %d conexões ativas\n" -#, fuzzy, c-format +#, c-format msgid "shutdown forced\n" -msgstr "não processado" +msgstr "terminar forçado\n" #, c-format msgid "SIGINT received - immediate shutdown\n" -msgstr "" +msgstr "SIGINT recebido - terminando imediatamente\n" #, c-format msgid "signal %d received - no action defined\n" -msgstr "" +msgstr "sinal %d recebido - nenhuma ação definida\n" -#, fuzzy, c-format +#, c-format msgid "error accessing '%s': http status %u\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao aceder '%s': status http %u\n" #, c-format msgid "URL '%s' redirected to '%s' (%u)\n" -msgstr "" +msgstr "URL '%s' redirecionada para '%s' (%u)\n" -#, fuzzy, c-format +#, c-format msgid "too many redirections\n" -msgstr "demasiadas preferências `%c'\n" +msgstr "demasiados redirecionamentos\n" -#, fuzzy, c-format -#| msgid "writing to `%s'\n" +#, c-format msgid "redirection changed to '%s'\n" -msgstr "a escrever para `%s'\n" +msgstr "redirecionamento alterado para '%s'\n" -#, fuzzy, c-format +#, c-format msgid "error printing log line: %s\n" -msgstr "erro na escrita do porta-chaves `%s': %s\n" +msgstr "erro ao mostrar linha de log: %s\n" -#, fuzzy, c-format +#, c-format msgid "error reading log from ldap wrapper %d: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao ler log do wrapper ldap %d: %s\n" #, c-format msgid "ldap wrapper %d ready" -msgstr "" +msgstr "wrapper ldap %d pronto" #, c-format msgid "ldap wrapper %d ready: timeout\n" -msgstr "" +msgstr "wrapper ldap %d pronto: pausa\n" #, c-format msgid "ldap wrapper %d ready: exitcode=%d\n" -msgstr "" +msgstr "wrapper ldap %d pronto: exitcode=%d\n" -#, fuzzy, c-format +#, c-format msgid "waiting for ldap wrapper %d failed: %s\n" -msgstr "actualização falhou: %s\n" +msgstr "falha ao aguardar por wrapper ldap %d: %s\n" #, c-format msgid "ldap wrapper %d stalled - killing\n" -msgstr "" +msgstr "wrapper ldap %d obsoleto - matando\n" #, c-format msgid "invalid char 0x%02x in host name - not added\n" -msgstr "" +msgstr "char 0x%02x inválido no nome do host - não adicionado\n" -#, fuzzy, c-format +#, c-format msgid "adding '%s:%d' to the ldap server list\n" -msgstr "a procurar por \"%s\" no servidor HKP %s\n" +msgstr "adicionando '%s:%d' à lista de servidores ldap\n" -#, fuzzy, c-format +#, c-format msgid "malloc failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "malloc falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "'%s' is not an LDAP URL\n" -msgstr "%s: não é um base de dados de confiança\n" +msgstr "'%s' não é uma URL LDAP\n" #, c-format msgid "'%s' is an invalid LDAP URL\n" -msgstr "" +msgstr "'%s' é uma URL LDAP inválida\n" #, c-format msgid "ldap_search hit the size limit of the server\n" -msgstr "" +msgstr "ldap_search atingiu o tamanho limite do servidor\n" #, c-format msgid "%s:%u: password given without user\n" -msgstr "" +msgstr "%s:%u: senha dada sem utilizador\n" #, c-format msgid "%s:%u: ignoring unknown flag '%s'\n" -msgstr "" +msgstr "%s:%u: ignorando flag '%s' desconhecida\n" -#, fuzzy, c-format +#, c-format msgid "%s:%u: skipping this line\n" -msgstr " s = saltar esta chave\n" +msgstr "%s:%u: ignorando esta linha\n" -#, fuzzy, c-format -#| msgid "%s: invalid file version %d\n" +#, c-format msgid "invalid canonical S-expression found\n" -msgstr "%s: versão de ficheiro inválida %d\n" +msgstr "encontrada S-expression canónica inválida\n" -#, fuzzy, c-format +#, c-format msgid "gcry_md_open failed: %s\n" -msgstr "impossível abrir %s: %s\n" +msgstr "gcry_md_open falhou: %s\n" -#, fuzzy, c-format -#| msgid "update secret failed: %s\n" +#, c-format msgid "oops: ksba_cert_hash failed: %s\n" -msgstr "actualização da chave secreta falhou: %s\n" +msgstr "oops: ksba_cert_hash falhou: %s\n" #, c-format msgid "bad URL encoding detected\n" -msgstr "" +msgstr "detetada codificação de URL inválida\n" -#, fuzzy, c-format +#, c-format msgid "error reading from responder: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao ler do respondente: %s\n" #, c-format msgid "response from server too large; limit is %d bytes\n" -msgstr "" +msgstr "resposta do servidor muito grande; limite é %d bytes\n" -#, fuzzy msgid "OCSP request not possible due to Tor mode" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "pedido OCSP não é possível devido ao modo Tor" #, c-format msgid "OCSP request not possible due to disabled HTTP\n" -msgstr "" +msgstr "pedido OCSP não é possível devido a HTTP desabilitado\n" -#, fuzzy, c-format +#, c-format msgid "error setting OCSP target: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao definir o destino OCSP: %s\n" -#, fuzzy, c-format +#, c-format msgid "error building OCSP request: %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao criar o pedido OCSP: %s\n" -#, fuzzy, c-format +#, c-format msgid "error connecting to '%s': %s\n" -msgstr "erro na escrita do porta-chaves `%s': %s\n" +msgstr "erro ao conectar a '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "error reading HTTP response for '%s': %s\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao ler a resposta HTTP para '%s': %s\n" -#, fuzzy, c-format +#, c-format msgid "error parsing OCSP response for '%s': %s\n" -msgstr "erro ao enviar para `%s': %s\n" +msgstr "erro ao processar a resposta OCSP para '%s': %s\n" #, c-format msgid "OCSP responder at '%s' status: %s\n" -msgstr "" +msgstr "respondente OCSP no status '%s': %s\n" #, c-format msgid "failed to establish a hashing context for OCSP: %s\n" -msgstr "" +msgstr "falha ao estabelecer um contexto de hash para OCSP: %s\n" -#, fuzzy, c-format +#, c-format msgid "hashing the OCSP response for '%s' failed: %s\n" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "falha ao fazer hashing da resposta OCSP para '%s': %s\n" #, c-format msgid "not signed by a default OCSP signer's certificate" -msgstr "" +msgstr "não assinado por um certificado de signatário OCSP pré-definido" -#, fuzzy, c-format +#, c-format msgid "allocating list item failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha ao alocar item de lista: %s\n" -#, fuzzy, c-format +#, c-format msgid "error getting responder ID: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao obter o ID do respondente: %s\n" #, c-format msgid "no suitable certificate found to verify the OCSP response\n" msgstr "" +"nenhum certificado adequado encontrado para verificar a resposta do OCSP\n" -#, fuzzy, c-format +#, c-format msgid "issuer certificate not found: %s\n" -msgstr "chave `%s' não encontrada: %s\n" +msgstr "certificado do emissor não encontrado: %s\n" #, c-format msgid "caller did not return the target certificate\n" -msgstr "" +msgstr "o chamador não retornou o certificado de destino\n" -#, fuzzy, c-format +#, c-format msgid "caller did not return the issuing certificate\n" -msgstr "gerar um certificado de revogação" +msgstr "o chamador não retornou o certificado de emissão\n" -#, fuzzy, c-format +#, c-format msgid "failed to allocate OCSP context: %s\n" -msgstr "falha ao inicializar a base de dados de confiança: %s\n" +msgstr "falha ao alocar contexto OCSP: %s\n" #, c-format msgid "no default OCSP responder defined\n" -msgstr "" +msgstr "nenhum respondente OCSP pré-definido\n" -#, fuzzy, c-format -#| msgid "no default secret keyring: %s\n" +#, c-format msgid "no default OCSP signer defined\n" -msgstr "sem porta-chaves público por omissão: %s\n" +msgstr "nenhum assinante OCSP pré-definido\n" #, c-format msgid "using default OCSP responder '%s'\n" -msgstr "" +msgstr "usando o respondente OCSP pré-definido '%s'\n" -#, fuzzy, c-format +#, c-format msgid "using OCSP responder '%s'\n" -msgstr "assinatura falhou: %s\n" +msgstr "usando o respondente OCSP '%s'\n" -#, fuzzy, c-format +#, c-format msgid "error getting OCSP status for target certificate: %s\n" -msgstr "erro na criação da frase secreta: %s\n" +msgstr "erro ao obter o status OCSP para o certificado de destino: %s\n" #, c-format msgid "certificate status is: %s (this=%s next=%s)\n" -msgstr "" +msgstr "o status do certificado é: %s (este=%s próximo=%s)\n" msgid "good" -msgstr "" +msgstr "válido" -#, fuzzy, c-format +#, c-format msgid "certificate has been revoked at: %s due to: %s\n" -msgstr "NOTA: a chave foi revogada" +msgstr "o certificado foi revogado em: %s devido a: %s\n" #, c-format msgid "OCSP responder returned a status in the future\n" -msgstr "" +msgstr "o respondente OCSP retornou um status no futuro\n" #, c-format msgid "OCSP responder returned a non-current status\n" -msgstr "" +msgstr "o respondente OCSP retornou um status não atual\n" #, c-format msgid "OCSP responder returned an too old status\n" -msgstr "" +msgstr "o respondente OCSP retornou um status muito antigo\n" -#, fuzzy, c-format +#, c-format msgid "assuan_inquire(%s) failed: %s\n" -msgstr "assinatura falhou: %s\n" +msgstr "assuan_inquire(%s) falhou: %s\n" msgid "serialno missing in cert ID" -msgstr "" +msgstr "número de série ausente na ID do certificado" -#, fuzzy, c-format +#, c-format msgid "assuan_inquire failed: %s\n" -msgstr "assinatura falhou: %s\n" +msgstr "assuan_inquire falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "fetch_cert_by_url failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "fetch_cert_by_url falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "error sending data: %s\n" -msgstr "erro ao enviar para `%s': %s\n" +msgstr "erro ao enviar dados: %s\n" -#, fuzzy, c-format +#, c-format msgid "start_cert_fetch failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "start_cert_fetch falhou: %s\n" -#, fuzzy, c-format +#, c-format msgid "fetch_next_cert failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "fetch_next_cert falhou: %s\n" #, c-format msgid "max_replies %d exceeded\n" -msgstr "" +msgstr "excedido max_replies %d\n" -#, fuzzy, c-format +#, c-format msgid "can't allocate control structure: %s\n" -msgstr "impossível criar `%s': %s\n" +msgstr "não é possível alocar a estrutura de controle: %s\n" -#, fuzzy, c-format +#, c-format msgid "failed to allocate assuan context: %s\n" -msgstr "%s: falha ao criar tabela de dispersão: %s\n" +msgstr "falha ao alocar contexto assuan: %s\n" -#, fuzzy, c-format -#| msgid "failed to initialize the TrustDB: %s\n" +#, c-format msgid "failed to initialize the server: %s\n" -msgstr "falha ao inicializar a base de dados de confiança: %s\n" +msgstr "falha ao inicializar o servidor: %s\n" -#, fuzzy, c-format +#, c-format msgid "failed to the register commands with Assuan: %s\n" -msgstr "falha ao criar 'cache' do porta-chaves: %s\n" +msgstr "falha ao registar comandos com Assuan: %s\n" #, c-format msgid "Assuan accept problem: %s\n" -msgstr "" +msgstr "problema de aceitação Assuan: %s\n" -#, fuzzy, c-format -#| msgid "signing failed: %s\n" +#, c-format msgid "Assuan processing failed: %s\n" -msgstr "assinatura falhou: %s\n" +msgstr "falha no processamento do Assuan: %s\n" #, c-format msgid "accepting root CA not marked as a CA" -msgstr "" +msgstr "aceitando a CA raiz não marcada como uma CA" -#, fuzzy, c-format -#| msgid "checking the trustdb\n" +#, c-format msgid "CRL checking too deeply nested\n" -msgstr "a verificar a base de dados de confiança\n" +msgstr "verificação de CRL muito aprofundadamente aninhada\n" msgid "not checking CRL for" -msgstr "" +msgstr "não verificando CRL para" -#, fuzzy msgid "checking CRL for" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "verificando CRL para" -#, fuzzy, c-format +#, c-format msgid "checking trustworthiness of root certificate failed: %s\n" -msgstr "verificação da assinatura criada falhou: %s\n" +msgstr "falha na verificação da confiança do certificado raiz: %s\n" -#, fuzzy, c-format +#, c-format msgid "certificate chain is good\n" -msgstr "preferência %c%lu duplicada\n" +msgstr "a corrente de certificados é válida\n" #, c-format msgid "certificate should not have been used for CRL signing\n" -msgstr "" +msgstr "certificado não deveria ter sido usado para assinatura de CRL\n" -#, fuzzy msgid "quiet" -msgstr "sair" +msgstr "silencioso" msgid "print data out hex encoded" -msgstr "" +msgstr "imprimir dados codificados em hex" msgid "decode received data lines" -msgstr "" +msgstr "descodificar linhas de dados recebidas" msgid "connect to the dirmngr" -msgstr "" +msgstr "conectar ao dirmngr" msgid "connect to the keyboxd" -msgstr "" +msgstr "conectar ao keyboxd" msgid "|NAME|connect to Assuan socket NAME" -msgstr "" +msgstr "|NAME|conectar ao socket Assuan NAME" msgid "|ADDR|connect to Assuan server at ADDR" -msgstr "" +msgstr "|ADDR|conectar ao servidor Assuan em ADDR" msgid "run the Assuan server given on the command line" -msgstr "" +msgstr "execute o servidor Assuan fornecido na linha de comando" msgid "do not use extended connect mode" -msgstr "" +msgstr "não usar o modo de conexão estendida" -#, fuzzy msgid "|FILE|run commands from FILE on startup" -msgstr "|FICHEIRO|carregar módulo de extensão FICHEIRO" +msgstr "|FILE|executar comandos do FILE na inicialização" msgid "run /subst on startup" -msgstr "" +msgstr "executar /subst na inicialização" -#, fuzzy msgid "Usage: @GPG@-connect-agent [options] (-h for help)" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "Uso: @GPG@-connect-agent [opções] (-h para ajuda)" msgid "" "Syntax: @GPG@-connect-agent [options]\n" "Connect to a running agent and send commands\n" msgstr "" +"Sintaxe: @GPG@-connect-agent [opções]\n" +"Conectar-se a um agent em execução e enviar comandos\n" #, c-format msgid "option \"%s\" requires a program and optional arguments\n" -msgstr "" +msgstr "a opção \"%s\" requer um programa e argumentos opcionais\n" #, c-format msgid "option \"%s\" ignored due to \"%s\"\n" -msgstr "" +msgstr "opção \"%s\" ignorada devido a \"%s\"\n" -#, fuzzy, c-format +#, c-format msgid "receiving line failed: %s\n" -msgstr "remoção do bloco de chave falhou: %s\n" +msgstr "falha ao receber linha: %s\n" -#, fuzzy, c-format +#, c-format msgid "line too long - skipped\n" -msgstr "frase secreta demasiado longa\n" +msgstr "linha muito longa - ignorada\n" #, c-format msgid "line shortened due to embedded Nul character\n" -msgstr "" +msgstr "linha encurtada devido ao caractere Nul incorporado\n" -#, fuzzy, c-format +#, c-format msgid "unknown command '%s'\n" -msgstr "destinatário por omissão desconhecido `%s'\n" +msgstr "comando desconhecido '%s'\n" -#, fuzzy, c-format +#, c-format msgid "sending line failed: %s\n" -msgstr "assinatura falhou: %s\n" +msgstr "falha ao enviar linha: %s\n" -#, fuzzy, c-format +#, c-format msgid "no keybox daemon running in this session\n" -msgstr "o gpg-agent não está disponível nesta sessão\n" +msgstr "nenhum daemon keybox em execução nesta sessão\n" -#, fuzzy, c-format +#, c-format msgid "error sending standard options: %s\n" -msgstr "erro ao enviar para `%s': %s\n" +msgstr "erro ao enviar opções padrão: %s\n" msgid "OpenPGP" -msgstr "" +msgstr "OpenPGP" msgid "S/MIME" -msgstr "" +msgstr "S/MIME" -#, fuzzy msgid "Public Keys" -msgstr "a chave pública é %08lX\n" +msgstr "Chaves Públicas" msgid "Private Keys" -msgstr "" +msgstr "Chaves Privadas" msgid "Smartcards" -msgstr "" +msgstr "Smartcards" msgid "TPM" -msgstr "" +msgstr "TPM" -#, fuzzy -#| msgid "network error" msgid "Network" -msgstr "erro na rede" +msgstr "Rede" -#, fuzzy msgid "Passphrase Entry" -msgstr "frase secreta incorrecta" +msgstr "Entrada de Frase-secreta" -#, fuzzy msgid "Component not suitable for launching" -msgstr "chave pública não encontrada" +msgstr "Componente não adequado para lançamento" #, c-format msgid "Configuration file of component %s is broken\n" -msgstr "" +msgstr "O ficheiro de configuração do componente %s está quebrado\n" -#, fuzzy, c-format -#| msgid "Please use the command \"toggle\" first.\n" +#, c-format msgid "Note: Use the command \"%s%s\" to get details.\n" -msgstr "Por favor utilize o comando \"toggle\" primeiro.\n" +msgstr "Nota: Usar o comando \"%s%s\" para obter detalhes.\n" #, c-format msgid "External verification of component %s failed" -msgstr "" +msgstr "Falha na verificação externa do componente %s" msgid "Note that group specifications are ignored\n" -msgstr "" +msgstr "Repare que as especificações do grupo são ignoradas\n" -#, fuzzy, c-format +#, c-format msgid "error closing '%s'\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao fechar '%s'\n" -#, fuzzy, c-format +#, c-format msgid "error parsing '%s'\n" -msgstr "erro na leitura de `%s': %s\n" +msgstr "erro ao processar '%s'\n" msgid "list all components" -msgstr "" +msgstr "listar todos os componentes" msgid "check all programs" -msgstr "" +msgstr "verificar todos os programas" msgid "|COMPONENT|list options" -msgstr "" +msgstr "|COMPONENT|listar opções" msgid "|COMPONENT|change options" -msgstr "" +msgstr "|COMPONENT|alterar opções" msgid "|COMPONENT|check options" -msgstr "" +msgstr "|COMPONENT|verificar opções" msgid "apply global default values" -msgstr "" +msgstr "aplicar valores globais pré-definidos" msgid "|FILE|update configuration files using FILE" -msgstr "" +msgstr "|FILE|atualizar ficheiros de configuração usando FILE" msgid "get the configuration directories for @GPGCONF@" -msgstr "" +msgstr "obter as pastas de configuração para @GPGCONF@" -#, fuzzy msgid "list global configuration file" -msgstr "criado um novo ficheiro de configuração `%s'\n" +msgstr "listar ficheiro de configuração global" -#, fuzzy msgid "check global configuration file" -msgstr "criado um novo ficheiro de configuração `%s'\n" +msgstr "verificar ficheiro de configuração global" -#, fuzzy -#| msgid "update the trust database" msgid "query the software version database" -msgstr "actualizar a base de dados de confiança" +msgstr "consultar a base de dados da versão do software" msgid "reload all or a given component" -msgstr "" +msgstr "recarregar todos ou um determinado componente" msgid "launch a given component" -msgstr "" +msgstr "lançar um determinado componente" msgid "kill a given component" -msgstr "" +msgstr "matar um determinado componente" msgid "use as output file" msgstr "usar como ficheiro de saída" msgid "activate changes at runtime, if possible" -msgstr "" +msgstr "ativar alterações em tempo de execução, se possível" -#, fuzzy msgid "Usage: @GPGCONF@ [options] (-h for help)" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "Uso: @GPGCONF@ [opções] (-h para ajuda)" msgid "" "Syntax: @GPGCONF@ [options]\n" "Manage configuration options for tools of the @GNUPG@ system\n" msgstr "" +"Sintaxe: @GPGCONF@ [opções]\n" +"Gerir opções de configuração para as ferramentas do sistema @GNUPG@\n" msgid "Need one component argument" -msgstr "" +msgstr "Precisa de um argumento de componente" -#, fuzzy msgid "Component not found" -msgstr "chave pública não encontrada" +msgstr "Componente não encontrado" -#, fuzzy msgid "No argument allowed" -msgstr "a escrever chave privada para `%s'\n" +msgstr "Nenhum argumento permitido" -#, fuzzy msgid "Usage: gpg-check-pattern [options] patternfile (-h for help)\n" -msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" +msgstr "" +"Uso: gpg-check-pattern [opções] ficheiro-de-padrões (-h para obter ajuda)\n" msgid "" "Syntax: gpg-check-pattern [options] patternfile\n" "Check a passphrase given on stdin against the patternfile\n" msgstr "" +"Sintaxe: gpg-check-pattern [opções] ficheiro-de-padrões\n" +"Verificar uma frase-secreta dada em stdin em relação a um ficheiro de " +"padrão\n" -#, fuzzy, c-format +#, c-format msgid "Note: key %s is already stored on the card!\n" -msgstr "ignorado: a chave secreta já está presente\n" +msgstr "Nota: a chave %s já está armazenada no cartão!\n" -#, fuzzy, c-format +#, c-format msgid "Note: Keys are already stored on the card!\n" -msgstr "ignorado: a chave secreta já está presente\n" +msgstr "Nota: As chaves já estão armazenadas no cartão!\n" #, c-format msgid "Replace existing key %s ? (y/N) " -msgstr "" +msgstr "Substituir a chave %s existente? (s/N) " #, c-format msgid "%s card no. %s detected\n" -msgstr "" +msgstr "cartão %s nº %s detetado\n" #, c-format msgid "User Interaction Flag is set to \"%s\" - can't change\n" msgstr "" +"a User Interaction Flag está definido como \"%s\" - não é possível alterar\n" #, c-format msgid "" "Warning: Setting the User Interaction Flag to \"%s\"\n" " can only be reverted using a factory reset!\n" msgstr "" +"Aviso: Definindo a User Interaction Flag como \"%s\" só\n" +" pode ser revertida usando uma reset de fábrica!\n" #, c-format msgid "Please use \"uif --yes %d %s\"\n" -msgstr "" +msgstr "Use \"uif --yes %d %s\"\n" -#, fuzzy msgid "authenticate to the card" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "autenticar no cartão" msgid "send a reset to the card daemon" -msgstr "" +msgstr "enviar uma reset para o daemon do cartão" -#, fuzzy -#| msgid "|NAME|use NAME as default recipient" msgid "setup KDF for PIN authentication" -msgstr "|NOME|usar NOME como destinatário por omissão" +msgstr "configurar o KDF para autenticação por PIN" -#, fuzzy -#| msgid "change the expire date" msgid "change a private data object" -msgstr "muda a data de validade" +msgstr "alterar um objeto de dados privados" -#, fuzzy msgid "read a certificate from a data object" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "ler um certificado a partir de um objeto de dados" -#, fuzzy msgid "store a certificate to a data object" -msgstr "chave %08lX: certificado de revogação \"%s\" adicionado\n" +msgstr "armazenar um certificado em um objeto de dados" msgid "store a private key to a data object" -msgstr "" +msgstr "armazenar uma chave privada em um objeto de dados" msgid "Yubikey management commands" -msgstr "" +msgstr "comandos de gerir uma Yubikey" msgid "manage the command history" -msgstr "" - -#, fuzzy -#~| msgid "selected digest algorithm is invalid\n" -#~ msgid "selected AEAD algorithm is invalid\n" -#~ msgstr "o algoritmo de \"digest\" selecionado é inválido\n" - -#, fuzzy -#~| msgid "invalid personal cipher preferences\n" -#~ msgid "invalid personal AEAD preferences\n" -#~ msgstr "preferências pessoais de cifra inválidas\n" - -#, fuzzy -#~ msgid "AEAD algorithm '%s' may not be used in %s mode\n" -#~ msgstr "não pode utilizar %s enquanto estiver no modo %s\n" - -#~ msgid "forcing symmetric cipher %s (%d) violates recipient preferences\n" -#~ msgstr "" -#~ "ao forçar a cifra simétrica %s (%d) viola as preferências do " -#~ "destinatário\n" - -#, fuzzy -#~ msgid "error writing to temporary file: %s\n" -#~ msgstr "a escrever para `%s'\n" - -#, fuzzy -#~| msgid "Key is superseded" -#~ msgid "run in supervised mode" -#~ msgstr "A chave foi substituída" - -#~ msgid "Name may not start with a digit\n" -#~ msgstr "O nome não pode começar com um dígito\n" - -#~ msgid "Name must be at least 5 characters long\n" -#~ msgstr "O nome deve ter pelo menos 5 caracteres\n" - -#, fuzzy -#~ msgid "selfsigned certificate has a BAD signature" -#~ msgstr "verificar uma assinatura" - -#, fuzzy -#~ msgid "requesting key %s from %s server %s\n" -#~ msgstr "a pedir a chave %08lX de %s\n" - -#, fuzzy -#~ msgid "could not parse keyserver\n" -#~ msgstr "não consegui processar a URI do servidor de chaves\n" - -#, fuzzy -#~| msgid "|NAME|set terminal charset to NAME" -#~ msgid "|NAME|connect to host NAME" -#~ msgstr "" -#~ "|NOME|definir mapa de caracteres do terminal como\n" -#~ "NOME" - -#, fuzzy -#~| msgid "|NAME|use NAME as default recipient" -#~ msgid "|NAME|use user NAME for authentication" -#~ msgstr "|NOME|usar NOME como destinatário por omissão" - -#, fuzzy -#~| msgid "Usage: gpg [options] [files] (-h for help)" -#~ msgid "Usage: dirmngr_ldap [options] [URL] (-h for help)\n" -#~ msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" - -#, fuzzy -#~| msgid "invalid import options\n" -#~ msgid "invalid port number %d\n" -#~ msgstr "opções de importação inválidas\n" - -#, fuzzy -#~ msgid "error writing to stdout: %s\n" -#~ msgstr "erro na escrita do porta-chaves `%s': %s\n" - -#, fuzzy -#~ msgid "attribute '%s' not found\n" -#~ msgstr "chave `%s' não encontrada: %s\n" - -#, fuzzy -#~| msgid "reading from `%s'\n" -#~ msgid "processing url '%s'\n" -#~ msgstr "lendo de `%s'\n" - -#, fuzzy -#~| msgid " w/o user IDs: %lu\n" -#~ msgid " user '%s'\n" -#~ msgstr " sem IDs de utilizadores: %lu\n" - -#, fuzzy -#~ msgid " pass '%s'\n" -#~ msgstr " ou \"" - -#, fuzzy -#~ msgid " host '%s'\n" -#~ msgstr " ou \"" - -#, fuzzy -#~| msgid " not imported: %lu\n" -#~ msgid " port %d\n" -#~ msgstr " não importadas: %lu\n" - -#, fuzzy -#~ msgid " DN '%s'\n" -#~ msgstr " ou \"" - -#, fuzzy -#~ msgid " attr '%s'\n" -#~ msgstr " ou \"" - -#, fuzzy -#~| msgid "WARNING: using insecure memory!\n" -#~ msgid "WARNING: using first attribute only\n" -#~ msgstr "AVISO: a utilizar memória insegura!\n" - -#, fuzzy -#~ msgid "LDAP init to '%s:%d' failed: %s\n" -#~ msgstr "criação de armadura falhou: %s\n" - -#, fuzzy -#~ msgid "LDAP init to '%s' failed: %s\n" -#~ msgstr "criação de armadura falhou: %s\n" - -#, fuzzy -#~ msgid "LDAP init to '%s' done\n" -#~ msgstr "criação de armadura falhou: %s\n" - -#, fuzzy -#~ msgid "binding to '%s:%d' failed: %s\n" -#~ msgstr "criação de armadura falhou: %s\n" - -#, fuzzy -#~| msgid "dearmoring failed: %s\n" -#~ msgid "searching '%s' failed: %s\n" -#~ msgstr "retirada de armadura falhou: %s\n" - -#, fuzzy -#~ msgid "Suggest a random passphrase." -#~ msgstr "muda a frase secreta" - -#, fuzzy -#~ msgid "no authentication key for ssh on card: %s\n" -#~ msgstr "erro ao escrever no porta-chaves secreto `%s': %s\n" - -#, fuzzy -#~ msgid "use a log file for the server" -#~ msgstr "procurar chaves num servidor de chaves" - -#, fuzzy -#~ msgid "argument not expected" -#~ msgstr "a escrever chave privada para `%s'\n" - -#, fuzzy -#~ msgid "read error" -#~ msgstr "erro de leitura" - -#, fuzzy -#~ msgid "keyword too long" -#~ msgstr "frase secreta demasiado longa\n" - -#, fuzzy -#~ msgid "missing argument" -#~ msgstr "argumento inválido" - -#, fuzzy -#~| msgid "invalid armor" -#~ msgid "invalid argument" -#~ msgstr "armadura inválida" - -#, fuzzy -#~ msgid "invalid command" -#~ msgstr "comandos em conflito\n" - -#, fuzzy -#~ msgid "invalid alias definition" -#~ msgstr "opções de importação inválidas\n" - -#, fuzzy -#~ msgid "out of core" -#~ msgstr "não processado" - -#, fuzzy -#~ msgid "invalid meta command" -#~ msgstr "comandos em conflito\n" - -#, fuzzy -#~ msgid "unknown meta command" -#~ msgstr "destinatário por omissão desconhecido `%s'\n" - -#, fuzzy -#~| msgid "unexpected data" -#~ msgid "unexpected meta command" -#~ msgstr "dados inesperados" - -#, fuzzy -#~ msgid "invalid option" -#~ msgstr "opções de importação inválidas\n" - -#, fuzzy -#~ msgid "invalid command \"%.50s\"\n" -#~ msgstr "Comando inválido (tente \"help\")\n" - -#, fuzzy -#~ msgid "invalid option \"%.50s\"\n" -#~ msgstr "opções de importação inválidas\n" - -#, fuzzy -#~| msgid "NOTE: no default option file `%s'\n" -#~ msgid "Note: no default option file '%s'\n" -#~ msgstr "NOTA: ficheiro de opções por omissão `%s' inexistente\n" - -#, fuzzy -#~| msgid "option file `%s': %s\n" -#~ msgid "option file '%s': %s\n" -#~ msgstr "ficheiro de opções `%s': %s\n" - -#, fuzzy -#~| msgid "you may not use %s while in %s mode\n" -#~ msgid "keyserver option \"%s\" may not be used in %s mode\n" -#~ msgstr "não pode utilizar %s enquanto estiver no modo %s\n" - -#, fuzzy -#~ msgid "unable to execute program '%s': %s\n" -#~ msgstr "não foi possível alterar o exec-path para %s\n" - -#, fuzzy -#~ msgid "unable to execute external program\n" -#~ msgstr "não foi possível alterar o exec-path para %s\n" - -#, fuzzy -#~ msgid "unable to read external program response: %s\n" -#~ msgstr "não foi possível alterar o exec-path para %s\n" - -#, fuzzy -#~ msgid " (%d) ECC and ECC\n" -#~ msgstr " (%d) DSA e ElGamal (por omissão)\n" - -#, fuzzy -#~ msgid "run without asking a user" -#~ msgstr "Sair sem gravar? " - -#, fuzzy -#~| msgid "NOTE: old default options file `%s' ignored\n" -#~ msgid "Note: old default options file '%s' ignored\n" -#~ msgstr "NOTA: o ficheiro antigo de opções por omissão `%s' foi ignorado\n" - -#, fuzzy -#~ msgid "" -#~ "@\n" -#~ "Commands:\n" -#~ " " -#~ msgstr "" -#~ "@Comandos:\n" -#~ " " - -#, fuzzy -#~ msgid "decryption modus" -#~ msgstr "decifragem correcta\n" - -#, fuzzy -#~ msgid "encryption modus" -#~ msgstr "decifragem correcta\n" - -#, fuzzy -#~ msgid "program filename" -#~ msgstr "--store [nome_do_ficheiro]" - -#, fuzzy -#~ msgid "Usage: symcryptrun [options] (-h for help)" -#~ msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" - -#, fuzzy -#~ msgid "%s on %s aborted with status %i\n" -#~ msgstr "%s não é permitido com %s!\n" - -#, fuzzy -#~ msgid "%s on %s failed with status %i\n" -#~ msgstr "impossível abrir %s: %s\n" - -#, fuzzy -#~ msgid "can't create temporary directory '%s': %s\n" -#~ msgstr "%s: impossível criar directoria: %s\n" - -#, fuzzy -#~ msgid "could not open %s for writing: %s\n" -#~ msgstr "impossível abrir %s: %s\n" - -#, fuzzy -#~ msgid "error closing %s: %s\n" -#~ msgstr "erro na leitura de `%s': %s\n" - -#, fuzzy -#~ msgid "could not create pipe: %s\n" -#~ msgstr "impossível criar %s: %s\n" - -#, fuzzy -#~ msgid "could not create pty: %s\n" -#~ msgstr "impossível criar %s: %s\n" - -#, fuzzy -#~ msgid "execv failed: %s\n" -#~ msgstr "actualização falhou: %s\n" - -#, fuzzy -#~ msgid "select failed: %s\n" -#~ msgstr "remoção do bloco de chave falhou: %s\n" - -#, fuzzy -#~ msgid "read failed: %s\n" -#~ msgstr "actualização falhou: %s\n" - -#, fuzzy -#~ msgid "pty read failed: %s\n" -#~ msgstr "actualização falhou: %s\n" - -#, fuzzy -#~ msgid "waitpid failed: %s\n" -#~ msgstr "actualização falhou: %s\n" - -#, fuzzy -#~ msgid "cannot allocate infile string: %s\n" -#~ msgstr "impossível criar `%s': %s\n" - -#, fuzzy -#~ msgid "cannot allocate outfile string: %s\n" -#~ msgstr "impossível criar `%s': %s\n" - -#, fuzzy -#~ msgid "class %s is not supported\n" -#~ msgstr "algoritmo de protecção %d%s não é suportado\n" - -#, fuzzy -#~ msgid " using certificate ID 0x%08lX\n" -#~ msgstr "erro na criação da frase secreta: %s\n" - -#, fuzzy -#~ msgid "male" -#~ msgstr "enable" - -#, fuzzy -#~ msgid "female" -#~ msgstr "enable" - -#, fuzzy -#~ msgid "unspecified" -#~ msgstr "Nenhum motivo especificado" - -#, fuzzy -#~ msgid "error creating 'ultimately_trusted_keys' TOFU table: %s\n" -#~ msgstr "erro na criação da frase secreta: %s\n" - -#, fuzzy -#~ msgid "error creating 'encryptions' TOFU table: %s\n" -#~ msgstr "erro ao enviar para `%s': %s\n" - -#, fuzzy -#~ msgid "resetting keydb: %s\n" -#~ msgstr "erro na escrita do porta-chaves `%s': %s\n" - -#, fuzzy -#~ msgid "error setting TOFU binding's policy to %s\n" -#~ msgstr "erro na leitura de `%s': %s\n" - -#, fuzzy -#~ msgid "%s: Verified %ld~signature in the past %s." -#~ msgid_plural "%s: Verified %ld~signatures in the past %s." -#~ msgstr[0] "|algo [ficheiros]|imprimir \"digests\" de mensagens" -#~ msgstr[1] "|algo [ficheiros]|imprimir \"digests\" de mensagens" - -#, fuzzy -#~ msgid "Encrypted %ld~message in the past %s." -#~ msgid_plural "Encrypted %ld~messages in the past %s." -#~ msgstr[0] "|algo [ficheiros]|imprimir \"digests\" de mensagens" -#~ msgstr[1] "|algo [ficheiros]|imprimir \"digests\" de mensagens" - -#, fuzzy -#~| msgid "error writing public keyring `%s': %s\n" -#~ msgid "error setting policy for key %s, user id \"%s\": %s" -#~ msgstr "erro ao escrever no porta-chaves público `%s': %s\n" - -#, fuzzy -#~ msgid "error looking up: %s\n" -#~ msgstr "erro na leitura de `%s': %s\n" - -#, fuzzy -#~| msgid "error creating keyring `%s': %s\n" -#~ msgid "Warning: %s appears in the keyring %d times\n" -#~ msgstr "erro ao criar porta-chaves `%s': %s\n" - -#, fuzzy -#~ msgid "error retrieving '%s': http status %u\n" -#~ msgstr "erro na leitura de `%s': %s\n" - -#, fuzzy -#~ msgid "npth_select failed: %s - waiting 1s\n" -#~ msgstr "actualização da chave secreta falhou: %s\n" - -#, fuzzy -#~ msgid "reading from ldap wrapper %d failed: %s\n" -#~ msgstr "remoção do bloco de chave falhou: %s\n" - -#, fuzzy -#~ msgid "What keysize do you want for the Signature key? (%u) " -#~ msgstr "Qual o tamanho de chave desejado? (1024) " - -#, fuzzy -#~ msgid "What keysize do you want for the Encryption key? (%u) " -#~ msgstr "Qual o tamanho de chave desejado? (1024) " - -#, fuzzy -#~ msgid "What keysize do you want for the Authentication key? (%u) " -#~ msgstr "Qual o tamanho de chave desejado? (1024) " - -#, fuzzy -#~ msgid "listen() failed: %s\n" -#~ msgstr "actualização falhou: %s\n" - -#, fuzzy -#~| msgid "new configuration file `%s' created\n" -#~ msgid "new configuration file '%s' created\n" -#~ msgstr "criado um novo ficheiro de configuração `%s'\n" - -#, fuzzy -#~| msgid "WARNING: options in `%s' are not yet active during this run\n" -#~ msgid "WARNING: options in '%s' are not yet active during this run\n" -#~ msgstr "AVISO: opções em `%s' ainda não estão activas nesta execução\n" - -#, fuzzy -#~| msgid "Key generation failed: %s\n" -#~ msgid "User ID revocation failed: %s\n" -#~ msgstr "A geração de chaves falhou: %s\n" - -#, fuzzy -#~ msgid "|A|Please enter the Admin PIN%%0A[remaining attempts: %d]" -#~ msgstr "muda a frase secreta" - -#~ msgid "DSA requires the use of a 160 bit hash algorithm\n" -#~ msgstr "" -#~ "DSA necessita de utilização de uma algoritmo de dispersão de 160 bit\n" - -#~ msgid "--store [filename]" -#~ msgstr "--store [nome_do_ficheiro]" - -#~ msgid "--symmetric [filename]" -#~ msgstr "--symmetric [nome_do_ficheiro]" - -#~ msgid "--encrypt [filename]" -#~ msgstr "--encrypt [nome_do_ficheiro]" - -#, fuzzy -#~ msgid "--symmetric --encrypt [filename]" -#~ msgstr "--sign --encrypt [nome_do_ficheiro]" - -#~ msgid "--sign [filename]" -#~ msgstr "--sign [nome_do_ficheiro]" - -#~ msgid "--sign --encrypt [filename]" -#~ msgstr "--sign --encrypt [nome_do_ficheiro]" - -#, fuzzy -#~ msgid "--symmetric --sign --encrypt [filename]" -#~ msgstr "--sign --encrypt [nome_do_ficheiro]" - -#~ msgid "--sign --symmetric [filename]" -#~ msgstr "--sign --symmetric [nome_do_ficheiro]" - -#~ msgid "--clear-sign [filename]" -#~ msgstr "--clear-sign [nome_do_ficheiro]" - -#~ msgid "--decrypt [filename]" -#~ msgstr "--decrypt [nome_do_ficheiro]" - -#~ msgid "--sign-key user-id" -#~ msgstr "--sign-key id-utilizador" - -#~ msgid "--lsign-key user-id" -#~ msgstr "--lsign-key id-utilizador" - -#~ msgid "--edit-key user-id [commands]" -#~ msgstr "--edit-key id-utilizador [comandos]" - -#, fuzzy -#~ msgid "--passwd " -#~ msgstr "--sign-key id-utilizador" - -#~ msgid "[filename]" -#~ msgstr "[nome_do_ficheiro]" - -#, fuzzy -#~ msgid "shadowing the key failed: %s\n" -#~ msgstr "remoção do bloco de chave falhou: %s\n" - -#, fuzzy -#~ msgid "available TOFU policies:\n" -#~ msgstr "desactiva uma chave" - -#, fuzzy -#~ msgid "%ld message signed" -#~ msgid_plural "%ld messages signed" -#~ msgstr[0] "|algo [ficheiros]|imprimir \"digests\" de mensagens" -#~ msgstr[1] "|algo [ficheiros]|imprimir \"digests\" de mensagens" - -#~ msgid "communication problem with gpg-agent\n" -#~ msgstr "problemas na comunicação com o gpg-agent\n" - -#, fuzzy -#~ msgid "canceled by user\n" -#~ msgstr "cancelado pelo utilizador\n" - -#, fuzzy -#~ msgid "problem with the agent\n" -#~ msgstr "problema com o agente: o agente returnou 0x%lx\n" - -#, fuzzy -#~ msgid "problem with the agent (unexpected response \"%s\")\n" -#~ msgstr "problema com o agente: o agente returnou 0x%lx\n" - -#, fuzzy -#~ msgid "unknown TOFU DB format '%s'\n" -#~ msgstr "destinatário por omissão desconhecido `%s'\n" - -#, fuzzy -#~ 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 "" -#~ "Precisa de uma frase secreta para desbloquear a chave secreta do " -#~ "utilizador:\n" -#~ "\n" -#~ "\"%.*s\"\n" -#~ "chave %u bits %s, ID %08lx, criada %s%s\n" - -#, fuzzy -#~ msgid "" -#~ "You need a passphrase to unlock the secret key for\n" -#~ "user: \"%s\"\n" -#~ msgstr "" -#~ "\n" -#~ "Você precisa de uma frase secreta para desbloquear a chave secreta do\n" -#~ "utilizador: \"" - -#, fuzzy -#~ msgid "%u-bit %s key, ID %s, created %s" -#~ msgstr "chave de %u-bit/%s, ID %08lX, criada em %s" - -#, fuzzy -#~ msgid "can't access directory '%s': %s\n" -#~ msgstr "%s: impossível criar directoria: %s\n" - -#~ msgid "you found a bug ... (%s:%d)\n" -#~ msgstr "você encontrou um bug ... (%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] "%d IDs de utilizadores sem auto-assinaturas válidas detectados\n" -#~ msgstr[1] "%d IDs de utilizadores sem auto-assinaturas válidas detectados\n" - -#~ msgid "moving a key signature to the correct place\n" -#~ msgstr "a mover a assinatura da chave para o local correcto\n" - -#~ msgid "%d signatures not checked due to missing keys\n" -#~ msgstr "%d assinaturas não verificadas por falta de chaves\n" - -#~ msgid "%d signatures not checked due to errors\n" -#~ msgstr "%d assinaturas não verificadas devido a erros\n" - -#~ msgid "1 user ID without valid self-signature detected\n" -#~ msgstr "1 ID de utilizador sem auto-assinatura válida detectado\n" - -#, fuzzy -#~ msgid "User ID \"%s\": %d signatures removed\n" -#~ msgstr "Utilizador \"%s\" está revocado." - -#~ msgid "" -#~ "You need a Passphrase to protect your secret key.\n" -#~ "\n" -#~ msgstr "" -#~ "Você precisa de uma frase secreta para proteger a sua chave.\n" -#~ "\n" - -#, fuzzy -#~ msgid "" -#~ "Please enter a passphrase to protect the off-card backup of the new " -#~ "encryption key." -#~ msgstr "Por favor digite a frase secreta \n" - -#~ msgid "passphrase not correctly repeated; try again" -#~ msgstr "a frase secreta não foi repetida corretamente; tente outra vez" - -#~ msgid "%s.\n" -#~ msgstr "%s.\n" - -#~ msgid "" -#~ "You don't want a passphrase - this is probably a *bad* idea!\n" -#~ "I will do it anyway. You can change your passphrase at any time,\n" -#~ "using this program with the option \"--edit-key\".\n" -#~ "\n" -#~ msgstr "" -#~ "Você não quer uma frase secreta - provavelmente isto é uma *má* idéia!\n" -#~ "Vou continuar assim mesmo. Você pode mudar sua frase secreta a\n" -#~ "qualquer hora, usando este programa com a opção \"--edit-key\".\n" -#~ "\n" - -#, fuzzy -#~ msgid "storing key onto card failed: %s\n" -#~ msgstr "remoção do bloco de chave falhou: %s\n" - -#, fuzzy -#~| msgid "1 bad signature\n" -#~ msgid "1 good signature\n" -#~ msgstr "1 assinatura incorrecta\n" - -#, fuzzy -#~ msgid "%lu keys cached (%lu signatures)\n" -#~ msgstr "%lu chave verificadas (%lu assinaturas)\n" - -#, fuzzy -#~ msgid "refreshing 1 key from %s\n" -#~ msgstr "a pedir a chave %08lX de %s\n" - -#, fuzzy -#~ msgid "sending key %s to %s server %s\n" -#~ msgstr "a procurar por \"%s\" no servidor HKP %s\n" - -#, fuzzy -#~ msgid "public key %s is %lu seconds newer than the signature\n" -#~ msgstr "a chave pública %08lX é %lu segundos mais nova que a assinatura\n" - -#, fuzzy -#~ msgid "" -#~ "key %s was created %lu seconds in the future (time warp or clock " -#~ "problem)\n" -#~ msgstr "" -#~ "a chave foi criada %lu segundos no futuro\n" -#~ "(viagem no tempo ou problema no relógio)\n" - -#, fuzzy -#~| msgid "can't open the keyring" -#~ msgid "Failed to open the keyring DB.\n" -#~ msgstr "não é possível abrir o porta-chaves" - -#, fuzzy -#~ msgid "Failed to parse '%s'.\n" -#~ msgstr "impossível abrir `%s': %s\n" - -#, fuzzy -#~ msgid "error looking up secret key \"%s\": %s\n" -#~ msgstr "erro na leitura do bloco de chave secreto `%s': %s\n" - -#, fuzzy -#~ msgid "Please select at most one subkey.\n" -#~ msgstr "Por favor seleccione no máximo uma chave secundária.\n" - -#, fuzzy -#~ msgid "malformed %s environment variable\n" -#~ msgstr "variável de ambiente GPG_AGENT_INFO inválida\n" - -#, fuzzy -#~ msgid "dirmngr protocol version %d is not supported\n" -#~ msgstr "a versão %d do protocolo gpg-agent não é suportada\n" - -#, fuzzy -#~ msgid "toggle between the secret and public key listings" -#~ msgstr "alterna entre listagem de chave secreta e pública" - -#, fuzzy -#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n" -#~ msgstr "AVISO: opções em `%s' ainda não estão activas nesta execução\n" - -#~ msgid "gpg-agent is not available in this session\n" -#~ msgstr "o gpg-agent não está disponível nesta sessão\n" - -#, fuzzy -#~ msgid "use a standard location for the socket" -#~ msgstr "" -#~ "Realmente actualizar as preferências para os utilizadores seleccionados?" - -#, fuzzy -#~ msgid "Usage: gpg-agent [options] (-h for help)" -#~ msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" - -#~ msgid "malformed GPG_AGENT_INFO environment variable\n" -#~ msgstr "variável de ambiente GPG_AGENT_INFO inválida\n" - -#~ msgid "gpg-agent protocol version %d is not supported\n" -#~ msgstr "a versão %d do protocolo gpg-agent não é suportada\n" - -#, fuzzy -#~ msgid "can't fdopen pipe for reading: %s\n" -#~ msgstr "impossível abrir %s: %s\n" - -#, fuzzy -#~ msgid "error creating socket: %s\n" -#~ msgstr "erro ao criar `%s': %s\n" - -#, fuzzy -#~ msgid "host not found" -#~ msgstr "[Utilizador não encontrado]" - -#, fuzzy -#~ msgid "unknown key protection algorithm\n" -#~ msgstr "algoritmo de compressão desconhecido" - -#, fuzzy -#~ msgid "secret parts of key are not available\n" -#~ msgstr "Componentes secretas da chave primária não disponíveis.\n" - -#, fuzzy -#~ msgid "secret key already stored on a card\n" -#~ msgstr "ignorado: a chave secreta já está presente\n" - -#, fuzzy -#~ msgid "error writing key to card: %s\n" -#~ msgstr "erro na escrita do porta-chaves `%s': %s\n" - -#~ msgid "" -#~ "you can only encrypt to RSA keys of 2048 bits or less in --pgp2 mode\n" -#~ msgstr "" -#~ "no modo --pgp2 só pode cifrar com chaves RSA de 2048 bits ou menos\n" - -#~ msgid "" -#~ "unable to use the IDEA cipher for all of the keys you are encrypting to.\n" -#~ msgstr "" -#~ "impossível utilizar a cifra IDEA para todas as chaves para que está a " -#~ "cifrar.\n" - -#, fuzzy -#~ msgid "remove the passphrase from exported subkeys" -#~ msgstr "revoga uma chave secundária" - -#, fuzzy -#~ msgid "key %s: not protected - skipped\n" -#~ msgstr "chave %08lX: não está protegida - ignorada\n" - -#, fuzzy -#~ msgid "failed to unprotect the subkey: %s\n" -#~ msgstr "falha ao inicializar a base de dados de confiança: %s\n" - -#~ msgid "too many entries in pk cache - disabled\n" -#~ msgstr "entradas demais no cache pk - desactivado\n" - -#, fuzzy -#~ msgid "no secret subkey for public subkey %s - ignoring\n" -#~ msgstr "há uma chave secreta para a chave pública \"%s\"!\n" - -#, fuzzy -#~ msgid "key %s: secret key without public key - skipped\n" -#~ msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n" - -#~ msgid "usage: gpg [options] " -#~ msgstr "uso: gpg [opções] " - -#~ msgid "" -#~ "you can only make detached or clear signatures while in --pgp2 mode\n" -#~ msgstr "" -#~ "só pode fazer assinaturas separadas ou em texto puro no modo --pgp2\n" - -#~ msgid "you can't sign and encrypt at the same time while in --pgp2 mode\n" -#~ msgstr "não pode assinar e cifrar ao mesmo tempo no modo --pgp2\n" - -#~ msgid "" -#~ "you must use files (and not a pipe) when working with --pgp2 enabled.\n" -#~ msgstr "" -#~ "deve utilizar ficheiros (e não um 'pipe') quando trabalho no modo --" -#~ "pgp2.\n" - -#~ msgid "encrypting a message in --pgp2 mode requires the IDEA cipher\n" -#~ msgstr "cifrar uma mensagem no modo --pgp2 necessita da cifra IDEA\n" - -#, fuzzy -#~ msgid "key %s: already in secret keyring\n" -#~ msgstr "chave %08lX: já está no porta-chaves secreto\n" - -#, fuzzy -#~ msgid "key %s: secret key not found: %s\n" -#~ msgstr "chave %08lX: chave secreta não encontrada: %s\n" - -#, fuzzy -#~ msgid "NOTE: primary key is online and stored on card\n" -#~ msgstr "ignorado: a chave secreta já está presente\n" - -#, fuzzy -#~ msgid "NOTE: secondary key is online and stored on card\n" -#~ msgstr "ignorado: a chave secreta já está presente\n" - -#~ msgid "" -#~ "You may not make an OpenPGP signature on a PGP 2.x key while in --pgp2 " -#~ "mode.\n" -#~ msgstr "" -#~ "Não pode criar uma assinatura OpenPGP numa chave PGP 2.x no modo --pgp2.\n" - -#~ msgid "This would make the key unusable in PGP 2.x.\n" -#~ msgstr "Isto tornaria a chave inutilizável no PGP 2.x.\n" - -#~ msgid "This key is not protected.\n" -#~ msgstr "Esta chave não é protegida.\n" - -#~ msgid "Key is protected.\n" -#~ msgstr "A chave é protegida.\n" - -#~ msgid "Can't edit this key: %s\n" -#~ msgstr "Impossível editar esta chave: %s\n" - -#~ msgid "" -#~ "Enter the new passphrase for this secret key.\n" -#~ "\n" -#~ msgstr "" -#~ "Digite a nova frase para esta chave secreta.\n" -#~ "\n" - -#~ msgid "" -#~ "You don't want a passphrase - this is probably a *bad* idea!\n" -#~ "\n" -#~ msgstr "" -#~ "Você não quer uma frase secreta - provavelmente isto é uma *má* idéia!\n" -#~ "\n" - -#, fuzzy -#~ msgid "Do you really want to do this? (y/N) " -#~ msgstr "Você quer realmente fazer isso? " - -#~ msgid "Please remove selections from the secret keys.\n" -#~ msgstr "Por favor remova as selecções das chaves secretas.\n" - -#~ msgid "No corresponding signature in secret ring\n" -#~ msgstr "Nenhuma assinatura correspondente no porta-chaves secreto\n" - -#, fuzzy -#~ msgid "writing secret key stub to `%s'\n" -#~ msgstr "a escrever chave privada para `%s'\n" - -#~ msgid "writing secret key to `%s'\n" -#~ msgstr "a escrever chave privada para `%s'\n" - -#~ msgid "no writable secret keyring found: %s\n" -#~ msgstr "" -#~ "nenhum porta-chaves secreto com permissões de escrita encontrado: %s\n" - -#~ msgid "WARNING: 2 files with confidential information exists.\n" -#~ msgstr "AVISO: existem 2 ficheiros com informações confidenciais.\n" - -#~ msgid "%s is the unchanged one\n" -#~ msgstr "%s é o não modificado\n" - -#~ msgid "%s is the new one\n" -#~ msgstr "%s é o novo\n" - -#~ msgid "Please fix this possible security flaw\n" -#~ msgstr "Por favor conserte esta possível falha de segurança\n" - -#, fuzzy -#~ msgid "searching for names from %s server %s\n" -#~ msgstr "a procurar por \"%s\" no servidor HKP %s\n" - -#, fuzzy -#~ msgid "searching for names from %s\n" -#~ msgstr "a procurar por \"%s\" no servidor HKP %s\n" - -#, fuzzy -#~ msgid "searching for \"%s\" from %s server %s\n" -#~ msgstr "a procurar por \"%s\" no servidor HKP %s\n" - -#, fuzzy -#~ msgid "searching for \"%s\" from %s\n" -#~ msgstr "a procurar por \"%s\" no servidor HKP %s\n" - -#, fuzzy -#~ msgid "keyserver timed out\n" -#~ msgstr "erro do servidor de chaves" - -#, fuzzy -#~ msgid "keyserver internal error\n" -#~ msgstr "erro do servidor de chaves" - -#, fuzzy -#~ msgid "keyserver communications error: %s\n" -#~ msgstr "A geração de chaves falhou: %s\n" - -#, fuzzy -#~ msgid "WARNING: unable to parse URI %s\n" -#~ msgstr "AVISO: dono pouco seguro em %s \"%s\"\n" - -#~ msgid "invalid root packet detected in proc_tree()\n" -#~ msgstr "pacote raiz inválido detectado em proc_tree()\n" - -#~ msgid "the IDEA cipher plugin is not present\n" -#~ msgstr "o 'plugin' com a cifra IDEA não está presente\n" - -#, fuzzy -#~ msgid "no corresponding public key: %s\n" -#~ msgstr "a escrever chave pública para `%s'\n" - -#, fuzzy -#~ msgid "unknown protection algorithm\n" -#~ msgstr "algoritmo de compressão desconhecido" - -#, fuzzy -#~ msgid "NOTE: This key is not protected!\n" -#~ msgstr "Esta chave não é protegida.\n" - -#, fuzzy -#~ msgid "protection digest %d is not supported\n" -#~ msgstr "algoritmo de protecção %d%s não é suportado\n" - -#~ msgid "Invalid passphrase; please try again" -#~ msgstr "Frase secreta inválida; por favor tente novamente" - -#~ msgid "%s ...\n" -#~ msgstr "%s ...\n" - -#~ msgid "WARNING: Weak key detected - please change passphrase again.\n" -#~ msgstr "" -#~ "AVISO: Chave fraca detectada - por favor mude a frase secreta novamente.\n" - -#~ msgid "" -#~ "generating the deprecated 16-bit checksum for secret key protection\n" -#~ msgstr "" -#~ "a gerar a 'checksum' (depreciada) de 16-bit para protecção da chave " -#~ "secreta\n" - -#~ msgid "" -#~ "you can only detach-sign with PGP 2.x style keys while in --pgp2 mode\n" -#~ msgstr "" -#~ "só pode assinar-desligar com chaves do tipo PGP 2.x no modo --pgp2\n" - -#~ msgid "" -#~ "you can only clearsign with PGP 2.x style keys while in --pgp2 mode\n" -#~ msgstr "só pode assinar à vista com chaves do tipo PGP 2.x no modo --pgp2\n" - -#, fuzzy -#~ msgid "Usage: scdaemon [options] (-h for help)" -#~ msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" - -#, fuzzy -#~ msgid "Usage: gpgsm [options] [files] (-h for help)" -#~ msgstr "Uso: gpg [opções] [ficheiros] (-h para ajuda)" - -#, fuzzy -#~ msgid "usage: gpgconf [options] " -#~ msgstr "uso: gpg [opções] " - -#, fuzzy -#~ msgid "failed to allocated keyDB handle\n" -#~ msgstr "falha ao inicializar a base de dados de confiança: %s\n" - -#~ msgid "Command> " -#~ msgstr "Comando> " - -#~ msgid "the trustdb is corrupted; please run \"gpg --fix-trustdb\".\n" -#~ msgstr "" -#~ "A base de dados de confiança está danificada; por favor execute\n" -#~ "\"gpg --fix-trustdb\".\n" - -#~ msgid "Please report bugs to .\n" -#~ msgstr "Por favor comunique bugs para .\n" - -#, fuzzy -#~ msgid "Please report bugs to " -#~ msgstr "Por favor comunique bugs para .\n" - -#, fuzzy -#~ msgid "DSA keypair will have %u bits.\n" -#~ msgstr "O par de chaves DSA terá 1024 bits.\n" - -#~ msgid "Repeat passphrase\n" -#~ msgstr "Repita a frase secreta\n" - -#, fuzzy -#~ msgid "read options from file" -#~ msgstr "a ler opções de `%s'\n" - -#~ msgid "|[file]|make a signature" -#~ msgstr "|[ficheiro]|fazer uma assinatura" - -#, fuzzy -#~ msgid "|[FILE]|make a signature" -#~ msgstr "|[ficheiro]|fazer uma assinatura" - -#, fuzzy -#~ msgid "|[FILE]|make a clear text signature" -#~ msgstr "|[ficheiro]|fazer uma assinatura em texto puro" - -#~ msgid "use the default key as default recipient" -#~ msgstr "usar a chave por omissão como destinatário por omissão" - -#~ msgid "force v3 signatures" -#~ msgstr "forçar assinaturas v3" - -#~ msgid "always use a MDC for encryption" -#~ msgstr "sempre usar um MDC para cifrar" - -#~ msgid "add this secret keyring to the list" -#~ msgstr "adicionar este porta-chaves secreto à lista" - -#~ msgid "|FILE|load extension module FILE" -#~ msgstr "|FICHEIRO|carregar módulo de extensão FICHEIRO" - -#~ msgid "|N|use compress algorithm N" -#~ msgstr "|N|usar algoritmo de compressão N" - -#, fuzzy -#~ msgid "remove key from the public keyring" -#~ msgstr "remover chaves do porta-chaves público" - -#~ msgid "" -#~ "It's up to you to assign a value here; this value will never be exported\n" -#~ "to any 3rd party. We need it to implement the web-of-trust; it has " -#~ "nothing\n" -#~ "to do with the (implicitly created) web-of-certificates." -#~ msgstr "" -#~ "Você decide que valor usar aqui; este valor nunca será exportado para\n" -#~ "terceiros. Precisamos dele implementar a rede de confiança, que não tem\n" -#~ "nada a ver com a rede de certificados (implicitamente criada)." - -#~ msgid "" -#~ "To build the Web-of-Trust, GnuPG needs to know which keys are\n" -#~ "ultimately trusted - those are usually the keys for which you have\n" -#~ "access to the secret key. Answer \"yes\" to set this key to\n" -#~ "ultimately trusted\n" -#~ msgstr "" -#~ "Para construir a Teia-de-Confiança ('Web-of-Trust'), o GnuPG precisa de\n" -#~ "saber quais são as chaves em que deposita confiança absoluta - " -#~ "normalmente\n" -#~ "estas são as chaves a que tem acesso à chave privada. Responda \"sim\" " -#~ "para\n" -#~ "que esta chave seja de confiança absoluta.\n" - -#~ msgid "If you want to use this untrusted key anyway, answer \"yes\"." -#~ msgstr "" -#~ "Se você quiser usar esta chave, não de confiança, assim mesmo, responda " -#~ "\"sim\"." - -#~ msgid "" -#~ "Enter the user ID of the addressee to whom you want to send the message." -#~ msgstr "" -#~ "Digite o ID de utilizador do destinatário para quem quer enviar a\n" -#~ "mensagem." - -#~ msgid "" -#~ "In general it is not a good idea to use the same key for signing and\n" -#~ "encryption. This algorithm should only be used in certain domains.\n" -#~ "Please consult your security expert first." -#~ msgstr "" -#~ "Em geral não é uma boa ideia utilizar a mesma chave para assinar e para\n" -#~ "cifrar. Este algoritmo só deve ser utilizado em alguns domínios.\n" -#~ "Por favor consulte primeiro o seu perito em segurança." - -#~ msgid "Enter the size of the key" -#~ msgstr "Insira o tamanho da chave" - -#~ msgid "Answer \"yes\" or \"no\"" -#~ msgstr "Responda \"sim\" ou \"não\"" - -#~ msgid "" -#~ "Enter the required value as shown in the prompt.\n" -#~ "It is possible to enter a ISO date (YYYY-MM-DD) but you won't\n" -#~ "get a good error response - instead the system tries to interpret\n" -#~ "the given value as an interval." -#~ msgstr "" -#~ "Digite o valor necessário conforme pedido.\n" -#~ "É possível digitar uma data ISO (AAAA-MM-DD) mas você não terá uma boa\n" -#~ "reacção a erros - o sistema tentará interpretar o valor dado como um " -#~ "intervalo." - -#~ msgid "Enter the name of the key holder" -#~ msgstr "Digite o nome do possuidor da chave" - -#~ msgid "please enter an optional but highly suggested email address" -#~ msgstr "por favor digite um endereço de email (opcional mas recomendado)" - -#~ msgid "Please enter an optional comment" -#~ msgstr "Por favor digite um comentário (opcional)" - -#~ msgid "" -#~ "N to change the name.\n" -#~ "C to change the comment.\n" -#~ "E to change the email address.\n" -#~ "O to continue with key generation.\n" -#~ "Q to to quit the key generation." -#~ msgstr "" -#~ "N para mudar o nome.\n" -#~ "C para mudar o comentário.\n" -#~ "E para mudar o endereço de email\n" -#~ "O para continuar a geração da chave.\n" -#~ "S para interromper a geração da chave." - -#~ msgid "" -#~ "Answer \"yes\" (or just \"y\") if it is okay to generate the sub key." -#~ msgstr "Responda \"sim\" (ou apenas \"s\") se quiser gerar a subchave." - -#~ msgid "" -#~ "When you sign a user ID on a key, you should first verify that the key\n" -#~ "belongs to the person named in the user ID. It is useful for others to\n" -#~ "know how carefully you verified this.\n" -#~ "\n" -#~ "\"0\" means you make no particular claim as to how carefully you verified " -#~ "the\n" -#~ " key.\n" -#~ "\n" -#~ "\"1\" means you believe the key is owned by the person who claims to own " -#~ "it\n" -#~ " but you could not, or did not verify the key at all. This is useful " -#~ "for\n" -#~ " a \"persona\" verification, where you sign the key of a pseudonymous " -#~ "user.\n" -#~ "\n" -#~ "\"2\" means you did casual verification of the key. For example, this " -#~ "could\n" -#~ " mean that you verified the key fingerprint and checked the user ID on " -#~ "the\n" -#~ " key against a photo ID.\n" -#~ "\n" -#~ "\"3\" means you did extensive verification of the key. For example, this " -#~ "could\n" -#~ " mean that you verified the key fingerprint with the owner of the key " -#~ "in\n" -#~ " person, and that you checked, by means of a hard to forge document " -#~ "with a\n" -#~ " photo ID (such as a passport) that the name of the key owner matches " -#~ "the\n" -#~ " name in the user ID on the key, and finally that you verified (by " -#~ "exchange\n" -#~ " of email) that the email address on the key belongs to the key " -#~ "owner.\n" -#~ "\n" -#~ "Note that the examples given above for levels 2 and 3 are *only* " -#~ "examples.\n" -#~ "In the end, it is up to you to decide just what \"casual\" and \"extensive" -#~ "\"\n" -#~ "mean to you when you sign other keys.\n" -#~ "\n" -#~ "If you don't know what the right answer is, answer \"0\"." -#~ msgstr "" -#~ "Quando assina uma chave de identificação de um utilizador, deve primeiro\n" -#~ "verificar que a chave pertence realmente à pessoa em questão. É útil " -#~ "para\n" -#~ "terceiros saberem com que cuidado é que efectuou esta verificação.\n" -#~ "\n" -#~ "\"0\" significa que não deseja declarar a forma com verificou a chave\n" -#~ "\n" -#~ "\"1\" significa que acredita que a chave pertence à pessoa em questão, " -#~ "mas\n" -#~ " não conseguiu ou não tentou verificar. Este grau é útil para quando\n" -#~ " assina a chave de uma utilizador pseudo-anónimo.\n" -#~ "\n" -#~ "\"2\" significa que efectuou uma verificação normal da chave. Por " -#~ "exemplo,\n" -#~ " isto pode significar que verificou a impressão digital da chave e\n" -#~ " verificou o identificador de utilizador da chave contra uma " -#~ "identificação\n" -#~ " fotográfica.\n" -#~ "\n" -#~ "\"3\" significa que efectuou uma verificação exaustiva da chave. Por " -#~ "exemplo,\n" -#~ " isto pode significar que efectuou a verificação pessoalmente, e que \n" -#~ " utilizou um documento, com fotografia, difícil de falsificar \n" -#~ " (como por exemplo um passaporte) que o nome do dono da chave é o\n" -#~ " mesmo do que o identificador da chave, e que, finalmente, verificou\n" -#~ " (através de troca de e-mail) que o endereço de email da chave " -#~ "pertence\n" -#~ " ao done da chave.\n" -#~ "\n" -#~ "Atenção: os exemplos dados para os níveis 2 e 3 são *apenas* exemplos.\n" -#~ "Compete-lhe a si decidir o que considera, ao assinar chaves, uma " -#~ "verificação\n" -#~ "\"normal\" e uma verificação \"exaustiva\".\n" -#~ "\n" -#~ "Se não sabe qual é a resposta correcta, responda \"0\"." - -#, fuzzy -#~ msgid "Answer \"yes\" if you want to sign ALL the user IDs" -#~ msgstr "Responda \"sim\" se quiser assinar TODOS os IDs de utilizador" - -#~ msgid "" -#~ "Answer \"yes\" if you really want to delete this user ID.\n" -#~ "All certificates are then also lost!" -#~ msgstr "" -#~ "Responda \"sim\" se quiser realmente remover este ID de utilizador.\n" -#~ "Todos os certificados também serão perdidos!" - -#~ msgid "Answer \"yes\" if it is okay to delete the subkey" -#~ msgstr "Responda \"sim\" se quiser remover a subchave" - -#~ msgid "" -#~ "This is a valid signature on the key; you normally don't want\n" -#~ "to delete this signature because it may be important to establish a\n" -#~ "trust connection to the key or another key certified by this key." -#~ msgstr "" -#~ "Esta é uma assinatura válida na chave; normalmente não é desejável\n" -#~ "remover esta assinatura porque ela pode ser importante para estabelecer\n" -#~ "uma conexão de confiança à chave ou a outra chave certificada por esta." - -#~ msgid "" -#~ "This signature can't be checked because you don't have the\n" -#~ "corresponding key. You should postpone its deletion until you\n" -#~ "know which key was used because this signing key might establish\n" -#~ "a trust connection through another already certified key." -#~ msgstr "" -#~ "Esta assinatura não pode ser verificada porque você não tem a chave\n" -#~ "correspondente. Você deve adiar sua remoção até saber que chave foi " -#~ "usada\n" -#~ "porque a chave desta assinatura pode estabelecer uma conexão de " -#~ "confiança\n" -#~ "através de outra chave já certificada." - -#~ msgid "" -#~ "The signature is not valid. It does make sense to remove it from\n" -#~ "your keyring." -#~ msgstr "" -#~ "A assinatura não é válida. Faz sentido removê-la do seu porta-chaves." - -#~ msgid "" -#~ "This is a signature which binds the user ID to the key. It is\n" -#~ "usually not a good idea to remove such a signature. Actually\n" -#~ "GnuPG might not be able to use this key anymore. So do this\n" -#~ "only if this self-signature is for some reason not valid and\n" -#~ "a second one is available." -#~ msgstr "" -#~ "Esta é uma assinatura que liga o ID de utilizador à chave. Geralmente\n" -#~ "não é uma boa idéia remover tal assinatura. É possível que o GnuPG\n" -#~ "não consiga mais usar esta chave. Faça isto apenas se por alguma\n" -#~ "razão esta auto-assinatura não for válida e há uma segunda disponível." - -#~ msgid "" -#~ "Change the preferences of all user IDs (or just of the selected ones)\n" -#~ "to the current list of preferences. The timestamp of all affected\n" -#~ "self-signatures will be advanced by one second.\n" -#~ msgstr "" -#~ "Muda as preferências de todos os identificadores de utilizadores\n" -#~ "(ou apenas dos seleccionados) para a lista actual de preferências.\n" -#~ "O 'timestamp' de todas as auto-assinaturas afectuadas será avançado\n" -#~ "em um segundo.\n" - -#~ msgid "Please enter the passphrase; this is a secret sentence \n" -#~ msgstr "Por favor digite a frase secreta \n" - -#~ msgid "" -#~ "Please repeat the last passphrase, so you are sure what you typed in." -#~ msgstr "Por favor repita a frase secreta, para ter certeza do que digitou." - -#~ msgid "Give the name of the file to which the signature applies" -#~ msgstr "Dê o nome para o ficheiro ao qual a assinatura se aplica" - -#~ msgid "Answer \"yes\" if it is okay to overwrite the file" -#~ msgstr "Responda \"sim\" se quiser escrever por cima do ficheiro" - -#~ msgid "" -#~ "Please enter a new filename. If you just hit RETURN the default\n" -#~ "file (which is shown in brackets) will be used." -#~ msgstr "" -#~ "Por favor digite um novo nome de ficheiro. Se você apenas carregar em " -#~ "RETURN\n" -#~ "o ficheiro por omissão (que é mostrado entre parênteses) será utilizado." - -#~ msgid "" -#~ "You should specify a reason for the certification. Depending on the\n" -#~ "context you have the ability to choose from this list:\n" -#~ " \"Key has been compromised\"\n" -#~ " Use this if you have a reason to believe that unauthorized persons\n" -#~ " got access to your secret key.\n" -#~ " \"Key is superseded\"\n" -#~ " Use this if you have replaced this key with a newer one.\n" -#~ " \"Key is no longer used\"\n" -#~ " Use this if you have retired this key.\n" -#~ " \"User ID is no longer valid\"\n" -#~ " Use this to state that the user ID should not longer be used;\n" -#~ " this is normally used to mark an email address invalid.\n" -#~ msgstr "" -#~ "Deve especificar uma razão para a emissão do certificado. Dependendo no\n" -#~ "contexto, pode escolher as seguintes opções desta lista:\n" -#~ " \"A chave foi comprometida\"\n" -#~ " Utilize esta opção se tem razões para acreditar que indivíduos não\n" -#~ " autorizados obtiveram acesso à sua chave secreta.\n" -#~ " \"A chave foi substituida\"\n" -#~ " Utilize esta opção se substituiu esta chave com uma mais recente.\n" -#~ " \"A chave já não é utilizada\"\n" -#~ " Utilize esta opção se já não utiliza a chave.\n" -#~ " \"O identificador do utilizador já não é válido\"\n" -#~ " Utilize esta opção para comunicar que o identificador do utilizador\n" -#~ " não deve ser mais utilizado; normalmente utilizada para indicar\n" -#~ " que um endereço de email é inválido.\n" - -#~ msgid "" -#~ "If you like, you can enter a text describing why you issue this\n" -#~ "revocation certificate. Please keep this text concise.\n" -#~ "An empty line ends the text.\n" -#~ msgstr "" -#~ "Se desejar, pode inserir uma texto descrevendo a razão pela qual criou\n" -#~ "este certificado de revogação. Por favor mantenha este texto conciso.\n" -#~ "Uma linha vazia termina o texto.\n" - -#, fuzzy -#~ msgid "can't put notation data into v3 (PGP 2.x style) signatures\n" -#~ msgstr "não pode escolher uma chave do tipo PGP 2.x como revogadora\n" - -#, fuzzy -#~ msgid "can't put notation data into v3 (PGP 2.x style) key signatures\n" -#~ msgstr "não pode escolher uma chave do tipo PGP 2.x como revogadora\n" - -#, fuzzy -#~ msgid "can't put a policy URL into v3 (PGP 2.x style) signatures\n" -#~ msgstr "não pode escolher uma chave do tipo PGP 2.x como revogadora\n" - -#, fuzzy -#~ msgid "shelll" -#~ msgstr "help" - -#, fuzzy -#~ msgid "" -#~ "please see http://www.gnupg.org/download/iconv.html for more information\n" -#~ msgstr "" -#~ "por favor veja http://www.gnupg.org/faq.html para mais informações\n" - -#, fuzzy -#~ msgid "key generation is not available from the commandline\n" -#~ msgstr "o gpg-agent não está disponível nesta sessão\n" - -#, fuzzy -#~ msgid "please use the script \"%s\" to generate a new key\n" -#~ msgstr "Por favor selecione o tipo de chave desejado:\n" - -#, fuzzy -#~ msgid "cipher extension `%s' not loaded due to unsafe permissions\n" -#~ msgstr "" -#~ "a extensão de cifra \"%s\" não foi carregada devido às suas permissões " -#~ "inseguras\n" - -#, fuzzy -#~ msgid ".\n" -#~ msgstr "%s.\n" - -#~ msgid "problem with the agent - disabling agent use\n" -#~ msgstr "problema com o agente - a desactivar a utilização deste\n" - -#, fuzzy -#~ msgid "can't query passphrase in batch mode\n" -#~ msgstr "impossível pedir senha em modo não-interactivo\n" - -#~ msgid "Repeat passphrase: " -#~ msgstr "Repita a frase secreta: " - -#~ msgid "-k[v][v][v][c] [user-id] [keyring]" -#~ msgstr "-k[v][v][v][c] [id-utilizador] [porta-chaves]" - -#~ msgid "no entropy gathering module detected\n" -#~ msgstr "nenhum módulo de recolha de entropia detectado\n" - -#, fuzzy -#~ msgid "can't lock `%s': %s\n" -#~ msgstr "impossível abrir `%s'\n" - -#~ msgid "`%s' is not a regular file - ignored\n" -#~ msgstr "`%s' não é um ficheiro normal - ignorado\n" - -#~ msgid "note: random_seed file is empty\n" -#~ msgstr "nota: random_seed está vazia\n" - -#~ msgid "can't read `%s': %s\n" -#~ msgstr "impossível ler `%s': %s\n" - -#~ msgid "note: random_seed file not updated\n" -#~ msgstr "nota: ficheiro random_seed não actualizado\n" - -#~ msgid "can't write `%s': %s\n" -#~ msgstr "impossível escrever `%s': %s\n" - -#~ msgid "can't close `%s': %s\n" -#~ msgstr "impossível fechar `%s': %s\n" - -#~ msgid "WARNING: using insecure random number generator!!\n" -#~ msgstr "AVISO: a utilizar gerador de números aleatórios inseguro!\n" - -#~ msgid "" -#~ "The random number generator is only a kludge to let\n" -#~ "it run - it is in no way a strong RNG!\n" -#~ "\n" -#~ "DON'T USE ANY DATA GENERATED BY THIS PROGRAM!!\n" -#~ "\n" -#~ msgstr "" -#~ "O gerador de números aleatórios é apenas um \"remendo\"\n" -#~ "para poder funcionar - não é de modo algum um bom gerador!\n" -#~ "\n" -#~ "NÃO USE NENHUM DADO GERADO POR ESTE PROGRAMA!\n" -#~ "\n" - -#~ msgid "" -#~ "\n" -#~ "Not enough random bytes available. Please do some other work to give\n" -#~ "the OS a chance to collect more entropy! (Need %d more bytes)\n" -#~ msgstr "" -#~ "\n" -#~ "Não há bytes aleatórios suficientes. Por favor, faça outro trabalho para\n" -#~ "que o sistema possa recolher mais entropia! (São necessários mais %d " -#~ "bytes)\n" - -#, fuzzy -#~ msgid "card reader not available\n" -#~ msgstr "chave secreta não disponível" - -#, fuzzy -#~ msgid "NOTE: %s is not available in this version\n" -#~ msgstr "o gpg-agent não está disponível nesta sessão\n" - -#, fuzzy -#~ msgid " algorithms on these user IDs:\n" -#~ msgstr "Assinou estes identificadores de utilizadores:\n" - -#~ msgid "general error" -#~ msgstr "erro geral" - -#~ msgid "unknown packet type" -#~ msgstr "formato de pacote desconhecido" - -#~ msgid "unknown digest algorithm" -#~ msgstr "algoritmo de \"digest\" desconhecido" - -#~ msgid "bad public key" -#~ msgstr "chave pública incorrecta" - -#~ msgid "bad secret key" -#~ msgstr "chave secreta incorrecta" - -#~ msgid "bad signature" -#~ msgstr "assinatura incorrecta" - -#~ msgid "checksum error" -#~ msgstr "erro de \"checksum\"" - -#~ msgid "unknown cipher algorithm" -#~ msgstr "algoritmo de criptografia desconhecido" - -#~ msgid "invalid packet" -#~ msgstr "pacote inválido" - -#~ msgid "no such user id" -#~ msgstr "identificador de utilizador inexistente" - -#~ msgid "secret key not available" -#~ msgstr "chave secreta não disponível" - -#~ msgid "wrong secret key used" -#~ msgstr "chave secreta incorrecta" - -#~ msgid "bad key" -#~ msgstr "chave incorrecta" - -#~ msgid "file write error" -#~ msgstr "erro de escrita" - -#~ msgid "unknown compress algorithm" -#~ msgstr "algoritmo de compressão desconhecido" - -#~ msgid "file open error" -#~ msgstr "erro na abertura do ficheiro" - -#~ msgid "file create error" -#~ msgstr "erro na criação do ficheiro" - -#~ msgid "unimplemented pubkey algorithm" -#~ msgstr "algoritmo de chave pública não implementado" - -#~ msgid "unimplemented cipher algorithm" -#~ msgstr "algoritmo de criptografia não implementado" - -#~ msgid "unknown signature class" -#~ msgstr "classe de assinatura desconhecida" - -#~ msgid "trust database error" -#~ msgstr "erro na base de dados de confiança" - -#~ msgid "resource limit" -#~ msgstr "limite de recursos" - -#~ msgid "invalid keyring" -#~ msgstr "porta-chaves inválido" - -#~ msgid "malformed user id" -#~ msgstr "identificador de utilizador malformado" - -#~ msgid "file close error" -#~ msgstr "erro ao fechar ficheiro" - -#~ msgid "file rename error" -#~ msgstr "erro na renomeação do ficheiro" - -#~ msgid "file delete error" -#~ msgstr "erro na remoção do ficheiro" - -#~ msgid "timestamp conflict" -#~ msgstr "conflito de \"timestamp\"" - -#~ msgid "unusable pubkey algorithm" -#~ msgstr "algoritmo de chave pública inutilizável" - -#~ msgid "file exists" -#~ msgstr "o ficheiro já existe" - -#~ msgid "weak key" -#~ msgstr "chave fraca" - -#~ msgid "bad URI" -#~ msgstr "URI incorrecto" - -#~ msgid "not processed" -#~ msgstr "não processado" - -#~ msgid "unusable public key" -#~ msgstr "chave pública não utilizável" - -#~ msgid "unusable secret key" -#~ msgstr "chave secreta não utilizável" - -#~ msgid "keyserver error" -#~ msgstr "erro do servidor de chaves" - -#, fuzzy -#~ msgid "no card" -#~ msgstr "não cifrado" - -#, fuzzy -#~ msgid "no data" -#~ msgstr "não há dados assinados\n" - -#~ msgid "... this is a bug (%s:%d:%s)\n" -#~ msgstr "... isto é um bug (%s:%d:%s)\n" - -#~ msgid "operation is not possible without initialized secure memory\n" -#~ msgstr "a operação não é possível sem memória segura inicializada\n" - -#~ msgid "(you may have used the wrong program for this task)\n" -#~ msgstr "(você pode ter usado o programa errado para esta tarefa)\n" - -#~ msgid "" -#~ "please see http://www.gnupg.org/why-not-idea.html for more information\n" -#~ msgstr "veja http://www.gnupg.org/why-not-idea.html para mais informações\n" - -#, fuzzy -#~ msgid "all export-clean-* options from above" -#~ msgstr "ler opções do ficheiro" - -#, fuzzy -#~ msgid "all import-clean-* options from above" -#~ msgstr "ler opções do ficheiro" - -#, fuzzy -#~ msgid "expired: %s)" -#~ msgstr "[expira: %s]" - -#, fuzzy -#~ msgid "key %s: expired signature from key %s - skipped\n" -#~ msgstr "chave %08lX: classe de assinatura inesperada (%02x) - ignorada\n" - -#, fuzzy -#~ msgid "Unable to clean `%s'\n" -#~ msgstr "não foi possível alterar o exec-path para %s\n" - -#, fuzzy -#~ msgid "No user IDs are removable.\n" -#~ msgstr "o utilizador com o id \"%s\" já está revocado\n" - -#, fuzzy -#~ msgid "bad passphrase or unknown cipher algorithm (%d)\n" -#~ msgstr "algoritmo de criptografia desconhecido" - -#~ msgid "can't set client pid for the agent\n" -#~ msgstr "não consegui colocar o pid do cliente no agente\n" - -#~ msgid "can't get server read FD for the agent\n" -#~ msgstr "não consigo obter FD de leitura no servidor para o agente\n" - -#~ msgid "can't get server write FD for the agent\n" -#~ msgstr "não consigo obter FD de escrita no servidor para o agente\n" - -#~ msgid "select secondary key N" -#~ msgstr "seleciona chave secundária N" - -#~ msgid "list signatures" -#~ msgstr "lista assinaturas" - -#~ msgid "sign the key" -#~ msgstr "assina a chave" - -#~ msgid "add a secondary key" -#~ msgstr "adiciona nova chave secundária" - -#~ msgid "delete signatures" -#~ msgstr "remove assinaturas" - -#~ msgid "updated preferences" -#~ msgstr "preferências actualizadas" - -#~ msgid "No secondary key with index %d\n" -#~ msgstr "Nenhuma chave secundária com índice %d\n" - -#~ msgid "--nrsign-key user-id" -#~ msgstr "--nrsign-key id-utilizador" - -#~ msgid "--nrlsign-key user-id" -#~ msgstr "--nrlsign-key id-utilizador" - -#~ msgid "sign the key non-revocably" -#~ msgstr "assina a chave de forma não-revogável" - -#~ msgid "sign the key locally and non-revocably" -#~ msgstr "assinar a chave localmente e de forma não revogável" - -#~ msgid "q" -#~ msgstr "q" - -#~ msgid "list" -#~ msgstr "list" - -#~ msgid "l" -#~ msgstr "l" - -#~ msgid "debug" -#~ msgstr "debug" - -#, fuzzy -#~ msgid "name" -#~ msgstr "enable" - -#, fuzzy -#~ msgid "login" -#~ msgstr "lsign" - -#, fuzzy -#~ msgid "cafpr" -#~ msgstr "fpr" - -#, fuzzy -#~ msgid "forcesig" -#~ msgstr "revsig" - -#, fuzzy -#~ msgid "generate" -#~ msgstr "erro geral" - -#~ msgid "passwd" -#~ msgstr "passwd" - -#~ msgid "save" -#~ msgstr "save" - -#~ msgid "fpr" -#~ msgstr "fpr" - -#~ msgid "uid" -#~ msgstr "uid" - -#~ msgid "check" -#~ msgstr "check" - -#~ msgid "c" -#~ msgstr "c" - -#~ msgid "sign" -#~ msgstr "sign" - -#~ msgid "s" -#~ msgstr "s" - -#, fuzzy -#~ msgid "tsign" -#~ msgstr "sign" - -#~ msgid "lsign" -#~ msgstr "lsign" - -#~ msgid "nrsign" -#~ msgstr "nrsign" - -#~ msgid "nrlsign" -#~ msgstr "nrlsign" - -#~ msgid "adduid" -#~ msgstr "adduid" - -#~ msgid "addphoto" -#~ msgstr "addphoto" - -#~ msgid "deluid" -#~ msgstr "deluid" - -#~ msgid "delphoto" -#~ msgstr "delphoto" - -#, fuzzy -#~ msgid "addcardkey" -#~ msgstr "addkey" - -#~ msgid "delkey" -#~ msgstr "delkey" - -#~ msgid "addrevoker" -#~ msgstr "addrevoker" - -#~ msgid "delsig" -#~ msgstr "delsig" - -#~ msgid "expire" -#~ msgstr "expire" - -#~ msgid "primary" -#~ msgstr "primary" - -#~ msgid "toggle" -#~ msgstr "toggle" - -#~ msgid "t" -#~ msgstr "t" - -#~ msgid "pref" -#~ msgstr "pref" - -#~ msgid "showpref" -#~ msgstr "showpref" - -#~ msgid "setpref" -#~ msgstr "setpref" - -#~ msgid "updpref" -#~ msgstr "updpref" - -#, fuzzy -#~ msgid "keyserver" -#~ msgstr "erro do servidor de chaves" - -#~ msgid "trust" -#~ msgstr "trust" - -#~ msgid "revsig" -#~ msgstr "revsig" - -#~ msgid "revuid" -#~ msgstr "revuid" - -#~ msgid "revkey" -#~ msgstr "revkey" - -#~ msgid "disable" -#~ msgstr "disable" - -#~ msgid "enable" -#~ msgstr "enable" - -#~ msgid "showphoto" -#~ msgstr "showphoto" - -#~ msgid "" -#~ "About to generate a new %s keypair.\n" -#~ " minimum keysize is 768 bits\n" -#~ " default keysize is 1024 bits\n" -#~ " highest suggested keysize is 2048 bits\n" -#~ msgstr "" -#~ "Prestes a gerar um novo par de chaves %s.\n" -#~ " tamanho mínimo é 768 bits\n" -#~ " tamanho por omissão é 1024 bits\n" -#~ " tamanho máximo sugerido é 2048 bits\n" - -#~ msgid "DSA only allows keysizes from 512 to 1024\n" -#~ msgstr "DSA permite apenas tamanhos de 512 a 1024\n" - -#~ msgid "keysize too small; 1024 is smallest value allowed for RSA.\n" -#~ msgstr "tamanho muito pequeno; 1024 é o valor mínimo permitido para RSA.\n" - -#~ msgid "keysize too small; 768 is smallest value allowed.\n" -#~ msgstr "tamanho muito pequeno; 768 é o valor mínimo permitido.\n" - -#~ msgid "keysize too large; %d is largest value allowed.\n" -#~ msgstr "tamanho muito grande; %d é o valor máximo permitido.\n" - -#~ msgid "" -#~ "Keysizes larger than 2048 are not suggested because\n" -#~ "computations take REALLY long!\n" -#~ msgstr "" -#~ "Tamanhos de chave maiores que 2048 não são recomendados\n" -#~ "porque o tempo de computação é REALMENTE longo!\n" - -#, fuzzy -#~ msgid "Are you sure that you want this keysize? (y/N) " -#~ msgstr "Você tem certeza de que quer este tamanho de chave? " - -#~ msgid "" -#~ "Okay, but keep in mind that your monitor and keyboard radiation is also " -#~ "very vulnerable to attacks!\n" -#~ msgstr "" -#~ "Tudo bem, mas não se esqueça que a radiação do seu monitor e teclado " -#~ "também é extremamente vulnerável a ataques!\n" - -#~ msgid "Experimental algorithms should not be used!\n" -#~ msgstr "Algoritmos experimentais não devem ser usados!\n" - -#~ msgid "" -#~ "this cipher algorithm is deprecated; please use a more standard one!\n" -#~ msgstr "" -#~ "este algoritmo de criptografia está desctualizado; por favor use um " -#~ "algoritmo mais standard!x\n" - -#, fuzzy -#~ msgid "sorry, can't do this in batch mode\n" -#~ msgstr "impossível fazer isso em modo não-interativo\n" - -#, fuzzy -#~ msgid "can't open file `%s': %s\n" -#~ msgstr "impossível abrir %s: %s\n" - -#~ msgid "key %08lX: key has been revoked!\n" -#~ msgstr "chave %08lX: a chave foi revogada!\n" - -#~ msgid "key %08lX: subkey has been revoked!\n" -#~ msgstr "chave %08lX: a subchave foi revogada!\n" - -#~ msgid "%08lX: key has expired\n" -#~ msgstr "%08lX: a chave expirou\n" - -#~ msgid "%08lX: We do NOT trust this key\n" -#~ msgstr "%08lX: Nós NÃO confiamos nesta chave\n" - -#, fuzzy -#~ msgid " (%d) RSA (auth only)\n" -#~ msgstr " (%d) RSA (apenas assinatura)\n" - -#, fuzzy -#~ msgid " (%d) RSA (sign and auth)\n" -#~ msgstr " (%d) RSA (assinatura e cifragem)\n" - -#, fuzzy -#~ msgid " (%d) RSA (encrypt and auth)\n" -#~ msgstr " (%d) RSA (apenas cifragem)\n" - -#, fuzzy -#~ msgid " (%d) RSA (sign, encrypt and auth)\n" -#~ msgstr " (%d) RSA (assinatura e cifragem)\n" - -#~ msgid "%s: can't open: %s\n" -#~ msgstr "%s: impossível abrir: %s\n" - -#~ msgid "%s: WARNING: empty file\n" -#~ msgstr "%s: AVISO: ficheiro vazio\n" - -#, fuzzy -#~ msgid " (%d) I trust marginally\n" -#~ msgstr " %d = Confio moderadamente\n" - -#, fuzzy -#~ msgid " (%d) I trust fully\n" -#~ msgstr " %d = Confio plenamente\n" - -#, fuzzy -#~ msgid "expires" -#~ msgstr "expire" - -#, fuzzy -#~ msgid "" -#~ "\"\n" -#~ "locally signed with your key %s at %s\n" -#~ msgstr "" -#~ "\"\n" -#~ "assinada localmente com a sua chave %08lX em %s\n" - -#~ msgid "%s: can't create lock\n" -#~ msgstr "%s: impossível criar tranca\n" - -#~ msgid "%s: can't make lock\n" -#~ msgstr "%s: impossível criar tranca\n" - -#~ msgid "%s: can't create: %s\n" -#~ msgstr "%s: impossível criar: %s\n" - -#~ msgid "If you want to use this revoked key anyway, answer \"yes\"." -#~ msgstr "" -#~ "Se você quiser usar esta chave revogada assim mesmo, responda \"sim\"." - -#, fuzzy -#~ msgid "Unable to open photo \"%s\": %s\n" -#~ msgstr "não foi possível alterar o exec-path para %s\n" - -#, fuzzy -#~ msgid "error: no ownertrust value\n" -#~ msgstr "exportar os valores de confiança" - -#~ msgid " (main key ID %08lX)" -#~ msgstr " (ID principal da chave %08lX)" - -#~ msgid "rev! subkey has been revoked: %s\n" -#~ msgstr "rev! subchave foi revogada: %s\n" - -#~ msgid "rev- faked revocation found\n" -#~ msgstr "rev- revogação falsa encontrada\n" - -#, fuzzy -#~ msgid " [expired: %s]" -#~ msgstr "[expira: %s]" - -#~ msgid " [expires: %s]" -#~ msgstr "[expira: %s]" - -#, fuzzy -#~ msgid " [revoked: %s]" -#~ msgstr "revkey" - -#~ msgid "|[files]|encrypt files" -#~ msgstr "|[ficheiros]|cifrar ficheiros" - -#~ msgid "store only" -#~ msgstr "apenas armazenar" - -#~ msgid "|[files]|decrypt files" -#~ msgstr "|[ficheiros]|decifrar ficheiros" - -#~ msgid "sign a key non-revocably" -#~ msgstr "assinar uma chave de forma não revocável" - -#~ msgid "sign a key locally and non-revocably" -#~ msgstr "assinar uma chave localmente e de forma não revocável" - -#~ msgid "list only the sequence of packets" -#~ msgstr "listar apenas as sequências de pacotes" - -#~ msgid "export the ownertrust values" -#~ msgstr "exportar os valores de confiança" - -#~ msgid "unattended trust database update" -#~ msgstr "actualizar automaticamente a base de dados de confiança" - -#~ msgid "fix a corrupted trust database" -#~ msgstr "consertar uma base de dados de confiança" - -#~ msgid "De-Armor a file or stdin" -#~ msgstr "retirar armadura de um ficheiro ou do \"stdin\"" - -#~ msgid "En-Armor a file or stdin" -#~ msgstr "criar armadura para um ficheiro ou \"stdin\"" - -#~ msgid "do not force v3 signatures" -#~ msgstr "não forçar assinaturas v3" - -#~ msgid "force v4 key signatures" -#~ msgstr "forçar assinaturas v4" - -#~ msgid "do not force v4 key signatures" -#~ msgstr "não forçar assinaturas v4" - -#~ msgid "never use a MDC for encryption" -#~ msgstr "nunca usar um MDC para cifrar" - -#~ msgid "|[file]|write status info to file" -#~ msgstr "|[ficheiro]|escrever ifnroamções de estado para o ficheiro" - -#~ msgid "|KEYID|ultimately trust this key" -#~ msgstr "|KEYID|confiar totalmente nesta chave" - -#~ msgid "emulate the mode described in RFC1991" -#~ msgstr "emular o modo descrito no RFC1991" - -#~ msgid "set all packet, cipher and digest options to OpenPGP behavior" -#~ msgstr "" -#~ "configurar todas as opções de pacote, cifragem e \"digest\"\n" -#~ "para comportamento OpenPGP" - -#~ msgid "set all packet, cipher and digest options to PGP 2.x behavior" -#~ msgstr "" -#~ "configurar todas as opções de pacote, cifragem e \"digest\"\n" -#~ "para comportamento PGP 2.x" - -#~ msgid "|NAME|use message digest algorithm NAME for passphrases" -#~ msgstr "" -#~ "|NOME|usar algoritmo de \"digest\" de mensagens NOME\n" -#~ "para frases secretas" - -#~ msgid "throw keyid field of encrypted packets" -#~ msgstr "eliminar campo keyid dos pacotes cifrados" - -#~ msgid "Show Photo IDs" -#~ msgstr "Mostrar IDs Fotográficos" - -#~ msgid "Don't show Photo IDs" -#~ msgstr "Não mostrar IDs Fotográficos" - -#~ msgid "Set command line to view Photo IDs" -#~ msgstr "Configurar linha de comandos para ver fotografias" - -#, fuzzy -#~ msgid "compress algorithm `%s' is read-only in this release\n" -#~ msgstr "o algoritmo de compressão deve estar na faixa %d..%d\n" - -#~ msgid "compress algorithm must be in range %d..%d\n" -#~ msgstr "o algoritmo de compressão deve estar na faixa %d..%d\n" - -#~ msgid "" -#~ "%08lX: It is not sure that this key really belongs to the owner\n" -#~ "but it is accepted anyway\n" -#~ msgstr "" -#~ "%08lX: Não se tem certeza de que esta chave realmente pertence ao dono,\n" -#~ "mas é aceite de qualquer modo\n" - -#~ msgid "preference %c%lu is not valid\n" -#~ msgstr "preferência %c%lu não é válida\n" - -#~ msgid "key %08lX: not a rfc2440 key - skipped\n" -#~ msgstr "chave %08lX: não é uma chave rfc2440 - ignorada\n" - -#~ msgid "" -#~ "NOTE: Elgamal primary key detected - this may take some time to import\n" -#~ msgstr "" -#~ "NOTA: Chave primária Elgamal detectada - pode demorar algum tempo a " -#~ "importar\n" - -#~ msgid "%s%c %4u%c/%08lX created: %s expires: %s" -#~ msgstr "%s%c %4u%c/%08lX criada: %s expira: %s" - -#~ msgid "can't get key from keyserver: %s\n" -#~ msgstr "não consigo obter chave do servidor: %s\n" - -#~ msgid "success sending to `%s' (status=%u)\n" -#~ msgstr "sucesso ao enviar para `%s' (estado=%u)\n" - -#~ msgid "failed sending to `%s': status=%u\n" -#~ msgstr "erro ao enviar para `%s': estado=%u\n" - -#~ msgid "can't search keyserver: %s\n" -#~ msgstr "não consigo procurar no servidor de chaves: %s\n" - -#~ msgid "" -#~ "key %08lX: this is a PGP generated ElGamal key which is NOT secure for " -#~ "signatures!\n" -#~ msgstr "" -#~ "chave: %08lX: esta é uma chave ElGamal gerada pelo PGP que NÃO é segura " -#~ "para assinaturas!\n" - -#~ msgid "" -#~ "key %08lX has been created %lu second in future (time warp or clock " -#~ "problem)\n" -#~ msgstr "" -#~ "a chave %08lX foi criada %lu segundo no futuro\n" -#~ "(viagem no tempo ou problema no relógio)\n" - -#~ msgid "" -#~ "key %08lX has been created %lu seconds in future (time warp or clock " -#~ "problem)\n" -#~ msgstr "" -#~ "a chave %08lX foi criada %lu segundos no futuro\n" -#~ "(viagem no tempo ou problema no relógio)\n" - -#~ msgid "key %08lX marked as ultimately trusted\n" -#~ msgstr "chave %08lX marcada como de confiança absoluta\n" - -#~ msgid "checking at depth %d signed=%d ot(-/q/n/m/f/u)=%d/%d/%d/%d/%d/%d\n" -#~ msgstr "" -#~ "a verificar à profundidade %d assinado=%d ot(-/q/n/m/f/u)=%d/%d/%d/%d/%d/" -#~ "%d\n" - -#~ msgid "" -#~ "Select the algorithm to use.\n" -#~ "\n" -#~ "DSA (aka DSS) is the digital signature algorithm which can only be used\n" -#~ "for signatures. This is the suggested algorithm because verification of\n" -#~ "DSA signatures are much faster than those of ElGamal.\n" -#~ "\n" -#~ "ElGamal is an algorithm which can be used for signatures and encryption.\n" -#~ "OpenPGP distinguishs between two flavors of this algorithms: an encrypt " -#~ "only\n" -#~ "and a sign+encrypt; actually it is the same, but some parameters must be\n" -#~ "selected in a special way to create a safe key for signatures: this " -#~ "program\n" -#~ "does this but other OpenPGP implementations are not required to " -#~ "understand\n" -#~ "the signature+encryption flavor.\n" -#~ "\n" -#~ "The first (primary) key must always be a key which is capable of " -#~ "signing;\n" -#~ "this is the reason why the encryption only ElGamal key is not available " -#~ "in\n" -#~ "this menu." -#~ msgstr "" -#~ "Seleccione o algoritmo a ser usado.\n" -#~ "\n" -#~ "DSA (ou DSS) é o algoritmo de assinatura digital que pode ser usado " -#~ "apenas\n" -#~ "para assinaturas. Este é o algoritmo recomendado porque a verificação de\n" -#~ "assinaturas DSA é muito mais rápida que a verificação de ElGamal.\n" -#~ "\n" -#~ "ElGamal é um algoritmo que pode ser usado para assinatura e cifragem.\n" -#~ "O OpenPGP distingue dois tipos deste algoritmo: um apenas para cifragem\n" -#~ "e outro para assinatura+cifragem; na verdade são iguais, mas alguns\n" -#~ "parâmetros precisam ser escolhidos de modo especial para criar uma chave\n" -#~ "segura para assinatura: este programa faz isso, mas algumas outras\n" -#~ "implementações do OpenPGP não vão necessariamente entender o tipo\n" -#~ "assinatura+cifragem.\n" -#~ "\n" -#~ "A chave primária precisa sempre ser uma chave capaz de fazer " -#~ "assinaturas;\n" -#~ "este é o motivo pelo qual a chave ElGamal apenas para cifragem não está\n" -#~ "disponível neste menu." - -#~ msgid "" -#~ "Although these keys are defined in RFC2440 they are not suggested\n" -#~ "because they are not supported by all programs and signatures created\n" -#~ "with them are quite large and very slow to verify." -#~ msgstr "" -#~ "Apesar de estas chaves estarem definidas no RFC2440, elas não são " -#~ "recomendadas\n" -#~ "porque não são suportadas por todos os programas e assinaturas criadas " -#~ "com\n" -#~ "elas são grandes e sua verificação é lenta." - -#~ msgid "%lu keys so far checked (%lu signatures)\n" -#~ msgstr "%lu chaves verificadas até agora (%lu assinaturas)\n" - -#, fuzzy -#~ msgid "key %08lX incomplete\n" -#~ msgstr "chave %08lX: sem ID de utilizador\n" - -#, fuzzy -#~ msgid "quit|quit" -#~ msgstr "sair" - -#~ msgid "" -#~ "The use of this algorithm is only supported by GnuPG. You will not be\n" -#~ "able to use this key to communicate with PGP users. This algorithm is " -#~ "also\n" -#~ "very slow, and may not be as secure as the other choices.\n" -#~ msgstr "" -#~ "A utilização deste algoritmo só é suportada pelo GnuPG. Não poderá " -#~ "utilizar\n" -#~ "esta chave para comunicar com utilizadores do PGP. Este algoritmo é " -#~ "para\n" -#~ "além disto muito lento, e pode não ser tão seguro como as outras opções.\n" - -#~ msgid "invalid symkey algorithm detected (%d)\n" -#~ msgstr "algoritmo de 'symkey' inválido detectado (%d)\n" - -#~ msgid "this keyserver is not fully HKP compatible\n" -#~ msgstr "o servidor de chaves não é totalmente compatível com HKP\n" +msgstr "gerir o histórico de comandos" From fa677a37cef007cad4ae772c96849b03931c5263 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahelenia=20Ziemia=C5=84ska?= Date: Thu, 7 Dec 2023 11:56:54 +0900 Subject: [PATCH 21/42] po: Fix quotes in Polish Translation. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -- Signed-off-by: Ahelenia Ziemiańska --- po/pl.po | 790 +++++++++++++++++++++++++++---------------------------- 1 file changed, 395 insertions(+), 395 deletions(-) diff --git a/po/pl.po b/po/pl.po index 555da9661..dcbab2240 100644 --- a/po/pl.po +++ b/po/pl.po @@ -194,11 +194,11 @@ msgstr "klucze ssh większe niż %d bitów nie są obsługiwane\n" #, c-format msgid "can't create '%s': %s\n" -msgstr "nie można utworzyć ,,%s'': %s\n" +msgstr "nie można utworzyć „%s”: %s\n" #, c-format msgid "can't open '%s': %s\n" -msgstr "nie można otworzyć ,,%s'': %s\n" +msgstr "nie można otworzyć „%s”: %s\n" #, c-format msgid "no suitable card key found: %s\n" @@ -429,7 +429,7 @@ msgid "disallow the use of an external password cache" msgstr "niezezwalanie na użycie zewnętrznej pamięci podręcznej haseł" msgid "disallow clients to mark keys as \"trusted\"" -msgstr "niezezwalanie klientom na oznaczanie kluczy jako ,,zaufanych''" +msgstr "niezezwalanie klientom na oznaczanie kluczy jako „zaufanych”" msgid "allow presetting passphrase" msgstr "zezwolenie na predefiniowane hasło" @@ -496,7 +496,7 @@ msgstr "" #, c-format msgid "invalid debug-level '%s' given\n" -msgstr "podano błędny poziom diagnostyki ,,%s''\n" +msgstr "podano błędny poziom diagnostyki „%s”\n" #, c-format msgid "selected digest algorithm is invalid\n" @@ -504,15 +504,15 @@ msgstr "wybrany algorytm skrótów wiadomości jest niepoprawny\n" #, c-format msgid "reading options from '%s'\n" -msgstr "odczyt opcji z ,,%s''\n" +msgstr "odczyt opcji z „%s”\n" #, c-format msgid "Note: '%s' is not considered an option\n" -msgstr "Uwaga: ,,%s'' nie jest uznane za opcję\n" +msgstr "Uwaga: „%s” nie jest uznane za opcję\n" #, c-format msgid "WARNING: \"%s\" is a deprecated option\n" -msgstr "OSTRZEŻENIE: ,,%s'' jest przestarzałą opcją.\n" +msgstr "OSTRZEŻENIE: „%s” jest przestarzałą opcją.\n" #, c-format msgid "can't create socket: %s\n" @@ -520,7 +520,7 @@ msgstr "nie można utworzyć gniazda: %s\n" #, c-format msgid "socket name '%s' is too long\n" -msgstr "nazwa gniazda ,,%s'' zbyt długa\n" +msgstr "nazwa gniazda „%s” zbyt długa\n" #, c-format msgid "trying to steal socket from running %s\n" @@ -536,31 +536,31 @@ msgstr "błąd podczas pobierania nonce z gniazda\n" #, c-format msgid "error binding socket to '%s': %s\n" -msgstr "błąd podczas przypisywania gniazda do ,,%s'': %s\n" +msgstr "błąd podczas przypisywania gniazda do „%s”: %s\n" #, c-format msgid "can't set permissions of '%s': %s\n" -msgstr "nie można ustawić praw dostępu do ,,%s'': %s\n" +msgstr "nie można ustawić praw dostępu do „%s”: %s\n" #, c-format msgid "listening on socket '%s'\n" -msgstr "nasłuchiwanie na gnieździe ,,%s''\n" +msgstr "nasłuchiwanie na gnieździe „%s”\n" #, c-format msgid "can't create directory '%s': %s\n" -msgstr "nie można utworzyć katalogu ,,%s'': %s\n" +msgstr "nie można utworzyć katalogu „%s”: %s\n" #, c-format msgid "directory '%s' created\n" -msgstr "katalog ,,%s'' utworzony\n" +msgstr "katalog „%s” utworzony\n" #, c-format msgid "stat() failed for '%s': %s\n" -msgstr "stat() nie powiodło się dla ,,%s'': %s\n" +msgstr "stat() nie powiodło się dla „%s”: %s\n" #, c-format msgid "can't use '%s' as home directory\n" -msgstr "nie można użyć ,,%s'' jako katalogu domowego\n" +msgstr "nie można użyć „%s” jako katalogu domowego\n" #, c-format msgid "error reading nonce on fd %d: %s\n" @@ -667,31 +667,31 @@ msgstr "błąd podczas pytania o hasło: %s\n" #, c-format msgid "error opening '%s': %s\n" -msgstr "błąd podczas otwierania ,,%s'': %s\n" +msgstr "błąd podczas otwierania „%s”: %s\n" #, c-format msgid "file '%s', line %d: %s\n" -msgstr "plik ,,%s'', linia %d: %s\n" +msgstr "plik „%s”, linia %d: %s\n" #, c-format msgid "statement \"%s\" ignored in '%s', line %d\n" -msgstr "instrukcja \"%s\" zignorowana w ,,%s'', w linii %d\n" +msgstr "instrukcja \"%s\" zignorowana w „%s”, w linii %d\n" #, c-format msgid "system trustlist '%s' not available\n" -msgstr "systemowa lista zaufania ,,%s'' niedostępna\n" +msgstr "systemowa lista zaufania „%s” niedostępna\n" #, c-format msgid "bad fingerprint in '%s', line %d\n" -msgstr "błędny odcisk w ,,%s'', w linii %d\n" +msgstr "błędny odcisk w „%s”, w linii %d\n" #, c-format msgid "invalid keyflag in '%s', line %d\n" -msgstr "nieprawidłowa flaga klucza w ,,%s'', w linii %d\n" +msgstr "nieprawidłowa flaga klucza w „%s”, w linii %d\n" #, c-format msgid "error reading '%s', line %d: %s\n" -msgstr "błąd odczytu ,,%s'', w linii %d: %s\n" +msgstr "błąd odczytu „%s”, w linii %d: %s\n" #, c-format msgid "error reading list of trusted root certificates\n" @@ -710,7 +710,7 @@ msgid "" "Do you ultimately trust%%0A \"%s\"%%0Ato correctly certify user " "certificates?" msgstr "" -"Czy absolutnie ufasz, że%%0A ,,%s''%%0Apoprawnie poświadcza certyfikaty " +"Czy absolutnie ufasz, że%%0A „%s”%%0Apoprawnie poświadcza certyfikaty " "użytkowników?" msgid "Yes" @@ -732,7 +732,7 @@ msgid "" "Please verify that the certificate identified as:%%0A \"%s\"%%0Ahas the " "fingerprint:%%0A %s" msgstr "" -"Proszę sprawdzić, że certyfikat zidentyfikowany jako:%%0a ,,%s''%%0Ama " +"Proszę sprawdzić, że certyfikat zidentyfikowany jako:%%0a „%s”%%0Ama " "odcisk:%%0A %s" #. TRANSLATORS: "Correct" is the label of a button and intended @@ -839,15 +839,15 @@ msgstr "oczekiwanie na zakończenie procesu %d nie powiodło się: %s\n" #, c-format msgid "error running '%s': probably not installed\n" -msgstr "błąd uruchamiania ,,%s'': prawdopodobnie nie zainstalowany\n" +msgstr "błąd uruchamiania „%s”: prawdopodobnie nie zainstalowany\n" #, c-format msgid "error running '%s': exit status %d\n" -msgstr "błąd uruchamiania ,,%s'': kod wyjścia %d\n" +msgstr "błąd uruchamiania „%s”: kod wyjścia %d\n" #, c-format msgid "error running '%s': terminated\n" -msgstr "błąd uruchamiania ,,%s'': zakończono\n" +msgstr "błąd uruchamiania „%s”: zakończono\n" #, c-format msgid "waiting for processes to terminate failed: %s\n" @@ -859,7 +859,7 @@ msgstr "błąd odczytu kodu zakończenia procesu %d: %s\n" #, c-format msgid "can't connect to '%s': %s\n" -msgstr "nie można się połączyć z ,,%s'': %s\n" +msgstr "nie można się połączyć z „%s”: %s\n" #, c-format msgid "problem setting the gpg-agent options\n" @@ -871,19 +871,19 @@ msgstr "nie można wyłączyć zrzutów pamięci: %s\n" #, c-format msgid "Warning: unsafe ownership on %s \"%s\"\n" -msgstr "Ostrzeżenie: niebezpieczne prawa własności do %s ,,%s''\n" +msgstr "Ostrzeżenie: niebezpieczne prawa własności do %s „%s”\n" #, c-format msgid "Warning: unsafe permissions on %s \"%s\"\n" -msgstr "Ostrzeżenie: niebezpieczne prawa dostępu do %s ,,%s''\n" +msgstr "Ostrzeżenie: niebezpieczne prawa dostępu do %s „%s”\n" #, c-format msgid "waiting for file '%s' to become accessible ...\n" -msgstr "oczekiwanie aż plik ,,%s'' stanie się dostępny...\n" +msgstr "oczekiwanie aż plik „%s” stanie się dostępny...\n" #, c-format msgid "renaming '%s' to '%s' failed: %s\n" -msgstr "zmiana nazwy ,,%s'' na ,,%s'' nie powiodła się: %s\n" +msgstr "zmiana nazwy „%s” na „%s” nie powiodła się: %s\n" #. TRANSLATORS: See doc/TRANSLATE about this string. msgid "yes" @@ -934,15 +934,15 @@ msgstr "błąd przydzielania wystarczającej ilości pamięci: %s\n" #, c-format msgid "%s:%u: obsolete option \"%s\" - it has no effect\n" -msgstr "%s:%u: przestarzała opcja ,,%s'' - nie ma efektu\n" +msgstr "%s:%u: przestarzała opcja „%s” - nie ma efektu\n" #, c-format msgid "WARNING: \"%s%s\" is an obsolete option - it has no effect\n" -msgstr "OSTRZEŻENIE: ,,%s%s'' jest przestarzałą opcją - nie ma efektu\n" +msgstr "OSTRZEŻENIE: „%s%s” jest przestarzałą opcją - nie ma efektu\n" #, c-format msgid "unknown debug flag '%s' ignored\n" -msgstr "nieznana flaga diagnostyczna ,,%s'' zignorowana\n" +msgstr "nieznana flaga diagnostyczna „%s” zignorowana\n" #, fuzzy, c-format #| msgid "waiting for the %s to come up ... (%ds)\n" @@ -977,7 +977,7 @@ msgstr "ustanowiono połączenie z procesem %s\n" #, fuzzy, c-format #| msgid "no running Dirmngr - starting '%s'\n" msgid "no running %s - starting '%s'\n" -msgstr "Dirmngr nie działa - uruchamianie ,,%s''\n" +msgstr "Dirmngr nie działa - uruchamianie „%s”\n" #, fuzzy, c-format #| msgid "connection to agent is in restricted mode\n" @@ -986,11 +986,11 @@ msgstr "połączenie z agentem jest w trybie ograniczonym\n" #, c-format msgid "error getting version from '%s': %s\n" -msgstr "błąd pobierania wersji z ,,%s'': %s\n" +msgstr "błąd pobierania wersji z „%s”: %s\n" #, c-format msgid "server '%s' is older than us (%s < %s)" -msgstr "serwer ,,%s'' jest starszy niż nasz (%s < %s)" +msgstr "serwer „%s” jest starszy niż nasz (%s < %s)" #, c-format msgid "WARNING: %s\n" @@ -1003,7 +1003,7 @@ msgstr "" #, c-format msgid "Note: Use the command \"%s\" to restart them.\n" -msgstr "Uwaga: do restartu ich należy użyć polecenia ,,%s''.\n" +msgstr "Uwaga: do restartu ich należy użyć polecenia „%s”.\n" #. TRANSLATORS: Copy the prefix between the vertical bars #. verbatim. It will not be printed. @@ -1140,7 +1140,7 @@ msgstr "Dirmngr sprawny" #, c-format msgid "No help available for '%s'." -msgstr "Brak pomocy dla ,,%s''." +msgstr "Brak pomocy dla „%s”." msgid "ignoring garbage line" msgstr "zignorowano błędną linię" @@ -1170,7 +1170,7 @@ msgstr "" #, c-format msgid "conversion from '%s' to '%s' not available\n" -msgstr "konwersja z ,,%s'' do ,,%s'' niedostępna\n" +msgstr "konwersja z „%s” do „%s” niedostępna\n" #, c-format msgid "iconv_open failed: %s\n" @@ -1178,15 +1178,15 @@ msgstr "iconv_open nie powiodło się: %s\n" #, c-format msgid "conversion from '%s' to '%s' failed: %s\n" -msgstr "konwersja z ,,%s'' do ,,%s'' nie powiodła się: %s\n" +msgstr "konwersja z „%s” do „%s” nie powiodła się: %s\n" #, c-format msgid "failed to create temporary file '%s': %s\n" -msgstr "nie udało się utworzyć pliku tymczasowego ,,%s'': %s\n" +msgstr "nie udało się utworzyć pliku tymczasowego „%s”: %s\n" #, c-format msgid "error writing to '%s': %s\n" -msgstr "błąd zapisu do ,,%s'': %s\n" +msgstr "błąd zapisu do „%s”: %s\n" #, c-format msgid "removing stale lockfile (created by %d)\n" @@ -1201,7 +1201,7 @@ msgstr "(zakleszczenie?) " #, c-format msgid "lock '%s' not made: %s\n" -msgstr "blokada ,,%s'' nie założona: %s\n" +msgstr "blokada „%s” nie założona: %s\n" #, c-format msgid "waiting for lock %s...\n" @@ -1213,11 +1213,11 @@ msgstr "biblioteka %s jest zbyt stara (wymagana %s, zainstalowana %s)\n" #, c-format msgid "error creating '%s': %s\n" -msgstr "błąd tworzenia ,,%s'': %s\n" +msgstr "błąd tworzenia „%s”: %s\n" #, c-format msgid "error closing '%s': %s\n" -msgstr "błąd zamykania ,,%s'': %s\n" +msgstr "błąd zamykania „%s”: %s\n" #, c-format msgid "armor: %s\n" @@ -1253,7 +1253,7 @@ msgstr "niepoprawne oznaczenie linii minusami: " #, c-format msgid "invalid radix64 character %02X skipped\n" -msgstr "niewłaściwy znak formatu radix64 ,,%02X'' został pominięty\n" +msgstr "niewłaściwy znak formatu radix64 „%02X” został pominięty\n" #, c-format msgid "premature eof (no CRC)\n" @@ -1304,15 +1304,15 @@ msgid "" "an '='\n" msgstr "" "nazwa adnotacji musi zawierać tylko znaki drukowalne lub spacje i kończyć " -"się znakiem ,,=''\n" +"się znakiem „=”\n" #, c-format msgid "a user notation name must contain the '@' character\n" -msgstr "nazwa adnotacji użytkownika musi zawierać znak ,,@''\n" +msgstr "nazwa adnotacji użytkownika musi zawierać znak „@”\n" #, c-format msgid "a notation name must not contain more than one '@' character\n" -msgstr "nazwa adnotacjinie może zawierać więcej niż jednego znaku ,,@''\n" +msgstr "nazwa adnotacjinie może zawierać więcej niż jednego znaku „@”\n" #, c-format msgid "a notation value must not use any control characters\n" @@ -1320,7 +1320,7 @@ msgstr "wartość adnotacji nie może zawierać żadnych znaków sterujących\n" #, c-format msgid "a notation name may not contain an '=' character\n" -msgstr "nazwa adnotacji nie może zawierać znaku ,,=''\n" +msgstr "nazwa adnotacji nie może zawierać znaku „=”\n" #, c-format msgid "a notation name must have only printable characters or spaces\n" @@ -1357,7 +1357,7 @@ msgstr "brak działającego dirmngr w tej sesji\n" #, fuzzy, c-format #| msgid "keyserver option \"%s\" may not be used in %s mode\n" msgid "keyserver option \"honor-keyserver-url\" may not be used in Tor mode\n" -msgstr "opcja serwera kluczy ,,%s'' nie może być używana w trybie %s\n" +msgstr "opcja serwera kluczy „%s” nie może być używana w trybie %s\n" msgid "WKD uses a cached result" msgstr "WKD używa zapamiętanego wyniku" @@ -1430,7 +1430,7 @@ msgid "Error: Only plain ASCII is currently allowed.\n" msgstr "Błąd: aktualnie dopuszczalne jest tylko czyste ASCII.\n" msgid "Error: The \"<\" character may not be used.\n" -msgstr "Błąd: znak ,,<'' nie może być użyty.\n" +msgstr "Błąd: znak „<” nie może być użyty.\n" msgid "Error: Double spaces are not allowed.\n" msgstr "Błąd: podwójne spacje nie są dopuszczalne.\n" @@ -1450,11 +1450,11 @@ msgstr "URL do odczytania klucza publicznego: " #, c-format msgid "error reading '%s': %s\n" -msgstr "błąd odczytu ,,%s'': %s\n" +msgstr "błąd odczytu „%s”: %s\n" #, c-format msgid "error writing '%s': %s\n" -msgstr "błąd zapisu ,,%s'': %s\n" +msgstr "błąd zapisu „%s”: %s\n" msgid "Login data (account name): " msgstr "Dane logowania (nazwa konta): " @@ -1590,7 +1590,7 @@ msgid "" "You should change them using the command --change-pin\n" msgstr "" "Fabryczne ustawienia PIN-ów to\n" -" PIN = ,,%s'' PIN administracyjny = ,,%s''\n" +" PIN = „%s” PIN administracyjny = „%s”\n" "Należy je zmienić przy użyciu polecenia --change-pin\n" msgid "Please select the type of key to generate:\n" @@ -1620,7 +1620,7 @@ msgid "Continue? (y/N) " msgstr "Kontynuować? (t/N) " msgid "Really do a factory reset? (enter \"yes\") " -msgstr "Naprawdę przywrócić stan fabryczny? (proszę wpisać ,,yes'') " +msgstr "Naprawdę przywrócić stan fabryczny? (proszę wpisać „yes”) " #, c-format msgid "error for setup KDF: %s\n" @@ -1712,7 +1712,7 @@ msgstr "Polecenia dla administratora nie są dozwolone\n" #, c-format msgid "Invalid command (try \"help\")\n" -msgstr "Niepoprawne polecenie (spróbuj ,,help'')\n" +msgstr "Niepoprawne polecenie (spróbuj „help”)\n" #, c-format msgid "--output doesn't work for this command\n" @@ -1720,11 +1720,11 @@ msgstr "opcja --output nie działa z tym poleceniem\n" #, c-format msgid "can't open '%s'\n" -msgstr "nie można otworzyć ,,%s''\n" +msgstr "nie można otworzyć „%s”\n" #, c-format msgid "key \"%s\" not found: %s\n" -msgstr "klucz ,,%s'' nie został odnaleziony: %s\n" +msgstr "klucz „%s” nie został odnaleziony: %s\n" #, c-format msgid "error reading keyblock: %s\n" @@ -1732,11 +1732,11 @@ msgstr "błąd odczytu bloku kluczy: %s\n" #, c-format msgid "key \"%s\" not found\n" -msgstr "klucz ,,%s'' nie został odnaleziony\n" +msgstr "klucz „%s” nie został odnaleziony\n" #, c-format msgid "can't do this in batch mode without \"--yes\"\n" -msgstr "bez opcji ,,--yes'' nie działa w trybie wsadowym\n" +msgstr "bez opcji „--yes” nie działa w trybie wsadowym\n" #, c-format msgid "(unless you specify the key by fingerprint)\n" @@ -1786,7 +1786,7 @@ msgstr "informacja o zaufaniu dla właściciela klucza została wymazana\n" #, c-format msgid "there is a secret key for public key \"%s\"!\n" -msgstr "dla klucza publicznego ,,%s'' istnieje klucz prywatny!\n" +msgstr "dla klucza publicznego „%s” istnieje klucz prywatny!\n" #, c-format msgid "use option \"--delete-secret-keys\" to delete it first.\n" @@ -1802,7 +1802,7 @@ msgstr "" #, fuzzy, c-format #| msgid "cipher algorithm '%s' may not be used in %s mode\n" msgid "cipher algorithm '%s' may not be used for encryption\n" -msgstr "szyfr ,,%s'' nie może być używany w trybie %s\n" +msgstr "szyfr „%s” nie może być używany w trybie %s\n" #, c-format msgid "(use option \"%s\" to override)\n" @@ -1810,7 +1810,7 @@ msgstr "" #, c-format msgid "cipher algorithm '%s' may not be used in %s mode\n" -msgstr "szyfr ,,%s'' nie może być używany w trybie %s\n" +msgstr "szyfr „%s” nie może być używany w trybie %s\n" #, c-format msgid "WARNING: key %s is not suitable for encryption in %s mode\n" @@ -1833,19 +1833,19 @@ msgstr "szyfrem %s\n" #, c-format msgid "'%s' already compressed\n" -msgstr ",,%s'' już jest skompresowany\n" +msgstr "„%s” już jest skompresowany\n" #, c-format msgid "WARNING: '%s' is an empty file\n" -msgstr "OSTRZEŻENIE: plik ,,%s'' jest pusty\n" +msgstr "OSTRZEŻENIE: plik „%s” jest pusty\n" #, c-format msgid "digest algorithm '%s' may not be used in %s mode\n" -msgstr "algorytm skrótu ,,%s'' nie może być używany w trybie %s\n" +msgstr "algorytm skrótu „%s” nie może być używany w trybie %s\n" #, c-format msgid "reading from '%s'\n" -msgstr "odczyt z ,,%s''\n" +msgstr "odczyt z „%s”\n" #, c-format msgid "" @@ -1858,11 +1858,11 @@ msgstr "" #, fuzzy, c-format #| msgid "%s/%s encrypted for: \"%s\"\n" msgid "%s/%s.%s encrypted for: \"%s\"\n" -msgstr "%s/%s zaszyfrowany dla: ,,%s''\n" +msgstr "%s/%s zaszyfrowany dla: „%s”\n" #, c-format msgid "option '%s' may not be used in %s mode\n" -msgstr "opcja ,,%s'' nie może być używana w trybie %s\n" +msgstr "opcja „%s” nie może być używana w trybie %s\n" #, fuzzy, c-format #| msgid "%s encrypted data\n" @@ -1890,7 +1890,7 @@ msgid "export attribute user IDs (generally photo IDs)" msgstr "eksport atrybutów ID użytkownika (ogólnie ID zdjęć)" msgid "export revocation keys marked as \"sensitive\"" -msgstr "eksport kluczy unieważniających oznaczonych jako ,,poufne''" +msgstr "eksport kluczy unieważniających oznaczonych jako „poufne”" msgid "remove unusable parts from key during export" msgstr "usunięcie bezużytecznych części z klucza przy eksporcie" @@ -1916,7 +1916,7 @@ msgstr " - pominięty" #, c-format msgid "writing to '%s'\n" -msgstr "zapis do ,,%s''\n" +msgstr "zapis do „%s”\n" #, c-format msgid "key %s: key material on-card - skipped\n" @@ -1939,11 +1939,11 @@ msgstr "[brak identyfikatora użytkownika]" #, c-format msgid "automatically retrieved '%s' via %s\n" -msgstr "automatycznie pobrano ,,%s'' poprzez %s\n" +msgstr "automatycznie pobrano „%s” poprzez %s\n" #, c-format msgid "error retrieving '%s' via %s: %s\n" -msgstr "błąd pobierania ,,%s'' poprzez %s: %s\n" +msgstr "błąd pobierania „%s” poprzez %s: %s\n" msgid "No fingerprint" msgstr "Brak odcisku" @@ -1954,23 +1954,23 @@ msgstr "szukanie świeżej kopii wygasłego klucza poprzez %s\n" #, c-format msgid "secret key \"%s\" not found: %s\n" -msgstr "klucz prywatny ,,%s'' nie został odnaleziony: %s\n" +msgstr "klucz prywatny „%s” nie został odnaleziony: %s\n" #, c-format msgid "(check argument of option '%s')\n" -msgstr "(sprawdzić argument opcji ,,%s'')\n" +msgstr "(sprawdzić argument opcji „%s”)\n" #, c-format msgid "Warning: not using '%s' as default key: %s\n" -msgstr "Ostrzeżenie: ,,%s'' nie jest użyty jako domyślny klucz: %s\n" +msgstr "Ostrzeżenie: „%s” nie jest użyty jako domyślny klucz: %s\n" #, c-format msgid "using \"%s\" as default secret key for signing\n" -msgstr "użycie ,,%s'' jako domyślnego klucza tajnego do podpisywania\n" +msgstr "użycie „%s” jako domyślnego klucza tajnego do podpisywania\n" #, c-format msgid "all values passed to '%s' ignored\n" -msgstr "wszystkie wartości przekazane do ,,%s'' zostały zignorowane\n" +msgstr "wszystkie wartości przekazane do „%s” zostały zignorowane\n" #, c-format msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n" @@ -1984,7 +1984,7 @@ msgstr "używany jest podklucz %s zamiast klucza głównego %s\n" #, c-format msgid "valid values for option '%s':\n" -msgstr "poprawne argimenty dla opcji ,,%s'':\n" +msgstr "poprawne argimenty dla opcji „%s”:\n" msgid "make a signature" msgstr "złożenie podpisu" @@ -2261,76 +2261,76 @@ msgstr "sprzeczne polecenia\n" #, c-format msgid "no = sign found in group definition '%s'\n" -msgstr "w definicji grupy ,,%s'' brak znaku ,,=''\n" +msgstr "w definicji grupy „%s” brak znaku „=”\n" #, c-format msgid "WARNING: unsafe ownership on homedir '%s'\n" msgstr "" -"OSTRZEŻENIE: niebezpieczne prawa własności do katalogu domowego ,,%s''\n" +"OSTRZEŻENIE: niebezpieczne prawa własności do katalogu domowego „%s”\n" #, c-format msgid "WARNING: unsafe ownership on configuration file '%s'\n" msgstr "" -"OSTRZEŻENIE: niebezpieczne prawa własności do pliku konfiguracyjnego ,,%s''\n" +"OSTRZEŻENIE: niebezpieczne prawa własności do pliku konfiguracyjnego „%s”\n" #, c-format msgid "WARNING: unsafe ownership on extension '%s'\n" -msgstr "OSTRZEŻENIE: niebezpieczne prawa własności do rozszerzenia ,,%s''\n" +msgstr "OSTRZEŻENIE: niebezpieczne prawa własności do rozszerzenia „%s”\n" #, c-format msgid "WARNING: unsafe permissions on homedir '%s'\n" -msgstr "OSTRZEŻENIE: niebezpieczne prawa dostępu do katalogu domowego ,,%s''\n" +msgstr "OSTRZEŻENIE: niebezpieczne prawa dostępu do katalogu domowego „%s”\n" #, c-format msgid "WARNING: unsafe permissions on configuration file '%s'\n" msgstr "" -"OSTRZEŻENIE: niebezpieczne prawa dostępu do pliku konfiguracyjnego ,,%s''\n" +"OSTRZEŻENIE: niebezpieczne prawa dostępu do pliku konfiguracyjnego „%s”\n" #, c-format msgid "WARNING: unsafe permissions on extension '%s'\n" -msgstr "OSTRZEŻENIE: niebezpieczne prawa dostępu do rozszerzenia ,,%s''\n" +msgstr "OSTRZEŻENIE: niebezpieczne prawa dostępu do rozszerzenia „%s”\n" #, c-format msgid "WARNING: unsafe enclosing directory ownership on homedir '%s'\n" msgstr "" "OSTRZEŻENIE: niebezpieczne prawa własności do katalogu zawierającego katalog " -"domowy ,,%s''\n" +"domowy „%s”\n" #, c-format msgid "" "WARNING: unsafe enclosing directory ownership on configuration file '%s'\n" msgstr "" "OSTRZEŻENIE: niebezpieczne prawa własności do katalogu zawierającego plik " -"konfiguracyjny ,,%s''\n" +"konfiguracyjny „%s”\n" #, c-format msgid "WARNING: unsafe enclosing directory ownership on extension '%s'\n" msgstr "" "OSTRZEŻENIE: niebezpieczne prawa własności do katalogu zawierającego " -"rozszerzenie ,,%s''\n" +"rozszerzenie „%s”\n" #, c-format msgid "WARNING: unsafe enclosing directory permissions on homedir '%s'\n" msgstr "" "OSTRZEŻENIE: niebezpieczne prawa dostępu do katalogu zawierającego katalog " -"domowy ,,%s''\n" +"domowy „%s”\n" #, c-format msgid "" "WARNING: unsafe enclosing directory permissions on configuration file '%s'\n" msgstr "" "OSTRZEŻENIE: niebezpieczne prawa dostępu do katalogu zawierającego plik " -"konfiguracyjny ,,%s''\n" +"konfiguracyjny „%s”\n" #, c-format msgid "WARNING: unsafe enclosing directory permissions on extension '%s'\n" msgstr "" "OSTRZEŻENIE: niebezpieczne prawa dostępu do katalogu zawierającego " -"rozszerzenie ,,%s''\n" +"rozszerzenie „%s”\n" #, c-format msgid "unknown configuration item '%s'\n" -msgstr "nieznana opcja konfiguracyjna ,,%s''\n" +msgstr "nieznana opcja konfiguracyjna „%s”\n" msgid "display photo IDs during key listings" msgstr "wyświetlenie ID zdjęć przy wypisywaniu kluczy" @@ -2382,11 +2382,11 @@ msgstr "ustawienia (zaawansowane)" #, c-format msgid "unknown TOFU policy '%s'\n" -msgstr "nieznana polityka TOFU ,,%s''\n" +msgstr "nieznana polityka TOFU „%s”\n" #, c-format msgid "(use \"help\" to list choices)\n" -msgstr "(,,help'' wyświetli listę wyborów)\n" +msgstr "(„help” wyświetli listę wyborów)\n" #, c-format msgid "This command is not allowed while in %s mode.\n" @@ -2398,23 +2398,23 @@ msgstr "Uwaga: %s nie jest do normalnego użytku!\n" #, c-format msgid "'%s' is not a valid signature expiration\n" -msgstr ",,%s'' nie jest poprawnym czasem wygaśnięcia podpisu\n" +msgstr "„%s” nie jest poprawnym czasem wygaśnięcia podpisu\n" #, c-format msgid "\"%s\" is not a proper mail address\n" -msgstr ",,%s'' nie jest niepoprawnym adresem e-mail\n" +msgstr "„%s” nie jest niepoprawnym adresem e-mail\n" #, c-format msgid "invalid pinentry mode '%s'\n" -msgstr "błędny tryb pinentry ,,%s''\n" +msgstr "błędny tryb pinentry „%s”\n" #, c-format msgid "invalid request origin '%s'\n" -msgstr "błędne źródło żądania ,,%s''\n" +msgstr "błędne źródło żądania „%s”\n" #, c-format msgid "'%s' is not a valid character set\n" -msgstr ",,%s'' nie jest poprawną nazwą zestawu znaków\n" +msgstr "„%s” nie jest poprawną nazwą zestawu znaków\n" #, c-format msgid "could not parse keyserver URL\n" @@ -2508,7 +2508,7 @@ msgstr "Niepoprawna lista auto-key-locate\n" #, c-format msgid "invalid argument for option \"%.50s\"\n" -msgstr "błędny argument dla opcji ,,%.50s''\n" +msgstr "błędny argument dla opcji „%.50s”\n" #, c-format msgid "WARNING: program may create a core file!\n" @@ -2603,7 +2603,7 @@ msgstr "%s jeszcze nie działa z %s!\n" #, c-format msgid "compression algorithm '%s' may not be used in %s mode\n" -msgstr "algorytm kompresji ,,%s'' nie może być używany w trybie %s\n" +msgstr "algorytm kompresji „%s” nie może być używany w trybie %s\n" #, c-format msgid "failed to initialize the TrustDB: %s\n" @@ -2615,7 +2615,7 @@ msgstr "OSTRZEŻENIE: podano adresatów (-r) w działaniu które ich nie dotyczy #, c-format msgid "symmetric encryption of '%s' failed: %s\n" -msgstr "szyfrowanie symetryczne ,,%s'' nie powiodło się: %s\n" +msgstr "szyfrowanie symetryczne „%s” nie powiodło się: %s\n" #, c-format msgid "you cannot use --symmetric --encrypt with --s2k-mode 0\n" @@ -2667,16 +2667,16 @@ msgstr "opakowywanie ASCII nie powiodło się: %s\n" #, c-format msgid "invalid hash algorithm '%s'\n" -msgstr "niewłaściwy algorytm skrótu ,,%s''\n" +msgstr "niewłaściwy algorytm skrótu „%s”\n" #, c-format msgid "error parsing key specification '%s': %s\n" -msgstr "błąd analizy specyfikacji klucza ,,%s'': %s\n" +msgstr "błąd analizy specyfikacji klucza „%s”: %s\n" #, c-format msgid "'%s' does not appear to be a valid key ID, fingerprint or keygrip\n" msgstr "" -",,%s'' nie wygląda na prawidłowy identyfikator, odcisk ani uchwyt klucza\n" +"„%s” nie wygląda na prawidłowy identyfikator, odcisk ani uchwyt klucza\n" #, c-format msgid "WARNING: no command supplied. Trying to guess what you mean ...\n" @@ -2725,7 +2725,7 @@ msgstr "Pomoc niedostępna" #, c-format msgid "No help available for '%s'" -msgstr "Brak pomocy o ,,%s''" +msgstr "Brak pomocy o „%s”" msgid "import signatures that are marked as local-only" msgstr "import podpisów oznaczonych jako tylko lokalne" @@ -2855,20 +2855,20 @@ msgstr "" #, c-format msgid " \"%s\": preference for cipher algorithm %s\n" -msgstr " ,,%s'': preferowany szyfr %s\n" +msgstr " „%s”: preferowany szyfr %s\n" #, fuzzy, c-format #| msgid " \"%s\": preference for cipher algorithm %s\n" msgid " \"%s\": preference for AEAD algorithm %s\n" -msgstr " ,,%s'': preferowany szyfr %s\n" +msgstr " „%s”: preferowany szyfr %s\n" #, c-format msgid " \"%s\": preference for digest algorithm %s\n" -msgstr " ,,%s'': preferowany algorytm skrótu %s\n" +msgstr " „%s”: preferowany algorytm skrótu %s\n" #, c-format msgid " \"%s\": preference for compression algorithm %s\n" -msgstr " ,,%s'': preferowany algorytm kompresji %s\n" +msgstr " „%s”: preferowany algorytm kompresji %s\n" #, c-format msgid "it is strongly suggested that you update your preferences and\n" @@ -2900,7 +2900,7 @@ msgstr "klucz %s: podklucz uszkodzony przez serwer został naprawiony\n" #, c-format msgid "key %s: accepted non self-signed user ID \"%s\"\n" -msgstr "klucz %s: przyjęto identyfikator nie podpisany nim samym ,,%s''\n" +msgstr "klucz %s: przyjęto identyfikator nie podpisany nim samym „%s”\n" #, c-format msgid "key %s: no valid user IDs\n" @@ -2924,11 +2924,11 @@ msgstr "brak zapisywalnego zbioru kluczy: %s\n" #, c-format msgid "error writing keyring '%s': %s\n" -msgstr "błąd zapisu zbioru kluczy ,,%s'': %s\n" +msgstr "błąd zapisu zbioru kluczy „%s”: %s\n" #, c-format msgid "key %s: public key \"%s\" imported\n" -msgstr "klucz %s: klucz publiczny ,,%s'' wczytano do zbioru\n" +msgstr "klucz %s: klucz publiczny „%s” wczytano do zbioru\n" #, c-format msgid "key %s: doesn't match our copy\n" @@ -2936,47 +2936,47 @@ msgstr "klucz %s: nie zgadza się z lokalną kopią\n" #, c-format msgid "key %s: \"%s\" 1 new user ID\n" -msgstr "klucz %s: ,,%s'' 1 nowy identyfikator użytkownika\n" +msgstr "klucz %s: „%s” 1 nowy identyfikator użytkownika\n" #, c-format msgid "key %s: \"%s\" %d new user IDs\n" -msgstr "klucz %s: ,,%s'' %d nowych identyfikatorów użytkownika\n" +msgstr "klucz %s: „%s” %d nowych identyfikatorów użytkownika\n" #, c-format msgid "key %s: \"%s\" 1 new signature\n" -msgstr "klucz %s: ,,%s'' 1 nowy podpis\n" +msgstr "klucz %s: „%s” 1 nowy podpis\n" #, c-format msgid "key %s: \"%s\" %d new signatures\n" -msgstr "klucz %s: ,,%s'' %d nowych podpisów\n" +msgstr "klucz %s: „%s” %d nowych podpisów\n" #, c-format msgid "key %s: \"%s\" 1 new subkey\n" -msgstr "klucz %s: ,,%s'' 1 nowy podklucz\n" +msgstr "klucz %s: „%s” 1 nowy podklucz\n" #, c-format msgid "key %s: \"%s\" %d new subkeys\n" -msgstr "klucz %s: ,,%s'' %d nowych podkluczy\n" +msgstr "klucz %s: „%s” %d nowych podkluczy\n" #, c-format msgid "key %s: \"%s\" %d signature cleaned\n" -msgstr "klucz %s: ,,%s'' %d podpis wyczyszczony\n" +msgstr "klucz %s: „%s” %d podpis wyczyszczony\n" #, c-format msgid "key %s: \"%s\" %d signatures cleaned\n" -msgstr "klucz %s: ,,%s'' %d podpisów wyczyszczonych\n" +msgstr "klucz %s: „%s” %d podpisów wyczyszczonych\n" #, c-format msgid "key %s: \"%s\" %d user ID cleaned\n" -msgstr "klucz %s: ,,%s'' %d identyfikator użytkownika wyczyszczony\n" +msgstr "klucz %s: „%s” %d identyfikator użytkownika wyczyszczony\n" #, c-format msgid "key %s: \"%s\" %d user IDs cleaned\n" -msgstr "klucz %s: ,,%s'' %d identyfikatorów użytkownika wyczyszczonych\n" +msgstr "klucz %s: „%s” %d identyfikatorów użytkownika wyczyszczonych\n" #, c-format msgid "key %s: \"%s\" not changed\n" -msgstr "klucz %s: ,,%s'' bez zmian\n" +msgstr "klucz %s: „%s” bez zmian\n" #, c-format msgid "key %s: secret key imported\n" @@ -3005,7 +3005,7 @@ msgstr "" #, c-format msgid "To migrate '%s', with each smartcard, run: %s\n" msgstr "" -"Aby zmigrować ,,%s'', dla każdej karty procesorowej należy uruchomić: %s\n" +"Aby zmigrować „%s”, dla każdej karty procesorowej należy uruchomić: %s\n" #, c-format msgid "secret key %s: %s\n" @@ -3062,7 +3062,7 @@ msgstr "klucz %s: niepoprawny certyfikat unieważnienia: %s - odrzucony\n" #, c-format msgid "key %s: \"%s\" revocation certificate imported\n" -msgstr "klucz %s: ,,%s'' certyfikat unieważnienia został już wczytany\n" +msgstr "klucz %s: „%s” certyfikat unieważnienia został już wczytany\n" #, c-format msgid "key %s: no user ID for signature\n" @@ -3070,11 +3070,11 @@ msgstr "klucz %s: brak identyfikatora użytkownika do podpisu\n" #, c-format msgid "key %s: unsupported public key algorithm on user ID \"%s\"\n" -msgstr "klucz %s: algorytm asymetryczny dla id ,,%s'' nie jest obsługiwany\n" +msgstr "klucz %s: algorytm asymetryczny dla id „%s” nie jest obsługiwany\n" #, c-format msgid "key %s: invalid self-signature on user ID \"%s\"\n" -msgstr "klucz %s: niepoprawny podpis na identyfikatorze ,,%s''\n" +msgstr "klucz %s: niepoprawny podpis na identyfikatorze „%s”\n" #, c-format msgid "key %s: unsupported public key algorithm\n" @@ -3110,7 +3110,7 @@ msgstr "klucz %s: usunięto wielokrotne unieważnienie podklucza\n" #, c-format msgid "key %s: skipped user ID \"%s\"\n" -msgstr "klucz %s: pominięto identyfikator użytkownika ,,%s''\n" +msgstr "klucz %s: pominięto identyfikator użytkownika „%s”\n" #, c-format msgid "key %s: skipped subkey\n" @@ -3161,7 +3161,7 @@ msgstr "" #, c-format msgid "key %s: \"%s\" revocation certificate added\n" -msgstr "klucz %s: ,,%s'' dodany certyfikat unieważnienia\n" +msgstr "klucz %s: „%s” dodany certyfikat unieważnienia\n" #, c-format msgid "key %s: direct key signature added\n" @@ -3228,23 +3228,23 @@ msgstr "" #, c-format msgid "error creating keybox '%s': %s\n" -msgstr "błąd tworzenia keyboksa ,,%s'': %s\n" +msgstr "błąd tworzenia keyboksa „%s”: %s\n" #, c-format msgid "error creating keyring '%s': %s\n" -msgstr "błąd tworzenia zbioru kluczy ,,%s'': %s\n" +msgstr "błąd tworzenia zbioru kluczy „%s”: %s\n" #, c-format msgid "keybox '%s' created\n" -msgstr "keybox ,,%s'' utworzony\n" +msgstr "keybox „%s” utworzony\n" #, c-format msgid "keyring '%s' created\n" -msgstr "zbiór kluczy ,,%s'' został utworzony\n" +msgstr "zbiór kluczy „%s” został utworzony\n" #, c-format msgid "keyblock resource '%s': %s\n" -msgstr "zasób bloku klucza ,,%s'': %s\n" +msgstr "zasób bloku klucza „%s”: %s\n" #, c-format msgid "failed to rebuild keyring cache: %s\n" @@ -3289,12 +3289,12 @@ msgstr "Proszę wpisać domenę ograniczającą ten podpis lub Enter dla żadnej #, c-format msgid "Skipping user ID \"%s\", which is not a text ID.\n" msgstr "" -"Pominięto identyfikator użytkownika ,,%s'' nie będący identyfikatorem " +"Pominięto identyfikator użytkownika „%s” nie będący identyfikatorem " "tekstowym.\n" #, c-format msgid "User ID \"%s\" is revoked." -msgstr "Identyfikator użytkownika ,,%s'' został unieważniony." +msgstr "Identyfikator użytkownika „%s” został unieważniony." msgid "Are you sure you still want to sign it? (y/N) " msgstr "Czy na pewno chcesz podpisać? (t/N) " @@ -3304,15 +3304,15 @@ msgstr " Nie da się złożyć podpisu.\n" #, c-format msgid "User ID \"%s\" is expired." -msgstr "Identyfikator użytkownika ,,%s'' przekroczył swój termin ważności." +msgstr "Identyfikator użytkownika „%s” przekroczył swój termin ważności." #, c-format msgid "User ID \"%s\" is not self-signed." -msgstr "Identyfikator ,,%s'' nie jest podpisany swoim kluczem." +msgstr "Identyfikator „%s” nie jest podpisany swoim kluczem." #, c-format msgid "User ID \"%s\" is signable. " -msgstr "Identyfikator użytkownika ,,%s'' jest podpisywalny. " +msgstr "Identyfikator użytkownika „%s” jest podpisywalny. " msgid "Sign it? (y/N) " msgstr "Podpisać go? (t/N) " @@ -3322,7 +3322,7 @@ msgid "" "The self-signature on \"%s\"\n" "is a PGP 2.x-style signature.\n" msgstr "" -"Podpis klucza nim samym na ,,%s''\n" +"Podpis klucza nim samym na „%s”\n" "jest podpisem złożonym przez PGP 2.x.\n" msgid "Do you want to promote it to an OpenPGP self-signature? (y/N) " @@ -3333,7 +3333,7 @@ msgid "" "Your current signature on \"%s\"\n" "has expired.\n" msgstr "" -"Twój podpis na ,,%s''\n" +"Twój podpis na „%s”\n" "przekroczył datę ważności.\n" msgid "Do you want to issue a new signature to replace the expired one? (y/N) " @@ -3344,7 +3344,7 @@ msgid "" "Your current signature on \"%s\"\n" "is a local signature.\n" msgstr "" -"Twój podpis na ,,%s''\n" +"Twój podpis na „%s”\n" "jest podpisem prywatnym (lokalnym).\n" msgid "Do you want to promote it to a full exportable signature? (y/N) " @@ -3353,11 +3353,11 @@ msgstr "" #, c-format msgid "\"%s\" was already locally signed by key %s\n" -msgstr ",,%s'' jest już lokalnie podpisany kluczem %s\n" +msgstr "„%s” jest już lokalnie podpisany kluczem %s\n" #, c-format msgid "\"%s\" was already signed by key %s\n" -msgstr ",,%s'' jest już podpisany kluczem %s\n" +msgstr "„%s” jest już podpisany kluczem %s\n" msgid "Do you want to sign it again anyway? (y/N) " msgstr "Czy na pewno chcesz to podpisać jeszcze raz? (t/N) " @@ -3383,7 +3383,7 @@ msgid "" "to the person named above? If you don't know what to answer, enter \"0\".\n" msgstr "" "Jak dokładnie została przez Ciebie sprawdzona tożsamość tej osoby?\n" -"Jeśli nie wiesz co odpowiedzieć, podaj ,,0''.\n" +"Jeśli nie wiesz co odpowiedzieć, podaj „0”.\n" #, c-format msgid " (0) I will not answer.%s\n" @@ -3402,7 +3402,7 @@ msgid " (3) I have done very careful checking.%s\n" msgstr " (3) Bardzo dokładnie.%s\n" msgid "Your selection? (enter '?' for more information): " -msgstr "Wybór (,,?'' podaje więcej informacji): " +msgstr "Wybór („?” podaje więcej informacji): " #, c-format msgid "" @@ -3410,7 +3410,7 @@ msgid "" "key \"%s\" (%s)\n" msgstr "" "Czy jesteś naprawdę pewien, że chcesz podpisać ten klucz\n" -"swoim kluczem ,,%s'' (%s)\n" +"swoim kluczem „%s” (%s)\n" msgid "This will be a self-signature.\n" msgstr "To będzie podpis klucza nim samym.\n" @@ -3610,8 +3610,8 @@ msgid "" " a 't' for trust signatures (tsign), an 'nr' for non-revocable signatures\n" " (nrsign), or any combination thereof (ltsign, tnrsign, etc.).\n" msgstr "" -"* Polecenie ,,sign'' można poprzedzić ,,l'' dla lokalnych sygnatur (lsign),\n" -" ,,t'' dla sygnatur zaufania (tsign) albo ,,nr'' dla sygnatur nie\n" +"* Polecenie „sign” można poprzedzić „l” dla lokalnych sygnatur (lsign),\n" +" „t” dla sygnatur zaufania (tsign) albo „nr” dla sygnatur nie\n" " podlegających unieważnieniu (nrsign), albo dowolną ich kombinacją " "(ltsign,\n" " tnrsign itd.).\n" @@ -3631,14 +3631,14 @@ msgstr "Podpowiedź: wybierz identyfikatory użytkownika do podpisania.\n" #, c-format msgid "Unknown signature type '%s'\n" -msgstr "Nieznany rodzaj podpisu ,,%s''\n" +msgstr "Nieznany rodzaj podpisu „%s”\n" msgid "You must select at least one user ID.\n" msgstr "Musisz wybrać co najmniej jeden identyfikator użytkownika.\n" #, c-format msgid "(Use the '%s' command.)\n" -msgstr "(Należy użyć polecenia ,,%s''.)\n" +msgstr "(Należy użyć polecenia „%s”.)\n" msgid "You can't delete the last user ID!\n" msgstr "Nie możesz usunąć ostatniego identyfikatora użytkownika!\n" @@ -3663,11 +3663,11 @@ msgstr "Polecenie oczekuje argumentu będącego nazwą pliku\n" #, c-format msgid "Can't open '%s': %s\n" -msgstr "Nie można otworzyć ,,%s'': %s\n" +msgstr "Nie można otworzyć „%s”: %s\n" #, c-format msgid "Error reading backup key from '%s': %s\n" -msgstr "Błąd podczas odczytu klucza zapasowego z ,,%s'': %s\n" +msgstr "Błąd podczas odczytu klucza zapasowego z „%s”: %s\n" msgid "You must select at least one key.\n" msgstr "Musisz wybrać co najmniej jeden klucz.\n" @@ -3738,15 +3738,15 @@ msgstr "ustawienie głównego identyfikatora użytkownika nie powiodło się: %s #, c-format msgid "\"%s\" is not a fingerprint\n" -msgstr ",,%s'' nie jest odciskiem\n" +msgstr "„%s” nie jest odciskiem\n" #, c-format msgid "\"%s\" is not the primary fingerprint\n" -msgstr ",,%s'' nie jest głównym odciskiem\n" +msgstr "„%s” nie jest głównym odciskiem\n" #, c-format msgid "Invalid user ID '%s': %s\n" -msgstr "Błędny identyfikator użytkownika ,,%s'': %s\n" +msgstr "Błędny identyfikator użytkownika „%s”: %s\n" msgid "No matching user IDs." msgstr "Brak pasującego identyfikatora użytkownika." @@ -3764,15 +3764,15 @@ msgstr "unieważnienie podpisu klucza nie powiodło się: %s\n" #, c-format msgid "'%s' is not a valid expiration time\n" -msgstr ",,%s'' nie jest poprawnym czasem wygaśnięcia\n" +msgstr "„%s” nie jest poprawnym czasem wygaśnięcia\n" #, c-format msgid "\"%s\" is not a proper fingerprint\n" -msgstr ",,%s'' nie jest właściwym odciskiem\n" +msgstr "„%s” nie jest właściwym odciskiem\n" #, c-format msgid "subkey \"%s\" not found\n" -msgstr "podklucz ,,%s'' nie został odnaleziony\n" +msgstr "podklucz „%s” nie został odnaleziony\n" msgid "Preferred keyserver: " msgstr "Preferowany serwer kluczy: " @@ -3909,22 +3909,22 @@ msgstr "niepoprawny" #, c-format msgid "User ID \"%s\" compacted: %s\n" -msgstr "Identyfikator użytkownika ,,%s'' upakowany: %s\n" +msgstr "Identyfikator użytkownika „%s” upakowany: %s\n" #, c-format msgid "User ID \"%s\": %d signature removed\n" msgid_plural "User ID \"%s\": %d signatures removed\n" -msgstr[0] "Identyfikator użytkownika ,,%s'': %d podpis usunięty\n" -msgstr[1] "Identyfikator użytkownika ,,%s'': %d podpisy usunięte\n" -msgstr[2] "Identyfikator użytkownika ,,%s'': %d podpisów usuniętych\n" +msgstr[0] "Identyfikator użytkownika „%s”: %d podpis usunięty\n" +msgstr[1] "Identyfikator użytkownika „%s”: %d podpisy usunięte\n" +msgstr[2] "Identyfikator użytkownika „%s”: %d podpisów usuniętych\n" #, c-format msgid "User ID \"%s\": already minimized\n" -msgstr "Identyfikator użytkownika ,,%s'': już zmniejszony.\n" +msgstr "Identyfikator użytkownika „%s”: już zmniejszony.\n" #, c-format msgid "User ID \"%s\": already clean\n" -msgstr "Identyfikator użytkownika ,,%s'': już czysty.\n" +msgstr "Identyfikator użytkownika „%s”: już czysty.\n" msgid "" "WARNING: This is a PGP 2.x-style key. Adding a designated revoker may " @@ -4009,7 +4009,7 @@ msgstr "Proszę wybrać dokładnie jeden identyfikator użytkownika.\n" #, c-format msgid "skipping v3 self-signature on user ID \"%s\"\n" -msgstr "podpis w wersji 3 na identyfikatorze ,,%s'' zostaje pominięty\n" +msgstr "podpis w wersji 3 na identyfikatorze „%s” zostaje pominięty\n" msgid "Enter your preferred keyserver URL: " msgstr "Podaj preferowany URL serwera kluczy: " @@ -4036,7 +4036,7 @@ msgstr "Brak identyfikatora użytkownika o skrócie %s\n" #, c-format msgid "No subkey with key ID '%s'.\n" -msgstr "Brak podklucza o identyfikatorze ,,%s''.\n" +msgstr "Brak podklucza o identyfikatorze „%s”.\n" #, c-format msgid "No subkey with index %d\n" @@ -4044,7 +4044,7 @@ msgstr "Brak podklucza o numerze %d.\n" #, c-format msgid "user ID: \"%s\"\n" -msgstr "identyfikator użytkownika: ,,%s''\n" +msgstr "identyfikator użytkownika: „%s”\n" #, c-format msgid "signed by your key %s on %s%s%s\n" @@ -4091,7 +4091,7 @@ msgstr "" #, c-format msgid "user ID \"%s\" is already revoked\n" -msgstr "identyfikator użytkownika ,,%s'' został już unieważniony\n" +msgstr "identyfikator użytkownika „%s” został już unieważniony\n" #, c-format msgid "WARNING: a user ID signature is dated %d seconds in the future\n" @@ -4120,11 +4120,11 @@ msgstr "" #, c-format msgid "invalid value for option '%s'\n" -msgstr "błędna wartość dla opcji ,,%s''\n" +msgstr "błędna wartość dla opcji „%s”\n" #, c-format msgid "preference '%s' duplicated\n" -msgstr "ustawienie ,,%s'' powtarza się\n" +msgstr "ustawienie „%s” powtarza się\n" #, c-format msgid "too many cipher preferences\n" @@ -4145,7 +4145,7 @@ msgstr "zbyt wiele ustawień szyfru\n" #, c-format msgid "invalid item '%s' in preference string\n" -msgstr "niewłaściwy element ,,%s'' w tekście ustawień\n" +msgstr "niewłaściwy element „%s” w tekście ustawień\n" #, c-format msgid "writing direct signature\n" @@ -4435,7 +4435,7 @@ msgstr "Niewłaściwy znak w imieniu lub nazwisku\n" #, c-format msgid "The characters '%s' and '%s' may not appear in name\n" -msgstr "Znaki ,,%s'' i ,,%s'' nie mogą występować w inieniu ani nazwisku\n" +msgstr "Znaki „%s” i „%s” nie mogą występować w inieniu ani nazwisku\n" msgid "Email address: " msgstr "Adres poczty elektronicznej: " @@ -4451,7 +4451,7 @@ msgstr "Niewłaściwy znak w komentarzu\n" #, c-format msgid "You are using the '%s' character set.\n" -msgstr "Używany zestaw znaków: ,,%s''.\n" +msgstr "Używany zestaw znaków: „%s”.\n" #, c-format msgid "" @@ -4534,7 +4534,7 @@ msgid "" "\n" msgstr "" "Będzie tworzony klucz dla:\n" -" ,,%s''\n" +" „%s”\n" "\n" msgid "Continue? (Y/n) " @@ -4542,7 +4542,7 @@ msgstr "Kontynuować? (T/n) " #, c-format msgid "A key for \"%s\" already exists\n" -msgstr "klucz dla ,,%s'' już istnieje\n" +msgstr "klucz dla „%s” już istnieje\n" msgid "Create anyway? (y/N) " msgstr "Utworzyć klucz mimo to? (t/N) " @@ -4554,8 +4554,8 @@ msgstr "tworzenie mimo to\n" #, c-format msgid "Note: Use \"%s %s\" for a full featured key generation dialog.\n" msgstr "" -"Uwaga: pełną funkcjonalność generowania klucza można uzyskać przez ,,%s " -"%s''.\n" +"Uwaga: pełną funkcjonalność generowania klucza można uzyskać przez „%s " +"%s”.\n" #, c-format msgid "Key generation canceled.\n" @@ -4563,15 +4563,15 @@ msgstr "Procedura generacji klucza została anulowana.\n" #, c-format msgid "can't create backup file '%s': %s\n" -msgstr "nie można utworzyć pliku kopii zapasowej ,,%s'': %s\n" +msgstr "nie można utworzyć pliku kopii zapasowej „%s”: %s\n" #, c-format msgid "Note: backup of card key saved to '%s'\n" -msgstr "Uwaga: kopia zapasowa klucza karty zapisana do ,,%s''\n" +msgstr "Uwaga: kopia zapasowa klucza karty zapisana do „%s”\n" #, c-format msgid "writing public key to '%s'\n" -msgstr "zapis klucza publicznego w ,,%s''\n" +msgstr "zapis klucza publicznego w „%s”\n" #, c-format msgid "no writable public keyring found: %s\n" @@ -4579,7 +4579,7 @@ msgstr "brak zapisywalnego zbioru kluczy publicznych: %s\n" #, c-format msgid "error writing public keyring '%s': %s\n" -msgstr "błąd podczas zapisu zbioru kluczy publicznych ,,%s'': %s\n" +msgstr "błąd podczas zapisu zbioru kluczy publicznych „%s”: %s\n" msgid "public and secret key created and signed.\n" msgstr "klucz publiczny i prywatny (tajny) zostały utworzone i podpisane.\n" @@ -4697,7 +4697,7 @@ msgstr " Nr seryjny karty =" #, c-format msgid "caching keyring '%s'\n" -msgstr "buforowanie zbioru kluczy ,,%s''\n" +msgstr "buforowanie zbioru kluczy „%s”\n" #, c-format msgid "%lu keys cached so far (%lu signature)\n" @@ -4754,7 +4754,7 @@ msgstr "niepoprawny protokół serwera kluczy (nasz %d != moduł obsługi %d)\n" #, c-format msgid "\"%s\" not a key ID: skipping\n" -msgstr ",,%s'' nie jest identyfikatorem klucza - pominięto\n" +msgstr "„%s” nie jest identyfikatorem klucza - pominięto\n" #, c-format msgid "refreshing %d key from %s\n" @@ -4769,7 +4769,7 @@ msgstr "OSTRZEŻENIE: nie można odświeżyć klucza %s przez %s: %s\n" #, c-format msgid "key \"%s\" not found on keyserver\n" -msgstr "klucz ,,%s'' nie został odnaleziony na serwerze kluczy\n" +msgstr "klucz „%s” nie został odnaleziony na serwerze kluczy\n" #, c-format msgid "key not found on keyserver\n" @@ -4785,7 +4785,7 @@ msgstr "brak znanego serwera kluczy\n" #, c-format msgid "skipped \"%s\": %s\n" -msgstr "pominięty ,,%s'': %s\n" +msgstr "pominięty „%s”: %s\n" #, c-format msgid "sending key %s to %s\n" @@ -4793,7 +4793,7 @@ msgstr "wysyłanie klucza %s na %s\n" #, c-format msgid "requesting key from '%s'\n" -msgstr "zapytanie o klucz z ,,%s''\n" +msgstr "zapytanie o klucz z „%s”\n" #, c-format msgid "WARNING: unable to fetch URI %s: %s\n" @@ -4834,7 +4834,7 @@ msgstr "" #, c-format msgid " \"%s\"\n" -msgstr " ,,%s''\n" +msgstr " „%s”\n" #, c-format msgid "encrypted with %s key, ID %s\n" @@ -4883,7 +4883,7 @@ msgstr "" #, c-format msgid "Use the option '%s' to decrypt anyway.\n" -msgstr "Użycie mimo to opcji ,,%s'' do odszyfrowania.\n" +msgstr "Użycie mimo to opcji „%s” do odszyfrowania.\n" #, c-format msgid "decryption forced to fail!\n" @@ -4916,7 +4916,7 @@ msgstr "pierwotna nazwa pliku='%.*s'\n" #, c-format msgid "standalone revocation - use \"gpg --import\" to apply\n" msgstr "" -"osobny certyfikat unieważnienia - użyj ,,gpg --import'' aby go wczytać\n" +"osobny certyfikat unieważnienia - użyj „gpg --import” aby go wczytać\n" #, c-format msgid "no signature found\n" @@ -4924,15 +4924,15 @@ msgstr "nie znaleziono podpisu\n" #, c-format msgid "BAD signature from \"%s\"" -msgstr "NIEPOPRAWNY podpis złożony przez ,,%s''" +msgstr "NIEPOPRAWNY podpis złożony przez „%s”" #, c-format msgid "Expired signature from \"%s\"" -msgstr "Przeterminowany podpis złożony przez ,,%s''" +msgstr "Przeterminowany podpis złożony przez „%s”" #, c-format msgid "Good signature from \"%s\"" -msgstr "Poprawny podpis złożony przez ,,%s''" +msgstr "Poprawny podpis złożony przez „%s”" #, c-format msgid "signature verification suppressed\n" @@ -4956,7 +4956,7 @@ msgstr "Podpisano w %s kluczem %s o numerze %s\n" #, c-format msgid " issuer \"%s\"\n" -msgstr " wystawca ,,%s''\n" +msgstr " wystawca „%s”\n" #, c-format msgid "Key available at: " @@ -4964,14 +4964,14 @@ msgstr "Klucz dostępny w: " #, c-format msgid "Note: Use '%s' to make use of this info\n" -msgstr "Uwaga: aby wykorzystać tę informację, należy użyć ,,%s''\n" +msgstr "Uwaga: aby wykorzystać tę informację, należy użyć „%s”\n" msgid "[uncertain]" msgstr "[niepewne]" #, c-format msgid " aka \"%s\"" -msgstr " alias ,,%s''" +msgstr " alias „%s”" #, c-format msgid "WARNING: This key is not suitable for signing in %s mode\n" @@ -5004,7 +5004,7 @@ msgstr ", algorytm klucza " #, c-format msgid "WARNING: not a detached signature; file '%s' was NOT verified!\n" msgstr "" -"OSTRZEŻENIE: to nie jest oddzielony podpis; plik ,,%s'' NIE został " +"OSTRZEŻENIE: to nie jest oddzielony podpis; plik „%s” NIE został " "zweryfikowany!\n" #, c-format @@ -5031,7 +5031,7 @@ msgstr "podpis starego typu (PGP 2.x).\n" #, c-format msgid "fstat of '%s' failed in %s: %s\n" -msgstr "fstat na ,,%s'' nie powiodło się w %s: %s\n" +msgstr "fstat na „%s” nie powiodło się w %s: %s\n" #, c-format msgid "fstat(%d) failed in %s: %s\n" @@ -5083,27 +5083,27 @@ msgstr "(dalsze informacje: " #, c-format msgid "%s:%d: deprecated option \"%s\"\n" -msgstr "%s:%d: przestarzała opcja ,,%s''\n" +msgstr "%s:%d: przestarzała opcja „%s”\n" #, c-format msgid "please use \"%s%s\" instead\n" -msgstr "w jej miejsce należy użyć ,,%s%s''\n" +msgstr "w jej miejsce należy użyć „%s%s”\n" #, c-format msgid "WARNING: \"%s\" is a deprecated command - do not use it\n" msgstr "" -"OSTRZEŻENIE: ,,%s'' jest przestarzałym poleceniem - nie należy go używać\n" +"OSTRZEŻENIE: „%s” jest przestarzałym poleceniem - nie należy go używać\n" #, c-format msgid "%s:%u: \"%s\" is obsolete in this file - it only has effect in %s\n" msgstr "" -"%s:%u: ,,%s'' jest przestarzałe w tym pliku - ma znaczenie tylko w %s\n" +"%s:%u: „%s” jest przestarzałe w tym pliku - ma znaczenie tylko w %s\n" #, c-format msgid "" "WARNING: \"%s%s\" is an obsolete option - it has no effect except on %s\n" msgstr "" -"OSTRZEŻENIE: ,,%s%s'' jest przestarzałą opcją - nie ma efektu z wyjątkiem " +"OSTRZEŻENIE: „%s%s” jest przestarzałą opcją - nie ma efektu z wyjątkiem " "%s\n" msgid "Uncompressed" @@ -5119,11 +5119,11 @@ msgstr "ta wiadomość może nie dać się odczytać za pomocą %s\n" #, c-format msgid "ambiguous option '%s'\n" -msgstr "niejednoznaczna opcja ,,%s''\n" +msgstr "niejednoznaczna opcja „%s”\n" #, c-format msgid "unknown option '%s'\n" -msgstr "nieznana opcja ,,%s''\n" +msgstr "nieznana opcja „%s”\n" #, c-format msgid "ECDSA public key is expected to be in SEC encoding multiple of 8 bits\n" @@ -5132,11 +5132,11 @@ msgstr "" #, c-format msgid "unknown weak digest '%s'\n" -msgstr "nieznany słaby skrót ,,%s''\n" +msgstr "nieznany słaby skrót „%s”\n" #, c-format msgid "File '%s' exists. " -msgstr "Plik ,,%s'' istnieje. " +msgstr "Plik „%s” istnieje. " msgid "Overwrite? (y/N) " msgstr "Nadpisać? (t/N) " @@ -5223,7 +5223,7 @@ msgid "" "%s" msgstr "" "%s\n" -",,%.*s''\n" +"„%.*s”\n" "klucz %u-bitowy %s, ID %s,\n" "utworzony %s%s.\n" "%s" @@ -5246,7 +5246,7 @@ msgstr "Nazwa pliku ze zdjęciem w formacie JPEG: " #, c-format msgid "unable to open JPEG file '%s': %s\n" -msgstr "nie można otworzyć pliku JPEG ,,%s'': %s\n" +msgstr "nie można otworzyć pliku JPEG „%s”: %s\n" #, c-format msgid "This JPEG is really large (%d bytes) !\n" @@ -5257,7 +5257,7 @@ msgstr "Czy na pewno chcesz go użyć? (t/N) " #, c-format msgid "'%s' is not a JPEG file\n" -msgstr ",,%s'' nie jest plikiem JPEG\n" +msgstr "„%s” nie jest plikiem JPEG\n" msgid "Is this photo correct (y/N/q)? " msgstr "Czy zdjęcie jest w porządku? (t/N/w) " @@ -5274,7 +5274,7 @@ msgstr "" #, c-format msgid "unable to execute shell '%s': %s\n" -msgstr "nie można uruchomić powłoki ,,%s'': %s\n" +msgstr "nie można uruchomić powłoki „%s”: %s\n" #, c-format msgid "unnatural exit of external program\n" @@ -5286,11 +5286,11 @@ msgstr "błąd systemu podczas wołania programu zewnętrznego: %s\n" #, c-format msgid "WARNING: unable to remove tempfile (%s) '%s': %s\n" -msgstr "OSTRZEŻENIE: nie można skasować pliku tymczasowego (%s) ,,%s'': %s\n" +msgstr "OSTRZEŻENIE: nie można skasować pliku tymczasowego (%s) „%s”: %s\n" #, c-format msgid "WARNING: unable to remove temp directory '%s': %s\n" -msgstr "OSTRZEŻENIE: nie można skasować tymczasowego katalogu ,,%s'': %s\n" +msgstr "OSTRZEŻENIE: nie można skasować tymczasowego katalogu „%s”: %s\n" #, c-format msgid "" @@ -5320,7 +5320,7 @@ msgstr "Brak wartości zaufania dla:\n" #, c-format msgid " aka \"%s\"\n" -msgstr " alias ,,%s''\n" +msgstr " alias „%s”\n" msgid "" "How much do you trust that this key actually belongs to the named user?\n" @@ -5390,7 +5390,7 @@ msgid "" "question with yes.\n" msgstr "" "Ten klucz jest niedobry! Został oznaczony jako niezaufany!\n" -"Jeżeli *naprawdę* wiesz, co robisz, możesz odpowiedzieć ,,tak'' na\n" +"Jeżeli *naprawdę* wiesz, co robisz, możesz odpowiedzieć „tak” na\n" "następne pytanie.\n" msgid "" @@ -5400,7 +5400,7 @@ msgid "" msgstr "" "NIE MA pewności, czy klucz należy do osoby wymienionej w identyfikatorze.\n" "Jeśli nie masz co do tego żadnych wątpliwości i *naprawdę* wiesz co robisz,\n" -"możesz odpowiedzieć ,,tak'' na następne pytanie.\n" +"możesz odpowiedzieć „tak” na następne pytanie.\n" msgid "Use this key anyway? (y/N) " msgstr "Użyć tego klucza pomimo to? (t/N) " @@ -5418,12 +5418,12 @@ msgstr "" #, fuzzy, c-format #| msgid "user ID: \"%s\"\n" msgid "checking User ID \"%s\"\n" -msgstr "identyfikator użytkownika: ,,%s''\n" +msgstr "identyfikator użytkownika: „%s”\n" #, fuzzy, c-format #| msgid "option '%s' given, but option '%s' not given\n" msgid "option %s given but issuer \"%s\" does not match\n" -msgstr "podano opcję ,,%s'', ale nie podano opcji ,,%s''\n" +msgstr "podano opcję „%s”, ale nie podano opcji „%s”\n" #, fuzzy, c-format #| msgid "key %s: doesn't match our copy\n" @@ -5433,7 +5433,7 @@ msgstr "klucz %s: nie zgadza się z lokalną kopią\n" #, fuzzy, c-format #| msgid "option '%s' given, but option '%s' not given\n" msgid "option %s given but no matching User ID found\n" -msgstr "podano opcję ,,%s'', ale nie podano opcji ,,%s''\n" +msgstr "podano opcję „%s”, ale nie podano opcji „%s”\n" #, c-format msgid "WARNING: This key has been revoked by its designated revoker!\n" @@ -5517,18 +5517,18 @@ msgstr "%s: pominięty: został już wybrany w innej opcji\n" #, c-format msgid "can't encrypt to '%s'\n" -msgstr "nie można zaszyfrować do ,,%s''\n" +msgstr "nie można zaszyfrować do „%s”\n" #, c-format msgid "option '%s' given, but no valid default keys given\n" -msgstr "podano opcję ,,%s'', ale nie podano poprawnych kluczy domyślnych\n" +msgstr "podano opcję „%s”, ale nie podano poprawnych kluczy domyślnych\n" #, c-format msgid "option '%s' given, but option '%s' not given\n" -msgstr "podano opcję ,,%s'', ale nie podano opcji ,,%s''\n" +msgstr "podano opcję „%s”, ale nie podano opcji „%s”\n" msgid "You did not specify a user ID. (you may use \"-r\")\n" -msgstr "Nie został podany identyfikator użytkownika (np. za pomocą ,,-r'')\n" +msgstr "Nie został podany identyfikator użytkownika (np. za pomocą „-r”)\n" msgid "Current recipients:\n" msgstr "Aktualni odbiorcy:\n" @@ -5556,7 +5556,7 @@ msgstr "pominięty: został już wybrany w innej opcji\n" #, c-format msgid "unknown default recipient \"%s\"\n" -msgstr "nieznany domyślny adresat ,,%s''\n" +msgstr "nieznany domyślny adresat „%s”\n" #, c-format msgid "no valid addressees\n" @@ -5591,7 +5591,7 @@ msgstr "brak podpisanych danych\n" #, c-format msgid "can't open signed data '%s'\n" -msgstr "nie można otworzyć podpisanego pliku ,,%s''\n" +msgstr "nie można otworzyć podpisanego pliku „%s”\n" #, c-format msgid "can't open signed data fd=%d: %s\n" @@ -5666,7 +5666,7 @@ msgstr "Certyfikat unieważnienia został utworzony.\n" #, c-format msgid "no revocation keys found for \"%s\"\n" -msgstr "brak kluczy unieważniających dla ,,%s''\n" +msgstr "brak kluczy unieważniających dla „%s”\n" msgid "This is a revocation certificate for the OpenPGP key:" msgstr "To certyfikat unieważnienia dla klucza OpenPGP:" @@ -5676,7 +5676,7 @@ 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 "" -"Certyfikat unieważnienia to rodzaj ,,wyłącznika awaryjnego,, do\n" +"Certyfikat unieważnienia to rodzaj „wyłącznika awaryjnego” do\n" "publicznego zadeklarowania, że klucz nie powinien być już więcej\n" "używany. Po opublikowaniu takiego certyfikatu nie jest już możliwe\n" "wycofanie go." @@ -5692,7 +5692,7 @@ msgstr "" "klucza tajnego. Co więcej, jeśli klucz tajny jest nadal dostępny,\n" "lepiej wygenerować nowy certyfikat unieważnienia i podać powód\n" "unieważnienia. Więcej szczegółów w opisie polecenia gpg\n" -",,--generate-revocation'' w podręczniku do GnuPG." +"„--generate-revocation” w podręczniku do GnuPG." msgid "" "To avoid an accidental use of this file, a colon has been inserted\n" @@ -5706,18 +5706,18 @@ msgstr "" #, c-format msgid "revocation certificate stored as '%s.rev'\n" -msgstr "certyfikat unieważnienia został zapisany jako ,,%s.rev''\n" +msgstr "certyfikat unieważnienia został zapisany jako „%s.rev”\n" #, c-format msgid "secret key \"%s\" not found\n" -msgstr "klucz prywatny ,,%s'' nie został odnaleziony\n" +msgstr "klucz prywatny „%s” nie został odnaleziony\n" #. TRANSLATORS: The %s prints a key specification which #. for example has been given at the command line. Several lines #. lines with secret key infos are printed after this message. #, c-format msgid "'%s' matches multiple secret keys:\n" -msgstr ",,%s'' pasuje do wielu kluczy tajnych:\n" +msgstr "„%s” pasuje do wielu kluczy tajnych:\n" #, c-format msgid "error searching the keyring: %s\n" @@ -5907,7 +5907,7 @@ msgstr "" #, c-format msgid "%s/%s signature from: \"%s\"\n" -msgstr "podpis %s/%s złożony przez: ,,%s''\n" +msgstr "podpis %s/%s złożony przez: „%s”\n" #, c-format msgid "" @@ -5933,7 +5933,7 @@ msgstr "" #, c-format msgid "skipped \"%s\": duplicated\n" -msgstr "pominięty ,,%s'': duplikat\n" +msgstr "pominięty „%s”: duplikat\n" #, c-format msgid "skipped: secret key already present\n" @@ -5958,7 +5958,7 @@ msgstr "" #, c-format msgid "error in '%s': %s\n" -msgstr "błąd w ,,%s'': %s\n" +msgstr "błąd w „%s”: %s\n" msgid "line too long" msgstr "linia zbyt długa" @@ -5974,11 +5974,11 @@ msgstr "brak wartości zaufania właściciela" #, c-format msgid "error finding trust record in '%s': %s\n" -msgstr "błąd podczas szukania zapisu wartości zaufania w ,,%s'': %s\n" +msgstr "błąd podczas szukania zapisu wartości zaufania w „%s”: %s\n" #, c-format msgid "read error in '%s': %s\n" -msgstr "błąd odczytu w ,,%s'': %s\n" +msgstr "błąd odczytu w „%s”: %s\n" #, c-format msgid "trustdb: sync failed: %s\n" @@ -5986,11 +5986,11 @@ msgstr "baza zaufania: synchronizacja nie powiodła się %s\n" #, c-format msgid "can't create lock for '%s'\n" -msgstr "nie można utworzyć blokady dla ,,%s''\n" +msgstr "nie można utworzyć blokady dla „%s”\n" #, c-format msgid "can't lock '%s'\n" -msgstr "nie można zablokować ,,%s''\n" +msgstr "nie można zablokować „%s”\n" #, c-format msgid "trustdb rec %lu: lseek failed: %s\n" @@ -6010,7 +6010,7 @@ msgstr "%s: katalog nie istnieje!\n" #, c-format msgid "can't access '%s': %s\n" -msgstr "nie można dostać się do ,,%s'': %s\n" +msgstr "nie można dostać się do „%s”: %s\n" #, c-format msgid "%s: failed to create version record: %s" @@ -6130,7 +6130,7 @@ msgstr "błąd inicjowania bazy danych TOFU: %s\n" #, c-format msgid "error opening TOFU database '%s': %s\n" -msgstr "błąd otwierania bazy danych TOFU ,,%s'': %s\n" +msgstr "błąd otwierania bazy danych TOFU „%s”: %s\n" #, c-format msgid "error updating TOFU database: %s\n" @@ -6139,19 +6139,19 @@ msgstr "błąd uaktualniania bazy danych TOFU: %s\n" #, c-format msgid "" "This is the first time the email address \"%s\" is being used with key %s." -msgstr "To pierwsze użycie adresu e-mail ,,%s'' z kluczem %s." +msgstr "To pierwsze użycie adresu e-mail „%s” z kluczem %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] "Adres e-mail ,,%s'' jest powiązany z %d kluczem!" -msgstr[1] "Adres e-mail ,,%s'' jest powiązany z %d kluczami!" -msgstr[2] "Adres e-mail ,,%s'' jest powiązany z %d kluczami!" +msgstr[0] "Adres e-mail „%s” jest powiązany z %d kluczem!" +msgstr[1] "Adres e-mail „%s” jest powiązany z %d kluczami!" +msgstr[2] "Adres e-mail „%s” jest powiązany z %d kluczami!" msgid " Since this binding's policy was 'auto', it has been changed to 'ask'." msgstr "" -" Ponieważ polityką tego powiązania było ,,auto'', została zmieniona na ,," -"ask''." +" Ponieważ polityką tego powiązania było „auto”, została zmieniona na „" +"ask”." #, c-format msgid "" @@ -6159,7 +6159,7 @@ msgid "" "or whether you think someone is impersonating \"%s\"." msgstr "" "Proszę zdecydować, czy ten adres e-mail powinien być powiązany z kluczem %s, " -"czy raczej ktoś się podszywa za ,,%s''." +"czy raczej ktoś się podszywa za „%s”." #, c-format msgid "error gathering other user IDs: %s\n" @@ -6179,13 +6179,13 @@ msgstr "błąd zbierania statystyk podpisów: %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] "Adres e-mail ,,%s'' jest powiązany z %d kluczem:\n" -msgstr[1] "Adres e-mail ,,%s'' jest powiązany z %d kluczami:\n" -msgstr[2] "Adres e-mail ,,%s'' jest powiązany z %d kluczami:\n" +msgstr[0] "Adres e-mail „%s” jest powiązany z %d kluczem:\n" +msgstr[1] "Adres e-mail „%s” jest powiązany z %d kluczami:\n" +msgstr[2] "Adres e-mail „%s” jest powiązany z %d kluczami:\n" #, c-format msgid "Statistics for keys with the email address \"%s\":\n" -msgstr "Statystyki dla kluczy o adresie e-mail ,,%s'':\n" +msgstr "Statystyki dla kluczy o adresie e-mail „%s”:\n" msgid "this key" msgstr "ten klucz" @@ -6432,7 +6432,7 @@ msgstr "" #, c-format msgid "'%s' is not a valid long keyID\n" -msgstr ",,%s'' nie jest poprawnym długim identyfikatorem klucza\n" +msgstr "„%s” nie jest poprawnym długim identyfikatorem klucza\n" #, c-format msgid "key %s: accepted as trusted key\n" @@ -6485,11 +6485,11 @@ msgstr "następne sprawdzanie bazy odbędzie się %s\n" #, c-format msgid "no need for a trustdb check with '%s' trust model\n" -msgstr "nie ma potrzeby sprawdzania trustdb przy modelu zaufania ,,%s''\n" +msgstr "nie ma potrzeby sprawdzania trustdb przy modelu zaufania „%s”\n" #, c-format msgid "no need for a trustdb update with '%s' trust model\n" -msgstr "nie ma potrzeby uaktualniania trustdb przy modelu zaufania ,,%s''\n" +msgstr "nie ma potrzeby uaktualniania trustdb przy modelu zaufania „%s”\n" #, c-format msgid "public key %s not found: %s\n" @@ -6497,7 +6497,7 @@ msgstr "klucz publiczny %s nie odnaleziony: %s\n" #, c-format msgid "please do a --check-trustdb\n" -msgstr "należy uruchomić gpg z opcją ,,--check-trustdb''\n" +msgstr "należy uruchomić gpg z opcją „--check-trustdb”\n" #, c-format msgid "checking the trustdb\n" @@ -6614,7 +6614,7 @@ msgstr "OSTRZEŻENIE: wiadomość nie była zabezpieczona przed manipulacją\n" #, fuzzy, c-format #| msgid "ambiguous option '%s'\n" msgid "Hint: Do not use option %s\n" -msgstr "niejednoznaczna opcja ,,%s''\n" +msgstr "niejednoznaczna opcja „%s”\n" msgid "set debugging flags" msgstr "ustawienie flag diagnostycznych" @@ -7001,7 +7001,7 @@ msgstr "" #, c-format msgid "please use the option '--daemon' to run the program in the background\n" -msgstr "proszę użyć opcji ,,--daemon'' do uruchomienia programu w tle\n" +msgstr "proszę użyć opcji „--daemon” do uruchomienia programu w tle\n" #, c-format msgid "handler for fd %d started\n" @@ -7041,7 +7041,7 @@ msgstr "polityka oznaczona jako krytyczna bez skonfigurowanych polityk" #, c-format msgid "failed to open '%s': %s\n" -msgstr "nie udało się otworzyć ,,%s'': %s\n" +msgstr "nie udało się otworzyć „%s”: %s\n" #, c-format msgid "Note: non-critical certificate policy not allowed" @@ -7092,7 +7092,7 @@ msgstr "status certyfikatu jest nieznany" #, c-format msgid "please make sure that the \"dirmngr\" is properly installed\n" -msgstr "proszę upewnić się, że ,,dirmngr'' jest poprawnie zainstalowany\n" +msgstr "proszę upewnić się, że „dirmngr” jest poprawnie zainstalowany\n" #, c-format msgid "checking the CRL failed: %s" @@ -7262,7 +7262,7 @@ msgid "" "created %s, expires %s.\n" msgstr "" "Proszę wprowadzić hasło aby odbezpieczyć klucz tajny certyfikatu X.509:\n" -",,%s''\n" +"„%s”\n" "S/N %s, ID 0x%08lX,\n" "stworzony %s, wygasa %s.\n" @@ -7313,11 +7313,11 @@ msgstr "linia %d: nie podano nazwy przedmiotu\n" #, c-format msgid "line %d: invalid subject name label '%.*s'\n" -msgstr "linia %d: niewłaściwa etykieta nazwy przedmiotu ,,%.*s''\n" +msgstr "linia %d: niewłaściwa etykieta nazwy przedmiotu „%.*s”\n" #, c-format msgid "line %d: invalid subject name '%s' at pos %d\n" -msgstr "linia %d: niewłaściwa nazwa przedmiotu ,,%s'' na pozycji %d\n" +msgstr "linia %d: niewłaściwa nazwa przedmiotu „%s” na pozycji %d\n" #, c-format msgid "line %d: not a valid email address\n" @@ -7329,11 +7329,11 @@ msgstr "linia %d: niewłaściwy numer seryjny\n" #, c-format msgid "line %d: invalid issuer name label '%.*s'\n" -msgstr "linia %d: niewłaściwa etykieta nazwy wystawcy ,,%.*s''\n" +msgstr "linia %d: niewłaściwa etykieta nazwy wystawcy „%.*s”\n" #, c-format msgid "line %d: invalid issuer name '%s' at pos %d\n" -msgstr "linia %d: niewłaściwa nazwa wystawcy ,,%s'' na pozycji %d\n" +msgstr "linia %d: niewłaściwa nazwa wystawcy „%s” na pozycji %d\n" #, c-format msgid "line %d: invalid date given\n" @@ -7341,7 +7341,7 @@ msgstr "linia %d: podano niewłaściwą datę\n" #, c-format msgid "line %d: error getting signing key by keygrip '%s': %s\n" -msgstr "linia %d: błąd pobierania klucza podpisującego z uchwytu ,,%s'': %s\n" +msgstr "linia %d: błąd pobierania klucza podpisującego z uchwytu „%s”: %s\n" #, c-format msgid "line %d: invalid hash algorithm given\n" @@ -7361,11 +7361,11 @@ msgstr "linia %d: niewłaściwa składnia rozszerzenia\n" #, c-format msgid "line %d: error reading key '%s' from card: %s\n" -msgstr "linia %d: błąd odczytu klucza ,,%s'' z karty: %s\n" +msgstr "linia %d: błąd odczytu klucza „%s” z karty: %s\n" #, c-format msgid "line %d: error getting key by keygrip '%s': %s\n" -msgstr "linia %d: błąd pobierania klucza z uchwytu ,,%s'': %s\n" +msgstr "linia %d: błąd pobierania klucza z uchwytu „%s”: %s\n" #, c-format msgid "line %d: key generation failed: %s <%s>\n" @@ -7410,7 +7410,7 @@ msgstr "Nie podano nazwy przedmiotu\n" #, c-format msgid "Invalid subject name label '%.*s'\n" -msgstr "Nieprawidłowa etykieta nazwy przedmiotu ,,%.*s''\n" +msgstr "Nieprawidłowa etykieta nazwy przedmiotu „%.*s”\n" #. TRANSLATORS: The 22 in the second string is the #. length of the first string up to the "%s". Please @@ -7419,7 +7419,7 @@ msgstr "Nieprawidłowa etykieta nazwy przedmiotu ,,%.*s''\n" #. drop everything after the number. #, c-format msgid "Invalid subject name '%s'\n" -msgstr "Nieprawidłowa nazwa przedmiotu ,,%s''\n" +msgstr "Nieprawidłowa nazwa przedmiotu „%s”\n" msgid "22 translator: see certreg-ui.c:gpgsm_gencertreq_tty" msgstr "33" @@ -7484,7 +7484,7 @@ msgstr "zaszyfrowano kluczem %s o identyfikatorze %s\n" #, c-format msgid "certificate '%s' not found: %s\n" -msgstr "nie znaleziono certyfikatu ,,%s'': %s\n" +msgstr "nie znaleziono certyfikatu „%s”: %s\n" #, c-format msgid "error locking keybox: %s\n" @@ -7492,15 +7492,15 @@ msgstr "błąd blokowania keyboksa: %s\n" #, c-format msgid "duplicated certificate '%s' deleted\n" -msgstr "powtórzony certyfikat ,,%s'' usunięty\n" +msgstr "powtórzony certyfikat „%s” usunięty\n" #, c-format msgid "certificate '%s' deleted\n" -msgstr "certyfikat ,,%s'' usunięty\n" +msgstr "certyfikat „%s” usunięty\n" #, c-format msgid "deleting certificate \"%s\" failed: %s\n" -msgstr "usunięcie certyfikatu ,,%s'' nie powiodło się: %s\n" +msgstr "usunięcie certyfikatu „%s” nie powiodło się: %s\n" #, c-format msgid "no valid recipients given\n" @@ -7582,10 +7582,10 @@ msgid "batch mode: never ask" msgstr "tryb wsadowy: bez żadnych pytań" msgid "assume yes on most questions" -msgstr "przyjęcie odpowiedzi ,,tak'' na większość pytań" +msgstr "przyjęcie odpowiedzi „tak” na większość pytań" msgid "assume no on most questions" -msgstr "przyjęcie odpowiedzi ,,nie'' na większość pytań" +msgstr "przyjęcie odpowiedzi „nie” na większość pytań" msgid "|FILE|write an audit log to FILE" msgstr "|PLIK|zapisanie logów audytowych do PLIKU" @@ -7605,19 +7605,19 @@ msgstr "" #, c-format msgid "Note: won't be able to encrypt to '%s': %s\n" -msgstr "Uwaga: nie można zaszyfrować do ,,%s'': %s\n" +msgstr "Uwaga: nie można zaszyfrować do „%s”: %s\n" #, c-format msgid "unknown validation model '%s'\n" -msgstr "nieznany model poprawności ,,%s''\n" +msgstr "nieznany model poprawności „%s”\n" #, c-format msgid "importing common certificates '%s'\n" -msgstr "import wspólnych certyfikatów ,,%s''\n" +msgstr "import wspólnych certyfikatów „%s”\n" #, c-format msgid "can't sign using '%s': %s\n" -msgstr "nie można podpisać z użyciem ,,%s'': %s\n" +msgstr "nie można podpisać z użyciem „%s”: %s\n" #, c-format msgid "invalid command (there is no implicit command)\n" @@ -7687,11 +7687,11 @@ msgstr "" #, c-format msgid "invalid formatted fingerprint in '%s', line %d\n" -msgstr "niewłaściwie sformatowany odcisk w ,,%s'', w linii %d\n" +msgstr "niewłaściwie sformatowany odcisk w „%s”, w linii %d\n" #, c-format msgid "invalid country code in '%s', line %d\n" -msgstr "niewłaściwy kod kraju w ,,%s'', w linii %d\n" +msgstr "niewłaściwy kod kraju w „%s”, w linii %d\n" #, c-format msgid "" @@ -7703,7 +7703,7 @@ msgid "" "%s%sAre you really sure that you want to do this?" msgstr "" "Ta operacja złoży podpis przy użyciu certyfikatu:\n" -",,%s''\n" +"„%s”\n" "Utworzy to kwalifikowany podpis równoważny prawnie podpisowi odręcznemu.\n" "\n" "%s%sNa pewno chcesz to zrobić?" @@ -7723,7 +7723,7 @@ msgid "" "Note, that this certificate will NOT create a qualified signature!" msgstr "" "Ta operacja złoży podpis przy użyciu certyfikatu:\n" -",,%s''\n" +"„%s”\n" "Należy zauważyć, że ten certyfikat NIE utworzy kwalifikowanego podpisu!" #, c-format @@ -7798,19 +7798,19 @@ msgstr "porzucanie %u certyfikatów z pamięci podręcznej\n" #, c-format msgid "can't parse certificate '%s': %s\n" -msgstr "nie można przeanalizować certyfikatu ,,%s'': %s\n" +msgstr "nie można przeanalizować certyfikatu „%s”: %s\n" #, c-format msgid "certificate '%s' already cached\n" -msgstr "certyfikat ,,%s'' jest już w pamięci podręcznej\n" +msgstr "certyfikat „%s” jest już w pamięci podręcznej\n" #, c-format msgid "trusted certificate '%s' loaded\n" -msgstr "certyfikat zaufany ,,%s'' załadowany\n" +msgstr "certyfikat zaufany „%s” załadowany\n" #, c-format msgid "certificate '%s' loaded\n" -msgstr "certyfikat ,,%s'' załadowany\n" +msgstr "certyfikat „%s” załadowany\n" #, c-format msgid " SHA1 fingerprint = %s\n" @@ -7824,7 +7824,7 @@ msgstr " przedmiot =" #, c-format msgid "error loading certificate '%s': %s\n" -msgstr "błąd ładowania certyfikatu ,,%s'': %s\n" +msgstr "błąd ładowania certyfikatu „%s”: %s\n" #, c-format msgid "permanently loaded certificates: %u\n" @@ -7852,7 +7852,7 @@ msgstr "błąd zapisu certyfikatu w pamięci podręcznej: %s\n" #, c-format msgid "invalid SHA1 fingerprint string '%s'\n" -msgstr "niewłaściwy łańcuch odcisku SHA1 ,,%s''\n" +msgstr "niewłaściwy łańcuch odcisku SHA1 „%s”\n" #, c-format msgid "error fetching certificate by S/N: %s\n" @@ -7872,27 +7872,27 @@ msgstr "błąd pobierania authorityKeyIdentifier: %s\n" #, c-format msgid "creating directory '%s'\n" -msgstr "tworzenie katalogu ,,%s''\n" +msgstr "tworzenie katalogu „%s”\n" #, c-format msgid "error creating directory '%s': %s\n" -msgstr "błąd tworzenia katalogu ,,%s'': %s\n" +msgstr "błąd tworzenia katalogu „%s”: %s\n" #, c-format msgid "ignoring database dir '%s'\n" -msgstr "zignorowano katalog bazy danych ,,%s''\n" +msgstr "zignorowano katalog bazy danych „%s”\n" #, c-format msgid "error reading directory '%s': %s\n" -msgstr "błąd odczytu katalogu ,,%s'': %s\n" +msgstr "błąd odczytu katalogu „%s”: %s\n" #, c-format msgid "removing cache file '%s'\n" -msgstr "usuwanie pliku pamięci podręcznej ,,%s''\n" +msgstr "usuwanie pliku pamięci podręcznej „%s”\n" #, c-format msgid "not removing file '%s'\n" -msgstr "bez usuwania pliku ,,%s''\n" +msgstr "bez usuwania pliku „%s”\n" #, c-format msgid "error closing cache file: %s\n" @@ -7900,33 +7900,33 @@ msgstr "błąd zamykania pliku pamięci podręcznej: %s\n" #, c-format msgid "failed to open cache dir file '%s': %s\n" -msgstr "nie udało się otworzyć pliku katalogu pamięci podręcznej ,,%s'': %s\n" +msgstr "nie udało się otworzyć pliku katalogu pamięci podręcznej „%s”: %s\n" #, c-format msgid "error creating new cache dir file '%s': %s\n" -msgstr "błąd tworzenia nowego pliku katalogu pamięci podręcznej ,,%s'': %s\n" +msgstr "błąd tworzenia nowego pliku katalogu pamięci podręcznej „%s”: %s\n" #, c-format msgid "error writing new cache dir file '%s': %s\n" msgstr "" -"błąd podczas zapisu nowego pliku katalogu pamięci podręcznej ,,%s'': %s\n" +"błąd podczas zapisu nowego pliku katalogu pamięci podręcznej „%s”: %s\n" #, c-format msgid "error closing new cache dir file '%s': %s\n" -msgstr "błąd zamykania nowego pliku katalogu pamięci podręcznej ,,%s'': %s\n" +msgstr "błąd zamykania nowego pliku katalogu pamięci podręcznej „%s”: %s\n" #, c-format msgid "new cache dir file '%s' created\n" -msgstr "nowy plik katalogu pamięci podręcznej ,,%s'' został utworzony\n" +msgstr "nowy plik katalogu pamięci podręcznej „%s” został utworzony\n" #, c-format msgid "failed to re-open cache dir file '%s': %s\n" msgstr "" -"nie udało ponownie otworzyć pliku katalogu pamięci podręcznej ,,%s'': %s\n" +"nie udało ponownie otworzyć pliku katalogu pamięci podręcznej „%s”: %s\n" #, c-format msgid "first record of '%s' is not the version\n" -msgstr "pierwszy rekord ,,%s'' nie jest wersją\n" +msgstr "pierwszy rekord „%s” nie jest wersją\n" #, c-format msgid "old version of cache directory - cleaning up\n" @@ -7938,36 +7938,36 @@ msgstr "stara wersja katalogu pamięci podręcznej - poddaję się\n" #, c-format msgid "extra field detected in crl record of '%s' line %u\n" -msgstr "wykryto nadmiarowe pole w rekordzie CRL ,,%s'', linia %u\n" +msgstr "wykryto nadmiarowe pole w rekordzie CRL „%s”, linia %u\n" #, c-format msgid "invalid line detected in '%s' line %u\n" -msgstr "wykryto niewłaściwą linię w ,,%s'', linia %u\n" +msgstr "wykryto niewłaściwą linię w „%s”, linia %u\n" #, c-format msgid "duplicate entry detected in '%s' line %u\n" -msgstr "wykryto powtórzony wpis w ,,%s'', linia %u\n" +msgstr "wykryto powtórzony wpis w „%s”, linia %u\n" #, c-format msgid "unsupported record type in '%s' line %u skipped\n" -msgstr "pominięto nieobsługiwany typ rekordu w ,,%s'', linia %u\n" +msgstr "pominięto nieobsługiwany typ rekordu w „%s”, linia %u\n" #, c-format msgid "invalid issuer hash in '%s' line %u\n" -msgstr "nieprawidłowy skrót wystawcy w ,,%s'', linia %u\n" +msgstr "nieprawidłowy skrót wystawcy w „%s”, linia %u\n" #, c-format msgid "no issuer DN in '%s' line %u\n" -msgstr "brak DN wystawcy w ,,%s'', linia %u\n" +msgstr "brak DN wystawcy w „%s”, linia %u\n" #, c-format msgid "invalid timestamp in '%s' line %u\n" -msgstr "nieprawidłowy znacznik czasu w ,,%s'', linia %u\n" +msgstr "nieprawidłowy znacznik czasu w „%s”, linia %u\n" #, c-format msgid "WARNING: invalid cache file hash in '%s' line %u\n" msgstr "" -"UWAGA: nieprawidłowy skrót pliku pamięci podręcznej w ,,%s'', linia %u\n" +"UWAGA: nieprawidłowy skrót pliku pamięci podręcznej w „%s”, linia %u\n" #, c-format msgid "detected errors in cache dir file\n" @@ -7980,16 +7980,16 @@ msgstr "proszę sprawdzić przyczynę i ręcznie usunąć ten plik\n" #, c-format msgid "failed to create temporary cache dir file '%s': %s\n" msgstr "" -"nie udało się utworzyć pliku tymczasowego katalogu pamięci podręcznej ,," -"%s'': %s\n" +"nie udało się utworzyć pliku tymczasowego katalogu pamięci podręcznej „" +"%s”: %s\n" #, c-format msgid "error renaming '%s' to '%s': %s\n" -msgstr "błąd zmiany nazwy ,,%s'' na ,,%s'': %s\n" +msgstr "błąd zmiany nazwy „%s” na „%s”: %s\n" #, c-format msgid "can't hash '%s': %s\n" -msgstr "nie można policzyć skrótu ,,%s'': %s\n" +msgstr "nie można policzyć skrótu „%s”: %s\n" #, c-format msgid "error setting up MD5 hash context: %s\n" @@ -7997,11 +7997,11 @@ msgstr "błąd ustawiania kontekstu skrótu MD5: %s\n" #, c-format msgid "error hashing '%s': %s\n" -msgstr "błąd liczenia skrótu ,,%s'': %s\n" +msgstr "błąd liczenia skrótu „%s”: %s\n" #, c-format msgid "invalid formatted checksum for '%s'\n" -msgstr "niewłaściwie sformatowana suma kontrolna ,,%s''\n" +msgstr "niewłaściwie sformatowana suma kontrolna „%s”\n" #, c-format msgid "too many open cache files; can't open anymore\n" @@ -8010,15 +8010,15 @@ msgstr "" #, c-format msgid "opening cache file '%s'\n" -msgstr "otwieranie pliku pamięci podręcznej ,,%s''\n" +msgstr "otwieranie pliku pamięci podręcznej „%s”\n" #, c-format msgid "error opening cache file '%s': %s\n" -msgstr "błąd otwierania pliku pamięci podręcznej ,,%s'': %s\n" +msgstr "błąd otwierania pliku pamięci podręcznej „%s”: %s\n" #, c-format msgid "error initializing cache file '%s' for reading: %s\n" -msgstr "błąd inicjowania pliku pamięci podręcznej ,,%s'' do odczytu: %s\n" +msgstr "błąd inicjowania pliku pamięci podręcznej „%s” do odczytu: %s\n" #, c-format msgid "calling unlock_db_file on a closed file\n" @@ -8094,7 +8094,7 @@ msgstr "konwersja S-wyrażenia nie powiodła się: %s\n" #, c-format msgid "unknown hash algorithm '%s'\n" -msgstr "niewłaściwy algorytm skrótu ,,%s''\n" +msgstr "niewłaściwy algorytm skrótu „%s”\n" #, c-format msgid "gcry_md_open for algorithm %d failed: %s\n" @@ -8155,17 +8155,17 @@ msgstr "ksba_crl_set_reader nie powiodło się: %s\n" #, c-format msgid "removed stale temporary cache file '%s'\n" -msgstr "usunięto zleżały plik tymczasowy pamięci podręcznej ,,%s''\n" +msgstr "usunięto zleżały plik tymczasowy pamięci podręcznej „%s”\n" #, c-format msgid "problem removing stale temporary cache file '%s': %s\n" msgstr "" -"problem z usunięciem zleżałego pliku tymczasowego pamięci podręcznej ,,%s'': " +"problem z usunięciem zleżałego pliku tymczasowego pamięci podręcznej „%s”: " "%s\n" #, c-format msgid "error creating temporary cache file '%s': %s\n" -msgstr "błąd tworzenia pliku tymczasowego pamięci podręcznej ,,%s'': %s\n" +msgstr "błąd tworzenia pliku tymczasowego pamięci podręcznej „%s”: %s\n" #, c-format msgid "crl_parse_insert failed: %s\n" @@ -8173,11 +8173,11 @@ msgstr "crl_parse_insert nie powiodło się: %s\n" #, c-format msgid "error finishing temporary cache file '%s': %s\n" -msgstr "błąd finalizacji pliku tymczasowego pamięci podręcznej ,,%s'': %s\n" +msgstr "błąd finalizacji pliku tymczasowego pamięci podręcznej „%s”: %s\n" #, c-format msgid "error closing temporary cache file '%s': %s\n" -msgstr "błąd zamykania pliku tymczasowego pamięci podręcznej ,,%s'': %s\n" +msgstr "błąd zamykania pliku tymczasowego pamięci podręcznej „%s”: %s\n" #, c-format msgid "WARNING: new CRL still too old; it expired on %s - loading anyway\n" @@ -8198,11 +8198,11 @@ msgstr "błąd odczytu rozszerzeń CRL: %s\n" #, c-format msgid "creating cache file '%s'\n" -msgstr "błąd tworzenia pliku pamięci podręcznej ,,%s''\n" +msgstr "błąd tworzenia pliku pamięci podręcznej „%s”\n" #, c-format msgid "problem renaming '%s' to '%s': %s\n" -msgstr "problem ze zmianą nazwy ,,%s'' na ,,%s'': %s\n" +msgstr "problem ze zmianą nazwy „%s” na „%s”: %s\n" #, c-format msgid "" @@ -8280,7 +8280,7 @@ msgstr "Dostęp do CRL niemożliwy z powodu wyłączonego %s\n" #, c-format msgid "error retrieving '%s': %s\n" -msgstr "błąd odtwarzania ,,%s'': %s\n" +msgstr "błąd odtwarzania „%s”: %s\n" #, c-format msgid "error initializing reader object: %s\n" @@ -8345,7 +8345,7 @@ msgstr "błąd odczytu certyfikatu ze standardowego wejścia: %s\n" #, c-format msgid "error reading certificate from '%s': %s\n" -msgstr "błąd odczytu certyfikatu z ,,%s'': %s\n" +msgstr "błąd odczytu certyfikatu z „%s”: %s\n" #, c-format msgid "certificate too large to make any sense\n" @@ -8361,7 +8361,7 @@ msgstr "wyszukanie nie powiodło się: %s\n" #, c-format msgid "loading CRL '%s' failed: %s\n" -msgstr "załadowanie CRL ,,%s'' nie powiodła się: %s\n" +msgstr "załadowanie CRL „%s” nie powiodła się: %s\n" #, c-format msgid "a dirmngr daemon is up and running\n" @@ -8385,7 +8385,7 @@ msgstr "sprawdzenie certyfikatu nie powiodło się: %s\n" #, c-format msgid "got status: '%s'\n" -msgstr "otrzymano status: ,,%s''\n" +msgstr "otrzymano status: „%s”\n" #, c-format msgid "error writing base64 encoding: %s\n" @@ -8393,7 +8393,7 @@ msgstr "błąd zapisu kodowania base64: %s\n" #, c-format msgid "unsupported inquiry '%s'\n" -msgstr "nieobsługiwane zapytanie ,,%s''\n" +msgstr "nieobsługiwane zapytanie „%s”\n" #, c-format msgid "absolute file name expected\n" @@ -8401,7 +8401,7 @@ msgstr "oczekiwano bezwzględnej nazwy pliku\n" #, c-format msgid "looking up '%s'\n" -msgstr "wyszukiwanie ,,%s''\n" +msgstr "wyszukiwanie „%s”\n" msgid "list the contents of the CRL cache" msgstr "lista zawartości pamięci podręcznej CRL" @@ -8511,7 +8511,7 @@ msgid "" "options)\n" msgstr "" "@\n" -"(pełną listę poleceń i opcji można znaleźć w podręczniku ,,info'')\n" +"(pełną listę poleceń i opcji można znaleźć w podręczniku „info”)\n" msgid "Usage: @DIRMNGR@ [options] (-h for help)" msgstr "Składnia: @DIRMNGR@ [opcje] (-h wyświetla pomoc)" @@ -8537,11 +8537,11 @@ msgstr "dwukropki nie są dozwolone w nazwie gniazda\n" #, c-format msgid "fetching CRL from '%s' failed: %s\n" -msgstr "pobranie CRL z ,,%s'' nie powiodło się: %s\n" +msgstr "pobranie CRL z „%s” nie powiodło się: %s\n" #, c-format msgid "processing CRL from '%s' failed: %s\n" -msgstr "przetworzenie CRL z ,,%s'' nie powiodło się: %s\n" +msgstr "przetworzenie CRL z „%s” nie powiodło się: %s\n" #, c-format msgid "%s:%u: line too long - skipped\n" @@ -8590,11 +8590,11 @@ msgstr "otrzymano sygnał %d - nie zdefiniowano akcji\n" #, c-format msgid "error accessing '%s': http status %u\n" -msgstr "błąd dostępu do ,,%s'': status http %u\n" +msgstr "błąd dostępu do „%s”: status http %u\n" #, c-format msgid "URL '%s' redirected to '%s' (%u)\n" -msgstr "URL ,,%s'' przekierowany na ,,%s'' (%u)\n" +msgstr "URL „%s” przekierowany na „%s” (%u)\n" #, c-format msgid "too many redirections\n" @@ -8602,7 +8602,7 @@ msgstr "za dużo przekierowań\n" #, c-format msgid "redirection changed to '%s'\n" -msgstr "przekierowanie zmienione na ,,%s''\n" +msgstr "przekierowanie zmienione na „%s”\n" #, c-format msgid "error printing log line: %s\n" @@ -8638,7 +8638,7 @@ msgstr "błędny znak 0x%02x w nazwie hosta - nie dodano\n" #, c-format msgid "adding '%s:%d' to the ldap server list\n" -msgstr "dodano ,,%s:%d'' do listy serwerów LDAP\n" +msgstr "dodano „%s:%d” do listy serwerów LDAP\n" #, c-format msgid "malloc failed: %s\n" @@ -8646,11 +8646,11 @@ msgstr "malloc nie powiodło się: %s\n" #, c-format msgid "'%s' is not an LDAP URL\n" -msgstr ",,%s'' nie jest URL-em LDAP\n" +msgstr "„%s” nie jest URL-em LDAP\n" #, c-format msgid "'%s' is an invalid LDAP URL\n" -msgstr ",,%s'' jest nieprawidłowym URL-em LDAP\n" +msgstr "„%s” jest nieprawidłowym URL-em LDAP\n" #, c-format msgid "ldap_search hit the size limit of the server\n" @@ -8711,19 +8711,19 @@ msgstr "błąd budowania żądania OCSP: %s\n" #, c-format msgid "error connecting to '%s': %s\n" -msgstr "błąd połączenia z ,,%s'': %s\n" +msgstr "błąd połączenia z „%s”: %s\n" #, c-format msgid "error reading HTTP response for '%s': %s\n" -msgstr "błąd odczytu odpowiedzi HTTP dla ,,%s'': %s\n" +msgstr "błąd odczytu odpowiedzi HTTP dla „%s”: %s\n" #, c-format msgid "error parsing OCSP response for '%s': %s\n" -msgstr "błąd przetwarzania odpowiedzi OCSP dla ,,%s'': %s\n" +msgstr "błąd przetwarzania odpowiedzi OCSP dla „%s”: %s\n" #, c-format msgid "OCSP responder at '%s' status: %s\n" -msgstr "status respondera OCSP pod ,,%s'': %s\n" +msgstr "status respondera OCSP pod „%s”: %s\n" #, c-format msgid "failed to establish a hashing context for OCSP: %s\n" @@ -8731,7 +8731,7 @@ msgstr "nie udało się ustanowić kontekstu haszowania dla OCSP: %s\n" #, c-format msgid "hashing the OCSP response for '%s' failed: %s\n" -msgstr "liczenie skrótu odpowiedzi OCSP dla ,,%s'' nie powiodło się: %s\n" +msgstr "liczenie skrótu odpowiedzi OCSP dla „%s” nie powiodło się: %s\n" #, c-format msgid "not signed by a default OCSP signer's certificate" @@ -8776,11 +8776,11 @@ msgstr "nie zdefiniowano domyślnego podpisującego OCSP\n" #, c-format msgid "using default OCSP responder '%s'\n" -msgstr "użycie domyślnego respondera OCSP ,,%s''\n" +msgstr "użycie domyślnego respondera OCSP „%s”\n" #, c-format msgid "using OCSP responder '%s'\n" -msgstr "użycie respondera OCSP ,,%s''\n" +msgstr "użycie respondera OCSP „%s”\n" #, c-format msgid "error getting OCSP status for target certificate: %s\n" @@ -8937,11 +8937,11 @@ msgstr "" #, c-format msgid "option \"%s\" requires a program and optional arguments\n" -msgstr "opcja ,,%s'' wymaga programu i opcjonalnych argumentów\n" +msgstr "opcja „%s” wymaga programu i opcjonalnych argumentów\n" #, c-format msgid "option \"%s\" ignored due to \"%s\"\n" -msgstr "opcja ,,%s'' zignorowana z powodu ,,%s''\n" +msgstr "opcja „%s” zignorowana z powodu „%s”\n" #, c-format msgid "receiving line failed: %s\n" @@ -8957,7 +8957,7 @@ msgstr "linia skrócona z powodu osadzonego znaku Nul\n" #, c-format msgid "unknown command '%s'\n" -msgstr "nieznane polecenie ,,%s''\n" +msgstr "nieznane polecenie „%s”\n" #, c-format msgid "sending line failed: %s\n" @@ -9007,7 +9007,7 @@ msgstr "Plik konfiguracyjny komponentu %s jest uszkodzony\n" #, c-format msgid "Note: Use the command \"%s%s\" to get details.\n" -msgstr "Podpowiedź: można użyć polecenia ,,%s%s'', aby uzyskać szczegóły.\n" +msgstr "Podpowiedź: można użyć polecenia „%s%s”, aby uzyskać szczegóły.\n" #, c-format msgid "External verification of component %s failed" @@ -9018,11 +9018,11 @@ msgstr "Uwaga, określenia grup są ignorowane\n" #, c-format msgid "error closing '%s'\n" -msgstr "błąd zamykania ,,%s''\n" +msgstr "błąd zamykania „%s”\n" #, c-format msgid "error parsing '%s'\n" -msgstr "błąd analizy ,,%s''\n" +msgstr "błąd analizy „%s”\n" msgid "list all components" msgstr "lista wszystkich komponentów" @@ -9182,7 +9182,7 @@ msgstr "" #, fuzzy #~| msgid "cipher algorithm '%s' may not be used in %s mode\n" #~ msgid "AEAD algorithm '%s' may not be used in %s mode\n" -#~ msgstr "szyfr ,,%s'' nie może być używany w trybie %s\n" +#~ msgstr "szyfr „%s” nie może być używany w trybie %s\n" #~ msgid "forcing symmetric cipher %s (%d) violates recipient preferences\n" #~ msgstr "wymuszone użycie szyfru %s (%d) kłóci się z ustawieniami adresata\n" @@ -9263,74 +9263,74 @@ msgstr "" #~ msgstr "błędny numer portu %d\n" #~ msgid "scanning result for attribute '%s'\n" -#~ msgstr "przeszukiwanie wyniku pod kątem atrybutu ,,%s''\n" +#~ msgstr "przeszukiwanie wyniku pod kątem atrybutu „%s”\n" #~ msgid "error writing to stdout: %s\n" #~ msgstr "błąd zapisu na standardowe wyjście: %s\n" #~ msgid " available attribute '%s'\n" -#~ msgstr " dostępny atrybut ,,%s''\n" +#~ msgstr " dostępny atrybut „%s”\n" #~ msgid "attribute '%s' not found\n" -#~ msgstr "nie znaleziono atrybutu ,,%s''\n" +#~ msgstr "nie znaleziono atrybutu „%s”\n" #~ msgid "found attribute '%s'\n" -#~ msgstr "znaleziono atrybut ,,%s''\n" +#~ msgstr "znaleziono atrybut „%s”\n" #~ msgid "processing url '%s'\n" -#~ msgstr "przetwarzanie URL-a ,,%s''\n" +#~ msgstr "przetwarzanie URL-a „%s”\n" #~ msgid " user '%s'\n" -#~ msgstr " użytkownik ,,%s''\n" +#~ msgstr " użytkownik „%s”\n" #~ msgid " pass '%s'\n" -#~ msgstr " hasło ,,%s''\n" +#~ msgstr " hasło „%s”\n" #~ msgid " host '%s'\n" -#~ msgstr " host ,,%s''\n" +#~ msgstr " host „%s”\n" #~ msgid " port %d\n" #~ msgstr " port %d\n" #~ msgid " DN '%s'\n" -#~ msgstr " DN ,,%s''\n" +#~ msgstr " DN „%s”\n" #~ msgid " filter '%s'\n" -#~ msgstr " filtr ,,%s''\n" +#~ msgstr " filtr „%s”\n" #~ msgid " attr '%s'\n" -#~ msgstr " atrybut ,,%s''\n" +#~ msgstr " atrybut „%s”\n" #~ msgid "no host name in '%s'\n" -#~ msgstr "brak nazwy hosta w ,,%s''\n" +#~ msgstr "brak nazwy hosta w „%s”\n" #~ msgid "no attribute given for query '%s'\n" -#~ msgstr "nie podano atrybutu dla zapytania ,,%s''\n" +#~ msgstr "nie podano atrybutu dla zapytania „%s”\n" #~ msgid "WARNING: using first attribute only\n" #~ msgstr "OSTRZEŻENIE: użyto tylko pierwszego atrybutu\n" #~ msgid "LDAP init to '%s:%d' failed: %s\n" -#~ msgstr "nie udało się zainicjować LDAP na ,,%s:%d'': %s\n" +#~ msgstr "nie udało się zainicjować LDAP na „%s:%d”: %s\n" #, fuzzy #~| msgid "LDAP init to '%s:%d' failed: %s\n" #~ msgid "LDAP init to '%s' failed: %s\n" -#~ msgstr "nie udało się zainicjować LDAP na ,,%s:%d'': %s\n" +#~ msgstr "nie udało się zainicjować LDAP na „%s:%d”: %s\n" #, fuzzy #~| msgid "LDAP init to '%s:%d' failed: %s\n" #~ msgid "LDAP init to '%s' done\n" -#~ msgstr "nie udało się zainicjować LDAP na ,,%s:%d'': %s\n" +#~ msgstr "nie udało się zainicjować LDAP na „%s:%d”: %s\n" #~ msgid "binding to '%s:%d' failed: %s\n" -#~ msgstr "dowiązanie do ,,%s:%d'' nie powiodło się: %s\n" +#~ msgstr "dowiązanie do „%s:%d” nie powiodło się: %s\n" #~ msgid "searching '%s' failed: %s\n" -#~ msgstr "szukanie ,,%s'' nie powiodło się: %s\n" +#~ msgstr "szukanie „%s” nie powiodło się: %s\n" #~ msgid "start_cert_fetch: invalid pattern '%s'\n" -#~ msgstr "start_cert_fetch: błędny wzorzec ,,%s''\n" +#~ msgstr "start_cert_fetch: błędny wzorzec „%s”\n" #~ msgid "ldapserver missing" #~ msgstr "brak pola ldapserver" @@ -9353,7 +9353,7 @@ msgstr "" #~ msgstr "użycie pliku loga dla serwera" #~ msgid "no running gpg-agent - starting '%s'\n" -#~ msgstr "gpg-agent nie działa - uruchamianie ,,%s''\n" +#~ msgstr "gpg-agent nie działa - uruchamianie „%s”\n" #~ msgid "argument not expected" #~ msgstr "nieoczekiwany argument" @@ -9387,7 +9387,7 @@ msgstr "" #, fuzzy #~| msgid "unknown command '%s'\n" #~ msgid "unknown meta command" -#~ msgstr "nieznane polecenie ,,%s''\n" +#~ msgstr "nieznane polecenie „%s”\n" #, fuzzy #~| msgid "unexpected armor: " @@ -9398,31 +9398,31 @@ msgstr "" #~ msgstr "błędna opcja" #~ msgid "missing argument for option \"%.50s\"\n" -#~ msgstr "brak argumentu dla opcji ,,%.50s''\n" +#~ msgstr "brak argumentu dla opcji „%.50s”\n" #~ msgid "option \"%.50s\" does not expect an argument\n" -#~ msgstr "opcja ,,%.50s'' nie może mieć argumentów\n" +#~ msgstr "opcja „%.50s” nie może mieć argumentów\n" #~ msgid "invalid command \"%.50s\"\n" -#~ msgstr "błędne polecenie ,,%.50s''\n" +#~ msgstr "błędne polecenie „%.50s”\n" #~ msgid "option \"%.50s\" is ambiguous\n" -#~ msgstr "opcja ,,%.50s'' jest niejednoznaczna\n" +#~ msgstr "opcja „%.50s” jest niejednoznaczna\n" #~ msgid "command \"%.50s\" is ambiguous\n" -#~ msgstr "polecenie ,,%.50s'' jest niejednoznaczne\n" +#~ msgstr "polecenie „%.50s” jest niejednoznaczne\n" #~ msgid "invalid option \"%.50s\"\n" -#~ msgstr "błędna opcja ,,%.50s''\n" +#~ msgstr "błędna opcja „%.50s”\n" #~ msgid "Note: no default option file '%s'\n" -#~ msgstr "Uwaga: brak domyślnego pliku opcji ,,%s''\n" +#~ msgstr "Uwaga: brak domyślnego pliku opcji „%s”\n" #~ msgid "option file '%s': %s\n" -#~ msgstr "plik opcji ,,%s'': %s\n" +#~ msgstr "plik opcji „%s”: %s\n" #~ msgid "unable to execute program '%s': %s\n" -#~ msgstr "nie można uruchomić programu ,,%s'': %s\n" +#~ msgstr "nie można uruchomić programu „%s”: %s\n" #~ msgid "unable to execute external program\n" #~ msgstr "nie można uruchomić zewnętrznego programu\n" @@ -9443,10 +9443,10 @@ msgstr "" #~ msgstr "honorowanie rekordu PKA ustawionego w kluczu przy pobieraniu kluczy" #~ msgid "Note: Verified signer's address is '%s'\n" -#~ msgstr "Uwaga: Sprawdzony adres pospisującego to ,,%s''\n" +#~ msgstr "Uwaga: Sprawdzony adres pospisującego to „%s”\n" #~ msgid "Note: Signer's address '%s' does not match DNS entry\n" -#~ msgstr "Uwaga: Adres podpisującego ,,%s'' nie pasuje do wpisu DNS\n" +#~ msgstr "Uwaga: Adres podpisującego „%s” nie pasuje do wpisu DNS\n" #~ msgid "trustlevel adjusted to FULL due to valid PKA info\n" #~ msgstr "" @@ -9476,7 +9476,7 @@ msgstr "" #~ msgstr "lista serwerów LDAP" #~ msgid "Note: old default options file '%s' ignored\n" -#~ msgstr "Uwaga: stary domyślny plik opcji ,,%s'' został zignorowany\n" +#~ msgstr "Uwaga: stary domyślny plik opcji „%s” został zignorowany\n" #~ msgid "" #~ "@\n" @@ -9524,7 +9524,7 @@ msgstr "" #~ msgstr "%s na %s nie powiódł się ze stanem %i\n" #~ msgid "can't create temporary directory '%s': %s\n" -#~ msgstr "nie można utworzyć katalogu tymczasowego ,,%s'': %s\n" +#~ msgstr "nie można utworzyć katalogu tymczasowego „%s”: %s\n" #~ msgid "could not open %s for writing: %s\n" #~ msgstr "nie udało się otworzyć %s do zapisu: %s\n" From 6b93b92111cb8ce6d06c6f71bd62cfb314663b8c Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Tue, 12 Dec 2023 14:23:53 +0900 Subject: [PATCH 22/42] doc: Fix description of scdaemon for --disable-ccid. -- GnuPG-bug-id: 6871 Signed-off-by: NIIBE Yutaka --- doc/scdaemon.texi | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/doc/scdaemon.texi b/doc/scdaemon.texi index 6f56585e6..d4e663eff 100644 --- a/doc/scdaemon.texi +++ b/doc/scdaemon.texi @@ -241,18 +241,16 @@ Instead of using this option you might also want to install a symbolic link to the default file name (e.g. from @file{libpcsclite.so.1}). A Unicode file name may not be used on Windows. -@item --ctapi-driver @var{library} -@opindex ctapi-driver -Use @var{library} to access the smartcard reader. The current default -is @file{libtowitoko.so}. Note that the use of this interface is -deprecated; it may be removed in future releases. - @item --disable-ccid @opindex disable-ccid -Disable the integrated support for CCID compliant readers. This -allows falling back to one of the other drivers even if the internal -CCID driver can handle the reader. Note, that CCID support is only -available if libusb was available at build time. +The integrated CCID driver for CCID compliant devices can be available +when libusb was detected at build time, and it is used to access the +smartcard reader. If access via PC/SC driver is needed, please +configure this option to disable CCID driver support (if any). In +GnuPG 2.2, there was a fallback mechanism from CCID driver to PC/SC +driver. The fallback mechanism worked, because scdaemon in GnuPG 2.2 +only supported a single token/reader. To support of multiple +tokens/readers at the same time, fallback mechanism was removed. @item --reader-port @var{number_or_string} @opindex reader-port From f57717bf2314578385e184de5e417b08e22c4c87 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 12 Dec 2023 16:31:30 +0100 Subject: [PATCH 23/42] common: Improve error return for dotlock. * common/dotlock.c (dotlock_take_unix): Return a ETIMEDOUT insteaad of EACCESS on timeout. (dotlock_take_w32): Ditto. --- common/dotlock.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/common/dotlock.c b/common/dotlock.c index 74186b776..d1058845e 100644 --- a/common/dotlock.c +++ b/common/dotlock.c @@ -1061,6 +1061,7 @@ static int dotlock_take_unix (dotlock_t h, long timeout) { int wtime = 0; + int timedout = 0; int sumtime = 0; int pid; int lastpid = -1; @@ -1218,6 +1219,8 @@ dotlock_take_unix (dotlock_t h, long timeout) wtime = 0; /* Reset because owner chnaged. */ wtimereal = next_wait_interval (&wtime, &timeout); + if (!timeout) + timedout = 1; /* remember. */ sumtime += wtimereal; if (sumtime >= 1500) @@ -1233,7 +1236,7 @@ dotlock_take_unix (dotlock_t h, long timeout) goto again; } - my_set_errno (EACCES); + my_set_errno (timedout? ETIMEDOUT : EACCES); return -1; } #endif /*HAVE_POSIX_SYSTEM*/ @@ -1246,6 +1249,7 @@ static int dotlock_take_w32 (dotlock_t h, long timeout) { int wtime = 0; + int timedout = 0; int w32err; OVERLAPPED ovl; @@ -1273,6 +1277,8 @@ dotlock_take_w32 (dotlock_t h, long timeout) int wtimereal; wtimereal = next_wait_interval (&wtime, &timeout); + if (!timeout) + timedout = 1; /* remember. */ if (wtime >= 800) my_info_1 (_("waiting for lock %s...\n"), h->lockname); @@ -1281,7 +1287,7 @@ dotlock_take_w32 (dotlock_t h, long timeout) goto again; } - my_set_errno (EACCES); + my_set_errno (timedout? ETIMEDOUT : EACCES); return -1; } #endif /*HAVE_DOSISH_SYSTEM*/ From 937aeb1904eb5cbe7a8c1c686877c7a9e1196ca6 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 13 Dec 2023 10:08:12 +0100 Subject: [PATCH 24/42] common: Add an info callback to dotlock. * common/dotlock.h (enum dotlock_reasons): New. (DOTLOCK_PREPARE_CREATE): New flag. * common/dotlock.c (struct dotlock_handle): Add info_cb and info_cb_value. (dotlock_create): Support the new flag. (dotlock_finish_create): New. (read_lockfile): Silence in case of ENOENT. (dotlock_set_info_cb): New. Use callback after all error and info messages. (dotlock_take_unix, dotlock_take_w32): Allow termination by callback. --- common/dotlock.c | 158 ++++++++++++++++++++++++++++++++++++++++++--- common/dotlock.h | 20 ++++++ common/t-dotlock.c | 36 ++++++++++- 3 files changed, 203 insertions(+), 11 deletions(-) diff --git a/common/dotlock.c b/common/dotlock.c index d1058845e..261e2cce7 100644 --- a/common/dotlock.c +++ b/common/dotlock.c @@ -396,6 +396,13 @@ struct dotlock_handle int extra_fd; /* A place for the caller to store an FD. */ + /* An optional info callback - see dotlock_set_info_cb. */ + int (*info_cb)(dotlock_t, void *, + enum dotlock_reasons reason, + const char *,...); + void *info_cb_value; + + #ifdef HAVE_DOSISH_SYSTEM HANDLE lockhd; /* The W32 handle of the lock file. */ #else /*!HAVE_DOSISH_SYSTEM */ @@ -545,8 +552,15 @@ read_lockfile (dotlock_t h, int *same_node, int *r_fd) if ( (fd = open (h->lockname, O_RDONLY)) == -1 ) { int e = errno; - my_info_2 ("error opening lockfile '%s': %s\n", - h->lockname, strerror(errno) ); + if (errno != ENOENT) + { + my_info_2 ("error opening lockfile '%s': %s\n", + h->lockname, strerror(errno) ); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + "error opening lockfile '%s': %s\n", + h->lockname, strerror (errno) ); + } if (buffer != buffer_space) xfree (buffer); my_set_errno (e); /* Need to return ERRNO here. */ @@ -564,6 +578,10 @@ read_lockfile (dotlock_t h, int *same_node, int *r_fd) { int e = errno; my_info_1 ("error reading lockfile '%s'\n", h->lockname ); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + "error reading lockfile '%s': %s\n", + h->lockname, strerror (errno) ); close (fd); if (buffer != buffer_space) xfree (buffer); @@ -583,6 +601,9 @@ read_lockfile (dotlock_t h, int *same_node, int *r_fd) if (nread < 11) { my_info_1 ("invalid size of lockfile '%s'\n", h->lockname); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_INV_FILE, + "invalid size of lockfile '%s'\n", h->lockname); if (buffer != buffer_space) xfree (buffer); my_set_errno (EINVAL); @@ -594,6 +615,9 @@ read_lockfile (dotlock_t h, int *same_node, int *r_fd) || !pid ) { my_error_2 ("invalid pid %d in lockfile '%s'\n", pid, h->lockname); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_INV_FILE, + "invalid pid %d in lockfile '%s'\n", pid, h->lockname); if (buffer != buffer_space) xfree (buffer); my_set_errno (EINVAL); @@ -722,6 +746,10 @@ dotlock_create_unix (dotlock_t h, const char *file_to_lock) UNLOCK_all_lockfiles (); my_error_2 (_("failed to create temporary file '%s': %s\n"), h->tname, strerror (errno)); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_WAITING, + _("failed to create temporary file '%s': %s\n"), + h->tname, strerror (errno)); xfree (h->tname); xfree (h); my_set_errno (saveerrno); @@ -755,6 +783,10 @@ dotlock_create_unix (dotlock_t h, const char *file_to_lock) int saveerrno = errno; my_error_2 ("can't check whether hardlinks are supported for '%s': %s\n" , h->tname, strerror (saveerrno)); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_CONFIG_TEST, + "can't check whether hardlinks are supported for '%s': %s\n" + , h->tname, strerror (saveerrno)); my_set_errno (saveerrno); } goto write_failed; @@ -783,6 +815,11 @@ dotlock_create_unix (dotlock_t h, const char *file_to_lock) all_lockfiles = h->next; UNLOCK_all_lockfiles (); my_error_2 (_("error writing to '%s': %s\n"), h->tname, strerror (errno)); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + _("error writing to '%s': %s\n"), + h->tname, strerror (errno)); + if ( fd != -1 ) close (fd); unlink (h->tname); @@ -849,6 +886,10 @@ dotlock_create_w32 (dotlock_t h, const char *file_to_lock) all_lockfiles = h->next; UNLOCK_all_lockfiles (); my_error_2 (_("can't create '%s': %s\n"), h->lockname, w32_strerror (-1)); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + _("can't create '%s': %s\n"), + h->lockname, w32_strerror (-1)); xfree (h->lockname); xfree (h); my_set_errno (saveerrno); @@ -873,7 +914,10 @@ dotlock_create_w32 (dotlock_t h, const char *file_to_lock) POSIX systems a temporary file ".#lk..pid[.threadid] is used. - FLAGS must be 0. + The only defined FLAG bit is DOTLOCK_PREPARE_CREATE, which only + allocates the handle and requires a further call to + dotlock_finish_create. This can be used to set a callback between + these calls. The function returns an new handle which needs to be released using destroy_dotlock but gets also released at the termination of the @@ -895,7 +939,7 @@ dotlock_create (const char *file_to_lock, unsigned int flags) if ( !file_to_lock ) return NULL; /* Only initialization was requested. */ - if (flags) + if ((flags & ~DOTLOCK_PREPARE_CREATE)) { my_set_errno (EINVAL); return NULL; @@ -916,6 +960,24 @@ dotlock_create (const char *file_to_lock, unsigned int flags) return h; } + if ((flags & DOTLOCK_PREPARE_CREATE)) + return h; + else + return dotlock_finish_create (h, file_to_lock); +} + + +/* This function may be used along with dotlock_create (file_name, + * DOTLOCK_PREPARE_CREATE) to finish the creation call. The given + * filename shall be the same as passed to dotlock_create. On success + * the same handle H is returned, on error NULL is returned and H is + * released. */ +dotlock_t +dotlock_finish_create (dotlock_t h, const char *file_to_lock) +{ + if (!h || !file_to_lock) + return NULL; + #ifdef HAVE_DOSISH_SYSTEM return dotlock_create_w32 (h, file_to_lock); #else /*!HAVE_DOSISH_SYSTEM */ @@ -942,6 +1004,24 @@ dotlock_get_fd (dotlock_t h) } +/* Set a callback function for info diagnostics. The callback + * function CB is called with the handle, the opaque value OPAQUE, a + * reason code, and a format string with its arguments. The callback + * shall return 0 to continue operation or true in which case the + * current function will be terminated with an error. */ +void +dotlock_set_info_cb (dotlock_t h, + int (*cb)(dotlock_t, void *, + enum dotlock_reasons reason, + const char *,...), + void *opaque) +{ + h->info_cb = cb; + h->info_cb_value = opaque; +} + + + #ifdef HAVE_POSIX_SYSTEM /* Unix specific code of destroy_dotlock. */ @@ -1090,6 +1170,10 @@ dotlock_take_unix (dotlock_t h, long timeout) saveerrno = errno; my_error_2 ("lock not made: open(O_EXCL) of '%s' failed: %s\n", h->lockname, strerror (saveerrno)); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + "lock not made: open(O_EXCL) of '%s' failed: %s\n", + h->lockname, strerror (saveerrno)); my_set_errno (saveerrno); return -1; } @@ -1111,6 +1195,10 @@ dotlock_take_unix (dotlock_t h, long timeout) saveerrno = errno; my_error_2 ("lock not made: writing to '%s' failed: %s\n", h->lockname, strerror (errno)); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + "lock not made: writing to '%s' failed: %s\n", + h->lockname, strerror (errno)); close (fd); unlink (h->lockname); my_set_errno (saveerrno); @@ -1129,6 +1217,10 @@ dotlock_take_unix (dotlock_t h, long timeout) saveerrno = errno; my_error_1 ("lock not made: Oops: stat of tmp file failed: %s\n", strerror (errno)); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + "lock not made: Oops: stat of tmp file failed: %s\n", + strerror (errno)); /* In theory this might be a severe error: It is possible that link succeeded but stat failed due to changed permissions. We can't do anything about it, though. */ @@ -1150,6 +1242,9 @@ dotlock_take_unix (dotlock_t h, long timeout) { saveerrno = errno; my_info_0 ("cannot read lockfile\n"); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + "cannot read lockfile\n"); my_set_errno (saveerrno); return -1; } @@ -1158,8 +1253,8 @@ dotlock_take_unix (dotlock_t h, long timeout) } else if ( (pid == getpid() && same_node) || (same_node && kill (pid, 0) && errno == ESRCH) ) - /* Stale lockfile is detected. */ { + /* Stale lockfile is detected. */ struct stat sb; /* Check if it's unlocked during examining the lockfile. */ @@ -1202,6 +1297,9 @@ dotlock_take_unix (dotlock_t h, long timeout) unlink (h->lockname); my_info_1 (_("removing stale lockfile (created by %d)\n"), pid); close (fd); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_STALE_REMOVED, + _("removing stale lockfile (created by %d)\n"), pid); goto again; } @@ -1228,6 +1326,15 @@ dotlock_take_unix (dotlock_t h, long timeout) sumtime = 0; my_info_3 (_("waiting for lock (held by %d%s) %s...\n"), pid, maybe_dead, maybe_deadlock(h)? _("(deadlock?) "):""); + if (h->info_cb + && h->info_cb (h, h->info_cb_value, DOTLOCK_WAITING, + _("waiting for lock (held by %d%s) %s...\n"), + pid, maybe_dead, + maybe_deadlock(h)? _("(deadlock?) "):"")) + { + my_set_errno (ECANCELED); + return -1; + } } tv.tv_sec = wtimereal / 1000; @@ -1268,7 +1375,11 @@ dotlock_take_w32 (dotlock_t h, long timeout) { my_error_2 (_("lock '%s' not made: %s\n"), h->lockname, w32_strerror (w32err)); - my_set_errno (map_w32_to_errno (w32err)); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + _("lock '%s' not made: %s\n"), + h->lockname, w32_strerror (w32err)); + _set_errno (map_w32_to_errno (w32err)); return -1; } @@ -1281,7 +1392,16 @@ dotlock_take_w32 (dotlock_t h, long timeout) timedout = 1; /* remember. */ if (wtime >= 800) - my_info_1 (_("waiting for lock %s...\n"), h->lockname); + { + my_info_1 (_("waiting for lock %s...\n"), h->lockname); + if (h->info_cb + && h->info_cb (h, h->info_cb_value, DOTLOCK_WAITING, + _("waiting for lock %s...\n"), h->lockname)) + { + my_set_errno (ECANCELED); + return -1; + } + } Sleep (wtimereal); goto again; @@ -1334,12 +1454,18 @@ dotlock_release_unix (dotlock_t h) { saveerrno = errno; my_error_0 ("release_dotlock: lockfile error\n"); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + "release_dotlock: lockfile error\n"); my_set_errno (saveerrno); return -1; } if ( pid != getpid() || !same_node ) { my_error_1 ("release_dotlock: not our lock (pid=%d)\n", pid); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_CONFLICT, + "release_dotlock: not our lock (pid=%d)\n", pid); my_set_errno (EACCES); return -1; } @@ -1349,6 +1475,10 @@ dotlock_release_unix (dotlock_t h) saveerrno = errno; my_error_1 ("release_dotlock: error removing lockfile '%s'\n", h->lockname); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + "release_dotlock: error removing lockfile '%s'\n", + h->lockname); my_set_errno (saveerrno); return -1; } @@ -1369,10 +1499,15 @@ dotlock_release_w32 (dotlock_t h) memset (&ovl, 0, sizeof ovl); if (!UnlockFileEx (h->lockhd, 0, 1, 0, &ovl)) { - int saveerrno = map_w32_to_errno (GetLastError ()); + int ec = (int)GetLastError (); + my_error_2 ("release_dotlock: error removing lockfile '%s': %s\n", - h->lockname, w32_strerror (-1)); - my_set_errno (saveerrno); + h->lockname, w32_strerror (ec)); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_FILE_ERROR, + "release_dotlock: error removing lockfile '%s': %s\n", + h->lockname, w32_strerror (ec)); + my_set_errno (map_w32_to_errno (ec)); return -1; } @@ -1403,6 +1538,9 @@ dotlock_release (dotlock_t h) if ( !h->locked ) { my_debug_1 ("Oops, '%s' is not locked\n", h->lockname); + if (h->info_cb) + h->info_cb (h, h->info_cb_value, DOTLOCK_NOT_LOCKED, + "Oops, '%s' is not locked\n", h->lockname); return 0; } diff --git a/common/dotlock.h b/common/dotlock.h index 03131bb0c..915279176 100644 --- a/common/dotlock.h +++ b/common/dotlock.h @@ -97,12 +97,32 @@ extern "C" struct dotlock_handle; typedef struct dotlock_handle *dotlock_t; +enum dotlock_reasons + { + DOTLOCK_CONFIG_TEST, /* Can't check system - function terminates. */ + DOTLOCK_FILE_ERROR, /* General file error - function terminates. */ + DOTLOCK_INV_FILE, /* Invalid file - function terminates. */ + DOTLOCK_CONFLICT, /* Something is wrong - function terminates. */ + DOTLOCK_NOT_LOCKED, /* Not locked - No action required. */ + DOTLOCK_STALE_REMOVED, /* Stale lock file was removed - retrying. */ + DOTLOCK_WAITING /* Waiting for the lock - may be terminated. */ + }; + +#define DOTLOCK_PREPARE_CREATE (1<<5) /* Require dotlock_finish_create. */ + void dotlock_disable (void); dotlock_t dotlock_create (const char *file_to_lock, unsigned int flags); +dotlock_t dotlock_finish_create (dotlock_t h, const char *file_to_lock); void dotlock_set_fd (dotlock_t h, int fd); int dotlock_get_fd (dotlock_t h); +void dotlock_set_info_cb (dotlock_t h, + int (*cb)(dotlock_t, void *, + enum dotlock_reasons reason, + const char *,...), + void *opaque); void dotlock_destroy (dotlock_t h); int dotlock_take (dotlock_t h, long timeout); +int dotlock_is_locked (dotlock_t h); int dotlock_release (dotlock_t h); void dotlock_remove_lockfiles (void); diff --git a/common/t-dotlock.c b/common/t-dotlock.c index 994ef1be3..87e62bb33 100644 --- a/common/t-dotlock.c +++ b/common/t-dotlock.c @@ -52,6 +52,7 @@ #ifdef HAVE_W32_SYSTEM #define DIM(v) (sizeof(v)/sizeof((v)[0])) + const char * w32_strerror (int ec) { @@ -174,6 +175,11 @@ strconcat (const char *s1, ...) #define PGM "t-dotlock" +static int opt_silent; + + + + #ifndef HAVE_W32_SYSTEM static volatile int ctrl_c_pending_flag; static void @@ -217,6 +223,9 @@ inf (const char *format, ...) { va_list arg_ptr; + if (opt_silent) + return; + va_start (arg_ptr, format); fprintf (stderr, PGM "[%lu]: ", (unsigned long)getpid ()); vfprintf (stderr, format, arg_ptr); @@ -225,15 +234,35 @@ inf (const char *format, ...) } +static int +lock_info_cb (dotlock_t h, void *opaque, enum dotlock_reasons reason, + const char *format, ...) +{ + va_list arg_ptr; + + va_start (arg_ptr, format); + fprintf (stderr, PGM "[%lu]: info_cb: reason %d, ", + (unsigned long)getpid (), (int)reason); + vfprintf (stderr, format, arg_ptr); + va_end (arg_ptr); + return 0; +} + + static void lock_and_unlock (const char *fname) { dotlock_t h; unsigned long usec; - h = dotlock_create (fname, 0); + h = dotlock_create (fname, DOTLOCK_PREPARE_CREATE); if (!h) die ("error creating lock file for '%s': %s", fname, strerror (errno)); + dotlock_set_info_cb (h, lock_info_cb, NULL); + h = dotlock_finish_create (h, fname); + if (!h) + die ("error finishing lock file creation for '%s': %s", + fname, strerror (errno)); inf ("lock created"); do @@ -270,6 +299,11 @@ main (int argc, char **argv) ctrl_c_pending_flag = 1; argc--; } + if (argc > 1 && !strcmp (argv[1], "--silent")) + { + opt_silent = 1; + argc--; + } if (argc > 1) fname = argv[argc-1]; From c99282fc7838870b70a831924778e50cac34b3e1 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 18 Dec 2023 15:25:45 +0100 Subject: [PATCH 25/42] keyboxd: Timeout on failure to get the database lock. * kbx/backend-sqlite.c (dblock_info_cb): New. (create_or_open_database): Add arg ctrl. Add a 10 second timeout. Avoid warning on error if not locked. (be_sqlite_add_resource): Do not open the database here. (be_sqlite_search): ... but do it here. -- Note that we need to delay the initalization to the first use of the database so that we actually have a recipient for the status messages. GnuPG-bug-id: 6838 --- kbx/backend-sqlite.c | 68 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 53 insertions(+), 15 deletions(-) diff --git a/kbx/backend-sqlite.c b/kbx/backend-sqlite.c index 202897e91..ec891da6d 100644 --- a/kbx/backend-sqlite.c +++ b/kbx/backend-sqlite.c @@ -521,11 +521,45 @@ run_sql_statement (const char *sqlstr) } +static int +dblock_info_cb (dotlock_t h, void *opaque, enum dotlock_reasons reason, + const char *format, ...) +{ + ctrl_t ctrl = opaque; + va_list arg_ptr; + gpg_error_t err; + int rc = 0; + char tmpbuf[200]; + + (void)h; + + if (reason == DOTLOCK_WAITING) + { + if (format) + { + va_start (arg_ptr, format); + gpgrt_vsnprintf (tmpbuf, sizeof tmpbuf, format, arg_ptr); + va_end (arg_ptr); + } + else + *tmpbuf = 0; + err = kbxd_status_printf (ctrl, "NOTE", "database_open %u %s", + gpg_error (GPG_ERR_LOCKED), tmpbuf); + if (err) + { + log_error ("sending status line failed: %s\n", gpg_strerror (err)); + rc = 1; /* snprintf failed. */ + } + + } + return rc; +} + /* Create and initialize a new SQL database file if it does not * exists; else open it and check that all required objects are * available. */ static gpg_error_t -create_or_open_database (const char *filename) +create_or_open_database (ctrl_t ctrl, const char *filename) { gpg_error_t err; int res; @@ -542,7 +576,16 @@ create_or_open_database (const char *filename) /* To avoid races with other temporary instances of keyboxd trying * to create or update the database, we run the database with a lock * file held. */ - database_lock = dotlock_create (filename, 0); + database_lock = dotlock_create (filename, DOTLOCK_PREPARE_CREATE); + if (!database_lock) + { + err = gpg_error_from_syserror (); + if (opt.verbose) + log_info ("can't allocate dotlock handle: %s\n", gpg_strerror (err)); + goto leave; + } + dotlock_set_info_cb (database_lock, dblock_info_cb, ctrl); + database_lock = dotlock_finish_create (database_lock, filename); if (!database_lock) { err = gpg_error_from_syserror (); @@ -556,7 +599,7 @@ create_or_open_database (const char *filename) goto leave; } - if (dotlock_take (database_lock, -1)) + if (dotlock_take (database_lock, 10000)) { err = gpg_error_from_syserror (); /* This is something bad. Probably a stale lockfile. */ @@ -646,7 +689,8 @@ create_or_open_database (const char *filename) { log_error (_("error creating database '%s': %s\n"), filename, gpg_strerror (err)); - dotlock_release (database_lock); + if (dotlock_is_locked (database_lock)) + dotlock_release (database_lock); dotlock_destroy (database_lock); database_lock = NULL; } @@ -660,7 +704,6 @@ gpg_error_t be_sqlite_add_resource (ctrl_t ctrl, backend_handle_t *r_hd, const char *filename, int readonly) { - gpg_error_t err; backend_handle_t hd; (void)ctrl; @@ -672,19 +715,10 @@ be_sqlite_add_resource (ctrl_t ctrl, backend_handle_t *r_hd, return gpg_error_from_syserror (); hd->db_type = DB_TYPE_SQLITE; strcpy (hd->filename, filename); - - err = create_or_open_database (filename); - if (err) - goto leave; - hd->backend_id = be_new_backend_id (); *r_hd = hd; - hd = NULL; - - leave: - xfree (hd); - return err; + return 0; } @@ -1139,6 +1173,10 @@ be_sqlite_search (ctrl_t ctrl, log_assert (backend_hd && backend_hd->db_type == DB_TYPE_SQLITE); log_assert (request); + err = create_or_open_database (ctrl, backend_hd->filename); + if (err) + return err; + acquire_mutex (); /* Find the specific request part or allocate it. */ From bd8346f7abdd6c163d563a2ed5059b514beb7c01 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 18 Dec 2023 16:23:19 +0100 Subject: [PATCH 26/42] keyboxd: Pass lock info back to gpg and gpgsm. * g10/call-keyboxd.c (keydb_default_status_cb): New. (keydb_update_keyblock): Add new status callback. (keydb_insert_keyblock): Ditto. (keydb_delete_keyblock): Ditto. (search_status_cb): Also try the new status callback. * sm/keydb.c (keydb_default_status_cb): New. (keydb_insert_cert): Add new status callback. (keydb_delete): Ditto (search_status_cb): Also try the new status callback. -- GnuPG-bug-id: 6838 --- g10/call-keyboxd.c | 26 +++++++++++++++++++++++--- kbx/kbx-client-util.c | 8 ++++---- sm/keydb.c | 23 +++++++++++++++++++++-- 3 files changed, 48 insertions(+), 9 deletions(-) diff --git a/g10/call-keyboxd.c b/g10/call-keyboxd.c index 7f4d5f493..121b7aa2a 100644 --- a/g10/call-keyboxd.c +++ b/g10/call-keyboxd.c @@ -385,6 +385,23 @@ keydb_get_keyblock (KEYDB_HANDLE hd, kbnode_t *ret_kb) } +/* Default status callback used to show diagnostics from the keyboxd */ +static gpg_error_t +keydb_default_status_cb (void *opaque, const char *line) +{ + const char *s; + + (void)opaque; + + if ((s = has_leading_keyword (line, "NOTE"))) + log_info (_("Note: %s\n"), s); + else if ((s = has_leading_keyword (line, "WARNING"))) + log_info (_("WARNING: %s\n"), s); + + return 0; +} + + /* Communication object for STORE commands. */ struct store_parm_s @@ -464,7 +481,8 @@ keydb_update_keyblock (ctrl_t ctrl, KEYDB_HANDLE hd, kbnode_t kb) err = assuan_transact (hd->kbl->ctx, "STORE --update", NULL, NULL, store_inq_cb, &parm, - NULL, NULL); + keydb_default_status_cb, hd); + leave: iobuf_close (iobuf); @@ -515,7 +533,7 @@ keydb_insert_keyblock (KEYDB_HANDLE hd, kbnode_t kb) err = assuan_transact (hd->kbl->ctx, "STORE --insert", NULL, NULL, store_inq_cb, &parm, - NULL, NULL); + keydb_default_status_cb, hd); leave: iobuf_close (iobuf); @@ -561,7 +579,7 @@ keydb_delete_keyblock (KEYDB_HANDLE hd) err = assuan_transact (hd->kbl->ctx, line, NULL, NULL, NULL, NULL, - NULL, NULL); + keydb_default_status_cb, hd); leave: return err; @@ -648,6 +666,8 @@ search_status_cb (void *opaque, const char *line) } } } + else + err = keydb_default_status_cb (opaque, line); return err; } diff --git a/kbx/kbx-client-util.c b/kbx/kbx-client-util.c index f9d06fab8..f6456a508 100644 --- a/kbx/kbx-client-util.c +++ b/kbx/kbx-client-util.c @@ -399,10 +399,10 @@ kbx_client_data_cmd (kbx_client_data_t kcd, const char *command, status_cb, status_cb_value); if (err) { - if (gpg_err_code (err) != GPG_ERR_NOT_FOUND - && gpg_err_code (err) != GPG_ERR_NOTHING_FOUND) - log_debug ("%s: finished command with error: %s\n", - __func__, gpg_strerror (err)); + /* if (gpg_err_code (err) != GPG_ERR_NOT_FOUND */ + /* && gpg_err_code (err) != GPG_ERR_NOTHING_FOUND) */ + /* log_debug ("%s: finished command with error: %s\n", */ + /* __func__, gpg_strerror (err)); */ xfree (get_membuf (&mb, &len)); kcd->dlineerr = err; goto leave; diff --git a/sm/keydb.c b/sm/keydb.c index 38737c96a..411720513 100644 --- a/sm/keydb.c +++ b/sm/keydb.c @@ -1129,6 +1129,23 @@ keydb_set_flags (KEYDB_HANDLE hd, int which, int idx, unsigned int value) } +/* Default status callback used to show diagnostics from the keyboxd */ +static gpg_error_t +keydb_default_status_cb (void *opaque, const char *line) +{ + const char *s; + + (void)opaque; + + if ((s = has_leading_keyword (line, "NOTE"))) + log_info (_("Note: %s\n"), s); + else if ((s = has_leading_keyword (line, "WARNING"))) + log_info (_("WARNING: %s\n"), s); + + return 0; +} + + /* Communication object for Keyboxd STORE commands. */ struct store_parm_s @@ -1192,7 +1209,7 @@ keydb_insert_cert (KEYDB_HANDLE hd, ksba_cert_t cert) err = assuan_transact (hd->kbl->ctx, "STORE --insert", NULL, NULL, store_inq_cb, &parm, - NULL, NULL); + keydb_default_status_cb, hd); goto leave; } @@ -1327,7 +1344,7 @@ keydb_delete (KEYDB_HANDLE hd) err = assuan_transact (hd->kbl->ctx, line, NULL, NULL, NULL, NULL, - NULL, NULL); + keydb_default_status_cb, hd); goto leave; } @@ -1555,6 +1572,8 @@ search_status_cb (void *opaque, const char *line) } } } + else + err = keydb_default_status_cb (opaque, line); return err; } From 1c5584c395d75121046e42a27d60df7b6c6e660e Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Tue, 19 Dec 2023 15:56:13 +0900 Subject: [PATCH 27/42] kbx: Create public-keys.d, after creating the homedir. * kbx/keyboxd.c (create_directories): Following the behavior of gpg-agent, call create_public_keys_directory after mkdir. -- Signed-off-by: NIIBE Yutaka --- kbx/keyboxd.c | 1 + tools/dotlock.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 tools/dotlock.c diff --git a/kbx/keyboxd.c b/kbx/keyboxd.c index 88a350a08..f875e115d 100644 --- a/kbx/keyboxd.c +++ b/kbx/keyboxd.c @@ -1262,6 +1262,7 @@ create_directories (void) { if (!opt.quiet) log_info (_("directory '%s' created\n"), home); + create_public_keys_directory (home); } } } diff --git a/tools/dotlock.c b/tools/dotlock.c new file mode 100644 index 000000000..27ae5205b --- /dev/null +++ b/tools/dotlock.c @@ -0,0 +1,87 @@ +/* dotlock.c - Command to handle dotlock. + * Copyright (C) 2023 g10 Code GmbH + * + * This file is part of GnuPG. + * + * GnuPG is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * GnuPG is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_W32_SYSTEM +# include "windows.h" +#else +#include +#endif + +#include "dotlock.h" + +static void +lock (const char *fname) +{ + dotlock_t h; + unsigned int flags = DOTLOCK_FLAG_LOCK_BY_PARENT; + + h = dotlock_create (fname, flags); + if (!h) + die ("error creating lock file for '%s': %s", fname, strerror (errno)); + + if (dotlock_take (h, 0)) + die ("error taking lock"); +} + +static void +unlock (const char *fname, long timeout) +{ + dotlock_t h; + unsigned int flags = (DOTLOCK_FLAG_LOCK_BY_PARENT + | DOTLOCK_FLAG_READONLY); + + h = dotlock_create (fname, flags); + if (!h) + die ("error creating lock file for '%s': %s", fname, strerror (errno)); + + dotlock_destroy (h); +} + + +int +main (int argc, char **argv) +{ + const char *fname; + + fname = argv[argc-1]; + + if () + lock (fname); + else + unlock (fname); + + return 0; +} + + +/* +Local Variables: +compile-command: "cc -Wall -O2 -D_FILE_OFFSET_BITS=64 -o t-dotlock t-dotlock.c" +End: +*/ From 6b4fd3a5da7e018166d154d6514161d939f5c4f1 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Tue, 19 Dec 2023 15:59:41 +0900 Subject: [PATCH 28/42] common: Enhance dotlock, so that we can have a CLI util. * common/dotlock.h (DOTLOCK_LOCK_BY_PARENT, DOTLOCK_LOCKED): New. * common/dotlock.c [HAVE_POSIX_SYSTEM]: Include . (dotlock_get_process_id, dotlock_detect_tname): New. (dotlock_create_unix): Handle the case when no_write option is specified. Not creating the lock file, but detect the the file of tname. (dotlock_create) [HAVE_POSIX_SYSTEM]: Add support of DOTLOCK_LOCK_BY_PARENT and DOTLOCK_LOCKED for dotlock CLI util. (dotlock_take_unix): Support the case of DOTLOCK_LOCK_BY_PARENT. -- Signed-off-by: NIIBE Yutaka --- common/dotlock.c | 144 +++++++++++++++++++++++++++++++++++++++++++---- common/dotlock.h | 5 +- 2 files changed, 138 insertions(+), 11 deletions(-) diff --git a/common/dotlock.c b/common/dotlock.c index 261e2cce7..f4d7243e0 100644 --- a/common/dotlock.c +++ b/common/dotlock.c @@ -291,6 +291,7 @@ # include # include # include +# include #endif #include #include @@ -393,6 +394,8 @@ struct dotlock_handle unsigned int locked:1; /* Lock status. */ unsigned int disable:1; /* If true, locking is disabled. */ unsigned int use_o_excl:1; /* Use open (O_EXCL) for locking. */ + unsigned int by_parent:1; /* Parent does the locking. */ + unsigned int no_write:1; /* No write to the lockfile. */ int extra_fd; /* A place for the caller to store an FD. */ @@ -679,6 +682,80 @@ use_hardlinks_p (const char *tname) #ifdef HAVE_POSIX_SYSTEM +static int +dotlock_get_process_id (dotlock_t h) +{ + return h->by_parent? (int)getppid(): (int)getpid(); +} + +static int +dotlock_detect_tname (dotlock_t h) +{ + struct stat sb; + DIR *dir; + char *dirname; + char *basename; + struct dirent *d; + int r; + + if (stat (h->lockname, &sb)) + return -1; + + basename = make_basename (h->lockname, NULL); + dirname = make_dirname (h->lockname); + + dir = opendir (dirname); + if (dir == NULL) + { + xfree (basename); + xfree (dirname); + return -1; + } + + while ((d = readdir (dir))) + if (sb.st_ino == d->d_ino && strcmp (d->d_name, basename)) + break; + + if (d) + { + int len = strlen (h->tname); + int dlen = strlen (d->d_name); + const char *tname_path; + + if (dlen > len) + { + xfree (basename); + xfree (dirname); + return -1; + } + + strcpy (stpcpy (stpcpy (h->tname, dirname), DIRSEP_S), d->d_name); + h->use_o_excl = 0; + tname_path = strchr (h->tname + strlen (dirname) + 2, '.'); + if (!tname_path) + { + xfree (basename); + xfree (dirname); + return -1; + } + h->nodename_off = tname_path - h->tname + 1; + } + else + h->use_o_excl = 1; + + r = closedir (dir); + if (r) + { + xfree (basename); + xfree (dirname); + return r; + } + + xfree (basename); + xfree (dirname); + return 0; +} + /* Locking core for Unix. It used a temporary file and the link system call to make locking an atomic operation. */ static dotlock_t @@ -691,8 +768,10 @@ dotlock_create_unix (dotlock_t h, const char *file_to_lock) int dirpartlen; struct utsname utsbuf; size_t tnamelen; + int pid; - snprintf (pidstr, sizeof pidstr, "%10d\n", (int)getpid() ); + pid = dotlock_get_process_id (h); + snprintf (pidstr, sizeof pidstr, "%10d\n", pid); /* Create a temporary file. */ if ( uname ( &utsbuf ) ) @@ -726,10 +805,17 @@ dotlock_create_unix (dotlock_t h, const char *file_to_lock) } h->nodename_len = strlen (nodename); + if (h->no_write) + { + memset (h->tname, '_', tnamelen); + h->tname[tnamelen] = 0; + goto skip_write; + } + snprintf (h->tname, tnamelen, "%.*s/.#lk%p.", dirpartlen, dirpart, h ); h->nodename_off = strlen (h->tname); snprintf (h->tname+h->nodename_off, tnamelen - h->nodename_off, - "%s.%d", nodename, (int)getpid ()); + "%s.%d", nodename, pid); do { @@ -792,6 +878,7 @@ dotlock_create_unix (dotlock_t h, const char *file_to_lock) goto write_failed; } + skip_write: h->lockname = xtrymalloc (strlen (file_to_lock) + 6 ); if (!h->lockname) { @@ -807,6 +894,20 @@ dotlock_create_unix (dotlock_t h, const char *file_to_lock) strcpy (stpcpy (h->lockname, file_to_lock), EXTSEP_S "lock"); UNLOCK_all_lockfiles (); + if (h->no_write) + { + if (dotlock_detect_tname (h) < 0) + { + xfree (h->lockname); + xfree (h->tname); + xfree (h); + my_set_errno (EACCES); + return NULL; + } + + h->locked = 1; + } + return h; write_failed: @@ -914,10 +1015,15 @@ dotlock_create_w32 (dotlock_t h, const char *file_to_lock) POSIX systems a temporary file ".#lk..pid[.threadid] is used. - The only defined FLAG bit is DOTLOCK_PREPARE_CREATE, which only - allocates the handle and requires a further call to - dotlock_finish_create. This can be used to set a callback between - these calls. + FLAGS may include DOTLOCK_PREPARE_CREATE bit, which only allocates + the handle and requires a further call to dotlock_finish_create. + This can be used to set a callback between these calls. + + FLAGS may include DOTLOCK_LOCK_BY_PARENT bit, when it's the parent + process controlling the lock. This is used by dotlock util. + + FLAGS may include DOTLOCK_LOCKED bit, when it should not create the + lockfile, but to unlock. This is used by dotlock util. The function returns an new handle which needs to be released using destroy_dotlock but gets also released at the termination of the @@ -929,8 +1035,13 @@ dotlock_create (const char *file_to_lock, unsigned int flags) { static int initialized; dotlock_t h; +#ifndef HAVE_DOSISH_SYSTEM + int by_parent = 0; + int no_write = 0; +#endif - if ( !initialized ) + if ( !(flags & DOTLOCK_LOCK_BY_PARENT) + && !initialized ) { atexit (dotlock_remove_lockfiles); initialized = 1; @@ -939,6 +1050,14 @@ dotlock_create (const char *file_to_lock, unsigned int flags) if ( !file_to_lock ) return NULL; /* Only initialization was requested. */ +#ifndef HAVE_DOSISH_SYSTEM + if ((flags & DOTLOCK_LOCK_BY_PARENT) || (flags & DOTLOCK_LOCKED)) + { + by_parent = !!(flags & DOTLOCK_LOCK_BY_PARENT); + no_write = !!(flags & DOTLOCK_LOCKED); + flags &= ~(DOTLOCK_LOCK_BY_PARENT | DOTLOCK_LOCKED); + } +#endif if ((flags & ~DOTLOCK_PREPARE_CREATE)) { my_set_errno (EINVAL); @@ -949,6 +1068,10 @@ dotlock_create (const char *file_to_lock, unsigned int flags) if (!h) return NULL; h->extra_fd = -1; +#ifndef HAVE_DOSISH_SYSTEM + h->by_parent = by_parent; + h->no_write = no_write; +#endif if (never_lock) { @@ -1181,7 +1304,8 @@ dotlock_take_unix (dotlock_t h, long timeout) { char pidstr[16]; - snprintf (pidstr, sizeof pidstr, "%10d\n", (int)getpid()); + snprintf (pidstr, sizeof pidstr, "%10d\n", + dotlock_get_process_id (h)); if (write (fd, pidstr, 11 ) == 11 && write (fd, h->tname + h->nodename_off,h->nodename_len) == h->nodename_len @@ -1251,7 +1375,7 @@ dotlock_take_unix (dotlock_t h, long timeout) my_info_0 ("lockfile disappeared\n"); goto again; } - else if ( (pid == getpid() && same_node) + else if ( (pid == dotlock_get_process_id (h) && same_node && !h->by_parent) || (same_node && kill (pid, 0) && errno == ESRCH) ) { /* Stale lockfile is detected. */ @@ -1460,7 +1584,7 @@ dotlock_release_unix (dotlock_t h) my_set_errno (saveerrno); return -1; } - if ( pid != getpid() || !same_node ) + if ( pid != dotlock_get_process_id (h) || !same_node ) { my_error_1 ("release_dotlock: not our lock (pid=%d)\n", pid); if (h->info_cb) diff --git a/common/dotlock.h b/common/dotlock.h index 915279176..0f52d4037 100644 --- a/common/dotlock.h +++ b/common/dotlock.h @@ -108,7 +108,10 @@ enum dotlock_reasons DOTLOCK_WAITING /* Waiting for the lock - may be terminated. */ }; -#define DOTLOCK_PREPARE_CREATE (1<<5) /* Require dotlock_finish_create. */ +/* Flags for dotlock_create. */ +#define DOTLOCK_PREPARE_CREATE (1U << 5) /* Require dotlock_finish_create. */ +#define DOTLOCK_LOCK_BY_PARENT (1U << 6) /* Used by dotlock util. */ +#define DOTLOCK_LOCKED (1U << 7) /* Used by dotlock util. */ void dotlock_disable (void); dotlock_t dotlock_create (const char *file_to_lock, unsigned int flags); From 8eff1d4c511088ff40d5fac13c00cdd07467eebb Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 19 Dec 2023 10:04:49 +0100 Subject: [PATCH 29/42] common: Improve the parsing of gpgconf.ctl variables. * common/homedir.c (unix_rootdir): Simplify. -- This also relaxes the syntax in that the equal sign may now be surrounded by any number of spaces. --- common/homedir.c | 57 +++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/common/homedir.c b/common/homedir.c index 286685feb..641dba1ae 100644 --- a/common/homedir.c +++ b/common/homedir.c @@ -604,43 +604,40 @@ unix_rootdir (int want_sysconfdir) sysconfdir = NULL; while ((length = es_read_line (fp, &line, &linelen, NULL)) > 0) { + static const char *names[] = + { + "rootdir", + "sysconfdir", + ".enable" + }; + int i; + size_t n; + /* Strip NL and CR, if present. */ while (length > 0 && (line[length - 1] == '\n' || line[length - 1] == '\r')) line[--length] = 0; trim_spaces (line); - if (!strncmp (line, "rootdir=", 8)) + /* Find the stamement. */ + name = NULL; + for (i=0; i < DIM (names); i++) { - name = "rootdir"; - p = line + 8; + n = strlen (names[i]); + if (!strncmp (line, names[i], n)) + { + while (line[n] == ' ' || line[n] == '\t') + n++; + if (line[n] == '=') + { + name = names[i]; + p = line + n + 1; + break; + } + } } - else if (!strncmp (line, "rootdir =", 9)) /* (What a kludge) */ - { - name = "rootdir"; - p = line + 9; - } - else if (!strncmp (line, "sysconfdir=", 11)) - { - name = "sysconfdir"; - p = line + 11; - } - else if (!strncmp (line, "sysconfdir =", 12)) /* (What a kludge) */ - { - name = "sysconfdir"; - p = line + 12; - } - else if (!strncmp (line, ".enable=", 8)) - { - name = ".enable"; - p = line + 8; - } - else if (!strncmp (line, ".enable =", 9)) - { - name = ".enable"; - p = line + 9; - } - else - continue; + if (!name) + continue; /* Statement not known. */ + trim_spaces (p); p = substitute_envvars (p); if (!p) From 5488ad0517422b31a7be46a7575f5f5492e9fee1 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 20 Dec 2023 10:28:02 +0900 Subject: [PATCH 30/42] common: Fix a possible resource leak for dotlock. * common/dotlock.c (dotlock_destroy_unix): Don't release ->TNAME here. (dotlock_destroy): Release the memory unconditionally. -- Signed-off-by: NIIBE Yutaka --- common/dotlock.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/common/dotlock.c b/common/dotlock.c index f4d7243e0..06e3910ad 100644 --- a/common/dotlock.c +++ b/common/dotlock.c @@ -1155,7 +1155,6 @@ dotlock_destroy_unix (dotlock_t h) unlink (h->lockname); if (h->tname && !h->use_o_excl) unlink (h->tname); - xfree (h->tname); } #endif /*HAVE_POSIX_SYSTEM*/ @@ -1208,8 +1207,12 @@ dotlock_destroy (dotlock_t h) #else /* !HAVE_DOSISH_SYSTEM */ dotlock_destroy_unix (h); #endif /* HAVE_DOSISH_SYSTEM */ - xfree (h->lockname); } + +#ifdef HAVE_POSIX_SYSTEM + xfree (h->tname); +#endif + xfree (h->lockname); xfree(h); } From 2f6fec3f482d3a6660ce9bf299c0ff7fae21b80b Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 20 Dec 2023 10:38:08 +0900 Subject: [PATCH 31/42] common: Support not-removing the lockfile by dotlock_destroy. * common/dotlock.c (dotlock_destroy): Keep the lock when DOTLOCK_LOCK_BY_PARENT. -- Signed-off-by: NIIBE Yutaka --- common/dotlock.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/common/dotlock.c b/common/dotlock.c index 06e3910ad..84d0b509c 100644 --- a/common/dotlock.c +++ b/common/dotlock.c @@ -1200,8 +1200,11 @@ dotlock_destroy (dotlock_t h) UNLOCK_all_lockfiles (); /* Then destroy the lock. */ - if (!h->disable) + if (!h->disable + && (!h->by_parent || h->no_write)) { + /* NOTE: under the condition of (by_parent && !no_write), + it doesn't come here. So, the lock file remains. */ #ifdef HAVE_DOSISH_SYSTEM dotlock_destroy_w32 (h); #else /* !HAVE_DOSISH_SYSTEM */ From b298322d36d4fc9a8d86515410e1d3f2cddea19f Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 20 Dec 2023 10:53:50 +0900 Subject: [PATCH 32/42] common: Clean up the temporary file at dotlock_destroy. * common/dotlock.c (dotlock_destroy): Clean up the temporary file created when it fails. -- Signed-off-by: NIIBE Yutaka --- common/dotlock.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/dotlock.c b/common/dotlock.c index 84d0b509c..fe6d7fe71 100644 --- a/common/dotlock.c +++ b/common/dotlock.c @@ -1213,6 +1213,12 @@ dotlock_destroy (dotlock_t h) } #ifdef HAVE_POSIX_SYSTEM + /* When DOTLOCK_LOCK_BY_PARENT and lock fails, + the temporary file created should be removed. */ + if (h->by_parent && !h->no_write && !h->locked) + if (h->tname && !h->use_o_excl) + unlink (h->tname); + xfree (h->tname); #endif xfree (h->lockname); From 1f04993cd0acaf6fb4982e822f8d8b5722197e03 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 20 Dec 2023 10:55:26 +0900 Subject: [PATCH 33/42] common: Add dotlock util under libexec. * tools/Makefile.am (libexec_PROGRAMS): Add dotlock. * tools/dotlock.c: Finish the first implementation. -- Signed-off-by: NIIBE Yutaka --- tools/Makefile.am | 8 ++++- tools/dotlock.c | 88 +++++++++++++++++++++++++++++++---------------- 2 files changed, 65 insertions(+), 31 deletions(-) diff --git a/tools/Makefile.am b/tools/Makefile.am index 769a81a00..b813f55f9 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -69,7 +69,7 @@ else bin_PROGRAMS += gpgconf-w32 endif -libexec_PROGRAMS = gpg-check-pattern gpg-pair-tool +libexec_PROGRAMS = gpg-check-pattern gpg-pair-tool dotlock if !HAVE_W32_SYSTEM libexec_PROGRAMS += gpg-auth endif @@ -203,6 +203,12 @@ gpg_auth_LDADD = $(common_libs) \ $(GPG_ERROR_LIBS) \ $(LIBINTL) $(NETLIBS) $(LIBICONV) +dotlock_SOURCES = dotlock.c +dotlock_LDADD = $(common_libs) \ + $(LIBGCRYPT_LIBS) \ + $(GPG_ERROR_LIBS) \ + $(LIBINTL) $(NETLIBS) $(LIBICONV) + # Instead of a symlink we install a simple wrapper script for the new # gpg-wks-client location. We assume bin is a sibling of libexec. install-exec-local: diff --git a/tools/dotlock.c b/tools/dotlock.c index 27ae5205b..3dfb86c80 100644 --- a/tools/dotlock.c +++ b/tools/dotlock.c @@ -1,4 +1,4 @@ -/* dotlock.c - Command to handle dotlock. +/* dotlock.c - A utility to handle dotlock by command line. * Copyright (C) 2023 g10 Code GmbH * * This file is part of GnuPG. @@ -25,63 +25,91 @@ #include #include #include -#include #include -#ifdef HAVE_W32_SYSTEM -# include "windows.h" -#else -#include -#endif -#include "dotlock.h" +#include +#include "../common/util.h" +#include "../common/stringhelp.h" +#include "../common/dotlock.h" static void -lock (const char *fname) +lock (const char *filename) { dotlock_t h; - unsigned int flags = DOTLOCK_FLAG_LOCK_BY_PARENT; + unsigned int flags = DOTLOCK_LOCK_BY_PARENT; - h = dotlock_create (fname, flags); + h = dotlock_create (filename, flags); if (!h) - die ("error creating lock file for '%s': %s", fname, strerror (errno)); + { + perror ("error creating lock file"); + exit (1); + } if (dotlock_take (h, 0)) - die ("error taking lock"); + { + perror ("error taking lock"); + dotlock_destroy (h); + exit (1); + } + + dotlock_destroy (h); } static void -unlock (const char *fname, long timeout) +unlock (const char *filename) { dotlock_t h; - unsigned int flags = (DOTLOCK_FLAG_LOCK_BY_PARENT - | DOTLOCK_FLAG_READONLY); + unsigned int flags = (DOTLOCK_LOCK_BY_PARENT | DOTLOCK_LOCKED); - h = dotlock_create (fname, flags); + h = dotlock_create (filename, flags); if (!h) - die ("error creating lock file for '%s': %s", fname, strerror (errno)); + { + perror ("no lock file"); + exit (1); + } + dotlock_release (h); dotlock_destroy (h); } int -main (int argc, char **argv) +main (int argc, const char *argv[]) { + const char *name; const char *fname; + char *filename; + int op_unlock = 0; - fname = argv[argc-1]; + if (argc >= 2 && !strcmp (argv[1], "-u")) + { + op_unlock = 1; + argc--; + argv++; + } - if () - lock (fname); + if (argc != 2) + { + printf ("Usage: %s [-u] NAME\n", argv[0]); + exit (1); + } + + name = argv[1]; + + if (!strcmp (name, "pubring.db")) + /* Keybox pubring.db lock */ + fname = "public-keys.d/pubring.db"; else - unlock (fname); + /* Other locks. */ + fname = name; + filename = make_absfilename (gnupg_homedir (), fname, NULL); + + if (op_unlock) + unlock (filename); + else + lock (filename); + + xfree (filename); return 0; } - - -/* -Local Variables: -compile-command: "cc -Wall -O2 -D_FILE_OFFSET_BITS=64 -o t-dotlock t-dotlock.c" -End: -*/ From 93b5ba38dc3acc78fd93af7dcad22332af32f724 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 20 Dec 2023 11:00:22 +0900 Subject: [PATCH 34/42] tools: Integrate the dotlock tool into gpgconf. * tools/gpgconf.c (dotlock_tool): New. (main): Add --lock and --unlock commands. -- Signed-off-by: NIIBE Yutaka --- tools/gpgconf.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/tools/gpgconf.c b/tools/gpgconf.c index f34248c40..76bdebf1a 100644 --- a/tools/gpgconf.c +++ b/tools/gpgconf.c @@ -34,6 +34,7 @@ #include "../common/init.h" #include "../common/status.h" #include "../common/exechelp.h" +#include "../common/dotlock.h" #ifdef HAVE_W32_SYSTEM #include @@ -76,7 +77,9 @@ enum cmd_and_opt_values aCreateSocketDir, aRemoveSocketDir, aApplyProfile, - aShowCodepages + aShowCodepages, + aDotlockLock, + aDotlockUnlock }; @@ -109,7 +112,10 @@ static gpgrt_opt_t opts[] = { aRemoveSocketDir, "remove-socketdir", 256, "@"}, ARGPARSE_c (aShowVersions, "show-versions", ""), ARGPARSE_c (aShowConfigs, "show-configs", ""), + /* hidden commands: for debugging */ ARGPARSE_c (aShowCodepages, "show-codepages", "@"), + ARGPARSE_c (aDotlockLock, "lock", "@"), + ARGPARSE_c (aDotlockUnlock, "unlock", "@"), { 301, NULL, 0, N_("@\nOptions:\n ") }, @@ -604,6 +610,41 @@ query_swdb (estream_t out, const char *name, const char *current_version) } +#if !defined(HAVE_W32_SYSTEM) +/* dotlock tool to handle dotlock by command line + DO_LOCK: 1 for to lock, 0 for unlock + FILENAME: filename for the dotlock */ +static void +dotlock_tool (int do_lock, const char *filename) +{ + dotlock_t h; + unsigned int flags = DOTLOCK_LOCK_BY_PARENT; + + if (!do_lock) + flags |= DOTLOCK_LOCKED; + + h = dotlock_create (filename, flags); + if (!h) + { + if (do_lock) + log_error ("error creating the lock file\n"); + else + log_error ("no lock file found\n"); + return; + } + + if (do_lock) + { + if (dotlock_take (h, 0)) + log_error ("error taking the lock\n"); + } + else + dotlock_release (h); + + dotlock_destroy (h); +} +#endif + /* gpgconf main. */ int main (int argc, char **argv) @@ -669,6 +710,8 @@ main (int argc, char **argv) case aShowVersions: case aShowConfigs: case aShowCodepages: + case aDotlockLock: + case aDotlockUnlock: cmd = pargs.r_opt; break; @@ -1024,7 +1067,32 @@ main (int argc, char **argv) #endif break; + case aDotlockLock: + case aDotlockUnlock: +#if !defined(HAVE_W32_SYSTEM) + if (!fname) + { + es_fprintf (es_stderr, "usage: %s [options] lock|unlock NAME", + GPGCONF_NAME); + es_putc ('\n', es_stderr); + es_fputs (_("Need one NAME argument"), es_stderr); + es_putc ('\n', es_stderr); + gpgconf_failure (GPG_ERR_USER_2); + } + else + { + char *filename; + /* Keybox pubring.db lock is under public-keys.d. */ + if (!strcmp (fname, "pubring.db")) + fname = "public-keys.d/pubring.db"; + + filename = make_absfilename (gnupg_homedir (), fname, NULL); + dotlock_tool (cmd == aDotlockLock, filename); + xfree (filename); + } +#endif + break; } if (outfp != es_stdout) From 5d651fc8fd47d6e9193fb904abd0fb4bb1815911 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 20 Dec 2023 15:30:37 +0100 Subject: [PATCH 35/42] doc: Explain what to put into mailcap for gpg-wks-client. -- --- doc/wks.texi | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/doc/wks.texi b/doc/wks.texi index 26d8b96f6..a8d0455e5 100644 --- a/doc/wks.texi +++ b/doc/wks.texi @@ -243,6 +243,21 @@ Display a brief help page and exit. @end table +@noindent +@mansect examples +@chapheading Examples + +To use the services with clients lacking integrated support, the +mailcap mechanism can be used. Simply put: +@example +application/vnd.gnupg.wks; \ + @value{BINDIR}/gpg-wks-client -v --read --send; \ + needsterminal; \ + description=WKS message +@end example +into the @file{/etc/mailcap}. This assumes that a /usr/lib/sendmail +is installed. With this configuration any real mail programs will run +gpg-wks-client for messages received from a Web Key Service. @mansect see also @ifset isman From 812f9880591e54601d0fb32f5832e6c5029358be Mon Sep 17 00:00:00 2001 From: Mario Haustein via Gnupg-devel Date: Tue, 28 Nov 2023 23:09:21 +0100 Subject: [PATCH 36/42] scd:p15: Add support for CardOS 5.4 * scd/app-p15.c (CARD_TYPE_CARDOS_54): New. --- scd/app-p15.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scd/app-p15.c b/scd/app-p15.c index 85c28d9a7..a10053d5a 100644 --- a/scd/app-p15.c +++ b/scd/app-p15.c @@ -74,6 +74,7 @@ typedef enum CARD_TYPE_MICARDO, CARD_TYPE_CARDOS_50, CARD_TYPE_CARDOS_53, + CARD_TYPE_CARDOS_54, CARD_TYPE_AET, /* A.E.T. Europe JCOP card. */ CARD_TYPE_BELPIC, /* Belgian eID card specs. */ CARD_TYPE_STARCOS_32 @@ -124,6 +125,8 @@ static struct CARD_TYPE_CARDOS_50 }, /* CardOS 5.0 */ { 11, X("\x3b\xd2\x18\x00\x81\x31\xfe\x58\xc9\x03\x16"), CARD_TYPE_CARDOS_53 }, /* CardOS 5.3 */ + { 11, X("\x3b\xd2\x18\x00\x81\x31\xfe\x58\xc9\x04\x11"), + CARD_TYPE_CARDOS_54 }, /* CardOS 5.4 */ { 24, X("\x3b\xfe\x18\x00\x00\x80\x31\xfe\x45\x53\x43\x45" "\x36\x30\x2d\x43\x44\x30\x38\x31\x2d\x6e\x46\xa9"), CARD_TYPE_AET }, @@ -135,9 +138,10 @@ static struct #undef X -/* Macro to test for CardOS 5.0 and 5.3. */ +/* Macro to test for CardOS 5.0, 5.3 and 5.4. */ #define IS_CARDOS_5(a) ((a)->app_local->card_type == CARD_TYPE_CARDOS_50 \ - || (a)->app_local->card_type == CARD_TYPE_CARDOS_53) + || (a)->app_local->card_type == CARD_TYPE_CARDOS_53 \ + || (a)->app_local->card_type == CARD_TYPE_CARDOS_54) /* The default PKCS-15 home DF */ #define DEFAULT_HOME_DF 0x5015 @@ -542,6 +546,7 @@ cardtype2str (card_type_t cardtype) case CARD_TYPE_MICARDO: return "Micardo"; case CARD_TYPE_CARDOS_50: return "CardOS 5.0"; case CARD_TYPE_CARDOS_53: return "CardOS 5.3"; + case CARD_TYPE_CARDOS_54: return "CardOS 5.4"; case CARD_TYPE_BELPIC: return "Belgian eID"; case CARD_TYPE_AET: return "AET"; case CARD_TYPE_STARCOS_32:return "STARCOS 3.2"; @@ -6302,6 +6307,7 @@ app_select_p15 (app_t app) { case CARD_TYPE_CARDOS_50: case CARD_TYPE_CARDOS_53: + case CARD_TYPE_CARDOS_54: direct = 1; break; case CARD_TYPE_AET: From 0b85a9ac09d1593d472ac6f2f51af7608b0dd617 Mon Sep 17 00:00:00 2001 From: Mario Haustein via Gnupg-devel Date: Tue, 28 Nov 2023 23:09:26 +0100 Subject: [PATCH 37/42] scd:p15: Add support for D-Trust Card 4.1/4.4 * scd/app-p15.c (CARD_PRODUCT_DTRUST4) New. (app_select_p15): This cards uses a different AID for PKCS#15 application (do_sign): The card doesn't support MSE SET, but requires MSE RESTORE to a predefined template. (do_decipher): Ditto. --- scd/app-p15.c | 80 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 71 insertions(+), 9 deletions(-) diff --git a/scd/app-p15.c b/scd/app-p15.c index a10053d5a..1ff4f47c7 100644 --- a/scd/app-p15.c +++ b/scd/app-p15.c @@ -88,7 +88,8 @@ typedef enum { CARD_PRODUCT_UNKNOWN, CARD_PRODUCT_RSCS, /* Rohde&Schwarz Cybersecurity */ - CARD_PRODUCT_DTRUST, /* D-Trust GmbH (bundesdruckerei.de) */ + CARD_PRODUCT_DTRUST3, /* D-Trust GmbH (bundesdruckerei.de) */ + CARD_PRODUCT_DTRUST4, CARD_PRODUCT_GENUA, /* GeNUA mbH */ CARD_PRODUCT_NEXUS /* Technology Nexus */ } @@ -155,6 +156,11 @@ static char const pkcs15_aid[] = { 0xA0, 0, 0, 0, 0x63, static char const pkcs15be_aid[] = { 0xA0, 0, 0, 0x01, 0x77, 0x50, 0x4B, 0x43, 0x53, 0x2D, 0x31, 0x35 }; +/* The D-TRUST Card 4.x variant - dito */ +static char const pkcs15dtrust4_aid[] = { 0xE8, 0x28, 0xBD, 0x08, 0x0F, 0xA0, + 0x00, 0x00, 0x01, 0x67, 0x45, 0x53, + 0x49, 0x47, 0x4E }; + /* The PIN types as defined in pkcs#15 v1.1 */ typedef enum @@ -561,7 +567,8 @@ cardproduct2str (card_product_t cardproduct) { case CARD_PRODUCT_UNKNOWN: return ""; case CARD_PRODUCT_RSCS: return "R&S"; - case CARD_PRODUCT_DTRUST: return "D-Trust"; + case CARD_PRODUCT_DTRUST3: return "D-Trust 3"; + case CARD_PRODUCT_DTRUST4: return "D-Trust 4.1/4.4"; case CARD_PRODUCT_GENUA: return "GeNUA"; case CARD_PRODUCT_NEXUS: return "Nexus"; } @@ -3511,7 +3518,7 @@ read_ef_tokeninfo (app_t app) ul |= (*p++) & 0xff; n--; } - if (ul) + if (ul > 1) { log_error ("p15: invalid version %lu in TokenInfo\n", ul); err = gpg_error (GPG_ERR_INV_OBJ); @@ -3845,7 +3852,14 @@ read_p15_info (app_t app) && !strncmp (app->app_local->token_label, "D-TRUST Card V3", 15) && app->app_local->card_type == CARD_TYPE_CARDOS_50) { - app->app_local->card_product = CARD_PRODUCT_DTRUST; + app->app_local->card_product = CARD_PRODUCT_DTRUST3; + } + if (!app->app_local->card_product + && app->app_local->token_label + && !strncmp (app->app_local->token_label, "D-TRUST Card 4.", 15) + && app->app_local->card_type == CARD_TYPE_CARDOS_54) + { + app->app_local->card_product = CARD_PRODUCT_DTRUST4; } @@ -5023,7 +5037,7 @@ prepare_verify_pin (app_t app, const char *keyref, } - if (app->app_local->card_product == CARD_PRODUCT_DTRUST) + if (app->app_local->card_product == CARD_PRODUCT_DTRUST3) { /* According to our protocol analysis we need to select a * special AID here. Before that the master file needs to be @@ -5281,7 +5295,8 @@ verify_pin (app_t app, if (prkdf && prkdf->usageflags.non_repudiation && (app->app_local->card_type == CARD_TYPE_BELPIC - || app->app_local->card_product == CARD_PRODUCT_DTRUST)) + || app->app_local->card_product == CARD_PRODUCT_DTRUST3 + || app->app_local->card_product == CARD_PRODUCT_DTRUST4)) label = _("||Please enter the PIN for the key to create " "qualified signatures."); else if (aodf->pinflags.so_pin) @@ -5645,7 +5660,8 @@ do_sign (app_t app, ctrl_t ctrl, const char *keyidstr, int hashalgo, goto leave; } if (app->app_local->card_type == CARD_TYPE_BELPIC - || app->app_local->card_product == CARD_PRODUCT_NEXUS) + || app->app_local->card_product == CARD_PRODUCT_NEXUS + || app->app_local->card_product == CARD_PRODUCT_DTRUST4) { /* The default for these cards is to use a plain hash. We * assume that due to the used certificate the correct hash @@ -5731,6 +5747,30 @@ do_sign (app_t app, ctrl_t ctrl, const char *keyidstr, int hashalgo, else err = micardo_mse (app, prkdf->path[prkdf->pathlen-1]); } + else if (app->app_local->card_product == CARD_PRODUCT_DTRUST4) + { + if (prkdf->is_ecc) + { + /* Not implemented due to lacking test hardware. */ + err = gpg_error (GPG_ERR_UNSUPPORTED_ALGORITHM); + } + else + { + /* The D-TRUST Card 4.x doesn't support setting a security + * environment, at least as specified in the specs. Insted a + * predefined security environment has to be loaded depending on the + * cipher and message digest used. The spec states SE-ID 0x25 for + * SHA256, 0x26 for SHA384 and 0x27 for SHA512, when using PKCS#1 + * padding. But this matters only if the message digest is computed + * on the card. When providing the digest info and a pre-calculated + * hash, all security environments yield the same result. Thus we + * choose 0x25. + * + * Note: For PSS signatures, different values apply. */ + err = iso7816_manage_security_env (app_get_slot (app), + 0xf3, 0x25, NULL, 0); + } + } else if (prkdf->key_reference_valid) { unsigned char mse[3]; @@ -5886,7 +5926,7 @@ do_decipher (app_t app, ctrl_t ctrl, const char *keyidstr, /* The next is guess work for CardOS. */ - if (app->app_local->card_product == CARD_PRODUCT_DTRUST) + if (app->app_local->card_product == CARD_PRODUCT_DTRUST3) { /* From analyzing an USB trace of a Windows signing application * we see that the SE is simply reset to 0x14. It seems to be @@ -5903,6 +5943,21 @@ do_decipher (app_t app, ctrl_t ctrl, const char *keyidstr, 0xF3, 0x14, NULL, 0); } + else if (app->app_local->card_product == CARD_PRODUCT_DTRUST4) + { + if (prkdf->is_ecc) + { + /* Not implemented due to lacking test hardware. */ + err = gpg_error (GPG_ERR_UNSUPPORTED_ALGORITHM); + } + else + { + /* SE-ID 0x31 is for PKCS#1 padded cryptograms. For OAEP encryption + * schemes, different values apply. */ + err = iso7816_manage_security_env (app_get_slot (app), + 0xF3, 0x31, NULL, 0); + } + } else if (prkdf->key_reference_valid) { unsigned char mse[9]; @@ -5946,7 +6001,8 @@ do_decipher (app_t app, ctrl_t ctrl, const char *keyidstr, le_value = prkdf->keynbits / 8; } - if (app->app_local->card_product == CARD_PRODUCT_DTRUST) + if (app->app_local->card_product == CARD_PRODUCT_DTRUST3 + || app->app_local->card_product == CARD_PRODUCT_DTRUST4) padind = 0x81; if (prkdf->is_ecc && IS_CARDOS_5(app)) @@ -6208,6 +6264,12 @@ app_select_p15 (app_t app) rc = iso7816_select_application_ext (slot, pkcs15_aid, sizeof pkcs15_aid, 1, &fci, &fcilen); + if (rc) + { + /* D-TRUST Card 4.x uses a different AID. */ + rc = iso7816_select_application_ext (slot, pkcs15dtrust4_aid, sizeof pkcs15dtrust4_aid, 1, + &fci, &fcilen); + } if (rc) { /* Not found: Try to locate it from 2F00. We use direct path selection here because it seems that the Belgian eID card From f2904737e5594676fdc5f1cadf3cc52621bc901a Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 20 Dec 2023 16:52:47 +0100 Subject: [PATCH 38/42] scd:p15: Add a diagnostic for unsupported DTRUST4 features. * scd/app-p15.c (do_sign): Add a diagnostic. --- scd/app-p15.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scd/app-p15.c b/scd/app-p15.c index 1ff4f47c7..8edd737a6 100644 --- a/scd/app-p15.c +++ b/scd/app-p15.c @@ -5752,6 +5752,7 @@ do_sign (app_t app, ctrl_t ctrl, const char *keyidstr, int hashalgo, if (prkdf->is_ecc) { /* Not implemented due to lacking test hardware. */ + log_info ("Note: ECC is not yet implemented for DTRUST 4 cards\n"); err = gpg_error (GPG_ERR_UNSUPPORTED_ALGORITHM); } else @@ -5948,6 +5949,7 @@ do_decipher (app_t app, ctrl_t ctrl, const char *keyidstr, if (prkdf->is_ecc) { /* Not implemented due to lacking test hardware. */ + log_info ("Note: ECC is not yet implemented for DTRUST 4 cards\n"); err = gpg_error (GPG_ERR_UNSUPPORTED_ALGORITHM); } else @@ -6267,7 +6269,8 @@ app_select_p15 (app_t app) if (rc) { /* D-TRUST Card 4.x uses a different AID. */ - rc = iso7816_select_application_ext (slot, pkcs15dtrust4_aid, sizeof pkcs15dtrust4_aid, 1, + rc = iso7816_select_application_ext (slot, pkcs15dtrust4_aid, + sizeof pkcs15dtrust4_aid, 1, &fci, &fcilen); } if (rc) From 91255c3afd3365a092963044881b30e8e6cc7f33 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Thu, 21 Dec 2023 12:35:55 +0900 Subject: [PATCH 39/42] tools: Remove the dotlock tool. * tools/Makefile.am (libexec_PROGRAMS): Remove dotlock. * tools/dotlock.c: Remove. -- It's integrated into gpgconf (--lock/--unlock). Signed-off-by: NIIBE Yutaka --- tools/Makefile.am | 8 +--- tools/dotlock.c | 115 ---------------------------------------------- 2 files changed, 1 insertion(+), 122 deletions(-) delete mode 100644 tools/dotlock.c diff --git a/tools/Makefile.am b/tools/Makefile.am index b813f55f9..769a81a00 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -69,7 +69,7 @@ else bin_PROGRAMS += gpgconf-w32 endif -libexec_PROGRAMS = gpg-check-pattern gpg-pair-tool dotlock +libexec_PROGRAMS = gpg-check-pattern gpg-pair-tool if !HAVE_W32_SYSTEM libexec_PROGRAMS += gpg-auth endif @@ -203,12 +203,6 @@ gpg_auth_LDADD = $(common_libs) \ $(GPG_ERROR_LIBS) \ $(LIBINTL) $(NETLIBS) $(LIBICONV) -dotlock_SOURCES = dotlock.c -dotlock_LDADD = $(common_libs) \ - $(LIBGCRYPT_LIBS) \ - $(GPG_ERROR_LIBS) \ - $(LIBINTL) $(NETLIBS) $(LIBICONV) - # Instead of a symlink we install a simple wrapper script for the new # gpg-wks-client location. We assume bin is a sibling of libexec. install-exec-local: diff --git a/tools/dotlock.c b/tools/dotlock.c deleted file mode 100644 index 3dfb86c80..000000000 --- a/tools/dotlock.c +++ /dev/null @@ -1,115 +0,0 @@ -/* dotlock.c - A utility to handle dotlock by command line. - * Copyright (C) 2023 g10 Code GmbH - * - * This file is part of GnuPG. - * - * GnuPG is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * GnuPG is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see . - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include "../common/util.h" -#include "../common/stringhelp.h" -#include "../common/dotlock.h" - -static void -lock (const char *filename) -{ - dotlock_t h; - unsigned int flags = DOTLOCK_LOCK_BY_PARENT; - - h = dotlock_create (filename, flags); - if (!h) - { - perror ("error creating lock file"); - exit (1); - } - - if (dotlock_take (h, 0)) - { - perror ("error taking lock"); - dotlock_destroy (h); - exit (1); - } - - dotlock_destroy (h); -} - -static void -unlock (const char *filename) -{ - dotlock_t h; - unsigned int flags = (DOTLOCK_LOCK_BY_PARENT | DOTLOCK_LOCKED); - - h = dotlock_create (filename, flags); - if (!h) - { - perror ("no lock file"); - exit (1); - } - - dotlock_release (h); - dotlock_destroy (h); -} - - -int -main (int argc, const char *argv[]) -{ - const char *name; - const char *fname; - char *filename; - int op_unlock = 0; - - if (argc >= 2 && !strcmp (argv[1], "-u")) - { - op_unlock = 1; - argc--; - argv++; - } - - if (argc != 2) - { - printf ("Usage: %s [-u] NAME\n", argv[0]); - exit (1); - } - - name = argv[1]; - - if (!strcmp (name, "pubring.db")) - /* Keybox pubring.db lock */ - fname = "public-keys.d/pubring.db"; - else - /* Other locks. */ - fname = name; - - filename = make_absfilename (gnupg_homedir (), fname, NULL); - - if (op_unlock) - unlock (filename); - else - lock (filename); - - xfree (filename); - return 0; -} From 2376cdff1318688d94c95fd01adc4b2139c4a8c7 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Fri, 22 Dec 2023 13:32:40 +0900 Subject: [PATCH 40/42] scd:openpgp: Add the length check for new PIN. * scd/app-openpgp.c (do_change_pin): Make sure new PIN length is longer than MINLEN. -- GnuPG-bug-id: 6843 Signed-off-by: NIIBE Yutaka --- scd/app-openpgp.c | 48 +++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index 3e77f8540..3bc709602 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -3499,6 +3499,31 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, log_error (_("error getting new PIN: %s\n"), gpg_strerror (rc)); goto leave; } + + if (set_resetcode) + { + size_t bufferlen = strlen (pinvalue); + + if (bufferlen != 0 && bufferlen < 8) + { + log_error (_("Reset Code is too short; minimum length is %d\n"), 8); + rc = gpg_error (GPG_ERR_BAD_RESET_CODE); + goto leave; + } + } + else + { + if (chvno == 3) + minlen = 8; + + if (strlen (pinvalue) < minlen) + { + log_info (_("PIN for CHV%d is too short;" + " minimum length is %d\n"), chvno, minlen); + rc = gpg_error (GPG_ERR_BAD_PIN); + goto leave; + } + } } @@ -3533,24 +3558,15 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, } else if (set_resetcode) { - size_t bufferlen = strlen (pinvalue); + size_t bufferlen; + char *buffer = NULL; - if (bufferlen != 0 && bufferlen < 8) - { - log_error (_("Reset Code is too short; minimum length is %d\n"), 8); - rc = gpg_error (GPG_ERR_BAD_RESET_CODE); - } - else - { - char *buffer = NULL; + rc = pin2hash_if_kdf (app, 0, pinvalue, &buffer, &bufferlen); + if (!rc) + rc = iso7816_put_data (app_get_slot (app), + 0, 0xD3, buffer, bufferlen); - rc = pin2hash_if_kdf (app, 0, pinvalue, &buffer, &bufferlen); - if (!rc) - rc = iso7816_put_data (app_get_slot (app), - 0, 0xD3, buffer, bufferlen); - - wipe_and_free (buffer, bufferlen); - } + wipe_and_free (buffer, bufferlen); } else if (reset_mode) { From 239c1fdc28dcd0dc7aa5341be7c966da2231642a Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 22 Dec 2023 12:47:39 +0100 Subject: [PATCH 41/42] common: Add keyword socketdir to gpgconf.ctl * common/homedir.c (enum wantdir_values): New enums. (unix_rootdir): Change arg to use the enums. Adjust all callers. Add support for the socketdir keyword. (_gnupg_socketdir_internal): Take care of the socketdir keyword in gpgconf.ctl. * doc/tools.texi (Files used by gpgconf): Briefly explain the gpgconf.ctl syntax. --- common/homedir.c | 139 +++++++++++++++++++++++++++++-------------- doc/opt-homedir.texi | 10 ---- doc/tools.texi | 28 ++++++++- 3 files changed, 120 insertions(+), 57 deletions(-) diff --git a/common/homedir.c b/common/homedir.c index 641dba1ae..2b99c9bdc 100644 --- a/common/homedir.c +++ b/common/homedir.c @@ -77,6 +77,14 @@ #endif +/* Mode flags for unix_rootdir. */ +enum wantdir_values { + WANTDIR_ROOT = 0, + WANTDIR_SYSCONF, + WANTDIR_SOCKET +}; + + /* The GnuPG homedir. This is only accessed by the functions * gnupg_homedir and gnupg_set_homedir. Malloced. */ static char *the_gnupg_homedir; @@ -491,11 +499,12 @@ w32_rootdir (void) * file system. If WANT_SYSCONFDIR is true the optional sysconfdir * entry is returned. */ static const char * -unix_rootdir (int want_sysconfdir) +unix_rootdir (enum wantdir_values wantdir) { static int checked; static char *dir; /* for the rootdir */ static char *sdir; /* for the sysconfdir */ + static char *s2dir; /* for the socketdir */ if (!checked) { @@ -510,8 +519,10 @@ unix_rootdir (int want_sysconfdir) estream_t fp; char *rootdir; char *sysconfdir; + char *socketdir; const char *name; int ignoreall = 0; + int okay; for (;;) { @@ -602,12 +613,14 @@ unix_rootdir (int want_sysconfdir) linelen = 0; rootdir = NULL; sysconfdir = NULL; + socketdir = NULL; while ((length = es_read_line (fp, &line, &linelen, NULL)) > 0) { static const char *names[] = { "rootdir", "sysconfdir", + "socketdir", ".enable" }; int i; @@ -662,6 +675,11 @@ unix_rootdir (int want_sysconfdir) xfree (sysconfdir); sysconfdir = p; } + else if (!strcmp (name, "socketdir")) + { + xfree (socketdir); + socketdir = p; + } else { xfree (rootdir); @@ -677,6 +695,7 @@ unix_rootdir (int want_sysconfdir) xfree (line); xfree (rootdir); xfree (sysconfdir); + xfree (socketdir); checked = 1; return NULL; } @@ -684,29 +703,26 @@ unix_rootdir (int want_sysconfdir) xfree (buffer); xfree (line); + okay = 0; if (ignoreall) - { - xfree (rootdir); - xfree (sysconfdir); - sdir = dir = NULL; - } + ; else if (!rootdir || !*rootdir || *rootdir != '/') { log_info ("invalid rootdir '%s' specified in gpgconf.ctl\n", rootdir); - xfree (rootdir); - xfree (sysconfdir); - dir = NULL; } else if (sysconfdir && (!*sysconfdir || *sysconfdir != '/')) { log_info ("invalid sysconfdir '%s' specified in gpgconf.ctl\n", sysconfdir); - xfree (rootdir); - xfree (sysconfdir); - dir = NULL; + } + else if (socketdir && (!*socketdir || *socketdir != '/')) + { + log_info ("invalid socketdir '%s' specified in gpgconf.ctl\n", + socketdir); } else { + okay = 1; while (*rootdir && rootdir[strlen (rootdir)-1] == '/') rootdir[strlen (rootdir)-1] = 0; dir = rootdir; @@ -720,11 +736,34 @@ unix_rootdir (int want_sysconfdir) gpgrt_annotate_leaked_object (sdir); /* log_info ("want sysconfdir '%s'\n", sdir); */ } + if (socketdir) + { + while (*socketdir && socketdir[strlen (socketdir)-1] == '/') + socketdir[strlen (socketdir)-1] = 0; + s2dir = socketdir; + gpgrt_annotate_leaked_object (s2dir); + /* log_info ("want socketdir '%s'\n", s2dir); */ + } + } + + if (!okay) + { + xfree (rootdir); + xfree (sysconfdir); + xfree (socketdir); + dir = sdir = s2dir = NULL; } checked = 1; } - return want_sysconfdir? sdir : dir; + switch (wantdir) + { + case WANTDIR_ROOT: return dir; + case WANTDIR_SYSCONF: return sdir; + case WANTDIR_SOCKET: return s2dir; + } + + return NULL; /* Not reached. */ } #endif /* Unix */ @@ -1035,7 +1074,8 @@ _gnupg_socketdir_internal (int skip_checks, unsigned *r_info) }; int i; struct stat sb; - char prefix[19 + 1 + 20 + 6 + 1]; + char prefixbuffer[19 + 1 + 20 + 6 + 1]; + const char *prefix; const char *s; char *name = NULL; @@ -1050,35 +1090,42 @@ _gnupg_socketdir_internal (int skip_checks, unsigned *r_info) * as a background process with no (desktop) user logged in. Thus * we better don't do that. */ - /* Check whether we have a /run/[gnupg/]user dir. */ - for (i=0; bases[i]; i++) + prefix = unix_rootdir (WANTDIR_SOCKET); + if (!prefix) { - snprintf (prefix, sizeof prefix, "%s/user/%u", - bases[i], (unsigned int)getuid ()); - if (!stat (prefix, &sb) && S_ISDIR(sb.st_mode)) - break; - } - if (!bases[i]) - { - *r_info |= 2; /* No /run/user directory. */ - goto leave; + /* gpgconf.ctl does not specify a directory. Check whether we + * have the usual /run/[gnupg/]user dir. */ + for (i=0; bases[i]; i++) + { + snprintf (prefixbuffer, sizeof prefixbuffer, "%s/user/%u", + bases[i], (unsigned int)getuid ()); + prefix = prefixbuffer; + if (!stat (prefix, &sb) && S_ISDIR(sb.st_mode)) + break; + } + if (!bases[i]) + { + *r_info |= 2; /* No /run/user directory. */ + goto leave; + } + + if (sb.st_uid != getuid ()) + { + *r_info |= 4; /* Not owned by the user. */ + if (!skip_checks) + goto leave; + } + + if (strlen (prefix) + 7 >= sizeof prefixbuffer) + { + *r_info |= 1; /* Ooops: Buffer too short to append "/gnupg". */ + goto leave; + } + strcat (prefixbuffer, "/gnupg"); } - if (sb.st_uid != getuid ()) - { - *r_info |= 4; /* Not owned by the user. */ - if (!skip_checks) - goto leave; - } - - if (strlen (prefix) + 7 >= sizeof prefix) - { - *r_info |= 1; /* Ooops: Buffer too short to append "/gnupg". */ - goto leave; - } - strcat (prefix, "/gnupg"); - - /* Check whether the gnupg sub directory has proper permissions. */ + /* Check whether the gnupg sub directory (or the specified diretory) + * has proper permissions. */ if (stat (prefix, &sb)) { if (errno != ENOENT) @@ -1238,7 +1285,7 @@ gnupg_sysconfdir (void) } return name; #else /*!HAVE_W32_SYSTEM*/ - const char *dir = unix_rootdir (1); + const char *dir = unix_rootdir (WANTDIR_SYSCONF); if (dir) return dir; else @@ -1267,7 +1314,7 @@ gnupg_bindir (void) else return rdir; #else /*!HAVE_W32_SYSTEM*/ - rdir = unix_rootdir (0); + rdir = unix_rootdir (WANTDIR_ROOT); if (rdir) { if (!name) @@ -1294,7 +1341,7 @@ gnupg_libexecdir (void) static char *name; const char *rdir; - rdir = unix_rootdir (0); + rdir = unix_rootdir (WANTDIR_ROOT); if (rdir) { if (!name) @@ -1324,7 +1371,7 @@ gnupg_libdir (void) #else /*!HAVE_W32_SYSTEM*/ const char *rdir; - rdir = unix_rootdir (0); + rdir = unix_rootdir (WANTDIR_ROOT); if (rdir) { if (!name) @@ -1355,7 +1402,7 @@ gnupg_datadir (void) #else /*!HAVE_W32_SYSTEM*/ const char *rdir; - rdir = unix_rootdir (0); + rdir = unix_rootdir (WANTDIR_ROOT); if (rdir) { if (!name) @@ -1387,7 +1434,7 @@ gnupg_localedir (void) #else /*!HAVE_W32_SYSTEM*/ const char *rdir; - rdir = unix_rootdir (0); + rdir = unix_rootdir (WANTDIR_ROOT); if (rdir) { if (!name) diff --git a/doc/opt-homedir.texi b/doc/opt-homedir.texi index 07993d29d..15ae1970d 100644 --- a/doc/opt-homedir.texi +++ b/doc/opt-homedir.texi @@ -13,13 +13,3 @@ directory stated through the environment variable @env{GNUPGHOME} or On Windows systems it is possible to install GnuPG as a portable application. In this case only this command line option is considered, all other ways to set a home directory are ignored. - -@efindex gpgconf.ctl -To install GnuPG as a portable application under Windows, create an -empty file named @file{gpgconf.ctl} in the same directory as the tool -@file{gpgconf.exe}. The root of the installation is then that -directory; or, if @file{gpgconf.exe} has been installed directly below -a directory named @file{bin}, its parent directory. You also need to -make sure that the following directories exist and are writable: -@file{ROOT/home} for the GnuPG home and @file{ROOT@value{LOCALCACHEDIR}} -for internal cache files. diff --git a/doc/tools.texi b/doc/tools.texi index eefa4f9d6..a1c161c3a 100644 --- a/doc/tools.texi +++ b/doc/tools.texi @@ -1122,10 +1122,36 @@ More fields may be added in future to the output. @table @file +@item gpgconf.ctl +@cindex gpgconf.ctl + Under Unix @file{gpgconf.ctl} may be used to change some of the + compiled in directories where the GnuPG components are expected. This + file is expected in the same directory as @file{gpgconf}. The + physical installation directories are evaluated and no symlinks. + Blank lines and lines starting with pound sign are ignored in the + file. The keywords must be followed by optional white space, an equal + sign, optional white space, and the value. Environment variables are + substituted in standard shell manner, the final value must start with + a slash, trailing slashes are stripped. Valid keywords are + @code{rootdir}, @code{sysconfdir}, @code{socketdir}, and + @code{.enable}. No errors are printed for unknown keywords. The + @code{.enable} keyword is special: if the keyword is used and its + value evaluates to true the entire file is ignored. + + Under Windows this file is used to install GnuPG as a portable + application. An empty file named @file{gpgconf.ctl} is expected in + the same directory as the tool @file{gpgconf.exe}. The root of the + installation is then that directory; or, if @file{gpgconf.exe} has + been installed directly below a directory named @file{bin}, its parent + directory. You also need to make sure that the following directories + exist and are writable: @file{ROOT/home} for the GnuPG home and + @file{ROOT@value{LOCALCACHEDIR}} for internal cache files. + + @item /etc/gnupg/gpgconf.conf @cindex gpgconf.conf If this file exists, it is processed as a global configuration file. - This is a legacy mechanism which should not be used tigether with + This is a legacy mechanism which should not be used together with the modern global per component configuration files. A commented example can be found in the @file{examples} directory of the distribution. From 431239b83d98c0d980c53a3fdcd70accc7c3eeac Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 22 Dec 2023 13:19:33 +0100 Subject: [PATCH 42/42] doc: Explain why socket activation is a problem -- --- README | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/README b/README index c7887fc0f..8fc906bb5 100644 --- a/README +++ b/README @@ -144,6 +144,13 @@ gpg --import --import-options restore < allkeys.gpg gpgsm --import < allcerts.crt + In case the keyboxd is not able to startup due to a stale lockfile + created by another host, the command + + gpgconf --unlock pubring.db + + can be used to remove the lock file. + ** Socket directory GnuPG uses Unix domain sockets to connect its components (on Windows @@ -166,6 +173,29 @@ fi done ) +** Conflicts with systemd socket activation + + Some Linux distribution use the meanwhile deprecated --supervised + option with gpg-agent, dirmngr, and keyboxd. The idea is that the + systemd process launches the daemons as soon as gpg or gpgsm try to + access them. However, this creates a race condition with GnuPG's + own on-demand launching of these daemon. It also conflicts with the + remote use gpg-agent because the no-autostart feature on the remote + site will not work as expected. + + Thus the recommendation is not to use the --supervised option. All + GnuPG components handle the startup of their daemons on their own. + + The only problem is that for using GnuPG's ssh-agent protocol + support, the gpg-agent must have been started before ssh. This can + either be done with an ssh wrapper running + + gpg-connect-agent updatestartuptty /bye + + for each new tty or by using that command directly after login when + the anyway required SSH_AUTH_SOCK envvar is set (see the example in + the gpg-agent man page). + * DOCUMENTATION