Page MenuHome GnuPG

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
diff --git a/ChangeLog b/ChangeLog
index 4034e7f8f..822861089 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,170 +1,174 @@
+Wed Jan 20 21:40:21 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
+
+ * configure.in: --enable-m-guard is now default
+
Wed Jan 13 12:49:36 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* INSTALL: Applied new information how to build rpms by Fabio Coatti
* Makefile.in (gnupg.spec): Changed the names.
Tue Jan 12 11:17:18 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* config.links (m68k-atari-mint): New
Tue Jan 12 09:17:19 CET 1999 Gaël Quéri <gqueri@mail.dotcom.fr>
* all: Fixed typos all over the place
Sat Jan 9 16:02:23 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* configure.in: Add a way to statically link rndunix
Sun Jan 3 15:28:44 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* acinclude.m4 (GNUPG_CHECK_RDYNAMIC): New.
* configure.in (DYNLOAD_CFLAGS): Use result from CHECK_RDYNAMIC
Wed Dec 23 13:18:14 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* README: Replaced the command overview with a short intro.
Sat Dec 12 18:40:32 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* configure.in: Add check for dlopen in libc (Greg Troxel)
and a new define
* acconfig.h (DLSYM_NEEDS_UNDERSCORE): New.
Thu Dec 10 20:15:36 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* acinclude.m (GNUPG_CHECK_PIC): New
* configure.in, acinclude.m4: Renamed all WK_ to GNUPG_
Tue Dec 8 15:09:29 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* VERSION: Set to 0.4.5
Wed Nov 25 12:38:29 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in (USE_RNDLINUX): New.
Fri Nov 20 19:34:57 1998 Werner Koch (wk@isil.d.shuttle.de)
* VERSION: Released 0.4.4
* configure.in (try_asm_modules): For option --disable-asm
Tue Nov 10 19:32:40 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in (MPI_SFLAGS): New.
Tue Nov 10 13:44:53 1998 Werner Koch (wk@isil.d.shuttle.de)
* ABOUT-NLS: New
* configure.in (AC_REVISION): New.
Sun Nov 8 18:20:35 1998 Werner Koch (wk@isil.d.shuttle.de)
* VERSION: Set to 0.4.3
Sun Oct 25 19:49:37 1998 Werner Koch (wk@isil.d.shuttle.de)
* Makefile.am (g10defs.h): New macro GNUPG_DATADIR.
Wed Oct 21 17:24:24 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in: Removed gettext kludge
* acinclude.m4: Add patched AM_WITH_NKS macro
Tue Oct 20 19:03:36 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in: Kludge to make AM_GNU_GETTEXT work,
changed some macors to more modern versions. Also
changeg the all makefiles to remove duplicate ../intl.
* acinclude.m4: Removed the gettext stuff, as this
already comes with automake now.
Wed Oct 14 12:11:34 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in (NAME_OF_DEV_RANDOM): New.
(DYNLINK_MOD_CFLAGS): New.
Thu Oct 8 10:55:15 1998 Werner Koch (wk@isil.d.shuttle.de)
* Makefile.am (g10defs.h): creates include file
* acconfig.h: now includes g10defs.h
* configure.in: Removed G10_LOCALEDIR and GNUPG_LIB
Thu Sep 17 18:49:40 1998 Werner Koch (wk@(none))
* Makefile.am (dist-hook): Now creates RPM file.
* scripts/gnupg.spec: New template file for RPMs
Thu Jul 30 19:17:07 1998 Werner Koch (wk@(none))
* acinclude.h (WK_CHECK_IPC): New
* configure.in : Add checks for SysV IPC
Thu Jun 25 11:18:49 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in (--disable-dynload): New.
Wed Jun 10 07:48:59 1998 Werner Koch,mobil,,, (wk@tobold)
* configure.in (GNUPG_LIBDIR): New.
Mon May 25 19:10:59 1998 Werner Koch (wk@isil.d.shuttle.de)
* rand-unix.c (fast_random_poll): fixed syntax bug.
Mon May 11 10:21:31 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in (PRINTABLE_OS_NAME): Linux is now GNU/Linux
Tue Apr 14 19:08:05 1998 Werner Koch (wk@isil.d.shuttle.de)
* [all files]: Applied Matthew Skala's typo and grammar fixes.
Wed Mar 4 10:32:40 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in (getrusage,gettimeofday): New tests.
Fri Feb 27 13:14:17 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in (--disable-m-guard): New.
Thu Feb 26 17:09:27 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in, acinclude.m4, intl/, po/: New macros taken
from GNOME, switched to automake 1.2f
Thu Feb 26 09:05:46 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in (doc/Makefile): New
Thu Feb 26 07:40:47 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in: Changed gettext stuff
Wed Feb 25 11:44:10 1998 Werner Koch (wk@isil.d.shuttle.de)
* checks/*test : restructured the directory.
Tue Feb 24 15:59:12 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in: Changed the name of the package to GNUPG and
chnaged several other names too.
Wed Feb 18 17:36:45 1998 Werner Koch (wk@isil.d.shuttle.de)
* Makefile.am (checks): New.
Sat Feb 14 15:37:55 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in (mpi_config_done): Removed asm links caching.
Sat Feb 14 14:02:20 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in (PRINTABLE_OS_NAME): New.
* acconfig.h: Likewise.
Fri Feb 13 19:43:41 1998 Werner Koch (wk@isil.d.shuttle.de)
* configure.in : Fixed zlib stuff
* Makefile.am: Likewise
diff --git a/NEWS b/NEWS
index 163c967aa..75fa0aa80 100644
--- a/NEWS
+++ b/NEWS
@@ -1,652 +1,654 @@
+Noteworthy changes in version 0.9.2
+-----------------------------------
* add some additional time warp checks.
- * Option --keyserver and command --send-keys to utilize HKP servers
+ * Option --keyserver and command --send-keys to utilize HKP servers.
- * Upgraded to zlib 1.1.3
+ * Upgraded to zlib 1.1.3 and fixed an inflate bug
* More cleanup on the cleartext signatures.
Noteworthy changes in version 0.9.1
-----------------------------------
* Polish language support.
* When querying the passphrase, the key ID of the primary key is
displayed along with the one of the used secondary key.
* Fixed a bug occurring when decrypting pgp 5 encrypted messages,
fixed an infinite loop bug in the 3DES code and in the code
which looks for trusted signatures.
* Fixed a bug in the mpi library which caused signatures not to
compare okay.
* Rewrote the handling of cleartext signatures; the code is now
better maintainable (I hope so).
* New status output VALIDSIG only for valid signatures together
with the fingerprint of the signer's key.
Noteworthy changes in version 0.9.0
-----------------------------------
* --export does now only exports rfc2440 compatible keys; the
old behaviour is available with --export-all.
Generation of v3 ElGamal (sign and encrypt) keys is not longer
supported.
* Fixed the uncompress bug.
* Rewrote the rndunix module. There are two environment variables
used for debugging now: GNUPG_RNDUNIX_DBG give the file to write
debugging information (use "-" for stdout) and if GNUPG_RNDUNIX_DBGALL
is set, all programs which are only tried are also printed.
* New option --escape-from-lines to "dash-escape" "From " lines to
prevent mailers to change them to ">From ". This is not enabled by
default because it is not in compliance with rfc2440 - however, you
should turn it on.
Noteworthy changes in version 0.4.5
-----------------------------------
* The keyrings and the trustdb is now locked, so that
other GnuPG processes won't damage these files. You
may want to put the option --lock-once into your options file.
* The latest self-signatures are now used; this enables --import
to see updated preferences etc.
* Import of subkeys should now work.
* Random gathering modules may now be loaded as extensions. Add
such a module for most Unices but it is very experimental!
* Brazilian language support.
Noteworthy changes in version 0.4.4
-----------------------------------
* Fixed the way the key expiration time is stored. If you have
an expiration time on your key you should fix it with --edit-key
and the command "expire". I apologize for this inconvenience.
* Add option --charset to support "koi8-r" encoding of user ids.
(Not yet tested).
* Preferences should now work again. You should run
"gpgm --check-trustdb \*" to rebuild all preferences.
* Checking of certificates should now work but this needs a lot
of testing. Key validation values are now cached in the
trustdb; they should be recalculated as needed, but you may
use --check-trustdb or --update-trustdb to do this.
* Spanish translation by Urko Lusa.
* Patch files are from now on signed. See the man page
for the new option --not-dash-escaped.
* New syntax: --edit-key <userID> [<commands>]
If you run it without --batch the commands are executed and then
you are put into normal mode unless you use "quit" or "save" as
one of the commands. When in batch mode, the program quits after
the last command, so you have to use "save" if you did some changes.
It does not yet work completely, but may be used to list so the
keys etc.
Noteworthy changes in version 0.4.3
-----------------------------------
* Fixed the gettext configure bug.
* Kludge for RSA keys: keyid and length of a RSA key are
correctly reported, but you get an error if you try to use
this key (If you do not have the non-US version).
* Experimental support for keyrings stored in a GDBM database.
This is *much* faster than a standard keyring. You will notice
that the import gets slower with time; the reason is that all
new keys are used to verify signatures of previous inserted
keys. Use "--keyring gnupg-gdbm:<name-of-gdbm-file>". This is
not (yet) supported for secret keys.
* A Russian language file in the distribution (alternatives are in
the contrib directory of the FTP servers)
* commandline option processing now works as expected for GNU programs
with the exception that you can't mix options and normal arguments.
* Now --list-key lists all matching keys. This is needed in some
other places too.
Noteworthy changes in version 0.4.2
-----------------------------------
* This is only a snapshot: There are still a few bugs.
* Fixed this huge memory leak.
* Redesigned the trust database: You should run "gpgm --check-trustdb".
New command --update-trustdb, which adds new key from the public
keyring into your trustdb
* Fixed a bug in the armor code, leading to invalid packet errors.
(a workaround for this was to use --no-armor). The shorten line
length (64 instead of 72) fixes a problem with pgp5 and keyservers.
* comment packets are not anymore generated. "--export" filters
them out. One Exception: The comment packets in a secret keyring
are still used because they carry the factorization of the public
prime product.
* --import now only looks for KEYBLOCK headers, so you can now simply
remove the "- " in front of such a header if someone accidently signed
such a message or the keyblock is part of a cleartext signed message.
* --with-colons now lists the key expiration time and not anymore
the valid period.
* Some keyblocks created with old releases have a wrong sequence
of packets, so that the keyservers don't accept these keys.
Simply using "--edit-key" fixes the problem.
* New option --force-v3-sigs to generate signed messages which are
compatible to PGP 5.
* Add some code to support DLD (for non ELF systems) - but this is
not tested because my BSD box is currently broken.
* New command "expire" in the edit-key menu.
Noteworthy changes in version 0.4.1
-----------------------------------
* A secondary key is used when the primary key is specified but cannot
be used for the operation (if it is a sign-only key).
* GNUPG can now handle concatenated armored messages: There is still a
bug if different kinds of messages are mixed.
* Iterated+Salted passphrases now work. If want to be sure that PGP5
is able to handle them you may want to use the options
"--s2k-mode 3 --s2k-cipher-algo cast5 --s2k-digest-algo sha1"
when changing a passphrase.
* doc/OpenPGP talks about OpenPGP compliance, doc/HACKING gives
a few hints about the internal structure.
* Checked gnupg against the August 1998 draft (07) and I believe
it is in compliance with this document (except for one point).
* Fixed some bugs in the import merging code and rewrote some
code for the trustdb.
Noteworthy changes in version 0.4.0
-----------------------------------
* Triple DES is now supported. Michael Roth did this piece of
needed work. We have now all the coded needed to be OpenPGP
compliant.
* Added a simple rpm spec file (see INSTALL).
* detached and armored signatures are now using "PGP SIGNATURE",
except when --rfc1991 is used.
* All times which are not in the yyy-mm-dd format are now printed
in local time.
Noteworthy changes in version 0.3.5
-----------------------------------
* New option --throw-keyid to create anonymous enciphered messages.
If gpg detects such a message it tires all available secret keys
in turn so decode it. This is a gnupg extension and not in OpenPGP
but it has been discussed there and afaik some products use this
scheme too (Suggested by Nimrod Zimmerman).
* Fixed a bug with 5 byte length headers.
* --delete-[secret-]key is now also available in gpgm.
* cleartext signatures are not anymore converted to LF only.
* Fixed a trustdb problem. Run "gpgm --check-trustdb" to fix old
trust dbs.
* Building in another directory should now work.
* Weak key detection mechanism (Niklas Hernaeus).
Noteworthy changes in version 0.3.4
-----------------------------------
* New options --comment and --set-filename; see g10/OPTIONS
* yes/no, y/n localized.
* Fixed some bugs.
Noteworthy changes in version 0.3.3
-----------------------------------
* IMPORTANT: I found yet another bug in the way the secret keys
are encrypted - I did it the way pgp 2.x did it, but OpenPGP
and pgp 5.x specify another (in some aspects simpler) method.
To convert your secret keys you have to do this:
1. Build the new release but don't install it and keep
a copy of the old program.
2. Disable the network, make sure that you are the only
user, be sure that there are no Trojan horses etc ....
3. Use your old gpg (version 0.3.[12]) and set the
passphrases of ALL your secret keys to empty!
(gpg --change-passphrase your-user-id).
4. Save your ownertrusts (see the next point)
5. rm ~/.gnupg/trustdb.gpg
6. install the new version of gpg (0.3.3)
7. For every secret key call "gpg --edit-key your-user-id",
enter "passwd" at the prompt, follow the instructions and
change your password back, enter "save" to store it.
8. Restore the ownertrust (see next point).
* The format of the trust database has changed; you must delete
the old one, so gnupg can create a new one.
IMPORTANT: Use version 0.3.[12] to save your assigned ownertrusts
("gpgm --list-ownertrust >saved-trust"); then build this new version
and restore the ownertrust with this new version
("gpgm --import-ownertrust saved-trust"). Please note that
--list-ownertrust has been renamed to --export-ownertrust in this
release and it does now only export defined ownertrusts.
* The command --edit-key now provides a commandline driven menu
which can be used for various tasks. --sign-key is only an
an alias to --edit-key and maybe removed in future: use the
command "sign" of this new menu - you can select which user ids
you want to sign.
* Alternate user ids can now be created an signed.
* Owner trust values can now be changed with --edit-key (trust)
* GNUPG can now run as a coprocess; this enables sophisticated
frontends. tools/shmtest.c is a simple sample implementation.
This needs some more work: all tty_xxx() are to be replaced
by cpr_xxx() and some changes in the display logics is needed.
* Removed options --gen-prime and --gen-random.
* Removed option --add-key; use --edit-key instead.
* Removed option --change-passphrase; use --edit-key instead.
* Signatures are now checked even if the output file could not
be created. Command "--verify" tries to find the detached data.
* gpg now disables core dumps.
* compress and symmetric cipher preferences are now used.
Because there is no 3DES yet, this is replaced by Blowfish.
* We have added the Twofish as an experimental cipher algorithm.
Many thanks to Matthew Skala for doing this work.
Twofish is the AES submission from Schneier et al.; see
"www.counterpane.com/twofish.html" for more information.
* Started with a help system: If you enter a question mark at some
prompt; you should get a specific help for this prompt.
* There is no more backup copy of the secret keyring.
* A lot of new bugs. I think this release is not as stable as
the previous one.
Noteworthy changes in version 0.3.2
-----------------------------------
* Fixed some bugs when using --textmode (-seat)
* Now displays the trust status of a positive verified message.
* Keyrings are now scanned in the sequence they are added with
--[secret-]keyring. Note that the default keyring is implicitly
added as the very first one unless --no-default-keyring is used.
* Fixed setuid and dlopen bug.
Noteworthy changes in version 0.3.1
-----------------------------------
* Partial headers are now written in the OpenPGP format if
a key in a v4 packet is used.
* Removed some unused options, removed the gnupg.sig stuff.
* Key lookup by name now returns a key which can be used for
the desired action.
* New options --list-ownertrust (gpgm) to make a backup copy
of the ownertrust values you assigned.
* clear signature headers are now in compliance with OpenPGP.
Noteworthy changes in version 0.3.0
-----------------------------------
* New option --emulate-checksum-bug. If your passphrase does not
work anymore, use this option and --change-passphrase to rewrite
your passphrase.
* More complete v4 key support: Preferences and expiration time
is set into the self signature.
* Key generation defaults to DSA/ElGamal keys, so that new keys are
interoperable with pgp5
* DSA key generation is faster and key generation does not anymore
remove entropy from the random generator (the primes are public
parameters, so there is really no need for a cryptographic secure
prime number generator which we had used).
* A complete new structure for representing the key parameters.
* Removed most public key knowledge into the cipher library.
* Support for dynamic loading of new algorithms.
* Moved tiger to an extension module.
Noteworthy changes in version 0.2.19
------------------------------------
* Replaced /dev/urandom in checks with new tool mk-tdata.
* Some assembler file cleanups; some more functions for the Alpha.
* Tiger has now the OpenPGP assigned number 6. Because the OID has
changed, old signatures using this algorithm can't be verified.
* gnupg now encrypts the compressed packed and not any longer in the
reverse order; anyway it can decrypt both versions. Thanks to Tom
for telling me this (not security related) bug.
* --add-key works and you are now able to generate subkeys.
* It is now possible to generate ElGamal keys in v4 packets to create
valid OpenPGP keys.
* Some new features for better integration into MUAs.
Noteworthy changes in version 0.2.18
------------------------------------
* Splitted cipher/random.c, add new option "--disable-dev-random"
to configure to support the development of a random source for
other systems. Prepared sourcefiles rand-unix.c, rand-w32.c
and rand-dummy.c (which is used to allow compilation on systems
without a random source).
* Fixed a small bug in the key generation (it was possible that 48 bits
of a key were not taken from the random pool)
* Add key generation for DSA and v4 signatures.
* Add a function trap_unaligned(), so that a SIGBUS is issued on
Alphas and not the slow emulation code is used. And success: rmd160
raised a SIGBUS.
* Enhanced the formatting facility of argparse and changed the use of
\r,\v to @ because gettext does not like it.
* New option "--compress-algo 1" to allow the creation of compressed
messages which are readable by PGP and "--print-md" (gpgm) to make
speed measurement easier.
Noteworthy changes in version 0.2.17
------------------------------------
* Comment packets are now of private type 61.
* Passphrase code still used a 160 bit blowfish key, added a
silly workaround. Please change your passphrase again - sorry.
* Conventional encryption now uses a type 3 packet to describe the
used algorithms.
* The new algorithm number for Blowfish is 20, 16 is still used for
encryption only; for signing it is only used when it is in a v3 packet,
so that GNUPG keys are still valid.
Noteworthy changes in version 0.2.16
------------------------------------
* Add experimental support for the TIGER/192 message digest algorithm.
(But there is only a dummy ASN OID).
* Standard cipher is now Blowfish with 128 bit key in OpenPGP's CFB
mode. I renamed the old cipher to Blowfish160. Because the OpenPGP
group refused to assign me a number for Blowfish160, I have to
drop support for this in the future. You should use
"--change-passphrase" to recode your current passphrase with 128
bit Blowfish.
Noteworthy changes in version 0.2.15
------------------------------------
* Fixed a bug with the old checksum calculation for secret keys.
If you run the program without --batch, a warning does inform
you if your secret key needs to be converted; simply use
--change-passphrase to recalculate the checksum. Please do this
soon, as the compatible mode will be removed sometime in the future.
* CAST5 works (using the PGP's special CFB mode).
* Again somewhat more PGP 5 compatible.
* Some new test cases
Noteworthy changes in version 0.2.14
------------------------------------
* Changed the internal handling of keyrings.
* Add support to list PGP 5 keyrings with subkeys
* Timestamps of signatures are now verified.
* A expiration time can now be specified during key generation.
* Some speedups for Blowfish and SHA-1, rewrote SHA-1 transform.
Reduced the amount of random bytes needed for key generation in
some cases.
Noteworthy changes in version 0.2.13
------------------------------------
* Verify of DSA signatures works.
* Re-implemented the slower random number generator.
Noteworthy changes in version 0.2.12
------------------------------------
* --delete-key checks that there is no secret key. The new
option --delete-secret-key maybe used to delete a secret key.
* "-kv" now works as expected. Options "--list-{keys,sigs]"
and "--check-sigs" are now working.
* New options "--verify" and "--decrypt" to better support integration
into MUAs (partly done for Mutt).
* New option "--with-colons" to make parsing of key lists easier.
Noteworthy changes in version 0.2.11
------------------------------------
* GPG now asks for a recipient's name if option "-r" is not used.
* If there is no good trust path, the program asks whether to use
the public keys anyway.
* "--delete-key" works for public keys. What semantics shall I use
when there is a secret key too? Delete the secret key or leave him
and auto-regenerate the public key, next time the secret key is used?
Noteworthy changes in version 0.2.10
------------------------------------
* Code for the alpha is much faster (about 20 times); the data
was misaligned and the kernel traps this, so nearly all time
was used by system to trap the misalignments and to write
syslog messages. Shame on me and thanks to Ralph for
pointing me at this while drinking some beer yesterday.
* Changed some configure options and add an option
--disable-m-guard to remove the memory checking code
and to compile everything with optimization on.
* New environment variable GNUPGHOME, which can be used to set
another homedir than ~/.gnupg. Changed default homedir for
Windoze version to c:/gnupg.
* Fixed detached signatures; detached PGP signatures caused a SEGV.
* The Windoze version works (as usual w/o a strong RNG).
Noteworthy changes in version 0.2.9
-----------------------------------
* Fixed FreeBSD bug.
* Added a simple man page.
* Switched to automake1.2f and a newer gettext.
Noteworthy changes in version 0.2.8
-----------------------------------
* Changed the name to GNUPG, the binaries are called gpg and gpgm.
You must rename rename the directory "~/.g10" to ~/.gnupg/, rename
{pub,sec}ring.g10 to {pub,sec}ring.gpg, trustdb.g10 to trustdb.gpg
and g10.sig to gnupg.sig.
* New or changed passphrases are now salted.
Noteworthy changes in version 0.2.7
-----------------------------------
* New command "gen-revoke" to create a key revocation certificate.
* New option "homedir" to set the homedir (which defaults to "~/.g10").
This directory is created if it does not exists (only the last
part of the name and not the complete hierarchy)
* Command "import" works. (Try: "finger gcrypt@ftp.guug.de|g10 --import")
* New commands "dearmor/enarmor" for g10maint. These are mainly
used for internal test purposes.
* Option --version now conforming to the GNU standards and lists
the available ciphers, message digests and public key algorithms.
* Assembler code for m68k (not tested).
* "make check" works.
Noteworthy changes in version 0.2.6
-----------------------------------
* Option "--export" works.
Noteworthy changes in version 0.2.5
-----------------------------------
* Added zlib for systems which don't have it.
Use "./configure --with-zlib" to link with the static version.
* Generalized some more functions and rewrote the encoding of
message digests into MPIs.
* Enhanced the checkit script
Noteworthy changes in version 0.2.4
-----------------------------------
* nearly doubled the speed of the ElGamal signature verification.
* backup copies of keyrings are created.
* assembler stuff for Pentium; gives about 15% better performance.
* fixed a lot of bugs.
Noteworthy changes in version 0.2.3
-----------------------------------
* Found a bug in the calculation of ELG fingerprints. This is now
fixed, but all existing fingerprints and keyids for ELG keys
are not any more valid.
* armor should now work; including clear signed text.
* moved some options to the new program g10maint
* It's now 64 bit clean and runs fine on an alpha--linux.
* Key generation is much faster now. I fixed this by using not
so strong random number for the primes (this was a bug because the
ElGamal primes are public parameters and it does not make sense
to generate them from strong random). The real secret is the x value
which is still generated from strong (okay: /dev/random) random bits.
* added option "--status-fd": see g10/OPTIONS
* We have secure memory on systems which support mlock().
It is not complete yet, because we do not have signal handler
which does a cleanup in very case.
We should also check the ulimit for the user in the case
that the admin does not have set a limit on locked pages.
* started with internationalization support.
* The logic to handle the web of trust is now implemented. It is
has some bugs; but I'm going to change the algorithm anyway.
It works by calculating the trustlevel on the fly. It may ask
you to provide trust parameters if the calculated trust probability
is too low. I will write a paper which discusses this new approach.
* a couple of changes to the configure script.
* New option "--quick-random" which uses a much quicker random
number generator. Keys generated while this option is in effect
are flags with "INSECURE!" in the user-id. This is a development
only option.
* Read support for new version packets (OpenPGP).
* Comment packets are now of correct OpenPGP type 16. Old comment
packets written by G10 are detected because they always start with
a hash which is an invalid version byte.
* The string "(INSECURE!)" is appended to a new user-id if this
is generated on a system without a good random number generator.
diff --git a/TODO b/TODO
index d5bca4ff0..b43dac34c 100644
--- a/TODO
+++ b/TODO
@@ -1,72 +1,62 @@
Bugs
----
* clearsig: keep lineendings as they are. Remember that trailings
blanks are not hashed. Funny: pgp263in works fine even with
a source file with CR,LF but GnuPG and pgp263in has problems
if the clearsign has been created by pgp263ia.
Needs more investigation - anyone?
* clearsign bug Greg Troxel Jan 11.
Important
----------
* Check revocation and expire stuff. PLEASE: THIS MUST BE TESTED!
* Check calculation of key validity. PLEASE: IT IS IMPORTED THAT
THIS GET TESTED.
* See why we always get this "Hmmm public key lost"
* print a warning when a revoked/expired secret key is used.
-> 0.9.1: I get some occasional segfaults during 'make check' unless I use
-> --with-included-zlib. It's strange, I have zlib-1.1.2 on one machine, and
-> zlib-1.1.3 on another, and both of them fail on occasion (maybe half of the
-[ I hope this is fixed ]
-
-> gpg: /home/jam/.gnupg/pubring.gpg: can't open gdbm file: Can't be writer
-> gpg: keyblock resource `/home/jam/.gnupg/pubring.gpg': file open error
-> gpg: OOPS in close enum_keyblocks - ignored
-
-
Needed
------
* remove more "Fixmes"
* Replace Blowfish by Twofish and add the new encrypted packet type
which has a MACing option (append SHA1 hash to the plaintext and
encrypt this all) - We need an identifier for Twofish to put this
one into the cipher preferences.
* The -export-dynamic flag to ld works only for FreeBSD 3.0. It does
not exist on FreeBSD's 2.2.x version of ld.
Also, on my FreeBSD 2.2-stable box, i simply removed the
-Wl,-export-dynamic flag from my Makefile and it linked and seems to
be working OK so far.
Minor Bugs
----------
* There is a race condition which leaves lock files after process
termination (a signal while in make_dotlock). Change the dotlock
implementaion to a create handle, make and release implemenation
and use an atexit to cleanup all pending locks. This is also
faster.
Nice to have
------------
* preferences of hash algorithms are not yet used.
* new menu to delete signatures and list signature in menu
* Replace the SIGUSR1 stuff by semaphores to avoid loss of a signal.
or use POSIX.4 realtime signals.
* add test cases for invalid data (scrambled armor or other random data)
* add checking of armor trailers
* Burn the buffers used by fopen(), or use read(2). Does this
really make sense?
* change the fake_data stuff to mpi_set_opaque
* How about letting something like 'gpg --version -v', list the
effective options.
* Stats about used random numbers.
diff --git a/VERSION b/VERSION
index df6b01fec..2003b639c 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.9.1a
+0.9.2
diff --git a/cipher/twofish.c b/cipher/twofish.c
index d52377f76..6ff7dee9f 100644
--- a/cipher/twofish.c
+++ b/cipher/twofish.c
@@ -1,913 +1,914 @@
/* Twofish for GPG
* By Matthew Skala <mskala@ansuz.sooke.bc.ca>, July 26, 1998
*
* This code is a "clean room" implementation, written from the paper
* _Twofish: A 128-Bit Block Cipher_ by Bruce Schneier, John Kelsey,
* Doug Whiting, David Wagner, Chris Hall, and Niels Ferguson, available
* through http://www.counterpane.com/twofish.html
*
* For background information on multiplication in finite fields, used for
* the matrix operations in the key schedule, see the book _Contemporary
* Abstract Algebra_ by Joseph A. Gallian, especially chapter 22 in the
* Third Edition.
*
* Only the 128-bit block size is supported at present. This code is intended
* for GNU C on a 32-bit system, but it should work almost anywhere. Loops
* are unrolled, precomputation tables are used, etc., for maximum speed at
* some cost in memory consumption. */
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h> /* for memcmp() */
#include "types.h" /* for byte and u32 typedefs */
+#include "util.h"
#include "errors.h"
/* Prototype for the self-test function. */
static const char *selftest(void);
/* Macros used by the info function. */
#define FNCCAST_SETKEY(f) ((int(*)(void*, byte*, unsigned))(f))
#define FNCCAST_CRYPT(f) ((void(*)(void*, byte*, byte*))(f))
/* Structure for an expanded Twofish key. s contains the key-dependent
* S-boxes composed with the MDS matrix; w contains the eight "whitening"
* subkeys, K[0] through K[7]. k holds the remaining, "round" subkeys. Note
* that k[i] corresponds to what the Twofish paper calls K[i+8]. */
typedef struct {
u32 s[4][256], w[8], k[32];
} TWOFISH_context;
/* These two tables are the q0 and q1 permutations, exactly as described in
* the Twofish paper. */
static const byte q0[256] = {
0xA9, 0x67, 0xB3, 0xE8, 0x04, 0xFD, 0xA3, 0x76, 0x9A, 0x92, 0x80, 0x78,
0xE4, 0xDD, 0xD1, 0x38, 0x0D, 0xC6, 0x35, 0x98, 0x18, 0xF7, 0xEC, 0x6C,
0x43, 0x75, 0x37, 0x26, 0xFA, 0x13, 0x94, 0x48, 0xF2, 0xD0, 0x8B, 0x30,
0x84, 0x54, 0xDF, 0x23, 0x19, 0x5B, 0x3D, 0x59, 0xF3, 0xAE, 0xA2, 0x82,
0x63, 0x01, 0x83, 0x2E, 0xD9, 0x51, 0x9B, 0x7C, 0xA6, 0xEB, 0xA5, 0xBE,
0x16, 0x0C, 0xE3, 0x61, 0xC0, 0x8C, 0x3A, 0xF5, 0x73, 0x2C, 0x25, 0x0B,
0xBB, 0x4E, 0x89, 0x6B, 0x53, 0x6A, 0xB4, 0xF1, 0xE1, 0xE6, 0xBD, 0x45,
0xE2, 0xF4, 0xB6, 0x66, 0xCC, 0x95, 0x03, 0x56, 0xD4, 0x1C, 0x1E, 0xD7,
0xFB, 0xC3, 0x8E, 0xB5, 0xE9, 0xCF, 0xBF, 0xBA, 0xEA, 0x77, 0x39, 0xAF,
0x33, 0xC9, 0x62, 0x71, 0x81, 0x79, 0x09, 0xAD, 0x24, 0xCD, 0xF9, 0xD8,
0xE5, 0xC5, 0xB9, 0x4D, 0x44, 0x08, 0x86, 0xE7, 0xA1, 0x1D, 0xAA, 0xED,
0x06, 0x70, 0xB2, 0xD2, 0x41, 0x7B, 0xA0, 0x11, 0x31, 0xC2, 0x27, 0x90,
0x20, 0xF6, 0x60, 0xFF, 0x96, 0x5C, 0xB1, 0xAB, 0x9E, 0x9C, 0x52, 0x1B,
0x5F, 0x93, 0x0A, 0xEF, 0x91, 0x85, 0x49, 0xEE, 0x2D, 0x4F, 0x8F, 0x3B,
0x47, 0x87, 0x6D, 0x46, 0xD6, 0x3E, 0x69, 0x64, 0x2A, 0xCE, 0xCB, 0x2F,
0xFC, 0x97, 0x05, 0x7A, 0xAC, 0x7F, 0xD5, 0x1A, 0x4B, 0x0E, 0xA7, 0x5A,
0x28, 0x14, 0x3F, 0x29, 0x88, 0x3C, 0x4C, 0x02, 0xB8, 0xDA, 0xB0, 0x17,
0x55, 0x1F, 0x8A, 0x7D, 0x57, 0xC7, 0x8D, 0x74, 0xB7, 0xC4, 0x9F, 0x72,
0x7E, 0x15, 0x22, 0x12, 0x58, 0x07, 0x99, 0x34, 0x6E, 0x50, 0xDE, 0x68,
0x65, 0xBC, 0xDB, 0xF8, 0xC8, 0xA8, 0x2B, 0x40, 0xDC, 0xFE, 0x32, 0xA4,
0xCA, 0x10, 0x21, 0xF0, 0xD3, 0x5D, 0x0F, 0x00, 0x6F, 0x9D, 0x36, 0x42,
0x4A, 0x5E, 0xC1, 0xE0
};
static const byte q1[256] = {
0x75, 0xF3, 0xC6, 0xF4, 0xDB, 0x7B, 0xFB, 0xC8, 0x4A, 0xD3, 0xE6, 0x6B,
0x45, 0x7D, 0xE8, 0x4B, 0xD6, 0x32, 0xD8, 0xFD, 0x37, 0x71, 0xF1, 0xE1,
0x30, 0x0F, 0xF8, 0x1B, 0x87, 0xFA, 0x06, 0x3F, 0x5E, 0xBA, 0xAE, 0x5B,
0x8A, 0x00, 0xBC, 0x9D, 0x6D, 0xC1, 0xB1, 0x0E, 0x80, 0x5D, 0xD2, 0xD5,
0xA0, 0x84, 0x07, 0x14, 0xB5, 0x90, 0x2C, 0xA3, 0xB2, 0x73, 0x4C, 0x54,
0x92, 0x74, 0x36, 0x51, 0x38, 0xB0, 0xBD, 0x5A, 0xFC, 0x60, 0x62, 0x96,
0x6C, 0x42, 0xF7, 0x10, 0x7C, 0x28, 0x27, 0x8C, 0x13, 0x95, 0x9C, 0xC7,
0x24, 0x46, 0x3B, 0x70, 0xCA, 0xE3, 0x85, 0xCB, 0x11, 0xD0, 0x93, 0xB8,
0xA6, 0x83, 0x20, 0xFF, 0x9F, 0x77, 0xC3, 0xCC, 0x03, 0x6F, 0x08, 0xBF,
0x40, 0xE7, 0x2B, 0xE2, 0x79, 0x0C, 0xAA, 0x82, 0x41, 0x3A, 0xEA, 0xB9,
0xE4, 0x9A, 0xA4, 0x97, 0x7E, 0xDA, 0x7A, 0x17, 0x66, 0x94, 0xA1, 0x1D,
0x3D, 0xF0, 0xDE, 0xB3, 0x0B, 0x72, 0xA7, 0x1C, 0xEF, 0xD1, 0x53, 0x3E,
0x8F, 0x33, 0x26, 0x5F, 0xEC, 0x76, 0x2A, 0x49, 0x81, 0x88, 0xEE, 0x21,
0xC4, 0x1A, 0xEB, 0xD9, 0xC5, 0x39, 0x99, 0xCD, 0xAD, 0x31, 0x8B, 0x01,
0x18, 0x23, 0xDD, 0x1F, 0x4E, 0x2D, 0xF9, 0x48, 0x4F, 0xF2, 0x65, 0x8E,
0x78, 0x5C, 0x58, 0x19, 0x8D, 0xE5, 0x98, 0x57, 0x67, 0x7F, 0x05, 0x64,
0xAF, 0x63, 0xB6, 0xFE, 0xF5, 0xB7, 0x3C, 0xA5, 0xCE, 0xE9, 0x68, 0x44,
0xE0, 0x4D, 0x43, 0x69, 0x29, 0x2E, 0xAC, 0x15, 0x59, 0xA8, 0x0A, 0x9E,
0x6E, 0x47, 0xDF, 0x34, 0x35, 0x6A, 0xCF, 0xDC, 0x22, 0xC9, 0xC0, 0x9B,
0x89, 0xD4, 0xED, 0xAB, 0x12, 0xA2, 0x0D, 0x52, 0xBB, 0x02, 0x2F, 0xA9,
0xD7, 0x61, 0x1E, 0xB4, 0x50, 0x04, 0xF6, 0xC2, 0x16, 0x25, 0x86, 0x56,
0x55, 0x09, 0xBE, 0x91
};
/* These MDS tables are actually tables of MDS composed with q0 and q1,
* because it is only ever used that way and we can save some time by
* precomputing. Of course the main saving comes from precomputing the
* GF(2^8) multiplication involved in the MDS matrix multiply; by looking
* things up in these tables we reduce the matrix multiply to four lookups
* and three XORs. Semi-formally, the definition of these tables is:
* mds[0][i] = MDS (q1[i] 0 0 0)^T mds[1][i] = MDS (0 q0[i] 0 0)^T
* mds[2][i] = MDS (0 0 q1[i] 0)^T mds[3][i] = MDS (0 0 0 q0[i])^T
* where ^T means "transpose", the matrix multiply is performed in GF(2^8)
* represented as GF(2)[x]/v(x) where v(x)=x^8+x^6+x^5+x^3+1 as described
* by Schneier et al, and I'm casually glossing over the byte/word
* conversion issues. */
static const u32 mds[4][256] = {
{0xBCBC3275, 0xECEC21F3, 0x202043C6, 0xB3B3C9F4, 0xDADA03DB, 0x02028B7B,
0xE2E22BFB, 0x9E9EFAC8, 0xC9C9EC4A, 0xD4D409D3, 0x18186BE6, 0x1E1E9F6B,
0x98980E45, 0xB2B2387D, 0xA6A6D2E8, 0x2626B74B, 0x3C3C57D6, 0x93938A32,
0x8282EED8, 0x525298FD, 0x7B7BD437, 0xBBBB3771, 0x5B5B97F1, 0x474783E1,
0x24243C30, 0x5151E20F, 0xBABAC6F8, 0x4A4AF31B, 0xBFBF4887, 0x0D0D70FA,
0xB0B0B306, 0x7575DE3F, 0xD2D2FD5E, 0x7D7D20BA, 0x666631AE, 0x3A3AA35B,
0x59591C8A, 0x00000000, 0xCDCD93BC, 0x1A1AE09D, 0xAEAE2C6D, 0x7F7FABC1,
0x2B2BC7B1, 0xBEBEB90E, 0xE0E0A080, 0x8A8A105D, 0x3B3B52D2, 0x6464BAD5,
0xD8D888A0, 0xE7E7A584, 0x5F5FE807, 0x1B1B1114, 0x2C2CC2B5, 0xFCFCB490,
0x3131272C, 0x808065A3, 0x73732AB2, 0x0C0C8173, 0x79795F4C, 0x6B6B4154,
0x4B4B0292, 0x53536974, 0x94948F36, 0x83831F51, 0x2A2A3638, 0xC4C49CB0,
0x2222C8BD, 0xD5D5F85A, 0xBDBDC3FC, 0x48487860, 0xFFFFCE62, 0x4C4C0796,
0x4141776C, 0xC7C7E642, 0xEBEB24F7, 0x1C1C1410, 0x5D5D637C, 0x36362228,
0x6767C027, 0xE9E9AF8C, 0x4444F913, 0x1414EA95, 0xF5F5BB9C, 0xCFCF18C7,
0x3F3F2D24, 0xC0C0E346, 0x7272DB3B, 0x54546C70, 0x29294CCA, 0xF0F035E3,
0x0808FE85, 0xC6C617CB, 0xF3F34F11, 0x8C8CE4D0, 0xA4A45993, 0xCACA96B8,
0x68683BA6, 0xB8B84D83, 0x38382820, 0xE5E52EFF, 0xADAD569F, 0x0B0B8477,
0xC8C81DC3, 0x9999FFCC, 0x5858ED03, 0x19199A6F, 0x0E0E0A08, 0x95957EBF,
0x70705040, 0xF7F730E7, 0x6E6ECF2B, 0x1F1F6EE2, 0xB5B53D79, 0x09090F0C,
0x616134AA, 0x57571682, 0x9F9F0B41, 0x9D9D803A, 0x111164EA, 0x2525CDB9,
0xAFAFDDE4, 0x4545089A, 0xDFDF8DA4, 0xA3A35C97, 0xEAEAD57E, 0x353558DA,
0xEDEDD07A, 0x4343FC17, 0xF8F8CB66, 0xFBFBB194, 0x3737D3A1, 0xFAFA401D,
0xC2C2683D, 0xB4B4CCF0, 0x32325DDE, 0x9C9C71B3, 0x5656E70B, 0xE3E3DA72,
0x878760A7, 0x15151B1C, 0xF9F93AEF, 0x6363BFD1, 0x3434A953, 0x9A9A853E,
0xB1B1428F, 0x7C7CD133, 0x88889B26, 0x3D3DA65F, 0xA1A1D7EC, 0xE4E4DF76,
0x8181942A, 0x91910149, 0x0F0FFB81, 0xEEEEAA88, 0x161661EE, 0xD7D77321,
0x9797F5C4, 0xA5A5A81A, 0xFEFE3FEB, 0x6D6DB5D9, 0x7878AEC5, 0xC5C56D39,
0x1D1DE599, 0x7676A4CD, 0x3E3EDCAD, 0xCBCB6731, 0xB6B6478B, 0xEFEF5B01,
0x12121E18, 0x6060C523, 0x6A6AB0DD, 0x4D4DF61F, 0xCECEE94E, 0xDEDE7C2D,
0x55559DF9, 0x7E7E5A48, 0x2121B24F, 0x03037AF2, 0xA0A02665, 0x5E5E198E,
0x5A5A6678, 0x65654B5C, 0x62624E58, 0xFDFD4519, 0x0606F48D, 0x404086E5,
0xF2F2BE98, 0x3333AC57, 0x17179067, 0x05058E7F, 0xE8E85E05, 0x4F4F7D64,
0x89896AAF, 0x10109563, 0x74742FB6, 0x0A0A75FE, 0x5C5C92F5, 0x9B9B74B7,
0x2D2D333C, 0x3030D6A5, 0x2E2E49CE, 0x494989E9, 0x46467268, 0x77775544,
0xA8A8D8E0, 0x9696044D, 0x2828BD43, 0xA9A92969, 0xD9D97929, 0x8686912E,
0xD1D187AC, 0xF4F44A15, 0x8D8D1559, 0xD6D682A8, 0xB9B9BC0A, 0x42420D9E,
0xF6F6C16E, 0x2F2FB847, 0xDDDD06DF, 0x23233934, 0xCCCC6235, 0xF1F1C46A,
0xC1C112CF, 0x8585EBDC, 0x8F8F9E22, 0x7171A1C9, 0x9090F0C0, 0xAAAA539B,
0x0101F189, 0x8B8BE1D4, 0x4E4E8CED, 0x8E8E6FAB, 0xABABA212, 0x6F6F3EA2,
0xE6E6540D, 0xDBDBF252, 0x92927BBB, 0xB7B7B602, 0x6969CA2F, 0x3939D9A9,
0xD3D30CD7, 0xA7A72361, 0xA2A2AD1E, 0xC3C399B4, 0x6C6C4450, 0x07070504,
0x04047FF6, 0x272746C2, 0xACACA716, 0xD0D07625, 0x50501386, 0xDCDCF756,
0x84841A55, 0xE1E15109, 0x7A7A25BE, 0x1313EF91},
{0xA9D93939, 0x67901717, 0xB3719C9C, 0xE8D2A6A6, 0x04050707, 0xFD985252,
0xA3658080, 0x76DFE4E4, 0x9A084545, 0x92024B4B, 0x80A0E0E0, 0x78665A5A,
0xE4DDAFAF, 0xDDB06A6A, 0xD1BF6363, 0x38362A2A, 0x0D54E6E6, 0xC6432020,
0x3562CCCC, 0x98BEF2F2, 0x181E1212, 0xF724EBEB, 0xECD7A1A1, 0x6C774141,
0x43BD2828, 0x7532BCBC, 0x37D47B7B, 0x269B8888, 0xFA700D0D, 0x13F94444,
0x94B1FBFB, 0x485A7E7E, 0xF27A0303, 0xD0E48C8C, 0x8B47B6B6, 0x303C2424,
0x84A5E7E7, 0x54416B6B, 0xDF06DDDD, 0x23C56060, 0x1945FDFD, 0x5BA33A3A,
0x3D68C2C2, 0x59158D8D, 0xF321ECEC, 0xAE316666, 0xA23E6F6F, 0x82165757,
0x63951010, 0x015BEFEF, 0x834DB8B8, 0x2E918686, 0xD9B56D6D, 0x511F8383,
0x9B53AAAA, 0x7C635D5D, 0xA63B6868, 0xEB3FFEFE, 0xA5D63030, 0xBE257A7A,
0x16A7ACAC, 0x0C0F0909, 0xE335F0F0, 0x6123A7A7, 0xC0F09090, 0x8CAFE9E9,
0x3A809D9D, 0xF5925C5C, 0x73810C0C, 0x2C273131, 0x2576D0D0, 0x0BE75656,
0xBB7B9292, 0x4EE9CECE, 0x89F10101, 0x6B9F1E1E, 0x53A93434, 0x6AC4F1F1,
0xB499C3C3, 0xF1975B5B, 0xE1834747, 0xE66B1818, 0xBDC82222, 0x450E9898,
0xE26E1F1F, 0xF4C9B3B3, 0xB62F7474, 0x66CBF8F8, 0xCCFF9999, 0x95EA1414,
0x03ED5858, 0x56F7DCDC, 0xD4E18B8B, 0x1C1B1515, 0x1EADA2A2, 0xD70CD3D3,
0xFB2BE2E2, 0xC31DC8C8, 0x8E195E5E, 0xB5C22C2C, 0xE9894949, 0xCF12C1C1,
0xBF7E9595, 0xBA207D7D, 0xEA641111, 0x77840B0B, 0x396DC5C5, 0xAF6A8989,
0x33D17C7C, 0xC9A17171, 0x62CEFFFF, 0x7137BBBB, 0x81FB0F0F, 0x793DB5B5,
0x0951E1E1, 0xADDC3E3E, 0x242D3F3F, 0xCDA47676, 0xF99D5555, 0xD8EE8282,
0xE5864040, 0xC5AE7878, 0xB9CD2525, 0x4D049696, 0x44557777, 0x080A0E0E,
0x86135050, 0xE730F7F7, 0xA1D33737, 0x1D40FAFA, 0xAA346161, 0xED8C4E4E,
0x06B3B0B0, 0x706C5454, 0xB22A7373, 0xD2523B3B, 0x410B9F9F, 0x7B8B0202,
0xA088D8D8, 0x114FF3F3, 0x3167CBCB, 0xC2462727, 0x27C06767, 0x90B4FCFC,
0x20283838, 0xF67F0404, 0x60784848, 0xFF2EE5E5, 0x96074C4C, 0x5C4B6565,
0xB1C72B2B, 0xAB6F8E8E, 0x9E0D4242, 0x9CBBF5F5, 0x52F2DBDB, 0x1BF34A4A,
0x5FA63D3D, 0x9359A4A4, 0x0ABCB9B9, 0xEF3AF9F9, 0x91EF1313, 0x85FE0808,
0x49019191, 0xEE611616, 0x2D7CDEDE, 0x4FB22121, 0x8F42B1B1, 0x3BDB7272,
0x47B82F2F, 0x8748BFBF, 0x6D2CAEAE, 0x46E3C0C0, 0xD6573C3C, 0x3E859A9A,
0x6929A9A9, 0x647D4F4F, 0x2A948181, 0xCE492E2E, 0xCB17C6C6, 0x2FCA6969,
0xFCC3BDBD, 0x975CA3A3, 0x055EE8E8, 0x7AD0EDED, 0xAC87D1D1, 0x7F8E0505,
0xD5BA6464, 0x1AA8A5A5, 0x4BB72626, 0x0EB9BEBE, 0xA7608787, 0x5AF8D5D5,
0x28223636, 0x14111B1B, 0x3FDE7575, 0x2979D9D9, 0x88AAEEEE, 0x3C332D2D,
0x4C5F7979, 0x02B6B7B7, 0xB896CACA, 0xDA583535, 0xB09CC4C4, 0x17FC4343,
0x551A8484, 0x1FF64D4D, 0x8A1C5959, 0x7D38B2B2, 0x57AC3333, 0xC718CFCF,
0x8DF40606, 0x74695353, 0xB7749B9B, 0xC4F59797, 0x9F56ADAD, 0x72DAE3E3,
0x7ED5EAEA, 0x154AF4F4, 0x229E8F8F, 0x12A2ABAB, 0x584E6262, 0x07E85F5F,
0x99E51D1D, 0x34392323, 0x6EC1F6F6, 0x50446C6C, 0xDE5D3232, 0x68724646,
0x6526A0A0, 0xBC93CDCD, 0xDB03DADA, 0xF8C6BABA, 0xC8FA9E9E, 0xA882D6D6,
0x2BCF6E6E, 0x40507070, 0xDCEB8585, 0xFE750A0A, 0x328A9393, 0xA48DDFDF,
0xCA4C2929, 0x10141C1C, 0x2173D7D7, 0xF0CCB4B4, 0xD309D4D4, 0x5D108A8A,
0x0FE25151, 0x00000000, 0x6F9A1919, 0x9DE01A1A, 0x368F9494, 0x42E6C7C7,
0x4AECC9C9, 0x5EFDD2D2, 0xC1AB7F7F, 0xE0D8A8A8},
{0xBC75BC32, 0xECF3EC21, 0x20C62043, 0xB3F4B3C9, 0xDADBDA03, 0x027B028B,
0xE2FBE22B, 0x9EC89EFA, 0xC94AC9EC, 0xD4D3D409, 0x18E6186B, 0x1E6B1E9F,
0x9845980E, 0xB27DB238, 0xA6E8A6D2, 0x264B26B7, 0x3CD63C57, 0x9332938A,
0x82D882EE, 0x52FD5298, 0x7B377BD4, 0xBB71BB37, 0x5BF15B97, 0x47E14783,
0x2430243C, 0x510F51E2, 0xBAF8BAC6, 0x4A1B4AF3, 0xBF87BF48, 0x0DFA0D70,
0xB006B0B3, 0x753F75DE, 0xD25ED2FD, 0x7DBA7D20, 0x66AE6631, 0x3A5B3AA3,
0x598A591C, 0x00000000, 0xCDBCCD93, 0x1A9D1AE0, 0xAE6DAE2C, 0x7FC17FAB,
0x2BB12BC7, 0xBE0EBEB9, 0xE080E0A0, 0x8A5D8A10, 0x3BD23B52, 0x64D564BA,
0xD8A0D888, 0xE784E7A5, 0x5F075FE8, 0x1B141B11, 0x2CB52CC2, 0xFC90FCB4,
0x312C3127, 0x80A38065, 0x73B2732A, 0x0C730C81, 0x794C795F, 0x6B546B41,
0x4B924B02, 0x53745369, 0x9436948F, 0x8351831F, 0x2A382A36, 0xC4B0C49C,
0x22BD22C8, 0xD55AD5F8, 0xBDFCBDC3, 0x48604878, 0xFF62FFCE, 0x4C964C07,
0x416C4177, 0xC742C7E6, 0xEBF7EB24, 0x1C101C14, 0x5D7C5D63, 0x36283622,
0x672767C0, 0xE98CE9AF, 0x441344F9, 0x149514EA, 0xF59CF5BB, 0xCFC7CF18,
0x3F243F2D, 0xC046C0E3, 0x723B72DB, 0x5470546C, 0x29CA294C, 0xF0E3F035,
0x088508FE, 0xC6CBC617, 0xF311F34F, 0x8CD08CE4, 0xA493A459, 0xCAB8CA96,
0x68A6683B, 0xB883B84D, 0x38203828, 0xE5FFE52E, 0xAD9FAD56, 0x0B770B84,
0xC8C3C81D, 0x99CC99FF, 0x580358ED, 0x196F199A, 0x0E080E0A, 0x95BF957E,
0x70407050, 0xF7E7F730, 0x6E2B6ECF, 0x1FE21F6E, 0xB579B53D, 0x090C090F,
0x61AA6134, 0x57825716, 0x9F419F0B, 0x9D3A9D80, 0x11EA1164, 0x25B925CD,
0xAFE4AFDD, 0x459A4508, 0xDFA4DF8D, 0xA397A35C, 0xEA7EEAD5, 0x35DA3558,
0xED7AEDD0, 0x431743FC, 0xF866F8CB, 0xFB94FBB1, 0x37A137D3, 0xFA1DFA40,
0xC23DC268, 0xB4F0B4CC, 0x32DE325D, 0x9CB39C71, 0x560B56E7, 0xE372E3DA,
0x87A78760, 0x151C151B, 0xF9EFF93A, 0x63D163BF, 0x345334A9, 0x9A3E9A85,
0xB18FB142, 0x7C337CD1, 0x8826889B, 0x3D5F3DA6, 0xA1ECA1D7, 0xE476E4DF,
0x812A8194, 0x91499101, 0x0F810FFB, 0xEE88EEAA, 0x16EE1661, 0xD721D773,
0x97C497F5, 0xA51AA5A8, 0xFEEBFE3F, 0x6DD96DB5, 0x78C578AE, 0xC539C56D,
0x1D991DE5, 0x76CD76A4, 0x3EAD3EDC, 0xCB31CB67, 0xB68BB647, 0xEF01EF5B,
0x1218121E, 0x602360C5, 0x6ADD6AB0, 0x4D1F4DF6, 0xCE4ECEE9, 0xDE2DDE7C,
0x55F9559D, 0x7E487E5A, 0x214F21B2, 0x03F2037A, 0xA065A026, 0x5E8E5E19,
0x5A785A66, 0x655C654B, 0x6258624E, 0xFD19FD45, 0x068D06F4, 0x40E54086,
0xF298F2BE, 0x335733AC, 0x17671790, 0x057F058E, 0xE805E85E, 0x4F644F7D,
0x89AF896A, 0x10631095, 0x74B6742F, 0x0AFE0A75, 0x5CF55C92, 0x9BB79B74,
0x2D3C2D33, 0x30A530D6, 0x2ECE2E49, 0x49E94989, 0x46684672, 0x77447755,
0xA8E0A8D8, 0x964D9604, 0x284328BD, 0xA969A929, 0xD929D979, 0x862E8691,
0xD1ACD187, 0xF415F44A, 0x8D598D15, 0xD6A8D682, 0xB90AB9BC, 0x429E420D,
0xF66EF6C1, 0x2F472FB8, 0xDDDFDD06, 0x23342339, 0xCC35CC62, 0xF16AF1C4,
0xC1CFC112, 0x85DC85EB, 0x8F228F9E, 0x71C971A1, 0x90C090F0, 0xAA9BAA53,
0x018901F1, 0x8BD48BE1, 0x4EED4E8C, 0x8EAB8E6F, 0xAB12ABA2, 0x6FA26F3E,
0xE60DE654, 0xDB52DBF2, 0x92BB927B, 0xB702B7B6, 0x692F69CA, 0x39A939D9,
0xD3D7D30C, 0xA761A723, 0xA21EA2AD, 0xC3B4C399, 0x6C506C44, 0x07040705,
0x04F6047F, 0x27C22746, 0xAC16ACA7, 0xD025D076, 0x50865013, 0xDC56DCF7,
0x8455841A, 0xE109E151, 0x7ABE7A25, 0x139113EF},
{0xD939A9D9, 0x90176790, 0x719CB371, 0xD2A6E8D2, 0x05070405, 0x9852FD98,
0x6580A365, 0xDFE476DF, 0x08459A08, 0x024B9202, 0xA0E080A0, 0x665A7866,
0xDDAFE4DD, 0xB06ADDB0, 0xBF63D1BF, 0x362A3836, 0x54E60D54, 0x4320C643,
0x62CC3562, 0xBEF298BE, 0x1E12181E, 0x24EBF724, 0xD7A1ECD7, 0x77416C77,
0xBD2843BD, 0x32BC7532, 0xD47B37D4, 0x9B88269B, 0x700DFA70, 0xF94413F9,
0xB1FB94B1, 0x5A7E485A, 0x7A03F27A, 0xE48CD0E4, 0x47B68B47, 0x3C24303C,
0xA5E784A5, 0x416B5441, 0x06DDDF06, 0xC56023C5, 0x45FD1945, 0xA33A5BA3,
0x68C23D68, 0x158D5915, 0x21ECF321, 0x3166AE31, 0x3E6FA23E, 0x16578216,
0x95106395, 0x5BEF015B, 0x4DB8834D, 0x91862E91, 0xB56DD9B5, 0x1F83511F,
0x53AA9B53, 0x635D7C63, 0x3B68A63B, 0x3FFEEB3F, 0xD630A5D6, 0x257ABE25,
0xA7AC16A7, 0x0F090C0F, 0x35F0E335, 0x23A76123, 0xF090C0F0, 0xAFE98CAF,
0x809D3A80, 0x925CF592, 0x810C7381, 0x27312C27, 0x76D02576, 0xE7560BE7,
0x7B92BB7B, 0xE9CE4EE9, 0xF10189F1, 0x9F1E6B9F, 0xA93453A9, 0xC4F16AC4,
0x99C3B499, 0x975BF197, 0x8347E183, 0x6B18E66B, 0xC822BDC8, 0x0E98450E,
0x6E1FE26E, 0xC9B3F4C9, 0x2F74B62F, 0xCBF866CB, 0xFF99CCFF, 0xEA1495EA,
0xED5803ED, 0xF7DC56F7, 0xE18BD4E1, 0x1B151C1B, 0xADA21EAD, 0x0CD3D70C,
0x2BE2FB2B, 0x1DC8C31D, 0x195E8E19, 0xC22CB5C2, 0x8949E989, 0x12C1CF12,
0x7E95BF7E, 0x207DBA20, 0x6411EA64, 0x840B7784, 0x6DC5396D, 0x6A89AF6A,
0xD17C33D1, 0xA171C9A1, 0xCEFF62CE, 0x37BB7137, 0xFB0F81FB, 0x3DB5793D,
0x51E10951, 0xDC3EADDC, 0x2D3F242D, 0xA476CDA4, 0x9D55F99D, 0xEE82D8EE,
0x8640E586, 0xAE78C5AE, 0xCD25B9CD, 0x04964D04, 0x55774455, 0x0A0E080A,
0x13508613, 0x30F7E730, 0xD337A1D3, 0x40FA1D40, 0x3461AA34, 0x8C4EED8C,
0xB3B006B3, 0x6C54706C, 0x2A73B22A, 0x523BD252, 0x0B9F410B, 0x8B027B8B,
0x88D8A088, 0x4FF3114F, 0x67CB3167, 0x4627C246, 0xC06727C0, 0xB4FC90B4,
0x28382028, 0x7F04F67F, 0x78486078, 0x2EE5FF2E, 0x074C9607, 0x4B655C4B,
0xC72BB1C7, 0x6F8EAB6F, 0x0D429E0D, 0xBBF59CBB, 0xF2DB52F2, 0xF34A1BF3,
0xA63D5FA6, 0x59A49359, 0xBCB90ABC, 0x3AF9EF3A, 0xEF1391EF, 0xFE0885FE,
0x01914901, 0x6116EE61, 0x7CDE2D7C, 0xB2214FB2, 0x42B18F42, 0xDB723BDB,
0xB82F47B8, 0x48BF8748, 0x2CAE6D2C, 0xE3C046E3, 0x573CD657, 0x859A3E85,
0x29A96929, 0x7D4F647D, 0x94812A94, 0x492ECE49, 0x17C6CB17, 0xCA692FCA,
0xC3BDFCC3, 0x5CA3975C, 0x5EE8055E, 0xD0ED7AD0, 0x87D1AC87, 0x8E057F8E,
0xBA64D5BA, 0xA8A51AA8, 0xB7264BB7, 0xB9BE0EB9, 0x6087A760, 0xF8D55AF8,
0x22362822, 0x111B1411, 0xDE753FDE, 0x79D92979, 0xAAEE88AA, 0x332D3C33,
0x5F794C5F, 0xB6B702B6, 0x96CAB896, 0x5835DA58, 0x9CC4B09C, 0xFC4317FC,
0x1A84551A, 0xF64D1FF6, 0x1C598A1C, 0x38B27D38, 0xAC3357AC, 0x18CFC718,
0xF4068DF4, 0x69537469, 0x749BB774, 0xF597C4F5, 0x56AD9F56, 0xDAE372DA,
0xD5EA7ED5, 0x4AF4154A, 0x9E8F229E, 0xA2AB12A2, 0x4E62584E, 0xE85F07E8,
0xE51D99E5, 0x39233439, 0xC1F66EC1, 0x446C5044, 0x5D32DE5D, 0x72466872,
0x26A06526, 0x93CDBC93, 0x03DADB03, 0xC6BAF8C6, 0xFA9EC8FA, 0x82D6A882,
0xCF6E2BCF, 0x50704050, 0xEB85DCEB, 0x750AFE75, 0x8A93328A, 0x8DDFA48D,
0x4C29CA4C, 0x141C1014, 0x73D72173, 0xCCB4F0CC, 0x09D4D309, 0x108A5D10,
0xE2510FE2, 0x00000000, 0x9A196F9A, 0xE01A9DE0, 0x8F94368F, 0xE6C742E6,
0xECC94AEC, 0xFDD25EFD, 0xAB7FC1AB, 0xD8A8E0D8}
};
/* The exp_to_poly and poly_to_exp tables are used to perform efficient
* operations in GF(2^8) represented as GF(2)[x]/w(x) where
* w(x)=x^8+x^6+x^3+x^2+1. We care about doing that because it's part of the
* definition of the RS matrix in the key schedule. Elements of that field
* are polynomials of degree not greater than 7 and all coefficients 0 or 1,
* which can be represented naturally by bytes (just substitute x=2). In that
* form, GF(2^8) addition is the same as bitwise XOR, but GF(2^8)
* multiplication is inefficient without hardware support. To multiply
* faster, I make use of the fact x is a generator for the nonzero elements,
* so that every element p of GF(2)[x]/w(x) is either 0 or equal to (x)^n for
* some n in 0..254. Note that that caret is exponentiation in GF(2^8),
* *not* polynomial notation. So if I want to compute pq where p and q are
* in GF(2^8), I can just say:
* 1. if p=0 or q=0 then pq=0
* 2. otherwise, find m and n such that p=x^m and q=x^n
* 3. pq=(x^m)(x^n)=x^(m+n), so add m and n and find pq
* The translations in steps 2 and 3 are looked up in the tables
* poly_to_exp (for step 2) and exp_to_poly (for step 3). To see this
* in action, look at the CALC_S macro. As additional wrinkles, note that
* one of my operands is always a constant, so the poly_to_exp lookup on it
* is done in advance; I included the original values in the comments so
* readers can have some chance of recognizing that this *is* the RS matrix
* from the Twofish paper. I've only included the table entries I actually
* need; I never do a lookup on a variable input of zero and the biggest
* exponents I'll ever see are 254 (variable) and 237 (constant), so they'll
* never sum to more than 491. I'm repeating part of the exp_to_poly table
* so that I don't have to do mod-255 reduction in the exponent arithmetic.
* Since I know my constant operands are never zero, I only have to worry
* about zero values in the variable operand, and I do it with a simple
* conditional branch. I know conditionals are expensive, but I couldn't
* see a non-horrible way of avoiding them, and I did manage to group the
* statements so that each if covers four group multiplications. */
static const byte poly_to_exp[255] = {
0x00, 0x01, 0x17, 0x02, 0x2E, 0x18, 0x53, 0x03, 0x6A, 0x2F, 0x93, 0x19,
0x34, 0x54, 0x45, 0x04, 0x5C, 0x6B, 0xB6, 0x30, 0xA6, 0x94, 0x4B, 0x1A,
0x8C, 0x35, 0x81, 0x55, 0xAA, 0x46, 0x0D, 0x05, 0x24, 0x5D, 0x87, 0x6C,
0x9B, 0xB7, 0xC1, 0x31, 0x2B, 0xA7, 0xA3, 0x95, 0x98, 0x4C, 0xCA, 0x1B,
0xE6, 0x8D, 0x73, 0x36, 0xCD, 0x82, 0x12, 0x56, 0x62, 0xAB, 0xF0, 0x47,
0x4F, 0x0E, 0xBD, 0x06, 0xD4, 0x25, 0xD2, 0x5E, 0x27, 0x88, 0x66, 0x6D,
0xD6, 0x9C, 0x79, 0xB8, 0x08, 0xC2, 0xDF, 0x32, 0x68, 0x2C, 0xFD, 0xA8,
0x8A, 0xA4, 0x5A, 0x96, 0x29, 0x99, 0x22, 0x4D, 0x60, 0xCB, 0xE4, 0x1C,
0x7B, 0xE7, 0x3B, 0x8E, 0x9E, 0x74, 0xF4, 0x37, 0xD8, 0xCE, 0xF9, 0x83,
0x6F, 0x13, 0xB2, 0x57, 0xE1, 0x63, 0xDC, 0xAC, 0xC4, 0xF1, 0xAF, 0x48,
0x0A, 0x50, 0x42, 0x0F, 0xBA, 0xBE, 0xC7, 0x07, 0xDE, 0xD5, 0x78, 0x26,
0x65, 0xD3, 0xD1, 0x5F, 0xE3, 0x28, 0x21, 0x89, 0x59, 0x67, 0xFC, 0x6E,
0xB1, 0xD7, 0xF8, 0x9D, 0xF3, 0x7A, 0x3A, 0xB9, 0xC6, 0x09, 0x41, 0xC3,
0xAE, 0xE0, 0xDB, 0x33, 0x44, 0x69, 0x92, 0x2D, 0x52, 0xFE, 0x16, 0xA9,
0x0C, 0x8B, 0x80, 0xA5, 0x4A, 0x5B, 0xB5, 0x97, 0xC9, 0x2A, 0xA2, 0x9A,
0xC0, 0x23, 0x86, 0x4E, 0xBC, 0x61, 0xEF, 0xCC, 0x11, 0xE5, 0x72, 0x1D,
0x3D, 0x7C, 0xEB, 0xE8, 0xE9, 0x3C, 0xEA, 0x8F, 0x7D, 0x9F, 0xEC, 0x75,
0x1E, 0xF5, 0x3E, 0x38, 0xF6, 0xD9, 0x3F, 0xCF, 0x76, 0xFA, 0x1F, 0x84,
0xA0, 0x70, 0xED, 0x14, 0x90, 0xB3, 0x7E, 0x58, 0xFB, 0xE2, 0x20, 0x64,
0xD0, 0xDD, 0x77, 0xAD, 0xDA, 0xC5, 0x40, 0xF2, 0x39, 0xB0, 0xF7, 0x49,
0xB4, 0x0B, 0x7F, 0x51, 0x15, 0x43, 0x91, 0x10, 0x71, 0xBB, 0xEE, 0xBF,
0x85, 0xC8, 0xA1
};
static const byte exp_to_poly[492] = {
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x4D, 0x9A, 0x79, 0xF2,
0xA9, 0x1F, 0x3E, 0x7C, 0xF8, 0xBD, 0x37, 0x6E, 0xDC, 0xF5, 0xA7, 0x03,
0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xCD, 0xD7, 0xE3, 0x8B, 0x5B, 0xB6,
0x21, 0x42, 0x84, 0x45, 0x8A, 0x59, 0xB2, 0x29, 0x52, 0xA4, 0x05, 0x0A,
0x14, 0x28, 0x50, 0xA0, 0x0D, 0x1A, 0x34, 0x68, 0xD0, 0xED, 0x97, 0x63,
0xC6, 0xC1, 0xCF, 0xD3, 0xEB, 0x9B, 0x7B, 0xF6, 0xA1, 0x0F, 0x1E, 0x3C,
0x78, 0xF0, 0xAD, 0x17, 0x2E, 0x5C, 0xB8, 0x3D, 0x7A, 0xF4, 0xA5, 0x07,
0x0E, 0x1C, 0x38, 0x70, 0xE0, 0x8D, 0x57, 0xAE, 0x11, 0x22, 0x44, 0x88,
0x5D, 0xBA, 0x39, 0x72, 0xE4, 0x85, 0x47, 0x8E, 0x51, 0xA2, 0x09, 0x12,
0x24, 0x48, 0x90, 0x6D, 0xDA, 0xF9, 0xBF, 0x33, 0x66, 0xCC, 0xD5, 0xE7,
0x83, 0x4B, 0x96, 0x61, 0xC2, 0xC9, 0xDF, 0xF3, 0xAB, 0x1B, 0x36, 0x6C,
0xD8, 0xFD, 0xB7, 0x23, 0x46, 0x8C, 0x55, 0xAA, 0x19, 0x32, 0x64, 0xC8,
0xDD, 0xF7, 0xA3, 0x0B, 0x16, 0x2C, 0x58, 0xB0, 0x2D, 0x5A, 0xB4, 0x25,
0x4A, 0x94, 0x65, 0xCA, 0xD9, 0xFF, 0xB3, 0x2B, 0x56, 0xAC, 0x15, 0x2A,
0x54, 0xA8, 0x1D, 0x3A, 0x74, 0xE8, 0x9D, 0x77, 0xEE, 0x91, 0x6F, 0xDE,
0xF1, 0xAF, 0x13, 0x26, 0x4C, 0x98, 0x7D, 0xFA, 0xB9, 0x3F, 0x7E, 0xFC,
0xB5, 0x27, 0x4E, 0x9C, 0x75, 0xEA, 0x99, 0x7F, 0xFE, 0xB1, 0x2F, 0x5E,
0xBC, 0x35, 0x6A, 0xD4, 0xE5, 0x87, 0x43, 0x86, 0x41, 0x82, 0x49, 0x92,
0x69, 0xD2, 0xE9, 0x9F, 0x73, 0xE6, 0x81, 0x4F, 0x9E, 0x71, 0xE2, 0x89,
0x5F, 0xBE, 0x31, 0x62, 0xC4, 0xC5, 0xC7, 0xC3, 0xCB, 0xDB, 0xFB, 0xBB,
0x3B, 0x76, 0xEC, 0x95, 0x67, 0xCE, 0xD1, 0xEF, 0x93, 0x6B, 0xD6, 0xE1,
0x8F, 0x53, 0xA6, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x4D,
0x9A, 0x79, 0xF2, 0xA9, 0x1F, 0x3E, 0x7C, 0xF8, 0xBD, 0x37, 0x6E, 0xDC,
0xF5, 0xA7, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xCD, 0xD7, 0xE3,
0x8B, 0x5B, 0xB6, 0x21, 0x42, 0x84, 0x45, 0x8A, 0x59, 0xB2, 0x29, 0x52,
0xA4, 0x05, 0x0A, 0x14, 0x28, 0x50, 0xA0, 0x0D, 0x1A, 0x34, 0x68, 0xD0,
0xED, 0x97, 0x63, 0xC6, 0xC1, 0xCF, 0xD3, 0xEB, 0x9B, 0x7B, 0xF6, 0xA1,
0x0F, 0x1E, 0x3C, 0x78, 0xF0, 0xAD, 0x17, 0x2E, 0x5C, 0xB8, 0x3D, 0x7A,
0xF4, 0xA5, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0x8D, 0x57, 0xAE, 0x11,
0x22, 0x44, 0x88, 0x5D, 0xBA, 0x39, 0x72, 0xE4, 0x85, 0x47, 0x8E, 0x51,
0xA2, 0x09, 0x12, 0x24, 0x48, 0x90, 0x6D, 0xDA, 0xF9, 0xBF, 0x33, 0x66,
0xCC, 0xD5, 0xE7, 0x83, 0x4B, 0x96, 0x61, 0xC2, 0xC9, 0xDF, 0xF3, 0xAB,
0x1B, 0x36, 0x6C, 0xD8, 0xFD, 0xB7, 0x23, 0x46, 0x8C, 0x55, 0xAA, 0x19,
0x32, 0x64, 0xC8, 0xDD, 0xF7, 0xA3, 0x0B, 0x16, 0x2C, 0x58, 0xB0, 0x2D,
0x5A, 0xB4, 0x25, 0x4A, 0x94, 0x65, 0xCA, 0xD9, 0xFF, 0xB3, 0x2B, 0x56,
0xAC, 0x15, 0x2A, 0x54, 0xA8, 0x1D, 0x3A, 0x74, 0xE8, 0x9D, 0x77, 0xEE,
0x91, 0x6F, 0xDE, 0xF1, 0xAF, 0x13, 0x26, 0x4C, 0x98, 0x7D, 0xFA, 0xB9,
0x3F, 0x7E, 0xFC, 0xB5, 0x27, 0x4E, 0x9C, 0x75, 0xEA, 0x99, 0x7F, 0xFE,
0xB1, 0x2F, 0x5E, 0xBC, 0x35, 0x6A, 0xD4, 0xE5, 0x87, 0x43, 0x86, 0x41,
0x82, 0x49, 0x92, 0x69, 0xD2, 0xE9, 0x9F, 0x73, 0xE6, 0x81, 0x4F, 0x9E,
0x71, 0xE2, 0x89, 0x5F, 0xBE, 0x31, 0x62, 0xC4, 0xC5, 0xC7, 0xC3, 0xCB
};
/* Macro to perform one column of the RS matrix multiplication. The
* parameters a, b, c, and d are the four bytes of output; i is the index
* of the key bytes, and w, x, y, and z, are the column of constants from
* the RS matrix, preprocessed through the poly_to_exp table. */
#define CALC_S(a, b, c, d, i, w, x, y, z) \
if (key[i]) { \
tmp = poly_to_exp[key[i] - 1]; \
(a) ^= exp_to_poly[tmp + (w)]; \
(b) ^= exp_to_poly[tmp + (x)]; \
(c) ^= exp_to_poly[tmp + (y)]; \
(d) ^= exp_to_poly[tmp + (z)]; \
}
/* Macros to calculate the key-dependent S-boxes using the S vector from
* CALC_S. CALC_SB_2 computes a single entry in all four S-boxes, where i
* is the index of the entry to compute, and a and b are the index numbers
* preprocessed through the q0 and q1 tables respectively. CALC_SB is
* simply a convenience to make the code shorter; it calls CALC_SB_2 four
* times with consecutive indices from i to i+3, using the remaining
* parameters two by two. */
#define CALC_SB_2(i, a, b) \
ctx->s[0][i] = mds[0][q0[(a) ^ sa] ^ se]; \
ctx->s[1][i] = mds[1][q0[(b) ^ sb] ^ sf]; \
ctx->s[2][i] = mds[2][q1[(a) ^ sc] ^ sg]; \
ctx->s[3][i] = mds[3][q1[(b) ^ sd] ^ sh]
#define CALC_SB(i, a, b, c, d, e, f, g, h) \
CALC_SB_2 (i, a, b); CALC_SB_2 ((i)+1, c, d); \
CALC_SB_2 ((i)+2, e, f); CALC_SB_2 ((i)+3, g, h)
/* Macros to calculate the whitening and round subkeys. CALC_K_2 computes the
* h() function for a given index (either 2i or 2i+1). a and b are the index
* preprocessed through q0 and q1 respectively; j is the index of the first
* key byte to use. CALC_K computes a pair of subkeys by calling CALC_K_2
* twice, doing the Psuedo-Hadamard Transform, and doing the necessary
* rotations. Its parameters are: a, the array to write the results into,
* j, the index of the first output entry, k and l, the preprocessed indices
* for index 2i, and m and n, the preprocessed indices for index 2i+1. */
#define CALC_K_2(a, b, j) \
mds[0][q0[a ^ key[(j) + 8]] ^ key[j]] \
^ mds[1][q0[b ^ key[(j) + 9]] ^ key[(j) + 1]] \
^ mds[2][q1[a ^ key[(j) + 10]] ^ key[(j) + 2]] \
^ mds[3][q1[b ^ key[(j) + 11]] ^ key[(j) + 3]]
#define CALC_K(a, j, k, l, m, n) \
x = CALC_K_2 (k, l, 0); \
y = CALC_K_2 (m, n, 4); \
y = (y << 8) + (y >> 24); \
x += y; y += x; ctx->a[j] = x; \
ctx->a[(j) + 1] = (y << 9) + ( y >> 23)
/* Perform the key setup. Note that this works *only* with 128-bit keys,
* despite the API that makes it look like it might support other sizes. */
static int
twofish_setkey (TWOFISH_context *ctx, const byte *key, const unsigned keylen)
{
/* Temporaries for CALC_K. */
u32 x, y;
/* The S vector used to key the S-boxes, split up into individual
* bytes. */
byte sa = 0, sb = 0, sc = 0, sd = 0, se = 0, sf = 0, sg = 0, sh = 0;
/* Temporary for CALC_S. */
byte tmp;
/* Flags for self-test. */
static int initialized = 0;
static const char *selftest_failed=0;
/* Check key length. */
if( keylen != 16 )
return G10ERR_WRONG_KEYLEN;
/* Do self-test if necessary. */
if (!initialized) {
initialized = 1;
selftest_failed = selftest ();
if( selftest_failed )
fprintf(stderr, "%s\n", selftest_failed );
}
if( selftest_failed )
return G10ERR_SELFTEST_FAILED;
/* Compute the S vector. The magic numbers are the entries of the RS
* matrix, preprocessed through poly_to_exp. The numbers in the comments
* are the original (polynomial form) matrix entries. */
CALC_S (sa, sb, sc, sd, 0, 0x00, 0x2D, 0x01, 0x2D); /* 01 A4 02 A4 */
CALC_S (sa, sb, sc, sd, 1, 0x2D, 0xA4, 0x44, 0x8A); /* A4 56 A1 55 */
CALC_S (sa, sb, sc, sd, 2, 0x8A, 0xD5, 0xBF, 0xD1); /* 55 82 FC 87 */
CALC_S (sa, sb, sc, sd, 3, 0xD1, 0x7F, 0x3D, 0x99); /* 87 F3 C1 5A */
CALC_S (sa, sb, sc, sd, 4, 0x99, 0x46, 0x66, 0x96); /* 5A 1E 47 58 */
CALC_S (sa, sb, sc, sd, 5, 0x96, 0x3C, 0x5B, 0xED); /* 58 C6 AE DB */
CALC_S (sa, sb, sc, sd, 6, 0xED, 0x37, 0x4F, 0xE0); /* DB 68 3D 9E */
CALC_S (sa, sb, sc, sd, 7, 0xE0, 0xD0, 0x8C, 0x17); /* 9E E5 19 03 */
CALC_S (se, sf, sg, sh, 8, 0x00, 0x2D, 0x01, 0x2D); /* 01 A4 02 A4 */
CALC_S (se, sf, sg, sh, 9, 0x2D, 0xA4, 0x44, 0x8A); /* A4 56 A1 55 */
CALC_S (se, sf, sg, sh, 10, 0x8A, 0xD5, 0xBF, 0xD1); /* 55 82 FC 87 */
CALC_S (se, sf, sg, sh, 11, 0xD1, 0x7F, 0x3D, 0x99); /* 87 F3 C1 5A */
CALC_S (se, sf, sg, sh, 12, 0x99, 0x46, 0x66, 0x96); /* 5A 1E 47 58 */
CALC_S (se, sf, sg, sh, 13, 0x96, 0x3C, 0x5B, 0xED); /* 58 C6 AE DB */
CALC_S (se, sf, sg, sh, 14, 0xED, 0x37, 0x4F, 0xE0); /* DB 68 3D 9E */
CALC_S (se, sf, sg, sh, 15, 0xE0, 0xD0, 0x8C, 0x17); /* 9E E5 19 03 */
/* Compute the S-boxes. The constants are indices of
* S-box entries, preprocessed through q0 and q1. */
CALC_SB (0, 0xA9, 0x75, 0x67, 0xF3, 0xB3, 0xC6, 0xE8, 0xF4);
CALC_SB (4, 0x04, 0xDB, 0xFD, 0x7B, 0xA3, 0xFB, 0x76, 0xC8);
CALC_SB (8, 0x9A, 0x4A, 0x92, 0xD3, 0x80, 0xE6, 0x78, 0x6B);
CALC_SB (12, 0xE4, 0x45, 0xDD, 0x7D, 0xD1, 0xE8, 0x38, 0x4B);
CALC_SB (16, 0x0D, 0xD6, 0xC6, 0x32, 0x35, 0xD8, 0x98, 0xFD);
CALC_SB (20, 0x18, 0x37, 0xF7, 0x71, 0xEC, 0xF1, 0x6C, 0xE1);
CALC_SB (24, 0x43, 0x30, 0x75, 0x0F, 0x37, 0xF8, 0x26, 0x1B);
CALC_SB (28, 0xFA, 0x87, 0x13, 0xFA, 0x94, 0x06, 0x48, 0x3F);
CALC_SB (32, 0xF2, 0x5E, 0xD0, 0xBA, 0x8B, 0xAE, 0x30, 0x5B);
CALC_SB (36, 0x84, 0x8A, 0x54, 0x00, 0xDF, 0xBC, 0x23, 0x9D);
CALC_SB (40, 0x19, 0x6D, 0x5B, 0xC1, 0x3D, 0xB1, 0x59, 0x0E);
CALC_SB (44, 0xF3, 0x80, 0xAE, 0x5D, 0xA2, 0xD2, 0x82, 0xD5);
CALC_SB (48, 0x63, 0xA0, 0x01, 0x84, 0x83, 0x07, 0x2E, 0x14);
CALC_SB (52, 0xD9, 0xB5, 0x51, 0x90, 0x9B, 0x2C, 0x7C, 0xA3);
CALC_SB (56, 0xA6, 0xB2, 0xEB, 0x73, 0xA5, 0x4C, 0xBE, 0x54);
CALC_SB (60, 0x16, 0x92, 0x0C, 0x74, 0xE3, 0x36, 0x61, 0x51);
CALC_SB (64, 0xC0, 0x38, 0x8C, 0xB0, 0x3A, 0xBD, 0xF5, 0x5A);
CALC_SB (68, 0x73, 0xFC, 0x2C, 0x60, 0x25, 0x62, 0x0B, 0x96);
CALC_SB (72, 0xBB, 0x6C, 0x4E, 0x42, 0x89, 0xF7, 0x6B, 0x10);
CALC_SB (76, 0x53, 0x7C, 0x6A, 0x28, 0xB4, 0x27, 0xF1, 0x8C);
CALC_SB (80, 0xE1, 0x13, 0xE6, 0x95, 0xBD, 0x9C, 0x45, 0xC7);
CALC_SB (84, 0xE2, 0x24, 0xF4, 0x46, 0xB6, 0x3B, 0x66, 0x70);
CALC_SB (88, 0xCC, 0xCA, 0x95, 0xE3, 0x03, 0x85, 0x56, 0xCB);
CALC_SB (92, 0xD4, 0x11, 0x1C, 0xD0, 0x1E, 0x93, 0xD7, 0xB8);
CALC_SB (96, 0xFB, 0xA6, 0xC3, 0x83, 0x8E, 0x20, 0xB5, 0xFF);
CALC_SB (100, 0xE9, 0x9F, 0xCF, 0x77, 0xBF, 0xC3, 0xBA, 0xCC);
CALC_SB (104, 0xEA, 0x03, 0x77, 0x6F, 0x39, 0x08, 0xAF, 0xBF);
CALC_SB (108, 0x33, 0x40, 0xC9, 0xE7, 0x62, 0x2B, 0x71, 0xE2);
CALC_SB (112, 0x81, 0x79, 0x79, 0x0C, 0x09, 0xAA, 0xAD, 0x82);
CALC_SB (116, 0x24, 0x41, 0xCD, 0x3A, 0xF9, 0xEA, 0xD8, 0xB9);
CALC_SB (120, 0xE5, 0xE4, 0xC5, 0x9A, 0xB9, 0xA4, 0x4D, 0x97);
CALC_SB (124, 0x44, 0x7E, 0x08, 0xDA, 0x86, 0x7A, 0xE7, 0x17);
CALC_SB (128, 0xA1, 0x66, 0x1D, 0x94, 0xAA, 0xA1, 0xED, 0x1D);
CALC_SB (132, 0x06, 0x3D, 0x70, 0xF0, 0xB2, 0xDE, 0xD2, 0xB3);
CALC_SB (136, 0x41, 0x0B, 0x7B, 0x72, 0xA0, 0xA7, 0x11, 0x1C);
CALC_SB (140, 0x31, 0xEF, 0xC2, 0xD1, 0x27, 0x53, 0x90, 0x3E);
CALC_SB (144, 0x20, 0x8F, 0xF6, 0x33, 0x60, 0x26, 0xFF, 0x5F);
CALC_SB (148, 0x96, 0xEC, 0x5C, 0x76, 0xB1, 0x2A, 0xAB, 0x49);
CALC_SB (152, 0x9E, 0x81, 0x9C, 0x88, 0x52, 0xEE, 0x1B, 0x21);
CALC_SB (156, 0x5F, 0xC4, 0x93, 0x1A, 0x0A, 0xEB, 0xEF, 0xD9);
CALC_SB (160, 0x91, 0xC5, 0x85, 0x39, 0x49, 0x99, 0xEE, 0xCD);
CALC_SB (164, 0x2D, 0xAD, 0x4F, 0x31, 0x8F, 0x8B, 0x3B, 0x01);
CALC_SB (168, 0x47, 0x18, 0x87, 0x23, 0x6D, 0xDD, 0x46, 0x1F);
CALC_SB (172, 0xD6, 0x4E, 0x3E, 0x2D, 0x69, 0xF9, 0x64, 0x48);
CALC_SB (176, 0x2A, 0x4F, 0xCE, 0xF2, 0xCB, 0x65, 0x2F, 0x8E);
CALC_SB (180, 0xFC, 0x78, 0x97, 0x5C, 0x05, 0x58, 0x7A, 0x19);
CALC_SB (184, 0xAC, 0x8D, 0x7F, 0xE5, 0xD5, 0x98, 0x1A, 0x57);
CALC_SB (188, 0x4B, 0x67, 0x0E, 0x7F, 0xA7, 0x05, 0x5A, 0x64);
CALC_SB (192, 0x28, 0xAF, 0x14, 0x63, 0x3F, 0xB6, 0x29, 0xFE);
CALC_SB (196, 0x88, 0xF5, 0x3C, 0xB7, 0x4C, 0x3C, 0x02, 0xA5);
CALC_SB (200, 0xB8, 0xCE, 0xDA, 0xE9, 0xB0, 0x68, 0x17, 0x44);
CALC_SB (204, 0x55, 0xE0, 0x1F, 0x4D, 0x8A, 0x43, 0x7D, 0x69);
CALC_SB (208, 0x57, 0x29, 0xC7, 0x2E, 0x8D, 0xAC, 0x74, 0x15);
CALC_SB (212, 0xB7, 0x59, 0xC4, 0xA8, 0x9F, 0x0A, 0x72, 0x9E);
CALC_SB (216, 0x7E, 0x6E, 0x15, 0x47, 0x22, 0xDF, 0x12, 0x34);
CALC_SB (220, 0x58, 0x35, 0x07, 0x6A, 0x99, 0xCF, 0x34, 0xDC);
CALC_SB (224, 0x6E, 0x22, 0x50, 0xC9, 0xDE, 0xC0, 0x68, 0x9B);
CALC_SB (228, 0x65, 0x89, 0xBC, 0xD4, 0xDB, 0xED, 0xF8, 0xAB);
CALC_SB (232, 0xC8, 0x12, 0xA8, 0xA2, 0x2B, 0x0D, 0x40, 0x52);
CALC_SB (236, 0xDC, 0xBB, 0xFE, 0x02, 0x32, 0x2F, 0xA4, 0xA9);
CALC_SB (240, 0xCA, 0xD7, 0x10, 0x61, 0x21, 0x1E, 0xF0, 0xB4);
CALC_SB (244, 0xD3, 0x50, 0x5D, 0x04, 0x0F, 0xF6, 0x00, 0xC2);
CALC_SB (248, 0x6F, 0x16, 0x9D, 0x25, 0x36, 0x86, 0x42, 0x56);
CALC_SB (252, 0x4A, 0x55, 0x5E, 0x09, 0xC1, 0xBE, 0xE0, 0x91);
/* Calculate whitening and round subkeys. The constants are
* indices of subkeys, preprocessed through q0 and q1. */
CALC_K (w, 0, 0xA9, 0x75, 0x67, 0xF3);
CALC_K (w, 2, 0xB3, 0xC6, 0xE8, 0xF4);
CALC_K (w, 4, 0x04, 0xDB, 0xFD, 0x7B);
CALC_K (w, 6, 0xA3, 0xFB, 0x76, 0xC8);
CALC_K (k, 0, 0x9A, 0x4A, 0x92, 0xD3);
CALC_K (k, 2, 0x80, 0xE6, 0x78, 0x6B);
CALC_K (k, 4, 0xE4, 0x45, 0xDD, 0x7D);
CALC_K (k, 6, 0xD1, 0xE8, 0x38, 0x4B);
CALC_K (k, 8, 0x0D, 0xD6, 0xC6, 0x32);
CALC_K (k, 10, 0x35, 0xD8, 0x98, 0xFD);
CALC_K (k, 12, 0x18, 0x37, 0xF7, 0x71);
CALC_K (k, 14, 0xEC, 0xF1, 0x6C, 0xE1);
CALC_K (k, 16, 0x43, 0x30, 0x75, 0x0F);
CALC_K (k, 18, 0x37, 0xF8, 0x26, 0x1B);
CALC_K (k, 20, 0xFA, 0x87, 0x13, 0xFA);
CALC_K (k, 22, 0x94, 0x06, 0x48, 0x3F);
CALC_K (k, 24, 0xF2, 0x5E, 0xD0, 0xBA);
CALC_K (k, 26, 0x8B, 0xAE, 0x30, 0x5B);
CALC_K (k, 28, 0x84, 0x8A, 0x54, 0x00);
CALC_K (k, 30, 0xDF, 0xBC, 0x23, 0x9D);
return 0;
}
/* Macros to compute the g() function in the encryption and decryption
* rounds. G1 is the straight g() function; G2 includes the 8-bit
* rotation for the high 32-bit word. */
#define G1(a) \
(ctx->s[0][(a) & 0xFF]) ^ (ctx->s[1][((a) >> 8) & 0xFF]) \
^ (ctx->s[2][((a) >> 16) & 0xFF]) ^ (ctx->s[3][(a) >> 24])
#define G2(b) \
(ctx->s[1][(b) & 0xFF]) ^ (ctx->s[2][((b) >> 8) & 0xFF]) \
^ (ctx->s[3][((b) >> 16) & 0xFF]) ^ (ctx->s[0][(b) >> 24])
/* Encryption and decryption Feistel rounds. Each one calls the two g()
* macros, does the PHT, and performs the XOR and the appropriate bit
* rotations. The parameters are the round number (used to select subkeys),
* and the four 32-bit chunks of the text. */
#define ENCROUND(n, a, b, c, d) \
x = G1 (a); y = G2 (b); \
x += y; y += x + ctx->k[2 * (n) + 1]; \
(c) ^= x + ctx->k[2 * (n)]; \
(c) = ((c) >> 1) + ((c) << 31); \
(d) = (((d) << 1)+((d) >> 31)) ^ y
#define DECROUND(n, a, b, c, d) \
x = G1 (a); y = G2 (b); \
x += y; y += x; \
(d) ^= y + ctx->k[2 * (n) + 1]; \
(d) = ((d) >> 1) + ((d) << 31); \
(c) = (((c) << 1)+((c) >> 31)); \
(c) ^= (x + ctx->k[2 * (n)])
/* Encryption and decryption cycles; each one is simply two Feistel rounds
* with the 32-bit chunks re-ordered to simulate the "swap" */
#define ENCCYCLE(n) \
ENCROUND (2 * (n), a, b, c, d); \
ENCROUND (2 * (n) + 1, c, d, a, b)
#define DECCYCLE(n) \
DECROUND (2 * (n) + 1, c, d, a, b); \
DECROUND (2 * (n), a, b, c, d)
/* Macros to convert the input and output bytes into 32-bit words,
* and simultaneously perform the whitening step. INPACK packs word
* number n into the variable named by x, using whitening subkey number m.
* OUTUNPACK unpacks word number n from the variable named by x, using
* whitening subkey number m. */
#define INPACK(n, x, m) \
x = in[4 * (n)] ^ (in[4 * (n) + 1] << 8) \
^ (in[4 * (n) + 2] << 16) ^ (in[4 * (n) + 3] << 24) ^ ctx->w[m]
#define OUTUNPACK(n, x, m) \
x ^= ctx->w[m]; \
out[4 * (n)] = x; out[4 * (n) + 1] = x >> 8; \
out[4 * (n) + 2] = x >> 16; out[4 * (n) + 3] = x >> 24
/* Encrypt one block. in and out may be the same. */
static void
twofish_encrypt (const TWOFISH_context *ctx, byte *out, const byte *in)
{
/* The four 32-bit chunks of the text. */
u32 a, b, c, d;
/* Temporaries used by the round function. */
u32 x, y;
/* Input whitening and packing. */
INPACK (0, a, 0);
INPACK (1, b, 1);
INPACK (2, c, 2);
INPACK (3, d, 3);
/* Encryption Feistel cycles. */
ENCCYCLE (0);
ENCCYCLE (1);
ENCCYCLE (2);
ENCCYCLE (3);
ENCCYCLE (4);
ENCCYCLE (5);
ENCCYCLE (6);
ENCCYCLE (7);
/* Output whitening and unpacking. */
OUTUNPACK (0, c, 4);
OUTUNPACK (1, d, 5);
OUTUNPACK (2, a, 6);
OUTUNPACK (3, b, 7);
}
/* Decrypt one block. in and out may be the same. */
static void
twofish_decrypt (const TWOFISH_context *ctx, byte *out, const byte *in)
{
/* The four 32-bit chunks of the text. */
u32 a, b, c, d;
/* Temporaries used by the round function. */
u32 x, y;
/* Input whitening and packing. */
INPACK (0, c, 4);
INPACK (1, d, 5);
INPACK (2, a, 6);
INPACK (3, b, 7);
/* Encryption Feistel cycles. */
DECCYCLE (7);
DECCYCLE (6);
DECCYCLE (5);
DECCYCLE (4);
DECCYCLE (3);
DECCYCLE (2);
DECCYCLE (1);
DECCYCLE (0);
/* Output whitening and unpacking. */
OUTUNPACK (0, a, 0);
OUTUNPACK (1, b, 1);
OUTUNPACK (2, c, 2);
OUTUNPACK (3, d, 3);
}
/* Test a single encryption and decryption, as a sanity check. */
static const char*
selftest (void)
{
TWOFISH_context ctx; /* Expanded key. */
byte scratch[16]; /* Encryption/decryption result buffer. */
/* Test vector for single encryption/decryption. Note that I am using
* the vector from the Twofish paper's "known answer test", I=3, instead
* of the all-0 vector from the "intermediate value test", because an
* all-0 key would trigger all the special cases in the RS matrix multiply,
* leaving the actual math untested. */
static const byte plaintext[16] = {
0xD4, 0x91, 0xDB, 0x16, 0xE7, 0xB1, 0xC3, 0x9E,
0x86, 0xCB, 0x08, 0x6B, 0x78, 0x9F, 0x54, 0x19
};
static const byte key[16] = {
0x9F, 0x58, 0x9F, 0x5C, 0xF6, 0x12, 0x2C, 0x32,
0xB6, 0xBF, 0xEC, 0x2F, 0x2A, 0xE8, 0xC3, 0x5A
};
static const byte ciphertext[16] = {
0x01, 0x9F, 0x98, 0x09, 0xDE, 0x17, 0x11, 0x85,
0x8F, 0xAA, 0xC3, 0xA3, 0xBA, 0x20, 0xFB, 0xC3
};
twofish_setkey (&ctx, key, sizeof(key));
twofish_encrypt (&ctx, scratch, plaintext);
if (memcmp (scratch, ciphertext, sizeof (ciphertext)))
return "Twofish test encryption failed.";
twofish_decrypt (&ctx, scratch, scratch);
if (memcmp (scratch, plaintext, sizeof (plaintext)))
return "Twofish test decryption failed.";
return NULL;
}
/* More complete test program. This does a thousand encryptions and
* decryptions with each of five hundred keys using a feedback scheme similar
* to a Feistel cipher, so as to be sure of testing all the table entries
* pretty thoroughly. We keep changing the keys so as to get a more
* meaningful performance number, since the key setup is non-trivial for
* Twofish. */
#ifdef TEST
#include <stdio.h>
#include <string.h>
#include <time.h>
int
main()
{
TWOFISH_context ctx; /* Expanded key. */
int i, j; /* Loop counters. */
const char *encrypt_msg; /* Message to print regarding encryption test;
* the printf is done outside the loop to avoid
* stuffing up the timing. */
clock_t timer; /* For computing elapsed time. */
/* Test buffer. */
byte buffer[2][16] = {
{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF},
{0x0F, 0x1E, 0x2D, 0x3C, 0x4B, 0x5A, 0x69, 0x78,
0x87, 0x96, 0xA5, 0xB4, 0xC3, 0xD2 ,0xE1, 0xF0}
};
/* Expected outputs for the million-operation test */
static const byte test_encrypt[2][16] = {
{0xD6, 0xD9, 0x74, 0x06, 0x93, 0x9C, 0x9A, 0x5E,
0xAA, 0x34, 0x18, 0x5B, 0xD3, 0x92, 0x5B, 0xC5},
{0x9C, 0xCD, 0x01, 0x30, 0xF9, 0x96, 0x00, 0x60,
0x49, 0x91, 0x73, 0x28, 0x9D, 0x8E, 0x8F, 0xC4}
};
static const byte test_decrypt[2][16] = {
{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF},
{0x0F, 0x1E, 0x2D, 0x3C, 0x4B, 0x5A, 0x69, 0x78,
0x87, 0x96, 0xA5, 0xB4, 0xC3, 0xD2 ,0xE1, 0xF0}
};
/* Start the timer ticking. */
timer = clock ();
/* Encryption test. */
for (i = 0; i < 250; i++) {
twofish_setkey (&ctx, buffer[0], sizeof (buffer[0]));
for (j = 0; j < 1000; j++)
twofish_encrypt (&ctx, buffer[1], buffer[1]);
twofish_setkey (&ctx, buffer[1], sizeof (buffer[1]));
for (j = 0; j < 1000; j++)
twofish_encrypt (&ctx, buffer[0], buffer[0]);
}
encrypt_msg = memcmp (buffer, test_encrypt, sizeof (test_encrypt)) ?
"encryption failure!\n" : "encryption OK!\n";
/* Decryption test. */
for (i = 0; i < 250; i++) {
twofish_setkey (&ctx, buffer[1], sizeof (buffer[1]));
for (j = 0; j < 1000; j++)
twofish_decrypt (&ctx, buffer[0], buffer[0]);
twofish_setkey (&ctx, buffer[0], sizeof (buffer[0]));
for (j = 0; j < 1000; j++)
twofish_decrypt (&ctx, buffer[1], buffer[1]);
}
/* Stop the timer, and print results. */
timer = clock () - timer;
printf (encrypt_msg);
printf (memcmp (buffer, test_decrypt, sizeof (test_decrypt)) ?
"decryption failure!\n" : "decryption OK!\n");
printf ("elapsed time: %.1f s.\n", (float) timer / CLOCKS_PER_SEC);
return 0;
}
#endif /* TEST */
static const char *
twofish_get_info (int algo, size_t *keylen,
size_t *blocksize, size_t *contextsize,
int (**r_setkey) (void *c, byte *key, unsigned keylen),
void (**r_encrypt) (void *c, byte *outbuf, byte *inbuf),
void (**r_decrypt) (void *c, byte *outbuf, byte *inbuf)
)
{
*keylen = 128;
*blocksize = 16;
*contextsize = sizeof (TWOFISH_context);
*r_setkey = FNCCAST_SETKEY (twofish_setkey);
*r_encrypt= FNCCAST_CRYPT (twofish_encrypt);
*r_decrypt= FNCCAST_CRYPT (twofish_decrypt);
if (algo == 102) /* This algorithm number is assigned for
* experiments, so we can use it */
return "TWOFISH";
return NULL;
}
const char * const gnupgext_version = "TWOFISH ($Revision$)";
static struct {
int class;
int version;
int value;
void (*func)(void);
} func_table[] = {
{ 20, 1, 0, (void(*)(void))twofish_get_info },
{ 21, 1, 102 },
};
/****************
* Enumerate the names of the functions together with informations about
* this function. Set sequence to an integer with a initial value of 0 and
* do not change it.
* If what is 0 all kind of functions are returned.
* Return values: class := class of function:
* 10 = message digest algorithm info function
* 11 = integer with available md algorithms
* 20 = cipher algorithm info function
* 21 = integer with available cipher algorithms
* 30 = public key algorithm info function
* 31 = integer with available pubkey algorithms
* version = interface version of the function/pointer
* (currently this is 1 for all functions)
*/
void *
gnupgext_enum_func ( int what, int *sequence, int *class, int *vers )
{
void *ret;
int i = *sequence;
do {
if ( i >= DIM(func_table) || i < 0 ) {
return NULL;
}
*class = func_table[i].class;
*vers = func_table[i].version;
switch( *class ) {
case 11:
case 21:
case 31:
ret = &func_table[i].value;
break;
default:
ret = func_table[i].func;
break;
}
i++;
} while ( what && what != *class );
*sequence = i;
return ret;
}
diff --git a/configure.in b/configure.in
index d26b1bce1..96060957e 100644
--- a/configure.in
+++ b/configure.in
@@ -1,369 +1,369 @@
dnl
dnl Configure template for GNUPG
dnl
dnl (Process this file with autoconf to produce a configure script.)
AC_REVISION($Revision$)dnl
dnl Must reset CDPATH so that bash's cd does not print to stdout
CDPATH=
AC_INIT(g10/g10.c)
AC_CONFIG_AUX_DIR(scripts)
AM_CONFIG_HEADER(config.h)
VERSION=`cat $srcdir/VERSION`
PACKAGE=gnupg
ALL_LINGUAS="de es_ES fr it pl pt_BR ru"
AC_SUBST(VERSION)
AC_SUBST(PACKAGE)
AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
AC_MSG_CHECKING([whether use of /dev/random is requested])
AC_ARG_ENABLE(dev-random,
[ --disable-dev-random disable the use of dev random],
try_dev_random=$enableval, try_dev_random=yes)
AC_MSG_RESULT($try_dev_random)
AC_MSG_CHECKING([whether use of extensions is requested])
AC_ARG_ENABLE(dynload,
[ --disable-dynload disable use of extensions],
try_dynload=$enableval, try_dynload=yes)
AC_MSG_RESULT($try_dynload)
AC_MSG_CHECKING([whether assembler modules are requested])
AC_ARG_ENABLE(asm,
[ --disable-asm do not use assembler modules],
try_asm_modules=$enableval, try_asm_modules=yes)
AC_MSG_RESULT($try_asm_modules)
AC_MSG_CHECKING([whether memory debugging is requested])
AC_ARG_ENABLE(m-debug,
[ --enable-m-debug enable debugging of memory allocation],
use_m_debug=$enableval, use_m_debug=no)
AC_MSG_RESULT($use_m_debug)
if test "$use_m_debug" = yes; then
AC_DEFINE(M_DEBUG)
use_m_guard=yes
else
AC_MSG_CHECKING([whether memory guard is requested])
AC_ARG_ENABLE(m-guard,
- [ --disable-m-guard disable memory guard facility],
- use_m_guard=$enableval, use_m_guard=yes)
+ [ --enable-m-guard enable memory guard facility],
+ use_m_guard=$enableval, use_m_guard=no)
AC_MSG_RESULT($use_m_guard)
fi
if test "$use_m_guard" = yes ; then
AC_DEFINE(M_GUARD)
CFLAGS="$CFLAGS -g"
else
CFLAGS="$CFLAGS -O2"
fi
AC_MSG_CHECKING([whether included zlib is requested])
AC_ARG_WITH(included-zlib,
[ --with-included-zlib use the zlib code included here],
[g10_force_zlib=yes], [g10_force_zlib=no] )
AC_MSG_RESULT($g10_force_zlib)
dnl Checks for programs.
AC_CANONICAL_SYSTEM
AC_ARG_PROGRAM
AC_PROG_MAKE_SET
AM_SANITY_CHECK
missing_dir=`cd $ac_aux_dir && pwd`
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
dnl AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
AC_PROG_CC
AC_PROG_CPP
AC_ISC_POSIX
AC_PROG_RANLIB
AC_PROG_INSTALL
dnl AC_CYGWIN32
if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Wall"
fi
case "${target}" in
i386--mingw32)
# special stuff for Windoze NT
cross_compiling=yes
CC="i386--mingw32-gcc"
CPP="i386--mingw32-gcc -E"
RANLIB="i386--mingw32-ranlib"
ac_cv_have_dev_random=no
AC_DEFINE(USE_RNDW32)
;;
*-*-hpux*)
if test -z "$GCC" ; then
CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
fi
;;
m68k-atari-mint)
;;
*)
;;
esac
GNUPG_CHECK_PIC
GNUPG_CHECK_RDYNAMIC
if test "$NO_PIC" = yes; then
try_dynload=no
fi
case "${target}" in
i386--mingw32)
PRINTABLE_OS_NAME="MingW32"
;;
*-linux*)
PRINTABLE_OS_NAME="GNU/Linux"
;;
*)
PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
;;
esac
AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME")
dnl Fixme: Are these the best flags for OpenBSD????
case "${target}" in
*-openbsd*)
NAME_OF_DEV_RANDOM="/dev/srandom"
NAME_OF_DEV_URANDOM="/dev/urandom"
DYNLINK_MOD_CFLAGS="-shared -rdynamic -fpic -Wl,-Bshareable -Wl,-x"
;;
*)
NAME_OF_DEV_RANDOM="/dev/random"
NAME_OF_DEV_URANDOM="/dev/urandom"
DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC -lc"
;;
esac
AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM")
AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM")
dnl Checks for libraries.
AM_GNU_GETTEXT
AC_CHECK_LIB(gdbm,gdbm_firstkey)
if test "$try_dynload" = yes ; then
AC_CHECK_LIB(dl,dlopen)
if test "$ac_cv_lib_dl_dlopen" = "yes"; then
AC_DEFINE(USE_DYNAMIC_LINKING)
AC_DEFINE(HAVE_DL_DLOPEN)
DYNLINK_LDFLAGS="$CFLAGS_RDYNAMIC"
use_gnupg_extensions=yes
else
AC_CHECK_LIB(c,dlopen)
if test "$ac_cv_lib_c_dlopen" = "yes"; then
AC_DEFINE(USE_DYNAMIC_LINKING)
AC_DEFINE(HAVE_DL_DLOPEN)
DYNLINK_LDFLAGS="$CFLAGS_RDYNAMIC"
dnl fixme: this is probably false but it should
dnl work for freebsd
AC_DEFINE(DLSYM_NEEDS_UNDERSCORE)
use_gnupg_extensions=yes
else
AC_CHECK_LIB(dld,dld_link)
if test "$ac_cv_lib_dld_dld_link" = "yes"; then
AC_DEFINE(USE_DYNAMIC_LINKING)
AC_DEFINE(HAVE_DLD_DLD_LINK)
DYNLINK_LDFLAGS="$CFLAGS_RDYNAMIC"
use_gnupg_extensions=yes
fi
fi
fi
else
AC_MSG_CHECKING(for dynamic loading)
DYNLINK_LDFLAGS=
DYNLINK_MOD_CFLAGS=
use_gnupg_extensions=no
AC_MSG_RESULT(has been disabled)
fi
AM_CONDITIONAL(ENABLE_GNUPG_EXTENSIONS, test "$use_gnupg_extensions" = yes )
AC_SUBST(DYNLINK_LDFLAGS)
AC_SUBST(DYNLINK_MOD_CFLAGS)
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(unistd.h)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_TYPE_SIGNAL
AC_DECL_SYS_SIGLIST
GNUPG_CHECK_ENDIAN
GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
AC_CHECK_SIZEOF(unsigned short, 2)
AC_CHECK_SIZEOF(unsigned int, 4)
AC_CHECK_SIZEOF(unsigned long, 4)
if test "$ac_cv_sizeof_unsigned_short" = "0" \
|| test "$ac_cv_sizeof_unsigned_int" = "0" \
|| test "$ac_cv_sizeof_unsigned_long" = "0"; then
AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
fi
dnl Checks for library functions.
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(strerror stpcpy strlwr tcgetattr rand strtoul mmap)
AC_CHECK_FUNCS(memmove gettimeofday getrusage gethrtime setrlimit)
AC_CHECK_FUNCS(memicmp atexit raise getpagesize strftime)
GNUPG_CHECK_MLOCK
GNUPG_CHECK_IPC
if test "$ac_cv_header_sys_shm_h" = "yes"; then
AC_DEFINE(USE_SHM_COPROCESSING)
fi
dnl check whether we have a random device
if test "$try_dev_random" = yes ; then
AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
[if test -c "$NAME_OF_DEV_RANDOM" && test -c "$NAME_OF_DEV_URANDOM" ; then
ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
if test "$ac_cv_have_dev_random" = yes; then
AC_DEFINE(HAVE_DEV_RANDOM)
AC_DEFINE(USE_RNDLINUX)
fi
else
AC_MSG_CHECKING(for random device)
ac_cv_have_dev_random=no
AC_MSG_RESULT(has been disabled)
fi
dnl
dnl Figure how to link the random modules
dnl
if test "$ac_cv_have_dev_random" = yes; then
AC_DEFINE(USE_RNDLINUX)
STATIC_RANDOM_OBJS="rndlinux.o"
DYNAMIC_RANDOM_MODS=""
else
case "${target}" in
i386--mingw32)
AC_DEFINE(USE_RNDW32)
STATIC_RANDOM_OBJS=""
DYNAMIC_RANDOM_MODS=""
;;
m68k-atari-mint)
AC_DEFINE(USE_RNDATARI)
STATIC_RANDOM_OBJS=""
DYNAMIC_RANDOM_MODS=""
;;
*)
AC_DEFINE(USE_RNDUNIX)
STATIC_RANDOM_OBJS="rndunix.o"
DYNAMIC_RANDOM_MODS=""
;;
esac
fi
AC_SUBST(STATIC_RANDOM_OBJS)
AC_SUBST(DYNAMIC_RANDOM_MODS)
dnl
dnl Figure how to link the cipher modules
dnl
dnl (form now these are only dynamic)
STATIC_CIPHER_OBJS=""
DYNAMIC_CIPHER_MODS="twofish tiger"
AC_SUBST(STATIC_CIPHER_OBJS)
AC_SUBST(DYNAMIC_CIPHER_MODS)
dnl setup assembler stuff
AC_MSG_CHECKING(for mpi assembler functions)
if test -f $srcdir/mpi/config.links ; then
. $srcdir/mpi/config.links
GNUPG_LINK_FILES($mpi_ln_src, $mpi_ln_dst)
ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
ac_cv_mpi_sflags="$mpi_sflags"
ac_cv_mpi_config_done="yes"
AC_MSG_RESULT(done)
else
AC_MSG_RESULT(failed)
AC_MSG_ERROR([mpi/config.links missing!])
fi
MPI_EXTRA_ASM_OBJS=""
if test "$ac_cv_mpi_extra_asm_modules" != ""; then
GNUPG_MSG_PRINT([mpi extra asm functions:])
for i in $ac_cv_mpi_extra_asm_modules; do
GNUPG_MSG_PRINT([$i])
MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
done
AC_MSG_RESULT()
fi
AC_SUBST(MPI_EXTRA_ASM_OBJS)
MPI_SFLAGS="$ac_cv_mpi_sflags"
AC_SUBST(MPI_SFLAGS)
dnl Do we have zlib? Must do it here because Solaris failed
dnl when compiling a conftest (due to the "-lz" from LIBS).
if test "$g10_force_zlib" = "yes"; then
ZLIBS="../zlib/libzlib.a"
AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
GNUPG_LINK_FILES(zlib/zlib.h, zlib.h )
GNUPG_LINK_FILES(zlib/zconf.h, zconf.h )
else
AC_CHECK_HEADERS(zlib.h)
if test "$ac_cv_header_zlib_h" = yes ; then
LIBS="$LIBS -lz"
ZLIBS=
AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, false)
else
ZLIBS="../zlib/libzlib.a"
AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
GNUPG_LINK_FILES(zlib/zlib.h, zlib.h )
GNUPG_LINK_FILES(zlib/zconf.h, zconf.h )
fi
fi
AC_SUBST(ZLIBS)
GNUPG_DO_LINK_FILES
AC_OUTPUT([
Makefile
intl/Makefile
po/Makefile.in
util/Makefile
mpi/Makefile
cipher/Makefile
g10/Makefile
doc/Makefile
tools/Makefile
zlib/Makefile
checks/Makefile
])
dnl *-*wedit:notab*-* Please keep this as the last line.
diff --git a/debian/changelog b/debian/changelog
index 65c4bf31f..dd58db671 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,172 +1,180 @@
+gnupg (0.9.2-1) unstable; urgency=low
+
+ * New version.
+ * debian/rules (build): Removed CFLAGS as the default is now sufficient.
+ * debian/rules (clean): remove special handling cleanup in intl.
+
+ -- Werner Koch <wk@isil.d.suttle.de> Wed, 20 Jan 1999 21:23:11 +0100
+
gnupg (0.9.1-1) unstable; urgency=low
* New upstream version.
-- James Troup <james@nocrew.org> Sat, 9 Jan 1999 22:29:11 +0000
gnupg (0.9.0-1) unstable; urgency=low
* New upstream version.
* g10/armor.c (armor_filter): add missing new line in comment string; as
noticed by Stainless Steel Rat <ratinox@peorth.gweep.net>.
-- James Troup <james@nocrew.org> Tue, 29 Dec 1998 20:22:43 +0000
gnupg (0.4.5-1) unstable; urgency=low
* New upstream version.
* debian/rules (clean): force removal of intl/libintl.h which the
Makefiles fail to remove properly.
-- James Troup <james@nocrew.org> Tue, 8 Dec 1998 22:40:23 +0000
gnupg (0.4.4-1) unstable; urgency=low
* New upstream version.
-- James Troup <james@nocrew.org> Sat, 21 Nov 1998 01:34:29 +0000
gnupg (0.4.3-1) unstable; urgency=low
* New upstream version.
* debian/README.Debian: new file; contains same information as is in the
preinst. Suggested by Wichert Akkerman <wichert@cs.leidenuniv.nl>.
* debian/rules (binary-arch): install `README.Debian'
* debian/control (Standards-Version): updated to 2.5.0.0.
-- James Troup <james@nocrew.org> Sun, 8 Nov 1998 19:08:12 +0000
gnupg (0.4.2-1) unstable; urgency=low
* New upstream version.
* debian/preinst: improve message about the NEWS file which isn't
actually installed when it's referred to, thanks to Martin Mitchell
- <martin@debian.org>.
+ <martin@debian.org>.
* debian/rules (binary-arch): don't install the now non-existent `rfcs',
but do install `OpenPGP'.
-- James Troup <james@nocrew.org> Sun, 18 Oct 1998 22:48:34 +0100
gnupg (0.4.1-1) unstable; urgency=low
* New upstream version.
* debian/rules (binary-arch): fix the gpgm manpage symlink now installed
by `make install'.
-- James Troup <james@nocrew.org> Sun, 11 Oct 1998 17:01:21 +0100
gnupg (0.4.0-1) unstable; urgency=high
* New upstream version. [#26717]
* debian/copyright: tone down warning about alpha nature of gnupg.
* debian/copyright: new maintainer address.
* debian/control: update extended description.
* debian/rules (binary-arch): install FAQ and all ChangeLogs.
* debian/preinst: new; check for upgrade from (<= 0.3.2-1) and warn about
incompatabilites in keyring format and offer to move old copy out of
gpg out of the way for transistion strategy and inform the user about
the old copies of gnupg available on my web page.
* debian/rules (binary-arch) install preinst.
* debian/rules (binary-arch): don't depend on the test target as it is
now partially interactive (tries to generate a key, which requires
someone else to be using the computer).
-- James Troup <james@nocrew.org> Thu, 8 Oct 1998 00:47:07 +0100
gnupg (0.3.2-1) unstable; urgency=low
* New upstream version.
* debian/control (Maintainer): new address.
* debian/copyright: updated list of changes.
-- James Troup <james@nocrew.org> Thu, 9 Jul 1998 21:06:07 +0200
gnupg (0.3.1-1) unstable; urgency=low
* New upstream version.
-- James Troup <james@nocrew.org> Tue, 7 Jul 1998 00:26:21 +0200
gnupg (0.3.0-2) unstable; urgency=low
* Applied bug-fix patch from Werner.
-- James Troup <jjtroup@comp.brad.ac.uk> Fri, 26 Jun 1998 12:18:29 +0200
gnupg (0.3.0-1) unstable; urgency=low
* New upstream version.
* debian/control: rewrote short and long description.
* cipher/Makefile.am: link tiger with -lc.
* debian/rules (binary-arch): strip loadable modules.
* util/secmem.c (lock_pool): get rid of errant test code; fix from
Werner Koch <wk@isil.d.shuttle.de>.
* debian/rules (test): new target which runs gnupg's test suite.
binary-arch depends on it, to ensure it's run whenever the package is
built.
-- James Troup <jjtroup@comp.brad.ac.uk> Thu, 25 Jun 1998 16:04:57 +0200
gnupg (0.2.19-1) unstable; urgency=low
* New upstream version.
* debian/control: Updated long description.
-- James Troup <jjtroup@comp.brad.ac.uk> Sat, 30 May 1998 12:12:35 +0200
gnupg (0.2.18-1) unstable; urgency=low
* New upstream version.
-- James Troup <J.J.Troup@comp.brad.ac.uk> Sat, 16 May 1998 11:52:47 +0200
gnupg (0.2.17-1) unstable; urgency=high
* New upstream version.
* debian/control (Standards-Version): updated to 2.4.1.0.
* debian/control: tone down warning about alpha nature of gnupg, as per
README.
* debian/copyright: ditto.
-- James Troup <jjtroup@comp.brad.ac.uk> Mon, 4 May 1998 22:36:51 +0200
gnupg (0.2.15-1) unstable; urgency=high
* New upstream version.
-- James Troup <jjtroup@comp.brad.ac.uk> Fri, 10 Apr 1998 01:12:20 +0100
gnupg (0.2.13-1) unstable; urgency=high
* New upstream version.
-- James Troup <jjtroup@comp.brad.ac.uk> Wed, 11 Mar 1998 01:52:51 +0000
gnupg (0.2.12-1) unstable; urgency=low
* New upstream version.
-- James Troup <jjtroup@comp.brad.ac.uk> Sat, 7 Mar 1998 13:52:40 +0000
gnupg (0.2.11-1) unstable; urgency=low
* New upstream version.
-- James Troup <jjtroup@comp.brad.ac.uk> Wed, 4 Mar 1998 01:32:12 +0000
gnupg (0.2.10-1) unstable; urgency=low
* New upstream version.
* Name changed upstream.
-- James Troup <jjtroup@comp.brad.ac.uk> Mon, 2 Mar 1998 07:32:05 +0000
g10 (0.2.7-1) unstable; urgency=low
* Initial release.
-- James Troup <jjtroup@comp.brad.ac.uk> Fri, 20 Feb 1998 02:05:34 +0000
Local variables:
mode: debian-changelog
End:
diff --git a/debian/copyright b/debian/copyright
index bf4c9e3fa..9ee053bb2 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,30 +1,30 @@
This is Debian/GNU Linux's prepackaged version of GNUPG, a free PGP
replacement. As you can see from the version number, the program may
have some bugs and some features may not work at all.
This package was put together by me, James Troup
<james@nocrew.org>, from the sources, which I obtained from
-ftp://ftp.guug.de/pub/gcrypt/gnupg-0.9.1.tar.gz. The changes were
+ftp://ftp.gnupg.org/pub/gcrypt/gnupg-0.9.2.tar.gz. The changes were
minimal, namely:
- adding support for the Debian package maintenance scheme, by adding
- various debian/* files.
+ various debian/* files.
-Program Copyright (C) 1997, 1998 Werner Koch (dd9jn).
+Program Copyright (C) 1998, 1999 Free Software Foundation, Inc.
Modifications for Debian Copyright (C) 1998 James Troup.
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 2, 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 with
your Debian GNU/Linux system, in /usr/doc/copyright/GPL, or with the
Debian GNU/Linux gnupg source package as the file COPYING. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite
330, Boston, MA 02111-1307, USA.
diff --git a/debian/rules b/debian/rules
index 0a67f794b..f0d81e18f 100644
--- a/debian/rules
+++ b/debian/rules
@@ -1,72 +1,70 @@
#!/usr/bin/make -f
-# debian/rules file - for GNUPG (0.9.1)
+# debian/rules file - for GNUPG (0.9.2)
# Based on sample debian/rules file - for GNU Hello (1.3).
# Copyright 1994,1995 by Ian Jackson.
# Copyright 1998 James Troup
# I hereby give you perpetual unlimited permission to copy,
# modify and relicense this file, provided that you do not remove
# my name from the file itself. (I assert my moral right of
# paternity under the Copyright, Designs and Patents Act 1988.)
# This file may have to be extensively modified
build:
$(checkdir)
./configure --prefix=/usr --with-included-gettext
- $(MAKE) CFLAGS="-O2 -g -Wall"
+ $(MAKE)
touch build
test: build
$(checkdir)
make -C checks check || exit 127
touch test
clean:
$(checkdir)
-rm -f build
-$(MAKE) -i distclean || $(MAKE) -f Makefile.in distclean
-rm -rf debian/tmp debian/*~ debian/files* debian/substvars
- # Cruft not removed by `make clean'
- -rm -f intl/libintl.h
binary-indep:
binary-arch: checkroot build # test
$(checkdir)
-rm -rf debian/tmp
install -d debian/tmp/DEBIAN/
install -m 755 debian/preinst debian/tmp/DEBIAN/preinst
$(MAKE) prefix=`pwd`/debian/tmp/usr install
rm debian/tmp/usr/man/man1/gpgm.1
gzip -9v debian/tmp/usr/man/man1/*
ln -s gpg.1.gz debian/tmp/usr/man/man1/gpgm.1.gz
strip debian/tmp/usr/bin/*
strip --strip-unneeded debian/tmp/usr/lib/gnupg/*
install -d debian/tmp/usr/doc/gnupg/
install -m 644 debian/changelog debian/tmp/usr/doc/gnupg/changelog.Debian
install -m 644 debian/README.Debian README NEWS THANKS TODO doc/DETAILS \
doc/FAQ doc/OpenPGP debian/tmp/usr/doc/gnupg/
for i in po util mpi cipher tools g10 checks include; do \
install -m 644 $$i/ChangeLog debian/tmp/usr/doc/gnupg/changelog.$$i; done
install -m 644 ChangeLog debian/tmp/usr/doc/gnupg/changelog.toplevel
gzip -9v debian/tmp/usr/doc/gnupg/*
ln -s changelog.g10.gz debian/tmp/usr/doc/gnupg/changelog.gz
install -m 644 debian/copyright debian/tmp/usr/doc/gnupg/
dpkg-shlibdeps g10/gpg
dpkg-gencontrol -isp
chown -R root.root debian/tmp
chmod -R go=rX debian/tmp
dpkg --build debian/tmp ..
define checkdir
test -f g10/g10.c -a -f debian/rules
endef
# Below here is fairly generic really
-binary: binary-indep binary-arch
+binary: binary-indep binary-arch
checkroot:
$(checkdir)
test root = "`whoami`"
.PHONY: binary binary-arch binary-indep clean checkroot
diff --git a/g10/armor.c b/g10/armor.c
index 195fc2cb9..663e824a6 100644
--- a/g10/armor.c
+++ b/g10/armor.c
@@ -1,1016 +1,1016 @@
/* armor.c - Armor flter
* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
#include <ctype.h>
#include "errors.h"
#include "iobuf.h"
#include "memory.h"
#include "util.h"
#include "iobuf.h"
#include "filter.h"
#include "packet.h"
#include "options.h"
#include "main.h"
#include "status.h"
#include "i18n.h"
#define MAX_LINELEN 20000
#define CRCINIT 0xB704CE
#define CRCPOLY 0X864CFB
#define CRCUPDATE(a,c) do { \
a = ((a) << 8) ^ crc_table[((a)&0xff >> 16) ^ (c)]; \
a &= 0x00ffffff; \
} while(0)
static u32 crc_table[256];
static byte bintoasc[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789+/";
static byte asctobin[256]; /* runtime initialized */
static int is_initialized;
typedef enum {
fhdrHASArmor = 0,
fhdrNOArmor,
fhdrINIT,
fhdrINITCont,
fhdrINITSkip,
fhdrCHECKBegin,
fhdrWAITHeader,
fhdrWAITClearsig,
fhdrSKIPHeader,
fhdrCLEARSIG,
fhdrREADClearsig,
fhdrNullClearsig,
fhdrEMPTYClearsig,
fhdrCHECKClearsig,
fhdrCHECKClearsig2,
fhdrCHECKDashEscaped,
fhdrCHECKDashEscaped2,
fhdrCHECKDashEscaped3,
fhdrREADClearsigNext,
fhdrENDClearsig,
fhdrENDClearsigHelp,
fhdrTESTSpaces,
fhdrCLEARSIGSimple,
fhdrCLEARSIGSimpleNext,
fhdrTEXT,
fhdrTEXTSimple,
fhdrERROR,
fhdrERRORShow,
fhdrEOF
} fhdr_state_t;
/* if we encounter this armor string with this index, go
* into a mode which fakes packets and wait for the next armor */
#define BEGIN_SIGNATURE 2
#define BEGIN_SIGNED_MSG_IDX 3
static char *head_strings[] = {
"BEGIN PGP MESSAGE",
"BEGIN PGP PUBLIC KEY BLOCK",
"BEGIN PGP SIGNATURE",
"BEGIN PGP SIGNED MESSAGE",
"BEGIN PGP ARMORED FILE", /* gnupg extension */
"BEGIN PGP PRIVATE KEY BLOCK",
"BEGIN PGP SECRET KEY BLOCK", /* only used by pgp2 */
NULL
};
static char *tail_strings[] = {
"END PGP MESSAGE",
"END PGP PUBLIC KEY BLOCK",
"END PGP SIGNATURE",
"END dummy",
"END PGP ARMORED FILE",
"END PGP PRIVATE KEY BLOCK",
"END PGP SECRET KEY BLOCK",
NULL
};
static void
initialize(void)
{
int i, j;
u32 t;
byte *s;
/* init the crc lookup table */
crc_table[0] = 0;
for(i=j=0; j < 128; j++ ) {
t = crc_table[j];
if( t & 0x00800000 ) {
t <<= 1;
crc_table[i++] = t ^ CRCPOLY;
crc_table[i++] = t;
}
else {
t <<= 1;
crc_table[i++] = t;
crc_table[i++] = t ^ CRCPOLY;
}
}
/* build the helptable for radix64 to bin conversion */
for(i=0; i < 256; i++ )
asctobin[i] = 255; /* used to detect invalid characters */
for(s=bintoasc,i=0; *s; s++,i++ )
asctobin[*s] = i;
is_initialized=1;
}
/****************
* Check whether this is an armored file or not
* See also parse-packet.c for details on this code
* Returns: True if it seems to be armored
*/
static int
is_armored( const byte *buf )
{
int ctb, pkttype;
ctb = *buf;
if( !(ctb & 0x80) )
return 1; /* invalid packet: assume it is armored */
pkttype = ctb & 0x40 ? (ctb & 0x3f) : ((ctb>>2)&0xf);
switch( pkttype ) {
case PKT_MARKER:
case PKT_SYMKEY_ENC:
case PKT_PUBLIC_KEY:
case PKT_SECRET_KEY:
case PKT_PUBKEY_ENC:
case PKT_SIGNATURE:
case PKT_COMMENT:
case PKT_OLD_COMMENT:
case PKT_PLAINTEXT:
case PKT_COMPRESSED:
case PKT_ENCRYPTED:
return 0; /* seems to be a regular packet: not armored */
}
return 1;
}
/****************
* Try to check whether the iobuf is armored
* Returns true if this may be the case; the caller should use the
* filter to do further processing.
*/
int
use_armor_filter( IOBUF a )
{
byte buf[1];
int n;
n = iobuf_peek(a, buf, 1 );
if( n == -1 )
return 0; /* EOF, doesn't matter whether armored or not */
if( !n )
return 1; /* can't check it: try armored */
return is_armored(buf);
}
static void
invalid_armor(void)
{
write_status(STATUS_BADARMOR);
g10_exit(1); /* stop here */
}
/****************
* check whether the armor header is valid on a signed message.
* this is for security reasons: the header lines are not included in the
* hash and by using some creative formatting rules, Mallory could fake
* any text at the beginning of a document; assuming it is read with
* a simple viewer. We only allow the Hash Header.
*/
static int
parse_hash_header( const char *line )
{
const char *s, *s2;
unsigned found = 0;
if( strlen(line) < 6 || strlen(line) > 60 )
return 0; /* too short or too long */
if( memcmp( line, "Hash:", 5 ) )
return 0; /* invalid header */
s = line+5;
for(s=line+5;;s=s2) {
for(; *s && (*s==' ' || *s == '\t'); s++ )
;
if( !*s )
break;
for(s2=s+1; *s2 && *s2!=' ' && *s2 != '\t' && *s2 != ','; s2++ )
;
if( !strncmp( s, "RIPEMD160", s2-s ) )
found |= 1;
else if( !strncmp( s, "SHA1", s2-s ) )
found |= 2;
else if( !strncmp( s, "MD5", s2-s ) )
found |= 4;
else if( !strncmp( s, "TIGER", s2-s ) )
found |= 8;
else
return 0;
for(; *s2 && (*s2==' ' || *s2 == '\t'); s2++ )
;
if( *s2 && *s2 != ',' )
return 0;
if( *s2 )
s2++;
}
return found;
}
/****************
* Check whether this is a armor line.
* returns: -1 if it is not a armor header or the index number of the
* armor header.
*/
static int
is_armor_header( byte *line, unsigned len )
{
const char *s;
byte *save_p, *p;
int save_c;
int i;
if( len < 15 )
return -1; /* too short */
if( memcmp( line, "-----", 5 ) )
return -1; /* no */
p = strstr( line+5, "-----");
if( !p )
return -1;
save_p = p;
p += 5;
if( *p == '\r' )
p++;
if( *p == '\n' )
p++;
if( *p )
return -1; /* garbage after dashes */
save_c = *save_p; *save_p = 0;
p = line+5;
for(i=0; (s=head_strings[i]); i++ )
if( !strcmp(s, p) )
break;
*save_p = save_c;
if( !s )
return -1; /* unknown armor line */
if( opt.verbose > 1 )
log_info(_("armor: %s\n"), head_strings[i]);
return i;
}
/****************
* Parse a header lines
* Return 0: Empty line (end of header lines)
* -1: invalid header line
* >0: Good header line
*/
static int
parse_header_line( armor_filter_context_t *afx, byte *line, unsigned len )
{
byte *p;
int hashes=0;
if( *line == '\n' || ( len && (*line == '\r' && line[1]=='\n') ) )
return 0; /* empty line */
len = trim_trailing_ws( line, len );
p = strchr( line, ':');
if( !p || !p[1] ) {
log_error(_("invalid armor header: "));
print_string( stderr, line, len, 0 );
putc('\n', stderr);
return -1;
}
if( opt.verbose ) {
log_info(_("armor header: "));
print_string( stderr, line, len, 0 );
putc('\n', stderr);
}
if( afx->in_cleartext ) {
if( (hashes=parse_hash_header( line )) )
afx->hashes |= hashes;
else if( strlen(line) > 15 && !memcmp( line, "NotDashEscaped:", 15 ) )
afx->not_dash_escaped = 1;
else {
log_error(_("invalid clearsig header\n"));
return -1;
}
}
return 1;
}
/* figure out whether the data is armored or not */
static int
check_input( armor_filter_context_t *afx, IOBUF a )
{
int rc = 0;
int i;
byte *line;
unsigned len;
unsigned maxlen;
int hdr_line = -1;
/* read the first line to see whether this is armored data */
maxlen = MAX_LINELEN;
len = afx->buffer_len = iobuf_read_line( a, &afx->buffer,
&afx->buffer_size, &maxlen );
line = afx->buffer;
if( !maxlen ) {
/* line has been truncated: assume not armored */
afx->inp_checked = 1;
afx->inp_bypass = 1;
return 0;
}
if( !len ) {
return -1; /* eof */
}
/* (the line is always a C string but maybe longer) */
if( *line == '\n' || ( len && (*line == '\r' && line[1]=='\n') ) )
;
else if( !is_armored( line ) ) {
afx->inp_checked = 1;
afx->inp_bypass = 1;
return 0;
}
/* find the armor header */
while(len) {
i = is_armor_header( line, len );
if( i >= 0 && !(afx->only_keyblocks && i != 1 && i != 5 && i != 6 )) {
hdr_line = i;
if( hdr_line == BEGIN_SIGNED_MSG_IDX ) {
if( afx->in_cleartext ) {
log_error(_("nested clear text signatures\n"));
rc = G10ERR_INVALID_ARMOR;
}
afx->in_cleartext = 1;
}
break;
}
/* read the next line (skip all truncated lines) */
do {
maxlen = MAX_LINELEN;
afx->buffer_len = iobuf_read_line( a, &afx->buffer,
&afx->buffer_size, &maxlen );
line = afx->buffer;
len = afx->buffer_len;
} while( !maxlen );
}
/* parse the header lines */
while(len) {
/* read the next line (skip all truncated lines) */
do {
maxlen = MAX_LINELEN;
afx->buffer_len = iobuf_read_line( a, &afx->buffer,
&afx->buffer_size, &maxlen );
line = afx->buffer;
len = afx->buffer_len;
} while( !maxlen );
i = parse_header_line( afx, line, len );
if( i <= 0 ) {
if( i )
rc = G10ERR_INVALID_ARMOR;
break;
}
}
if( rc )
invalid_armor();
else if( afx->in_cleartext ) {
afx->faked = 1;
}
else {
afx->inp_checked = 1;
afx->crc = CRCINIT;
afx->idx = 0;
afx->radbuf[0] = 0;
}
return rc;
}
/****************
* Fake a literal data packet and wait for the next armor line
* fixme: empty line handling and null length clear text signature are
* not implemented/checked.
*/
static int
fake_packet( armor_filter_context_t *afx, IOBUF a,
size_t *retn, byte *buf, size_t size )
{
int rc = 0;
size_t len = 0;
unsigned emplines = afx->empty;
int lastline = 0;
unsigned maxlen, n;
byte *p;
len = 2; /* reserve 2 bytes for the length header */
size -= 3; /* and 1 for empline handling and 2 for the term header */
/* or the appended CR,LF */
while( !rc && len < size ) {
if( emplines ) {
while( emplines && len < size ) {
buf[len++] = '\r';
buf[len++] = '\n';
emplines--;
}
continue;
}
if( afx->faked == 1 )
afx->faked++; /* skip the first (empty) line */
else {
while( len < size && afx->buffer_pos < afx->buffer_len )
buf[len++] = afx->buffer[afx->buffer_pos++];
if( afx->buffer_pos >= afx->buffer_len
&& !afx->not_dash_escaped ) {
buf[len++] = '\r';
buf[len++] = '\n';
}
if( len >= size )
continue;
}
/* read the next line */
maxlen = MAX_LINELEN;
afx->buffer_pos = 0;
afx->buffer_len = iobuf_read_line( a, &afx->buffer,
&afx->buffer_size, &maxlen );
if( !afx->buffer_len ) {
rc = -1; /* eof */
continue;
}
if( !maxlen )
afx->truncated++;
if( !afx->not_dash_escaped )
afx->buffer_len = trim_trailing_ws( afx->buffer, afx->buffer_len );
p = afx->buffer;
n = afx->buffer_len;
if( n > 2 && *p == '-' ) {
/* check for dash escaped or armor header */
if( p[1] == ' ' && !afx->not_dash_escaped ) {
/* issue a warning if it is not regular encoded */
if( p[2] != '-' && !( n > 6 && !memcmp(p+2, "From ", 5))) {
log_info(_("invalid dash escaped line: "));
print_string( stderr, p, n, 0 );
putc('\n', stderr);
}
afx->buffer_pos = 2; /* skip */
}
else if( n >= 15 && p[1] == '-' && p[2] == '-' && p[3] == '-' ) {
if( is_armor_header( p, n ) != BEGIN_SIGNATURE ) {
log_info(_("unexpected armor:"));
print_string( stderr, p, n, 0 );
putc('\n', stderr);
}
lastline = 1;
rc = -1;
}
}
}
buf[0] = (len-2) >> 8;
buf[1] = (len-2);
if( lastline ) { /* write last (ending) length header */
if( buf[0] || buf[1] ) { /* only if we have some text */
buf[len++] = 0;
buf[len++] = 0;
}
rc = 0;
afx->faked = 0;
afx->in_cleartext = 0;
/* and now read the header lines */
afx->buffer_pos = 0;
for(;;) {
int i;
/* read the next line (skip all truncated lines) */
do {
maxlen = MAX_LINELEN;
afx->buffer_len = iobuf_read_line( a, &afx->buffer,
&afx->buffer_size, &maxlen );
} while( !maxlen );
p = afx->buffer;
n = afx->buffer_len;
if( !n ) {
rc = -1;
break; /* eof */
}
i = parse_header_line( afx, p , n );
if( i <= 0 ) {
if( i )
invalid_armor();
break;
}
}
afx->inp_checked = 1;
afx->crc = CRCINIT;
afx->idx = 0;
afx->radbuf[0] = 0;
}
afx->empty = emplines;
*retn = len;
return rc;
}
static int
radix64_read( armor_filter_context_t *afx, IOBUF a, size_t *retn,
byte *buf, size_t size )
{
byte val;
- int c, c2;
+ int c=0, c2; /*init c because gcc is not clever enough for the continue*/
int checkcrc=0;
int rc = 0;
size_t n = 0;
int idx, i;
u32 crc;
crc = afx->crc;
idx = afx->idx;
val = afx->radbuf[0];
for( n=0; n < size; ) {
if( afx->buffer_pos < afx->buffer_len )
c = afx->buffer[afx->buffer_pos++];
else { /* read the next line */
unsigned maxlen = MAX_LINELEN;
afx->buffer_pos = 0;
afx->buffer_len = iobuf_read_line( a, &afx->buffer,
&afx->buffer_size, &maxlen );
if( !maxlen )
afx->truncated++;
if( !afx->buffer_len )
break; /* eof */
continue;
}
again:
if( c == '\n' || c == ' ' || c == '\r' || c == '\t' )
continue;
else if( c == '=' ) { /* pad character: stop */
/* some mailers leave quoted-printable encoded characters
* so we try to workaround this */
if( afx->buffer_pos+2 < afx->buffer_len ) {
int c1, c2, c3;
c1 = afx->buffer[afx->buffer_pos];
c2 = afx->buffer[afx->buffer_pos+1];
c3 = afx->buffer[afx->buffer_pos+2];
if( isxdigit(c1) && isxdigit(c2) && strchr( "=\n\r\t ", c3 )) {
/* well it seems to be the case - adjust */
c = isdigit(c1)? (c1 - '0'): (toupper(c1)-'A'+10);
c <<= 4;
c |= isdigit(c2)? (c2 - '0'): (toupper(c2)-'A'+10);
afx->buffer_pos += 2;
afx->qp_detected = 1;
goto again;
}
}
if( idx == 1 )
buf[n++] = val;
checkcrc++;
break;
}
else if( (c = asctobin[(c2=c)]) == 255 ) {
log_error(_("invalid radix64 character %02x skipped\n"), c2);
continue;
}
switch(idx) {
case 0: val = c << 2; break;
case 1: val |= (c>>4)&3; buf[n++]=val;val=(c<<4)&0xf0;break;
case 2: val |= (c>>2)&15; buf[n++]=val;val=(c<<6)&0xc0;break;
case 3: val |= c&0x3f; buf[n++] = val; break;
}
idx = (idx+1) % 4;
}
for(i=0; i < n; i++ )
crc = (crc << 8) ^ crc_table[((crc >> 16)&0xff) ^ buf[i]];
crc &= 0x00ffffff;
afx->crc = crc;
afx->idx = idx;
afx->radbuf[0] = val;
if( checkcrc ) {
afx->any_data = 1;
afx->inp_checked=0;
afx->faked = 0;
for(;;) { /* skip lf and pad characters */
if( afx->buffer_pos < afx->buffer_len )
c = afx->buffer[afx->buffer_pos++];
else { /* read the next line */
unsigned maxlen = MAX_LINELEN;
afx->buffer_pos = 0;
afx->buffer_len = iobuf_read_line( a, &afx->buffer,
&afx->buffer_size, &maxlen );
if( !maxlen )
afx->truncated++;
if( !afx->buffer_len )
break; /* eof */
continue;
}
if( c == '\n' || c == ' ' || c == '\r'
|| c == '\t' || c == '=' )
continue;
break;
}
if( c == -1 )
log_error(_("premature eof (no CRC)\n"));
else {
u32 mycrc = 0;
idx = 0;
do {
if( (c = asctobin[c]) == 255 )
break;
switch(idx) {
case 0: val = c << 2; break;
case 1: val |= (c>>4)&3; mycrc |= val << 16;val=(c<<4)&0xf0;break;
case 2: val |= (c>>2)&15; mycrc |= val << 8;val=(c<<6)&0xc0;break;
case 3: val |= c&0x3f; mycrc |= val; break;
}
for(;;) {
if( afx->buffer_pos < afx->buffer_len )
c = afx->buffer[afx->buffer_pos++];
else { /* read the next line */
unsigned maxlen = MAX_LINELEN;
afx->buffer_pos = 0;
afx->buffer_len = iobuf_read_line( a, &afx->buffer,
&afx->buffer_size,
&maxlen );
if( !maxlen )
afx->truncated++;
if( !afx->buffer_len )
break; /* eof */
continue;
}
break;
}
if( !afx->buffer_len )
break; /* eof */
} while( ++idx < 4 );
if( c == -1 ) {
log_error(_("premature eof (in CRC)\n"));
rc = G10ERR_INVALID_ARMOR;
}
else if( idx != 4 ) {
log_error(_("malformed CRC\n"));
rc = G10ERR_INVALID_ARMOR;
}
else if( mycrc != afx->crc ) {
log_error(_("CRC error; %06lx - %06lx\n"),
(ulong)afx->crc, (ulong)mycrc);
rc = G10ERR_INVALID_ARMOR;
}
else {
rc = 0;
#if 0
for(rc=0;!rc;) {
rc = 0 /*check_trailer( &fhdr, c )*/;
if( !rc ) {
if( (c=iobuf_get(a)) == -1 )
rc = 2;
}
}
if( rc == -1 )
rc = 0;
else if( rc == 2 ) {
log_error(_("premature eof (in Trailer)\n"));
rc = G10ERR_INVALID_ARMOR;
}
else {
log_error(_("error in trailer line\n"));
rc = G10ERR_INVALID_ARMOR;
}
#endif
}
}
}
if( !n )
rc = -1;
*retn = n;
return rc;
}
/****************
* This filter is used to handle the armor stuff
*/
int
armor_filter( void *opaque, int control,
IOBUF a, byte *buf, size_t *ret_len)
{
size_t size = *ret_len;
armor_filter_context_t *afx = opaque;
int rc=0, i, c;
byte radbuf[3];
int idx, idx2;
size_t n=0;
u32 crc;
#if 0
static FILE *fp ;
if( !fp ) {
fp = fopen("armor.out", "w");
assert(fp);
}
#endif
if( DBG_FILTER )
log_debug("armor-filter: control: %d\n", control );
if( control == IOBUFCTRL_UNDERFLOW && afx->inp_bypass ) {
n = 0;
if( afx->buffer_len ) {
for(; n < size && afx->buffer_pos < afx->buffer_len; n++ )
buf[n++] = afx->buffer[afx->buffer_pos++];
if( afx->buffer_pos >= afx->buffer_len )
afx->buffer_len = 0;
}
for(; n < size; n++ ) {
if( (c=iobuf_get(a)) == -1 )
break;
buf[n] = c & 0xff;
}
if( !n )
rc = -1;
*ret_len = n;
}
else if( control == IOBUFCTRL_UNDERFLOW ) {
if( size < 15+(4*15) ) /* need space for up to 4 onepass_sigs */
BUG(); /* supplied buffer too short */
if( afx->faked )
rc = fake_packet( afx, a, &n, buf, size );
else if( !afx->inp_checked ) {
rc = check_input( afx, a );
if( afx->inp_bypass ) {
for(n=0; n < size && afx->buffer_pos < afx->buffer_len; n++ )
buf[n++] = afx->buffer[afx->buffer_pos++];
if( afx->buffer_pos >= afx->buffer_len )
afx->buffer_len = 0;
if( !n )
rc = -1;
}
else if( afx->faked ) {
unsigned hashes = afx->hashes;
/* the buffer is at least 15+n*15 bytes long, so it
* is easy to construct the packets */
hashes &= 1|2|4|8;
if( !hashes )
hashes |= 4; /* default to MD 5 */
n=0;
do {
/* first some onepass signature packets */
buf[n++] = 0x90; /* old format, type 4, 1 length byte */
buf[n++] = 13; /* length */
buf[n++] = 3; /* version */
buf[n++] = 0x01; /* sigclass 0x01 (canonical text mode)*/
if( hashes & 1 ) {
hashes &= ~1;
buf[n++] = DIGEST_ALGO_RMD160;
}
else if( hashes & 2 ) {
hashes &= ~2;
buf[n++] = DIGEST_ALGO_SHA1;
}
else if( hashes & 4 ) {
hashes &= ~4;
buf[n++] = DIGEST_ALGO_MD5;
}
else if( hashes & 8 ) {
hashes &= ~8;
buf[n++] = DIGEST_ALGO_TIGER;
}
else
buf[n++] = 0; /* (don't know) */
buf[n++] = 0; /* public key algo (don't know) */
memset(buf+n, 0, 8); /* don't know the keyid */
n += 8;
buf[n++] = !hashes; /* last one */
} while( hashes );
/* followed by a plaintext packet */
buf[n++] = 0xaf; /* old packet format, type 11, var length */
buf[n++] = 0; /* set the length header */
buf[n++] = 6;
buf[n++] = 't'; /* canonical text mode */
buf[n++] = 0; /* namelength */
memset(buf+n, 0, 4); /* timestamp */
n += 4;
}
else if( !rc )
rc = radix64_read( afx, a, &n, buf, size );
}
else
rc = radix64_read( afx, a, &n, buf, size );
#if 0
if( n )
if( fwrite(buf, n, 1, fp ) != 1 )
BUG();
#endif
*ret_len = n;
}
else if( control == IOBUFCTRL_FLUSH ) {
if( !afx->status ) { /* write the header line */
if( afx->what >= DIM(head_strings) )
log_bug("afx->what=%d", afx->what);
iobuf_writestr(a, "-----");
iobuf_writestr(a, head_strings[afx->what] );
iobuf_writestr(a, "-----\n");
iobuf_writestr(a, "Version: GnuPG v" VERSION " ("
PRINTABLE_OS_NAME ")\n");
if( opt.comment_string ) {
const char *s = opt.comment_string;
iobuf_writestr(a, "Comment: " );
for( ; *s; s++ ) {
if( *s == '\n' )
iobuf_writestr(a, "\\n" );
else if( *s == '\r' )
iobuf_writestr(a, "\\r" );
else if( *s == '\v' )
iobuf_writestr(a, "\\v" );
else
iobuf_put(a, *s );
}
iobuf_put(a, '\n' );
}
else
iobuf_writestr(a,
"Comment: For info see http://www.gnupg.org\n");
if( afx->hdrlines )
iobuf_writestr(a, afx->hdrlines);
iobuf_put(a, '\n');
afx->status++;
afx->idx = 0;
afx->idx2 = 0;
afx->crc = CRCINIT;
}
crc = afx->crc;
idx = afx->idx;
idx2 = afx->idx2;
for(i=0; i < idx; i++ )
radbuf[i] = afx->radbuf[i];
for(i=0; i < size; i++ )
crc = (crc << 8) ^ crc_table[((crc >> 16)&0xff) ^ buf[i]];
crc &= 0x00ffffff;
for( ; size; buf++, size-- ) {
radbuf[idx++] = *buf;
if( idx > 2 ) {
idx = 0;
c = bintoasc[(*radbuf >> 2) & 077];
iobuf_put(a, c);
c = bintoasc[(((*radbuf<<4)&060)|((radbuf[1] >> 4)&017))&077];
iobuf_put(a, c);
c = bintoasc[(((radbuf[1]<<2)&074)|((radbuf[2]>>6)&03))&077];
iobuf_put(a, c);
c = bintoasc[radbuf[2]&077];
iobuf_put(a, c);
if( ++idx2 >= (64/4) ) { /* pgp doesn't like 72 here */
iobuf_put(a, '\n');
idx2=0;
}
}
}
for(i=0; i < idx; i++ )
afx->radbuf[i] = radbuf[i];
afx->idx = idx;
afx->idx2 = idx2;
afx->crc = crc;
}
else if( control == IOBUFCTRL_INIT ) {
if( !is_initialized )
initialize();
}
else if( control == IOBUFCTRL_FREE ) {
if( afx->status ) { /* pad, write cecksum, and bottom line */
crc = afx->crc;
idx = afx->idx;
idx2 = afx->idx2;
for(i=0; i < idx; i++ )
radbuf[i] = afx->radbuf[i];
if( idx ) {
c = bintoasc[(*radbuf>>2)&077];
iobuf_put(a, c);
if( idx == 1 ) {
c = bintoasc[((*radbuf << 4) & 060) & 077];
iobuf_put(a, c);
iobuf_put(a, '=');
iobuf_put(a, '=');
}
else { /* 2 */
c = bintoasc[(((*radbuf<<4)&060)|((radbuf[1]>>4)&017))&077];
iobuf_put(a, c);
c = bintoasc[((radbuf[1] << 2) & 074) & 077];
iobuf_put(a, c);
iobuf_put(a, '=');
}
if( ++idx2 >= (64/4) ) { /* pgp doesn't like 72 here */
iobuf_put(a, '\n');
idx2=0;
}
}
/* may need a linefeed */
if( idx2 )
iobuf_put(a, '\n');
/* write the CRC */
iobuf_put(a, '=');
radbuf[0] = crc >>16;
radbuf[1] = crc >> 8;
radbuf[2] = crc;
c = bintoasc[(*radbuf >> 2) & 077];
iobuf_put(a, c);
c = bintoasc[(((*radbuf<<4)&060)|((radbuf[1] >> 4)&017))&077];
iobuf_put(a, c);
c = bintoasc[(((radbuf[1]<<2)&074)|((radbuf[2]>>6)&03))&077];
iobuf_put(a, c);
c = bintoasc[radbuf[2]&077];
iobuf_put(a, c);
iobuf_put(a, '\n');
/* and the the trailer */
if( afx->what >= DIM(tail_strings) )
log_bug("afx->what=%d", afx->what);
iobuf_writestr(a, "-----");
iobuf_writestr(a, tail_strings[afx->what] );
iobuf_writestr(a, "-----\n");
}
else if( !afx->any_data && !afx->inp_bypass )
log_error(_("no valid OpenPGP data found.\n"));
if( afx->truncated )
log_info(_("invalid armor: line longer than %d characters\n"),
MAX_LINELEN );
/* issue an error to enforce dissemination of correct software */
if( afx->qp_detected )
log_error(_("quoted printable character in armor - "
"probably a buggy MTA has been used\n") );
m_free( afx->buffer );
afx->buffer = NULL;
}
else if( control == IOBUFCTRL_DESC )
*(char**)buf = "armor_filter";
return rc;
}
diff --git a/g10/g10.c b/g10/g10.c
index 872749881..c9d6b650b 100644
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -1,1446 +1,1446 @@
/* g10.c - The GnuPG utility (main for gpg)
- * Copyright (C) 1998 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999 Free Software Foundation, Inc.
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#include <config.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#define MAINTAINER_OPTIONS
#include "packet.h"
#include "iobuf.h"
#include "memory.h"
#include "util.h"
#include "main.h"
#include "options.h"
#include "keydb.h"
#include "mpi.h"
#include "cipher.h"
#include "filter.h"
#include "trustdb.h"
#include "ttyio.h"
#include "i18n.h"
#include "status.h"
#include "g10defs.h"
#include "hkp.h"
#ifndef IS_G10MAINT
#define IS_G10 1
#endif
enum cmd_and_opt_values { aNull = 0,
oArmor = 'a',
aDetachedSign = 'b',
aSym = 'c',
aDecrypt = 'd',
aEncr = 'e',
oKOption = 'k',
oDryRun = 'n',
oOutput = 'o',
oQuiet = 'q',
oRemote = 'r',
aSign = 's',
oTextmodeShort= 't',
oUser = 'u',
oVerbose = 'v',
oCompress = 'z',
oBatch = 500,
aClearsign,
aStore,
aKeygen,
aSignEncr,
aSignKey,
aListPackets,
aEditKey,
aDeleteKey,
aDeleteSecretKey,
aKMode,
aKModeC,
aImport,
aFastImport,
aVerify,
aListKeys,
aListSigs,
aListSecretKeys,
aSendKeys,
aExport,
aExportAll,
aExportSecret,
aCheckKeys,
aGenRevoke,
aPrimegen,
aPrintMD,
aPrintMDs,
aCheckTrustDB,
aUpdateTrustDB,
aFixTrustDB,
aListTrustDB,
aListTrustPath,
aExportOwnerTrust,
aImportOwnerTrust,
aDeArmor,
aEnArmor,
aGenRandom,
oTextmode,
oFingerprint,
oAnswerYes,
oAnswerNo,
oKeyring,
oSecretKeyring,
oDefaultKey,
oTrustedKey,
oOptions,
oDebug,
oDebugAll,
oStatusFD,
oNoComment,
oCompletesNeeded,
oMarginalsNeeded,
oMaxCertDepth,
oLoadExtension,
oRFC1991,
oCipherAlgo,
oDigestAlgo,
oCompressAlgo,
oPasswdFD,
oQuickRandom,
oNoVerbose,
oTrustDBName,
oNoSecmemWarn,
oNoArmor,
oNoDefKeyring,
oNoGreeting,
oNoOptions,
oNoBatch,
oHomedir,
oWithColons,
oSkipVerify,
oCompressKeys,
oCompressSigs,
oAlwaysTrust,
oEmuChecksumBug,
oRunAsShmCP,
oSetFilename,
oComment,
oThrowKeyid,
oForceV3Sigs,
oS2KMode,
oS2KDigest,
oS2KCipher,
oCharset,
oNotDashEscaped,
oEscapeFrom,
oLockOnce,
oKeyServer,
aTest };
static ARGPARSE_OPTS opts[] = {
{ 300, NULL, 0, N_("@Commands:\n ") },
#ifdef IS_G10
{ aSign, "sign", 256, N_("|[file]|make a signature")},
{ aClearsign, "clearsign", 256, N_("|[file]|make a clear text signature") },
{ aDetachedSign, "detach-sign", 256, N_("make a detached signature")},
{ aEncr, "encrypt", 256, N_("encrypt data")},
{ aSym, "symmetric", 256, N_("encryption only with symmetric cipher")},
{ aStore, "store", 256, N_("store only")},
{ aDecrypt, "decrypt", 256, N_("decrypt data (default)")},
{ aVerify, "verify" , 256, N_("verify a signature")},
#endif
{ aListKeys, "list-keys", 256, N_("list keys")},
{ aListSigs, "list-sigs", 256, N_("list keys and signatures")},
{ aCheckKeys, "check-sigs",256, N_("check key signatures")},
{ oFingerprint, "fingerprint", 256, N_("list keys and fingerprints")},
{ aListSecretKeys, "list-secret-keys", 256, N_("list secret keys")},
#ifdef IS_G10
{ aKeygen, "gen-key", 256, N_("generate a new key pair")},
#endif
{ aDeleteKey, "delete-key",256, N_("remove key from the public keyring")},
#ifdef IS_G10
{ aEditKey, "edit-key" ,256, N_("sign or edit a key")},
{ aGenRevoke, "gen-revoke",256, N_("generate a revocation certificate")},
#endif
{ aExport, "export" , 256, N_("export keys") },
{ aSendKeys, "send-keys" , 256, N_("export keys to a key server") },
{ aExportAll, "export-all" , 256, "@" },
{ aExportSecret, "export-secret-keys" , 256, "@" },
{ aImport, "import", 256 , N_("import/merge keys")},
{ aFastImport, "fast-import", 256 , "@"},
{ aListPackets, "list-packets",256,N_("list only the sequence of packets")},
#ifdef IS_G10MAINT
{ aExportOwnerTrust,
"export-ownertrust", 256, N_("export the ownertrust values")},
{ aImportOwnerTrust,
"import-ownertrust", 256 , N_("import ownertrust values")},
{ aUpdateTrustDB,
"update-trustdb",0 , N_("|[NAMES]|update the trust database")},
{ aCheckTrustDB,
"check-trustdb",0 , N_("|[NAMES]|check the trust database")},
{ aFixTrustDB, "fix-trustdb",0 , N_("fix a corrupted trust database")},
{ aDeArmor, "dearmor", 256, N_("De-Armor a file or stdin") },
{ aEnArmor, "enarmor", 256, N_("En-Armor a file or stdin") },
{ aPrintMD, "print-md" , 256, N_("|algo [files]|print message digests")},
{ aPrintMDs, "print-mds" , 256, N_("print all message digests")},
#ifdef MAINTAINER_OPTIONS
{ aPrimegen, "gen-prime" , 256, "@" },
{ aGenRandom, "gen-random" , 256, "@" },
#endif
#endif
{ 301, NULL, 0, N_("@\nOptions:\n ") },
{ oArmor, "armor", 0, N_("create ascii armored output")},
#ifdef IS_G10
{ oUser, "local-user",2, N_("use this user-id to sign or decrypt")},
{ oRemote, "remote-user", 2, N_("use this user-id for encryption")},
{ oCompress, NULL, 1, N_("|N|set compress level N (0 disables)") },
{ oTextmodeShort, NULL, 0, "@"},
{ oTextmode, "textmode", 0, N_("use canonical text mode")},
#endif
{ oOutput, "output", 2, N_("use as output file")},
{ oVerbose, "verbose", 0, N_("verbose") },
{ oQuiet, "quiet", 0, N_("be somewhat more quiet") },
{ oForceV3Sigs, "force-v3-sigs", 0, N_("force v3 signatures") },
/* { oDryRun, "dry-run", 0, N_("do not make any changes") }, */
{ oBatch, "batch", 0, N_("batch mode: never ask")},
{ oAnswerYes, "yes", 0, N_("assume yes on most questions")},
{ oAnswerNo, "no", 0, N_("assume no on most questions")},
{ oKeyring, "keyring" ,2, N_("add this keyring to the list of keyrings")},
{ oSecretKeyring, "secret-keyring" ,2, N_("add this secret keyring to the list")},
{ oDefaultKey, "default-key" ,2, N_("|NAME|use NAME as default secret key")},
{ oKeyServer, "keyserver",2, N_("|HOST|use this keyserver to lookup keys")},
{ oCharset, "charset" , 2, N_("|NAME|set terminal charset to NAME") },
{ oOptions, "options" , 2, N_("read options from file")},
{ oDebug, "debug" ,4|16, N_("set debugging flags")},
{ oDebugAll, "debug-all" ,0, N_("enable full debugging")},
{ oStatusFD, "status-fd" ,1, N_("|FD|write status info to this FD") },
{ oNoComment, "no-comment", 0, N_("do not write comment packets")},
{ oCompletesNeeded, "completes-needed", 1, N_("(default is 1)")},
{ oMarginalsNeeded, "marginals-needed", 1, N_("(default is 3)")},
{ oMaxCertDepth, "max-cert-depth", 1, "@" },
{ oTrustedKey, "trusted-key", 2, N_("|KEYID|ulimately trust this key")},
{ oLoadExtension, "load-extension" ,2, N_("|FILE|load extension module FILE")},
{ oRFC1991, "rfc1991", 0, N_("emulate the mode described in RFC1991")},
{ oS2KMode, "s2k-mode", 1, N_("|N|use passphrase mode N")},
{ oS2KDigest, "s2k-digest-algo",2,
N_("|NAME|use message digest algorithm NAME for passphrases")},
{ oS2KCipher, "s2k-cipher-algo",2,
N_("|NAME|use cipher algorithm NAME for passphrases")},
#ifdef IS_G10
{ oCipherAlgo, "cipher-algo", 2 , N_("|NAME|use cipher algorithm NAME")},
{ oDigestAlgo, "digest-algo", 2 , N_("|NAME|use message digest algorithm NAME")},
{ oCompressAlgo, "compress-algo", 1 , N_("|N|use compress algorithm N")},
{ oThrowKeyid, "throw-keyid", 0, N_("throw keyid field of encrypted packets")},
#else /* some dummies */
{ oCipherAlgo, "cipher-algo", 2 , "@"},
{ oDigestAlgo, "digest-algo", 2 , "@"},
{ oCompressAlgo, "compress-algo", 1 , "@"},
#endif
#ifdef IS_G10
{ 302, NULL, 0, N_("@\nExamples:\n\n"
" -se -r Bob [file] sign and encrypt for user Bob\n"
" --clearsign [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" ) },
#endif
/* hidden options */
#ifdef IS_G10MAINT
{ aExportOwnerTrust, "list-ownertrust",0 , "@"}, /* alias */
{ aListTrustDB, "list-trustdb",0 , "@"},
{ aListTrustPath, "list-trust-path",0, "@"},
#endif
#ifdef IS_G10
{ oKOption, NULL, 0, "@"},
{ oPasswdFD, "passphrase-fd",1, "@" },
{ aSignKey, "sign-key" ,256, "@" }, /* alias for edit-key */
#endif
{ aDeleteSecretKey, "delete-secret-key",0, "@" },
{ oQuickRandom, "quick-random", 0, "@"},
{ oNoVerbose, "no-verbose", 0, "@"},
{ oTrustDBName, "trustdb-name", 2, "@" },
{ oNoSecmemWarn, "no-secmem-warning", 0, "@" }, /* used only by regression tests */
{ oNoArmor, "no-armor", 0, "@"},
{ oNoDefKeyring, "no-default-keyring", 0, "@" },
{ oNoGreeting, "no-greeting", 0, "@" },
{ oNoOptions, "no-options", 0, "@" }, /* shortcut for --options /dev/null */
{ oHomedir, "homedir", 2, "@" }, /* defaults to "~/.gnupg" */
{ oNoBatch, "no-batch", 0, "@" },
{ oWithColons, "with-colons", 0, "@"},
{ aListKeys, "list-key", 0, "@" }, /* alias */
{ aListSigs, "list-sig", 0, "@" }, /* alias */
{ aCheckKeys, "check-sig",0, "@" }, /* alias */
{ oSkipVerify, "skip-verify",0, "@" },
{ oCompressKeys, "compress-keys",0, "@"},
{ oCompressSigs, "compress-sigs",0, "@"},
{ oAlwaysTrust, "always-trust", 0, "@"},
{ oEmuChecksumBug, "emulate-checksum-bug", 0, "@"},
{ oRunAsShmCP, "run-as-shm-coprocess", 4, "@" },
{ oSetFilename, "set-filename", 2, "@" },
{ oComment, "comment", 2, "@" },
{ oNotDashEscaped, "not-dash-escaped", 0, "@" },
{ oEscapeFrom, "escape-from-lines", 0, "@" },
{ oLockOnce, "lock-once", 0, "@" },
{0} };
int g10_errors_seen = 0;
static int maybe_setuid = 1;
static char *build_list( const char *text,
const char *(*mapf)(int), int (*chkf)(int) );
static void set_cmd( enum cmd_and_opt_values *ret_cmd,
enum cmd_and_opt_values new_cmd );
#ifdef IS_G10MAINT
static void print_hex( byte *p, size_t n );
static void print_mds( const char *fname, int algo );
#endif
const char *
strusage( int level )
{
static char *digests, *pubkeys, *ciphers;
const char *p;
switch( level ) {
case 11: p =
#ifdef IS_G10MAINT
"gpgm (GnuPG)";
#else
"gpg (GnuPG)";
#endif
break;
case 13: p = VERSION; break;
case 17: p = PRINTABLE_OS_NAME; break;
case 19: p =
_("Please report bugs to <gnupg-bugs@gnu.org>.\n");
break;
case 1:
case 40: p =
#ifdef IS_G10MAINT
_("Usage: gpgm [options] [files] (-h for help)");
#else
_("Usage: gpg [options] [files] (-h for help)");
#endif
break;
case 41: p =
#ifdef IS_G10MAINT
_("Syntax: gpgm [options] [files]\n"
"GnuPG maintenance utility\n");
#else
_("Syntax: gpg [options] [files]\n"
"sign, check, encrypt or decrypt\n"
"default operation depends on the input data\n");
#endif
break;
case 31: p = _("\nSupported algorithms:\n"); break;
case 32:
if( !ciphers )
ciphers = build_list("Cipher: ", cipher_algo_to_string,
check_cipher_algo );
p = ciphers;
break;
case 33:
if( !pubkeys )
pubkeys = build_list("Pubkey: ", pubkey_algo_to_string,
check_pubkey_algo );
p = pubkeys;
break;
case 34:
if( !digests )
digests = build_list("Hash: ", digest_algo_to_string,
check_digest_algo );
p = digests;
break;
default: p = default_strusage(level);
}
return p;
}
static char *
build_list( const char *text, const char * (*mapf)(int), int (*chkf)(int) )
{
int i;
const char *s;
size_t n=strlen(text)+2;
char *list, *p;
if( maybe_setuid )
secmem_init( 0 ); /* drop setuid */
for(i=1; i < 110; i++ )
if( !chkf(i) && (s=mapf(i)) )
n += strlen(s) + 2;
list = m_alloc( 21 + n ); *list = 0;
for(p=NULL, i=1; i < 110; i++ ) {
if( !chkf(i) && (s=mapf(i)) ) {
if( !p )
p = stpcpy( list, text );
else
p = stpcpy( p, ", ");
p = stpcpy(p, s );
}
}
if( p )
p = stpcpy(p, "\n" );
return list;
}
static void
i18n_init(void)
{
#ifdef ENABLE_NLS
#ifdef HAVE_LC_MESSAGES
setlocale( LC_TIME, "" );
setlocale( LC_MESSAGES, "" );
#else
setlocale( LC_ALL, "" );
#endif
bindtextdomain( PACKAGE, G10_LOCALEDIR );
textdomain( PACKAGE );
#endif
}
static void
wrong_args( const char *text)
{
#ifdef IS_G10MAINT
fputs(_("usage: gpgm [options] "),stderr);
#else
fputs(_("usage: gpg [options] "),stderr);
#endif
fputs(text,stderr);
putc('\n',stderr);
g10_exit(2);
}
static void
set_debug(void)
{
if( opt.debug & DBG_MEMORY_VALUE )
memory_debug_mode = 1;
if( opt.debug & DBG_MEMSTAT_VALUE )
memory_stat_debug_mode = 1;
if( opt.debug & DBG_MPI_VALUE )
mpi_debug_mode = 1;
if( opt.debug & DBG_CIPHER_VALUE )
g10c_debug_mode = 1;
if( opt.debug & DBG_IOBUF_VALUE )
iobuf_debug_mode = 1;
}
static void
set_cmd( enum cmd_and_opt_values *ret_cmd, enum cmd_and_opt_values new_cmd )
{
enum cmd_and_opt_values cmd = *ret_cmd;
if( !cmd || cmd == new_cmd )
cmd = new_cmd;
else if( cmd == aSign && new_cmd == aEncr )
cmd = aSignEncr;
else if( cmd == aEncr && new_cmd == aSign )
cmd = aSignEncr;
else if( cmd == aKMode && new_cmd == aSym )
cmd = aKModeC;
else if( ( cmd == aSign && new_cmd == aClearsign )
|| ( cmd == aClearsign && new_cmd == aSign ) )
cmd = aClearsign;
else {
log_error(_("conflicting commands\n"));
g10_exit(2);
}
*ret_cmd = cmd;
}
int
main( int argc, char **argv )
{
ARGPARSE_ARGS pargs;
IOBUF a;
int rc=0;
int orig_argc;
char **orig_argv;
const char *fname;
STRLIST sl, remusr= NULL, locusr=NULL;
STRLIST nrings=NULL, sec_nrings=NULL;
armor_filter_context_t afx;
int detached_sig = 0;
FILE *configfp = NULL;
char *configname = NULL;
unsigned configlineno;
int parse_debug = 0;
int default_config =1;
int default_keyring = 1;
int greeting = 1;
enum cmd_and_opt_values cmd = 0;
const char *trustdb_name = NULL;
char *def_cipher_string = NULL;
char *def_digest_string = NULL;
char *s2k_cipher_string = NULL;
char *s2k_digest_string = NULL;
int pwfd = -1;
#ifdef USE_SHM_COPROCESSING
ulong requested_shm_size=0;
#endif
trap_unaligned();
secmem_set_flags( secmem_get_flags() | 2 ); /* suspend warnings */
#ifdef IS_G10MAINT
secmem_init( 0 ); /* disable use of secmem */
maybe_setuid = 0;
log_set_name("gpgm");
#else
/* Please note that we may running SUID(ROOT), so be very CAREFUL
* when adding any stuff between here and the call to
* secmem_init() somewhere after the option parsing
*/
log_set_name("gpg");
secure_random_alloc(); /* put random number into secure memory */
disable_core_dumps();
#endif
init_signals();
i18n_init();
opt.compress = -1; /* defaults to standard compress level */
/* fixme: set the next two to zero and decide where used */
opt.def_cipher_algo = 0;
opt.def_digest_algo = 0;
opt.def_compress_algo = 2;
opt.s2k_mode = 1; /* salted */
opt.s2k_digest_algo = DIGEST_ALGO_RMD160;
opt.s2k_cipher_algo = CIPHER_ALGO_BLOWFISH;
opt.completes_needed = 1;
opt.marginals_needed = 3;
opt.max_cert_depth = 5;
opt.homedir = getenv("GNUPGHOME");
if( !opt.homedir || !*opt.homedir ) {
#ifdef __MINGW32__
opt.homedir = "c:/gnupg";
#else
opt.homedir = "~/.gnupg";
#endif
}
/* check whether we have a config file on the commandline */
orig_argc = argc;
orig_argv = argv;
pargs.argc = &argc;
pargs.argv = &argv;
pargs.flags= 1|(1<<6); /* do not remove the args, ignore version */
while( arg_parse( &pargs, opts) ) {
if( pargs.r_opt == oDebug || pargs.r_opt == oDebugAll )
parse_debug++;
else if( pargs.r_opt == oOptions ) {
/* yes there is one, so we do not try the default one, but
* read the option file when it is encountered at the commandline
*/
default_config = 0;
}
else if( pargs.r_opt == oNoOptions )
default_config = 0; /* --no-options */
else if( pargs.r_opt == oHomedir )
opt.homedir = pargs.r.ret_str;
#ifdef USE_SHM_COPROCESSING
else if( pargs.r_opt == oRunAsShmCP ) {
/* does not make sense in a options file, we do it here,
* so that we are the able to drop setuid as soon as possible */
opt.shm_coprocess = 1;
requested_shm_size = pargs.r.ret_ulong;
}
#endif
}
#ifdef USE_SHM_COPROCESSING
if( opt.shm_coprocess ) {
#ifdef IS_G10
init_shm_coprocessing(requested_shm_size, 1 );
#else
init_shm_coprocessing(requested_shm_size, 0 );
#endif
}
#endif
#ifdef IS_G10
/* initialize the secure memory. */
secmem_init( 16384 );
maybe_setuid = 0;
/* Okay, we are now working under our real uid */
#endif
if( default_config )
configname = make_filename(opt.homedir, "options", NULL );
argc = orig_argc;
argv = orig_argv;
pargs.argc = &argc;
pargs.argv = &argv;
pargs.flags= 1; /* do not remove the args */
next_pass:
if( configname ) {
configlineno = 0;
configfp = fopen( configname, "r" );
if( !configfp ) {
if( default_config ) {
if( parse_debug )
log_info(_("NOTE: no default option file `%s'\n"),
configname );
}
else {
log_error(_("option file `%s': %s\n"),
configname, strerror(errno) );
g10_exit(2);
}
m_free(configname); configname = NULL;
}
if( parse_debug && configname )
log_info(_("reading options from `%s'\n"), configname );
default_config = 0;
}
while( optfile_parse( configfp, configname, &configlineno,
&pargs, opts) ) {
switch( pargs.r_opt ) {
case aCheckKeys: set_cmd( &cmd, aCheckKeys); break;
case aListPackets: set_cmd( &cmd, aListPackets); break;
case aImport: set_cmd( &cmd, aImport); break;
case aFastImport: set_cmd( &cmd, aFastImport); break;
case aSendKeys: set_cmd( &cmd, aSendKeys); break;
case aExport: set_cmd( &cmd, aExport); break;
case aExportAll: set_cmd( &cmd, aExportAll); break;
case aListKeys: set_cmd( &cmd, aListKeys); break;
case aListSigs: set_cmd( &cmd, aListSigs); break;
case aExportSecret: set_cmd( &cmd, aExportSecret); break;
case aDeleteSecretKey: set_cmd( &cmd, aDeleteSecretKey); break;
case aDeleteKey: set_cmd( &cmd, aDeleteKey); break;
#ifdef IS_G10
case aDetachedSign: detached_sig = 1; set_cmd( &cmd, aSign ); break;
case aSym: set_cmd( &cmd, aSym); break;
case aDecrypt: set_cmd( &cmd, aDecrypt); break;
case aEncr: set_cmd( &cmd, aEncr); break;
case aSign: set_cmd( &cmd, aSign ); break;
case aKeygen: set_cmd( &cmd, aKeygen); break;
case aSignKey: set_cmd( &cmd, aSignKey); break;
case aStore: set_cmd( &cmd, aStore); break;
case aEditKey: set_cmd( &cmd, aEditKey); break;
case aClearsign: set_cmd( &cmd, aClearsign); break;
case aGenRevoke: set_cmd( &cmd, aGenRevoke); break;
case aVerify: set_cmd( &cmd, aVerify); break;
#else
#ifdef MAINTAINER_OPTIONS
case aPrimegen: set_cmd( &cmd, aPrimegen); break;
case aGenRandom: set_cmd( &cmd, aGenRandom); break;
#endif
case aPrintMD: set_cmd( &cmd, aPrintMD); break;
case aPrintMDs: set_cmd( &cmd, aPrintMDs); break;
case aListTrustDB: set_cmd( &cmd, aListTrustDB); break;
case aCheckTrustDB: set_cmd( &cmd, aCheckTrustDB); break;
case aUpdateTrustDB: set_cmd( &cmd, aUpdateTrustDB); break;
case aFixTrustDB: set_cmd( &cmd, aFixTrustDB); break;
case aListTrustPath: set_cmd( &cmd, aListTrustPath); break;
case aDeArmor: set_cmd( &cmd, aDeArmor); break;
case aEnArmor: set_cmd( &cmd, aEnArmor); break;
case aExportOwnerTrust: set_cmd( &cmd, aExportOwnerTrust); break;
case aImportOwnerTrust: set_cmd( &cmd, aImportOwnerTrust); break;
#endif /* IS_G10MAINT */
case oArmor: opt.armor = 1; opt.no_armor=0; break;
case oOutput: opt.outfile = pargs.r.ret_str; break;
case oQuiet: opt.quiet = 1; break;
case oVerbose: g10_opt_verbose++;
opt.verbose++; opt.list_sigs=1; break;
case oKOption: set_cmd( &cmd, aKMode ); break;
case oBatch: opt.batch = 1; greeting = 0; break;
case oAnswerYes: opt.answer_yes = 1; break;
case oAnswerNo: opt.answer_no = 1; break;
case oKeyring: append_to_strlist( &nrings, pargs.r.ret_str); break;
case oDebug: opt.debug |= pargs.r.ret_ulong; break;
case oDebugAll: opt.debug = ~0; break;
case oStatusFD: set_status_fd( pargs.r.ret_int ); break;
case oFingerprint: opt.fingerprint++; break;
case oSecretKeyring: append_to_strlist( &sec_nrings, pargs.r.ret_str); break;
case oOptions:
/* config files may not be nested (silently ignore them) */
if( !configfp ) {
m_free(configname);
configname = m_strdup(pargs.r.ret_str);
goto next_pass;
}
break;
case oNoArmor: opt.no_armor=1; opt.armor=0; break;
case oNoDefKeyring: default_keyring = 0; break;
case oNoGreeting: greeting = 0; break;
case oNoVerbose: g10_opt_verbose = 0;
opt.verbose = 0; opt.list_sigs=0; break;
case oQuickRandom: quick_random_gen(1); break;
case oNoComment: opt.no_comment=1; break;
case oCompletesNeeded: opt.completes_needed = pargs.r.ret_int; break;
case oMarginalsNeeded: opt.marginals_needed = pargs.r.ret_int; break;
case oMaxCertDepth: opt.max_cert_depth = pargs.r.ret_int; break;
case oTrustDBName: trustdb_name = pargs.r.ret_str; break;
case oDefaultKey: opt.def_secret_key = pargs.r.ret_str; break;
case oTrustedKey: register_trusted_key( pargs.r.ret_str ); break;
case oNoOptions: break; /* no-options */
case oHomedir: opt.homedir = pargs.r.ret_str; break;
case oNoBatch: opt.batch = 0; break;
case oWithColons: opt.with_colons=':'; break;
case oSkipVerify: opt.skip_verify=1; break;
case oCompressAlgo: opt.def_compress_algo = pargs.r.ret_int; break;
case oCompressKeys: opt.compress_keys = 1; break;
case aListSecretKeys: set_cmd( &cmd, aListSecretKeys); break;
case oAlwaysTrust: opt.always_trust = 1; break;
case oLoadExtension:
register_cipher_extension(orig_argc? *orig_argv:NULL,
pargs.r.ret_str);
break;
case oRFC1991:
opt.rfc1991 = 1;
opt.no_comment = 1;
opt.escape_from = 1;
break;
case oEmuChecksumBug: opt.emulate_bugs |= EMUBUG_GPGCHKSUM; break;
case oCompressSigs: opt.compress_sigs = 1; break;
case oRunAsShmCP:
#ifndef USE_SHM_COPROCESSING
/* not possible in the option file,
* but we print the warning here anyway */
log_error("shared memory coprocessing is not available\n");
#endif
break;
case oSetFilename: opt.set_filename = pargs.r.ret_str; break;
case oComment: opt.comment_string = pargs.r.ret_str; break;
case oThrowKeyid: opt.throw_keyid = 1; break;
case oForceV3Sigs: opt.force_v3_sigs = 1; break;
case oS2KMode: opt.s2k_mode = pargs.r.ret_int; break;
case oS2KDigest: s2k_digest_string = m_strdup(pargs.r.ret_str); break;
case oS2KCipher: s2k_cipher_string = m_strdup(pargs.r.ret_str); break;
#ifdef IS_G10
case oRemote: /* store the remote users */
sl = m_alloc( sizeof *sl + strlen(pargs.r.ret_str));
strcpy(sl->d, pargs.r.ret_str);
sl->next = remusr;
remusr = sl;
break;
case oTextmodeShort: opt.textmode = 2; break;
case oTextmode: opt.textmode=1; break;
case oUser: /* store the local users */
sl = m_alloc( sizeof *sl + strlen(pargs.r.ret_str));
strcpy(sl->d, pargs.r.ret_str);
sl->next = locusr;
locusr = sl;
break;
case oCompress: opt.compress = pargs.r.ret_int; break;
case oPasswdFD: pwfd = pargs.r.ret_int; break;
case oCipherAlgo: def_cipher_string = m_strdup(pargs.r.ret_str); break;
case oDigestAlgo: def_digest_string = m_strdup(pargs.r.ret_str); break;
case oNoSecmemWarn: secmem_set_flags( secmem_get_flags() | 1 ); break;
#else
case oCipherAlgo:
case oDigestAlgo:
case oNoSecmemWarn:
break; /* dummies */
#endif
case oCharset:
if( set_native_charset( pargs.r.ret_str ) )
log_error(_("%s is not a valid character set\n"),
pargs.r.ret_str);
break;
case oNotDashEscaped: opt.not_dash_escaped = 1; break;
case oEscapeFrom: opt.escape_from = 1; break;
case oLockOnce: opt.lock_once = 1; break;
case oKeyServer: opt.keyserver_name = pargs.r.ret_str; break;
default : pargs.err = configfp? 1:2; break;
}
}
if( configfp ) {
fclose( configfp );
configfp = NULL;
m_free(configname); configname = NULL;
goto next_pass;
}
m_free( configname ); configname = NULL;
if( log_get_errorcount(0) )
g10_exit(2);
if( greeting ) {
tty_printf("%s %s; %s\n", strusage(11), strusage(13), strusage(14) );
tty_printf("%s\n", strusage(15) );
}
secmem_set_flags( secmem_get_flags() & ~2 ); /* resume warnings */
set_debug();
/* must do this after dropping setuid, because string_to...
* may try to load an module */
if( def_cipher_string ) {
opt.def_cipher_algo = string_to_cipher_algo(def_cipher_string);
m_free(def_cipher_string); def_cipher_string = NULL;
if( check_cipher_algo(opt.def_cipher_algo) )
log_error(_("selected cipher algorithm is invalid\n"));
}
if( def_digest_string ) {
opt.def_digest_algo = string_to_digest_algo(def_digest_string);
m_free(def_digest_string); def_digest_string = NULL;
if( check_digest_algo(opt.def_digest_algo) )
log_error(_("selected digest algorithm is invalid\n"));
}
if( s2k_cipher_string ) {
opt.s2k_cipher_algo = string_to_cipher_algo(s2k_cipher_string);
m_free(s2k_cipher_string); s2k_cipher_string = NULL;
if( check_cipher_algo(opt.s2k_cipher_algo) )
log_error(_("selected cipher algorithm is invalid\n"));
}
if( s2k_digest_string ) {
opt.s2k_digest_algo = string_to_digest_algo(s2k_digest_string);
m_free(s2k_digest_string); s2k_digest_string = NULL;
if( check_digest_algo(opt.s2k_digest_algo) )
log_error(_("selected digest algorithm is invalid\n"));
}
if( opt.def_compress_algo < 1 || opt.def_compress_algo > 2 )
log_error(_("compress algorithm must be in range %d..%d\n"), 1, 2);
if( opt.completes_needed < 1 )
log_error(_("completes-needed must be greater than 0\n"));
if( opt.marginals_needed < 2 )
log_error(_("marginals-needed must be greater than 1\n"));
if( opt.max_cert_depth < 1 || opt.max_cert_depth > 255 )
log_error(_("max-cert-depth must be in range 1 to 255\n"));
switch( opt.s2k_mode ) {
case 0:
log_info(_("NOTE: simple S2K mode (0) is strongly discouraged\n"));
break;
case 1: case 3: break;
default:
log_error(_("invalid S2K mode; must be 0, 1 or 3\n"));
}
{ const char *p = strusage(13);
for( ; *p && (isdigit(*p) || *p=='.'); p++ )
;
if( *p )
log_info("NOTE: this is a development version!\n");
}
if( log_get_errorcount(0) )
g10_exit(2);
if( !cmd && opt.fingerprint )
set_cmd( &cmd, aListKeys);
if( cmd == aKMode || cmd == aKModeC ) { /* kludge to be compatible to pgp */
if( cmd == aKModeC ) {
opt.fingerprint = 1;
cmd = aKMode;
}
opt.list_sigs = 0;
if( opt.verbose > 2 )
opt.check_sigs++;
if( opt.verbose > 1 )
opt.list_sigs++;
opt.verbose = opt.verbose > 1;
g10_opt_verbose = opt.verbose;
}
/* kludge to let -sat generate a clear text signature */
if( opt.textmode == 2 && !detached_sig && opt.armor && cmd == aSign )
cmd = aClearsign;
if( opt.verbose > 1 )
set_packet_list_mode(1);
/* add the keyrings, but not for some special commands and
* not in case of "-kvv userid keyring" */
if( cmd != aDeArmor && cmd != aEnArmor
&& !(cmd == aKMode && argc == 2 ) ) {
if( !sec_nrings || default_keyring ) /* add default secret rings */
add_keyblock_resource("secring.gpg", 0, 1);
for(sl = sec_nrings; sl; sl = sl->next )
add_keyblock_resource( sl->d, 0, 1 );
if( !nrings || default_keyring ) /* add default ring */
add_keyblock_resource("pubring.gpg", 0, 0);
for(sl = nrings; sl; sl = sl->next )
add_keyblock_resource( sl->d, 0, 0 );
}
FREE_STRLIST(nrings);
FREE_STRLIST(sec_nrings);
if( pwfd != -1 ) /* read the passphrase now. */
read_passphrase_from_fd( pwfd );
fname = argc? *argv : NULL;
switch( cmd ) {
case aPrimegen:
case aPrintMD:
case aPrintMDs:
case aGenRandom:
case aDeArmor:
case aEnArmor:
case aFixTrustDB:
break;
case aKMode:
case aListKeys:
case aListSecretKeys:
case aCheckKeys:
if( opt.with_colons ) /* need this to list the trust */
rc = init_trustdb(1, trustdb_name );
break;
case aExportOwnerTrust: rc = init_trustdb( 0, trustdb_name ); break;
case aListTrustDB: rc = init_trustdb( argc? 1:0, trustdb_name ); break;
default: rc = init_trustdb(1, trustdb_name ); break;
}
if( rc )
log_error(_("failed to initialize the TrustDB: %s\n"), g10_errstr(rc));
switch( cmd ) {
case aStore: /* only store the file */
if( argc > 1 )
wrong_args(_("--store [filename]"));
if( (rc = encode_store(fname)) )
log_error_f( print_fname_stdin(fname),
"store failed: %s\n", g10_errstr(rc) );
break;
#ifdef IS_G10
case aSym: /* encrypt the given file only with the symmetric cipher */
if( argc > 1 )
wrong_args(_("--symmetric [filename]"));
if( (rc = encode_symmetric(fname)) )
log_error_f(print_fname_stdin(fname),
"symmetric encryption failed: %s\n",g10_errstr(rc) );
break;
case aEncr: /* encrypt the given file */
if( argc > 1 )
wrong_args(_("--encrypt [filename]"));
if( (rc = encode_crypt(fname,remusr)) )
log_error("%s: encryption failed: %s\n", print_fname_stdin(fname), g10_errstr(rc) );
break;
case aSign: /* sign the given file */
sl = NULL;
if( detached_sig ) { /* sign all files */
for( ; argc; argc--, argv++ )
add_to_strlist( &sl, *argv );
}
else {
if( argc > 1 )
wrong_args(_("--sign [filename]"));
if( argc ) {
sl = m_alloc_clear( sizeof *sl + strlen(fname));
strcpy(sl->d, fname);
}
}
if( (rc = sign_file( sl, detached_sig, locusr, 0, NULL, NULL)) )
log_error("signing failed: %s\n", g10_errstr(rc) );
free_strlist(sl);
break;
case aSignEncr: /* sign and encrypt the given file */
if( argc > 1 )
wrong_args(_("--sign --encrypt [filename]"));
if( argc ) {
sl = m_alloc_clear( sizeof *sl + strlen(fname));
strcpy(sl->d, fname);
}
else
sl = NULL;
if( (rc = sign_file(sl, detached_sig, locusr, 1, remusr, NULL)) )
log_error("%s: sign+encrypt failed: %s\n", print_fname_stdin(fname), g10_errstr(rc) );
free_strlist(sl);
break;
case aClearsign: /* make a clearsig */
if( argc > 1 )
wrong_args(_("--clearsign [filename]"));
if( (rc = clearsign_file(fname, locusr, NULL)) )
log_error("%s: clearsign failed: %s\n", print_fname_stdin(fname), g10_errstr(rc) );
break;
case aVerify:
if( (rc = verify_signatures( argc, argv ) ))
log_error("verify signatures failed: %s\n", g10_errstr(rc) );
break;
case aDecrypt:
if( argc > 1 )
wrong_args(_("--decrypt [filename]"));
if( (rc = decrypt_message( fname ) ))
log_error("decrypt_message failed: %s\n", g10_errstr(rc) );
break;
case aSignKey: /* sign the key given as argument */
case aEditKey: /* Edit a key signature */
if( !argc )
wrong_args(_("--edit-key username [commands]"));
if( argc > 1 ) {
sl = NULL;
for( argc--, argv++ ; argc; argc--, argv++ )
append_to_strlist( &sl, *argv );
keyedit_menu( fname, locusr, sl );
free_strlist(sl);
}
else
keyedit_menu(fname, locusr, NULL );
break;
#endif /* IS_G10 */
case aDeleteSecretKey:
if( argc != 1 )
wrong_args(_("--delete-secret-key username"));
case aDeleteKey:
if( argc != 1 )
wrong_args(_("--delete-key username"));
/* note: fname is the user id! */
if( (rc = delete_key(fname, cmd==aDeleteSecretKey)) )
log_error("%s: delete key failed: %s\n", print_fname_stdin(fname), g10_errstr(rc) );
break;
case aCheckKeys:
opt.check_sigs = 1;
case aListSigs:
opt.list_sigs = 1;
case aListKeys:
public_key_list( argc, argv );
break;
case aListSecretKeys:
secret_key_list( argc, argv );
break;
case aKMode: /* list keyring */
if( argc < 2 ) /* -kv [userid] */
public_key_list( (argc && **argv)? 1:0, argv );
else if( argc == 2 ) { /* -kv userid keyring */
if( access( argv[1], R_OK ) ) {
log_error(_("can't open %s: %s\n"),
print_fname_stdin(argv[1]), strerror(errno));
}
else {
/* add keyring (default keyrings are not registered in this
* special case */
add_keyblock_resource( argv[1], 0, 0 );
public_key_list( **argv?1:0, argv );
}
}
else
wrong_args(_("-k[v][v][v][c] [userid] [keyring]") );
break;
#ifdef IS_G10
case aKeygen: /* generate a key (interactive) */
if( argc )
wrong_args("--gen-key");
generate_keypair();
break;
#endif
case aFastImport:
case aImport:
if( !argc ) {
rc = import_keys( NULL, (cmd == aFastImport) );
if( rc )
log_error("import failed: %s\n", g10_errstr(rc) );
}
for( ; argc; argc--, argv++ ) {
rc = import_keys( *argv, (cmd == aFastImport) );
if( rc )
log_error("import from `%s' failed: %s\n",
*argv, g10_errstr(rc) );
}
break;
case aExport:
case aExportAll:
case aSendKeys:
sl = NULL;
for( ; argc; argc--, argv++ )
add_to_strlist( &sl, *argv );
if( cmd == aSendKeys )
hkp_export( sl );
else
export_pubkeys( sl, (cmd == aExport) );
free_strlist(sl);
break;
case aExportSecret:
sl = NULL;
for( ; argc; argc--, argv++ )
add_to_strlist( &sl, *argv );
export_seckeys( sl );
free_strlist(sl);
break;
#ifdef IS_G10
case aGenRevoke:
if( argc != 1 )
wrong_args("--gen-revoke user-id");
gen_revoke( *argv );
break;
#endif
#ifdef IS_G10MAINT
case aDeArmor:
if( argc > 1 )
wrong_args("--dearmor [file]");
rc = dearmor_file( argc? *argv: NULL );
if( rc )
log_error(_("dearmoring failed: %s\n"), g10_errstr(rc));
break;
case aEnArmor:
if( argc > 1 )
wrong_args("--enarmor [file]");
rc = enarmor_file( argc? *argv: NULL );
if( rc )
log_error(_("enarmoring failed: %s\n"), g10_errstr(rc));
break;
#ifdef MAINTAINER_OPTIONS
case aPrimegen:
if( argc == 1 ) {
mpi_print( stdout, generate_public_prime( atoi(argv[0]) ), 1);
putchar('\n');
}
else if( argc == 2 ) {
mpi_print( stdout, generate_elg_prime( 0, atoi(argv[0]),
atoi(argv[1]), NULL,NULL ), 1);
putchar('\n');
}
else if( argc == 3 ) {
MPI g = mpi_alloc(1);
mpi_print( stdout, generate_elg_prime( 0, atoi(argv[0]),
atoi(argv[1]), g, NULL ), 1);
printf("\nGenerator: ");
mpi_print( stdout, g, 1 );
putchar('\n');
mpi_free(g);
}
else if( argc == 4 ) {
mpi_print( stdout, generate_elg_prime( 1, atoi(argv[0]),
atoi(argv[1]), NULL,NULL ), 1);
putchar('\n');
}
else
usage(1);
break;
#endif /* MAINTAINER OPTIONS */
#ifdef MAINTAINER_OPTIONS
case aGenRandom:
if( argc < 1 || argc > 2 )
wrong_args("--gen-random level [hex]");
{
int c;
int level = atoi(*argv);
for(;;) {
byte *p;
if( argc == 2 ) {
p = get_random_bits( 8, level, 0);
printf("%02x", *p );
fflush(stdout);
}
else {
p = get_random_bits( 800, level, 0);
for(c=0; c < 100; c++ )
putchar( p[c] );
}
m_free(p);
}
}
break;
#endif /* MAINTAINER OPTIONS */
case aPrintMD:
if( argc < 1)
wrong_args("--print-md algo [file]");
else {
int algo = string_to_digest_algo(*argv);
if( !algo )
log_error(_("invalid hash algorithm `%s'\n"), *argv );
else {
argc--; argv++;
if( !argc )
print_mds(NULL, algo);
else {
for(; argc; argc--, argv++ )
print_mds(*argv, algo);
}
}
}
break;
case aPrintMDs:
if( !argc )
print_mds(NULL,0);
else {
for(; argc; argc--, argv++ )
print_mds(*argv,0);
}
break;
case aListTrustDB:
if( !argc )
list_trustdb(NULL);
else {
for( ; argc; argc--, argv++ )
list_trustdb( *argv );
}
break;
case aUpdateTrustDB:
if( argc )
wrong_args("--update-trustdb");
update_trustdb();
break;
case aCheckTrustDB:
if( !argc )
check_trustdb(NULL);
else {
for( ; argc; argc--, argv++ )
check_trustdb( *argv );
}
break;
case aFixTrustDB:
log_error("this command ist not yet implemented.\"\n");
log_error("A workaround is to use \"--export-ownertrust\", remove\n");
log_error("the trustdb file and do an \"--import-ownertrust\".\n" );
break;
case aListTrustPath:
if( !argc )
wrong_args("--list-trust-path <usernames>");
for( ; argc; argc--, argv++ )
list_trust_path( *argv );
break;
case aExportOwnerTrust:
if( argc )
wrong_args("--export-ownertrust");
export_ownertrust();
break;
case aImportOwnerTrust:
if( argc > 1 )
wrong_args("--import-ownertrust [file]");
import_ownertrust( argc? *argv:NULL );
break;
#endif /* IS_G10MAINT */
case aListPackets:
opt.list_packets=1;
default:
/* fixme: g10maint should do regular maintenace tasks here */
if( argc > 1 )
wrong_args(_("[filename]"));
/* Issue some output for the unix newbie */
if( !fname && !opt.outfile && isatty( fileno(stdin) )
&& isatty( fileno(stdout) ) && isatty( fileno(stderr) ) )
log_info(_("Go ahead and type your message ...\n"));
if( !(a = iobuf_open(fname)) )
log_error(_("can't open `%s'\n"), print_fname_stdin(fname));
else {
if( !opt.no_armor ) {
if( use_armor_filter( a ) ) {
memset( &afx, 0, sizeof afx);
iobuf_push_filter( a, armor_filter, &afx );
}
}
if( cmd == aListPackets ) {
set_packet_list_mode(1);
opt.list_packets=1;
}
proc_packets( a );
iobuf_close(a);
}
break;
}
/* cleanup */
FREE_STRLIST(remusr);
FREE_STRLIST(locusr);
g10_exit(0);
return 8; /*NEVER REACHED*/
}
void
g10_exit( int rc )
{
if( opt.debug & DBG_MEMSTAT_VALUE )
m_print_stats("on exit");
if( opt.debug )
secmem_dump_stats();
secmem_term();
rc = rc? rc : log_get_errorcount(0)? 2 :
g10_errors_seen? 1 : 0;
/*write_status( STATUS_LEAVE );*/
exit(rc );
}
#ifdef IS_G10MAINT
static void
print_hex( byte *p, size_t n )
{
int i;
if( n == 20 ) {
for(i=0; i < n ; i++, i++, p += 2 ) {
if( i )
putchar(' ');
if( i == 10 )
putchar(' ');
printf("%02X%02X", *p, p[1] );
}
}
else if( n == 24 ) {
for(i=0; i < n ; i += 4, p += 4 ) {
if( i )
putchar(' ');
if( i == 12 )
putchar(' ');
printf("%02X%02X%02X%02X", *p, p[1], p[2], p[3] );
}
}
else {
for(i=0; i < n ; i++, p++ ) {
if( i )
putchar(' ');
if( i && !(i%8) )
putchar(' ');
printf("%02X", *p );
}
}
}
static void
print_mds( const char *fname, int algo )
{
FILE *fp;
char buf[1024];
size_t n;
MD_HANDLE md;
char *pname;
if( !fname ) {
fp = stdin;
pname = m_strdup("[stdin]: ");
}
else {
pname = m_alloc(strlen(fname)+3);
strcpy(stpcpy(pname,fname),": ");
fp = fopen( fname, "rb" );
}
if( !fp ) {
log_error("%s%s\n", pname, strerror(errno) );
m_free(pname);
return;
}
md = md_open( 0, 0 );
if( algo )
md_enable( md, algo );
else {
md_enable( md, DIGEST_ALGO_MD5 );
md_enable( md, DIGEST_ALGO_SHA1 );
md_enable( md, DIGEST_ALGO_RMD160 );
if( !check_digest_algo(DIGEST_ALGO_TIGER) )
md_enable( md, DIGEST_ALGO_TIGER );
}
while( (n=fread( buf, 1, DIM(buf), fp )) )
md_write( md, buf, n );
if( ferror(fp) )
log_error("%s%s\n", pname, strerror(errno) );
else {
md_final(md);
if( algo ) {
if( fname )
fputs( pname, stdout );
print_hex(md_read(md, algo), md_digest_length(algo) );
}
else {
printf( "%s MD5 = ", fname?pname:"" );
print_hex(md_read(md, DIGEST_ALGO_MD5), 16 );
printf("\n%s SHA1 = ", fname?pname:"" );
print_hex(md_read(md, DIGEST_ALGO_SHA1), 20 );
printf("\n%sRMD160 = ", fname?pname:"" );
print_hex(md_read(md, DIGEST_ALGO_RMD160), 20 );
if( !check_digest_algo(DIGEST_ALGO_TIGER) ) {
printf("\n%s TIGER = ", fname?pname:"" );
print_hex(md_read(md, DIGEST_ALGO_TIGER), 24 );
}
}
putchar('\n');
}
md_close(md);
if( fp != stdin )
fclose(fp);
}
#endif /* IS_G10MAINT */
diff --git a/g10/hkp.c b/g10/hkp.c
index 11f701116..7300cf0e1 100644
--- a/g10/hkp.c
+++ b/g10/hkp.c
@@ -1,180 +1,181 @@
/* hkp.c - Horrowitz Keyserver Protocol
* Copyright (C) 1999 Free Software Foundation, Inc.
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <assert.h>
#include "errors.h"
#include "util.h"
#include "ttyio.h"
#include "i18n.h"
#include "options.h"
#include "filter.h"
#include "http.h"
#include "main.h"
static int urlencode_filter( void *opaque, int control,
IOBUF a, byte *buf, size_t *ret_len);
/****************
* Try to import the key with KEYID from a keyserver but ask the user
* before doing so.
* Returns: 0 the key was successfully imported
* -1 key not found on server or user does not want to
* import the key
* or other error codes.
*/
int
hkp_ask_import( u32 *keyid )
{
struct http_context hd;
char *request;
int rc;
if( !opt.keyserver_name )
return -1;
log_info("requesting key %08lX from %s ...\n", (ulong)keyid[1],
opt.keyserver_name );
request = m_alloc( strlen( opt.keyserver_name ) + 100 );
/* hkp does not accept the long keyid - we should really write a
* nicer one */
sprintf( request, "x-hkp://%s:11371/pks/lookup?op=get&search=0x%08lX",
opt.keyserver_name, (ulong)keyid[1] );
rc = http_open_document( &hd, request, 0 );
if( rc ) {
log_info("can't get key from keyserver: %s\n", g10_errstr(rc) );
}
else {
rc = import_keys_stream( hd.fp_read , 0 );
http_close( &hd );
}
m_free( request );
return rc;
}
int
hkp_export( STRLIST users )
{
int rc;
armor_filter_context_t afx;
IOBUF temp = iobuf_temp();
struct http_context hd;
char *request;
unsigned int status;
if( !opt.keyserver_name ) {
log_error("no keyserver known (use option --keyserver)\n");
return -1;
}
iobuf_push_filter( temp, urlencode_filter, NULL );
memset( &afx, 0, sizeof afx);
afx.what = 1;
iobuf_push_filter( temp, armor_filter, &afx );
rc = export_pubkeys_stream( temp, users, 1 );
if( rc == -1 ) {
iobuf_close(temp);
return 0;
}
iobuf_flush_temp( temp );
request = m_alloc( strlen( opt.keyserver_name ) + 100 );
sprintf( request, "x-hkp://%s:11371/pks/add", opt.keyserver_name );
rc = http_open( &hd, HTTP_REQ_POST, request , 0 );
if( rc ) {
log_error("can't connect to `%s': %s\n",
opt.keyserver_name, g10_errstr(rc) );
iobuf_close(temp);
m_free( request );
return rc;
}
sprintf( request, "Content-Length: %u\n",
(unsigned)iobuf_get_temp_length(temp) + 9 );
iobuf_writestr( hd.fp_write, request );
m_free( request );
http_start_data( &hd );
iobuf_writestr( hd.fp_write, "keytext=" );
iobuf_write( hd.fp_write, iobuf_get_temp_buffer(temp),
iobuf_get_temp_length(temp) );
iobuf_put( hd.fp_write, '\n' );
+ iobuf_flush_temp( temp );
iobuf_close(temp);
rc = http_wait_response( &hd, &status );
if( rc ) {
log_error("error sending to `%s': %s\n",
opt.keyserver_name, g10_errstr(rc) );
}
else {
#if 1
if( opt.verbose ) {
int c;
while( (c=iobuf_get(hd.fp_read)) != EOF )
putchar( c );
}
#endif
if( (status/100) == 2 )
log_info("success sending to `%s' (status=%u)\n",
opt.keyserver_name, status );
else
log_error("failed sending to `%s': status=%u\n",
opt.keyserver_name, status );
}
http_close( &hd );
return rc;
}
static int
urlencode_filter( void *opaque, int control,
IOBUF a, byte *buf, size_t *ret_len)
{
size_t size = *ret_len;
int rc=0;
if( control == IOBUFCTRL_FLUSH ) {
const byte *p;
for(p=buf; size; p++, size-- ) {
if( isalnum(*p) || *p == '-' )
iobuf_put( a, *p );
else if( *p == ' ' )
iobuf_put( a, '+' );
else {
char numbuf[5];
sprintf(numbuf, "%%%02X", *p );
iobuf_writestr(a, numbuf );
}
}
}
else if( control == IOBUFCTRL_DESC )
*(char**)buf = "urlencode_filter";
return rc;
}
diff --git a/g10/mainproc.c b/g10/mainproc.c
index 51547b886..2e5575dd8 100644
--- a/g10/mainproc.c
+++ b/g10/mainproc.c
@@ -1,967 +1,967 @@
/* mainproc.c - handle packets
* Copyright (C) 1998 Free Software Foundation, Inc.
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <time.h>
#include "packet.h"
#include "iobuf.h"
#include "memory.h"
#include "options.h"
#include "util.h"
#include "cipher.h"
#include "keydb.h"
#include "filter.h"
#include "cipher.h"
#include "main.h"
#include "status.h"
#include "i18n.h"
#include "trustdb.h"
#include "hkp.h"
/****************
* Structure to hold the context
*/
typedef struct {
PKT_public_key *last_pubkey;
PKT_secret_key *last_seckey;
PKT_user_id *last_user_id;
md_filter_context_t mfx;
int sigs_only; /* process only signatures and reject all other stuff */
int encrypt_only; /* process only encrytion messages */
STRLIST signed_data;
const char *sigfilename;
DEK *dek;
int last_was_session_key;
KBNODE list; /* the current list of packets */
int have_data;
IOBUF iobuf; /* used to get the filename etc. */
int trustletter; /* temp usage in list_node */
ulong local_id; /* ditto */
} *CTX;
static int do_proc_packets( CTX c, IOBUF a );
static void list_node( CTX c, KBNODE node );
static void proc_tree( CTX c, KBNODE node );
static void
release_list( CTX c )
{
if( !c->list )
return;
proc_tree(c, c->list );
release_kbnode( c->list );
c->list = NULL;
}
static int
add_onepass_sig( CTX c, PACKET *pkt )
{
KBNODE node;
if( c->list ) { /* add another packet */
if( c->list->pkt->pkttype != PKT_ONEPASS_SIG ) {
log_error("add_onepass_sig: another packet is in the way\n");
release_list( c );
c->list = new_kbnode( pkt );
}
else
add_kbnode( c->list, new_kbnode( pkt ));
}
else /* insert the first one */
c->list = node = new_kbnode( pkt );
return 1;
}
static int
add_user_id( CTX c, PACKET *pkt )
{
if( !c->list ) {
log_error("orphaned user id\n" );
return 0;
}
add_kbnode( c->list, new_kbnode( pkt ) );
return 1;
}
static int
add_subkey( CTX c, PACKET *pkt )
{
if( !c->list ) {
log_error("subkey w/o mainkey\n" );
return 0;
}
add_kbnode( c->list, new_kbnode( pkt ) );
return 1;
}
static int
add_signature( CTX c, PACKET *pkt )
{
KBNODE node;
if( pkt->pkttype == PKT_SIGNATURE && !c->list ) {
/* This is the first signature for the following datafile.
* G10 does not write such packets; instead it always uses
* onepass-sig packets. The drawback of PGP's method
* of prepending the signature to the data is
* that it is not possible to make a signature from data read
* from stdin. (G10 is able to read PGP stuff anyway.) */
node = new_kbnode( pkt );
c->list = node;
return 1;
}
else if( !c->list )
return 0; /* oops (invalid packet sequence)*/
else if( !c->list->pkt )
BUG(); /* so nicht */
/* add a new signature node id at the end */
node = new_kbnode( pkt );
add_kbnode( c->list, node );
return 1;
}
static void
proc_symkey_enc( CTX c, PACKET *pkt )
{
PKT_symkey_enc *enc;
enc = pkt->pkt.symkey_enc;
if( enc->seskeylen )
log_error( "symkey_enc packet with session keys are not supported!\n");
else {
c->last_was_session_key = 2;
c->dek = passphrase_to_dek( NULL, enc->cipher_algo, &enc->s2k, 0 );
}
free_packet(pkt);
}
static void
proc_pubkey_enc( CTX c, PACKET *pkt )
{
PKT_pubkey_enc *enc;
int result = 0;
/* check whether the secret key is available and store in this case */
c->last_was_session_key = 1;
enc = pkt->pkt.pubkey_enc;
/*printf("enc: encrypted by a pubkey with keyid %08lX\n", enc->keyid[1] );*/
if( is_ELGAMAL(enc->pubkey_algo)
|| enc->pubkey_algo == PUBKEY_ALGO_DSA
|| is_RSA(enc->pubkey_algo) ) {
if ( !c->dek ) {
c->dek = m_alloc_secure( sizeof *c->dek );
if( (result = get_session_key( enc, c->dek )) ) {
/* error: delete the DEK */
m_free(c->dek); c->dek = NULL;
}
}
}
else
result = G10ERR_PUBKEY_ALGO;
if( result == -1 )
;
else if( !result ) {
if( opt.verbose > 1 )
log_info( _("public key encrypted data: good DEK\n") );
}
else {
log_error(_("public key decryption failed: %s\n"), g10_errstr(result));
}
free_packet(pkt);
}
static void
proc_encrypted( CTX c, PACKET *pkt )
{
int result = 0;
/*printf("dat: %sencrypted data\n", c->dek?"":"conventional ");*/
if( !c->dek && !c->last_was_session_key ) {
/* assume this is old conventional encrypted data */
c->dek = passphrase_to_dek( NULL,
opt.def_cipher_algo ? opt.def_cipher_algo
: DEFAULT_CIPHER_ALGO, NULL, 0 );
}
else if( !c->dek )
result = G10ERR_NO_SECKEY;
if( !result )
result = decrypt_data( pkt->pkt.encrypted, c->dek );
m_free(c->dek); c->dek = NULL;
if( result == -1 )
;
else if( !result ) {
if( opt.verbose > 1 )
log_info(_("decryption okay\n"));
}
else {
log_error(_("decryption failed: %s\n"), g10_errstr(result));
/* FIXME: if this is secret key not available, try with
* other keys */
}
free_packet(pkt);
c->last_was_session_key = 0;
}
static void
proc_plaintext( CTX c, PACKET *pkt )
{
PKT_plaintext *pt = pkt->pkt.plaintext;
int any, clearsig, rc;
KBNODE n;
if( pt->namelen == 8 && !memcmp( pt->name, "_CONSOLE", 8 ) )
log_info(_("NOTE: sender requested \"for-your-eyes-only\"\n"));
else if( opt.verbose )
log_info(_("original file name='%.*s'\n"), pt->namelen, pt->name);
free_md_filter_context( &c->mfx );
c->mfx.md = md_open( 0, 0);
/* fixme: we may need to push the textfilter if we have sigclass 1
* and no armoring - Not yet tested */
any = clearsig = 0;
for(n=c->list; n; n = n->next ) {
if( n->pkt->pkttype == PKT_ONEPASS_SIG ) {
if( n->pkt->pkt.onepass_sig->digest_algo ) {
md_enable( c->mfx.md, n->pkt->pkt.onepass_sig->digest_algo );
any = 1;
}
/* Check whether this is a cleartext signature. We assume that
* we have one if the sig_class is 1 and the keyid is 0, that
* are the faked packets produced by armor.c. There is a
* possibility that this fails, but there is no other easy way
* to do it. (We could use a special packet type to indicate
* this, but this may also be faked - it simply can't be verified
* and is _no_ security issue)
*/
if( n->pkt->pkt.onepass_sig->sig_class == 0x01
&& !n->pkt->pkt.onepass_sig->keyid[0]
&& !n->pkt->pkt.onepass_sig->keyid[1] )
clearsig = 1;
}
}
if( !any ) { /* no onepass sig packet: enable all standard algos */
md_enable( c->mfx.md, DIGEST_ALGO_RMD160 );
md_enable( c->mfx.md, DIGEST_ALGO_SHA1 );
md_enable( c->mfx.md, DIGEST_ALGO_MD5 );
}
- md_start_debug( c->mfx.md, "verify" );
+ /*md_start_debug( c->mfx.md, "verify" );*/
rc = handle_plaintext( pt, &c->mfx, c->sigs_only, clearsig );
if( rc == G10ERR_CREATE_FILE && !c->sigs_only) {
/* can't write output but we hash it anyway to
* check the signature */
rc = handle_plaintext( pt, &c->mfx, 1, clearsig );
}
if( rc )
log_error( "handle plaintext failed: %s\n", g10_errstr(rc));
free_packet(pkt);
c->last_was_session_key = 0;
}
static int
proc_compressed_cb( IOBUF a, void *info )
{
return proc_signature_packets( a, ((CTX)info)->signed_data,
((CTX)info)->sigfilename );
}
static int
proc_encrypt_cb( IOBUF a, void *info )
{
return proc_encryption_packets( a );
}
static void
proc_compressed( CTX c, PACKET *pkt )
{
PKT_compressed *zd = pkt->pkt.compressed;
int rc;
/*printf("zip: compressed data packet\n");*/
if( c->sigs_only )
rc = handle_compressed( zd, proc_compressed_cb, c );
else if( c->encrypt_only )
rc = handle_compressed( zd, proc_encrypt_cb, c );
else
rc = handle_compressed( zd, NULL, NULL );
if( rc )
log_error("uncompressing failed: %s\n", g10_errstr(rc));
free_packet(pkt);
c->last_was_session_key = 0;
}
/****************
* check the signature
* Returns: 0 = valid signature or an error code
*/
static int
do_check_sig( CTX c, KBNODE node, int *is_selfsig )
{
PKT_signature *sig;
MD_HANDLE md;
int algo, rc;
assert( node->pkt->pkttype == PKT_SIGNATURE );
if( is_selfsig )
*is_selfsig = 0;
sig = node->pkt->pkt.signature;
algo = sig->digest_algo;
if( !algo )
return G10ERR_PUBKEY_ALGO;
if( (rc=check_digest_algo(algo)) )
return rc;
if( c->mfx.md ) {
m_check(c->mfx.md);
if( c->mfx.md->list )
m_check( c->mfx.md->list );
}
if( sig->sig_class == 0x00 ) {
if( c->mfx.md )
md = md_copy( c->mfx.md );
else /* detached signature */
md = md_open( 0, 0 ); /* signature_check() will enable the md*/
}
else if( sig->sig_class == 0x01 ) {
/* how do we know that we have to hash the (already hashed) text
* in canonical mode ??? (calculating both modes???) */
if( c->mfx.md )
md = md_copy( c->mfx.md );
else /* detached signature */
md = md_open( 0, 0 ); /* signature_check() will enable the md*/
}
else if( (sig->sig_class&~3) == 0x10
|| sig->sig_class == 0x18
|| sig->sig_class == 0x20
|| sig->sig_class == 0x30 ) { /* classes 0x10..0x17,0x20,0x30 */
if( c->list->pkt->pkttype == PKT_PUBLIC_KEY
|| c->list->pkt->pkttype == PKT_PUBLIC_SUBKEY ) {
return check_key_signature( c->list, node, is_selfsig );
}
else {
log_error("invalid root packet for sigclass %02x\n",
sig->sig_class);
return G10ERR_SIG_CLASS;
}
}
else
return G10ERR_SIG_CLASS;
rc = signature_check( sig, md );
md_close(md);
return rc;
}
static void
print_userid( PACKET *pkt )
{
if( !pkt )
BUG();
if( pkt->pkttype != PKT_USER_ID ) {
printf("ERROR: unexpected packet type %d", pkt->pkttype );
return;
}
print_string( stdout, pkt->pkt.user_id->name, pkt->pkt.user_id->len,
opt.with_colons );
}
static void
print_fingerprint( PKT_public_key *pk, PKT_secret_key *sk )
{
byte array[MAX_FINGERPRINT_LEN], *p;
size_t i, n;
if( sk )
fingerprint_from_sk( sk, array, &n );
else
fingerprint_from_pk( pk, array, &n );
p = array;
if( opt.with_colons ) {
printf("fpr:::::::::");
for(i=0; i < n ; i++, p++ )
printf("%02X", *p );
putchar(':');
}
else {
printf(" Key fingerprint =");
if( n == 20 ) {
for(i=0; i < n ; i++, i++, p += 2 ) {
if( i == 10 )
putchar(' ');
printf(" %02X%02X", *p, p[1] );
}
}
else {
for(i=0; i < n ; i++, p++ ) {
if( i && !(i%8) )
putchar(' ');
printf(" %02X", *p );
}
}
}
putchar('\n');
}
/****************
* List the certificate in a user friendly way
*/
static void
list_node( CTX c, KBNODE node )
{
int any=0;
int mainkey;
if( !node )
;
else if( (mainkey = (node->pkt->pkttype == PKT_PUBLIC_KEY) )
|| node->pkt->pkttype == PKT_PUBLIC_SUBKEY ) {
PKT_public_key *pk = node->pkt->pkt.public_key;
if( opt.with_colons ) {
u32 keyid[2];
keyid_from_pk( pk, keyid );
if( mainkey ) {
c->local_id = pk->local_id;
c->trustletter = query_trust_info( pk );
}
printf("%s:%c:%u:%d:%08lX%08lX:%s:%s:",
mainkey? "pub":"sub",
c->trustletter,
nbits_from_pk( pk ),
pk->pubkey_algo,
(ulong)keyid[0],(ulong)keyid[1],
datestr_from_pk( pk ),
pk->expiredate? strtimestamp(pk->expiredate):"" );
if( c->local_id )
printf("%lu", c->local_id );
putchar(':');
if( c->local_id )
putchar( get_ownertrust_info( c->local_id ) );
putchar(':');
}
else
printf("%s %4u%c/%08lX %s ",
mainkey? "pub":"sub",
nbits_from_pk( pk ),
pubkey_letter( pk->pubkey_algo ),
(ulong)keyid_from_pk( pk, NULL ),
datestr_from_pk( pk ) );
if( mainkey ) {
/* and now list all userids with their signatures */
for( node = node->next; node; node = node->next ) {
if( node->pkt->pkttype == PKT_SIGNATURE ) {
if( !any ) {
if( node->pkt->pkt.signature->sig_class == 0x20 )
puts("[revoked]");
else
putchar('\n');
any = 1;
}
list_node(c, node );
}
else if( node->pkt->pkttype == PKT_USER_ID ) {
if( any ) {
if( opt.with_colons )
printf("uid:::::::::");
else
printf( "uid%*s", 28, "" );
}
print_userid( node->pkt );
if( opt.with_colons )
putchar(':');
putchar('\n');
if( opt.fingerprint && !any )
print_fingerprint( pk, NULL );
any=1;
}
else if( node->pkt->pkttype == PKT_PUBLIC_SUBKEY ) {
if( !any ) {
putchar('\n');
any = 1;
}
list_node(c, node );
}
}
}
if( !any )
putchar('\n');
if( !mainkey && opt.fingerprint > 1 )
print_fingerprint( pk, NULL );
}
else if( (mainkey = (node->pkt->pkttype == PKT_SECRET_KEY) )
|| node->pkt->pkttype == PKT_SECRET_SUBKEY ) {
PKT_secret_key *sk = node->pkt->pkt.secret_key;
if( opt.with_colons ) {
u32 keyid[2];
keyid_from_sk( sk, keyid );
printf("%s::%u:%d:%08lX%08lX:%s:%s:::",
mainkey? "sec":"ssb",
nbits_from_sk( sk ),
sk->pubkey_algo,
(ulong)keyid[0],(ulong)keyid[1],
datestr_from_sk( sk ),
sk->expiredate? strtimestamp(sk->expiredate):""
/* fixme: add LID */ );
}
else
printf("%s %4u%c/%08lX %s ",
mainkey? "sec":"ssb",
nbits_from_sk( sk ),
pubkey_letter( sk->pubkey_algo ),
(ulong)keyid_from_sk( sk, NULL ),
datestr_from_sk( sk ) );
if( mainkey ) {
/* and now list all userids with their signatures */
for( node = node->next; node; node = node->next ) {
if( node->pkt->pkttype == PKT_SIGNATURE ) {
if( !any ) {
if( node->pkt->pkt.signature->sig_class == 0x20 )
puts("[revoked]");
else
putchar('\n');
any = 1;
}
list_node(c, node );
}
else if( node->pkt->pkttype == PKT_USER_ID ) {
if( any ) {
if( opt.with_colons )
printf("uid:::::::::");
else
printf( "uid%*s", 28, "" );
}
print_userid( node->pkt );
if( opt.with_colons )
putchar(':');
putchar('\n');
if( opt.fingerprint && !any )
print_fingerprint( NULL, sk );
any=1;
}
else if( node->pkt->pkttype == PKT_SECRET_SUBKEY ) {
if( !any ) {
putchar('\n');
any = 1;
}
list_node(c, node );
}
}
}
if( !any )
putchar('\n');
if( !mainkey && opt.fingerprint > 1 )
print_fingerprint( NULL, sk );
}
else if( node->pkt->pkttype == PKT_SIGNATURE ) {
PKT_signature *sig = node->pkt->pkt.signature;
int is_selfsig = 0;
int rc2=0;
size_t n;
char *p;
int sigrc = ' ';
if( !opt.list_sigs )
return;
if( sig->sig_class == 0x20 || sig->sig_class == 0x30 )
fputs("rev", stdout);
else
fputs("sig", stdout);
if( opt.check_sigs ) {
fflush(stdout);
switch( (rc2=do_check_sig( c, node, &is_selfsig )) ) {
case 0: sigrc = '!'; break;
case G10ERR_BAD_SIGN: sigrc = '-'; break;
case G10ERR_NO_PUBKEY: sigrc = '?'; break;
default: sigrc = '%'; break;
}
}
else { /* check whether this is a self signature */
u32 keyid[2];
if( c->list->pkt->pkttype == PKT_PUBLIC_KEY
|| c->list->pkt->pkttype == PKT_SECRET_KEY ) {
if( c->list->pkt->pkttype == PKT_PUBLIC_KEY )
keyid_from_pk( c->list->pkt->pkt.public_key, keyid );
else
keyid_from_sk( c->list->pkt->pkt.secret_key, keyid );
if( keyid[0] == sig->keyid[0] && keyid[1] == sig->keyid[1] )
is_selfsig = 1;
}
}
if( opt.with_colons ) {
putchar(':');
if( sigrc != ' ' )
putchar(sigrc);
printf(":::%08lX%08lX:%s::::", (ulong)sig->keyid[0],
(ulong)sig->keyid[1], datestr_from_sig(sig));
}
else
printf("%c %08lX %s ",
sigrc, (ulong)sig->keyid[1], datestr_from_sig(sig));
if( sigrc == '%' )
printf("[%s] ", g10_errstr(rc2) );
else if( sigrc == '?' )
;
else if( is_selfsig ) {
if( opt.with_colons )
putchar(':');
fputs( sig->sig_class == 0x18? "[keybind]":"[selfsig]", stdout);
if( opt.with_colons )
putchar(':');
}
else {
p = get_user_id( sig->keyid, &n );
print_string( stdout, p, n, opt.with_colons );
m_free(p);
}
if( opt.with_colons )
printf(":%02x:", sig->sig_class );
putchar('\n');
}
else
log_error("invalid node with packet of type %d\n", node->pkt->pkttype);
}
int
proc_packets( IOBUF a )
{
CTX c = m_alloc_clear( sizeof *c );
int rc = do_proc_packets( c, a );
m_free( c );
return rc;
}
int
proc_signature_packets( IOBUF a, STRLIST signedfiles, const char *sigfilename )
{
CTX c = m_alloc_clear( sizeof *c );
int rc;
c->sigs_only = 1;
c->signed_data = signedfiles;
c->sigfilename = sigfilename;
rc = do_proc_packets( c, a );
m_free( c );
return rc;
}
int
proc_encryption_packets( IOBUF a )
{
CTX c = m_alloc_clear( sizeof *c );
int rc;
c->encrypt_only = 1;
rc = do_proc_packets( c, a );
m_free( c );
return rc;
}
int
do_proc_packets( CTX c, IOBUF a )
{
PACKET *pkt = m_alloc( sizeof *pkt );
int rc=0;
int newpkt;
c->iobuf = a;
init_packet(pkt);
while( (rc=parse_packet(a, pkt)) != -1 ) {
if( rc ) {
free_packet(pkt);
if( rc == G10ERR_INVALID_PACKET )
break;
continue;
}
newpkt = -1;
if( opt.list_packets ) {
switch( pkt->pkttype ) {
case PKT_PUBKEY_ENC: proc_pubkey_enc( c, pkt ); break;
case PKT_ENCRYPTED: proc_encrypted( c, pkt ); break;
case PKT_COMPRESSED: proc_compressed( c, pkt ); break;
default: newpkt = 0; break;
}
}
else if( c->sigs_only ) {
switch( pkt->pkttype ) {
case PKT_PUBLIC_KEY:
case PKT_SECRET_KEY:
case PKT_USER_ID:
case PKT_SYMKEY_ENC:
case PKT_PUBKEY_ENC:
case PKT_ENCRYPTED:
rc = G10ERR_UNEXPECTED;
goto leave;
case PKT_SIGNATURE: newpkt = add_signature( c, pkt ); break;
case PKT_PLAINTEXT: proc_plaintext( c, pkt ); break;
case PKT_COMPRESSED: proc_compressed( c, pkt ); break;
case PKT_ONEPASS_SIG: newpkt = add_onepass_sig( c, pkt ); break;
default: newpkt = 0; break;
}
}
else if( c->encrypt_only ) {
switch( pkt->pkttype ) {
case PKT_PUBLIC_KEY:
case PKT_SECRET_KEY:
case PKT_USER_ID:
rc = G10ERR_UNEXPECTED;
goto leave;
case PKT_SIGNATURE: newpkt = add_signature( c, pkt ); break;
case PKT_SYMKEY_ENC: proc_symkey_enc( c, pkt ); break;
case PKT_PUBKEY_ENC: proc_pubkey_enc( c, pkt ); break;
case PKT_ENCRYPTED: proc_encrypted( c, pkt ); break;
case PKT_PLAINTEXT: proc_plaintext( c, pkt ); break;
case PKT_COMPRESSED: proc_compressed( c, pkt ); break;
case PKT_ONEPASS_SIG: newpkt = add_onepass_sig( c, pkt ); break;
default: newpkt = 0; break;
}
}
else {
switch( pkt->pkttype ) {
case PKT_PUBLIC_KEY:
case PKT_SECRET_KEY:
release_list( c );
c->list = new_kbnode( pkt );
newpkt = 1;
break;
case PKT_PUBLIC_SUBKEY:
case PKT_SECRET_SUBKEY:
newpkt = add_subkey( c, pkt );
break;
case PKT_USER_ID: newpkt = add_user_id( c, pkt ); break;
case PKT_SIGNATURE: newpkt = add_signature( c, pkt ); break;
case PKT_PUBKEY_ENC: proc_pubkey_enc( c, pkt ); break;
case PKT_SYMKEY_ENC: proc_symkey_enc( c, pkt ); break;
case PKT_ENCRYPTED: proc_encrypted( c, pkt ); break;
case PKT_PLAINTEXT: proc_plaintext( c, pkt ); break;
case PKT_COMPRESSED: proc_compressed( c, pkt ); break;
case PKT_ONEPASS_SIG: newpkt = add_onepass_sig( c, pkt ); break;
default: newpkt = 0; break;
}
}
if( pkt->pkttype != PKT_SIGNATURE )
c->have_data = pkt->pkttype == PKT_PLAINTEXT;
if( newpkt == -1 )
;
else if( newpkt ) {
pkt = m_alloc( sizeof *pkt );
init_packet(pkt);
}
else
free_packet(pkt);
}
rc = 0;
leave:
release_list( c );
m_free(c->dek);
free_packet( pkt );
m_free( pkt );
free_md_filter_context( &c->mfx );
return rc;
}
static void
print_keyid( FILE *fp, u32 *keyid )
{
size_t n;
char *p = get_user_id( keyid, &n );
print_string( fp, p, n, opt.with_colons );
m_free(p);
}
static int
check_sig_and_print( CTX c, KBNODE node )
{
PKT_signature *sig = node->pkt->pkt.signature;
const char *astr, *tstr;
int rc;
if( opt.skip_verify ) {
log_info(_("signature verification suppressed\n"));
return 0;
}
tstr = asctimestamp(sig->timestamp);
astr = pubkey_algo_to_string( sig->pubkey_algo );
log_info(_("Signature made %.*s using %s key ID %08lX\n"),
(int)strlen(tstr), tstr, astr? astr: "?", (ulong)sig->keyid[1] );
rc = do_check_sig(c, node, NULL );
if( rc == G10ERR_NO_PUBKEY && opt.keyserver_name ) {
if( !hkp_ask_import( sig->keyid ) )
rc = do_check_sig(c, node, NULL );
}
if( !rc || rc == G10ERR_BAD_SIGN ) {
char *us = get_long_user_id_string( sig->keyid );
write_status_text( rc? STATUS_BADSIG : STATUS_GOODSIG, us );
m_free(us);
log_info(rc? _("BAD signature from \"")
: _("Good signature from \""));
print_keyid( stderr, sig->keyid );
putc('\"', stderr);
putc('\n', stderr);
if( !rc && is_status_enabled() ) {
/* print a status response with the fingerprint */
PKT_public_key *pk = m_alloc_clear( sizeof *pk );
if( !get_pubkey( pk, sig->keyid ) ) {
byte array[MAX_FINGERPRINT_LEN], *p;
char buf[MAX_FINGERPRINT_LEN*2+1];
size_t i, n;
fingerprint_from_pk( pk, array, &n );
p = array;
for(i=0; i < n ; i++, p++ )
sprintf(buf+2*i, "%02X", *p );
write_status_text( STATUS_VALIDSIG, buf );
}
free_public_key( pk );
}
if( !rc )
rc = check_signatures_trust( sig );
if( rc )
g10_errors_seen = 1;
if( opt.batch && rc )
g10_exit(1);
}
else {
write_status( STATUS_ERRSIG );
log_error(_("Can't check signature: %s\n"), g10_errstr(rc) );
}
return rc;
}
/****************
* Process the tree which starts at node
*/
static void
proc_tree( CTX c, KBNODE node )
{
KBNODE n1;
int rc;
if( opt.list_packets )
return;
c->local_id = 0;
c->trustletter = ' ';
if( node->pkt->pkttype == PKT_PUBLIC_KEY
|| node->pkt->pkttype == PKT_PUBLIC_SUBKEY ) {
merge_keys_and_selfsig( node );
list_node( c, node );
}
else if( node->pkt->pkttype == PKT_SECRET_KEY ) {
merge_keys_and_selfsig( node );
list_node( c, node );
}
else if( node->pkt->pkttype == PKT_ONEPASS_SIG ) {
/* check all signatures */
if( !c->have_data ) {
free_md_filter_context( &c->mfx );
/* prepare to create all requested message digests */
c->mfx.md = md_open(0, 0);
/* fixme: why looking for the signature packet and not 1passpacket*/
for( n1 = node; (n1 = find_next_kbnode(n1, PKT_SIGNATURE )); ) {
md_enable( c->mfx.md, n1->pkt->pkt.signature->digest_algo);
}
/* ask for file and hash it */
if( c->sigs_only )
rc = hash_datafiles( c->mfx.md, c->signed_data, c->sigfilename,
n1? (n1->pkt->pkt.onepass_sig->sig_class == 0x01):0 );
else
rc = ask_for_detached_datafile( &c->mfx,
iobuf_get_fname(c->iobuf));
if( rc ) {
log_error("can't hash datafile: %s\n", g10_errstr(rc));
return;
}
}
for( n1 = node; (n1 = find_next_kbnode(n1, PKT_SIGNATURE )); )
check_sig_and_print( c, n1 );
}
else if( node->pkt->pkttype == PKT_SIGNATURE ) {
PKT_signature *sig = node->pkt->pkt.signature;
if( !c->have_data ) {
free_md_filter_context( &c->mfx );
c->mfx.md = md_open(sig->digest_algo, 0);
if( c->sigs_only )
rc = hash_datafiles( c->mfx.md, c->signed_data, c->sigfilename,
sig->sig_class == 0x01 );
else
rc = ask_for_detached_datafile( &c->mfx,
iobuf_get_fname(c->iobuf));
if( rc ) {
log_error("can't hash datafile: %s\n", g10_errstr(rc));
return;
}
}
else
log_info(_("old style (PGP 2.x) signature\n"));
check_sig_and_print( c, node );
}
else
log_error(_("invalid root packet detected in proc_tree()\n"));
}
diff --git a/g10/sign.c b/g10/sign.c
index fe13461d6..dd7f50c35 100644
--- a/g10/sign.c
+++ b/g10/sign.c
@@ -1,862 +1,862 @@
/* sign.c - sign data
* Copyright (C) 1998 Free Software Foundation, Inc.
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
#include "options.h"
#include "packet.h"
#include "errors.h"
#include "iobuf.h"
#include "keydb.h"
#include "memory.h"
#include "util.h"
#include "main.h"
#include "filter.h"
#include "ttyio.h"
#include "trustdb.h"
#include "i18n.h"
static int
do_sign( PKT_secret_key *sk, PKT_signature *sig,
MD_HANDLE md, int digest_algo )
{
MPI frame;
byte *dp;
int rc;
if( sk->timestamp > sig->timestamp ) {
ulong d = sk->timestamp - sig->timestamp;
log_info( d==1 ? _("key has been created %lu second "
"in future (time warp or clock problem)\n")
: _("key has been created %lu seconds "
"in future (time warp or clock problem)\n"), d );
return G10ERR_TIME_CONFLICT;
}
print_pubkey_algo_note(sk->pubkey_algo);
if( !digest_algo )
digest_algo = md_get_algo(md);
print_digest_algo_note( digest_algo );
dp = md_read( md, digest_algo );
sig->digest_algo = digest_algo;
sig->digest_start[0] = dp[0];
sig->digest_start[1] = dp[1];
frame = encode_md_value( sk->pubkey_algo, md,
digest_algo, mpi_get_nbits(sk->skey[0]));
rc = pubkey_sign( sk->pubkey_algo, sig->data, frame, sk->skey );
mpi_free(frame);
if( rc )
log_error(_("signing failed: %s\n"), g10_errstr(rc) );
else {
if( opt.verbose ) {
char *ustr = get_user_id_string( sig->keyid );
log_info(_("%s signature from: %s\n"),
pubkey_algo_to_string(sk->pubkey_algo), ustr );
m_free(ustr);
}
}
return rc;
}
int
complete_sig( PKT_signature *sig, PKT_secret_key *sk, MD_HANDLE md )
{
int rc=0;
if( !(rc=check_secret_key( sk, 0 )) )
rc = do_sign( sk, sig, md, 0 );
/* fixme: should we check whether the signature is okay?
* maybe by using an option */
return rc;
}
static int
hash_for(int pubkey_algo )
{
if( opt.def_digest_algo )
return opt.def_digest_algo;
if( pubkey_algo == PUBKEY_ALGO_DSA )
return DIGEST_ALGO_SHA1;
if( pubkey_algo == PUBKEY_ALGO_RSA )
return DIGEST_ALGO_MD5;
return DEFAULT_DIGEST_ALGO;
}
static int
only_old_style( SK_LIST sk_list )
{
SK_LIST sk_rover = NULL;
int old_style = 0;
/* if there are only old style capable key we use the old sytle */
for( sk_rover = sk_list; sk_rover; sk_rover = sk_rover->next ) {
PKT_secret_key *sk = sk_rover->sk;
if( sk->pubkey_algo == PUBKEY_ALGO_RSA && sk->version < 4 )
old_style = 1;
else
return 0;
}
return old_style;
}
/****************
* Sign the files whose names are in FILENAME.
* If DETACHED has the value true,
* make a detached signature. If FILENAMES->d is NULL read from stdin
* and ignore the detached mode. Sign the file with all secret keys
* which can be taken from LOCUSR, if this is NULL, use the default one
* If ENCRYPT is true, use REMUSER (or ask if it is NULL) to encrypt the
* signed data for these users.
* If OUTFILE is not NULL; this file is used for output and the function
* does not ask for overwrite permission; output is then always
* uncompressed, non-armored and in binary mode.
*/
int
sign_file( STRLIST filenames, int detached, STRLIST locusr,
int encrypt, STRLIST remusr, const char *outfile )
{
const char *fname;
armor_filter_context_t afx;
compress_filter_context_t zfx;
md_filter_context_t mfx;
text_filter_context_t tfx;
encrypt_filter_context_t efx;
IOBUF inp = NULL, out = NULL;
PACKET pkt;
PKT_plaintext *pt = NULL;
u32 filesize;
int rc = 0;
PK_LIST pk_list = NULL;
SK_LIST sk_list = NULL;
SK_LIST sk_rover = NULL;
int multifile = 0;
int old_style = opt.rfc1991;
int compr_algo = -1; /* unknown */
memset( &afx, 0, sizeof afx);
memset( &zfx, 0, sizeof zfx);
memset( &mfx, 0, sizeof mfx);
memset( &tfx, 0, sizeof tfx);
memset( &efx, 0, sizeof efx);
init_packet( &pkt );
if( filenames ) {
fname = filenames->d;
multifile = !!filenames->next;
}
else
fname = NULL;
if( fname && filenames->next && (!detached || encrypt) )
log_bug("multiple files can only be detached signed");
if( (rc=build_sk_list( locusr, &sk_list, 1, PUBKEY_USAGE_SIG )) )
goto leave;
if( !old_style )
old_style = only_old_style( sk_list );
if( encrypt ) {
if( (rc=build_pk_list( remusr, &pk_list, PUBKEY_USAGE_ENC )) )
goto leave;
if( !old_style )
compr_algo = select_algo_from_prefs( pk_list, PREFTYPE_COMPR );
}
/* prepare iobufs */
if( multifile ) /* have list of filenames */
inp = NULL; /* we do it later */
else if( !(inp = iobuf_open(fname)) ) {
log_error("can't open %s: %s\n", fname? fname: "[stdin]",
strerror(errno) );
rc = G10ERR_OPEN_FILE;
goto leave;
}
if( outfile ) {
if( !(out = iobuf_create( outfile )) ) {
log_error(_("can't create %s: %s\n"), outfile, strerror(errno) );
rc = G10ERR_CREATE_FILE;
goto leave;
}
else if( opt.verbose )
log_info(_("writing to `%s'\n"), outfile );
}
else if( (rc = open_outfile( fname, opt.armor? 1: detached? 2:0, &out )))
goto leave;
/* prepare to calculate the MD over the input */
if( opt.textmode && !outfile )
iobuf_push_filter( inp, text_filter, &tfx );
mfx.md = md_open(0, 0);
for( sk_rover = sk_list; sk_rover; sk_rover = sk_rover->next ) {
PKT_secret_key *sk = sk_rover->sk;
md_enable(mfx.md, hash_for(sk->pubkey_algo));
}
if( !multifile )
iobuf_push_filter( inp, md_filter, &mfx );
if( detached && !encrypt && !opt.rfc1991 )
afx.what = 2;
if( opt.armor && !outfile )
iobuf_push_filter( out, armor_filter, &afx );
#ifdef ENABLE_COMMENT_PACKETS
else {
write_comment( out, "#created by GNUPG v" VERSION " ("
PRINTABLE_OS_NAME ")");
if( opt.comment_string )
write_comment( out, opt.comment_string );
}
#endif
if( encrypt ) {
efx.pk_list = pk_list;
/* fixme: set efx.cfx.datalen if known */
iobuf_push_filter( out, encrypt_filter, &efx );
}
if( opt.compress && !outfile && ( !detached || opt.compress_sigs) ) {
if( !compr_algo )
; /* don't use compression */
else {
if( old_style || compr_algo == 1 )
zfx.algo = 1;
iobuf_push_filter( out, compress_filter, &zfx );
}
}
if( !detached && !old_style ) {
int skcount=0;
/* loop over the secret certificates and build headers
* The specs now say that the data should be bracket by
* the onepass-sig and signature-packet; so we must build it
* here in reverse order */
for( sk_rover = sk_list; sk_rover; sk_rover = sk_rover->next )
skcount++;
for( ; skcount; skcount-- ) {
PKT_secret_key *sk;
PKT_onepass_sig *ops;
int i = 0;
for( sk_rover = sk_list; sk_rover; sk_rover = sk_rover->next )
if( ++i == skcount )
break;
sk = sk_rover->sk;
ops = m_alloc_clear( sizeof *ops );
ops->sig_class = opt.textmode && !outfile ? 0x01 : 0x00;
ops->digest_algo = hash_for(sk->pubkey_algo);
ops->pubkey_algo = sk->pubkey_algo;
keyid_from_sk( sk, ops->keyid );
ops->last = skcount == 1;
init_packet(&pkt);
pkt.pkttype = PKT_ONEPASS_SIG;
pkt.pkt.onepass_sig = ops;
rc = build_packet( out, &pkt );
free_packet( &pkt );
if( rc ) {
log_error("build onepass_sig packet failed: %s\n",
g10_errstr(rc));
goto leave;
}
}
}
/* setup the inner packet */
if( detached ) {
if( multifile ) {
STRLIST sl;
if( opt.verbose )
log_info(_("signing:") );
/* must walk reverse trough this list */
for( sl = strlist_last(filenames); sl;
sl = strlist_prev( filenames, sl ) ) {
if( !(inp = iobuf_open(sl->d)) ) {
log_error(_("can't open %s: %s\n"),
sl->d, strerror(errno) );
rc = G10ERR_OPEN_FILE;
goto leave;
}
if( opt.verbose )
fprintf(stderr, " `%s'", sl->d );
iobuf_push_filter( inp, md_filter, &mfx );
while( iobuf_get(inp) != -1 )
;
iobuf_close(inp); inp = NULL;
}
if( opt.verbose )
putc( '\n', stderr );
}
else {
/* read, so that the filter can calculate the digest */
while( iobuf_get(inp) != -1 )
;
}
}
else {
if( fname || opt.set_filename ) {
char *s = make_basename( opt.set_filename ? opt.set_filename : fname );
pt = m_alloc( sizeof *pt + strlen(s) - 1 );
pt->namelen = strlen(s);
memcpy(pt->name, s, pt->namelen );
m_free(s);
}
else { /* no filename */
pt = m_alloc( sizeof *pt - 1 );
pt->namelen = 0;
}
if( fname ) {
if( !(filesize = iobuf_get_filelength(inp)) )
log_info(_("WARNING: `%s' is an empty file\n"), fname );
/* because the text_filter modifies the length of the
* data, it is not possible to know the used length
* without a double read of the file - to avoid that
* we simple use partial length packets.
*/
if( opt.textmode && !outfile )
filesize = 0;
}
else
filesize = 0; /* stdin */
pt->timestamp = make_timestamp();
pt->mode = opt.textmode && !outfile ? 't':'b';
pt->len = filesize;
pt->new_ctb = !pt->len && !opt.rfc1991;
pt->buf = inp;
pkt.pkttype = PKT_PLAINTEXT;
pkt.pkt.plaintext = pt;
/*cfx.datalen = filesize? calc_packet_length( &pkt ) : 0;*/
if( (rc = build_packet( out, &pkt )) )
log_error("build_packet(PLAINTEXT) failed: %s\n", g10_errstr(rc) );
pt->buf = NULL;
}
/* loop over the secret certificates */
for( sk_rover = sk_list; sk_rover; sk_rover = sk_rover->next ) {
PKT_secret_key *sk;
PKT_signature *sig;
MD_HANDLE md;
sk = sk_rover->sk;
/* build the signature packet */
/* fixme: this code is partly duplicated in make_keysig_packet */
sig = m_alloc_clear( sizeof *sig );
sig->version = old_style || opt.force_v3_sigs ? 3 : sk->version;
keyid_from_sk( sk, sig->keyid );
sig->digest_algo = hash_for(sk->pubkey_algo);
sig->pubkey_algo = sk->pubkey_algo;
sig->timestamp = make_timestamp();
sig->sig_class = opt.textmode && !outfile? 0x01 : 0x00;
md = md_copy( mfx.md );
if( sig->version >= 4 ) {
build_sig_subpkt_from_sig( sig );
md_putc( md, sig->version );
}
md_putc( md, sig->sig_class );
if( sig->version < 4 ) {
u32 a = sig->timestamp;
md_putc( md, (a >> 24) & 0xff );
md_putc( md, (a >> 16) & 0xff );
md_putc( md, (a >> 8) & 0xff );
md_putc( md, a & 0xff );
}
else {
byte buf[6];
size_t n;
md_putc( md, sig->pubkey_algo );
md_putc( md, sig->digest_algo );
if( sig->hashed_data ) {
n = (sig->hashed_data[0] << 8) | sig->hashed_data[1];
md_write( md, sig->hashed_data, n+2 );
n += 6;
}
else
n = 6;
/* add some magic */
buf[0] = sig->version;
buf[1] = 0xff;
buf[2] = n >> 24; /* hmmm, n is only 16 bit, so this is always 0 */
buf[3] = n >> 16;
buf[4] = n >> 8;
buf[5] = n;
md_write( md, buf, 6 );
}
md_final( md );
rc = do_sign( sk, sig, md, hash_for(sig->pubkey_algo) );
md_close( md );
if( !rc ) { /* and write it */
init_packet(&pkt);
pkt.pkttype = PKT_SIGNATURE;
pkt.pkt.signature = sig;
rc = build_packet( out, &pkt );
free_packet( &pkt );
if( rc )
log_error("build signature packet failed: %s\n", g10_errstr(rc) );
}
if( rc )
goto leave;
}
leave:
if( rc )
iobuf_cancel(out);
else
iobuf_close(out);
iobuf_close(inp);
md_close( mfx.md );
release_sk_list( sk_list );
release_pk_list( pk_list );
return rc;
}
#if 0
/****************
* Note: We do not calculate the hash over the last CR,LF
*/
static int
write_dash_escaped( IOBUF inp, IOBUF out, MD_HANDLE md )
{
int c;
int lastlf = 1;
int state = 0;
if( opt.not_dash_escaped ) {
lastlf = 0;
while( (c = iobuf_get(inp)) != -1 ) {
md_putc(md, c );
iobuf_put( out, c );
lastlf = c;
}
if( lastlf != '\n' ) {
/* add a missing trailing LF */
md_putc(md, '\n' );
iobuf_put( out, '\n' );
}
return 0;
}
while( (c = iobuf_get(inp)) != -1 ) {
if( lastlf ) {
if( c == '-' ) {
iobuf_put( out, c );
iobuf_put( out, ' ' );
}
else if( c == 'F' && opt.escape_from ) {
int i;
if( state >= 1 )
md_putc(md, '\r');
if( state >= 2 )
md_putc(md, '\n');
state = 0;
for( i=1; i < 5 && (c = iobuf_get(inp)) != -1; i++ ) {
if( "From "[i] != c )
break;
}
if( i < 5 ) {
iobuf_write( out, "From", i );
md_write( md, "From", i );
if( c == -1 )
break;
}
else {
iobuf_writestr( out, "- From" );
md_write( md, "From", 4 );
}
}
}
again:
switch( state ) {
case 0:
if( c == '\r' )
state = 1;
else
md_putc(md, c );
break;
case 1:
if( c == '\n' )
state = 2;
else {
md_putc(md, '\r');
state = 0;
goto again;
}
break;
case 2:
md_putc(md, '\r');
md_putc(md, '\n');
state = 0;
goto again;
default: BUG();
}
iobuf_put( out, c );
lastlf = c == '\n';
}
if( state == 1 )
md_putc(md, '\r');
else if( state == 2 ) { /* file ended with a new line */
md_putc(md, '\r');
md_putc(md, '\n');
iobuf_put( out, '\n');
}
if( !lastlf )
iobuf_put( out, '\n' );
return 0; /* fixme: add error handling */
}
#endif
/****************
* make a clear signature. note that opt.armor is not needed
*/
int
clearsign_file( const char *fname, STRLIST locusr, const char *outfile )
{
armor_filter_context_t afx;
text_filter_context_t tfx;
MD_HANDLE textmd = NULL;
IOBUF inp = NULL, out = NULL;
PACKET pkt;
int rc = 0;
SK_LIST sk_list = NULL;
SK_LIST sk_rover = NULL;
int old_style = opt.rfc1991;
int only_md5 = 0;
int c;
memset( &afx, 0, sizeof afx);
memset( &tfx, 0, sizeof tfx);
init_packet( &pkt );
if( (rc=build_sk_list( locusr, &sk_list, 1, PUBKEY_USAGE_SIG )) )
goto leave;
if( !old_style )
old_style = only_old_style( sk_list );
/* prepare iobufs */
if( !(inp = iobuf_open(fname)) ) {
log_error("can't open %s: %s\n", fname? fname: "[stdin]",
strerror(errno) );
rc = G10ERR_OPEN_FILE;
goto leave;
}
if( outfile ) {
if( !(out = iobuf_create( outfile )) ) {
log_error(_("can't create %s: %s\n"), outfile, strerror(errno) );
rc = G10ERR_CREATE_FILE;
goto leave;
}
else if( opt.verbose )
log_info(_("writing to `%s'\n"), outfile );
}
else if( (rc = open_outfile( fname, 1, &out )) )
goto leave;
iobuf_writestr(out, "-----BEGIN PGP SIGNED MESSAGE-----\n" );
for( sk_rover = sk_list; sk_rover; sk_rover = sk_rover->next ) {
PKT_secret_key *sk = sk_rover->sk;
if( hash_for(sk->pubkey_algo) == DIGEST_ALGO_MD5 )
only_md5 = 1;
else {
only_md5 = 0;
break;
}
}
if( old_style || only_md5 )
iobuf_writestr(out, "\n" );
else {
const char *s;
int any = 0;
iobuf_writestr(out, "Hash: " );
for( sk_rover = sk_list; sk_rover; sk_rover = sk_rover->next ) {
PKT_secret_key *sk = sk_rover->sk;
s = digest_algo_to_string( hash_for(sk->pubkey_algo) );
if( s ) {
if( any )
iobuf_put(out, ',' );
iobuf_writestr(out, s );
any = 1;
}
}
assert(any);
iobuf_writestr(out, "\n" );
if( opt.not_dash_escaped )
iobuf_writestr( out,
"NotDashEscaped: You need GnuPG to verify this message\n" );
iobuf_writestr(out, "\n" );
}
textmd = md_open(0, 0);
for( sk_rover = sk_list; sk_rover; sk_rover = sk_rover->next ) {
PKT_secret_key *sk = sk_rover->sk;
md_enable(textmd, hash_for(sk->pubkey_algo));
}
- md_start_debug( textmd, "sign" );
+ /*md_start_debug( textmd, "sign" );*/
tfx.clearsign = 1;
tfx.not_dash_escaped = opt.not_dash_escaped;
tfx.escape_from = opt.escape_from;
tfx.md = textmd;
iobuf_push_filter( inp, text_filter, &tfx );
/* read input and write it to the output. The textfilter handles
* the calculation of the hash and the dash escaping */
while( (c=iobuf_get(inp)) != -1 ) {
if( iobuf_put(out, c) == -1 ) {
rc = G10ERR_WRITE_FILE;
goto leave;
}
}
/* fixme: check for read errors */
/* now write the armor */
afx.what = 2;
iobuf_push_filter( out, armor_filter, &afx );
/* loop over the secret certificates */
for( sk_rover = sk_list; sk_rover; sk_rover = sk_rover->next ) {
PKT_secret_key *sk;
PKT_signature *sig;
MD_HANDLE md;
sk = sk_rover->sk;
/* build the signature packet */
/* fixme: this code is duplicated above */
sig = m_alloc_clear( sizeof *sig );
sig->version = old_style || opt.force_v3_sigs ? 3 : sk->version;
keyid_from_sk( sk, sig->keyid );
sig->digest_algo = hash_for(sk->pubkey_algo);
sig->pubkey_algo = sk->pubkey_algo;
sig->timestamp = make_timestamp();
sig->sig_class = 0x01;
md = md_copy( textmd );
if( sig->version >= 4 ) {
build_sig_subpkt_from_sig( sig );
md_putc( md, sig->version );
}
md_putc( md, sig->sig_class );
if( sig->version < 4 ) {
u32 a = sig->timestamp;
md_putc( md, (a >> 24) & 0xff );
md_putc( md, (a >> 16) & 0xff );
md_putc( md, (a >> 8) & 0xff );
md_putc( md, a & 0xff );
}
else {
byte buf[6];
size_t n;
md_putc( md, sig->pubkey_algo );
md_putc( md, sig->digest_algo );
if( sig->hashed_data ) {
n = (sig->hashed_data[0] << 8) | sig->hashed_data[1];
md_write( md, sig->hashed_data, n+2 );
n += 6;
}
else
n = 6;
/* add some magic */
buf[0] = sig->version;
buf[1] = 0xff;
buf[2] = n >> 24; /* hmmm, n is only 16 bit, so this is always 0 */
buf[3] = n >> 16;
buf[4] = n >> 8;
buf[5] = n;
md_write( md, buf, 6 );
}
md_final( md );
rc = do_sign( sk, sig, md, hash_for(sig->pubkey_algo) );
md_close( md );
if( !rc ) { /* and write it */
init_packet(&pkt);
pkt.pkttype = PKT_SIGNATURE;
pkt.pkt.signature = sig;
rc = build_packet( out, &pkt );
free_packet( &pkt );
if( rc )
log_error("build signature packet failed: %s\n", g10_errstr(rc) );
}
if( rc )
goto leave;
}
leave:
if( rc )
iobuf_cancel(out);
else
iobuf_close(out);
iobuf_close(inp);
md_close( textmd );
release_sk_list( sk_list );
return rc;
}
/****************
* Create a signature packet for the given public key certificate
* and the user id and return it in ret_sig. User signature class SIGCLASS
* user-id is not used (and may be NULL if sigclass is 0x20)
* If digest_algo is 0 the function selects an appropriate one.
*/
int
make_keysig_packet( PKT_signature **ret_sig, PKT_public_key *pk,
PKT_user_id *uid, PKT_public_key *subpk,
PKT_secret_key *sk,
int sigclass, int digest_algo,
int (*mksubpkt)(PKT_signature *, void *), void *opaque
)
{
PKT_signature *sig;
int rc=0;
MD_HANDLE md;
assert( (sigclass >= 0x10 && sigclass <= 0x13)
|| sigclass == 0x20 || sigclass == 0x18 );
if( !digest_algo ) {
switch( sk->pubkey_algo ) {
case PUBKEY_ALGO_DSA: digest_algo = DIGEST_ALGO_SHA1; break;
case PUBKEY_ALGO_RSA_S:
case PUBKEY_ALGO_RSA: digest_algo = DIGEST_ALGO_MD5; break;
default: digest_algo = DIGEST_ALGO_RMD160; break;
}
}
md = md_open( digest_algo, 0 );
/* hash the public key certificate and the user id */
hash_public_key( md, pk );
if( sigclass == 0x18 ) { /* subkey binding */
hash_public_key( md, subpk );
}
else if( sigclass != 0x20 ) {
if( sk->version >=4 ) {
byte buf[5];
buf[0] = 0xb4; /* indicates a userid packet */
buf[1] = uid->len >> 24; /* always use 4 length bytes */
buf[2] = uid->len >> 16;
buf[3] = uid->len >> 8;
buf[4] = uid->len;
md_write( md, buf, 5 );
}
md_write( md, uid->name, uid->len );
}
/* and make the signature packet */
sig = m_alloc_clear( sizeof *sig );
sig->version = sk->version;
keyid_from_sk( sk, sig->keyid );
sig->pubkey_algo = sk->pubkey_algo;
sig->digest_algo = digest_algo;
sig->timestamp = make_timestamp();
sig->sig_class = sigclass;
if( sig->version >= 4 )
build_sig_subpkt_from_sig( sig );
if( sig->version >= 4 && mksubpkt )
rc = (*mksubpkt)( sig, opaque );
if( !rc ) {
if( sig->version >= 4 )
md_putc( md, sig->version );
md_putc( md, sig->sig_class );
if( sig->version < 4 ) {
u32 a = sig->timestamp;
md_putc( md, (a >> 24) & 0xff );
md_putc( md, (a >> 16) & 0xff );
md_putc( md, (a >> 8) & 0xff );
md_putc( md, a & 0xff );
}
else {
byte buf[6];
size_t n;
md_putc( md, sig->pubkey_algo );
md_putc( md, sig->digest_algo );
if( sig->hashed_data ) {
n = (sig->hashed_data[0] << 8) | sig->hashed_data[1];
md_write( md, sig->hashed_data, n+2 );
n += 6;
}
else
n = 6;
/* add some magic */
buf[0] = sig->version;
buf[1] = 0xff;
buf[2] = n >> 24; /* hmmm, n is only 16 bit, so this is always 0 */
buf[3] = n >> 16;
buf[4] = n >> 8;
buf[5] = n;
md_write( md, buf, 6 );
}
md_final(md);
rc = complete_sig( sig, sk, md );
}
md_close( md );
if( rc )
free_seckey_enc( sig );
else
*ret_sig = sig;
return rc;
}
diff --git a/g10/skclist.c b/g10/skclist.c
index 2c46d6699..74ae2a804 100644
--- a/g10/skclist.c
+++ b/g10/skclist.c
@@ -1,156 +1,156 @@
/* skclist.c
* Copyright (C) 1998 Free Software Foundation, Inc.
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
#include "options.h"
#include "packet.h"
#include "errors.h"
#include "keydb.h"
#include "memory.h"
#include "util.h"
#include "i18n.h"
#include "cipher.h"
void
release_sk_list( SK_LIST sk_list )
{
SK_LIST sk_rover;
for( ; sk_list; sk_list = sk_rover ) {
sk_rover = sk_list->next;
free_secret_key( sk_list->sk );
m_free( sk_list );
}
}
/* Check that we are only using keys which don't have
* the string "(insecure!)" or "not secure" or "do not use"
* in one of the user ids
*/
static int
is_insecure( PKT_secret_key *sk )
{
- BUG();
+ return 0; /* FIXME!! */
}
int
build_sk_list( STRLIST locusr, SK_LIST *ret_sk_list, int unlock,
unsigned usage )
{
SK_LIST sk_list = NULL;
int rc;
if( !locusr ) { /* use the default one */
PKT_secret_key *sk;
sk = m_alloc_clear( sizeof *sk );
sk->pubkey_usage = usage;
if( (rc = get_seckey_byname( sk, NULL, unlock )) ) {
free_secret_key( sk ); sk = NULL;
log_error("no default secret key: %s\n", g10_errstr(rc) );
}
else if( !(rc=check_pubkey_algo2(sk->pubkey_algo, usage)) ) {
SK_LIST r;
if( sk->version == 4 && (usage & PUBKEY_USAGE_SIG)
&& sk->pubkey_algo == PUBKEY_ALGO_ELGAMAL_E ) {
log_info("this is a PGP generated "
"ElGamal key which is NOT secure for signatures!\n");
free_secret_key( sk ); sk = NULL;
}
else if( random_is_faked() && !is_insecure( sk ) ) {
log_info(_("key is not flagged as insecure - "
"can't use it with the faked RNG!\n"));
free_secret_key( sk ); sk = NULL;
}
else {
r = m_alloc( sizeof *r );
r->sk = sk; sk = NULL;
r->next = sk_list;
r->mark = 0;
sk_list = r;
}
}
else {
free_secret_key( sk ); sk = NULL;
log_error("invalid default secret key: %s\n", g10_errstr(rc) );
}
}
else {
for(; locusr; locusr = locusr->next ) {
PKT_secret_key *sk;
sk = m_alloc_clear( sizeof *sk );
sk->pubkey_usage = usage;
if( (rc = get_seckey_byname( sk, locusr->d, unlock )) ) {
free_secret_key( sk ); sk = NULL;
log_error(_("skipped `%s': %s\n"), locusr->d, g10_errstr(rc) );
}
else if( !(rc=check_pubkey_algo2(sk->pubkey_algo, usage)) ) {
SK_LIST r;
if( sk->version == 4 && (usage & PUBKEY_USAGE_SIG)
&& sk->pubkey_algo == PUBKEY_ALGO_ELGAMAL_E ) {
log_info(_("skipped `%s': this is a PGP generated "
"ElGamal key which is not secure for signatures!\n"),
locusr->d );
free_secret_key( sk ); sk = NULL;
}
else if( random_is_faked() && !is_insecure( sk ) ) {
log_info(_("key is not flagged as insecure - "
"can't use it with the faked RNG!\n"));
free_secret_key( sk ); sk = NULL;
}
else {
r = m_alloc( sizeof *r );
r->sk = sk; sk = NULL;
r->next = sk_list;
r->mark = 0;
sk_list = r;
}
}
else {
free_secret_key( sk ); sk = NULL;
log_error("skipped `%s': %s\n", locusr->d, g10_errstr(rc) );
}
}
}
if( !rc && !sk_list ) {
log_error("no valid signators\n");
rc = G10ERR_NO_USER_ID;
}
if( rc )
release_sk_list( sk_list );
else
*ret_sk_list = sk_list;
return rc;
}
diff --git a/include/distfiles b/include/distfiles
index 191dd880d..4462aa230 100644
--- a/include/distfiles
+++ b/include/distfiles
@@ -1,14 +1,15 @@
cipher.h
errors.h
iobuf.h
memory.h
mpi.h
ttyio.h
types.h
util.h
i18n.h
host2net.h
+http.h
g10lib.h
ChangeLog
diff --git a/mpi/mips3/README b/mpi/mips3/README
new file mode 100644
index 000000000..e94b2c746
--- /dev/null
+++ b/mpi/mips3/README
@@ -0,0 +1,23 @@
+This directory contains mpn functions optimized for MIPS3. Example of
+processors that implement MIPS3 are R4000, R4400, R4600, R4700, and R8000.
+
+RELEVANT OPTIMIZATION ISSUES
+
+1. On the R4000 and R4400, branches, both the plain and the "likely" ones,
+ take 3 cycles to execute. (The fastest possible loop will take 4 cycles,
+ because of the delay insn.)
+
+ On the R4600, branches takes a single cycle
+
+ On the R8000, branches often take no noticable cycles, as they are
+ executed in a separate function unit..
+
+2. The R4000 and R4400 have a load latency of 4 cycles.
+
+3. On the R4000 and R4400, multiplies take a data-dependent number of
+ cycles, contrary to the SGI documentation. There seem to be 3 or 4
+ possible latencies.
+
+STATUS
+
+Good...
diff --git a/po/ChangeLog b/po/ChangeLog
index 1e3bfe557..42e83fb2c 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,94 +1,98 @@
+Wed Jan 20 21:40:21 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
+
+ * es_ES.po: Import of new version.
+
Wed Jan 13 12:49:36 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* de.po de.glo: New version imported.
Tue Jan 12 11:17:18 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* fr.po: Imported new version
Tue Dec 29 14:41:47 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* pl.po: Janusz A. Urbanowicz contributed this one
Thu Dec 17 18:31:15 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* fr.po: Imported new version
Mon Dec 14 21:18:49 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* de.po: Imported new version.
Thu Dec 10 20:15:36 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* *.po: Changed some english strings.
Tue Dec 8 15:09:29 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* pt_BR.po: Add translation by Thiago Jung Bauermann.
Fri Nov 27 12:39:29 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* en.po: Removed
Fri Nov 20 11:46:22 1998 Werner Koch (wk@isil.d.shuttle.de)
* de.po: Imported new version
* de.glo: Glossary used for de.po.
Sat Nov 14 10:16:59 1998 Werner Koch (wk@isil.d.shuttle.de)
* es_ES.po: New translation by Urko Lusa.
Tue Nov 10 10:48:02 1998 Werner Koch (wk@isil.d.shuttle.de)
* it.po: Imported new version.
Fri Oct 30 20:03:17 1998 Werner Koch (wk@isil.d.shuttle.de)
* fr.po: Imported new version
Mon Oct 12 09:08:09 1998 Werner Koch (wk@isil.d.shuttle.de)
* it.po: Imported new version.
* de.po: Imported new version.
Sun Oct 11 16:24:27 1998 Werner Koch (wk@isil.d.shuttle.de)
* fr.po: Imported new version
Wed Oct 7 13:12:00 1998 Werner Koch (wk@isil.d.shuttle.de)
* Makefile.in.in: Fixed mkinstalldirs problems
Mon Sep 21 15:03:44 1998 Werner Koch (wk@(none))
* it.po: New version from Marco d'Itri
Mon Sep 21 09:28:54 1998 Werner Koch (wk@(none))
* fr.po: New version from Gaël Quéri
Tue Aug 11 12:28:11 1998 Werner Koch (wk@(none))
* it.po: New file from Marco.
Thu Jul 9 21:14:51 1998 Werner Koch (wk@isil.d.shuttle.de)
* de.po: Fixed typos and added new translations.
Fri Jun 26 11:44:24 1998 Werner Koch (wk@isil.d.shuttle.de)
* it.po: New file from Marco.
Thu May 28 10:44:25 1998 Werner Koch (wk@isil.d.shuttle.de)
* it.po: Add small corrections from Marco
Thu Apr 9 10:03:14 1998 Werner Koch (wk@isil.d.shuttle.de)
* it.po: New version from Marco
Fri Mar 13 09:43:19 1998 Werner Koch (wk@isil.d.shuttle.de)
* it.po: New
diff --git a/po/de.glo b/po/de.glo
index e8082f02d..960740438 100644
--- a/po/de.glo
+++ b/po/de.glo
@@ -1,97 +1,99 @@
# Glossary for GnuPG german translation
# Copyright (C) 1998 Free Software Foundation, Inc.
# Walter Koch <walterk@dip.de>, 1998.
# This is just a textfile for your information.
-# It will _not_ be read or processed automatically by any program
+# It will _not_ be read or processed automatically by any program
........ Authentisierung
-algorithm Verfahren
+algorithm Verfahren
anonymous ungenannter
armor ASCII-Hülle
available vorhanden [besser?: verfügbar]
-bad [signature] falsch[e] Unterschrift
+bad [signature] falsch[e] Unterschrift
bug "Bug (Programmfehler)"
cache Lager [ ob das ernst gemeint ist? :-) ]
certificate Zertifikat
character set Zeichensatz
checksum Prüfsumme
cipher algorithm Verschlüsselungsverfahren
-clearsig header Klartextsignatur-Einleitung
-command Befehl
+clearsig header Klartextsignatur-Einleitung
+command Befehl
compress algorithm Komprimierverfahren *
core dump core-dump-Datei
corrupted beschädigter
-dash escaped mit Bindestrich \"escapte\"
+dash escaped mit Bindestrich \"escapte\"
decryption Enschlüsselung
-DEK ???
+DEK ???
delete entfernen
depreciated nicht viel wert
digest algorithm Hashmethode
disabled abgeschaltet
encrypted verschlüsselte
expire date Verfallsdatum
failed fehlgeschlagen
-fingerprint Fingerabdruck
+fingerprint Fingerabdruck
for-your-eyes-only Vertraulichkeit (\"for-your-eyes-only\")
generated erzeugter
good certificate Korrektes Zertifikat
handle benutzt
hint Tip
key-ID Schlüssel-ID
keyblock Schlüsselblock
keyring Schlüsselbund
main key Hauptschlüssel
maintenance utility Wartungs-Hilfsprogramm
malformed ungünstig aufgebaute
message Botschaft
-mode Modus, Methode *
+mode Modus, Methode *
move schieben
note Hinweis
okay in Ordnung
Ooops Huch
original Ursprünglicher
ownertrust \"Owner trust\"
packet Paket
packet type Pakettyp
passphrase Mantra
preference items ????
preferences Einstellungen
preferred bevorzugt
primary keys Hauptschlüssel
protection algorithm Schutzverfahren
pubkey algorithm Public-Key Verfahren (*)
public key öffentlicher Schüssel
-public key algorithm Public-Key Verfahren
-radix64 radix64
+public key algorithm Public-Key Verfahren
+radix64 radix64
retry ????
revo... Widerruf
secondary key Zweitschlüssel
secret key geheimer Schlüssel
-self-signature Eigenbeglaubigung
+self-signature Eigenbeglaubigung
sender Absender
sign user id User-ID beglaubigen *
-signature (files) Unterschrift *
-signature (keys) Beglaubigung *
-simple S2K mode ????
-skipped übergangen, übersprungen, ignoriert
-stdin - stdin
-terminal charset Terminalzeichensatz
+signature (files) Unterschrift *
+signature (keys) Beglaubigung *
+simple S2K mode ????
+skipped übergangen, übersprungen, ignoriert
+stdin - stdin
+terminal charset Terminalzeichensatz
throw verwerfe
Timestamp conflict Zeitangaben differieren
Trust-DB 'Trust'-Datenbank
-trusted - vertrauenswürdig
-trustvalues - trustvalues
+trusted - vertrauenswürdig
+trustvalues - trustvalues
trying Versuch
type [message] [Botschaft] eintippen
ulimately [trust] uneingeschränktes [Vertrauen]
-update Ändern, Änderung
-User - User
+update Ändern, Änderung
+User - User
user ID User-ID
user IDs User-IDs
username Username
-untrusted - nichtvertruenswürdigen
-warning Warnung
+untrusted - nichtvertruenswürdigen
+warning Warnung
weak key unsicherer Schlüssel
(*) Uneinheitlich verwendet
- - Gefällt mir nicht so toll
\ No newline at end of file
+ - Gefällt mir nicht so toll
+
+
diff --git a/po/de.po b/po/de.po
index 0cea6db8f..49c0d7f39 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,3349 +1,3425 @@
# GnuPG german translation
# Copyright (C) 1998 Free Software Foundation, Inc.
# Walter Koch <walterk@dip.de>, 1998.
#
msgid ""
msgstr ""
-"POT-Creation-Date: 1999-01-09 22:24+0100\n"
+"POT-Creation-Date: 1999-01-20 22:45+0100\n"
"PO-Revision-Date: 1998-12-27 13:34+0100\n"
"Last-Translator: Walter Koch <walterk@mail.dip.de>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Date: 1998-01-26 22:08:36+0100\n"
"From: Werner Koch <wk@frodo>\n"
"Xgettext-Options: --default-domain=gnupg --directory=.. --add-comments "
"--keyword=_ --keyword=N_ --files-from=./POTFILES.in\n"
"Files: util/secmem.c util/argparse.c cipher/random.c cipher/rand-dummy.c "
"cipher/rand-unix.c cipher/rand-w32.c g10/g10.c g10/pkclist.c g10/keygen.c "
"g10/decrypt.c g10/encode.c g10/import.c g10/keyedit.c g10/keylist.c "
"g10/mainproc.c g10/passphrase.c g10/plaintext.c g10/pref.c g10/seckey-cert.c "
"g10/sig-check.c g10/sign.c g10/trustdb.c g10/verify.c\n"
#: util/secmem.c:77
msgid "Warning: using insecure memory!\n"
msgstr ""
"Warnung: Sensible Daten könnten auf Platte ausgelagert werden.\n"
" Um dies zu vermeiden, kann das Programm suid(root) installiert werden.\n"
" Bitte wenden Sie sich hierzu an den Systemadministrator.\n"
#: util/miscutil.c:143
msgid "yes"
msgstr "ja"
#: util/miscutil.c:144
msgid "yY"
msgstr "jJyY"
#: util/errors.c:54
msgid "general error"
msgstr "Allgemeiner Fehler"
#: util/errors.c:55
msgid "unknown packet type"
msgstr "Unbekannter Pakettyp"
#: util/errors.c:56
msgid "unknown version"
msgstr "Unbekannte Version"
#: util/errors.c:57
msgid "unknown pubkey algorithm"
msgstr "Unbekanntes Public-Key Verfahren"
#: util/errors.c:58
msgid "unknown digest algorithm"
msgstr "Unbekanntes Hashverfahren"
#: util/errors.c:59
msgid "bad public key"
msgstr "Falscher öffentlicher Schüssel"
#: util/errors.c:60
msgid "bad secret key"
msgstr "Falscher geheimer Schlüssel"
#: util/errors.c:61
msgid "bad signature"
msgstr "Falsche Unterschrift"
#: util/errors.c:62
msgid "checksum error"
msgstr "Prüfsummen-Fehler"
#: util/errors.c:63
msgid "bad passphrase"
msgstr "Falsches Mantra"
#: util/errors.c:64
msgid "public key not found"
msgstr "Öffentlicher Schlüssel nicht gefunden"
#: util/errors.c:65
msgid "unknown cipher algorithm"
msgstr "Unbekanntes Verschlüsselungsverfahren"
#: util/errors.c:66
msgid "can't open the keyring"
msgstr "Der Schlüsselbund kann nicht geöffnet werden"
#: util/errors.c:67
msgid "invalid packet"
msgstr "Ungültiges Paket"
#: util/errors.c:68
msgid "invalid armor"
msgstr "Ungültige ASCII-Hülle"
#: util/errors.c:69
msgid "no such user id"
msgstr "Keine solche User-ID"
#: util/errors.c:70
msgid "secret key not available"
msgstr "Geheimer Schlüssel ist nicht vorhanden"
#: util/errors.c:71
msgid "wrong secret key used"
msgstr "Falscher geheimer Schlüssel benutzt"
#: util/errors.c:72
msgid "not supported"
msgstr "Wird nicht unterstützt"
#: util/errors.c:73
msgid "bad key"
msgstr "Falscher Schlüssel"
#: util/errors.c:74
msgid "file read error"
msgstr "Dateilesefehler"
#: util/errors.c:75
msgid "file write error"
msgstr "Dateischreibfehler"
#: util/errors.c:76
msgid "unknown compress algorithm"
msgstr "Unbekanntes Komprimierverfahren"
#: util/errors.c:77
msgid "file open error"
msgstr "Fehler beim Öffnen der Datei"
#: util/errors.c:78
msgid "file create error"
msgstr "Fehler beim Erzeugen der Datei"
#: util/errors.c:79
msgid "invalid passphrase"
msgstr "Ungültiges Mantra"
#: util/errors.c:80
msgid "unimplemented pubkey algorithm"
msgstr "Öffentliches Schlüsselverfahren ist nicht implementiert."
#: util/errors.c:81
msgid "unimplemented cipher algorithm"
msgstr "Verschlüsselungsverfahren ist nicht implementiert"
#: util/errors.c:82
msgid "unknown signature class"
msgstr "Unbekannte Unterschriftenklasse"
#: util/errors.c:83
msgid "trust database error"
msgstr "Fehler in der Trust-DB"
#: util/errors.c:84
msgid "bad MPI"
msgstr "Falsche MPI"
#: util/errors.c:85
msgid "resource limit"
msgstr "festdefinierte Resourcenobergrenze erreicht"
#: util/errors.c:86
msgid "invalid keyring"
msgstr "Ungültiger Schlüsselbund"
#: util/errors.c:87
msgid "bad certificate"
msgstr "Falsches Zertifikat"
#: util/errors.c:88
msgid "malformed user id"
msgstr "Ungünstig aufgebaute User-ID"
#: util/errors.c:89
msgid "file close error"
msgstr "Fehler beim Schließen der Datei"
#: util/errors.c:90
msgid "file rename error"
msgstr "Fehler beim Umbenennen einer Datei"
#: util/errors.c:91
msgid "file delete error"
msgstr "Fehler beim Löschen einer Datei"
#: util/errors.c:92
msgid "unexpected data"
msgstr "Unerwartete Daten"
#: util/errors.c:93
msgid "timestamp conflict"
msgstr "Zeitangaben differieren"
#: util/errors.c:94
msgid "unusable pubkey algorithm"
msgstr "Unbenutzbares öffentliches Schlüsselverfahren"
#: util/errors.c:95
msgid "file exists"
msgstr "Datei existiert bereits"
#: util/errors.c:96
msgid "weak key"
msgstr "Unsicherer Schlüssel"
+#: util/errors.c:97
+#, fuzzy
+msgid "invalid argument"
+msgstr "Ungültige ASCII-Hülle"
+
+#: util/errors.c:98
+#, fuzzy
+msgid "bad URI"
+msgstr "Falsche MPI"
+
+#: util/errors.c:99
+#, fuzzy
+msgid "unsupported URI"
+msgstr "Wird nicht unterstützt"
+
+#: util/errors.c:100
+#, fuzzy
+msgid "network error"
+msgstr "Allgemeiner Fehler"
+
#: util/logger.c:178
#, c-format
msgid "... this is a bug (%s:%d:%s)\n"
msgstr "... dies ist ein Bug (Programmfehler) (%s:%d:%s)\n"
#: util/logger.c:184
#, c-format
msgid "you found a bug ... (%s:%d)\n"
msgstr "Sie haben eine Bug (Programmfehler) gefunden ... (%s:%d)\n"
-#: cipher/random.c:405
+#: cipher/random.c:412
msgid "WARNING: using insecure random number generator!!\n"
msgstr ""
"WARNUNG: Der Zufallszahlengenerator erzeugt keine echten Zufallszahlen!\n"
-#: cipher/random.c:406
+#: cipher/random.c:413
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 ""
"Der Zufallszahlengenerator (RNG) ist lediglich ein \"kludge\", damit das\n"
"Programms überhaupt läuft - es ist KEINESFALLS ein starker RNG!\n"
"\n"
"BENUTZEN SIE DIE DURCH DIESES PROGRAMM ERZEUGTEN DATEN NICHT!\n"
"\n"
#: cipher/rndlinux.c:118
#, c-format
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"
"Es sind nicht genügend Zufallswerte vorhanden. Bitte führen Sie andere\n"
"Arbeiten durch, damit das Betriebssystem weitere Entropie sammeln kann!\n"
"(Es werden noch %d Byte benötigt.)\n"
-#: g10/g10.c:160
+#: g10/g10.c:163
msgid ""
"@Commands:\n"
" "
msgstr ""
"@Befehle:\n"
" "
-#: g10/g10.c:163
+#: g10/g10.c:166
msgid "|[file]|make a signature"
msgstr "|[file]|Eine Unterschrift erzeugen"
-#: g10/g10.c:164
+#: g10/g10.c:167
msgid "|[file]|make a clear text signature"
msgstr "|[file]|Eine Klartextunterschrift erzeugen"
-#: g10/g10.c:165
+#: g10/g10.c:168
msgid "make a detached signature"
msgstr "Eine abgetrennte Unterschrift erzeugen"
-#: g10/g10.c:166
+#: g10/g10.c:169
msgid "encrypt data"
msgstr "Daten verschlüsseln"
-#: g10/g10.c:167
+#: g10/g10.c:170
msgid "encryption only with symmetric cipher"
msgstr "Daten nur symmetrisch verschlüsseln"
-#: g10/g10.c:168
+#: g10/g10.c:171
msgid "store only"
msgstr "Nur speichern"
-#: g10/g10.c:169
+#: g10/g10.c:172
msgid "decrypt data (default)"
msgstr "Daten entschlüsseln (Voreinstellung)"
-#: g10/g10.c:170
+#: g10/g10.c:173
msgid "verify a signature"
msgstr "Signatur prüfen"
-#: g10/g10.c:172
+#: g10/g10.c:175
msgid "list keys"
msgstr "Liste der Schlüssel"
-#: g10/g10.c:173
+#: g10/g10.c:176
msgid "list keys and signatures"
msgstr "Liste der Schlüssel und ihrer Signaturen"
-#: g10/g10.c:174
+#: g10/g10.c:177
msgid "check key signatures"
msgstr "Signaturen der Schlüssel prüfen"
-#: g10/g10.c:175
+#: g10/g10.c:178
msgid "list keys and fingerprints"
msgstr "Liste der Schlüssel und ihrer \"Fingerabdrücke\""
-#: g10/g10.c:176
+#: g10/g10.c:179
msgid "list secret keys"
msgstr "Liste der geheimen Schlüssel"
-#: g10/g10.c:178
+#: g10/g10.c:181
msgid "generate a new key pair"
msgstr "Ein neues Schlüsselpaar erzeugen"
-#: g10/g10.c:180
+#: g10/g10.c:183
msgid "remove key from the public keyring"
msgstr "Schlüssel entfernen"
-#: g10/g10.c:182
+#: g10/g10.c:185
msgid "sign or edit a key"
msgstr "Unterschreiben oder Bearbeiten eines Schlüssels"
-#: g10/g10.c:183
+#: g10/g10.c:186
msgid "generate a revocation certificate"
msgstr "Ein Schlüsselwiderruf-Zertifikat erzeugen"
-#: g10/g10.c:185
+#: g10/g10.c:188
msgid "export keys"
msgstr "Schlüssel exportieren"
-#: g10/g10.c:188
+#: g10/g10.c:189
+msgid "export keys to a key server"
+msgstr ""
+
+#: g10/g10.c:192
msgid "import/merge keys"
msgstr "Schlüssel importieren/kombinieren"
-#: g10/g10.c:190
+#: g10/g10.c:194
msgid "list only the sequence of packets"
msgstr "Lediglich die Struktur der Datenpakete anzeigen"
-#: g10/g10.c:193
+#: g10/g10.c:197
msgid "export the ownertrust values"
msgstr "Exportieren der \"Owner trust\" Werte"
-#: g10/g10.c:195
+#: g10/g10.c:199
msgid "import ownertrust values"
msgstr "Importieren der \"Owner trust\" Werte"
-#: g10/g10.c:197
+#: g10/g10.c:201
msgid "|[NAMES]|update the trust database"
msgstr "|[NAMES]|Ändern der \"Trust\"-Datenbank"
-#: g10/g10.c:199
+#: g10/g10.c:203
msgid "|[NAMES]|check the trust database"
msgstr "|[NAMES]|Überprüfen der \"Trust\"-Datenbank"
-#: g10/g10.c:200
+#: g10/g10.c:204
msgid "fix a corrupted trust database"
msgstr "Reparieren einer beschädigten \"Trust\"-Datenbank"
-#: g10/g10.c:201
+#: g10/g10.c:205
msgid "De-Armor a file or stdin"
msgstr "Datei oder stdin von der ASCII-Hülle befreien"
-#: g10/g10.c:202
+#: g10/g10.c:206
msgid "En-Armor a file or stdin"
msgstr "Datei oder stdin in eine ASCII-Hülle einpacken"
-#: g10/g10.c:203
+#: g10/g10.c:207
msgid "|algo [files]|print message digests"
msgstr "|algo [files]|Message-Digests für die Dateien ausgeben"
-#: g10/g10.c:204
+#: g10/g10.c:208
msgid "print all message digests"
msgstr "Message-Digests für die Eingabedaten ausgeben"
-#: g10/g10.c:211
+#: g10/g10.c:215
msgid ""
"@\n"
"Options:\n"
" "
msgstr ""
"@\n"
"Optionen:\n"
" "
-#: g10/g10.c:213
+#: g10/g10.c:217
msgid "create ascii armored output"
msgstr "Ausgabe mit ASCII-Hülle versehen"
-#: g10/g10.c:215
+#: g10/g10.c:219
msgid "use this user-id to sign or decrypt"
msgstr "Mit dieser User-ID signieren"
-#: g10/g10.c:216
+#: g10/g10.c:220
msgid "use this user-id for encryption"
msgstr "Verschlüsseln für diese User-ID"
-#: g10/g10.c:217
+#: g10/g10.c:221
msgid "|N|set compress level N (0 disables)"
msgstr "Kompressionsstufe auf N setzen (0 = keine Kompr.)"
-#: g10/g10.c:219
+#: g10/g10.c:223
msgid "use canonical text mode"
msgstr "Textmodus benutzen"
-#: g10/g10.c:221
+#: g10/g10.c:225
msgid "use as output file"
msgstr "Als Ausgabedatei benutzen"
-#: g10/g10.c:222
+#: g10/g10.c:226
msgid "verbose"
msgstr "Detaillierte Informationen"
-#: g10/g10.c:223
+#: g10/g10.c:227
msgid "be somewhat more quiet"
msgstr "Etwas weniger Infos"
-#: g10/g10.c:224
+#: g10/g10.c:228
msgid "force v3 signatures"
msgstr "v3 Signaturen erzwingen"
#. { oDryRun, "dry-run", 0, N_("do not make any changes") },
-#: g10/g10.c:226
+#: g10/g10.c:230
msgid "batch mode: never ask"
msgstr "Stapelmodus: Keine Abfragen"
-#: g10/g10.c:227
+#: g10/g10.c:231
msgid "assume yes on most questions"
msgstr "\"Ja\" als Standardantwort annehmen"
-#: g10/g10.c:228
+#: g10/g10.c:232
msgid "assume no on most questions"
msgstr "\"Nein\" als Standardantwort annehmen"
-#: g10/g10.c:229
+#: g10/g10.c:233
msgid "add this keyring to the list of keyrings"
msgstr "Als öffentlichen Schlüsselbund mitbenutzen"
-#: g10/g10.c:230
+#: g10/g10.c:234
msgid "add this secret keyring to the list"
msgstr "Als geheimen Schlüsselbund mitbenutzen"
-#: g10/g10.c:231
+#: g10/g10.c:235
msgid "|NAME|use NAME as default secret key"
msgstr "|NAME|NAME als voreingestellten Schlüssel benutzen"
-#: g10/g10.c:232
+#: g10/g10.c:236
+msgid "|HOST|use this keyserver to lookup keys"
+msgstr ""
+
+#: g10/g10.c:237
msgid "|NAME|set terminal charset to NAME"
msgstr "|NAME|Terminalzeichensatz NAME benutzen"
-#: g10/g10.c:233
+#: g10/g10.c:238
msgid "read options from file"
msgstr "Optionen aus der Datei lesen"
-#: g10/g10.c:235
+#: g10/g10.c:240
msgid "set debugging flags"
msgstr "Debug-Flags einschalten"
-#: g10/g10.c:236
+#: g10/g10.c:241
msgid "enable full debugging"
msgstr "Alle Debug-Flags einschalten"
-#: g10/g10.c:237
+#: g10/g10.c:242
msgid "|FD|write status info to this FD"
msgstr "|FD|Statusinfo auf FD (Dateihandle) ausgeben"
-#: g10/g10.c:238
+#: g10/g10.c:243
msgid "do not write comment packets"
msgstr "Keine Kommentarpakete schreiben"
-#: g10/g10.c:239
+#: g10/g10.c:244
msgid "(default is 1)"
msgstr "Benötigte Vollvertrauen (Voreinstellung 1)"
-#: g10/g10.c:240
+#: g10/g10.c:245
msgid "(default is 3)"
msgstr "Benötigte Teilvertrauen (Voreinstellung 3)"
-#: g10/g10.c:242
+#: g10/g10.c:247
msgid "|KEYID|ulimately trust this key"
msgstr "|KEYID|Diesem Schlüssel uneingeschränkt vertrauen"
-#: g10/g10.c:243
+#: g10/g10.c:248
msgid "|FILE|load extension module FILE"
msgstr "|FILE|Erweiterungsmodul DATEI laden"
-#: g10/g10.c:244
+#: g10/g10.c:249
msgid "emulate the mode described in RFC1991"
msgstr "Den in RFC1991 beschriebenen Modus nachahmen"
-#: g10/g10.c:245
+#: g10/g10.c:250
msgid "|N|use passphrase mode N"
msgstr "|N|Verwenden des Mantra-Modus N"
-#: g10/g10.c:247
+#: g10/g10.c:252
msgid "|NAME|use message digest algorithm NAME for passphrases"
msgstr "|NAME|Das Hashverfahren NAME für Mantras benutzen"
-#: g10/g10.c:249
+#: g10/g10.c:254
msgid "|NAME|use cipher algorithm NAME for passphrases"
msgstr "|NAME|Das Verschlü.verfahren NAME für Mantras benutzen"
-#: g10/g10.c:251
+#: g10/g10.c:256
msgid "|NAME|use cipher algorithm NAME"
msgstr "|NAME|Das Verschlü.verfahren NAME benutzen"
-#: g10/g10.c:252
+#: g10/g10.c:257
msgid "|NAME|use message digest algorithm NAME"
msgstr "|NAME|Das Hashverfahren NAME benutzen"
-#: g10/g10.c:253
+#: g10/g10.c:258
msgid "|N|use compress algorithm N"
msgstr "|N|Die Komprimierverfahren N benutzen"
-#: g10/g10.c:254
+#: g10/g10.c:259
msgid "throw keyid field of encrypted packets"
msgstr "entferne die Absender-ID verschlüsselter Pakete"
-#: g10/g10.c:262
+#: g10/g10.c:267
msgid ""
"@\n"
"Examples:\n"
"\n"
" -se -r Bob [file] sign and encrypt for user Bob\n"
" --clearsign [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"
msgstr ""
"@\n"
"Beispiele:\n"
"\n"
" -se -r Bob [Datei] Signieren und verschlüsseln für Benutzer Bob\n"
" --clearsign [Datei] Eine Klartextsignatur erzeugen\n"
" --detach-sign [Datei] Eine abgetrennte Signatur erzeugen\n"
" --list-keys [Namen] Schlüssel anzeigen\n"
" --fingerprint [Namen] \"Fingerabdrücke\" anzeigen\n"
-#: g10/g10.c:341
+#: g10/g10.c:346
msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
msgstr "Berichte über Bugs (Programmfehler) bitte an <gnupg-bugs@gnu.org>.\n"
-#: g10/g10.c:346
+#: g10/g10.c:351
msgid "Usage: gpgm [options] [files] (-h for help)"
msgstr "Syntax: gpgm [Optionen] [Dateien] (-h für Hilfe)"
-#: g10/g10.c:348
+#: g10/g10.c:353
msgid "Usage: gpg [options] [files] (-h for help)"
msgstr "Aufruf: gpg [Optionen] [Dateien] (-h für Hilfe)"
-#: g10/g10.c:353
+#: g10/g10.c:358
msgid ""
"Syntax: gpgm [options] [files]\n"
"GnuPG maintenance utility\n"
msgstr ""
"Syntax: gpgm [options] [files]\n"
"GnuPG Wartungs-Hilfsprogramm\n"
-#: g10/g10.c:356
+#: g10/g10.c:361
msgid ""
"Syntax: gpg [options] [files]\n"
"sign, check, encrypt or decrypt\n"
"default operation depends on the input data\n"
msgstr ""
"Aufruf: gpg [Optionen] [Dateien]\n"
"Signieren, prüfen, verschlüsseln, entschlüsseln\n"
"Die voreingestellte Operation ist abhängig von den Eingabedaten\n"
-#: g10/g10.c:362
+#: g10/g10.c:367
msgid ""
"\n"
"Supported algorithms:\n"
msgstr ""
"\n"
"Unterstützte Verfahren:\n"
-#: g10/g10.c:437
+#: g10/g10.c:442
msgid "usage: gpgm [options] "
msgstr "Aufruf: gpgm [Optionen] "
-#: g10/g10.c:439
+#: g10/g10.c:444
msgid "usage: gpg [options] "
msgstr "Aufruf: gpg [Optionen] "
-#: g10/g10.c:480
+#: g10/g10.c:485
msgid "conflicting commands\n"
msgstr "Widersprüchliche Befehle\n"
-#: g10/g10.c:618
+#: g10/g10.c:623
#, c-format
msgid "NOTE: no default option file `%s'\n"
msgstr "Hinweis: Keine voreingestellte Optionendatei '%s' vorhanden\n"
-#: g10/g10.c:622
+#: g10/g10.c:627
#, c-format
msgid "option file `%s': %s\n"
msgstr "Optionendatei '%s': %s\n"
-#: g10/g10.c:629
+#: g10/g10.c:634
#, c-format
msgid "reading options from `%s'\n"
msgstr "Optionen werden aus '%s' gelesen\n"
-#: g10/g10.c:782
+#: g10/g10.c:788
#, c-format
msgid "%s is not a valid character set\n"
msgstr "%s ist kein gültiger Zeichensatz.\n"
-#: g10/g10.c:817 g10/g10.c:829
+#: g10/g10.c:824 g10/g10.c:836
msgid "selected cipher algorithm is invalid\n"
msgstr "Das ausgewählte Verschlüsslungsverfahren ist ungültig\n"
-#: g10/g10.c:823 g10/g10.c:835
+#: g10/g10.c:830 g10/g10.c:842
msgid "selected digest algorithm is invalid\n"
msgstr "Das ausgewählte Hashverfahren ist ungültig\n"
-#: g10/g10.c:838
+#: g10/g10.c:845
#, c-format
msgid "compress algorithm must be in range %d..%d\n"
msgstr "Das Komprimierverfahren muß im Bereich %d bis %d liegen\n"
-#: g10/g10.c:840
+#: g10/g10.c:847
msgid "completes-needed must be greater than 0\n"
msgstr "completes-needed müssen größer als 0 sein\n"
-#: g10/g10.c:842
+#: g10/g10.c:849
msgid "marginals-needed must be greater than 1\n"
msgstr "marginals-needed müssen größer als 1 sein\n"
-#: g10/g10.c:844
+#: g10/g10.c:851
msgid "max-cert-depth must be in range 1 to 255\n"
msgstr "max-cert-depth muß im Bereich 1 bis 255 liegen\n"
-#: g10/g10.c:847
+#: g10/g10.c:854
msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
msgstr "Hinweis: Vom \"simple S2K\"-Modus (0) ist strikt abzuraten\n"
-#: g10/g10.c:851
+#: g10/g10.c:858
msgid "invalid S2K mode; must be 0, 1 or 3\n"
msgstr "ungültiger \"simple S2K\"-Modus; Wert muß 0, 1 oder 3 sein\n"
-#: g10/g10.c:934
+#: g10/g10.c:941
#, c-format
msgid "failed to initialize the TrustDB: %s\n"
msgstr "Die Trust-DB kann nicht initialisiert werden: %s\n"
-#: g10/g10.c:940
+#: g10/g10.c:947
msgid "--store [filename]"
msgstr "--store [Dateiname]"
-#: g10/g10.c:948
+#: g10/g10.c:955
msgid "--symmetric [filename]"
msgstr "--symmetric [Dateiname]"
-#: g10/g10.c:956
+#: g10/g10.c:963
msgid "--encrypt [filename]"
msgstr "--encrypt [Dateiname]"
-#: g10/g10.c:969
+#: g10/g10.c:976
msgid "--sign [filename]"
msgstr "--sign [Dateiname]"
-#: g10/g10.c:982
+#: g10/g10.c:989
msgid "--sign --encrypt [filename]"
msgstr "--sign --encrypt [Dateiname]"
-#: g10/g10.c:996
+#: g10/g10.c:1003
msgid "--clearsign [filename]"
msgstr "--clearsign [Dateiname]"
-#: g10/g10.c:1008
+#: g10/g10.c:1015
msgid "--decrypt [filename]"
msgstr "--decrypt [Dateiname]"
-#: g10/g10.c:1017
+#: g10/g10.c:1024
msgid "--edit-key username [commands]"
msgstr "--edit-key Username [Befehle]"
-#: g10/g10.c:1033
+#: g10/g10.c:1040
msgid "--delete-secret-key username"
msgstr "--delete-secret-key Username"
-#: g10/g10.c:1036
+#: g10/g10.c:1043
msgid "--delete-key username"
msgstr "--delete-key Benutzername"
-#: g10/encode.c:216 g10/g10.c:1059 g10/sign.c:301
+#: g10/encode.c:216 g10/g10.c:1066 g10/sign.c:311
#, c-format
msgid "can't open %s: %s\n"
msgstr "'%s' kann nicht geöffnet werden: %s\n"
-#: g10/g10.c:1070
+#: g10/g10.c:1077
msgid "-k[v][v][v][c] [userid] [keyring]"
msgstr "-k[v][v][v][c] [Benutzername] [Keyring]"
-#: g10/g10.c:1127
+#: g10/g10.c:1138
#, c-format
msgid "dearmoring failed: %s\n"
msgstr "Entfernen der ASCII-Hülle ist fehlgeschlagen: %s\n"
-#: g10/g10.c:1135
+#: g10/g10.c:1146
#, c-format
msgid "enarmoring failed: %s\n"
msgstr "Anbringen der ASCII-Hülle ist fehlgeschlagen: %s\n"
-#: g10/g10.c:1201
+#: g10/g10.c:1212
#, c-format
msgid "invalid hash algorithm `%s'\n"
msgstr "Ungültiges Hashverfahren '%s'\n"
-#: g10/g10.c:1280
+#: g10/g10.c:1291
msgid "[filename]"
msgstr "[Dateiname]"
-#: g10/g10.c:1284
+#: g10/g10.c:1295
msgid "Go ahead and type your message ...\n"
msgstr "Auf geht's - Botschaft eintippen ...\n"
-#: g10/decrypt.c:59 g10/g10.c:1287 g10/verify.c:66
+#: g10/decrypt.c:59 g10/g10.c:1298 g10/verify.c:66
#, c-format
msgid "can't open `%s'\n"
msgstr "'%s' kann nicht geöffnet werden\n"
-#: g10/armor.c:321
+#: g10/armor.c:297
#, c-format
msgid "armor: %s\n"
msgstr "ASCII-Hülle: %s\n"
-#: g10/armor.c:344
+#: g10/armor.c:320
msgid "invalid armor header: "
msgstr "Ungültige ASCII-Hülle"
-#: g10/armor.c:351
+#: g10/armor.c:327
msgid "armor header: "
msgstr "ASCII-Hülle: "
-#: g10/armor.c:362
+#: g10/armor.c:338
msgid "invalid clearsig header\n"
msgstr "Ungültige Klartextsignatur-Einleitung\n"
-#: g10/armor.c:414
+#: g10/armor.c:390
msgid "nested clear text signatures\n"
msgstr "verschachtelte Klartextunterschriften\n"
-#: g10/armor.c:530
+#: g10/armor.c:508
msgid "invalid dash escaped line: "
msgstr "Ungültige mit Bindestrich \"escapte\" Zeile: "
-#: g10/armor.c:538
+#: g10/armor.c:516
msgid "unexpected armor:"
msgstr "Unerwartete ASCII-Hülle:"
-#: g10/armor.c:624
+#: g10/armor.c:632
#, c-format
msgid "invalid radix64 character %02x skipped\n"
msgstr "Ungültiges \"radix64\" Zeichen %02x ignoriert\n"
-#: g10/armor.c:654
+#: g10/armor.c:675
msgid "premature eof (no CRC)\n"
msgstr "vorzeitiges Dateiende (keine Prüfsumme)\n"
-#: g10/armor.c:671
+#: g10/armor.c:709
msgid "premature eof (in CRC)\n"
msgstr "vorzeitiges Dateiende (innerhalb der Prüfsumme)\n"
-#: g10/armor.c:675
+#: g10/armor.c:713
msgid "malformed CRC\n"
msgstr "Falsch aufgebaute Prüfsumme\n"
-#: g10/armor.c:679
+#: g10/armor.c:717
#, c-format
msgid "CRC error; %06lx - %06lx\n"
msgstr "Prüfsummenfehler; %06lx - %06lx\n"
-#: g10/armor.c:696
+#: g10/armor.c:734
msgid "premature eof (in Trailer)\n"
msgstr "vorzeitiges Dateiende (im Nachsatz)\n"
-#: g10/armor.c:700
+#: g10/armor.c:738
msgid "error in trailer line\n"
msgstr "Fehler in der Nachsatzzeile\n"
-#: g10/armor.c:961
+#: g10/armor.c:999
msgid "no valid OpenPGP data found.\n"
msgstr "Keine gültigen OpenPGP-Daten gefunden.\n"
-#: g10/armor.c:963
+#: g10/armor.c:1001
#, c-format
msgid "invalid armor: line longer than %d characters\n"
msgstr ""
+#: g10/armor.c:1005
+msgid ""
+"quoted printable character in armor - probably a buggy MTA has been used\n"
+msgstr ""
+
#: g10/pkclist.c:138
#, c-format
msgid ""
"No trust value assigned to %lu:\n"
"%4u%c/%08lX %s \""
msgstr ""
"Es ist kein \"Owner trust\" für %lu definiert:\n"
"%4u%c/%08lX %s \""
#: g10/pkclist.c:148
msgid ""
"Please decide how far you trust this user to correctly\n"
"verify other users' keys (by looking at passports,\n"
"checking fingerprints from different sources...)?\n"
"\n"
" 1 = Don't know\n"
" 2 = I do NOT trust\n"
" 3 = I trust marginally\n"
" 4 = I trust fully\n"
" s = please show me more information\n"
msgstr ""
"Bitte entscheiden Sie, in wieweit Sie diesem User zutrauen,\n"
"den Schlüssel eines anderen Users korrekt zu prüfen (Vergleich mit\n"
"Lictbildausweisen, Vergleich der Fingerabdrücke aus unterschiedlichen\n"
"Quellen ...)?\n"
"\n"
" 1 = Weiß nicht so recht\n"
" 2 = Nee, dem traue ich das nicht zu\n"
" 3 = Ich vertraue ihm normalerweise\n"
" 4 = Ich vertraue ihm vollständig\n"
" s = Bitte weitere Information anzeigen\n"
#: g10/pkclist.c:157
msgid " m = back to the main menu\n"
msgstr " m = Zurück zum Menü\n"
#: g10/pkclist.c:159
msgid " q = quit\n"
msgstr ""
# valid user replies (not including 1..4)
#. a string with valid answers
#: g10/pkclist.c:164
msgid "sSmMqQ"
msgstr "sSmMqQ"
#: g10/pkclist.c:168
msgid "Your decision? "
msgstr "Ihre Auswahl? "
#: g10/pkclist.c:188
msgid "Certificates leading to an ultimately trusted key:\n"
msgstr "Zertifikate führen zu einem letztlich vertrauenswürdigen Schlüssel:\n"
#: g10/pkclist.c:223
msgid ""
"Could not find a valid trust path to the key. Let's see whether we\n"
"can assign some missing owner trust values.\n"
"\n"
msgstr ""
"Für diesen Schlüssel konnte kein gültiger \"Trust Path\" gefunden werden.\n"
"Mal sehen, ob wir sonst irgendwie ein paar fehlende \"Owner trust\" Werte \n"
"ermitteln können.\n"
"\n"
#: g10/pkclist.c:261
msgid ""
"No path leading to one of our keys found.\n"
"\n"
msgstr ""
"Kein Pfad führt zu einen unserer Schlüsseln.\n"
"\n"
#: g10/pkclist.c:263
msgid ""
"No certificates with undefined trust found.\n"
"\n"
msgstr ""
"Keine Zertifikate mit undefinierten Vertrauen gefunden.\n"
"\n"
#: g10/pkclist.c:265
msgid ""
"No trust values changed.\n"
"\n"
msgstr ""
"Keine \"trust\" Werte geändert.\n"
"\n"
#: g10/pkclist.c:280
#, c-format
msgid "key %08lX: key has been revoked!\n"
msgstr "Schlüssel %08lX: Schlüssel wurde widerrufen\n"
#: g10/pkclist.c:286 g10/pkclist.c:381
msgid "Use this key anyway? "
msgstr "Diesen Schlüssel trotzdem benutzen?"
#: g10/pkclist.c:308
#, c-format
msgid "%08lX: key has expired\n"
msgstr "%08lX: Schlüssel ist verfallen!\n"
#: g10/pkclist.c:314
#, c-format
msgid "%08lX: no info to calculate a trust probability\n"
msgstr ""
"%08lX: Keine Infos zur Berechnung der Vertrauenswahrscheinlichkeit "
"vorgefunden\n"
#: g10/pkclist.c:332
#, c-format
msgid "%08lX: We do NOT trust this key\n"
msgstr "%08lX: Wir haben KEIN Vertrauen zu diesem Schlüssel!\n"
#: g10/pkclist.c:338
#, c-format
msgid ""
"%08lX: It is not sure that this key really belongs to the owner\n"
"but it is accepted anyway\n"
msgstr ""
"%08lX: Es ist nicht sicher, daß dieser Schlüssel wirklich dem vorgeblichen\n"
"Besitzer gehört, aber er wird trotzdem akzeptiert\n"
#: g10/pkclist.c:344
msgid "This key probably belongs to the owner\n"
msgstr ""
"Dieser Schlüssel gehört höchstwahrscheinlich dem angegebenen Besitzer\n"
#: g10/pkclist.c:349
msgid "This key belongs to us\n"
msgstr ""
"Dieser Schlüssel gehört uns (da wir nämlich den geheimen Schlüssel dazu "
"haben)\n"
#: g10/pkclist.c:376
msgid ""
"It is NOT certain that the key belongs to its owner.\n"
"If you *really* know what you are doing, you may answer\n"
"the next question with yes\n"
"\n"
msgstr ""
"Es ist NICHT sicher, daß der Schlüssel dem vorgeblichen Besitzer gehört.\n"
"Wenn Sie *wirklich* wissen, was Sie tun, können Sie die nächste\n"
"Frage mit ja beantworten\n"
#: g10/pkclist.c:385
msgid "WARNING: Using untrusted key!\n"
msgstr "WARNUNG: Ein Schlüssel ohne gesichertes Vertrauen wird benutzt!\n"
#: g10/pkclist.c:421
msgid "WARNING: This key has been revoked by its owner!\n"
msgstr "WARNUNG: Dieser Schlüssel wurde von seinem Besitzer widerrufen!\n"
#: g10/pkclist.c:422
msgid " This could mean that the signature is forgery.\n"
msgstr " Das könnte bedeuten, daß die Signatur gefälscht ist.\n"
#: g10/pkclist.c:443
msgid "Note: This key has expired!\n"
msgstr "Hinweis: Dieser Schlüssel ist verfallen!\n"
#: g10/pkclist.c:450
msgid "WARNING: This key is not certified with a trusted signature!\n"
msgstr "WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!\n"
#: g10/pkclist.c:452
msgid ""
" There is no indication that the signature belongs to the owner.\n"
msgstr ""
" Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen "
"Besitzer gehört.\n"
#: g10/pkclist.c:468
msgid "WARNING: We do NOT trust this key!\n"
msgstr "WARNUNG: Wir haben KEIN Vertrauen zu diesem Schlüssel!\n"
#: g10/pkclist.c:469
msgid " The signature is probably a FORGERY.\n"
msgstr " Die Signatur ist wahrscheinlich eine FÄLSCHUNG.\n"
#: g10/pkclist.c:476
msgid ""
"WARNING: This key is not certified with sufficiently trusted signatures!\n"
msgstr ""
"WARNUNG: Dieser Schlüssel ist nicht durch hinreichend vertrauenswürdige "
"Signaturen zertifiziert!\n"
#: g10/pkclist.c:479
msgid " It is not certain that the signature belongs to the owner.\n"
msgstr ""
" Es ist nicht sicher, daß die Signatur wirklich dem vorgeblichen "
"Besitzer gehört.\n"
#: g10/pkclist.c:524
msgid ""
"You did not specify a user ID. (you may use \"-r\")\n"
"\n"
msgstr ""
"Sie gaben keine User-ID angegeben (Benutzen Sie die Option \"-r\").\n"
"\n"
#: g10/pkclist.c:529
msgid "Enter the user ID: "
msgstr "Geben Sie die User-ID ein: "
#: g10/pkclist.c:540
msgid "No such user ID.\n"
msgstr "Keine solche User-ID vorhanden.\n"
#: g10/pkclist.c:574 g10/pkclist.c:601
#, c-format
msgid "%s: skipped: %s\n"
msgstr "%s: übersprungen: %s\n"
#: g10/pkclist.c:582
#, c-format
msgid "%s: error checking key: %s\n"
msgstr "%s: Fehler beim Prüfen des Schlüssels: %s\n"
#: g10/pkclist.c:608
msgid "no valid addressees\n"
msgstr "Keine gültigen Adressaten\n"
#: g10/keygen.c:124
msgid "writing self signature\n"
msgstr "Die Eigenbeglaubigung wird geschrieben\n"
#: g10/keygen.c:162
msgid "writing key binding signature\n"
msgstr "Schreiben der \"key-binding\" Signatur\n"
#: g10/keygen.c:388
msgid "Please select what kind of key you want:\n"
msgstr "Bitte wählen Sie, welche Art von Schlüssel Sie möchten:\n"
#: g10/keygen.c:390
#, c-format
msgid " (%d) DSA and ElGamal (default)\n"
msgstr " (%d) DSA und ElGamal (voreingestellt)\n"
#: g10/keygen.c:391
#, c-format
msgid " (%d) DSA (sign only)\n"
msgstr " (%d) DSA (nur signieren/beglaubigen)\n"
#: g10/keygen.c:393
#, c-format
msgid " (%d) ElGamal (encrypt only)\n"
msgstr " (%d) ElGamal (nur verschlüsseln)\n"
#: g10/keygen.c:394
#, c-format
msgid " (%d) ElGamal (sign and encrypt)\n"
msgstr " (%d) ElGamal (signieren/beglaubigen und verschlüsseln)\n"
#: g10/keygen.c:396
#, c-format
msgid " (%d) ElGamal in a v3 packet\n"
msgstr " (%d) ElGamal in einem v3-Paket\n"
#: g10/keygen.c:401
msgid "Your selection? "
msgstr "Ihre Auswahl? "
#: g10/keygen.c:411
msgid "Do you really want to create a sign and encrypt key? "
msgstr ""
"Möchten Sie wirklich einen Unterschriften-/Verschlüsselungschlüssel "
"erzeugen? "
#: g10/keygen.c:432
msgid "Invalid selection.\n"
msgstr "Ungültige Auswahl.\n"
#: g10/keygen.c:444
#, c-format
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 ""
"Es wird ein neues %s Schlüsselpaar erzeugt.\n"
" kleinste Schlüssellänge ist 768 Bit\n"
" standard Schlüssellänge ist 1024 Bit\n"
" größte sinnvolle Schlüssellänge ist 2048 Bit\n"
#: g10/keygen.c:451
msgid "What keysize do you want? (1024) "
msgstr "Welche Schlüssellänge wünschen Sie? (1024) "
#: g10/keygen.c:456
msgid "DSA only allows keysizes from 512 to 1024\n"
msgstr "DSA erlaubt nur Schlüssellängen von 512 bis 1024\n"
#: g10/keygen.c:458
msgid "keysize too small; 768 is smallest value allowed.\n"
msgstr "zu kurz; 768 ist die kleinste mögliche Schlüssellänge.\n"
#: g10/keygen.c:461
msgid ""
"Keysizes larger than 2048 are not suggested because\n"
"computations take REALLY long!\n"
msgstr ""
"Schlüssellängen größer als 2048 werden nicht empfohlen, da die\n"
"Berechnungen dann WIRKLICH lange brauchen!\n"
#: g10/keygen.c:464
msgid "Are you sure that you want this keysize? "
msgstr "Sind Sie sicher, daß Sie diese Schlüssellänge wünschen? "
#: g10/keygen.c:465
msgid ""
"Okay, but keep in mind that your monitor and keyboard radiation is also very "
"vulnerable to attacks!\n"
msgstr ""
"Gut, aber bitte denken Sie auch daran, daß Monitor und Tastatur Daten "
"abstrahlen und diese leicht mitgelesen werden können.\n"
#: g10/keygen.c:473
msgid "Do you really need such a large keysize? "
msgstr "Brauchen Sie wirklich einen derartig langen Schlüssel? "
#: g10/keygen.c:479
#, c-format
msgid "Requested keysize is %u bits\n"
msgstr "Die verlangte Schlüssellänge beträgt %u Bit\n"
#: g10/keygen.c:482 g10/keygen.c:486
#, c-format
msgid "rounded up to %u bits\n"
msgstr "aufgerundet auf %u Bit\n"
#: g10/keygen.c:499
msgid ""
"Please specify how long the key should be valid.\n"
" 0 = key does not expire\n"
" <n> = key expires in n days\n"
" <n>w = key expires in n weeks\n"
" <n>m = key expires in n months\n"
" <n>y = key expires in n years\n"
msgstr ""
"Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll.\n"
" 0 = Schlüssel verfällt nie\n"
" <n> = Schlüssel verfällt nach n Tagen\n"
" <n>w = Schlüssel verfällt nach n Wochen\n"
" <n>m = Schlüssel verfällt nach n Monaten\n"
" <n>y = Schlüssel verfällt nach n Jahren\n"
#: g10/keygen.c:514
msgid "Key is valid for? (0) "
msgstr "Der Schlüssel bleibt wie lange gültig? (0) "
#: g10/keygen.c:525
msgid "invalid value\n"
msgstr "Ungültiger Wert.\n"
#: g10/keygen.c:530
msgid "Key does not expire at all\n"
msgstr "Der Schlüssel verfällt nie.\n"
#. print the date when the key expires
#: g10/keygen.c:536
#, c-format
msgid "Key expires at %s\n"
msgstr "Der Schlüssel verfällt am %s\n"
#: g10/keygen.c:542
msgid "Is this correct (y/n)? "
msgstr "Ist dies richtig? (j/n) "
#: g10/keygen.c:584
msgid ""
"\n"
"You need a User-ID to identify your key; the software constructs the user "
"id\n"
"from Real Name, Comment and Email Address in this form:\n"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
msgstr ""
"\n"
"Sie benötigen eine User-ID, um Ihren Schlüssel eindeutig zu machen; das\n"
"Programm baut diese User-ID aus Ihrem echten Namen, einem Kommentar und\n"
"Ihrer E-Mail-Adresse in dieser Form auf:\n"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
#: g10/keygen.c:595
msgid "Real name: "
msgstr "Ihr Name (\"Vorname Nachname\"): "
#: g10/keygen.c:599
msgid "Invalid character in name\n"
msgstr "Ungültiges Zeichen im Namen\n"
#: g10/keygen.c:601
msgid "Name may not start with a digit\n"
msgstr "Der Name darf nicht mit einer Ziffer beginnen.\n"
#: g10/keygen.c:603
msgid "Name must be at least 5 characters long\n"
msgstr "Der Name muß min. 5 Zeichen lang sein.\n"
#: g10/keygen.c:611
msgid "Email address: "
msgstr "E-Mail-Adresse: "
#: g10/keygen.c:623
msgid "Not a valid email address\n"
msgstr "Diese E-Mail-Adresse ist ungültig\n"
#: g10/keygen.c:631
msgid "Comment: "
msgstr "Kommentar: "
#: g10/keygen.c:637
msgid "Invalid character in comment\n"
msgstr "Ungültiges Zeichen im Kommentar.\n"
#: g10/keygen.c:657
#, c-format
msgid ""
"You selected this USER-ID:\n"
" \"%s\"\n"
"\n"
msgstr ""
"Sie haben diese User-ID gewählt:\n"
" \"%s\"\n"
"\n"
#: g10/keygen.c:660
msgid "NnCcEeOoQq"
msgstr "NnKkEeFfBb"
#: g10/keygen.c:670
msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
msgstr "Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden? "
#: g10/keygen.c:722
msgid ""
"You need a Passphrase to protect your secret key.\n"
"\n"
msgstr ""
"Sie benötigen ein Mantra, um den geheimen Schlüssel zu schützen.\n"
"\n"
#: g10/keyedit.c:389 g10/keygen.c:730
msgid "passphrase not correctly repeated; try again.\n"
msgstr "Mantra wurde nicht richtig wiederholt; noch einmal versuchen.\n"
#: g10/keygen.c:736
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 ""
"Sie möchten kein Mantra - Dies ist *nicht* zu empfehlen!\n"
"Es ist trotzdem möglich. Sie können Ihr Mantra jederzeit\n"
"ändern, indem sie dieses Programm mit dem Befehl \"--edit-key\"\n"
"aufrufen.\n"
"\n"
#: g10/keygen.c:757
msgid ""
"We need to generate a lot of random bytes. It is a good idea to perform\n"
"some other action (work in another window, move the mouse, utilize the\n"
"network and the disks) during the prime generation; this gives the random\n"
"number generator a better chance to gain enough entropy.\n"
msgstr ""
"Wir müßen eine ganze Menge Zufallszahlen erzeugen. Sie können dies\n"
"unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas\n"
"tippen oder irgendwelche anderen Programme benutzen.\n"
#: g10/keygen.c:827
msgid "Key generation can only be used in interactive mode\n"
msgstr ""
"Die Schlüsselerzeugung kann nur im interaktiven Modus benutzt werden.\n"
#: g10/keygen.c:835
msgid "DSA keypair will have 1024 bits.\n"
msgstr "Der DSA Schlüssel wird 1024 Bits haben.\n"
#: g10/keygen.c:841
msgid "Key generation cancelled.\n"
msgstr "Schlüsselerzeugung abgebrochen.\n"
#: g10/keygen.c:851
#, c-format
msgid "writing public certificate to `%s'\n"
msgstr "schreiben des öffentlichen Zertifikats nach '%s'\n"
#: g10/keygen.c:852
#, c-format
msgid "writing secret certificate to `%s'\n"
msgstr "schreiben des geheimen Zertifikats nach '%s'\n"
#: g10/keygen.c:929
msgid "public and secret key created and signed.\n"
msgstr "Öffentlichen und geheimen Schlüssel erzeugt und signiert.\n"
#: g10/keygen.c:931
+#, fuzzy
msgid ""
"Note that this key cannot be used for encryption. You may want to use\n"
-"the command \"--add-key\" to generate a secondary key for this purpose.\n"
+"the command \"--edit-key\" to generate a secondary key for this purpose.\n"
msgstr ""
"Bitte beachten Sie, daß dieser Schlüssel nicht zum Verschlüsseln benutzt\n"
"werden kann. Sie können aber mit dem Befehl \"--add-key\" einen\n"
"Zweitschlüssel zu diesem Schlüssel hinzufügen.\n"
-#: g10/keygen.c:945 g10/keygen.c:1030
+#: g10/keygen.c:945 g10/keygen.c:1044
#, c-format
msgid "Key generation failed: %s\n"
msgstr "Schlüsselerzeugung fehlgeschlagen: %s\n"
-#: g10/keygen.c:1008
+#: g10/keygen.c:989 g10/sig-check.c:172 g10/sign.c:52
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu second in future (time warp or clock problem)\n"
+msgstr ""
+"Öffentlicher Schlüssel wurde in der Zukunft %lu %s erzeugt (Zeitreise oder "
+"Uhren stimmen nicht überein)\n"
+
+#: g10/keygen.c:991 g10/sig-check.c:174 g10/sign.c:54
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu seconds in future (time warp or clock problem)\n"
+msgstr ""
+"Öffentlicher Schlüssel wurde in der Zukunft %lu %s erzeugt (Zeitreise oder "
+"Uhren stimmen nicht überein)\n"
+
+#: g10/keygen.c:1022
msgid "Really create? "
msgstr "Wirklich erzeugen? "
#: g10/encode.c:88 g10/openfile.c:81 g10/openfile.c:158 g10/tdbio.c:459
#: g10/tdbio.c:510
#, c-format
msgid "%s: can't open: %s\n"
msgstr "%s: kann nicht geöffnet werden: %s\n"
#: g10/encode.c:107
#, c-format
msgid "error creating passphrase: %s\n"
msgstr "Fehler beim Erzeugen des Mantras: %s\n"
#: g10/encode.c:155 g10/encode.c:269
#, c-format
msgid "%s: WARNING: empty file\n"
msgstr "%s: WARNUNG: Leere Datei\n"
#: g10/encode.c:222
#, c-format
msgid "reading from `%s'\n"
msgstr "Lesen von '%s'\n"
#: g10/encode.c:397
#, c-format
msgid "%s/%s encrypted for: %s\n"
msgstr "%s verschlüsselt für: %s\n"
-#: g10/export.c:114
+#: g10/export.c:147
#, c-format
msgid "%s: user not found: %s\n"
msgstr "%s: Benutzer nicht gefunden: %s\n"
-#: g10/export.c:123
+#: g10/export.c:156
#, c-format
msgid "certificate read problem: %s\n"
msgstr "Zertifikat Leseproblem: %s\n"
-#: g10/export.c:132
+#: g10/export.c:165
#, c-format
msgid "key %08lX: not a rfc2440 key - skipped\n"
msgstr "Schlüssel %08lX: dies ist kein rfc2440-Schüssel - übersprungen\n"
-#: g10/export.c:174
+#: g10/export.c:203
msgid "WARNING: nothing exported\n"
msgstr "WARNUNG: Nichts exportiert\n"
#: g10/getkey.c:164
msgid "too many entries in pk cache - disabled\n"
msgstr "zu viele Einträge im pk-Lager - abgeschaltet\n"
#: g10/getkey.c:294
msgid "too many entries in unk cache - disabled\n"
msgstr "zu viele Einträge im unk-Lager - abgeschaltet\n"
#: g10/getkey.c:1038
#, c-format
msgid "using secondary key %08lX instead of primary key %08lX\n"
msgstr ""
"der Zweitschlüssel %08lX wird anstelle des Hauptschlüssels %08lX verwendet\n"
-#: g10/import.c:129 g10/trustdb.c:1180
+#: g10/import.c:117 g10/trustdb.c:1180
#, c-format
msgid "can't open file: %s\n"
msgstr "Kann die Datei nicht öffnen: %s\n"
-#: g10/import.c:148
+#: g10/import.c:165
#, c-format
msgid "skipping block of type %d\n"
msgstr "überspringe den Block vom Typ %d\n"
-#: g10/import.c:155 g10/trustdb.c:1474 g10/trustdb.c:1543
+#: g10/import.c:172 g10/trustdb.c:1474 g10/trustdb.c:1543
#, c-format
msgid "%lu keys so far processed\n"
msgstr "%lu Schlüssel bislang bearbeitet\n"
-#: g10/import.c:160 g10/trustdb.c:1256
+#: g10/import.c:177 g10/trustdb.c:1256
#, c-format
msgid "read error: %s\n"
msgstr "Lesefehler: %s\n"
-#: g10/import.c:162
+#: g10/import.c:179
#, c-format
msgid "Total number processed: %lu\n"
msgstr "Anzahl insgesamt bearbeiteter Schlüssel: %lu\n"
-#: g10/import.c:164
+#: g10/import.c:181
#, c-format
msgid " w/o user IDs: %lu\n"
msgstr " ohne User-ID: %lu\n"
-#: g10/import.c:166
+#: g10/import.c:183
#, c-format
msgid " imported: %lu"
msgstr " importiert: %lu"
-#: g10/import.c:172
+#: g10/import.c:189
#, c-format
msgid " unchanged: %lu\n"
msgstr " unverändert: %lu\n"
-#: g10/import.c:174
+#: g10/import.c:191
#, c-format
msgid " new user IDs: %lu\n"
msgstr " neue User-IDs: %lu\n"
-#: g10/import.c:176
+#: g10/import.c:193
#, c-format
msgid " new subkeys: %lu\n"
msgstr " neue Unterschlüssel: %lu\n"
-#: g10/import.c:178
+#: g10/import.c:195
#, c-format
msgid " new signatures: %lu\n"
msgstr " neue Signaturen: %lu\n"
-#: g10/import.c:180
+#: g10/import.c:197
#, c-format
msgid " new key revocations: %lu\n"
msgstr "neue Schlüsselwiderrufe: %lu\n"
-#: g10/import.c:182
+#: g10/import.c:199
#, c-format
msgid " secret keys read: %lu\n"
msgstr " gelesene geheime Schl.: %lu\n"
-#: g10/import.c:184
+#: g10/import.c:201
#, c-format
msgid " secret keys imported: %lu\n"
msgstr "geheime Schlüssel importiert: %lu\n"
-#: g10/import.c:186
+#: g10/import.c:203
#, c-format
msgid " secret keys unchanged: %lu\n"
msgstr " unveränderte geh.Schl.: %lu\n"
-#: g10/import.c:328 g10/import.c:520
+#: g10/import.c:343 g10/import.c:535
#, c-format
msgid "key %08lX: no user id\n"
msgstr "Schlüssel %08lX: Keine User-ID\n"
-#: g10/import.c:339
+#: g10/import.c:354
#, c-format
msgid "key %08lX: no valid user ids\n"
msgstr "Schlüssel %08lX: Keine gültigen User-IDs\n"
-#: g10/import.c:341
+#: g10/import.c:356
msgid "this may be caused by a missing self-signature\n"
msgstr "dies könnte durch fehlende Eigenbeglaubigung verursacht worden sein\n"
-#: g10/import.c:352 g10/import.c:588
+#: g10/import.c:367 g10/import.c:603
#, c-format
msgid "key %08lX: public key not found: %s\n"
msgstr "Schlüssel %08lX: Öffentlicher Schlüssel nicht gefunden: %s\n"
-#: g10/import.c:358
+#: g10/import.c:373
msgid "no default public keyring\n"
msgstr "Kein voreingestellter öffentlicher Schlüsselbund\n"
-#: g10/import.c:362 g10/openfile.c:105 g10/sign.c:205 g10/sign.c:592
+#: g10/import.c:377 g10/openfile.c:105 g10/sign.c:215 g10/sign.c:601
#, c-format
msgid "writing to `%s'\n"
msgstr "Schreiben nach '%s'\n"
-#: g10/import.c:366 g10/import.c:426 g10/import.c:642
+#: g10/import.c:381 g10/import.c:441 g10/import.c:657
#, c-format
msgid "can't lock public keyring: %s\n"
msgstr "kann öffentlichen Schlüsselbund nicht sperren: %s\n"
-#: g10/import.c:369
+#: g10/import.c:384
#, c-format
msgid "can't write to keyring: %s\n"
msgstr "kann Schlüsselbund nicht schreiben: %s\n"
-#: g10/import.c:373
+#: g10/import.c:388
#, c-format
msgid "key %08lX: public key imported\n"
msgstr "Schlüssel %08lX: Öffentlicher Schlüssel importiert\n"
-#: g10/import.c:386
+#: g10/import.c:401
#, c-format
msgid "key %08lX: doesn't match our copy\n"
msgstr "Schlüssel %08lX: Stimmt nicht mit unserer Kopie überein\n"
-#: g10/import.c:399 g10/import.c:597
+#: g10/import.c:414 g10/import.c:612
#, c-format
msgid "key %08lX: can't locate original keyblock: %s\n"
msgstr ""
"Schlüssel %08lX: der lokale originale Schlüsselblocks wurde nicht gefunden: "
"%s\n"
-#: g10/import.c:406 g10/import.c:604
+#: g10/import.c:421 g10/import.c:619
#, c-format
msgid "key %08lX: can't read original keyblock: %s\n"
msgstr ""
"Schlüssel %08lX: Lesefehler im lokalen originalen Schlüsselblocks: %s\n"
-#: g10/import.c:423 g10/import.c:535 g10/import.c:639
+#: g10/import.c:438 g10/import.c:550 g10/import.c:654
msgid "writing keyblock\n"
msgstr "Schreiben des Schlüsselblocks\n"
-#: g10/import.c:429 g10/import.c:645
+#: g10/import.c:444 g10/import.c:660
#, c-format
msgid "can't write keyblock: %s\n"
msgstr "Der Schlüsselblock kann nicht geschrieben werden: %s\n"
-#: g10/import.c:434
+#: g10/import.c:449
#, c-format
msgid "key %08lX: 1 new user-id\n"
msgstr "Schlüssel %08lX: 1 neue User-ID\n"
-#: g10/import.c:437
+#: g10/import.c:452
#, c-format
msgid "key %08lX: %d new user-ids\n"
msgstr "Schlüssel %08lX: %d neue User-IDs\n"
-#: g10/import.c:440
+#: g10/import.c:455
#, c-format
msgid "key %08lX: 1 new signature\n"
msgstr "Schlüssel %08lX: 1 neue Signatur\n"
-#: g10/import.c:443
+#: g10/import.c:458
#, c-format
msgid "key %08lX: %d new signatures\n"
msgstr "Schlüssel %08lX: %d neue Signaturen\n"
-#: g10/import.c:446
+#: g10/import.c:461
#, c-format
msgid "key %08lX: 1 new subkey\n"
msgstr "Schlüssel %08lX: 1 neuer Unterschlüssel\n"
-#: g10/import.c:449
+#: g10/import.c:464
#, c-format
msgid "key %08lX: %d new subkeys\n"
msgstr "Schlüssel %08lX: %d neue Unterschlüssel\n"
-#: g10/import.c:459
+#: g10/import.c:474
#, c-format
msgid "key %08lX: not changed\n"
msgstr "Schlüssel %08lX: Nicht geändert\n"
-#: g10/import.c:538
+#: g10/import.c:553
#, c-format
msgid "can't lock secret keyring: %s\n"
msgstr "kann geheimen Schlüsselbund nicht sperren: %s\n"
-#: g10/import.c:541
+#: g10/import.c:556
#, c-format
msgid "can't write keyring: %s\n"
msgstr "kann Schlüsselbund nicht schreiben: %s\n"
#. we are ready
-#: g10/import.c:544
+#: g10/import.c:559
#, c-format
msgid "key %08lX: secret key imported\n"
msgstr "Schlüssel %08lX: Geheimer Schlüssel importiert\n"
#. we can't merge secret keys
-#: g10/import.c:548
+#: g10/import.c:563
#, c-format
msgid "key %08lX: already in secret keyring\n"
msgstr "Schlüssel %08lX: Ist bereits im geheimen Schlüsselbund\n"
-#: g10/import.c:553
+#: g10/import.c:568
#, c-format
msgid "key %08lX: secret key not found: %s\n"
msgstr "Schlüssel %08lX: geheimer Schlüssel nicht gefunden: %s\n"
-#: g10/import.c:582
+#: g10/import.c:597
#, c-format
msgid "key %08lX: no public key - can't apply revocation certificate\n"
msgstr ""
"Schlüssel %08lX: Kein öffentlicher Schlüssel - der Schlüsselwiderruf kann "
"nicht angebracht werden\n"
-#: g10/import.c:615
+#: g10/import.c:630
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - rejected\n"
msgstr "Schlüssel %08lX: Ungültiges Widerrufzertifikat: %s - zurückgewiesen\n"
-#: g10/import.c:649
+#: g10/import.c:664
#, c-format
msgid "key %08lX: revocation certificate imported\n"
msgstr "Schlüssel %08lX: Widerrufzertifikat importiert\n"
-#: g10/import.c:680
+#: g10/import.c:698
#, c-format
msgid "key %08lX: no user-id for signature\n"
msgstr "Schlüssel %08lX: Keine User-ID für Signatur\n"
-#: g10/import.c:687
+#: g10/import.c:705 g10/import.c:729
#, c-format
msgid "key %08lX: unsupported public key algorithm\n"
msgstr "Schlüssel %08lX: Nicht unterstützetes Public-Key-Verfahren\n"
-#: g10/import.c:688
+#: g10/import.c:706
#, c-format
msgid "key %08lX: invalid self-signature\n"
msgstr "Schlüssel %08lX: Ungültige Eigenbeglaubigung\n"
-#: g10/import.c:717
+#: g10/import.c:722
+#, fuzzy, c-format
+msgid "key %08lX: no subkey for key binding\n"
+msgstr "Schlüssel %08lX.%lu: Korrekte Unterschlüssel-Anbindung\n"
+
+#: g10/import.c:730
+#, fuzzy, c-format
+msgid "key %08lX: invalid subkey binding\n"
+msgstr "Schlüssel %08lX.%lu: Ungültige Unterschlüssel-Anbindung\n"
+
+#: g10/import.c:761
#, c-format
msgid "key %08lX: skipped userid '"
msgstr "Schlüssel %08lX: übergehe User-ID '"
-#: g10/import.c:740
+#: g10/import.c:781
+#, fuzzy, c-format
+msgid "key %08lX: skipped subkey\n"
+msgstr "Schlüssel %08lX: 1 neuer Unterschlüssel\n"
+
+#: g10/import.c:800
#, c-format
msgid "key %08lX: revocation certificate at wrong place - skipped\n"
msgstr "Schlüssel %08lX: Widerrufzertifikat an falschem Platz - übergangen\n"
-#: g10/import.c:748
+#: g10/import.c:808
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - skipped\n"
msgstr "Schlüssel %08lX: Ungültiges Widerrufzertifikat: %s - übergangen\n"
-#: g10/import.c:807
+#: g10/import.c:867
#, c-format
msgid "key %08lX: revocation certificate added\n"
msgstr "Schlüssel %08lX: Widerrufzertifikat hinzugefügt\n"
-#: g10/import.c:921 g10/import.c:976
+#: g10/import.c:981 g10/import.c:1036
#, c-format
msgid "key %08lX: our copy has no self-signature\n"
msgstr "Schlüssel %08lX: Unsere Kopie hat keine Eigenbeglaubigung\n"
#: g10/keyedit.c:81
#, c-format
msgid "%s: user not found\n"
msgstr "%s: Benutzer nicht gefunden\n"
#: g10/keyedit.c:164
msgid "[self-signature]"
msgstr "[Eigenbeglaubigung]"
#: g10/keyedit.c:182
msgid "1 bad signature\n"
msgstr "%d schlechte Signaturen\n"
#: g10/keyedit.c:184
#, c-format
msgid "%d bad signatures\n"
msgstr "%d falsche Beglaubigungen\n"
#: g10/keyedit.c:186
msgid "1 signature not checked due to a missing key\n"
msgstr "1 Beglaubigung wegen fehlendem Schlüssel nicht geprüft\n"
#: g10/keyedit.c:188
#, c-format
msgid "%d signatures not checked due to missing keys\n"
msgstr "%d Beglaubigungen wegen fehlenden Schlüsseln nicht geprüft\n"
#: g10/keyedit.c:190
msgid "1 signature not checked due to an error\n"
msgstr "1 Beglaubigung aufgrund von Fehler nicht geprüft\n"
#: g10/keyedit.c:192
#, c-format
msgid "%d signatures not checked due to errors\n"
msgstr "%d Beglaubigungen aufgrund von Fehlern nicht geprüft\n"
#: g10/keyedit.c:194
msgid "1 user id without valid self-signature detected\n"
msgstr "Eine User-ID ohne gültige Eigenbeglaubigung entdeckt\n"
#: g10/keyedit.c:196
#, c-format
msgid "%d user ids without valid self-signatures detected\n"
msgstr "%d User-IDs ohne gültige Eigenbeglaubigung entdeckt\n"
#: g10/keyedit.c:258
#, c-format
msgid "Already signed by key %08lX\n"
msgstr "Ist bereits durch Schlüssel %08lX beglaubigt.\n"
#: g10/keyedit.c:266
#, c-format
msgid "Nothing to sign with key %08lX\n"
msgstr "Nichts zu beglaubigen für Schlüssel %08lX\n"
#: g10/keyedit.c:275
msgid ""
"Are you really sure that you want to sign this key\n"
"with your key: \""
msgstr ""
"Sind Sie wirklich sicher, daß Sie vorstehenden Schlüssel mit Ihrem\n"
"Schlüssel beglaubigen wollen: \""
#: g10/keyedit.c:282
msgid "Really sign? "
msgstr "Wirklich unterschreiben? "
-#: g10/keyedit.c:303 g10/sign.c:65
+#: g10/keyedit.c:303 g10/sign.c:75
#, c-format
msgid "signing failed: %s\n"
msgstr "Beglaubigung fehlgeschlagen: %s\n"
#: g10/keyedit.c:356
msgid "This key is not protected.\n"
msgstr "Dieser Schlüssel ist nicht geschützt.\n"
#: g10/keyedit.c:359
msgid "Key is protected.\n"
msgstr "Schlüssel ist geschützt.\n"
#: g10/keyedit.c:376
#, c-format
msgid "Can't edit this key: %s\n"
msgstr "Dieser Schlüssel kann nicht editiert werden: %s\n"
#: g10/keyedit.c:381
msgid ""
"Enter the new passphrase for this secret key.\n"
"\n"
msgstr ""
"Geben Sie das neue Mantra für diesen geheimen Schlüssel ein.\n"
"\n"
#: g10/keyedit.c:393
msgid ""
"You don't want a passphrase - this is probably a *bad* idea!\n"
"\n"
msgstr ""
"Sie wollen kein Mantra - dies ist bestimmt *keine* gute Idee!\n"
"\n"
#: g10/keyedit.c:396
msgid "Do you really want to do this? "
msgstr "Möchten Sie dies wirklich tun? "
#: g10/keyedit.c:455
msgid "moving a key signature to the correct place\n"
msgstr "schiebe eine Beglaubigung an die richtige Stelle\n"
#: g10/keyedit.c:490
msgid "quit"
msgstr "quit"
#: g10/keyedit.c:490
msgid "quit this menu"
msgstr "Menü verlassen"
#: g10/keyedit.c:491
msgid "q"
msgstr "q"
#: g10/keyedit.c:492
msgid "save"
msgstr "save"
#: g10/keyedit.c:492
msgid "save and quit"
msgstr "speichern und Menü verlassen"
#: g10/keyedit.c:493
msgid "help"
msgstr "help"
#: g10/keyedit.c:493
msgid "show this help"
msgstr "Diese Hilfe zeigen"
#: g10/keyedit.c:495
msgid "fpr"
msgstr "fpr"
#: g10/keyedit.c:495
msgid "show fingerprint"
msgstr "\"Fingerabdruck\" anzeigen"
#: g10/keyedit.c:496
msgid "list"
msgstr "Liste der Schlüssel"
#: g10/keyedit.c:496
msgid "list key and user ids"
msgstr "Schlüssel und User-ID auflisten"
#: g10/keyedit.c:497
msgid "l"
msgstr "l"
#: g10/keyedit.c:498
msgid "uid"
msgstr "uid"
#: g10/keyedit.c:498
msgid "select user id N"
msgstr "User-ID N auswählen"
#: g10/keyedit.c:499
msgid "key"
msgstr "key"
#: g10/keyedit.c:499
msgid "select secondary key N"
msgstr "Zweitschlüssel N auswählen"
#: g10/keyedit.c:500
msgid "check"
msgstr "check"
#: g10/keyedit.c:500
msgid "list signatures"
msgstr "Liste der Signaturen"
#: g10/keyedit.c:501
msgid "c"
msgstr "c"
#: g10/keyedit.c:502
msgid "sign"
msgstr "sign"
#: g10/keyedit.c:502
msgid "sign the key"
msgstr "Den Schlüssel signieren"
#: g10/keyedit.c:503
msgid "s"
msgstr "s"
#: g10/keyedit.c:504
msgid "debug"
msgstr "debug"
#: g10/keyedit.c:505
msgid "adduid"
msgstr "adduid"
#: g10/keyedit.c:505
msgid "add a user id"
msgstr "Eine User-ID hinzufügen"
#: g10/keyedit.c:506
msgid "deluid"
msgstr "deluid"
#: g10/keyedit.c:506
msgid "delete user id"
msgstr "User-ID entfernen"
#: g10/keyedit.c:507
msgid "addkey"
msgstr "addkey"
#: g10/keyedit.c:507
msgid "add a secondary key"
msgstr "Einen Zweitschlüssel hinzufügen"
#: g10/keyedit.c:508
msgid "delkey"
msgstr "delkey"
#: g10/keyedit.c:508
msgid "delete a secondary key"
msgstr "Einen Zweitschlüssel entfernen"
#: g10/keyedit.c:509
msgid "expire"
msgstr "expire"
#: g10/keyedit.c:509
msgid "change the expire date"
msgstr "Ändern des Verfallsdatums"
#: g10/keyedit.c:510
msgid "toggle"
msgstr "toggle"
#: g10/keyedit.c:510
msgid "toggle between secret and public key listing"
msgstr "Umschalten zwischen Anzeige geheimer und öffentlicher Schlüssel"
#: g10/keyedit.c:512
msgid "t"
msgstr "t"
#: g10/keyedit.c:513
msgid "pref"
msgstr "pref"
#: g10/keyedit.c:513
msgid "list preferences"
msgstr "Liste der Voreinstellungen"
#: g10/keyedit.c:514
msgid "passwd"
msgstr "passwd"
#: g10/keyedit.c:514
msgid "change the passphrase"
msgstr "Das Mantra ändern"
#: g10/keyedit.c:515
msgid "trust"
msgstr "trust"
#: g10/keyedit.c:515
msgid "change the ownertrust"
msgstr "Den \"Owner trust\" ändern"
#: g10/keyedit.c:534
msgid "can't do that in batchmode\n"
msgstr "Dies kann im Batchmodus nicht durchgeführt werden.\n"
#. check that they match
#. FIXME: check that they both match
#: g10/keyedit.c:561
msgid "Secret key is available.\n"
msgstr "Geheimer Schlüssel ist vorhanden.\n"
#: g10/keyedit.c:590
msgid "Command> "
msgstr "Befehl> "
#: g10/keyedit.c:617
msgid "Need the secret key to do this.\n"
msgstr "Hierzu wird der geheime Schlüssel benötigt.\n"
#: g10/keyedit.c:639
msgid "Save changes? "
msgstr "Änderungen speichern? "
#: g10/keyedit.c:642
msgid "Quit without saving? "
msgstr "Beenden ohne zu speichern? "
#: g10/keyedit.c:652
#, c-format
msgid "update failed: %s\n"
msgstr "Änderung fehlgeschlagen: %s\n"
#: g10/keyedit.c:659
#, c-format
msgid "update secret failed: %s\n"
msgstr "Änderung des Geheimnisses fehlgeschlagen: %s\n"
#: g10/keyedit.c:666
msgid "Key not changed so no update needed.\n"
msgstr "Schlüssel ist nicht geändert worden, also ist kein Speichern nötig.\n"
#: g10/keyedit.c:669 g10/keyedit.c:727
#, c-format
msgid "update of trustdb failed: %s\n"
msgstr "Änderung der \"Trust-DB\" fehlgeschlagen: %s\n"
#: g10/keyedit.c:701
msgid "Really sign all user ids? "
msgstr "Wirklich alle User-IDs beglaubigen? "
#: g10/keyedit.c:702
msgid "Hint: Select the user ids to sign\n"
msgstr "Tip: Wählen Sie die User-ID, die beglaubigt werden soll\n"
#: g10/keyedit.c:738
msgid "You must select at least one user id.\n"
msgstr "Zumindestens eine User-ID muß ausgewählt werden.\n"
#: g10/keyedit.c:740
msgid "You can't delete the last user id!\n"
msgstr "Die letzte User-ID kann nicht gelöscht werden!\n"
#: g10/keyedit.c:743
msgid "Really remove all selected user ids? "
msgstr "Möchten Sie alle ausgewählten User-IDs wirklich entfernen? "
#: g10/keyedit.c:744
msgid "Really remove this user id? "
msgstr "Diese User-ID wirklich entfernen? "
#: g10/keyedit.c:767
msgid "You must select at least one key.\n"
msgstr "Zumindestens ein Schlüssel muß ausgewählt werden.\n"
#: g10/keyedit.c:771
msgid "Do you really want to delete the selected keys? "
msgstr "Möchten Sie die ausgewählten Schlüssel wirklich entfernen? "
#: g10/keyedit.c:772
msgid "Do you really want to delete this key? "
msgstr "Möchten Sie diesen Schlüssel wirklich entfernen? "
#: g10/keyedit.c:819
msgid "Invalid command (try \"help\")\n"
msgstr "Ungültiger Befehl (versuchen Sie's mal mit \"help\")\n"
#: g10/keyedit.c:1197
msgid "Please remove selections from the secret keys.\n"
msgstr "Bitte entfernen Sie die Auswahl von den geheimen Schlüsseln.\n"
#: g10/keyedit.c:1203
msgid "Please select at most one secondary key.\n"
msgstr "Bitte wählen Sie höchstens einen Zweitschlüssel aus.\n"
#: g10/keyedit.c:1207
msgid "Changing exiration time for a secondary key.\n"
msgstr "Ändern des Verfallsdatums des Zweitschlüssels.\n"
#: g10/keyedit.c:1209
msgid "Changing exiration time for the primary key.\n"
msgstr "Ändern des Verfallsdatums des Hauptschlüssels.\n"
#: g10/keyedit.c:1250
msgid "You can't change the expiration date of a v3 key\n"
msgstr "Sie können das Verfallsdatum eines v3-Schlüssels nicht ändern\n"
#: g10/keyedit.c:1266
msgid "No corresponding signature in secret ring\n"
msgstr "Keine entsprechende Signatur im geheimen Schlüsselbund\n"
#: g10/keyedit.c:1326
#, c-format
msgid "No user id with index %d\n"
msgstr "Keine User-ID mit Index %d\n"
#: g10/keyedit.c:1371
#, c-format
msgid "No secondary key with index %d\n"
msgstr "Kein Zweitschlüssel mit Index %d\n"
-#: g10/mainproc.c:198
+#: g10/mainproc.c:199
msgid "public key encrypted data: good DEK\n"
msgstr "Mit öffentlichem Schüssel verschlüsselte Daten: Korrekte DEK\n"
-#: g10/mainproc.c:201
+#: g10/mainproc.c:202
#, c-format
msgid "public key decryption failed: %s\n"
msgstr "Entschlüsselung mit öffentlichem Schlüssel fehlgeschlagen: %s\n"
-#: g10/mainproc.c:228
+#: g10/mainproc.c:229
msgid "decryption okay\n"
msgstr "Enschlüsselung fehlgeschlagen: %s\n"
-#: g10/mainproc.c:231
+#: g10/mainproc.c:232
#, c-format
msgid "decryption failed: %s\n"
msgstr "Enschlüsselung fehlgeschlagen: %s\n"
-#: g10/mainproc.c:248
+#: g10/mainproc.c:249
msgid "NOTE: sender requested \"for-your-eyes-only\"\n"
msgstr ""
"Hinweis: Der Absender verlangte Vertraulichkeit(\"for-your-eyes-only\")\n"
-#: g10/mainproc.c:250
+#: g10/mainproc.c:251
#, c-format
msgid "original file name='%.*s'\n"
msgstr "Ursprünglicher Dateiname='%.*s'\n"
-#: g10/mainproc.c:833
+#: g10/mainproc.c:834
msgid "signature verification suppressed\n"
msgstr "Unterschriften-Überprüfung unterdrückt\n"
-#: g10/mainproc.c:839
+#: g10/mainproc.c:840
#, c-format
msgid "Signature made %.*s using %s key ID %08lX\n"
msgstr "Unterschrieben am %.*s mit %s Schlüssel %08lX\n"
-#: g10/mainproc.c:847
+#: g10/mainproc.c:852
msgid "BAD signature from \""
msgstr "FALSCHE Unterschrift von \""
-#: g10/mainproc.c:848
+#: g10/mainproc.c:853
msgid "Good signature from \""
msgstr "Korrekte Unterschrift von \""
-#: g10/mainproc.c:879
+#: g10/mainproc.c:884
#, c-format
msgid "Can't check signature: %s\n"
msgstr "Signatur kann nicht geprüft werden: %s\n"
-#: g10/mainproc.c:952
+#: g10/mainproc.c:957
msgid "old style (PGP 2.x) signature\n"
msgstr "Unterschrift nach alter (PGP 2.x) Art\n"
-#: g10/mainproc.c:957
+#: g10/mainproc.c:962
msgid "invalid root packet detected in proc_tree()\n"
msgstr "ungültiges root-Paket in proc_tree() entdeckt\n"
#: g10/misc.c:90
#, c-format
msgid "can't disable core dumps: %s\n"
msgstr "core-dump-Dateierzeugung kann nicht abgeschaltet werden: %s\n"
#: g10/misc.c:93
msgid "WARNING: program may create a core file!\n"
msgstr "WARNUNG: Programm könnte einen core-dump-Datei schreiben!\n"
#: g10/misc.c:200
msgid "Experimental algorithms should not be used!\n"
msgstr "Experimentiermethoden sollten nicht benutzt werden!\n"
#: g10/misc.c:214
msgid ""
"RSA keys are deprecated; please consider creating a new key and use this key "
"in the future\n"
msgstr ""
"RSA Schlüssel sind nicht erwünscht; bitte denken Sie darüber nach, einen\n"
"neuen Schlüssel zu erzeugen und diesen in Zukunft zu benutzen\n"
#: g10/misc.c:235
#, fuzzy
msgid "this cipher algorithm is depreciated; please use a more standard one!\n"
msgstr ""
"Diees Verschlüsselungsmethode ist nicht viel wert; verwenden Sie eine "
"stärker standardisierte Methode!\n"
#: g10/parse-packet.c:113
#, c-format
msgid "can't handle public key algorithm %d\n"
msgstr "dieses Public-Key Verfahren %d kann nicht benutzt werden\n"
#: g10/parse-packet.c:892
#, c-format
msgid "subpacket of type %d has critical bit set\n"
msgstr "Unterpaket des Typs %d hat das \"critical bit\" gesetzt\n"
#: g10/passphrase.c:141
msgid ""
"\n"
"You need a passphrase to unlock the secret key for\n"
"user: \""
msgstr ""
"\n"
"Sie benötigen ein Mantra, um den geheimen Schlüssel zu entsperren.\n"
"Benutzer: \""
#: g10/passphrase.c:150
#, c-format
msgid "%u-bit %s key, ID %08lX, created %s"
msgstr "%u-Bit %s Schlüssel, ID %08lX, erzeugt %s"
#: g10/passphrase.c:155
#, c-format
msgid " (main key ID %08lX)"
msgstr " (Hauptschlüssel-ID %08lX)"
#: g10/passphrase.c:183
msgid "Enter passphrase: "
msgstr "Geben Sie das Mantra ein: "
#: g10/passphrase.c:187
msgid "Repeat passphrase: "
msgstr "Geben Sie das Mantra nochmal ein: "
#: g10/plaintext.c:63
msgid "data not saved; use option \"--output\" to save it\n"
msgstr ""
"Daten wurden nicht gespeichert; verwenden Sie dafür die Option \"--output\"\n"
-#: g10/plaintext.c:166
+#: g10/plaintext.c:208
msgid "Please enter name of data file: "
msgstr "Bitte geben Sie den Namen der Datendatei ein: "
-#: g10/plaintext.c:187
+#: g10/plaintext.c:229
msgid "reading stdin ...\n"
msgstr "lese stdin ...\n"
-#: g10/plaintext.c:250
+#: g10/plaintext.c:292
#, c-format
msgid "can't open signed data `%s'\n"
msgstr "kann signierte Datei '%s' nicht öffnen.\n"
#: g10/pubkey-enc.c:78
#, c-format
msgid "anonymous receiver; trying secret key %08lX ...\n"
msgstr "Ungenannter Empfänger: Versuch mit geheimen Schlüssel %08lX ...\n"
#: g10/pubkey-enc.c:84
msgid "okay, we are the anonymous recipient.\n"
msgstr "Alles klar, wir sind der ungenannte Empfänger.\n"
#: g10/pubkey-enc.c:136
msgid "old encoding of the DEK is not supported\n"
msgstr "alte Kodierung des DEK wird nicht unterstützt\n"
#: g10/pubkey-enc.c:183
#, c-format
msgid "NOTE: cipher algorithm %d not found in preferences\n"
msgstr "Hinweis: Verfahren %d ist kein bevorzugtes Verschlüsselungsverfahren\n"
#: g10/seckey-cert.c:56
#, c-format
msgid "protection algorithm %d is not supported\n"
msgstr "Schutzverfahren %d wird nicht unterstützt\n"
#: g10/seckey-cert.c:176
msgid "Invalid passphrase; please try again ...\n"
msgstr "Ungültiges Mantra; versuchen Sie's doch noch einmal ...\n"
#: g10/seckey-cert.c:223
msgid "WARNING: Weak key detected - please change passphrase again.\n"
msgstr ""
"WARNUNG: Unsicherer Schlüssel entdeckt -\n"
" bitte das Mantra nochmal eingeben.\n"
#: g10/sig-check.c:155
msgid ""
"this is a PGP generated ElGamal key which is NOT secure for signatures!\n"
msgstr ""
"Dieser durch PGP erzeugte ElGamal-Schlüssel ist für Signaturen NICHT sicher "
"genug!\n"
-#: g10/sig-check.c:166
+#: g10/sig-check.c:163
#, fuzzy, c-format
-msgid "public key created %lu %s in future (time warp or clock problem)\n"
-msgstr ""
-"Öffentlicher Schlüssel wurde in der Zukunft %lu %s erzeugt (Zeitreise oder Uhren "
-"stimmen nicht überein)\n"
-
-#: g10/sig-check.c:168
-msgid "second"
-msgstr "Sekunde"
+msgid "public key is %lu second newer than the signature\n"
+msgstr "lid %lu: User-ID ohne Signatur\n"
-#: g10/sig-check.c:168
-msgid "seconds"
-msgstr "Sekunden"
+#: g10/sig-check.c:164
+#, fuzzy, c-format
+msgid "public key is %lu seconds newer than the signature\n"
+msgstr "lid %lu: User-ID ohne Signatur\n"
-#: g10/sig-check.c:173
+#: g10/sig-check.c:180
#, c-format
msgid "NOTE: signature key expired %s\n"
msgstr "Hinweis: Schlüssel der Signatur ist verfallen am %s.\n"
-#: g10/sig-check.c:230
+#: g10/sig-check.c:237
msgid "assuming bad signature due to an unknown critical bit\n"
msgstr ""
"Vermutlich eine FALSCHE Unterschrift, wegen unbekanntem \"critical bit\"\n"
-#: g10/sign.c:69
+#: g10/sign.c:79
#, c-format
msgid "%s signature from: %s\n"
msgstr "%s Unterschrift von: %s\n"
-#: g10/sign.c:200 g10/sign.c:587
+#: g10/sign.c:210 g10/sign.c:596
#, c-format
msgid "can't create %s: %s\n"
msgstr "%s kann nicht erzeugt werden: %s\n"
-#: g10/sign.c:296
+#: g10/sign.c:306
msgid "signing:"
msgstr "unterschreibe:"
-#: g10/sign.c:336
+#: g10/sign.c:346
#, c-format
msgid "WARNING: `%s' is an empty file\n"
msgstr "WARNUNG: '%s' ist eine leere Datei.\n"
+#: g10/textfilter.c:199
+#, c-format
+msgid "can't handle text lines longer than %d characters\n"
+msgstr ""
+
#: g10/tdbio.c:116 g10/tdbio.c:1418
#, c-format
msgid "trustdb rec %lu: lseek failed: %s\n"
msgstr "trustdb Satz %lu: lseek fehlgeschlagen: %s\n"
#: g10/tdbio.c:122 g10/tdbio.c:1425
#, c-format
msgid "trustdb rec %lu: write failed (n=%d): %s\n"
msgstr "trustdb Satz %lu: write fehlgeschlagen (n=%d): %s\n"
#: g10/tdbio.c:232
msgid "trustdb transaction too large\n"
msgstr "trustdb Transaktion zu groß\n"
#: g10/tdbio.c:416
#, c-format
msgid "%s: can't access: %s\n"
msgstr "%s: kann nicht zugegriffen werden: %s\n"
#: g10/ringedit.c:273 g10/tdbio.c:436
#, c-format
msgid "%s: can't create directory: %s\n"
msgstr "%s: Verzeichnis kann nicht erzeugt werden: %s\n"
#: g10/ringedit.c:279 g10/tdbio.c:439
#, c-format
msgid "%s: directory created\n"
msgstr "%s: Verzeichnis erzeugt\n"
#: g10/tdbio.c:443
#, c-format
msgid "%s: directory does not exist!\n"
msgstr "%s: Verzeichnis existiert nicht!\n"
-#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1275 g10/tdbio.c:449
+#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1292 g10/tdbio.c:449
#, c-format
msgid "%s: can't create: %s\n"
msgstr "%s: kann nicht erzeugt werden: %s\n"
#: g10/tdbio.c:473
#, c-format
msgid "%s: failed to create version record: %s"
msgstr "%s: Fehler beim Erzeugen des Versionsatzes: %s"
#: g10/tdbio.c:477
#, c-format
msgid "%s: invalid trustdb created\n"
msgstr "%s: ungültige trust-db erzeugt\n"
#: g10/tdbio.c:479
#, c-format
msgid "%s: trustdb created\n"
msgstr "%s: trust-db erzeugt\n"
#: g10/tdbio.c:512
#, c-format
msgid "%s: invalid trustdb\n"
msgstr "%s: ungültige 'Trust'-Datenbank\n"
#: g10/tdbio.c:545
#, c-format
msgid "%s: failed to create hashtable: %s\n"
msgstr "%s: hashtable kann nicht erzeugt werden: %s\n"
#: g10/tdbio.c:553
#, c-format
msgid "%s: error updating version record: %s\n"
msgstr "%s: Fehler beim Ändern des Versionsatzes: %s\n"
#: g10/tdbio.c:569 g10/tdbio.c:608 g10/tdbio.c:633 g10/tdbio.c:1351
#: g10/tdbio.c:1378
#, c-format
msgid "%s: error reading version record: %s\n"
msgstr "%s: Fehler beim Lesen des Versionsatzes: %s\n"
#: g10/tdbio.c:582
#, c-format
msgid "%s: error writing version record: %s\n"
msgstr "%s: Fehler beim Schreiben des Versionsatzes: %s\n"
#: g10/tdbio.c:1058
#, c-format
msgid "trustdb: lseek failed: %s\n"
msgstr "trustdb: lseek fehlgeschlagen: %s\n"
#: g10/tdbio.c:1066
#, c-format
msgid "trustdb: read failed (n=%d): %s\n"
msgstr "trustdb: read failed (n=%d): %s\n"
#: g10/tdbio.c:1087
#, c-format
msgid "%s: not a trustdb file\n"
msgstr "%s: keine trustdb Datei\n"
#: g10/tdbio.c:1103
#, c-format
msgid "%s: version record with recnum %lu\n"
msgstr "%s: version record with recnum %lu\n"
#: g10/tdbio.c:1108
#, c-format
msgid "%s: invalid file version %d\n"
msgstr "%s: invalid file version %d\n"
#: g10/tdbio.c:1384
#, c-format
msgid "%s: error reading free record: %s\n"
msgstr "%s: Fehler beim Lesen eines freien Satzes: %s\n"
#: g10/tdbio.c:1392
#, c-format
msgid "%s: error writing dir record: %s\n"
msgstr "%s: Fehler beim Schreiben eines Verzeichnis-Satzes: %s\n"
#: g10/tdbio.c:1402
#, c-format
msgid "%s: failed to zero a record: %s\n"
msgstr "%s: konnte einen Satz nicht Nullen: %s\n"
#: g10/tdbio.c:1432
#, c-format
msgid "%s: failed to append a record: %s\n"
msgstr "%s: konnte Satz nicht anhängen: %s\n"
#: g10/trustdb.c:142
msgid "The trustdb is corrupted; please run \"gpgm --fix-trustdb\".\n"
msgstr ""
-"Die \"Trust\"-Datenbank ist beschädigt; verwenden Sie \"gpgm --fix-trustdb\".\n"
+"Die \"Trust\"-Datenbank ist beschädigt; verwenden Sie \"gpgm "
+"--fix-trustdb\".\n"
#: g10/trustdb.c:155
#, c-format
msgid "trust record %lu, req type %d: read failed: %s\n"
msgstr "trust record %lu, req type %d: read failed: %s\n"
#: g10/trustdb.c:170
#, c-format
msgid "trust record %lu, type %d: write failed: %s\n"
msgstr "trust record %lu, type %d: write failed: %s\n"
#: g10/trustdb.c:184
#, c-format
msgid "trust record %lu: delete failed: %s\n"
msgstr "Vertrauenssatz %lu: löschen fehlgeschlagen: %s\n"
#: g10/trustdb.c:198
#, c-format
msgid "trustdb: sync failed: %s\n"
msgstr "\"Trust-DB\": sync fehlgeschlagen: %s\n"
#: g10/trustdb.c:327
#, c-format
msgid "error reading dir record for LID %lu: %s\n"
msgstr "Fehler beim Lesen des Dir-Satzes für LID %lu: %s\n"
#: g10/trustdb.c:334
#, c-format
msgid "lid %lu: expected dir record, got type %d\n"
msgstr "lid %lu: Dir-Satz erwartet, aber es kam Typ %d\n"
#: g10/trustdb.c:339
#, c-format
msgid "no primary key for LID %lu\n"
msgstr "Kein Hauptschlüssel für LID %lu\n"
#: g10/trustdb.c:344
#, c-format
msgid "error reading primary key for LID %lu: %s\n"
msgstr "Fehler beim Lesen den Hauptschlüssels der LID %lu: %s\n"
#: g10/trustdb.c:420
#, c-format
msgid "chained sigrec %lu has a wrong owner\n"
msgstr "Verketteter Signatursatz %lu hat einen falschen Besitzer\n"
#: g10/trustdb.c:463
#, c-format
msgid "'%s' is not a valid long keyID\n"
msgstr "'%s' ist keine gültige lange Schlüssel-ID\n"
#: g10/trustdb.c:498
#, c-format
msgid "key %08lX: no public key for trusted key - skipped\n"
msgstr ""
"Schlüssel %08lX: kein öffentlicher Schüssel für vertrauenswürdigen Schlüssel "
"- übersprungen\n"
#: g10/trustdb.c:507 g10/trustdb.c:565
#, c-format
msgid "key %08lX: can't put it into the trustdb\n"
msgstr "Schlüssel %08lX kann nicht in die \"trustdb\" eingefügt werden\n"
#: g10/trustdb.c:512 g10/trustdb.c:571
#, c-format
msgid "key %08lX: query record failed\n"
msgstr "Schlüssel %08lX: Satzabfrage fehlgeschlagen\n"
#: g10/trustdb.c:517 g10/trustdb.c:580
#, c-format
msgid "key %08lX: already in trusted key table\n"
msgstr "Schlüssel %08lX: Ist bereits in geheimer Schlüsseltabelle\n"
#: g10/trustdb.c:520 g10/trustdb.c:583
#, c-format
msgid "key %08lX: accepted as trusted key.\n"
msgstr "Schlüssel %08lX: Akzeptiert als vertrauenswürdiger Schlüssel.\n"
#: g10/trustdb.c:536
#, c-format
msgid "NOTE: secret key %08lX is NOT protected.\n"
msgstr "HINWEIS: Geheimer Schlüssel %08lX ist NICHT geschützt.\n"
#: g10/trustdb.c:548
#, c-format
msgid "key %08lX: secret key without public key - skipped\n"
msgstr ""
"Schlüssel %08lX: geheimer Schlüssel, aber ohne öffentlichen Schlüssel - "
"übersprungen\n"
#: g10/trustdb.c:555
#, c-format
msgid "key %08lX: secret and public key don't match\n"
msgstr ""
"Schlüssel %08lX: geheimer und öffentlicher Schlüssel passen nicht zusammen.\n"
#: g10/trustdb.c:591
#, c-format
msgid "enumerate secret keys failed: %s\n"
msgstr "enum_secret_keys fehlgeschlagen: %s\n"
#: g10/trustdb.c:774
#, c-format
msgid "lid %lu: read dir record failed: %s\n"
msgstr "lid %lu: Lesen des Verz.Satzes fehlgeschlagen: %s\n"
#: g10/trustdb.c:783
#, c-format
msgid "lid %lu: read key record failed: %s\n"
msgstr "lid %lu: Lesen des Schl..Satzes fehlgeschlagen: %s\n"
#: g10/trustdb.c:793
#, c-format
msgid "lid %lu: read uid record failed: %s\n"
msgstr "lid %lu: Lesen des UserID-Satzes fehlgeschlagen: %s\n"
#: g10/trustdb.c:802
#, c-format
msgid "lid %lu: read pref record failed: %s\n"
msgstr "lid %lu: Lesen des Pref.Satzes fehlgeschlagen: %s\n"
#: g10/trustdb.c:812
#, c-format
msgid "lid %lu: read sig record failed: %s\n"
msgstr "lid %lu: Lesen des Sig.Satzes fehlgeschlagen: %s\n"
#: g10/trustdb.c:1013
msgid "Ooops, no keys\n"
msgstr "Huch, keine Schlüssel\n"
#: g10/trustdb.c:1017
msgid "Ooops, no user ids\n"
msgstr "Huch, keine User-IDs\n"
#: g10/trustdb.c:1088 g10/trustdb.c:1106
#, c-format
msgid "user '%s' read problem: %s\n"
msgstr "User '%s' Leseproblem: %s\n"
#: g10/trustdb.c:1091 g10/trustdb.c:1109
#, c-format
msgid "user '%s' list problem: %s\n"
msgstr "User '%s' Listenproblem: %s\n"
#: g10/trustdb.c:1099 g10/trustdb.c:1346
#, c-format
msgid "user '%s' not found: %s\n"
msgstr "Benutzer '%s' nicht gefunden: %s\n"
#: g10/trustdb.c:1101 g10/trustdb.c:1348
#, c-format
msgid "problem finding '%s' in trustdb: %s\n"
msgstr "Problem, '%s' in der Trust-DB zu finden: %s\n"
#: g10/trustdb.c:1104
#, c-format
msgid "user '%s' not in trustdb\n"
msgstr "User '%s' ist nicht in der trustdb\n"
#: g10/trustdb.c:1139
#, c-format
msgid ""
"# List of assigned trustvalues, created %s\n"
"# (Use \"gpgm --import-ownertrust\" to restore them)\n"
msgstr ""
"# Liste der zugewisenen \"trustvalues\", erzeugt am %s\n"
"# (Verwenden Sie \"gpgm --import-ownertrust\" um sie wieder einzuspielen)\n"
#: g10/trustdb.c:1145
msgid "directory record w/o primary key\n"
msgstr "Verzeichnis-Satz ohne Hauptschlüssel\n"
#: g10/trustdb.c:1152
#, c-format
msgid "error reading key record: %s\n"
msgstr "Fehler beim Lesen des Schl.Satzes: %s\n"
#: g10/trustdb.c:1192
msgid "line too long\n"
msgstr "Zeile zu lang\n"
#: g10/trustdb.c:1200
msgid "error: missing colon\n"
msgstr "Fehler: Fehlender Doppelpunkt\n"
#: g10/trustdb.c:1205
msgid "error: invalid fingerprint\n"
msgstr "Fehler: ungültiger Fingerabdruck\n"
#: g10/trustdb.c:1209
msgid "error: no ownertrust value\n"
msgstr "Fehler: Keine \"Owner trust\" Werte\n"
#: g10/trustdb.c:1234
msgid "key not in trustdb, searching ring.\n"
msgstr "Schlüssel ist nicht in der trustdb, Schl.bund wird durchsucht.\n"
#: g10/trustdb.c:1237
#, c-format
msgid "key not in ring: %s\n"
msgstr "Schlüssel ist nicht im Schlüsselbund: %s\n"
#: g10/trustdb.c:1241
msgid "Oops: key is now in trustdb???\n"
msgstr "Huch: Schlüssel ist ja gar nicht in der Trust-DB?\n"
#. update the ownertrust
#: g10/trustdb.c:1246
#, c-format
msgid "insert trust record failed: %s\n"
msgstr "'trust record' einfügen fehlgeschlagen: %s\n"
#. error
#: g10/trustdb.c:1252
#, c-format
msgid "error finding dir record: %s\n"
msgstr "Fehler beim Auffinden des Verz.Satzes: %s\n"
#: g10/trustdb.c:1351
#, c-format
msgid "user '%s' not in trustdb - inserting\n"
msgstr "User '%s' ist nicht in der 'Trust'-Datenbank - wird eingefügt\n"
#: g10/trustdb.c:1354
#, c-format
msgid "failed to put '%s' into trustdb: %s\n"
msgstr "konnte '%s' nicht in die 'Trust'-Datenbank hineintun: %s\n"
#: g10/trustdb.c:1404
#, c-format
msgid "%s: keyblock read problem: %s\n"
msgstr "%s: Schlüsselblock Leseproblem: %s\n"
#: g10/trustdb.c:1418
#, c-format
msgid "%s: update failed: %s\n"
msgstr "%s: Änderung fehlgeschlagen: %s\n"
#: g10/trustdb.c:1421
#, c-format
msgid "%s: updated\n"
msgstr "%s: geändert\n"
#: g10/trustdb.c:1423
#, c-format
msgid "%s: okay\n"
msgstr "%s: In Ordnung\n"
#: g10/trustdb.c:1438
#, c-format
msgid "lid %lu: dir record w/o key - skipped\n"
msgstr "lid %lu: Dir-Satz ohne Schlüssel - übergangen\n"
#: g10/trustdb.c:1451
#, c-format
msgid "lid %lu: keyblock not found: %s\n"
msgstr "lid %lu: Schlüsselblock nicht gefunden: %s\n"
#: g10/trustdb.c:1460 g10/trustdb.c:1529
#, c-format
msgid "lid %lu: update failed: %s\n"
msgstr "lid %lu: Änderung fehlgeschlagen: %s\n"
#: g10/trustdb.c:1466 g10/trustdb.c:1535
#, c-format
msgid "lid %lu: updated\n"
msgstr "lid %lu: geändert\n"
#: g10/trustdb.c:1470 g10/trustdb.c:1539
#, c-format
msgid "lid %lu: okay\n"
msgstr "lid %lu: In Ordnung\n"
#: g10/trustdb.c:1477 g10/trustdb.c:1545
#, c-format
msgid "%lu keys processed\n"
msgstr "%lu Schlüssel bearbeitet\n"
#: g10/trustdb.c:1479
#, c-format
msgid "\t%lu keys skipped\n"
msgstr "\t%lu Schlüssel übersprungen\n"
#: g10/trustdb.c:1481 g10/trustdb.c:1547
#, c-format
msgid "\t%lu keys with errors\n"
msgstr "\t%lu Schlüssel mit Fehlern\n"
#: g10/trustdb.c:1483 g10/trustdb.c:1549
#, c-format
msgid "\t%lu keys updated\n"
msgstr "\t%lu Schlüssel geändert\n"
#: g10/trustdb.c:1513
#, c-format
msgid "lid ?: insert failed: %s\n"
msgstr "lid ?: Einfügen fehlgeschlagen: %s\n"
#: g10/trustdb.c:1518
#, c-format
msgid "lid %lu: insert failed: %s\n"
msgstr "lid %lu: Einfügen fehlgeschlagen: %s\n"
#: g10/trustdb.c:1524
#, c-format
msgid "lid %lu: inserted\n"
msgstr "lid %lu: eingefügt\n"
#: g10/trustdb.c:1551
#, c-format
msgid "\t%lu keys inserted\n"
msgstr "\t%lu Schlüssel eingefügt\n"
#: g10/trustdb.c:1554
#, c-format
msgid "enumerate keyblocks failed: %s\n"
msgstr "enumerate Schlüsselblock fehlgeschlagen: %s\n"
#: g10/trustdb.c:1599
#, c-format
msgid "check_trust: search dir record failed: %s\n"
msgstr "check_trust: Suche nach Dir-Satz fehlgeschlagen: %s\n"
#: g10/trustdb.c:1606
#, c-format
msgid "key %08lX: insert trust record failed: %s\n"
msgstr "Schlüssel %08lX: 'trust record' einfügen fehlgeschlagen: %s\n"
#: g10/trustdb.c:1610
#, c-format
msgid "key %08lX.%lu: inserted into trustdb\n"
msgstr "Schlüssel %08lX.%lu: in \"trustdb\" eingefügt\n"
#: g10/trustdb.c:1618
#, c-format
msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
msgstr ""
"Schlüssel %08lX.%lu: wurde in der Zukunft erzeugt (Zeitreise oder Uhren "
"stimmen nicht überein)\n"
#: g10/trustdb.c:1625
#, c-format
msgid "key %08lX.%lu: expired at %s\n"
msgstr "Schlüssel %08lX.%lu: verfallen am %s\n"
#: g10/trustdb.c:1633
#, c-format
msgid "key %08lX.%lu: trust check failed: %s\n"
msgstr "Schlüssel %08lX.%lu: Vertrauensprüfung fehlgeschlagen: %s\n"
#: g10/trustdb.c:1842 g10/trustdb.c:1871 g10/trustdb.c:2610
msgid "WARNING: can't yet handle long pref records\n"
msgstr "WARNUNG: Lange 'Pref'-Records können noch nicht benutzt werden\n"
#: g10/trustdb.c:1893
#, c-format
msgid "get_dir_record: search_record failed: %s\n"
msgstr "get_dir_record: search_record fehlgeschlagen: %s\n"
#: g10/trustdb.c:1956
#, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but marked as checked\n"
msgstr "Hinweis: sig rec %lu[%d] in hintlist of %lu but marked as checked\n"
#: g10/trustdb.c:1960
#, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but not marked\n"
msgstr "Hinweis: sig rec %lu[%d] in hintlist of %lu but not marked\n"
#. we need the dir record
#: g10/trustdb.c:1967
#, c-format
msgid "sig rec %lu[%d] in hintlist of %lu does not point to a dir record\n"
msgstr "sig rec %lu[%d] in hintlist of %lu does not point to a dir record\n"
#: g10/trustdb.c:1973
#, c-format
msgid "lid %lu: no primary key\n"
msgstr "lid %lu: kein Hauptschlüssel\n"
#: g10/trustdb.c:2006
#, c-format
msgid "lid %lu: user id not found in keyblock\n"
msgstr "lid %lu: User-ID im Schlüsselblock nicht gefunden\n"
#: g10/trustdb.c:2010
#, c-format
msgid "lid %lu: user id without signature\n"
msgstr "lid %lu: User-ID ohne Signatur\n"
#: g10/trustdb.c:2017
#, c-format
msgid "lid %lu: self-signature in hintlist\n"
msgstr "lid %lu: Eigenbeglaubigung in 'hintlist'\n"
#: g10/trustdb.c:2028 g10/trustdb.c:2747 g10/trustdb.c:2831
msgid "Valid certificate revocation"
msgstr "Gültiger Zerifikat-Widerruf"
#: g10/trustdb.c:2029 g10/trustdb.c:2748 g10/trustdb.c:2832
msgid "Good certificate"
msgstr "Korrektes Zertifikat"
#: g10/trustdb.c:2038
msgid "very strange: no public key\n"
msgstr "sehr seltsam: kein öffentlicher Schlüssel\n"
#: g10/trustdb.c:2086
#, c-format
msgid "hintlist %lu[%d] of %lu does not point to a dir record\n"
msgstr "hintlist %lu[%d] of %lu zeigt nicht auf einen 'dir record'\n"
#: g10/trustdb.c:2092
#, c-format
msgid "lid %lu does not have a key\n"
msgstr "lid %lu hat keinen Schlüssel\n"
#: g10/trustdb.c:2102
#, c-format
msgid "lid %lu: can't get keyblock: %s\n"
msgstr "lid %lu: Schlüsselblock nicht verfügbar: %s\n"
#: g10/trustdb.c:2159 g10/trustdb.c:3082
#, c-format
msgid "tdbio_search_dir failed: %s\n"
msgstr "tdbio_search_dir fehlgeschlagen: %s\n"
#: g10/trustdb.c:2312
#, c-format
msgid "key %08lX.%lu: Good subkey binding\n"
msgstr "Schlüssel %08lX.%lu: Korrekte Unterschlüssel-Anbindung\n"
#: g10/trustdb.c:2318 g10/trustdb.c:2360
#, c-format
msgid "key %08lX.%lu: Invalid subkey binding: %s\n"
msgstr "Schlüssel %08lX.%lu: Ungültige Unterschlüssel-Anbindung\n"
#: g10/trustdb.c:2333
#, c-format
msgid "key %08lX.%lu: Valid key revocation\n"
msgstr "Schlüssel %08lX.%lu: Gültiger Schlüsselwiderruf\n"
#: g10/trustdb.c:2339
#, c-format
msgid "key %08lX.%lu: Invalid key revocation: %s\n"
msgstr "Schlüssel %08lX.%lu: Ungültiger Schlüsselwiderruf: %s\n"
#: g10/trustdb.c:2354
#, c-format
msgid "key %08lX.%lu: Valid subkey revocation\n"
msgstr "Schlüssel %08lX.%lu: Gültiger Unterschlüsselwiderruf\n"
#: g10/trustdb.c:2454
msgid "Good self-signature"
msgstr "Korrekte Eigenbeglaubigung"
#: g10/trustdb.c:2465
msgid "Invalid self-signature"
msgstr "Ungültige Eigenbeglaubigung"
#: g10/trustdb.c:2475
msgid "Valid user ID revocation skipped due to a newer self signature\n"
msgstr ""
"Gültiger User-ID-Widerruf ignoriert, da eine neuere Eigenbeglaubigung "
"vorliegt\n"
#: g10/trustdb.c:2482
msgid "Valid user ID revocation\n"
msgstr "Gültiger User-ID-Widerruf\n"
#: g10/trustdb.c:2489
msgid "Invalid user ID revocation"
msgstr "Ungültiger User-ID-Widerruf"
#: g10/trustdb.c:2573
msgid "Too many preferences"
msgstr "Zu viele Einstellungen"
#: g10/trustdb.c:2587
msgid "Too many preference items"
msgstr "Zu viele Angaben zur Bevorzugung"
#: g10/trustdb.c:2726
msgid "Duplicated certificate - deleted"
msgstr "Doppelte Zertifikate - entfernt"
#: g10/trustdb.c:2759
msgid "Hmmm, public key lost?"
msgstr "Hmmm, öffentlicher Schüssel verloren?"
#: g10/trustdb.c:2769 g10/trustdb.c:2852
msgid "Invalid certificate revocation"
msgstr "Ungültiger Zertifikatswiderruf"
#: g10/trustdb.c:2770 g10/trustdb.c:2853
msgid "Invalid certificate"
msgstr "Ungültiges Zertifikat"
#: g10/trustdb.c:2785
#, c-format
msgid "uid %08lX.%lu/%02X%02X: has shadow dir %lu but is not yet marked.\n"
msgstr ""
"uid %08lX.%lu/%02X%02X: hat \"shadow-dir\" %lu, aber ist noch nicht "
"markiert.\n"
#: g10/trustdb.c:2799
#, c-format
msgid "sig record %lu[%d] points to wrong record.\n"
msgstr "Signatursatz %lu[%d] zeigt auf falschen Satz.\n"
#. that should never happen
#: g10/trustdb.c:3052
#, c-format
msgid "insert_trust_record: keyblock not found: %s\n"
msgstr "insert_trust_record: Schlüsselblock nicht gefunden: %s\n"
#: g10/trustdb.c:3070
msgid "did not use primary key for insert_trust_record()\n"
msgstr "Für insert_trust_record() wurde nicht der Hauptschlüssel benutzt\n"
#: g10/ringedit.c:293
#, c-format
msgid "%s: can't create keyring: %s\n"
msgstr "%s: Schlüsselbund kann nicht erzeugt werden: %s\n"
-#: g10/ringedit.c:299 g10/ringedit.c:1283
+#: g10/ringedit.c:299 g10/ringedit.c:1300
#, c-format
msgid "%s: keyring created\n"
msgstr "%s: Schlüsselbund erstellt\n"
-#: g10/ringedit.c:1469
+#: g10/ringedit.c:1486
msgid "WARNING: 2 files with confidential information exists.\n"
msgstr "Warnung: Zwei Dateien mit vertraulichem Inhalt vorhanden.\n"
-#: g10/ringedit.c:1470
+#: g10/ringedit.c:1487
#, c-format
msgid "%s is the unchanged one\n"
msgstr "%s ist der Unveränderte\n"
-#: g10/ringedit.c:1471
+#: g10/ringedit.c:1488
#, c-format
msgid "%s is the new one\n"
msgstr "%s ist der Neue\n"
-#: g10/ringedit.c:1472
+#: g10/ringedit.c:1489
msgid "Please fix this possible security flaw\n"
msgstr "Bitte diesen potentiellen Sicherheitsmangel beseitigen\n"
-#: g10/skclist.c:94
+#: g10/skclist.c:88 g10/skclist.c:125
+msgid "key is not flagged as insecure - can't use it with the faked RNG!\n"
+msgstr ""
+
+#: g10/skclist.c:113
#, c-format
msgid "skipped `%s': %s\n"
msgstr "übersprungen '%s': %s\n"
-#: g10/skclist.c:100
+#: g10/skclist.c:119
#, c-format
msgid ""
"skipped `%s': this is a PGP generated ElGamal key which is not secure for "
"signatures!\n"
msgstr ""
"'%s übersprungen: Dies ist ein durch PGP erzeugter ElGamal-Schlüssel. Das "
"ist für Signaturen NICHT sicher genug!\n"
#. do not overwrite
#: g10/openfile.c:58
#, c-format
msgid "File `%s' exists. "
msgstr "Datei '%s' existiert bereits. "
#: g10/openfile.c:60
msgid "Overwrite (y/N)? "
msgstr "Überschreiben (j/N)? "
#: g10/openfile.c:85
msgid "writing to stdout\n"
msgstr "Schreiben auf die Standardausgabe\n"
#: g10/openfile.c:134
#, c-format
msgid "assuming signed data in `%s'\n"
msgstr "die unterzeichneten Daten sind wohl in '%s'\n"
#: g10/openfile.c:181
#, c-format
msgid "%s: new options file created\n"
msgstr "%s: neue Optionendatei erstellt\n"
#: g10/encr-data.c:59
#, c-format
msgid "%s encrypted data\n"
msgstr "%s verschlüsselte Daten\n"
#: g10/encr-data.c:61
#, c-format
msgid "encrypted with unknown algorithm %d\n"
msgstr "Mit unbekanntem Verfahren verschlüsselt %d\n"
#: g10/encr-data.c:74
msgid ""
"WARNING: message was encrypted with a weak key in the symmetric cipher.\n"
msgstr ""
"Warnung: Botschaft wurde mit einem unsicheren Schlüssel verschlüsselt.\n"
#: g10/seskey.c:52
msgid "weak key created - retrying\n"
msgstr "Unsicherer Schlüssel erzeugt - neuer Versuch\n"
#: g10/seskey.c:57
#, c-format
msgid "cannot avoid weak key for symmetric cipher; tried %d times!\n"
msgstr ""
"Trotz %d-fachen Versuch konnte die Erzeugung eines unsicheren Schlüssels für "
"sym.Verschlüsselung nicht vermieden werden!\n"
# "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."
#. begin of list
#: g10/helptext.c:48
msgid "edit_ownertrust.value"
msgstr ""
"SIE müssen hier einen Wert eingeben. Dieser Wert wird niemals an eine "
"Dritte\n"
"weitergegeben (exportiert) werden. Wir brauchen ihn zum Aufbau des\n"
"\"web-of-trust\", Er hat nichts mit dem (stillschweigend aufgebautem)\n"
"\"web-of-certificates\" zu tun."
# "If you want to use this revoked key anyway, answer \"yes\"."
#: g10/helptext.c:54
msgid "revoked_key.override"
msgstr ""
"Wenn Sie diesen widerrufenen Schlüssel trotzdem benutzen wollen,\n"
"so antworten Sie mit \"ja\" oder schweigen für immer."
# "If you want to use this untrusted key anyway, answer \"yes\"."
#: g10/helptext.c:58
msgid "untrusted_key.override"
msgstr ""
"Wenn Sie diesen nichtvertruenswürdigen Schlüssel trotzdem benutzen wollen,\n"
"so antworten Sie mit \"ja\" oder schweigen Sie für immer."
# "Enter the user id of the addresse to whom you want to send the message."
#: g10/helptext.c:62
msgid "pklist.user_id.enter"
msgstr ""
"Geben Sie die User-ID dessen ein, an den Sie die Botschaft senden wollen."
#: g10/helptext.c:66
msgid "keygen.algo"
msgstr ""
"Wählen Sie die zu verwendende Methode aus.\n"
"DSA (alias DSS) bedeutet \"digital signature algorithm\" (Digitales\n"
" Unterschrift-Verfahren). Es kann nur zum Unterschreiben und Beglaubigen\n"
" benutzt werden. Dies ist das empfohlene Verfahren, da dessen Überprüfung\n"
" wesentlich schneller abläuft, als die von \"ElGamal\".\n"
"\n"
"ElGamal ist ein Verfahren für Unterschrift, Beglaubigung und "
"Verschlüsselung\n"
" OpenPGP unterscheidet zwischen zwei Arten von ElGamal: eines nur zum\n"
" Unterschreiben/Beglaubigen und eines zusätzlich zum Verschlüsseln.\n"
" Eigentlich sind diese Arten identisch; allerdings müssen einige Parameter\n"
" auf eine besondere Art gewählt werden, um einen sicheren Schlüssel für\n"
" Unterschriften zu erzeugen. Dieses Programm macht dies zwar so, aber "
"andere\n"
" Programme sind nach OpenPGP-Spezifikation nicht verpflichtet die zweite "
"Art\n"
" (die mit zusätzlichem Verschlüsseln) zu verstehen.\n"
"\n"
"Der Hauptschlüssel (\"primary Key\") muß auf jeden Fall zum Unterschreiben "
"fähig\n"
"sein. Deshalb kann ein Nur-Verschlüssel-ElGamal-Schlüssel dafür nicht\n"
"verwendet werden.\n"
"Auch sollte man \"ElGamal in einem v3-Paket\" nicht verwenden, denn solch "
"ein\n"
"Schlüssel ist nicht mit anderen Programmen nach der OpenPGP-Spezifikation\n"
"verträglich."
# 0.9.0: 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."
#: g10/helptext.c:82
msgid "keygen.algo.elg_se"
msgstr ""
"Obwohl diese Schlüssel in RFC 2440 definiert sind, ist ihre Verwendung "
"nicht\n"
"empfohlen. Sie werden nämlich nicht von allen Programmen unterstützt.\n"
"Außerdem sind damit ezeugte Unterschriften recht groß und die Überprüfung\n"
"ist langsam."
# "Enter the size of the key"
#: g10/helptext.c:89
msgid "keygen.size"
msgstr ""
"Wählen Sie die gewünschte Schlüssellänge.\n"
"\n"
"Ein langer Schlüssel bietet mehr Sicherheit, kostet aber auch mehr "
"Rechenzeit.\n"
"Ein kurzer Schlüssel ist nicht ganz so sicher, wird aber schneller "
"bearbeitet.\n"
"1024 Bit ist für den Heimgebrauch ein brauchbarer Wert. Wenn Sie aber z.B. "
"in\n"
"Atlanta, Georgia, USA für eine Limonandenfabrik arbeiten, und das Rezept\n"
"speichern wollen (\"SCHLEMMER!\"), so wären 2048 Bit kein schlechter Wert."
# "Answer \"yes\" or \"no\""
#: g10/helptext.c:93
msgid "keygen.size.huge.okay"
msgstr "Geben Sie \"Ja\" oder \"Nein\" ein"
#: g10/helptext.c:98
msgid "keygen.size.large.okay"
msgstr "Geben Sie \"Ja\" oder \"Nein\" ein"
#: g10/helptext.c:103
msgid "keygen.valid"
msgstr "Geben Sie den erforderlichen Wert ein"
#: g10/helptext.c:107
msgid "keygen.valid.okay"
msgstr "Geben Sie \"Ja\" oder \"Nein\" ein"
# "Enter the name of the key holder"
#: g10/helptext.c:112
msgid "keygen.name"
msgstr "Geben Sie den Namen des Schlüsselinhabers ein"
# "please enter an optional but highly suggested email address"
#: g10/helptext.c:117
msgid "keygen.email"
msgstr ""
"Geben Sie eine E-Mail-Adresse ein. Dies ist zwar nicht notwendig,\n"
"aber empfehlenswert."
# "Please enter an optional comment"
#: g10/helptext.c:121
msgid "keygen.comment"
msgstr "Geben Sie (bei Bedarf) einen Kommentar ein"
# "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."
#: g10/helptext.c:126
msgid "keygen.userid.cmd"
msgstr ""
"N um den Namen zu ändern.\n"
"K um den Kommentar zu ändern.\n"
"E um die E-Mail-Adresse zu ändern.\n"
"F um mit der Schlüsselerzeugung fortzusetzen.\n"
"B um die Schlüsselerzeugung abbrechen."
# "Answer \"yes\" (or just \"y\") if it is okay to generate the sub key."
#: g10/helptext.c:135
msgid "keygen.sub.okay"
msgstr ""
"Geben Sie \"Ja\" (oder nur \"j\") ein, um den Unterschlüssel zu erzeugen."
# "Answer \"yes\" or \"no\""
#: g10/helptext.c:139
msgid "sign_uid.okay"
msgstr "Geben Sie \"Ja\" oder \"Nein\" ein"
# "Answer \"yes\" or \"no\""
#: g10/helptext.c:144
msgid "change_passwd.empty.okay"
msgstr "Geben Sie \"Ja\" oder \"Nein\" ein"
# "Please enter \"help\" to see the list of commands."
#: g10/helptext.c:149
msgid "keyedit.cmd"
msgstr "Geben Sie \"help\" ein, um die Liste der Befehle einzusehen."
# "Answer \"yes\" or \"no\""
#: g10/helptext.c:153
msgid "keyedit.save.okay"
msgstr "Geben Sie \"Ja\" oder \"Nein\" ein"
#: g10/helptext.c:158
msgid "keyedit.cancel.okay"
msgstr "Geben Sie \"Ja\" oder \"Nein\" ein"
# "Answer \"yes\" is you want to sign ALL the user IDs"
#: g10/helptext.c:162
msgid "keyedit.sign_all.okay"
msgstr "Geben Sie \"Ja\" (oder nur \"j\") ein, um alle User-IDs zu beglaubigen"
# "Answer \"yes\" if you really want to delete this user ID.\n"
# "All ceritifcates are then also lost!"
#: g10/helptext.c:166
msgid "keyedit.remove.uid.okay"
msgstr ""
"Geben Sie \"Ja\" (oder nur \"j\") ein, um diese User-ID zu LÖSCHEN.\n"
"Alle Zertifikate werden dann auch weg sein!"
# "Answer \"yes\" if it is okay to delete the subkey"
#: g10/helptext.c:171
msgid "keyedit.remove.subkey.okay"
msgstr ""
"Geben Sie \"Ja\" (oder nur \"j\") ein, um diesen Unterschlüssel zu löschen"
# ################################
# ####### Help msgids ############
# ################################
#: g10/helptext.c:175
msgid "passphrase.enter"
msgstr ""
"Bitte geben Sie das Mantra ein. Dies ist ein geheimer Satz, der aus\n"
"beliebigen Zeichen bestehen kann. Was Sie eingegeben wird nicht angezeigt.\n"
"\n"
"Zur ihrer eigenen Sicherbeit benutzen Sie bitte einen Satz, den sie sich\n"
"gut merken könne, der aber nicht leicht zu erraten ist; Zitate und andere\n"
"bekannte Texte sind eine SCHLECHTE Wahl, da diese mit Sicherheit online\n"
"verfügbar sind und durch entsprechende Programme zum Raten des Mantras\n"
"benutzt werden. Sätze mit persönlicher Bedeutung, die auch noch durch\n"
"falsche Groß-/Kleinschreibung und eingestreute Sonderzeichen verändert "
"werden,\n"
"sind i.d.R. eine gute Wahl"
#: g10/helptext.c:182
msgid "passphrase.repeat"
msgstr ""
"Um sicher zu gehen, daß Sie sich bei der Eingabe des Mantras nicht\n"
"vertippt haben, geben Sie diese bitte nochmal ein. Nur wenn beide Eingaben\n"
"übereinstimmen, wird das Mantra akzeptiert."
# "Give the name fo the file to which the signature applies"
#: g10/helptext.c:186
msgid "detached_signature.filename"
msgstr ""
"Geben Sie den Namen der Datei an, zu dem die abgetrennte Unterschrift gehört"
# "Answer \"yes\" if it is okay to overwrite the file"
#: g10/helptext.c:190
msgid "openfile.overwrite.okay"
msgstr "Geben Sie \"ja\" ein, wenn Sie die Datei überschreiben möchten"
#: g10/helptext.c:204
msgid "No help available"
msgstr "Keine Hilfe vorhanden."
#: g10/helptext.c:216
#, c-format
msgid "No help available for `%s'"
msgstr "Keine Hilfe für '%s' vorhanden."
+#~ msgid "second"
+#~ msgstr "Sekunde"
+
+#~ msgid "seconds"
+#~ msgstr "Sekunden"
+
#~ msgid "invalid clear text header: "
#~ msgstr "ungültige Klartexteinleitung"
#~ msgid "LID %lu: changing trust from %u to %u\n"
#~ msgstr "LID %lu: Ändern des 'Trusts' von %u auf %u\n"
#~ msgid "LID %lu: setting trust to %u\n"
#~ msgstr "LID %lu: Setze 'Trust' auf %u\n"
#~ msgid "This key belongs to us (we have the secret key)\n"
#~ msgstr ""
#~ "Dieser Schlüssel gehört uns (alldieweil wir den geheimen Schlüssel dazu "
#~ "haben)\n"
#~ msgid "You will see a list of signators etc. here\n"
#~ msgstr "Sie sollten hier eigentlich eine Liste der Signierer sehen.\n"
#, fuzzy
#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: good signature (3)\n"
#~ msgstr "Schlüssel %08lX: Ungültige Eigenbeglaubigung\n"
#, fuzzy
#~ msgid ""
#~ "key %08lX.%lu, uid %02X%02X, sig %08lX: very strange: no public key\n"
#~ msgstr "Schlüssel %08lX: Keine User-ID für Signatur\n"
#, fuzzy
#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: invalid signature: %s\n"
#~ msgstr "Schlüssel %08lX: Ungültige Eigenbeglaubigung\n"
#, fuzzy
#~ msgid "key %08lX.%lu, uid %02X%02X: good self-signature\n"
#~ msgstr "Schlüssel %08lX: Ungültige Eigenbeglaubigung\n"
#, fuzzy
#~ msgid ""
#~ "key %08lX.%lu, uid %02X%02X, sig %08lX: duplicated signature - deleted\n"
#~ msgstr "Schlüssel %08lX: Ungültige Eigensignatur\n"
#, fuzzy
#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: good signature (1)\n"
#~ msgstr "Schlüssel %08lX: Ungültige Eigensignatur\n"
#, fuzzy
#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: weird: no public key\n"
#~ msgstr "Schlüssel %08lX: Keine User-ID für Signatur\n"
#, fuzzy
#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: good signature (2)\n"
#~ msgstr "Schlüssel %08lX: Ungültige Eigensignatur\n"
#, fuzzy
#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: no public key\n"
#~ msgstr "Schlüssel %08lX: Keine User-ID für Signatur\n"
#~ msgid "key %08lX: already in ultikey_table\n"
#~ msgstr "Schlüssel %08lX: bereits in der Tabelle der geheime Schlüssel\n"
#~ msgid "can't write keyring\n"
#~ msgstr "kann Schlüsselbund nicht schreiben\n"
#~ msgid "make a signature on a key in the keyring"
#~ msgstr "Schlüssel signieren"
#~ msgid "edit a key signature"
#~ msgstr "Bearbeiten der Signaturen eines Schlüssels"
#~ msgid "do not make any changes"
#~ msgstr "Keine wirklichen Änderungen durchführen"
#~ 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.\n"
#~ msgstr ""
#~ "Sie müssen selbt entscheiden, welchen Wert Sie hier eintragen; dieser Wert\n"
#~ "wird niemals an eine dritte Seite weitergegeben. Wir brauchen diesen Wert,\n"
#~ "um das \"Netz des Vertrauens\" aufzubauen. Dieses hat nichts mit dem "
#~ "(implizit\n"
#~ "erzeugten) \"Netz der Zertifikate\" zu tun.\n"
#~ msgid "public and secret subkey created.\n"
#~ msgstr "Öffentlicher und geheimer Schlüssel erzeugt.\n"
#~ msgid "No public key for %d signatures\n"
#~ msgstr "Kein öffentlicher Schlüssel für %d Signaturen\n"
#~ msgid "[User name not available] "
#~ msgstr "[Benuzername nicht verfügbar] "
#~ msgid "This is a BAD signature!\n"
#~ msgstr "Dies ist eine FALSCHE Signatur!\n"
#~ msgid "The signature could not be checked!\n"
#~ msgstr "Die Signatur konnte nicht geprüft werden!\n"
#~ msgid "Checking signatures of this public key certificate:\n"
#~ msgstr "Die Signaturen dieses Zertifikats werden überprüft:\n"
#~ msgid "Do you want to remove some of the invalid signatures? "
#~ msgstr "Möchten Sie einige der ungültigen Signaturen entfernen? "
#~ msgid "there is a secret key for this public key!\n"
#~ msgstr ""
#~ "Es gibt einen privaten Schlüssel zu diesem öffentlichen Schlüssel!\n"
#~ msgid "use option \"--delete-secret-key\" to delete it first.\n"
#~ msgstr ""
#~ "Benutzen Sie das Kommando \"--delete-secret-key\", um ihn vorab zu "
#~ "entfernen.\n"
#~ msgid "can't do that in batchmode without \"--yes\"\n"
#~ msgstr "Dies kann im Batchmodus ohne \"--yes\" nicht durchgeführt werden.\n"
#~ msgid "Delete this key from the keyring? "
#~ msgstr "Diesen Schlüssel aus dem Schlüsselbund löschen? "
#~ msgid "This is a secret key! - really delete? "
#~ msgstr "Dies ist ein privater Schlüssel! - Wirklich löschen? "
diff --git a/po/es_ES.po b/po/es_ES.po
index 746c94a49..030247bbd 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -1,3194 +1,3178 @@
# Spanish messages for gnupg
# Urko Lusa <ulusa@lacueva.ddns.org>, 1998
# I've tried to mantain the terminology used by Armando Ramos
# <armando@clerval.org> is his PGP 2.3.6i translation.
# I also got inspiration from it.po by Marco d'Itri <md@linux.it>
msgid ""
msgstr ""
-"POT-Creation-Date: 1999-01-09 18:31+0100\n"
+"POT-Creation-Date: 1999-01-20 22:45+0100\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Date: 1998-11-13 10:49:25+0100\n"
"From: Urko Lusa <ulusa@lacueva.ddns.org>\n"
+"Updated: 1998-01-12\n"
+"By: Luca Olivetti <luca@luca.ddns.org>\n"
"Xgettext-Options: --default-domain=gnupg --directory=.. --add-comments "
"--keyword=_ --keyword=N_ --files-from=./POTFILES.in\n"
"Files: util/secmem.c util/argparse.c cipher/random.c cipher/rand-dummy.c "
"cipher/rand-unix.c cipher/rand-w32.c g10/g10.c g10/pkclist.c g10/keygen.c "
"g10/decrypt.c g10/encode.c g10/import.c g10/keyedit.c g10/keylist.c "
"g10/mainproc.c g10/passphrase.c g10/plaintext.c g10/pref.c g10/seckey-cert.c "
"g10/sig-check.c g10/sign.c g10/trustdb.c g10/verify.c\n"
#: util/secmem.c:77
msgid "Warning: using insecure memory!\n"
msgstr "Aviso: ¡se está usando memoria insegura!\n"
#: util/miscutil.c:143
msgid "yes"
msgstr "sí"
#: util/miscutil.c:144
msgid "yY"
msgstr "sS"
#: util/errors.c:54
-#, fuzzy
msgid "general error"
msgstr "Error general"
#: util/errors.c:55
-#, fuzzy
msgid "unknown packet type"
msgstr "Formato desconocido"
#: util/errors.c:56
-#, fuzzy
msgid "unknown version"
msgstr "Versión desconocida"
#: util/errors.c:57
-#, fuzzy
msgid "unknown pubkey algorithm"
msgstr "Algoritmo de clave pública desconocido"
#: util/errors.c:58
-#, fuzzy
msgid "unknown digest algorithm"
msgstr "Algoritmo desconocido de resumen de mensaje"
#: util/errors.c:59
-#, fuzzy
msgid "bad public key"
msgstr "Clave pública incorrecta"
#: util/errors.c:60
-#, fuzzy
msgid "bad secret key"
msgstr "Clave secreta incorrecta"
#: util/errors.c:61
-#, fuzzy
msgid "bad signature"
msgstr "Firma incorrecta"
#: util/errors.c:62
-#, fuzzy
msgid "checksum error"
msgstr "Error en suma de comprobación"
#: util/errors.c:63
-#, fuzzy
msgid "bad passphrase"
msgstr "Contraseña incorrecta"
#: util/errors.c:64
-#, fuzzy
msgid "public key not found"
msgstr "Clave pública no encontrada"
#: util/errors.c:65
-#, fuzzy
msgid "unknown cipher algorithm"
msgstr "Algoritmo de cifrado desconocido"
#: util/errors.c:66
-#, fuzzy
msgid "can't open the keyring"
msgstr "No se puede abrir el anillo"
#: util/errors.c:67
-#, fuzzy
msgid "invalid packet"
msgstr "Valor no válido"
#: util/errors.c:68
-#, fuzzy
msgid "invalid armor"
msgstr "Armadura no válida"
#: util/errors.c:69
-#, fuzzy
msgid "no such user id"
msgstr "No existe el identificativo de usuario"
#: util/errors.c:70
-#, fuzzy
msgid "secret key not available"
msgstr "Clave secreta no disponible"
#: util/errors.c:71
-#, fuzzy
msgid "wrong secret key used"
msgstr "Clave secreta incorrecta"
#: util/errors.c:72
-#, fuzzy
msgid "not supported"
msgstr "No soportado"
#: util/errors.c:73
-#, fuzzy
msgid "bad key"
msgstr "Clave incorrecta"
#: util/errors.c:74
-#, fuzzy
msgid "file read error"
msgstr "Error de lectura"
#: util/errors.c:75
-#, fuzzy
msgid "file write error"
msgstr "Error de escritura"
#: util/errors.c:76
-#, fuzzy
msgid "unknown compress algorithm"
msgstr "Algoritmo de compresión desconocido"
#: util/errors.c:77
-#, fuzzy
msgid "file open error"
msgstr "Error al abrir fichero"
#: util/errors.c:78
-#, fuzzy
msgid "file create error"
-msgstr "Error al cerrar fichero"
+msgstr "Error al crear fichero"
#: util/errors.c:79
-#, fuzzy
msgid "invalid passphrase"
msgstr "Contraseña incorrecta"
#: util/errors.c:80
-#, fuzzy
msgid "unimplemented pubkey algorithm"
msgstr "Algoritmo de clave pública no implementado"
#: util/errors.c:81
-#, fuzzy
msgid "unimplemented cipher algorithm"
msgstr "Algoritmo de cifrado no implementado"
#: util/errors.c:82
-#, fuzzy
msgid "unknown signature class"
msgstr "Clase de firma desconocida"
#: util/errors.c:83
-#, fuzzy
msgid "trust database error"
msgstr "Error en la base de datos de confianza"
#: util/errors.c:84
-#, fuzzy
msgid "bad MPI"
msgstr "MPI incorrecto"
#: util/errors.c:85
-#, fuzzy
msgid "resource limit"
msgstr "Límite de recurso"
#: util/errors.c:86
-#, fuzzy
msgid "invalid keyring"
msgstr "Anillo no válido"
#: util/errors.c:87
-#, fuzzy
msgid "bad certificate"
msgstr "Certificado incorrecto"
#: util/errors.c:88
-#, fuzzy
msgid "malformed user id"
msgstr "Identificativo de usuario mal formado"
#: util/errors.c:89
-#, fuzzy
msgid "file close error"
msgstr "Error al cerrar fichero"
#: util/errors.c:90
-#, fuzzy
msgid "file rename error"
msgstr "Error al renombrar fichero"
#: util/errors.c:91
-#, fuzzy
msgid "file delete error"
msgstr "Error al borrar fichero"
#: util/errors.c:92
-#, fuzzy
msgid "unexpected data"
msgstr "Datos inesperados"
#: util/errors.c:93
-#, fuzzy
msgid "timestamp conflict"
msgstr "Conflicto con sello de fecha"
#: util/errors.c:94
-#, fuzzy
msgid "unusable pubkey algorithm"
msgstr "Algoritmo de clave pública no utilizable"
#: util/errors.c:95
-#, fuzzy
msgid "file exists"
msgstr "El fichero existe. "
#: util/errors.c:96
-#, fuzzy
msgid "weak key"
msgstr "Clave débil"
+#: util/errors.c:97
+#, fuzzy
+msgid "invalid argument"
+msgstr "Armadura no válida"
+
+#: util/errors.c:98
+#, fuzzy
+msgid "bad URI"
+msgstr "MPI incorrecto"
+
+#: util/errors.c:99
+#, fuzzy
+msgid "unsupported URI"
+msgstr "No soportado"
+
+#: util/errors.c:100
+#, fuzzy
+msgid "network error"
+msgstr "Error general"
+
#: util/logger.c:178
-#, fuzzy, c-format
+#, c-format
msgid "... this is a bug (%s:%d:%s)\n"
msgstr "¡Oh! vaya... esto es un bug (%s:%d:%s)\n"
#: util/logger.c:184
#, c-format
msgid "you found a bug ... (%s:%d)\n"
msgstr "Ha encontrado Vd. un bug... (%s:%d)\n"
-#: cipher/random.c:405
-#, fuzzy
+#: cipher/random.c:412
msgid "WARNING: using insecure random number generator!!\n"
msgstr "Aviso: ¡se está usando un generador de números aleatorios inseguro!\n"
-#: cipher/random.c:406
+#: cipher/random.c:413
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 ""
"EL generador de números aleatorios es sólo un apaño\n"
"para poder compilar. ¡No es en absoluto seguro!\n"
"\n"
"¡NO USE NINGÚN DATO GENERADO POR ESTE PROGRAMA!\n"
"\n"
#: cipher/rndlinux.c:118
#, c-format
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"
"No hay suficientes bytes aleatorios disponibles. Por favor, haga algún\n"
"otro trabajo para que el sistema pueda recolectar más entropía\n"
"(se necesitan %d bytes más).\n"
-#: g10/g10.c:160
+#: g10/g10.c:163
msgid ""
"@Commands:\n"
" "
msgstr ""
"@Comandos:\n"
" "
-#: g10/g10.c:163
+#: g10/g10.c:166
msgid "|[file]|make a signature"
msgstr "|[file]|hace una firma"
-#: g10/g10.c:164
+#: g10/g10.c:167
msgid "|[file]|make a clear text signature"
msgstr "|[file]|hace una firma en texto claro"
-#: g10/g10.c:165
+#: g10/g10.c:168
msgid "make a detached signature"
msgstr "hace una firma separada"
-#: g10/g10.c:166
+#: g10/g10.c:169
msgid "encrypt data"
msgstr "cifra datos"
-#: g10/g10.c:167
+#: g10/g10.c:170
msgid "encryption only with symmetric cipher"
msgstr "cifra sólo con un cifrado simétrico"
-#: g10/g10.c:168
+#: g10/g10.c:171
msgid "store only"
msgstr "sólo almacenar"
-#: g10/g10.c:169
+#: g10/g10.c:172
msgid "decrypt data (default)"
msgstr "descifra datos (predefinido)"
-#: g10/g10.c:170
+#: g10/g10.c:173
msgid "verify a signature"
msgstr "verifica una firma"
-#: g10/g10.c:172
+#: g10/g10.c:175
msgid "list keys"
msgstr "lista las claves"
-#: g10/g10.c:173
+#: g10/g10.c:176
msgid "list keys and signatures"
msgstr "lista las claves y firmas"
-#: g10/g10.c:174
+#: g10/g10.c:177
msgid "check key signatures"
msgstr "comprueba las firmas de las claves"
-#: g10/g10.c:175
+#: g10/g10.c:178
msgid "list keys and fingerprints"
msgstr "lista las claves y huellas dactilares"
-#: g10/g10.c:176
+#: g10/g10.c:179
msgid "list secret keys"
msgstr "lista las claves secretas"
-#: g10/g10.c:178
+#: g10/g10.c:181
msgid "generate a new key pair"
msgstr "genera un nuevo par de claves"
-#: g10/g10.c:180
+#: g10/g10.c:183
msgid "remove key from the public keyring"
msgstr "elimina la clave del anillo público"
-#: g10/g10.c:182
+#: g10/g10.c:185
msgid "sign or edit a key"
msgstr "firma o modifica una clave"
-#: g10/g10.c:183
+#: g10/g10.c:186
msgid "generate a revocation certificate"
msgstr "genera un certificado de revocación"
-#: g10/g10.c:185
+#: g10/g10.c:188
msgid "export keys"
msgstr "exporta las claves"
-#: g10/g10.c:188
+#: g10/g10.c:189
+msgid "export keys to a key server"
+msgstr ""
+
+#: g10/g10.c:192
msgid "import/merge keys"
msgstr "importa/fusiona las claves"
-#: g10/g10.c:190
+#: g10/g10.c:194
msgid "list only the sequence of packets"
msgstr "lista sólo la secuencia de paquetes"
-#: g10/g10.c:193
+#: g10/g10.c:197
msgid "export the ownertrust values"
msgstr "exporta los valores de confianza"
-#: g10/g10.c:195
+#: g10/g10.c:199
msgid "import ownertrust values"
msgstr "importa los valores de confianza"
-#: g10/g10.c:197
+#: g10/g10.c:201
msgid "|[NAMES]|update the trust database"
msgstr "|[NOMBRES]|actualiza la base de datos de confianza"
-#: g10/g10.c:199
+#: g10/g10.c:203
msgid "|[NAMES]|check the trust database"
msgstr "|[NOMBRES]|comprueba la base de datos de confianza"
-#: g10/g10.c:200
+#: g10/g10.c:204
msgid "fix a corrupted trust database"
msgstr "arregla una base de datos de confianza dañada"
-#: g10/g10.c:201
+#: g10/g10.c:205
msgid "De-Armor a file or stdin"
msgstr "quita la armadura de un fichero o stdin"
-#: g10/g10.c:202
+#: g10/g10.c:206
msgid "En-Armor a file or stdin"
msgstr "crea la armadura a un fichero o stdin"
-#: g10/g10.c:203
+#: g10/g10.c:207
msgid "|algo [files]|print message digests"
msgstr "|algo [files]|imprime resúmenes de mensaje"
-#: g10/g10.c:204
+#: g10/g10.c:208
msgid "print all message digests"
msgstr "imprime todos los resúmenes de mensaje"
-#: g10/g10.c:211
+#: g10/g10.c:215
msgid ""
"@\n"
"Options:\n"
" "
msgstr ""
"@\n"
"Opciones:\n"
" "
-#: g10/g10.c:213
+#: g10/g10.c:217
msgid "create ascii armored output"
msgstr "crea una salida ascii con armadura"
-#: g10/g10.c:215
+#: g10/g10.c:219
msgid "use this user-id to sign or decrypt"
msgstr "usa este usuario para firmar o descifrar"
-#: g10/g10.c:216
+#: g10/g10.c:220
msgid "use this user-id for encryption"
msgstr "usa este usuario para cifrar"
-#: g10/g10.c:217
+#: g10/g10.c:221
msgid "|N|set compress level N (0 disables)"
msgstr "|N|establece nivel de compresión N (0 no comprime)"
-#: g10/g10.c:219
+#: g10/g10.c:223
msgid "use canonical text mode"
msgstr "usa modo de texto canónico"
-#: g10/g10.c:221
+#: g10/g10.c:225
msgid "use as output file"
msgstr "usa como fichero de salida"
-#: g10/g10.c:222
+#: g10/g10.c:226
msgid "verbose"
msgstr "prolijo"
-#: g10/g10.c:223
+#: g10/g10.c:227
msgid "be somewhat more quiet"
-msgstr ""
+msgstr "algo más discreto"
-#: g10/g10.c:224
+#: g10/g10.c:228
msgid "force v3 signatures"
msgstr "fuerza firmas v3"
#. { oDryRun, "dry-run", 0, N_("do not make any changes") },
-#: g10/g10.c:226
+#: g10/g10.c:230
msgid "batch mode: never ask"
msgstr "proceso por lotes: nunca preguntar"
-#: g10/g10.c:227
+#: g10/g10.c:231
msgid "assume yes on most questions"
msgstr "asume \"sí\" en casi todas las preguntas"
-#: g10/g10.c:228
+#: g10/g10.c:232
msgid "assume no on most questions"
msgstr "asume \"no\" en casi todas las preguntas"
-#: g10/g10.c:229
+#: g10/g10.c:233
msgid "add this keyring to the list of keyrings"
msgstr "añade este anillo a la lista de anillos"
-#: g10/g10.c:230
+#: g10/g10.c:234
msgid "add this secret keyring to the list"
msgstr "añade este anillo secreto a la lista"
-#: g10/g10.c:231
+#: g10/g10.c:235
msgid "|NAME|use NAME as default secret key"
msgstr "|NOMBRE|usa NOMBRE como clave secreta por defecto"
-#: g10/g10.c:232
-#, fuzzy
+#: g10/g10.c:236
+msgid "|HOST|use this keyserver to lookup keys"
+msgstr ""
+
+#: g10/g10.c:237
msgid "|NAME|set terminal charset to NAME"
-msgstr "|NOMBRE|usa el algoritmo de cifrado NOMBRE"
+msgstr "|NOMBRE|usa el juego de caracteres NOMBRE"
-#: g10/g10.c:233
+#: g10/g10.c:238
msgid "read options from file"
msgstr "lee opciones del fichero"
-#: g10/g10.c:235
+#: g10/g10.c:240
msgid "set debugging flags"
msgstr "establece los parámetros de depuración"
-#: g10/g10.c:236
+#: g10/g10.c:241
msgid "enable full debugging"
msgstr "habilita depuración completa"
-#: g10/g10.c:237
+#: g10/g10.c:242
msgid "|FD|write status info to this FD"
msgstr "|DF|escribe información de estado en descriptor DF"
-#: g10/g10.c:238
+#: g10/g10.c:243
msgid "do not write comment packets"
msgstr "no escribe paquetes de comentario"
-#: g10/g10.c:239
+#: g10/g10.c:244
msgid "(default is 1)"
msgstr "(por defecto es 1)"
-#: g10/g10.c:240
+#: g10/g10.c:245
msgid "(default is 3)"
msgstr "(por defecto es 3)"
-#: g10/g10.c:242
+#: g10/g10.c:247
msgid "|KEYID|ulimately trust this key"
-msgstr ""
+msgstr "|ID-CLAVE|confía plenamente en esta clave"
-#: g10/g10.c:243
+#: g10/g10.c:248
msgid "|FILE|load extension module FILE"
msgstr "|FICHERO|carga módulo de extensiones FICHERO"
-#: g10/g10.c:244
+#: g10/g10.c:249
msgid "emulate the mode described in RFC1991"
msgstr "emula el modo descrito en la RFC1991"
-#: g10/g10.c:245
+#: g10/g10.c:250
msgid "|N|use passphrase mode N"
msgstr "|N|usa modo de contraseña N"
-#: g10/g10.c:247
+#: g10/g10.c:252
msgid "|NAME|use message digest algorithm NAME for passphrases"
msgstr ""
"|NOMBRE|usa algoritmo de resumen de mensaje NOMBRE\n"
"para las contraseñas"
-#: g10/g10.c:249
+#: g10/g10.c:254
msgid "|NAME|use cipher algorithm NAME for passphrases"
msgstr ""
"|NOMBRE|usa el algoritmo de cifrado NOMBRE para las\n"
"contraseñas"
-#: g10/g10.c:251
+#: g10/g10.c:256
msgid "|NAME|use cipher algorithm NAME"
msgstr "|NOMBRE|usa el algoritmo de cifrado NOMBRE"
-#: g10/g10.c:252
+#: g10/g10.c:257
msgid "|NAME|use message digest algorithm NAME"
msgstr "|NOMBRE|usa algoritmo de resumen de mensaje NOMBRE"
-#: g10/g10.c:253
+#: g10/g10.c:258
msgid "|N|use compress algorithm N"
msgstr "|N|usa el algoritmo de compresión N"
-#: g10/g10.c:254
+#: g10/g10.c:259
msgid "throw keyid field of encrypted packets"
msgstr "elimina el campo keyid de los paquetes cifrados"
-#: g10/g10.c:262
+#: g10/g10.c:267
msgid ""
"@\n"
"Examples:\n"
"\n"
" -se -r Bob [file] sign and encrypt for user Bob\n"
" --clearsign [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"
msgstr ""
"@\n"
"Ejemplos:\n"
"\n"
" -se -r Bob [fichero] firma y cifra para el usuario Bob\n"
" --clearsign [fichero] hace una firma manteniendo el texto sin cifrar\n"
" --detach-sign [fichero] hace una firma separada\n"
" --list-keys [nombres] muestra las claves\n"
" --fingerprint [nombres] muestra las huellas dactilares\n"
-#: g10/g10.c:341
+#: g10/g10.c:346
msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
msgstr "Por favor, informe de posibles \"bugs\" a <gnupg-bugs@gnu.org>.\n"
-#: g10/g10.c:346
+#: g10/g10.c:351
msgid "Usage: gpgm [options] [files] (-h for help)"
msgstr "Uso: gpgm [opciones] [ficheros] (-h para ayuda)"
-#: g10/g10.c:348
+#: g10/g10.c:353
msgid "Usage: gpg [options] [files] (-h for help)"
msgstr "Uso: gpg [opciones] [ficheros] (-h para ayuda)"
-#: g10/g10.c:353
+#: g10/g10.c:358
msgid ""
"Syntax: gpgm [options] [files]\n"
"GnuPG maintenance utility\n"
msgstr ""
"Sintaxis: gpgm [opciones] [ficheros]\n"
"Utilidad de mantenimiento de GnuPG\n"
-#: g10/g10.c:356
+#: g10/g10.c:361
msgid ""
"Syntax: gpg [options] [files]\n"
"sign, check, encrypt or decrypt\n"
"default operation depends on the input data\n"
msgstr ""
"Sintaxis: gpg [opciones] [ficheros]\n"
"firma, comprueba, cifra o descifra\n"
"la operación por defecto depende del tipo de datos de entrada\n"
-#: g10/g10.c:362
+#: g10/g10.c:367
msgid ""
"\n"
"Supported algorithms:\n"
msgstr ""
"\n"
"Algoritmos soportados:\n"
-#: g10/g10.c:437
+#: g10/g10.c:442
msgid "usage: gpgm [options] "
msgstr "uso: gpgm [opciones] "
-#: g10/g10.c:439
+#: g10/g10.c:444
msgid "usage: gpg [options] "
msgstr "uso: gpg [opciones] "
-#: g10/g10.c:480
+#: g10/g10.c:485
msgid "conflicting commands\n"
msgstr "comandos incompatibles\n"
-#: g10/g10.c:618
-#, fuzzy, c-format
+#: g10/g10.c:623
+#, c-format
msgid "NOTE: no default option file `%s'\n"
msgstr "nota: no existe fichero de opciones predefinido `%s'\n"
-#: g10/g10.c:622
+#: g10/g10.c:627
#, c-format
msgid "option file `%s': %s\n"
msgstr "fichero de opciones `%s': %s\n"
-#: g10/g10.c:629
+#: g10/g10.c:634
#, c-format
msgid "reading options from `%s'\n"
msgstr "leyendo opciones desde `%s'\n"
-#: g10/g10.c:782
-#, fuzzy, c-format
+#: g10/g10.c:788
+#, c-format
msgid "%s is not a valid character set\n"
-msgstr "Caracter no válido en el comentario\n"
+msgstr "%s no es un juego de caracteres válido\n"
-#: g10/g10.c:817 g10/g10.c:829
+#: g10/g10.c:824 g10/g10.c:836
msgid "selected cipher algorithm is invalid\n"
-msgstr "el algoritmo de cifra seleccionado no es válido\n"
+msgstr "el algoritmo de cifrado seleccionado no es válido\n"
-#: g10/g10.c:823 g10/g10.c:835
+#: g10/g10.c:830 g10/g10.c:842
msgid "selected digest algorithm is invalid\n"
msgstr "el algoritmo de resumen seleccionado no es válido\n"
-#: g10/g10.c:838
+#: g10/g10.c:845
#, c-format
msgid "compress algorithm must be in range %d..%d\n"
msgstr "el algoritmo de compresión debe estar en el rango %d-%d\n"
-#: g10/g10.c:840
+#: g10/g10.c:847
msgid "completes-needed must be greater than 0\n"
msgstr "completes-needed debe ser mayor que 0\n"
-#: g10/g10.c:842
+#: g10/g10.c:849
msgid "marginals-needed must be greater than 1\n"
msgstr "marginals-needed debe ser mayor que 1\n"
-#: g10/g10.c:844
+#: g10/g10.c:851
msgid "max-cert-depth must be in range 1 to 255\n"
-msgstr ""
+msgstr "max-cert-depth debe estar en el rango 1-255\n"
-#: g10/g10.c:847
-#, fuzzy
+#: g10/g10.c:854
msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
msgstr "nota: el modo S2K simple (0) no es nada recomendable\n"
-#: g10/g10.c:851
+#: g10/g10.c:858
msgid "invalid S2K mode; must be 0, 1 or 3\n"
msgstr "modo S2K incorrecto; debe ser 0, 1 o 3\n"
-#: g10/g10.c:934
+#: g10/g10.c:941
#, c-format
msgid "failed to initialize the TrustDB: %s\n"
-msgstr "inicialización de la base de datos de confianza `%s' fallida\n"
+msgstr "inicialización de la base de datos de confianza fallida: %s\n"
-#: g10/g10.c:940
+#: g10/g10.c:947
msgid "--store [filename]"
msgstr "--store [nombre_fichero]"
-#: g10/g10.c:948
+#: g10/g10.c:955
msgid "--symmetric [filename]"
msgstr "--symmetric [nombre_fichero]"
-#: g10/g10.c:956
+#: g10/g10.c:963
msgid "--encrypt [filename]"
msgstr "--encrypt [nombre_fichero]"
-#: g10/g10.c:969
+#: g10/g10.c:976
msgid "--sign [filename]"
msgstr "--sign [nombre_fichero]"
-#: g10/g10.c:982
+#: g10/g10.c:989
msgid "--sign --encrypt [filename]"
msgstr "--sign --encrypt [nombre_fichero]"
-#: g10/g10.c:996
+#: g10/g10.c:1003
msgid "--clearsign [filename]"
msgstr "--clearsign [nombre_fichero]"
-#: g10/g10.c:1008
+#: g10/g10.c:1015
msgid "--decrypt [filename]"
msgstr "--decrypt [nombre_fichero]"
-#: g10/g10.c:1017
-#, fuzzy
+#: g10/g10.c:1024
msgid "--edit-key username [commands]"
msgstr "--edit-key nombre_usuario"
-#: g10/g10.c:1033
+#: g10/g10.c:1040
msgid "--delete-secret-key username"
msgstr "--delete-secret-key nombre_usuario"
-#: g10/g10.c:1036
+#: g10/g10.c:1043
msgid "--delete-key username"
msgstr "--delete-key nombre_usuario"
-#: g10/encode.c:216 g10/g10.c:1059 g10/sign.c:301
+#: g10/encode.c:216 g10/g10.c:1066 g10/sign.c:311
#, c-format
msgid "can't open %s: %s\n"
msgstr "no puede abrirse `%s': %s\n"
-#: g10/g10.c:1070
+#: g10/g10.c:1077
msgid "-k[v][v][v][c] [userid] [keyring]"
msgstr "-k[v][v][v][c] [id_usuario] [anillo]"
-#: g10/g10.c:1127
+#: g10/g10.c:1138
#, c-format
msgid "dearmoring failed: %s\n"
msgstr "eliminación de armadura fallida: %s\n"
-#: g10/g10.c:1135
+#: g10/g10.c:1146
#, c-format
msgid "enarmoring failed: %s\n"
msgstr "creación de armadura fallida: %s\n"
-#: g10/g10.c:1201
+#: g10/g10.c:1212
#, c-format
msgid "invalid hash algorithm `%s'\n"
msgstr "algoritmo de distribución no válido `%s'\n"
-#: g10/g10.c:1280
+#: g10/g10.c:1291
msgid "[filename]"
msgstr "[nombre_fichero]"
-#: g10/g10.c:1284
+#: g10/g10.c:1295
msgid "Go ahead and type your message ...\n"
-msgstr ""
+msgstr "Adelante, teclee el mensaje ...\n"
-#: g10/decrypt.c:59 g10/g10.c:1287 g10/verify.c:66
+#: g10/decrypt.c:59 g10/g10.c:1298 g10/verify.c:66
#, c-format
msgid "can't open `%s'\n"
msgstr "no puede abrirse `%s'\n"
-#: g10/armor.c:321
+#: g10/armor.c:297
#, c-format
msgid "armor: %s\n"
msgstr "armadura: %s\n"
-#: g10/armor.c:344
+#: g10/armor.c:320
msgid "invalid armor header: "
msgstr "cabecera de armadura no válida: "
-#: g10/armor.c:351
+#: g10/armor.c:327
msgid "armor header: "
msgstr "cabecera de armadura: "
-#: g10/armor.c:362
+#: g10/armor.c:338
msgid "invalid clearsig header\n"
msgstr "cabecera de firma clara no válida\n"
-#: g10/armor.c:414
-#, fuzzy
+#: g10/armor.c:390
msgid "nested clear text signatures\n"
-msgstr "|[file]|hace una firma en texto claro"
+msgstr "firmas en texto claro anidadas\n"
-#: g10/armor.c:530
+#: g10/armor.c:508
msgid "invalid dash escaped line: "
msgstr "Línea con guiones no válida: "
-#: g10/armor.c:538
-#, fuzzy
+#: g10/armor.c:516
msgid "unexpected armor:"
-msgstr "Datos inesperados"
+msgstr "armadura inesperada"
-#: g10/armor.c:624
+#: g10/armor.c:632
#, c-format
msgid "invalid radix64 character %02x skipped\n"
msgstr "caracteres no válidos radix64 %02x ignorados\n"
-#: g10/armor.c:654
+#: g10/armor.c:675
msgid "premature eof (no CRC)\n"
msgstr "Fin de fichero prematuro\n"
-#: g10/armor.c:671
+#: g10/armor.c:709
msgid "premature eof (in CRC)\n"
msgstr "Fin de suma de comprobación prematuro\n"
-#: g10/armor.c:675
+#: g10/armor.c:713
msgid "malformed CRC\n"
msgstr "Suma de comprobación mal creada\n"
-#: g10/armor.c:679
+#: g10/armor.c:717
#, c-format
msgid "CRC error; %06lx - %06lx\n"
msgstr "Error en suma de comprobación: %06lx - %06lx\n"
-#: g10/armor.c:696
+#: g10/armor.c:734
msgid "premature eof (in Trailer)\n"
-msgstr ""
+msgstr "fin de fichero prematuro (en el cierre)\n"
-#: g10/armor.c:700
+#: g10/armor.c:738
msgid "error in trailer line\n"
-msgstr ""
+msgstr "error en la línea de cierre\n"
-#: g10/armor.c:961
-#, fuzzy
+#: g10/armor.c:999
msgid "no valid OpenPGP data found.\n"
-msgstr "RFC1991 no válida o datos OpenPGP no encontrados\n"
+msgstr "no se han encontrados datos OpenPGP válidos\n"
-#: g10/armor.c:963
+#: g10/armor.c:1001
#, c-format
msgid "invalid armor: line longer than %d characters\n"
+msgstr "armadura inválida: línea más larga de %d caracteres\n"
+
+#: g10/armor.c:1005
+msgid ""
+"quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr ""
#: g10/pkclist.c:138
-#, fuzzy, c-format
+#, c-format
msgid ""
"No trust value assigned to %lu:\n"
"%4u%c/%08lX %s \""
msgstr ""
"No hay confianza definida para el propietario %lu:\n"
"%4u%c/%08lX %s \""
#: g10/pkclist.c:148
msgid ""
"Please decide how far you trust this user to correctly\n"
"verify other users' keys (by looking at passports,\n"
"checking fingerprints from different sources...)?\n"
"\n"
" 1 = Don't know\n"
" 2 = I do NOT trust\n"
" 3 = I trust marginally\n"
" 4 = I trust fully\n"
" s = please show me more information\n"
msgstr ""
"Por favor, decida su nivel de confianza para este que usuario\n"
"verifique las claves de otros usuarios (mirando pasaportes,\n"
"comprobando huellas dactilares en diferentes fuentes...)\n"
"\n"
" 1 = No lo sé\n"
" 2 = NO me fío\n"
" 3 = Me fío marginalmente\n"
" 4 = Me fío completamente\n"
" i = Mostrar más información\n"
#: g10/pkclist.c:157
msgid " m = back to the main menu\n"
msgstr " m = volver al menú principal\n"
#: g10/pkclist.c:159
msgid " q = quit\n"
-msgstr ""
+msgstr " q = salir\n"
#. a string with valid answers
#: g10/pkclist.c:164
-#, fuzzy
msgid "sSmMqQ"
msgstr "iImMqQ"
#: g10/pkclist.c:168
msgid "Your decision? "
msgstr "Su decisión: "
#: g10/pkclist.c:188
msgid "Certificates leading to an ultimately trusted key:\n"
-msgstr ""
+msgstr "Certificados que llevan a una clave de confianza absoluta:\n"
#: g10/pkclist.c:223
msgid ""
"Could not find a valid trust path to the key. Let's see whether we\n"
"can assign some missing owner trust values.\n"
"\n"
msgstr ""
-"No puede encontrarse una ruta de confianza váida para esta clave. Veamos\n"
+"No puede encontrarse una ruta de confianza válida para esta clave. Veamos\n"
"si es posible asignar algunos valores de confianza perdidos.\n"
"\n"
#: g10/pkclist.c:261
msgid ""
"No path leading to one of our keys found.\n"
"\n"
msgstr ""
+"No se ha encontrado ninguna ruta con una de nuestras claves.\n"
+"\n"
#: g10/pkclist.c:263
msgid ""
"No certificates with undefined trust found.\n"
"\n"
-msgstr ""
+msgstr "No se ha encontrado ningún certificado sin valor de confianza.\n"
#: g10/pkclist.c:265
-#, fuzzy
msgid ""
"No trust values changed.\n"
"\n"
msgstr ""
"No se cambió ningún valor de confianza.\n"
"\n"
#: g10/pkclist.c:280
-#, fuzzy, c-format
+#, c-format
msgid "key %08lX: key has been revoked!\n"
-msgstr "clave %08lX: aceptada como clave secreta.\n"
+msgstr "%08lX: ¡Esta clave ha sido retirada!\n"
#: g10/pkclist.c:286 g10/pkclist.c:381
msgid "Use this key anyway? "
msgstr "¿Usar esta clave de todas formas? "
#: g10/pkclist.c:308
-#, fuzzy, c-format
+#, c-format
msgid "%08lX: key has expired\n"
-msgstr "Nota: ¡Esta clave está caducada!\n"
+msgstr "%08lX: ¡Esta clave está caducada!\n"
#: g10/pkclist.c:314
#, c-format
msgid "%08lX: no info to calculate a trust probability\n"
-msgstr ""
+msgstr "%08lX: no hay información para calcular la probabilidad de confianza\n"
#: g10/pkclist.c:332
-#, fuzzy, c-format
+#, c-format
msgid "%08lX: We do NOT trust this key\n"
-msgstr "ATENCIÓN: ¡Esta firma NO es de confianza!\n"
+msgstr "%08lX: ¡Esta clave NO es de confianza!\n"
#: g10/pkclist.c:338
#, c-format
msgid ""
"%08lX: It is not sure that this key really belongs to the owner\n"
"but it is accepted anyway\n"
msgstr ""
+"%08lX: No hay seguridad que esta clave pertenezca realmente a su "
+"proprietario\n"
+"pero se acepta igualmente\n"
#: g10/pkclist.c:344
msgid "This key probably belongs to the owner\n"
-msgstr ""
+msgstr "Esta clave probablemente pertenece a su proprietario\n"
#: g10/pkclist.c:349
msgid "This key belongs to us\n"
-msgstr ""
+msgstr "Esta clave nos pertenece\n"
#: g10/pkclist.c:376
msgid ""
"It is NOT certain that the key belongs to its owner.\n"
"If you *really* know what you are doing, you may answer\n"
"the next question with yes\n"
"\n"
msgstr ""
"No es seguro que la clave pertenezca a su propietario.\n"
"Si *realmente* sabe lo que está haciendo, puede contestar\n"
"\"sí\" a la siguiente pregunta.\n"
"\n"
#: g10/pkclist.c:385
msgid "WARNING: Using untrusted key!\n"
msgstr "ATENCIÓN: ¡Usando una clave no fiable!\n"
#: g10/pkclist.c:421
msgid "WARNING: This key has been revoked by its owner!\n"
msgstr "ATENCIÓN: ¡Esta clave ha sido revocada por su propietario!\n"
#: g10/pkclist.c:422
msgid " This could mean that the signature is forgery.\n"
msgstr " Esto puede significar que la firma está falsificada.\n"
#: g10/pkclist.c:443
msgid "Note: This key has expired!\n"
msgstr "Nota: ¡Esta clave está caducada!\n"
#: g10/pkclist.c:450
msgid "WARNING: This key is not certified with a trusted signature!\n"
msgstr ""
"ATENCIÓN: ¡Esta clave no está certificada por una firma de confianza!\n"
#: g10/pkclist.c:452
msgid ""
" There is no indication that the signature belongs to the owner.\n"
msgstr " No hay indicios de que la firma pertenezca al propietario.\n"
#: g10/pkclist.c:468
msgid "WARNING: We do NOT trust this key!\n"
-msgstr "ATENCIÓN: ¡Esta firma NO es de confianza!\n"
+msgstr "ATENCIÓN: ¡Esta clave NO es de confianza!\n"
#: g10/pkclist.c:469
msgid " The signature is probably a FORGERY.\n"
msgstr " La firma es probablemente una FALSIFICACIÓN.\n"
#: g10/pkclist.c:476
msgid ""
"WARNING: This key is not certified with sufficiently trusted signatures!\n"
msgstr ""
"AVISO: ¡Esta clave no está certificada con suficientes firmas de confianza!\n"
#: g10/pkclist.c:479
msgid " It is not certain that the signature belongs to the owner.\n"
msgstr " No es seguro que la firma pertenezca al propietario.\n"
#: g10/pkclist.c:524
msgid ""
"You did not specify a user ID. (you may use \"-r\")\n"
"\n"
msgstr ""
"No se ha especificado un ID de usuario (puede usar \"-r\")\n"
"\n"
#: g10/pkclist.c:529
msgid "Enter the user ID: "
msgstr "Introduzca el ID de usuario: "
#: g10/pkclist.c:540
msgid "No such user ID.\n"
msgstr "ID de usuario inexistente.\n"
#: g10/pkclist.c:574 g10/pkclist.c:601
#, c-format
msgid "%s: skipped: %s\n"
msgstr "%s: ignorado: %s\n"
#: g10/pkclist.c:582
#, c-format
msgid "%s: error checking key: %s\n"
msgstr "%s: error comprobando la clave: %s\n"
#: g10/pkclist.c:608
msgid "no valid addressees\n"
msgstr "no hay direcciones válidas\n"
#: g10/keygen.c:124
msgid "writing self signature\n"
msgstr "escribiendo autofirma\n"
#: g10/keygen.c:162
msgid "writing key binding signature\n"
-msgstr ""
+msgstr "escribiendo la firma de comprobación de clave\n"
#: g10/keygen.c:388
msgid "Please select what kind of key you want:\n"
msgstr "Por favor seleccione tipo de clave deseado:\n"
#: g10/keygen.c:390
#, c-format
msgid " (%d) DSA and ElGamal (default)\n"
msgstr " (%d) DSA y ElGamal (por defecto)\n"
#: g10/keygen.c:391
#, c-format
msgid " (%d) DSA (sign only)\n"
msgstr " (%d) DSA (sólo firma)\n"
#: g10/keygen.c:393
#, c-format
msgid " (%d) ElGamal (encrypt only)\n"
msgstr " (%d) ElGamal (sólo cifrado)\n"
#: g10/keygen.c:394
#, c-format
msgid " (%d) ElGamal (sign and encrypt)\n"
msgstr " (%d) ElGamal (firma y cifrado)\n"
#: g10/keygen.c:396
#, c-format
msgid " (%d) ElGamal in a v3 packet\n"
msgstr " (%d) ElGamal en un paquete v3\n"
#: g10/keygen.c:401
msgid "Your selection? "
msgstr "Su elección: "
#: g10/keygen.c:411
-#, fuzzy
msgid "Do you really want to create a sign and encrypt key? "
-msgstr "¿Borrar realmente las claves seleccionadas? "
+msgstr "¿De verdad quiere crear una clave de firma y cifrado? "
#: g10/keygen.c:432
msgid "Invalid selection.\n"
msgstr "Elección no válida.\n"
#: g10/keygen.c:444
#, c-format
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 ""
"Listo para generar un nuevo par de claves %s.\n"
" el tamaño mínimo es 768 bits\n"
" el tamaño por defecto es 1024 bits\n"
" el tamaño máximo recomendado en 2048 bits\n"
#: g10/keygen.c:451
msgid "What keysize do you want? (1024) "
msgstr "¿De qué tamaño quiere la clave (1024)? "
#: g10/keygen.c:456
msgid "DSA only allows keysizes from 512 to 1024\n"
msgstr "DSA sólo permite tamaños desde 512 a 1024\n"
#: g10/keygen.c:458
msgid "keysize too small; 768 is smallest value allowed.\n"
msgstr "tamaño insuficiente; 768 es el valor mínimo permitido\n"
#: g10/keygen.c:461
msgid ""
"Keysizes larger than 2048 are not suggested because\n"
"computations take REALLY long!\n"
msgstr ""
"No se recomiendan claves de más de 2048 bits porque\n"
"el tiempo de computación es REALMENTE largo.\n"
#: g10/keygen.c:464
msgid "Are you sure that you want this keysize? "
msgstr "¿Seguro que quiere una clave de este tamaño? "
#: g10/keygen.c:465
msgid ""
"Okay, but keep in mind that your monitor and keyboard radiation is also very "
"vulnerable to attacks!\n"
msgstr ""
"De acuerdo, ¡pero tenga en cuenta que las radiaciones de su monitor y "
"teclado\n"
"también son vulnerables a un ataque!\n"
#: g10/keygen.c:473
msgid "Do you really need such a large keysize? "
msgstr "¿De verdad necesita una clave tan grande? "
#: g10/keygen.c:479
#, c-format
msgid "Requested keysize is %u bits\n"
msgstr "El tamaño requerido es de %u bits\n"
#: g10/keygen.c:482 g10/keygen.c:486
#, c-format
msgid "rounded up to %u bits\n"
msgstr "redondeados a %u bits\n"
#: g10/keygen.c:499
msgid ""
"Please specify how long the key should be valid.\n"
" 0 = key does not expire\n"
" <n> = key expires in n days\n"
" <n>w = key expires in n weeks\n"
" <n>m = key expires in n months\n"
" <n>y = key expires in n years\n"
msgstr ""
"Por favor, especifique el período de validez de la clave.\n"
" 0 = la clave nunca caduca\n"
" <n> = la clave caduca en n días\n"
" <n>w = la clave caduca en n semanas\n"
" <n>m = la clave caduca en n meses\n"
" <n>y = la clave caduca en n años\n"
#: g10/keygen.c:514
msgid "Key is valid for? (0) "
msgstr "¿Validez de la clave (0)? "
#: g10/keygen.c:525
msgid "invalid value\n"
msgstr "valor no válido\n"
#: g10/keygen.c:530
msgid "Key does not expire at all\n"
msgstr "La clave nunca caduca\n"
#. print the date when the key expires
#: g10/keygen.c:536
#, c-format
msgid "Key expires at %s\n"
msgstr "La clave caduca el %s\n"
#: g10/keygen.c:542
msgid "Is this correct (y/n)? "
msgstr "¿Es correcto (s/n)? "
#: g10/keygen.c:584
msgid ""
"\n"
"You need a User-ID to identify your key; the software constructs the user "
"id\n"
"from Real Name, Comment and Email Address in this form:\n"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
msgstr ""
"\n"
"Necesita un identificativo de usuario para identificar su clave. El "
"programa\n"
"construye el identificativo a partir del Nombre Real, Comentario y "
"Dirección\n"
"de Correo Electrónico de esta forma:\n"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
#: g10/keygen.c:595
msgid "Real name: "
msgstr "Nombre y apellidos: "
#: g10/keygen.c:599
msgid "Invalid character in name\n"
msgstr "Caracter no válido en el nombre\n"
#: g10/keygen.c:601
msgid "Name may not start with a digit\n"
msgstr "El nombre no puede empezar con un número\n"
#: g10/keygen.c:603
msgid "Name must be at least 5 characters long\n"
msgstr "El nombre debe tener al menos 5 caracteres\n"
#: g10/keygen.c:611
msgid "Email address: "
msgstr "Dirección de correo electrónico: "
#: g10/keygen.c:623
msgid "Not a valid email address\n"
msgstr "Dirección no válida\n"
#: g10/keygen.c:631
msgid "Comment: "
msgstr "Comentario: "
#: g10/keygen.c:637
msgid "Invalid character in comment\n"
msgstr "Caracter no válido en el comentario\n"
#: g10/keygen.c:657
#, c-format
msgid ""
"You selected this USER-ID:\n"
" \"%s\"\n"
"\n"
msgstr ""
"Ha seleccionado este identificativo de usuario:\n"
" \"%s\"\n"
"\n"
#: g10/keygen.c:660
msgid "NnCcEeOoQq"
msgstr "NnCcDdVvSs"
#: g10/keygen.c:670
msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
msgstr "¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? "
#: g10/keygen.c:722
msgid ""
"You need a Passphrase to protect your secret key.\n"
"\n"
msgstr ""
"Necesita una contraseña para proteger su clave secreta.\n"
"\n"
#: g10/keyedit.c:389 g10/keygen.c:730
msgid "passphrase not correctly repeated; try again.\n"
msgstr "contraseña repetida incorrecta, inténtelo de nuevo.\n"
#: g10/keygen.c:736
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 ""
"No ha especificado contraseña. Esto es probablemente una *mala* idea.\n"
"Si más tarde quiere añadir una, puede hacerlo usando este programa con\n"
"la opción \"--edit-key\".\n"
"\n"
#: g10/keygen.c:757
msgid ""
"We need to generate a lot of random bytes. It is a good idea to perform\n"
"some other action (work in another window, move the mouse, utilize the\n"
"network and the disks) during the prime generation; this gives the random\n"
"number generator a better chance to gain enough entropy.\n"
msgstr ""
"Es necesario generar muchos bytes aleatorios. Es una buena idea realizar\n"
"alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar\n"
"la red y los discos) durante la generación de números primos. Esto da al\n"
"generador de números aleatorios mayor oportunidad de recoger suficiente\n"
"entropía.\n"
#: g10/keygen.c:827
msgid "Key generation can only be used in interactive mode\n"
msgstr "La creación de claves sólo es posible en modo interactivo\n"
#: g10/keygen.c:835
msgid "DSA keypair will have 1024 bits.\n"
msgstr "El par de claves DSA tendrá 1024 bits.\n"
#: g10/keygen.c:841
msgid "Key generation cancelled.\n"
msgstr "Creación de claves cancelada.\n"
#: g10/keygen.c:851
#, c-format
msgid "writing public certificate to `%s'\n"
msgstr "escribiendo certificado público en `%s'\n"
#: g10/keygen.c:852
#, c-format
msgid "writing secret certificate to `%s'\n"
msgstr "escribiendo certificado privado en `%s'\n"
#: g10/keygen.c:929
msgid "public and secret key created and signed.\n"
msgstr "Claves pública y secreta creadas y firmadas.\n"
#: g10/keygen.c:931
+#, fuzzy
msgid ""
"Note that this key cannot be used for encryption. You may want to use\n"
-"the command \"--add-key\" to generate a secondary key for this purpose.\n"
+"the command \"--edit-key\" to generate a secondary key for this purpose.\n"
msgstr ""
"Tenga en cuenta que esta clave no puede ser usada para cifrado. Puede usar\n"
"el comando \"--add-key\" para crear una clave secundaria con este "
"propósito.\n"
-#: g10/keygen.c:945 g10/keygen.c:1030
+#: g10/keygen.c:945 g10/keygen.c:1044
#, c-format
msgid "Key generation failed: %s\n"
msgstr "Creación de la clave fallida: %s\n"
-#: g10/keygen.c:1008
+#: g10/keygen.c:989 g10/sig-check.c:172 g10/sign.c:52
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu second in future (time warp or clock problem)\n"
+msgstr ""
+"clave pública creada %lu %s en el futuro (salto en el tiempo o problemas con "
+"el reloj)\n"
+
+#: g10/keygen.c:991 g10/sig-check.c:174 g10/sign.c:54
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu seconds in future (time warp or clock problem)\n"
+msgstr ""
+"clave pública creada %lu %s en el futuro (salto en el tiempo o problemas con "
+"el reloj)\n"
+
+#: g10/keygen.c:1022
msgid "Really create? "
msgstr "¿Crear de verdad? "
#: g10/encode.c:88 g10/openfile.c:81 g10/openfile.c:158 g10/tdbio.c:459
#: g10/tdbio.c:510
#, c-format
msgid "%s: can't open: %s\n"
msgstr "%s: no puede abrirse: %s\n"
#: g10/encode.c:107
#, c-format
msgid "error creating passphrase: %s\n"
msgstr "error creando contraseña: %s\n"
#: g10/encode.c:155 g10/encode.c:269
-#, fuzzy, c-format
+#, c-format
msgid "%s: WARNING: empty file\n"
msgstr "%s: atención: fichero vacío\n"
#: g10/encode.c:222
#, c-format
msgid "reading from `%s'\n"
msgstr "leyendo desde `%s'\n"
#: g10/encode.c:397
-#, fuzzy, c-format
+#, c-format
msgid "%s/%s encrypted for: %s\n"
-msgstr "%s cifrado para: %s\n"
+msgstr "%s/%s cifrado para: %s\n"
-#: g10/export.c:114
-#, fuzzy, c-format
+#: g10/export.c:147
+#, c-format
msgid "%s: user not found: %s\n"
-msgstr "%s: usuario no encontrado\n"
+msgstr "%s: usuario no encontrado: %s\n"
-#: g10/export.c:123
+#: g10/export.c:156
#, c-format
msgid "certificate read problem: %s\n"
-msgstr ""
+msgstr "problema en la lectura del certificado: %s\n"
-#: g10/export.c:132
-#, fuzzy, c-format
+#: g10/export.c:165
+#, c-format
msgid "key %08lX: not a rfc2440 key - skipped\n"
-msgstr "clave %08lX: clave secreta sin clave pública - ignorada\n"
+msgstr "clave %08lX: no es conforme a rfc2440 - ignorada\n"
-#: g10/export.c:174
-#, fuzzy
+#: g10/export.c:203
msgid "WARNING: nothing exported\n"
-msgstr "ATENCIÓN: ¡Usando una clave no fiable!\n"
+msgstr "ATENCIÓN: no se ha exportado nada\n"
#: g10/getkey.c:164
msgid "too many entries in pk cache - disabled\n"
-msgstr ""
+msgstr "demasiados registros en la cache pk - anulada\n"
#: g10/getkey.c:294
msgid "too many entries in unk cache - disabled\n"
-msgstr ""
+msgstr "demasiados registros en la cache unk - anulada\n"
#: g10/getkey.c:1038
#, c-format
msgid "using secondary key %08lX instead of primary key %08lX\n"
msgstr "usando clave secundaria %08lX en vez de clave primaria %08lX\n"
-#: g10/import.c:129 g10/trustdb.c:1180
+#: g10/import.c:117 g10/trustdb.c:1180
#, c-format
msgid "can't open file: %s\n"
msgstr "no puede abrirse el fichero: %s\n"
-#: g10/import.c:148
+#: g10/import.c:165
#, c-format
msgid "skipping block of type %d\n"
msgstr "ignorando bloque de tipo %d\n"
-#: g10/import.c:155 g10/trustdb.c:1474 g10/trustdb.c:1543
+#: g10/import.c:172 g10/trustdb.c:1474 g10/trustdb.c:1543
#, c-format
msgid "%lu keys so far processed\n"
-msgstr ""
+msgstr "hasta ahora se han procesado %lu claves\n"
-#: g10/import.c:160 g10/trustdb.c:1256
+#: g10/import.c:177 g10/trustdb.c:1256
#, c-format
msgid "read error: %s\n"
msgstr "error de lectura: %s\n"
-#: g10/import.c:162
+#: g10/import.c:179
#, c-format
msgid "Total number processed: %lu\n"
-msgstr ""
+msgstr " Cantidad total procesada: %lu\n"
-#: g10/import.c:164
+#: g10/import.c:181
#, c-format
msgid " w/o user IDs: %lu\n"
-msgstr ""
+msgstr " sin identificativo de usuario: %lu\n"
-#: g10/import.c:166
+#: g10/import.c:183
#, c-format
msgid " imported: %lu"
-msgstr ""
+msgstr " importadas: %lu"
-#: g10/import.c:172
+#: g10/import.c:189
#, c-format
msgid " unchanged: %lu\n"
-msgstr ""
+msgstr " sin cambios: %lu\n"
-#: g10/import.c:174
+#: g10/import.c:191
#, c-format
msgid " new user IDs: %lu\n"
-msgstr ""
+msgstr "nuevos identificativos de usuario: %lu\n"
-#: g10/import.c:176
+#: g10/import.c:193
#, c-format
msgid " new subkeys: %lu\n"
-msgstr ""
+msgstr " nuevas sub-claves: %lu\n"
-#: g10/import.c:178
-#, fuzzy, c-format
+#: g10/import.c:195
+#, c-format
msgid " new signatures: %lu\n"
-msgstr "clave %08lX: %d nuevas firmas\n"
+msgstr " nuevas firmas: %lu\n"
-#: g10/import.c:180
+#: g10/import.c:197
#, c-format
msgid " new key revocations: %lu\n"
-msgstr ""
+msgstr " nuevas revocaciones de clave: %lu\n"
-#: g10/import.c:182
-#, fuzzy, c-format
+#: g10/import.c:199
+#, c-format
msgid " secret keys read: %lu\n"
-msgstr "enum_secret_keys fallido: %s\n"
+msgstr " claves secretas leídas: %lu\n"
-#: g10/import.c:184
-#, fuzzy, c-format
+#: g10/import.c:201
+#, c-format
msgid " secret keys imported: %lu\n"
-msgstr "clave %08lX: clave secreta importata\n"
+msgstr " claves secretas importadas: %lu\n"
-#: g10/import.c:186
-#, fuzzy, c-format
+#: g10/import.c:203
+#, c-format
msgid " secret keys unchanged: %lu\n"
-msgstr "enum_secret_keys fallido: %s\n"
+msgstr " claves secretas sin cambios: %lu\n"
-#: g10/import.c:328 g10/import.c:520
+#: g10/import.c:343 g10/import.c:535
#, c-format
msgid "key %08lX: no user id\n"
-msgstr "clave %08lX: no hay id de usuario\n"
+msgstr "clave %08lX: no hay identificativo de usuario\n"
-#: g10/import.c:339
+#: g10/import.c:354
#, c-format
msgid "key %08lX: no valid user ids\n"
-msgstr "clave %08lX: no hay ids de usuario válidos\n"
+msgstr "clave %08lX: no hay identificativos de usuario válidos\n"
-#: g10/import.c:341
+#: g10/import.c:356
msgid "this may be caused by a missing self-signature\n"
msgstr "esto puede ser debido a la ausencia de autofirma\n"
-#: g10/import.c:352 g10/import.c:588
+#: g10/import.c:367 g10/import.c:603
#, c-format
msgid "key %08lX: public key not found: %s\n"
msgstr "clave %08lX: clave pública no encontrada: %s\n"
-#: g10/import.c:358
+#: g10/import.c:373
msgid "no default public keyring\n"
msgstr "no hay anillo público por defecto\n"
-#: g10/import.c:362 g10/openfile.c:105 g10/sign.c:205 g10/sign.c:592
+#: g10/import.c:377 g10/openfile.c:105 g10/sign.c:215 g10/sign.c:601
#, c-format
msgid "writing to `%s'\n"
msgstr "escribiendo en `%s'\n"
-#: g10/import.c:366 g10/import.c:426 g10/import.c:642
+#: g10/import.c:381 g10/import.c:441 g10/import.c:657
#, c-format
msgid "can't lock public keyring: %s\n"
msgstr "no puede bloquearse el anillo público: %s\n"
-#: g10/import.c:369
+#: g10/import.c:384
#, c-format
msgid "can't write to keyring: %s\n"
msgstr "no puede escribirse en el anillo: %s\n"
-#: g10/import.c:373
+#: g10/import.c:388
#, c-format
msgid "key %08lX: public key imported\n"
msgstr "clave %08lX: clave pública importada\n"
-#: g10/import.c:386
+#: g10/import.c:401
#, c-format
msgid "key %08lX: doesn't match our copy\n"
msgstr "clave %08lX: no se corresponde con nuestra copia\n"
-#: g10/import.c:399 g10/import.c:597
+#: g10/import.c:414 g10/import.c:612
#, c-format
msgid "key %08lX: can't locate original keyblock: %s\n"
msgstr "clave %08lX: no puede localizarse el bloque de claves original: %s\n"
-#: g10/import.c:406 g10/import.c:604
+#: g10/import.c:421 g10/import.c:619
#, c-format
msgid "key %08lX: can't read original keyblock: %s\n"
msgstr "clave %08lX: no puede leerse el bloque de claves original: %s\n"
-#: g10/import.c:423 g10/import.c:535 g10/import.c:639
+#: g10/import.c:438 g10/import.c:550 g10/import.c:654
msgid "writing keyblock\n"
msgstr "escribiendo bloque de claves\n"
-#: g10/import.c:429 g10/import.c:645
+#: g10/import.c:444 g10/import.c:660
#, c-format
msgid "can't write keyblock: %s\n"
msgstr "no puede escribirse el bloque de claves: %s\n"
-#: g10/import.c:434
+#: g10/import.c:449
#, c-format
msgid "key %08lX: 1 new user-id\n"
-msgstr "clave %08lX: 1 nuevo id de usuario\n"
+msgstr "clave %08lX: 1 nuevo identificativo de usuario\n"
-#: g10/import.c:437
+#: g10/import.c:452
#, c-format
msgid "key %08lX: %d new user-ids\n"
-msgstr "clave %08lX: %d nuevos ids de usuario\n"
+msgstr "clave %08lX: %d nuevos identificativos de usuario\n"
-#: g10/import.c:440
+#: g10/import.c:455
#, c-format
msgid "key %08lX: 1 new signature\n"
msgstr "clave %08lX: 1 nueva firma\n"
-#: g10/import.c:443
+#: g10/import.c:458
#, c-format
msgid "key %08lX: %d new signatures\n"
msgstr "clave %08lX: %d nuevas firmas\n"
-#: g10/import.c:446
+#: g10/import.c:461
#, c-format
msgid "key %08lX: 1 new subkey\n"
-msgstr "clave %08lX: 1 nueva subclave\n"
+msgstr "clave %08lX: 1 nueva sub-clave\n"
-#: g10/import.c:449
+#: g10/import.c:464
#, c-format
msgid "key %08lX: %d new subkeys\n"
-msgstr "clave %08lX: %d nuevas subclaves\n"
+msgstr "clave %08lX: %d nuevas sub-claves\n"
-#: g10/import.c:459
+#: g10/import.c:474
#, c-format
msgid "key %08lX: not changed\n"
msgstr "clave %08lX: sin cambios\n"
-#: g10/import.c:538
+#: g10/import.c:553
#, c-format
msgid "can't lock secret keyring: %s\n"
msgstr "no puede bloquearse el anillo secreto: %s\n"
-#: g10/import.c:541
+#: g10/import.c:556
#, c-format
msgid "can't write keyring: %s\n"
msgstr "no puede escribirse el anillo: %s\n"
#. we are ready
-#: g10/import.c:544
+#: g10/import.c:559
#, c-format
msgid "key %08lX: secret key imported\n"
msgstr "clave %08lX: clave secreta importata\n"
#. we can't merge secret keys
-#: g10/import.c:548
+#: g10/import.c:563
#, c-format
msgid "key %08lX: already in secret keyring\n"
msgstr "clave %08lX: ya estaba en el anillo secreto\n"
-#: g10/import.c:553
+#: g10/import.c:568
#, c-format
msgid "key %08lX: secret key not found: %s\n"
msgstr "clave %08lX: clave secreta no encontrada: %s\n"
-#: g10/import.c:582
+#: g10/import.c:597
#, c-format
msgid "key %08lX: no public key - can't apply revocation certificate\n"
msgstr ""
"clave %08lX: falta la clave pública - imposibile applicar el\n"
"certificado de revocación\n"
-#: g10/import.c:615
+#: g10/import.c:630
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - rejected\n"
msgstr "clave %08lX: certificado de revocación no válido: %s - rechazado\n"
-#: g10/import.c:649
+#: g10/import.c:664
#, c-format
msgid "key %08lX: revocation certificate imported\n"
msgstr "clave %08lX: certificado de revocación importado\n"
-#: g10/import.c:680
+#: g10/import.c:698
#, c-format
msgid "key %08lX: no user-id for signature\n"
-msgstr "clave %08lX: no hay id de usuario para la firma\n"
+msgstr "clave %08lX: no hay identificativo de usuario para la firma\n"
-#: g10/import.c:687
+#: g10/import.c:705 g10/import.c:729
#, c-format
msgid "key %08lX: unsupported public key algorithm\n"
msgstr "clave %08lX: algoritmo da clave pública no soportado\n"
-#: g10/import.c:688
+#: g10/import.c:706
#, c-format
msgid "key %08lX: invalid self-signature\n"
msgstr "clave %08lX: autofirma no válida\n"
-#: g10/import.c:717
-#, c-format
-msgid "key %08lX: skipped userid '"
-msgstr "clave %08lX: ignorado id de usuario '"
+#: g10/import.c:722
+#, fuzzy, c-format
+msgid "key %08lX: no subkey for key binding\n"
+msgstr "clave %08lX.%lu: buena unión de sub-clave\n"
+
+#: g10/import.c:730
+#, fuzzy, c-format
+msgid "key %08lX: invalid subkey binding\n"
+msgstr "clave %08lX.%lu: unión de sub-clave no válida\n"
-#: g10/import.c:740
+#: g10/import.c:761
+#, c-format
+msgid "key %08lX: skipped userid '"
+msgstr "clave %08lX: ignorado identificativo de usuario '"
+
+#: g10/import.c:781
+#, fuzzy, c-format
+msgid "key %08lX: skipped subkey\n"
+msgstr "clave %08lX: 1 nueva sub-clave\n"
+
+#: g10/import.c:800
#, c-format
msgid "key %08lX: revocation certificate at wrong place - skipped\n"
msgstr ""
-"clave %08lX: certificado de revocación en sitio equivocado - ignorado\n"
+"clave %08lX: certificado de revocación en lugar equivocado - ignorado\n"
-#: g10/import.c:748
+#: g10/import.c:808
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - skipped\n"
msgstr "clave %08lX: certificado de revocación no valido: %s - ignorado\n"
-#: g10/import.c:807
+#: g10/import.c:867
#, c-format
msgid "key %08lX: revocation certificate added\n"
msgstr "clave %08lX: certificado de revocación añadido\n"
-#: g10/import.c:921 g10/import.c:976
+#: g10/import.c:981 g10/import.c:1036
#, c-format
msgid "key %08lX: our copy has no self-signature\n"
msgstr "clave %08lX: nuestra copia no tiene autofirma\n"
#: g10/keyedit.c:81
#, c-format
msgid "%s: user not found\n"
msgstr "%s: usuario no encontrado\n"
#: g10/keyedit.c:164
msgid "[self-signature]"
msgstr "[autofirma]"
#: g10/keyedit.c:182
msgid "1 bad signature\n"
msgstr "1 firma incorrecta\n"
#: g10/keyedit.c:184
#, c-format
msgid "%d bad signatures\n"
msgstr "%d firmas incorrectas\n"
#: g10/keyedit.c:186
msgid "1 signature not checked due to a missing key\n"
msgstr "1 firma no comprobada por falta de clave\n"
#: g10/keyedit.c:188
#, c-format
msgid "%d signatures not checked due to missing keys\n"
msgstr "%d firmas no comprobadas por falta de clave\n"
#: g10/keyedit.c:190
msgid "1 signature not checked due to an error\n"
msgstr "1 firma no comprobada por causa de un error\n"
#: g10/keyedit.c:192
#, c-format
msgid "%d signatures not checked due to errors\n"
msgstr "%d firmas no comprobadas por causa de un error\n"
#: g10/keyedit.c:194
msgid "1 user id without valid self-signature detected\n"
-msgstr "Detectado 1 id de usuario sin autofirma válida\n"
+msgstr "Detectado 1 identificativo de usuario sin autofirma válida\n"
#: g10/keyedit.c:196
#, c-format
msgid "%d user ids without valid self-signatures detected\n"
-msgstr "Detectados %d ids de usuario sin autofirma válida\n"
+msgstr "Detectados %d identificativos de usuario sin autofirma válida\n"
#: g10/keyedit.c:258
#, c-format
msgid "Already signed by key %08lX\n"
msgstr "Ya firmada por la clave %08lX\n"
#: g10/keyedit.c:266
#, c-format
msgid "Nothing to sign with key %08lX\n"
msgstr "Nada que firmar con la clave %08lX\n"
#: g10/keyedit.c:275
msgid ""
"Are you really sure that you want to sign this key\n"
"with your key: \""
msgstr ""
"¿Está realmente seguro de querer firmar esta clave\n"
"con su clave: \""
#: g10/keyedit.c:282
msgid "Really sign? "
msgstr "¿Firmar de verdad? "
-#: g10/keyedit.c:303 g10/sign.c:65
+#: g10/keyedit.c:303 g10/sign.c:75
#, c-format
msgid "signing failed: %s\n"
msgstr "firma fallida: %s\n"
#: g10/keyedit.c:356
msgid "This key is not protected.\n"
msgstr "Esta clave no está protegida.\n"
#: g10/keyedit.c:359
msgid "Key is protected.\n"
msgstr "La clave está protegida.\n"
#: g10/keyedit.c:376
#, c-format
msgid "Can't edit this key: %s\n"
msgstr "No puede editarse esta clave: %s\n"
#: g10/keyedit.c:381
msgid ""
"Enter the new passphrase for this secret key.\n"
"\n"
msgstr ""
"Introduzca la nueva contraseña para esta clave secreta.\n"
"\n"
#: g10/keyedit.c:393
msgid ""
"You don't want a passphrase - this is probably a *bad* idea!\n"
"\n"
msgstr ""
"No ha especificado contraseña. Esto es probablemente una *mala* idea.\n"
"\n"
#: g10/keyedit.c:396
msgid "Do you really want to do this? "
msgstr "¿Realmente quiere hacer esto? "
#: g10/keyedit.c:455
msgid "moving a key signature to the correct place\n"
-msgstr ""
+msgstr "moviendo la firma de la clave al lugar correcto\n"
#: g10/keyedit.c:490
msgid "quit"
msgstr ""
#: g10/keyedit.c:490
msgid "quit this menu"
msgstr "sale de este menú"
#: g10/keyedit.c:491
msgid "q"
msgstr ""
#: g10/keyedit.c:492
msgid "save"
msgstr ""
#: g10/keyedit.c:492
msgid "save and quit"
msgstr "graba y sale"
#: g10/keyedit.c:493
msgid "help"
msgstr ""
#: g10/keyedit.c:493
msgid "show this help"
msgstr "muestra esta ayuda"
#: g10/keyedit.c:495
msgid "fpr"
msgstr ""
#: g10/keyedit.c:495
msgid "show fingerprint"
-msgstr "muestra huella digital"
+msgstr "muestra huella dactilar"
#: g10/keyedit.c:496
msgid "list"
msgstr ""
#: g10/keyedit.c:496
msgid "list key and user ids"
msgstr "lista clave e identificativos de usuario"
#: g10/keyedit.c:497
msgid "l"
msgstr ""
#: g10/keyedit.c:498
msgid "uid"
msgstr ""
#: g10/keyedit.c:498
msgid "select user id N"
msgstr "selecciona identificativo de usuario N"
#: g10/keyedit.c:499
msgid "key"
msgstr ""
#: g10/keyedit.c:499
msgid "select secondary key N"
msgstr "selecciona clave secundaria N"
#: g10/keyedit.c:500
msgid "check"
msgstr ""
#: g10/keyedit.c:500
msgid "list signatures"
msgstr "lista firmas"
#: g10/keyedit.c:501
msgid "c"
msgstr ""
#: g10/keyedit.c:502
msgid "sign"
msgstr ""
#: g10/keyedit.c:502
msgid "sign the key"
msgstr "firma la clave"
#: g10/keyedit.c:503
msgid "s"
msgstr ""
#: g10/keyedit.c:504
msgid "debug"
msgstr ""
#: g10/keyedit.c:505
msgid "adduid"
msgstr ""
#: g10/keyedit.c:505
msgid "add a user id"
msgstr "añade un identificativo de usuario"
#: g10/keyedit.c:506
msgid "deluid"
msgstr ""
#: g10/keyedit.c:506
msgid "delete user id"
msgstr "borra un identificativo de usuario"
#: g10/keyedit.c:507
msgid "addkey"
msgstr ""
#: g10/keyedit.c:507
msgid "add a secondary key"
msgstr "añade una clave secundaria"
#: g10/keyedit.c:508
msgid "delkey"
msgstr ""
#: g10/keyedit.c:508
msgid "delete a secondary key"
msgstr "borra una clave secundaria"
#: g10/keyedit.c:509
msgid "expire"
msgstr ""
#: g10/keyedit.c:509
msgid "change the expire date"
msgstr "cambia fecha de caducidad"
#: g10/keyedit.c:510
msgid "toggle"
msgstr ""
#: g10/keyedit.c:510
msgid "toggle between secret and public key listing"
msgstr "cambia entre lista de claves secretas y públicas"
#: g10/keyedit.c:512
msgid "t"
msgstr ""
#: g10/keyedit.c:513
msgid "pref"
msgstr ""
#: g10/keyedit.c:513
msgid "list preferences"
msgstr "muestra preferencias"
#: g10/keyedit.c:514
msgid "passwd"
msgstr ""
#: g10/keyedit.c:514
msgid "change the passphrase"
msgstr "cambia la contraseña"
#: g10/keyedit.c:515
msgid "trust"
msgstr ""
#: g10/keyedit.c:515
msgid "change the ownertrust"
msgstr "cambia valores de confianza"
#: g10/keyedit.c:534
msgid "can't do that in batchmode\n"
msgstr "imposible hacer esto en modo de proceso por lotes\n"
#. check that they match
#. FIXME: check that they both match
#: g10/keyedit.c:561
msgid "Secret key is available.\n"
msgstr "Clave secreta disponible.\n"
#: g10/keyedit.c:590
msgid "Command> "
msgstr "Comando> "
#: g10/keyedit.c:617
msgid "Need the secret key to do this.\n"
msgstr "Se necesita la clave secreta para hacer esto\n"
#: g10/keyedit.c:639
msgid "Save changes? "
msgstr "¿Grabar cambios? "
#: g10/keyedit.c:642
msgid "Quit without saving? "
msgstr "¿Salir sin grabar? "
#: g10/keyedit.c:652
#, c-format
msgid "update failed: %s\n"
msgstr "actualización fallida: %s\n"
#: g10/keyedit.c:659
#, c-format
msgid "update secret failed: %s\n"
msgstr "actualización de la clave secreta fallida: %s\n"
#: g10/keyedit.c:666
msgid "Key not changed so no update needed.\n"
msgstr "Clave sin cambios, no se necesita actualización.\n"
#: g10/keyedit.c:669 g10/keyedit.c:727
-#, fuzzy, c-format
+#, c-format
msgid "update of trustdb failed: %s\n"
msgstr "actualización de confianza fallida: %s\n"
#: g10/keyedit.c:701
msgid "Really sign all user ids? "
msgstr "¿Firmar realmente todos los identificativos de usuario? "
#: g10/keyedit.c:702
msgid "Hint: Select the user ids to sign\n"
msgstr "Sugerencia: seleccione los identificativos de usuario a firmar\n"
#: g10/keyedit.c:738
msgid "You must select at least one user id.\n"
msgstr "Debe seleccionar por lo menos un identificativo de usuario.\n"
#: g10/keyedit.c:740
msgid "You can't delete the last user id!\n"
msgstr "¡No puede borrar el último identificativo de usuario!\n"
#: g10/keyedit.c:743
msgid "Really remove all selected user ids? "
msgstr "¿Borrar realmente todos los identificativos seleccionados? "
#: g10/keyedit.c:744
msgid "Really remove this user id? "
msgstr "¿Borrar realmente este identificativo? "
#: g10/keyedit.c:767
msgid "You must select at least one key.\n"
msgstr "Debe seleccionar por lo menos una clave.\n"
#: g10/keyedit.c:771
msgid "Do you really want to delete the selected keys? "
msgstr "¿Borrar realmente las claves seleccionadas? "
#: g10/keyedit.c:772
msgid "Do you really want to delete this key? "
msgstr "¿Borrar realmente esta clave? "
#: g10/keyedit.c:819
msgid "Invalid command (try \"help\")\n"
msgstr "Comando no válido (pruebe \"help\")\n"
#: g10/keyedit.c:1197
msgid "Please remove selections from the secret keys.\n"
msgstr "Por favor, quite la selección de las claves secretas.\n"
#: g10/keyedit.c:1203
msgid "Please select at most one secondary key.\n"
msgstr "Por favor, seleccione como máximo una clave secundaria\n"
#: g10/keyedit.c:1207
msgid "Changing exiration time for a secondary key.\n"
msgstr "Cambiando caducidad de clave secundaria.\n"
#: g10/keyedit.c:1209
msgid "Changing exiration time for the primary key.\n"
msgstr "Cambiando caducidad de clave primaria.\n"
#: g10/keyedit.c:1250
msgid "You can't change the expiration date of a v3 key\n"
-msgstr ""
+msgstr "No puede cambiar la fecha de caducidad de una clave v3\n"
#: g10/keyedit.c:1266
msgid "No corresponding signature in secret ring\n"
msgstr "No hay firma correspondiente en anillo secreto\n"
#: g10/keyedit.c:1326
#, c-format
msgid "No user id with index %d\n"
msgstr "No hay ningún identificativo de usuario con el índice %d\n"
#: g10/keyedit.c:1371
#, c-format
msgid "No secondary key with index %d\n"
msgstr "No hay ninguna clave secundaria con el índice %d\n"
-#: g10/mainproc.c:198
-#, fuzzy
+#: g10/mainproc.c:199
msgid "public key encrypted data: good DEK\n"
-msgstr "descifrado de la clave pública fallido: %s\n"
+msgstr "datos cifrados de la clave pública: DEK bueno\n"
-#: g10/mainproc.c:201
+#: g10/mainproc.c:202
#, c-format
msgid "public key decryption failed: %s\n"
msgstr "descifrado de la clave pública fallido: %s\n"
-#: g10/mainproc.c:228
-#, fuzzy
+#: g10/mainproc.c:229
msgid "decryption okay\n"
-msgstr "descifrado fallido: %s\n"
+msgstr "descifrado correcto\n"
-#: g10/mainproc.c:231
+#: g10/mainproc.c:232
#, c-format
msgid "decryption failed: %s\n"
msgstr "descifrado fallido: %s\n"
-#: g10/mainproc.c:248
-#, fuzzy
+#: g10/mainproc.c:249
msgid "NOTE: sender requested \"for-your-eyes-only\"\n"
msgstr "nota: el remitente solicitó \"sólo-para-tus-ojos\"\n"
-#: g10/mainproc.c:250
+#: g10/mainproc.c:251
#, c-format
msgid "original file name='%.*s'\n"
-msgstr ""
+msgstr "nombre fichero original='%.*s'\n"
-#: g10/mainproc.c:833
+#: g10/mainproc.c:834
msgid "signature verification suppressed\n"
-msgstr ""
+msgstr "suprimida la verificación de la firma\n"
-#: g10/mainproc.c:839
+#: g10/mainproc.c:840
#, c-format
msgid "Signature made %.*s using %s key ID %08lX\n"
-msgstr "Firma creada %.*s usando identificativo de clave %08lX\n"
+msgstr "Firma creada %.*s usando identificativo de clave %s %08lX\n"
-#: g10/mainproc.c:847
+#: g10/mainproc.c:852
msgid "BAD signature from \""
msgstr "Firma INCORRECTA de \""
-#: g10/mainproc.c:848
+#: g10/mainproc.c:853
msgid "Good signature from \""
msgstr "Firma correcta de \""
-#: g10/mainproc.c:879
+#: g10/mainproc.c:884
#, c-format
msgid "Can't check signature: %s\n"
msgstr "Imposible comprobar la firma: %s\n"
-#: g10/mainproc.c:952
+#: g10/mainproc.c:957
msgid "old style (PGP 2.x) signature\n"
-msgstr ""
+msgstr "firma viejo estilo (PGP 2.x)\n"
-#: g10/mainproc.c:957
+#: g10/mainproc.c:962
msgid "invalid root packet detected in proc_tree()\n"
-msgstr ""
+msgstr "paquete raíz no válido detectado en proc_tree()\n"
#: g10/misc.c:90
-#, fuzzy, c-format
+#, c-format
msgid "can't disable core dumps: %s\n"
-msgstr "no puede abrirse `%s': %s\n"
+msgstr "no se pueden desactivar los core dumps: %s\n"
#: g10/misc.c:93
msgid "WARNING: program may create a core file!\n"
-msgstr ""
+msgstr "ATENCIÓN: ¡el programa podría crear un fichero core dump!\n"
#: g10/misc.c:200
msgid "Experimental algorithms should not be used!\n"
-msgstr ""
+msgstr "¡No se deberían usar algoritmos experimentales!\n"
#: g10/misc.c:214
msgid ""
"RSA keys are deprecated; please consider creating a new key and use this key "
"in the future\n"
msgstr ""
"Las claves RSA están en desuso, considere la creación de una nueva clave "
"para futuros usos\n"
#: g10/misc.c:235
msgid "this cipher algorithm is depreciated; please use a more standard one!\n"
msgstr ""
+"este algoritmo de cifrado está en desuso; considere el uso de uno más "
+"estándar.\n"
#: g10/parse-packet.c:113
-#, fuzzy, c-format
+#, c-format
msgid "can't handle public key algorithm %d\n"
-msgstr "no puede bloquearse el anillo público: %s\n"
+msgstr "no puedo manejar el algoritmo de clave pública %d\n"
#: g10/parse-packet.c:892
#, c-format
msgid "subpacket of type %d has critical bit set\n"
-msgstr ""
+msgstr "el sub-paquete de tipo %d tiene el bit crítico activado\n"
#: g10/passphrase.c:141
msgid ""
"\n"
"You need a passphrase to unlock the secret key for\n"
"user: \""
msgstr ""
"\n"
"Necesita una contraseña para desbloquear la clave secreta\n"
"del usuario: \""
#: g10/passphrase.c:150
-#, fuzzy, c-format
+#, c-format
msgid "%u-bit %s key, ID %08lX, created %s"
-msgstr "clave %2$s de %1$u bits, ID %3$08lX, creada el %4$s)\n"
+msgstr "clave %2$s de %1$u bits, ID %3$08lX, creada el %4$s"
#: g10/passphrase.c:155
#, c-format
msgid " (main key ID %08lX)"
-msgstr ""
+msgstr "(ID clave primaria %08lX)"
#: g10/passphrase.c:183
-#, fuzzy
msgid "Enter passphrase: "
msgstr "Introduzca contraseña: "
#: g10/passphrase.c:187
-#, fuzzy
msgid "Repeat passphrase: "
msgstr "Repita contraseña: "
#: g10/plaintext.c:63
msgid "data not saved; use option \"--output\" to save it\n"
msgstr "datos no grabados; use la opción \"--output\" para grabarlos\n"
-#: g10/plaintext.c:166
+#: g10/plaintext.c:208
msgid "Please enter name of data file: "
msgstr "Introduzca el nombre del fichero de datos: "
-#: g10/plaintext.c:187
+#: g10/plaintext.c:229
msgid "reading stdin ...\n"
-msgstr ""
+msgstr "leyendo stdin...\n"
-#: g10/plaintext.c:250
+#: g10/plaintext.c:292
#, c-format
msgid "can't open signed data `%s'\n"
msgstr "imposible abrir datos firmados `%s'\n"
#: g10/pubkey-enc.c:78
#, c-format
msgid "anonymous receiver; trying secret key %08lX ...\n"
msgstr "destinatario anónimo, probando clave secreta %08lX ...\n"
#: g10/pubkey-enc.c:84
-#, fuzzy
msgid "okay, we are the anonymous recipient.\n"
-msgstr "De acuerdo, somo el destinatario anónimo.\n"
+msgstr "De acuerdo, somos el destinatario anónimo.\n"
#: g10/pubkey-enc.c:136
-#, fuzzy
msgid "old encoding of the DEK is not supported\n"
-msgstr "el algoritmo de protección %d no está soportado\n"
+msgstr "la codificación vieja de DEK no está soportada\n"
#: g10/pubkey-enc.c:183
-#, fuzzy, c-format
+#, c-format
msgid "NOTE: cipher algorithm %d not found in preferences\n"
msgstr "nota: algoritmo de cifrado %d no encontrado en las preferencias\n"
#: g10/seckey-cert.c:56
#, c-format
msgid "protection algorithm %d is not supported\n"
msgstr "el algoritmo de protección %d no está soportado\n"
#: g10/seckey-cert.c:176
msgid "Invalid passphrase; please try again ...\n"
msgstr "Contraseña incorrecta, inténtelo de nuevo...\n"
#: g10/seckey-cert.c:223
-#, fuzzy
msgid "WARNING: Weak key detected - please change passphrase again.\n"
msgstr "Aviso: detectada clave débil - por favor cambie la contraseña.\n"
#: g10/sig-check.c:155
msgid ""
"this is a PGP generated ElGamal key which is NOT secure for signatures!\n"
msgstr ""
"¡esto es una clave ElGamal generada por PGP que NO es segura para las "
"firmas!\n"
-#: g10/sig-check.c:166
+#: g10/sig-check.c:163
#, fuzzy, c-format
-msgid "public key created %lu %s in future (time warp or clock problem)\n"
-msgstr ""
-"clave pública creada en el futuro (salto en el tiempo o problemas con el "
-"reloj)\n"
+msgid "public key is %lu second newer than the signature\n"
+msgstr "lid %lu: identificativo de usuario sin firma\n"
-#: g10/sig-check.c:168
-msgid "second"
-msgstr ""
-
-#: g10/sig-check.c:168
-msgid "seconds"
-msgstr ""
-
-#: g10/sig-check.c:173
+#: g10/sig-check.c:164
#, fuzzy, c-format
+msgid "public key is %lu seconds newer than the signature\n"
+msgstr "lid %lu: identificativo de usuario sin firma\n"
+
+#: g10/sig-check.c:180
+#, c-format
msgid "NOTE: signature key expired %s\n"
-msgstr "atención: firma de la clave caducada el %s\n"
+msgstr "atención: clave de la firma caducada el %s\n"
-#: g10/sig-check.c:230
+#: g10/sig-check.c:237
msgid "assuming bad signature due to an unknown critical bit\n"
-msgstr ""
+msgstr "asumiendo firma mala debido a un bit crítico desconocido\n"
-#: g10/sign.c:69
-#, fuzzy, c-format
+#: g10/sign.c:79
+#, c-format
msgid "%s signature from: %s\n"
-msgstr "Firma INCORRECTA de \""
+msgstr "firma %s de %s\n"
-#: g10/sign.c:200 g10/sign.c:587
-#, fuzzy, c-format
+#: g10/sign.c:210 g10/sign.c:596
+#, c-format
msgid "can't create %s: %s\n"
-msgstr "no puede abrirse `%s': %s\n"
+msgstr "no puede crearse `%s': %s\n"
-#: g10/sign.c:296
+#: g10/sign.c:306
msgid "signing:"
-msgstr ""
+msgstr "firmando:"
-#: g10/sign.c:336
-#, fuzzy, c-format
+#: g10/sign.c:346
+#, c-format
msgid "WARNING: `%s' is an empty file\n"
-msgstr "%s: atención: fichero vacío\n"
+msgstr "atención: '%s' es un fichero vacío\n"
-#: g10/tdbio.c:116 g10/tdbio.c:1418
+#: g10/textfilter.c:199
#, fuzzy, c-format
+msgid "can't handle text lines longer than %d characters\n"
+msgstr "armadura inválida: línea más larga de %d caracteres\n"
+
+#: g10/tdbio.c:116 g10/tdbio.c:1418
+#, c-format
msgid "trustdb rec %lu: lseek failed: %s\n"
-msgstr "actualización de la clave secreta fallida: %s\n"
+msgstr "registro base de datos de confianza %lu: lseek fallido: %s\n"
#: g10/tdbio.c:122 g10/tdbio.c:1425
#, c-format
msgid "trustdb rec %lu: write failed (n=%d): %s\n"
msgstr ""
+"resgisto base de datos de confianza %lu: escritura fallida (n=%d): %s\n"
#: g10/tdbio.c:232
msgid "trustdb transaction too large\n"
-msgstr ""
+msgstr "transacción en la base de datos de confianza demasiado grande\n"
#: g10/tdbio.c:416
-#, fuzzy, c-format
+#, c-format
msgid "%s: can't access: %s\n"
msgstr "%s: no puede abrirse: %s\n"
#: g10/ringedit.c:273 g10/tdbio.c:436
-#, fuzzy, c-format
+#, c-format
msgid "%s: can't create directory: %s\n"
-msgstr "%s: no puede abrirse: %s\n"
+msgstr "%s: no puede crearse el directorio: %s\n"
#: g10/ringedit.c:279 g10/tdbio.c:439
#, c-format
msgid "%s: directory created\n"
-msgstr ""
+msgstr "%s: se ha creado el directorio\n"
#: g10/tdbio.c:443
#, c-format
msgid "%s: directory does not exist!\n"
-msgstr ""
+msgstr "%s: el directorio no existe\n"
-#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1275 g10/tdbio.c:449
-#, fuzzy, c-format
+#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1292 g10/tdbio.c:449
+#, c-format
msgid "%s: can't create: %s\n"
-msgstr "%s: no puede abrirse: %s\n"
+msgstr "%s: no puede crearse: %s\n"
#: g10/tdbio.c:473
#, c-format
msgid "%s: failed to create version record: %s"
-msgstr ""
+msgstr "%s: fallo en la creación del registro de versión: %s"
#: g10/tdbio.c:477
-#, fuzzy, c-format
+#, c-format
msgid "%s: invalid trustdb created\n"
-msgstr "actualización de confianza fallida: %s\n"
+msgstr "%s: se ha creado base de datos de confianza no válida\n"
#: g10/tdbio.c:479
-#, fuzzy, c-format
+#, c-format
msgid "%s: trustdb created\n"
-msgstr "actualización de confianza fallida: %s\n"
+msgstr "%s: se ha creado base de datos de confianza\n"
#: g10/tdbio.c:512
-#, fuzzy, c-format
+#, c-format
msgid "%s: invalid trustdb\n"
-msgstr "actualización de confianza fallida: %s\n"
+msgstr "%s: base de datos de confianza no válida\n"
#: g10/tdbio.c:545
#, c-format
msgid "%s: failed to create hashtable: %s\n"
-msgstr ""
+msgstr "%s: fallo en la creación de la tabla hash: %s\n"
#: g10/tdbio.c:553
-#, fuzzy, c-format
+#, c-format
msgid "%s: error updating version record: %s\n"
-msgstr "%s: error comprobando la clave: %s\n"
+msgstr "%s: error actualizando el registro de versión: %s\n"
#: g10/tdbio.c:569 g10/tdbio.c:608 g10/tdbio.c:633 g10/tdbio.c:1351
#: g10/tdbio.c:1378
-#, fuzzy, c-format
+#, c-format
msgid "%s: error reading version record: %s\n"
-msgstr "%s: error comprobando la clave: %s\n"
+msgstr "%s: error lectura registro de versión: %s\n"
#: g10/tdbio.c:582
-#, fuzzy, c-format
+#, c-format
msgid "%s: error writing version record: %s\n"
-msgstr "%s: error comprobando la clave: %s\n"
+msgstr "%s: error escritura registro de versión: %s\n"
#: g10/tdbio.c:1058
-#, fuzzy, c-format
+#, c-format
msgid "trustdb: lseek failed: %s\n"
-msgstr "actualización de la clave secreta fallida: %s\n"
+msgstr "base de datos de confianza: fallo lseek: %s\n"
#: g10/tdbio.c:1066
-#, fuzzy, c-format
+#, c-format
msgid "trustdb: read failed (n=%d): %s\n"
-msgstr "actualización de confianza fallida: %s\n"
+msgstr "base de datos de confianza: error lectura (n=%d): %s\n"
#: g10/tdbio.c:1087
-#, fuzzy, c-format
+#, c-format
msgid "%s: not a trustdb file\n"
-msgstr "actualización de confianza fallida: %s\n"
+msgstr "%s: no es una base de datos de confianza\n"
#: g10/tdbio.c:1103
#, c-format
msgid "%s: version record with recnum %lu\n"
-msgstr ""
+msgstr "%s: registro de versión con numero de registro %lu\n"
#: g10/tdbio.c:1108
-#, fuzzy, c-format
+#, c-format
msgid "%s: invalid file version %d\n"
-msgstr "cabecera de firma clara no válida\n"
+msgstr "%s: versión del fichero %d no válida\n"
#: g10/tdbio.c:1384
-#, fuzzy, c-format
+#, c-format
msgid "%s: error reading free record: %s\n"
-msgstr "%s: error comprobando la clave: %s\n"
+msgstr "%s: error lectura registro libre: %s\n"
#: g10/tdbio.c:1392
-#, fuzzy, c-format
+#, c-format
msgid "%s: error writing dir record: %s\n"
-msgstr "%s: error comprobando la clave: %s\n"
+msgstr "%s: error escritura registro de directorio: %s\n"
#: g10/tdbio.c:1402
#, c-format
msgid "%s: failed to zero a record: %s\n"
-msgstr ""
+msgstr "%s: fallo en poner a cero un registro: %s\n"
#: g10/tdbio.c:1432
#, c-format
msgid "%s: failed to append a record: %s\n"
-msgstr ""
+msgstr "%s: fallo al añadir un registro: %s\n"
#: g10/trustdb.c:142
-#, fuzzy
msgid "The trustdb is corrupted; please run \"gpgm --fix-trustdb\".\n"
msgstr ""
"La base de datos de confianza está dañada. Por favor, ejecute\n"
"\"gpgm --fix-trust-db\".\n"
#: g10/trustdb.c:155
#, c-format
msgid "trust record %lu, req type %d: read failed: %s\n"
-msgstr ""
+msgstr "registro de confianza %lu, petición tipo %d: fallo lectura: %s\n"
#: g10/trustdb.c:170
#, c-format
msgid "trust record %lu, type %d: write failed: %s\n"
-msgstr ""
+msgstr "registro de confianza %lu, tipo %d: fallo escritura: %s\n"
#: g10/trustdb.c:184
-#, fuzzy, c-format
+#, c-format
msgid "trust record %lu: delete failed: %s\n"
-msgstr "actualización de la clave secreta fallida: %s\n"
+msgstr "registro de confianza %lu: fallo al borrar: %s\n"
#: g10/trustdb.c:198
-#, fuzzy, c-format
+#, c-format
msgid "trustdb: sync failed: %s\n"
-msgstr "actualización de confianza fallida: %s\n"
+msgstr "base de datos de confianza: fallo sincronización: %s\n"
#: g10/trustdb.c:327
#, c-format
msgid "error reading dir record for LID %lu: %s\n"
-msgstr ""
+msgstr "error lectura registro de directorio del LID %lu: %s\n"
#: g10/trustdb.c:334
#, c-format
msgid "lid %lu: expected dir record, got type %d\n"
-msgstr ""
+msgstr "lid %lu: esperaba registro directorio, encontrado tipo %d\n"
#: g10/trustdb.c:339
#, c-format
msgid "no primary key for LID %lu\n"
-msgstr ""
+msgstr "no hay clave primaria para el LID %lu\n"
#: g10/trustdb.c:344
-#, fuzzy, c-format
+#, c-format
msgid "error reading primary key for LID %lu: %s\n"
-msgstr "error creando contraseña: %s\n"
+msgstr "error lectura clave primaria para el LID %lu: %s\n"
#: g10/trustdb.c:420
#, c-format
msgid "chained sigrec %lu has a wrong owner\n"
-msgstr ""
+msgstr "registro de firma encadenado %lu tiene el propietario equivocado\n"
#: g10/trustdb.c:463
-#, fuzzy, c-format
+#, c-format
msgid "'%s' is not a valid long keyID\n"
-msgstr "Caracter no válido en el comentario\n"
+msgstr "'%s' no es un identificativo largo de clave válido\n"
#: g10/trustdb.c:498
-#, fuzzy, c-format
+#, c-format
msgid "key %08lX: no public key for trusted key - skipped\n"
-msgstr "clave %08lX: clave secreta sin clave pública - ignorada\n"
+msgstr "clave %08lX: clave de confianza sin clave pública - ignorada\n"
#: g10/trustdb.c:507 g10/trustdb.c:565
#, c-format
msgid "key %08lX: can't put it into the trustdb\n"
msgstr "clave %08lX: imposible incluirla en la base de datos de confianza\n"
#: g10/trustdb.c:512 g10/trustdb.c:571
#, c-format
msgid "key %08lX: query record failed\n"
msgstr "clave %08lX: petición de registro fallida\n"
#: g10/trustdb.c:517 g10/trustdb.c:580
-#, fuzzy, c-format
+#, c-format
msgid "key %08lX: already in trusted key table\n"
-msgstr "clave %08lX: ya está en la tabla secreta\n"
+msgstr "clave %08lX: ya está en la tabla de confianza\n"
#: g10/trustdb.c:520 g10/trustdb.c:583
-#, fuzzy, c-format
+#, c-format
msgid "key %08lX: accepted as trusted key.\n"
-msgstr "clave %08lX: aceptada como clave secreta.\n"
+msgstr "clave %08lX: aceptada como clave de confianza.\n"
#: g10/trustdb.c:536
-#, fuzzy, c-format
+#, c-format
msgid "NOTE: secret key %08lX is NOT protected.\n"
-msgstr "Esta clave no está protegida.\n"
+msgstr "NOTA: la clave secreta %08lX NO está protegida.\n"
#: g10/trustdb.c:548
#, c-format
msgid "key %08lX: secret key without public key - skipped\n"
msgstr "clave %08lX: clave secreta sin clave pública - ignorada\n"
#: g10/trustdb.c:555
#, c-format
msgid "key %08lX: secret and public key don't match\n"
msgstr "clave %08lX: las claves pública y secreta no se corresponden\n"
#: g10/trustdb.c:591
-#, fuzzy, c-format
+#, c-format
msgid "enumerate secret keys failed: %s\n"
msgstr "enum_secret_keys fallido: %s\n"
#: g10/trustdb.c:774
-#, fuzzy, c-format
+#, c-format
msgid "lid %lu: read dir record failed: %s\n"
-msgstr "clave %08lX: inserción del registro de confianza fallida: %s\n"
+msgstr "lid %lu: lectura registro de directorio fallida: %s\n"
#: g10/trustdb.c:783
-#, fuzzy, c-format
+#, c-format
msgid "lid %lu: read key record failed: %s\n"
-msgstr "clave %08lX: inserción del registro de confianza fallida: %s\n"
+msgstr "lid %lu: lectura registro de clave fallida: %s\n"
#: g10/trustdb.c:793
-#, fuzzy, c-format
+#, c-format
msgid "lid %lu: read uid record failed: %s\n"
-msgstr "clave %08lX: inserción del registro de confianza fallida: %s\n"
+msgstr "lid %lu: lectura registro identificativo fallida: %s\n"
#: g10/trustdb.c:802
-#, fuzzy, c-format
+#, c-format
msgid "lid %lu: read pref record failed: %s\n"
-msgstr "clave %08lX: inserción del registro de confianza fallida: %s\n"
+msgstr "lid %lu: lectura registro preferencias fallida: %s\n"
#: g10/trustdb.c:812
-#, fuzzy, c-format
+#, c-format
msgid "lid %lu: read sig record failed: %s\n"
-msgstr "clave %08lX: inserción del registro de confianza fallida: %s\n"
+msgstr "lid %lu: lectura registro firma fallida: %s\n"
#: g10/trustdb.c:1013
msgid "Ooops, no keys\n"
-msgstr ""
+msgstr "Oh oh, no hay claves\n"
#: g10/trustdb.c:1017
-#, fuzzy
msgid "Ooops, no user ids\n"
-msgstr "lista clave e identificativos de usuario"
+msgstr "Oh oh, no hay identificativos de usuario\n"
#: g10/trustdb.c:1088 g10/trustdb.c:1106
-#, fuzzy, c-format
+#, c-format
msgid "user '%s' read problem: %s\n"
-msgstr "%s: usuario no encontrado\n"
+msgstr "problema de lectura usuario '%s': %s\n"
#: g10/trustdb.c:1091 g10/trustdb.c:1109
-#, fuzzy, c-format
+#, c-format
msgid "user '%s' list problem: %s\n"
-msgstr "%s: usuario no encontrado\n"
+msgstr "problema lista usuario '%s': %s\n"
#: g10/trustdb.c:1099 g10/trustdb.c:1346
-#, fuzzy, c-format
+#, c-format
msgid "user '%s' not found: %s\n"
-msgstr "%s: usuario no encontrado\n"
+msgstr "usuario '%s' no encontrado: %s\n"
#: g10/trustdb.c:1101 g10/trustdb.c:1348
-#, fuzzy, c-format
+#, c-format
msgid "problem finding '%s' in trustdb: %s\n"
-msgstr "inicialización de la base de datos de confianza `%s' fallida\n"
+msgstr "problema buscando '%s' en la tabla de confianza: %s\n"
#: g10/trustdb.c:1104
-#, fuzzy, c-format
+#, c-format
msgid "user '%s' not in trustdb\n"
-msgstr "%s: usuario no encontrado\n"
+msgstr "usuario '%s' no está en la tabla de confianza\n"
#: g10/trustdb.c:1139
#, c-format
msgid ""
"# List of assigned trustvalues, created %s\n"
"# (Use \"gpgm --import-ownertrust\" to restore them)\n"
msgstr ""
+"# Lista de valores de confianza, creada el %s\n"
+"# (Puede usar \"gpgm --import-ownertrust\" para restablecerlos)\n"
#: g10/trustdb.c:1145
msgid "directory record w/o primary key\n"
-msgstr ""
+msgstr "registro de directorio sin clave primaria\n"
#: g10/trustdb.c:1152
-#, fuzzy, c-format
+#, c-format
msgid "error reading key record: %s\n"
-msgstr "%s: error comprobando la clave: %s\n"
+msgstr "error lectura registro de clave: %s\n"
#: g10/trustdb.c:1192
msgid "line too long\n"
-msgstr ""
+msgstr "linea demasiado larga\n"
#: g10/trustdb.c:1200
msgid "error: missing colon\n"
-msgstr ""
+msgstr "error: falta ':'\n"
#: g10/trustdb.c:1205
-#, fuzzy
msgid "error: invalid fingerprint\n"
-msgstr "muestra huella digital"
+msgstr "error: huella dactilar no válida\n"
#: g10/trustdb.c:1209
-#, fuzzy
msgid "error: no ownertrust value\n"
-msgstr "exporta los valores de confianza"
+msgstr "error: no hay valor de confianza del propietario\n"
#: g10/trustdb.c:1234
msgid "key not in trustdb, searching ring.\n"
-msgstr ""
+msgstr "la clave no está en tabla de confianza, buscando en el anillo.\n"
#: g10/trustdb.c:1237
-#, fuzzy, c-format
+#, c-format
msgid "key not in ring: %s\n"
-msgstr "no puede escribirse el anillo: %s\n"
+msgstr "la clave no está en el anillo: %s\n"
#: g10/trustdb.c:1241
msgid "Oops: key is now in trustdb???\n"
-msgstr ""
+msgstr "Oh oh: la clave ahora está en la tabla de confianza???\n"
#. update the ownertrust
#: g10/trustdb.c:1246
-#, fuzzy, c-format
+#, c-format
msgid "insert trust record failed: %s\n"
-msgstr "clave %08lX: inserción del registro de confianza fallida: %s\n"
+msgstr "inserción del registro de confianza fallida: %s\n"
#. error
#: g10/trustdb.c:1252
-#, fuzzy, c-format
+#, c-format
msgid "error finding dir record: %s\n"
-msgstr "eliminación de armadura fallida: %s\n"
+msgstr "error buscando registro de directorio: %s\n"
#: g10/trustdb.c:1351
-#, fuzzy, c-format
+#, c-format
msgid "user '%s' not in trustdb - inserting\n"
-msgstr "actualización de confianza fallida: %s\n"
+msgstr "usuario '%s' no está en la tabla de confianza - insertando\n"
#: g10/trustdb.c:1354
-#, fuzzy, c-format
+#, c-format
msgid "failed to put '%s' into trustdb: %s\n"
-msgstr "inicialización de la base de datos de confianza `%s' fallida\n"
+msgstr "fallo al poner '%s' en la tabla de confianza: %s\n"
#: g10/trustdb.c:1404
#, c-format
msgid "%s: keyblock read problem: %s\n"
-msgstr ""
+msgstr "%s: problema lectura del bloque de clave: %s\n"
#: g10/trustdb.c:1418
-#, fuzzy, c-format
+#, c-format
msgid "%s: update failed: %s\n"
-msgstr "actualización fallida: %s\n"
+msgstr "%s: actualización fallida: %s\n"
#: g10/trustdb.c:1421
#, c-format
msgid "%s: updated\n"
-msgstr ""
+msgstr "%s: actualizada\n"
#: g10/trustdb.c:1423
#, c-format
msgid "%s: okay\n"
-msgstr ""
+msgstr "%s: bien\n"
#: g10/trustdb.c:1438
#, c-format
msgid "lid %lu: dir record w/o key - skipped\n"
-msgstr ""
+msgstr "lid %lu: registro de directiorio sin clave - ignorado\n"
#: g10/trustdb.c:1451
-#, fuzzy, c-format
+#, c-format
msgid "lid %lu: keyblock not found: %s\n"
-msgstr "clave %08lX: clave pública no encontrada: %s\n"
+msgstr "lid %lu: bloque de clave no encontrado: %s\n"
#: g10/trustdb.c:1460 g10/trustdb.c:1529
-#, fuzzy, c-format
+#, c-format
msgid "lid %lu: update failed: %s\n"
-msgstr "actualización fallida: %s\n"
+msgstr "lid %lu: actualización fallida: %s\n"
#: g10/trustdb.c:1466 g10/trustdb.c:1535
#, c-format
msgid "lid %lu: updated\n"
-msgstr ""
+msgstr "lid %lu: actualizado\n"
#: g10/trustdb.c:1470 g10/trustdb.c:1539
#, c-format
msgid "lid %lu: okay\n"
-msgstr ""
+msgstr "lid %lu: bien\n"
#: g10/trustdb.c:1477 g10/trustdb.c:1545
#, c-format
msgid "%lu keys processed\n"
-msgstr ""
+msgstr "se han procesado %lu claves\n"
#: g10/trustdb.c:1479
-#, fuzzy, c-format
+#, c-format
msgid "\t%lu keys skipped\n"
-msgstr "%s: ignorado: %s\n"
+msgstr "\t%lu claves ignoradas\n"
#: g10/trustdb.c:1481 g10/trustdb.c:1547
-#, fuzzy, c-format
+#, c-format
msgid "\t%lu keys with errors\n"
-msgstr "Error de escritura"
+msgstr "\t%lu claves con errores\n"
#: g10/trustdb.c:1483 g10/trustdb.c:1549
#, c-format
msgid "\t%lu keys updated\n"
-msgstr ""
+msgstr "\t%lu claves actualizadas\n"
#: g10/trustdb.c:1513
-#, fuzzy, c-format
+#, c-format
msgid "lid ?: insert failed: %s\n"
-msgstr "actualización de la clave secreta fallida: %s\n"
+msgstr "lid ?: inserción fallida: %s\n"
#: g10/trustdb.c:1518
-#, fuzzy, c-format
+#, c-format
msgid "lid %lu: insert failed: %s\n"
-msgstr "actualización de la clave secreta fallida: %s\n"
+msgstr "lid %lu: inserción fallida: %s\n"
#: g10/trustdb.c:1524
#, c-format
msgid "lid %lu: inserted\n"
-msgstr ""
+msgstr "lid %lu: insertada\n"
#: g10/trustdb.c:1551
#, c-format
msgid "\t%lu keys inserted\n"
-msgstr ""
+msgstr "\t%lu claves insertadas\n"
#: g10/trustdb.c:1554
-#, fuzzy, c-format
+#, c-format
msgid "enumerate keyblocks failed: %s\n"
-msgstr "enum_secret_keys fallido: %s\n"
+msgstr "enumeración bloques de clave fallido: %s\n"
#: g10/trustdb.c:1599
-#, fuzzy, c-format
+#, c-format
msgid "check_trust: search dir record failed: %s\n"
-msgstr "clave %08lX: inserción del registro de confianza fallida: %s\n"
+msgstr "check_trust: búsqueda registro directorio fallida: %s\n"
#: g10/trustdb.c:1606
#, c-format
msgid "key %08lX: insert trust record failed: %s\n"
msgstr "clave %08lX: inserción del registro de confianza fallida: %s\n"
#: g10/trustdb.c:1610
#, c-format
msgid "key %08lX.%lu: inserted into trustdb\n"
msgstr "clave %08lX.%lu: incluida en la base de datos de confianza\n"
#: g10/trustdb.c:1618
#, c-format
msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
msgstr ""
"clave %08lX.%lu: creada en el futuro (salto en el tiempo o\n"
"problemas con el reloj)\n"
#: g10/trustdb.c:1625
#, c-format
msgid "key %08lX.%lu: expired at %s\n"
msgstr "clave %08lX.%lu: caducada el %s\n"
#: g10/trustdb.c:1633
#, c-format
msgid "key %08lX.%lu: trust check failed: %s\n"
msgstr "clave %08lX.%lu: comprobación de confianza fallida: %s\n"
#: g10/trustdb.c:1842 g10/trustdb.c:1871 g10/trustdb.c:2610
msgid "WARNING: can't yet handle long pref records\n"
-msgstr ""
+msgstr "ATENCÍON: todavía no puedo tratar registros de preferencias largos\n"
#: g10/trustdb.c:1893
-#, fuzzy, c-format
+#, c-format
msgid "get_dir_record: search_record failed: %s\n"
-msgstr "actualización de la clave secreta fallida: %s\n"
+msgstr "get_dir_record: search_record fallida: %s\n"
#: g10/trustdb.c:1956
#, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but marked as checked\n"
msgstr ""
+"NOTA: el registro de firma %lu[%d] está en la lista\n"
+"de búsqueda de %lu pero está marcado como comprobado\n"
#: g10/trustdb.c:1960
#, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but not marked\n"
msgstr ""
+"NOTA: el registro de firma %lu[%d] está en la lista\n"
+"de búsqueda de %lu pero no está marcado\n"
#. we need the dir record
#: g10/trustdb.c:1967
#, c-format
msgid "sig rec %lu[%d] in hintlist of %lu does not point to a dir record\n"
msgstr ""
+"El registro de firma %lu[%d] en la lista de búsqueda de %lu\n"
+"no apunta a un registro de directorio\n"
#: g10/trustdb.c:1973
#, c-format
msgid "lid %lu: no primary key\n"
-msgstr ""
+msgstr "lid %lu: ninguna clave primaria\n"
#: g10/trustdb.c:2006
#, c-format
msgid "lid %lu: user id not found in keyblock\n"
msgstr ""
+"lid %lu: no se ha encontrado identificativo de usuario\n"
+"en el bloque de clave\n"
#: g10/trustdb.c:2010
-#, fuzzy, c-format
+#, c-format
msgid "lid %lu: user id without signature\n"
-msgstr "clave %08lX: no hay id de usuario para la firma\n"
+msgstr "lid %lu: identificativo de usuario sin firma\n"
#: g10/trustdb.c:2017
#, c-format
msgid "lid %lu: self-signature in hintlist\n"
-msgstr ""
+msgstr "lid %lu: autofirma en lista de búsqueda\n"
#: g10/trustdb.c:2028 g10/trustdb.c:2747 g10/trustdb.c:2831
-#, fuzzy
msgid "Valid certificate revocation"
-msgstr "Certificado incorrecto"
+msgstr "Revocación de certificado válida"
#: g10/trustdb.c:2029 g10/trustdb.c:2748 g10/trustdb.c:2832
-#, fuzzy
msgid "Good certificate"
-msgstr "Certificado incorrecto"
+msgstr "Certificado bueno"
#: g10/trustdb.c:2038
msgid "very strange: no public key\n"
-msgstr ""
+msgstr "muy raro: no hay clave pública\n"
#: g10/trustdb.c:2086
#, c-format
msgid "hintlist %lu[%d] of %lu does not point to a dir record\n"
msgstr ""
+"la lista de búsqueda %lu[%d] de %lu no apunta a\n"
+"un registro de directorio\n"
#: g10/trustdb.c:2092
#, c-format
msgid "lid %lu does not have a key\n"
-msgstr ""
+msgstr "lid %lu no dispone de clave\n"
#: g10/trustdb.c:2102
#, c-format
msgid "lid %lu: can't get keyblock: %s\n"
-msgstr ""
+msgstr "lid %lu: no puedo obtener el bloque de clave: %s\n"
#: g10/trustdb.c:2159 g10/trustdb.c:3082
-#, fuzzy, c-format
+#, c-format
msgid "tdbio_search_dir failed: %s\n"
-msgstr "eliminación de armadura fallida: %s\n"
+msgstr "tdbio_search_dir fallida: %s\n"
#: g10/trustdb.c:2312
-#, fuzzy, c-format
+#, c-format
msgid "key %08lX.%lu: Good subkey binding\n"
-msgstr "clave %08lX: no hay id de usuario\n"
+msgstr "clave %08lX.%lu: buena unión de sub-clave\n"
#: g10/trustdb.c:2318 g10/trustdb.c:2360
-#, fuzzy, c-format
+#, c-format
msgid "key %08lX.%lu: Invalid subkey binding: %s\n"
-msgstr "clave %08lX: no hay ids de usuario válidos\n"
+msgstr "clave %08lX.%lu: unión de sub-clave no válida\n"
#: g10/trustdb.c:2333
-#, fuzzy, c-format
+#, c-format
msgid "key %08lX.%lu: Valid key revocation\n"
-msgstr "clave %08lX.%lu: caducada el %s\n"
+msgstr "clave %08lX.%lu: revocación de clave válida\n"
#: g10/trustdb.c:2339
-#, fuzzy, c-format
+#, c-format
msgid "key %08lX.%lu: Invalid key revocation: %s\n"
-msgstr "clave %08lX: clave pública no encontrada: %s\n"
+msgstr "clave %08lX.%lu: revocación de clave no válida: %s\n"
#: g10/trustdb.c:2354
-#, fuzzy, c-format
+#, c-format
msgid "key %08lX.%lu: Valid subkey revocation\n"
-msgstr "clave %08lX: no hay ids de usuario válidos\n"
+msgstr "clave %08lX.%lu: revocación de sub-clave válida\n"
#: g10/trustdb.c:2454
-#, fuzzy
msgid "Good self-signature"
-msgstr "[autofirma]"
+msgstr "autofirma buena"
#: g10/trustdb.c:2465
-#, fuzzy
msgid "Invalid self-signature"
-msgstr "clave %08lX: autofirma no válida\n"
+msgstr "autofirma no válida"
#: g10/trustdb.c:2475
msgid "Valid user ID revocation skipped due to a newer self signature\n"
msgstr ""
+"Revocación válida de identificativo de usuario ignorada debido auna "
+"autofirma más reciente\n"
#: g10/trustdb.c:2482
-#, fuzzy
msgid "Valid user ID revocation\n"
-msgstr "Elección no válida.\n"
+msgstr "Revocación identificativo de usuario válida.\n"
#: g10/trustdb.c:2489
#, fuzzy
msgid "Invalid user ID revocation"
-msgstr "Elección no válida.\n"
+msgstr "Revocación identificativo de usuario no válida.\n"
#: g10/trustdb.c:2573
-#, fuzzy
msgid "Too many preferences"
-msgstr "muestra preferencias"
+msgstr "demasiadas preferencias"
#: g10/trustdb.c:2587
msgid "Too many preference items"
-msgstr ""
+msgstr "demasiados items de preferencias"
#: g10/trustdb.c:2726
msgid "Duplicated certificate - deleted"
-msgstr ""
+msgstr "Certificado duplicado - eliminado"
#: g10/trustdb.c:2759
-#, fuzzy
msgid "Hmmm, public key lost?"
-msgstr "Clave pública incorrecta"
+msgstr "Oh oh, ¿se ha perdido la clave pública?"
#: g10/trustdb.c:2769 g10/trustdb.c:2852
-#, fuzzy
msgid "Invalid certificate revocation"
-msgstr "Certificado incorrecto"
+msgstr "Certificado de revocación incorrecto"
#: g10/trustdb.c:2770 g10/trustdb.c:2853
-#, fuzzy
msgid "Invalid certificate"
msgstr "Certificado incorrecto"
#: g10/trustdb.c:2785
#, c-format
msgid "uid %08lX.%lu/%02X%02X: has shadow dir %lu but is not yet marked.\n"
msgstr ""
#: g10/trustdb.c:2799
#, c-format
msgid "sig record %lu[%d] points to wrong record.\n"
-msgstr ""
+msgstr "registro de firma %lu[%d] apunta al registro equivocado.\n"
#. that should never happen
#: g10/trustdb.c:3052
-#, fuzzy, c-format
+#, c-format
msgid "insert_trust_record: keyblock not found: %s\n"
-msgstr "clave %08lX: clave secreta no encontrada: %s\n"
+msgstr "insert_trust_record: bloque de clave no encontrado: %s\n"
#: g10/trustdb.c:3070
msgid "did not use primary key for insert_trust_record()\n"
-msgstr ""
+msgstr "no se usó clave primaria para insert_trust_record()\n"
#: g10/ringedit.c:293
-#, fuzzy, c-format
+#, c-format
msgid "%s: can't create keyring: %s\n"
-msgstr "no puede escribirse el anillo: %s\n"
+msgstr "%s: no se puede crear el anillo: %s\n"
-#: g10/ringedit.c:299 g10/ringedit.c:1283
+#: g10/ringedit.c:299 g10/ringedit.c:1300
#, c-format
msgid "%s: keyring created\n"
-msgstr ""
+msgstr "%s: anillo creado\n"
-#: g10/ringedit.c:1469
+#: g10/ringedit.c:1486
msgid "WARNING: 2 files with confidential information exists.\n"
-msgstr ""
+msgstr "ATENCIÓN: existen 2 ficheros con información confidencial.\n"
-#: g10/ringedit.c:1470
+#: g10/ringedit.c:1487
#, c-format
msgid "%s is the unchanged one\n"
-msgstr ""
+msgstr "%s es el que no se ha modificado\n"
-#: g10/ringedit.c:1471
+#: g10/ringedit.c:1488
#, c-format
msgid "%s is the new one\n"
-msgstr ""
+msgstr "%s es el nuevo\n"
-#: g10/ringedit.c:1472
+#: g10/ringedit.c:1489
msgid "Please fix this possible security flaw\n"
+msgstr "Por favor arregle este posible fallo de seguridad\n"
+
+#: g10/skclist.c:88 g10/skclist.c:125
+msgid "key is not flagged as insecure - can't use it with the faked RNG!\n"
msgstr ""
-#: g10/skclist.c:94
-#, fuzzy, c-format
+#: g10/skclist.c:113
+#, c-format
msgid "skipped `%s': %s\n"
-msgstr "%s: ignorado: %s\n"
+msgstr "'%s' ignorado: %s\n"
-#: g10/skclist.c:100
-#, fuzzy, c-format
+#: g10/skclist.c:119
+#, c-format
msgid ""
"skipped `%s': this is a PGP generated ElGamal key which is not secure for "
"signatures!\n"
msgstr ""
-"¡esto es una clave ElGamal generada por PGP que NO es segura para las "
-"firmas!\n"
+"'%s' ignorada: ¡esta es una clave ElGamal generada por PGP\n"
+" que NO es segura para las firmas!\n"
#. do not overwrite
#: g10/openfile.c:58
#, c-format
msgid "File `%s' exists. "
msgstr "El fichero `%s' ya existe. "
#: g10/openfile.c:60
msgid "Overwrite (y/N)? "
msgstr "¿Sobreescribir (s/N)? "
#: g10/openfile.c:85
-#, fuzzy
msgid "writing to stdout\n"
-msgstr "escribiendo en `%s'\n"
+msgstr "escribiendo en stdout\n"
#: g10/openfile.c:134
-#, fuzzy, c-format
+#, c-format
msgid "assuming signed data in `%s'\n"
-msgstr "imposible abrir datos firmados `%s'\n"
+msgstr "asumiendo que hay datos firmados en `%s'\n"
#: g10/openfile.c:181
#, c-format
msgid "%s: new options file created\n"
-msgstr ""
+msgstr "%s: se ha creado un nuevo fichero de opciones\n"
#: g10/encr-data.c:59
-#, fuzzy, c-format
+#, c-format
msgid "%s encrypted data\n"
-msgstr "cifra datos"
+msgstr "datos cifrados %s\n"
#: g10/encr-data.c:61
#, c-format
msgid "encrypted with unknown algorithm %d\n"
-msgstr ""
+msgstr "cifrado con algoritmo desconocido %d\n"
#: g10/encr-data.c:74
-#, fuzzy
msgid ""
"WARNING: message was encrypted with a weak key in the symmetric cipher.\n"
msgstr ""
-"Atención: mensaje cifrado con una clave débil en el cifrado simétrico.\n"
+"ATENCIÓN: mensaje cifrado con una clave débil en el cifrado simétrico.\n"
#: g10/seskey.c:52
msgid "weak key created - retrying\n"
msgstr "creada clave débil - reintentando\n"
#: g10/seskey.c:57
#, c-format
msgid "cannot avoid weak key for symmetric cipher; tried %d times!\n"
msgstr ""
"¡imposible evitar clave débil para cifrado simétrico después de %d "
"intentos!\n"
#. begin of list
#: g10/helptext.c:48
msgid "edit_ownertrust.value"
msgstr ""
#: g10/helptext.c:54
msgid "revoked_key.override"
msgstr ""
#: g10/helptext.c:58
msgid "untrusted_key.override"
msgstr ""
#: g10/helptext.c:62
msgid "pklist.user_id.enter"
msgstr ""
#: g10/helptext.c:66
msgid "keygen.algo"
msgstr ""
#: g10/helptext.c:82
msgid "keygen.algo.elg_se"
msgstr ""
#: g10/helptext.c:89
msgid "keygen.size"
msgstr ""
#: g10/helptext.c:93
msgid "keygen.size.huge.okay"
msgstr ""
#: g10/helptext.c:98
msgid "keygen.size.large.okay"
msgstr ""
#: g10/helptext.c:103
msgid "keygen.valid"
msgstr ""
#: g10/helptext.c:107
msgid "keygen.valid.okay"
msgstr ""
#: g10/helptext.c:112
msgid "keygen.name"
msgstr ""
#: g10/helptext.c:117
msgid "keygen.email"
msgstr ""
#: g10/helptext.c:121
msgid "keygen.comment"
msgstr ""
#: g10/helptext.c:126
msgid "keygen.userid.cmd"
msgstr ""
#: g10/helptext.c:135
msgid "keygen.sub.okay"
msgstr ""
#: g10/helptext.c:139
msgid "sign_uid.okay"
msgstr ""
#: g10/helptext.c:144
msgid "change_passwd.empty.okay"
msgstr ""
#: g10/helptext.c:149
msgid "keyedit.cmd"
msgstr ""
#: g10/helptext.c:153
msgid "keyedit.save.okay"
msgstr ""
#: g10/helptext.c:158
msgid "keyedit.cancel.okay"
msgstr ""
#: g10/helptext.c:162
msgid "keyedit.sign_all.okay"
msgstr ""
#: g10/helptext.c:166
msgid "keyedit.remove.uid.okay"
msgstr ""
#: g10/helptext.c:171
msgid "keyedit.remove.subkey.okay"
msgstr ""
#: g10/helptext.c:175
msgid "passphrase.enter"
msgstr ""
#: g10/helptext.c:182
msgid "passphrase.repeat"
msgstr ""
#: g10/helptext.c:186
msgid "detached_signature.filename"
msgstr ""
#: g10/helptext.c:190
msgid "openfile.overwrite.okay"
msgstr ""
#: g10/helptext.c:204
msgid "No help available"
msgstr "Ayuda no disponible"
#: g10/helptext.c:216
#, c-format
msgid "No help available for `%s'"
msgstr "Ayuda no disponible para `%s'"
-#~ msgid "invalid clear text header: "
-#~ msgstr "cabecera de texto claro no válida: "
-
-#~ msgid "You will see a list of signators etc. here\n"
-#~ msgstr "Aquí se verá una lista de firmantes, etc.\n"
-
-#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: good signature (3)\n"
-#~ msgstr "clave %08lX.%lu, uid %02X%02X, firma %08lX: firma correcta (3)\n"
-
-#~ msgid ""
-#~ "key %08lX.%lu, uid %02X%02X, sig %08lX: very strange: no public key\n"
-#~ msgstr ""
-#~ "clave %08lX.%lu, uid %02X%02X, firma %08lX: extraño, no hay clave pública\n"
-
-#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: invalid signature: %s\n"
-#~ msgstr "clave %08lX.%lu, uid %02X%02X, firma %08lX: firma incorrecta: %s\n"
-
-#~ msgid "key %08lX.%lu, uid %02X%02X: good self-signature\n"
-#~ msgstr "clave %08lX.%lu, uid %02X%02X: autofirma correcta\n"
-
-#~ msgid ""
-#~ "key %08lX.%lu, uid %02X%02X, sig %08lX: duplicated signature - deleted\n"
-#~ msgstr ""
-#~ "clave %08lX.%lu, uid %02X%02X, firma %08lX: firma duplicada - borrada\n"
-
-#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: good signature (1)\n"
-#~ msgstr "clave %08lX.%lu, uid %02X%02X, firma %08lX: firma correcta (1)\n"
-
-#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: weird: no public key\n"
-#~ msgstr ""
-#~ "clave %08lX.%lu, uid %02X%02X, firma %08lX: raro, no hay clave pública\n"
-
-#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: good signature (2)\n"
-#~ msgstr "clave %08lX.%lu, uid %02X%02X, firma %08lX: firma correcta (2)\n"
+#~ msgid "second"
+#~ msgstr "segundo"
-#~ msgid "key %08lX.%lu, uid %02X%02X, sig %08lX: no public key\n"
-#~ msgstr "clave %08lX.%lu, uid %02X%02X, firma %08lX: no hay clave pública\n"
+#~ msgid "seconds"
+#~ msgstr "segundos"
diff --git a/po/fr.po b/po/fr.po
index 45a1c1dbf..e39f03abc 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,3155 +1,3227 @@
# GnuPG french translation
# Copyright (C) 1998 Free Software Foundation, Inc.
# Gaël Quéri <gqueri@mail.dotcom.fr>, 1998.
#
msgid ""
msgstr ""
"Project-Id-Version: gnupg 0.9.0a\n"
-"POT-Creation-Date: 1999-01-11 02:14+0100\n"
+"POT-Creation-Date: 1999-01-20 22:45+0100\n"
"PO-Revision-Date: 1999-01-09 00:25+01:00\n"
"Last-Translator: Gaël Quéri <gqueri@mail.dotcom.fr>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n"
#: util/secmem.c:77
msgid "Warning: using insecure memory!\n"
msgstr "Attention : utilisation de la mémoire non sûre !\n"
#: util/miscutil.c:143
msgid "yes"
msgstr "oui"
#: util/miscutil.c:144
msgid "yY"
msgstr "oO"
#: util/errors.c:54
msgid "general error"
msgstr "erreur générale"
#: util/errors.c:55
msgid "unknown packet type"
msgstr "type de paquet inconnu"
#: util/errors.c:56
msgid "unknown version"
msgstr "version inconnue"
#: util/errors.c:57
msgid "unknown pubkey algorithm"
msgstr "algorithme à clé publique inconnu"
#: util/errors.c:58
msgid "unknown digest algorithm"
msgstr "algorithme de hachage inconnu"
#: util/errors.c:59
msgid "bad public key"
msgstr "mauvaise clé publique"
#: util/errors.c:60
msgid "bad secret key"
msgstr "mauvaise clé secrète"
#: util/errors.c:61
msgid "bad signature"
msgstr "mauvaise signature"
#: util/errors.c:62
msgid "checksum error"
msgstr "erreur de checksum"
#: util/errors.c:63
msgid "bad passphrase"
msgstr "mauvais mot de passe"
#: util/errors.c:64
msgid "public key not found"
msgstr "clé publique non trouvée"
#: util/errors.c:65
msgid "unknown cipher algorithm"
msgstr "algorithme de chiffrement inconnu"
#: util/errors.c:66
msgid "can't open the keyring"
msgstr "ne peut ouvrir le porte-clés"
#: util/errors.c:67
msgid "invalid packet"
msgstr "paquet invalide"
#: util/errors.c:68
msgid "invalid armor"
msgstr "armure invalide"
#: util/errors.c:69
msgid "no such user id"
msgstr "pas de tel utilisateur"
#: util/errors.c:70
msgid "secret key not available"
msgstr "la clé secrète n'est pas disponible"
#: util/errors.c:71
msgid "wrong secret key used"
msgstr "mauvaise clé secrète utilisée"
#: util/errors.c:72
msgid "not supported"
msgstr "non supporté"
#: util/errors.c:73
msgid "bad key"
msgstr "mauvaise clé"
#: util/errors.c:74
msgid "file read error"
msgstr "erreur de lecture"
#: util/errors.c:75
msgid "file write error"
msgstr "erreur d'écriture"
#: util/errors.c:76
msgid "unknown compress algorithm"
msgstr "algorithme de compression inconnu"
#: util/errors.c:77
msgid "file open error"
msgstr "erreur d'ouverture de fichier"
#: util/errors.c:78
msgid "file create error"
msgstr "erreur de création de fichier"
#: util/errors.c:79
msgid "invalid passphrase"
msgstr "mot de passe invalide"
#: util/errors.c:80
msgid "unimplemented pubkey algorithm"
msgstr "algorithme à clé publique non implémenté"
#: util/errors.c:81
msgid "unimplemented cipher algorithm"
msgstr "algorithme de chiffrement non implémenté"
#: util/errors.c:82
msgid "unknown signature class"
msgstr "classe de signature inconnue"
#: util/errors.c:83
msgid "trust database error"
msgstr "erreur dans la base de confiance"
#: util/errors.c:84
msgid "bad MPI"
msgstr "mauvais entier en précision multiple (MPI)"
#: util/errors.c:85
msgid "resource limit"
msgstr "limite de ressources atteinte"
#: util/errors.c:86
msgid "invalid keyring"
msgstr "porte-clés invalide"
#: util/errors.c:87
msgid "bad certificate"
msgstr "mauvais certificat"
#: util/errors.c:88
msgid "malformed user id"
msgstr "nom d'utilisateur malformé"
#: util/errors.c:89
msgid "file close error"
msgstr "erreur de fermeture de fichier"
#: util/errors.c:90
msgid "file rename error"
msgstr "erreur pendant le changement de nom du fichier"
#: util/errors.c:91
msgid "file delete error"
msgstr "erreur pendant la suppression du fichier"
#: util/errors.c:92
msgid "unexpected data"
msgstr "données inattendues"
#: util/errors.c:93
msgid "timestamp conflict"
msgstr "conflit de dates"
#: util/errors.c:94
msgid "unusable pubkey algorithm"
msgstr "algorithme de clés publiques inutilisable"
#: util/errors.c:95
msgid "file exists"
msgstr "le fichier existe"
#: util/errors.c:96
msgid "weak key"
msgstr "mauvaise clé"
+#: util/errors.c:97
+#, fuzzy
+msgid "invalid argument"
+msgstr "armure invalide"
+
+#: util/errors.c:98
+#, fuzzy
+msgid "bad URI"
+msgstr "mauvais entier en précision multiple (MPI)"
+
+#: util/errors.c:99
+#, fuzzy
+msgid "unsupported URI"
+msgstr "non supporté"
+
+#: util/errors.c:100
+#, fuzzy
+msgid "network error"
+msgstr "erreur générale"
+
#: util/logger.c:178
#, c-format
msgid "... this is a bug (%s:%d:%s)\n"
msgstr "... c'est un bug (%s:%d:%s)\n"
#: util/logger.c:184
#, c-format
msgid "you found a bug ... (%s:%d)\n"
msgstr "vous avez trouvé un bug ... (%s:%d)\n"
-#: cipher/random.c:405
+#: cipher/random.c:412
msgid "WARNING: using insecure random number generator!!\n"
msgstr ""
"ATTENTION : utilisation d'un générateur de nombres aléatoires peu sûr !!\n"
-#: cipher/random.c:406
+#: cipher/random.c:413
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 ""
"Le générateur de nombres aléatoires n'est qu'un artifice visant à exécuter\n"
"GnuPG - ce n'est en aucune manière un générateur (RNG) fort!\n"
"\n"
"N'UTILISEZ PAS LES DONNÉES GÉNÉRÉES PAR CE PROGRAMME!!\n"
"\n"
#: cipher/rndlinux.c:118
#, c-format
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"
"Il n'y a pas assez d'octets aléatoires disponibles. Faites autre chose\n"
"pour que l'OS puisse amasser plus d'entropie ! (il faut %d octets de plus)\n"
-#: g10/g10.c:160
+#: g10/g10.c:163
msgid ""
"@Commands:\n"
" "
msgstr ""
"@Commandes:\n"
" "
-#: g10/g10.c:163
+#: g10/g10.c:166
msgid "|[file]|make a signature"
msgstr "|[fichier]|faire une signature"
-#: g10/g10.c:164
+#: g10/g10.c:167
msgid "|[file]|make a clear text signature"
msgstr "|[fichier]|faire une signature en texte clair"
-#: g10/g10.c:165
+#: g10/g10.c:168
msgid "make a detached signature"
msgstr "faire une signature détachée"
-#: g10/g10.c:166
+#: g10/g10.c:169
msgid "encrypt data"
msgstr "chiffrer les données"
-#: g10/g10.c:167
+#: g10/g10.c:170
msgid "encryption only with symmetric cipher"
msgstr "chiffrement symétrique seulement"
-#: g10/g10.c:168
+#: g10/g10.c:171
msgid "store only"
msgstr "pas d'action"
-#: g10/g10.c:169
+#: g10/g10.c:172
msgid "decrypt data (default)"
msgstr "déchiffrer les données (défaut)"
-#: g10/g10.c:170
+#: g10/g10.c:173
msgid "verify a signature"
msgstr "vérifier une signature"
-#: g10/g10.c:172
+#: g10/g10.c:175
msgid "list keys"
msgstr "lister les clés"
-#: g10/g10.c:173
+#: g10/g10.c:176
msgid "list keys and signatures"
msgstr "lister les clés et les signatures"
-#: g10/g10.c:174
+#: g10/g10.c:177
msgid "check key signatures"
msgstr "vérifier les signatures des clés"
-#: g10/g10.c:175
+#: g10/g10.c:178
msgid "list keys and fingerprints"
msgstr "lister les clés et les empreintes"
-#: g10/g10.c:176
+#: g10/g10.c:179
msgid "list secret keys"
msgstr "lister les clés secrètes"
-#: g10/g10.c:178
+#: g10/g10.c:181
msgid "generate a new key pair"
msgstr "générer une nouvelle paire de clés"
-#: g10/g10.c:180
+#: g10/g10.c:183
msgid "remove key from the public keyring"
msgstr "enlever la clé du porte-clés public"
-#: g10/g10.c:182
+#: g10/g10.c:185
msgid "sign or edit a key"
msgstr "signer ou éditer une clé"
-#: g10/g10.c:183
+#: g10/g10.c:186
msgid "generate a revocation certificate"
msgstr "générer un certificat de révocation"
-#: g10/g10.c:185
+#: g10/g10.c:188
msgid "export keys"
msgstr "exporter les clés"
-#: g10/g10.c:188
+#: g10/g10.c:189
+msgid "export keys to a key server"
+msgstr ""
+
+#: g10/g10.c:192
msgid "import/merge keys"
msgstr "importer/fusionner les clés"
-#: g10/g10.c:190
+#: g10/g10.c:194
msgid "list only the sequence of packets"
msgstr "ne lister que les paquets"
-#: g10/g10.c:193
+#: g10/g10.c:197
msgid "export the ownertrust values"
msgstr "exporter les indices de confiance"
-#: g10/g10.c:195
+#: g10/g10.c:199
msgid "import ownertrust values"
msgstr "importer les indices de confiance"
#
-#: g10/g10.c:197
+#: g10/g10.c:201
msgid "|[NAMES]|update the trust database"
msgstr "|[NOMS]|mettre la base de confiance à jour"
-#: g10/g10.c:199
+#: g10/g10.c:203
msgid "|[NAMES]|check the trust database"
msgstr "|[NOMS]|vérifier la base de confiance"
-#: g10/g10.c:200
+#: g10/g10.c:204
msgid "fix a corrupted trust database"
msgstr "réparer une base de confiance corrompue"
-#: g10/g10.c:201
+#: g10/g10.c:205
msgid "De-Armor a file or stdin"
msgstr "Enlever l'armure d'un fichier ou de stdin"
-#: g10/g10.c:202
+#: g10/g10.c:206
msgid "En-Armor a file or stdin"
msgstr "Mettre une armure à un fichier ou à stdin"
-#: g10/g10.c:203
+#: g10/g10.c:207
msgid "|algo [files]|print message digests"
msgstr "|alg. [fich.]|indiquer les fonctions de hachage"
-#: g10/g10.c:204
+#: g10/g10.c:208
msgid "print all message digests"
msgstr "écrire toutes les fonctions de hachage"
-#: g10/g10.c:211
+#: g10/g10.c:215
msgid ""
"@\n"
"Options:\n"
" "
msgstr ""
"@\n"
"Options:\n"
" "
-#: g10/g10.c:213
+#: g10/g10.c:217
msgid "create ascii armored output"
msgstr "créer une sortie ascii armurée"
-#: g10/g10.c:215
+#: g10/g10.c:219
msgid "use this user-id to sign or decrypt"
msgstr "utiliser ce nom pour signer ou déchiffrer"
-#: g10/g10.c:216
+#: g10/g10.c:220
msgid "use this user-id for encryption"
msgstr "utiliser ce nom d'utilisateur pour chiffrer"
-#: g10/g10.c:217
+#: g10/g10.c:221
msgid "|N|set compress level N (0 disables)"
msgstr "|N|niveau de compression N (0 désactive)"
-#: g10/g10.c:219
+#: g10/g10.c:223
msgid "use canonical text mode"
msgstr "utiliser le mode de texte canonique"
-#: g10/g10.c:221
+#: g10/g10.c:225
msgid "use as output file"
msgstr "utiliser comme fichier de sortie"
-#: g10/g10.c:222
+#: g10/g10.c:226
msgid "verbose"
msgstr "bavard"
-#: g10/g10.c:223
+#: g10/g10.c:227
msgid "be somewhat more quiet"
msgstr "devenir beaucoup plus silencieux"
#
-#: g10/g10.c:224
+#: g10/g10.c:228
msgid "force v3 signatures"
msgstr "forcer les signatures en v3"
#. { oDryRun, "dry-run", 0, N_("do not make any changes") },
-#: g10/g10.c:226
+#: g10/g10.c:230
msgid "batch mode: never ask"
msgstr "mode automatique : ne jamais rien demander"
-#: g10/g10.c:227
+#: g10/g10.c:231
msgid "assume yes on most questions"
msgstr "répondre oui à la plupart des questions"
-#: g10/g10.c:228
+#: g10/g10.c:232
msgid "assume no on most questions"
msgstr "répondre non à la plupart des questions"
-#: g10/g10.c:229
+#: g10/g10.c:233
msgid "add this keyring to the list of keyrings"
msgstr "ajouter ce porte-clés à la liste des porte-clés"
-#: g10/g10.c:230
+#: g10/g10.c:234
msgid "add this secret keyring to the list"
msgstr "ajouter ce porte-clés secret à la liste"
-#: g10/g10.c:231
+#: g10/g10.c:235
msgid "|NAME|use NAME as default secret key"
msgstr "|NOM|utiliser NOM comme clé secrète par défaut"
-#: g10/g10.c:232
+#: g10/g10.c:236
+msgid "|HOST|use this keyserver to lookup keys"
+msgstr ""
+
+#: g10/g10.c:237
msgid "|NAME|set terminal charset to NAME"
msgstr "|NOM|le terminal utilise la table de caractères NOM"
-#: g10/g10.c:233
+#: g10/g10.c:238
msgid "read options from file"
msgstr "lire les options du fichier"
-#: g10/g10.c:235
+#: g10/g10.c:240
msgid "set debugging flags"
msgstr "choisir les attributs de déboguage"
-#: g10/g10.c:236
+#: g10/g10.c:241
msgid "enable full debugging"
msgstr "permettre un déboguage complet"
-#: g10/g10.c:237
+#: g10/g10.c:242
msgid "|FD|write status info to this FD"
msgstr "|FD|écrire l'état sur ce descripteur"
-#: g10/g10.c:238
+#: g10/g10.c:243
msgid "do not write comment packets"
msgstr "ne pas écrire de paquets de commentaire"
-#: g10/g10.c:239
+#: g10/g10.c:244
msgid "(default is 1)"
msgstr "(1 par défaut)"
-#: g10/g10.c:240
+#: g10/g10.c:245
msgid "(default is 3)"
msgstr "(3 par défaut)"
-#: g10/g10.c:242
+#: g10/g10.c:247
msgid "|KEYID|ulimately trust this key"
msgstr "|ID CLE|donner une confiance totale à cette clé"
-#: g10/g10.c:243
+#: g10/g10.c:248
msgid "|FILE|load extension module FILE"
msgstr "|FICH|charger le module d'extension FICH"
-#: g10/g10.c:244
+#: g10/g10.c:249
msgid "emulate the mode described in RFC1991"
msgstr "imiter le mode décrit dans la RFC1991"
# FIXMOI : faudra trouver mieux ...
-#: g10/g10.c:245
+#: g10/g10.c:250
msgid "|N|use passphrase mode N"
msgstr "|N|utiliser le mode de codage des mots de passe N"
-#: g10/g10.c:247
+#: g10/g10.c:252
msgid "|NAME|use message digest algorithm NAME for passphrases"
msgstr "|NOM|utiliser le hachage NOM pour les mots de passe"
-#: g10/g10.c:249
+#: g10/g10.c:254
msgid "|NAME|use cipher algorithm NAME for passphrases"
msgstr "|NOM|utiliser le chiffre NOM pour les mots de passe"
-#: g10/g10.c:251
+#: g10/g10.c:256
msgid "|NAME|use cipher algorithm NAME"
msgstr "|NOM|utiliser l'algorithme de chiffrement NOM"
-#: g10/g10.c:252
+#: g10/g10.c:257
msgid "|NAME|use message digest algorithm NAME"
msgstr "|NOM|utiliser la fonction de hachage NOM"
-#: g10/g10.c:253
+#: g10/g10.c:258
msgid "|N|use compress algorithm N"
msgstr "|N|utiliser l'algorithme de compression N"
-#: g10/g10.c:254
+#: g10/g10.c:259
msgid "throw keyid field of encrypted packets"
msgstr "supprimer l'identification des paquets chiffrés"
-#: g10/g10.c:262
+#: g10/g10.c:267
msgid ""
"@\n"
"Examples:\n"
"\n"
" -se -r Bob [file] sign and encrypt for user Bob\n"
" --clearsign [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"
msgstr ""
"@\n"
"Exemples:\n"
"\n"
" -se -r Alice [fichier] signer et crypter pour l'utilisateur Alice\n"
" --clearsign [fichier] faire une signature en texte clair\n"
" --detach-sign [fichier] faire une signature détachée\n"
" --list-keys [utilisateur] montrer les clés\n"
" --fingerprint [utilisateur] montrer les empreintes\n"
-#: g10/g10.c:341
+#: g10/g10.c:346
msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
msgstr "Rapporter toutes anomalies à <gnupg-bugs@gnu.org>.\n"
-#: g10/g10.c:346
+#: g10/g10.c:351
msgid "Usage: gpgm [options] [files] (-h for help)"
msgstr "Utilisation: gpgm [options] [fichiers] (-h pour l'aide)"
-#: g10/g10.c:348
+#: g10/g10.c:353
msgid "Usage: gpg [options] [files] (-h for help)"
msgstr "Utilisation: gpg [options] [fichiers] (-h pour l'aide)"
#
-#: g10/g10.c:353
+#: g10/g10.c:358
msgid ""
"Syntax: gpgm [options] [files]\n"
"GnuPG maintenance utility\n"
msgstr ""
"Syntaxe: gpgm [options] [fichiers]\n"
"utilitaire de maitenance de GnuPG\n"
-#: g10/g10.c:356
+#: g10/g10.c:361
msgid ""
"Syntax: gpg [options] [files]\n"
"sign, check, encrypt or decrypt\n"
"default operation depends on the input data\n"
msgstr ""
"Syntaxe: gpg [options] [fichiers]\n"
"signer, vérifier, crypter ou décrypter\n"
"l'opération par défaut dépend des données entrées\n"
-#: g10/g10.c:362
+#: g10/g10.c:367
msgid ""
"\n"
"Supported algorithms:\n"
msgstr ""
"\n"
"Algorithmes supportés:\n"
-#: g10/g10.c:437
+#: g10/g10.c:442
msgid "usage: gpgm [options] "
msgstr "utilisation: gpgm [options] "
-#: g10/g10.c:439
+#: g10/g10.c:444
msgid "usage: gpg [options] "
msgstr "utilisation: gpg [options] "
-#: g10/g10.c:480
+#: g10/g10.c:485
msgid "conflicting commands\n"
msgstr "commandes en conflit\n"
-#: g10/g10.c:618
+#: g10/g10.c:623
#, c-format
msgid "NOTE: no default option file `%s'\n"
msgstr "NOTE : pas de fichier d'options par défaut `%s'\n"
-#: g10/g10.c:622
+#: g10/g10.c:627
#, c-format
msgid "option file `%s': %s\n"
msgstr "fichier d'options `%s' : %s\n"
-#: g10/g10.c:629
+#: g10/g10.c:634
#, c-format
msgid "reading options from `%s'\n"
msgstr "lire les options de `%s'\n"
-#: g10/g10.c:782
+#: g10/g10.c:788
#, c-format
msgid "%s is not a valid character set\n"
msgstr "%s n'est pas une table de caractères valide\n"
-#: g10/g10.c:817 g10/g10.c:829
+#: g10/g10.c:824 g10/g10.c:836
msgid "selected cipher algorithm is invalid\n"
msgstr "l'algorithme de chiffrement sélectionné est invalide\n"
-#: g10/g10.c:823 g10/g10.c:835
+#: g10/g10.c:830 g10/g10.c:842
msgid "selected digest algorithm is invalid\n"
msgstr "la fonction de hachage sélectionnée est invalide\n"
-#: g10/g10.c:838
+#: g10/g10.c:845
#, c-format
msgid "compress algorithm must be in range %d..%d\n"
msgstr "l'algorithme de compression doit faire partie de l'échelle %d..%d\n"
-#: g10/g10.c:840
+#: g10/g10.c:847
msgid "completes-needed must be greater than 0\n"
msgstr "« completes-needed » doit être supérieur à 0\n"
-#: g10/g10.c:842
+#: g10/g10.c:849
msgid "marginals-needed must be greater than 1\n"
msgstr "« marginals-needed » doit être supérieur à 1\n"
-#: g10/g10.c:844
+#: g10/g10.c:851
msgid "max-cert-depth must be in range 1 to 255\n"
msgstr "« max-cert-depth » doit être compris entre 1 et 255\n"
-#: g10/g10.c:847
+#: g10/g10.c:854
msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
msgstr "NOTE : le mode S2K simple (0) est fortement déconseillé\n"
-#: g10/g10.c:851
+#: g10/g10.c:858
msgid "invalid S2K mode; must be 0, 1 or 3\n"
msgstr "mode S2K invalide ; doit être 0, 1 ou 3\n"
-#: g10/g10.c:934
+#: g10/g10.c:941
#, c-format
msgid "failed to initialize the TrustDB: %s\n"
msgstr "n'a pas pu initialiser la base de confiance : %s\n"
-#: g10/g10.c:940
+#: g10/g10.c:947
msgid "--store [filename]"
msgstr "--store [nom du fichier]"
-#: g10/g10.c:948
+#: g10/g10.c:955
msgid "--symmetric [filename]"
msgstr "--symmetric [nom du fichier]"
-#: g10/g10.c:956
+#: g10/g10.c:963
msgid "--encrypt [filename]"
msgstr "--encrypt [nom du fichier]"
-#: g10/g10.c:969
+#: g10/g10.c:976
msgid "--sign [filename]"
msgstr "--sign [nom du fichier]"
-#: g10/g10.c:982
+#: g10/g10.c:989
msgid "--sign --encrypt [filename]"
msgstr "--sign --encrypt [nom du fichier]"
-#: g10/g10.c:996
+#: g10/g10.c:1003
msgid "--clearsign [filename]"
msgstr "--clearsign [nom du fichier]"
-#: g10/g10.c:1008
+#: g10/g10.c:1015
msgid "--decrypt [filename]"
msgstr "--decrypt [nom du fichier]"
-#: g10/g10.c:1017
+#: g10/g10.c:1024
msgid "--edit-key username [commands]"
msgstr "--edit-key utilisateur [commandes]"
-#: g10/g10.c:1033
+#: g10/g10.c:1040
msgid "--delete-secret-key username"
msgstr "--delete-secret-key utilisateur"
-#: g10/g10.c:1036
+#: g10/g10.c:1043
msgid "--delete-key username"
msgstr "--delete-key utilisateur"
-#: g10/encode.c:216 g10/g10.c:1059 g10/sign.c:301
+#: g10/encode.c:216 g10/g10.c:1066 g10/sign.c:311
#, c-format
msgid "can't open %s: %s\n"
msgstr "ne peut ouvrir %s: %s\n"
-#: g10/g10.c:1070
+#: g10/g10.c:1077
msgid "-k[v][v][v][c] [userid] [keyring]"
msgstr "-k[v][v][v][c] [utilisateur] [porte-clés]"
-#: g10/g10.c:1127
+#: g10/g10.c:1138
#, c-format
msgid "dearmoring failed: %s\n"
msgstr "suppression d'armure non réussie : %s\n"
-#: g10/g10.c:1135
+#: g10/g10.c:1146
#, c-format
msgid "enarmoring failed: %s\n"
msgstr "construction d'armure non réussie : %s \n"
-#: g10/g10.c:1201
+#: g10/g10.c:1212
#, c-format
msgid "invalid hash algorithm `%s'\n"
msgstr "algorithme de hachage `%s' invalide\n"
-#: g10/g10.c:1280
+#: g10/g10.c:1291
msgid "[filename]"
msgstr "[nom du fichier]"
-#: g10/g10.c:1284
+#: g10/g10.c:1295
msgid "Go ahead and type your message ...\n"
msgstr "Continuez et tapez votre message...\n"
-#: g10/decrypt.c:59 g10/g10.c:1287 g10/verify.c:66
+#: g10/decrypt.c:59 g10/g10.c:1298 g10/verify.c:66
#, c-format
msgid "can't open `%s'\n"
msgstr "ne peut ouvrir `%s'\n"
-#: g10/armor.c:321
+#: g10/armor.c:297
#, c-format
msgid "armor: %s\n"
msgstr "armure : %s\n"
-#: g10/armor.c:344
+#: g10/armor.c:320
msgid "invalid armor header: "
msgstr "en-tête d'armure invalide : "
-#: g10/armor.c:351
+#: g10/armor.c:327
msgid "armor header: "
msgstr "en-tête d'armure : "
-#: g10/armor.c:362
+#: g10/armor.c:338
msgid "invalid clearsig header\n"
msgstr "en-tête de signature claire invalide\n"
-#: g10/armor.c:414
+#: g10/armor.c:390
msgid "nested clear text signatures\n"
msgstr "signatures en texte clair imbriquées\n"
-#: g10/armor.c:533
+#: g10/armor.c:508
msgid "invalid dash escaped line: "
msgstr "ligne de traits d'échappement invalide : "
-#: g10/armor.c:541
+#: g10/armor.c:516
msgid "unexpected armor:"
msgstr "armure inattendue :"
-#: g10/armor.c:627
+#: g10/armor.c:632
#, c-format
msgid "invalid radix64 character %02x skipped\n"
msgstr "caractère %02x invalide en base 64 ignoré\n"
-#: g10/armor.c:657
+#: g10/armor.c:675
msgid "premature eof (no CRC)\n"
msgstr "fin de fichier prématurée (pas de CRC)\n"
-#: g10/armor.c:674
+#: g10/armor.c:709
msgid "premature eof (in CRC)\n"
msgstr "fin de fichier prématurée (dans le CRC)\n"
-#: g10/armor.c:678
+#: g10/armor.c:713
msgid "malformed CRC\n"
msgstr "CRC malformé\n"
-#: g10/armor.c:682
+#: g10/armor.c:717
#, c-format
msgid "CRC error; %06lx - %06lx\n"
msgstr "Erreur de CRC ; %06lx - %06lx\n"
-#: g10/armor.c:699
+#: g10/armor.c:734
msgid "premature eof (in Trailer)\n"
msgstr "fin de fichier prématurée (dans la remorque)\n"
-#: g10/armor.c:703
+#: g10/armor.c:738
msgid "error in trailer line\n"
msgstr "erreur dans la ligne de remorque\n"
-#: g10/armor.c:964
+#: g10/armor.c:999
msgid "no valid OpenPGP data found.\n"
msgstr "aucune de donnée OpenPGP valide n'a été trouvée.\n"
-#: g10/armor.c:966
+#: g10/armor.c:1001
#, c-format
msgid "invalid armor: line longer than %d characters\n"
msgstr "armure invalide : ligne plus longue que %d caractères\n"
+#: g10/armor.c:1005
+msgid ""
+"quoted printable character in armor - probably a buggy MTA has been used\n"
+msgstr ""
+
#: g10/pkclist.c:138
#, c-format
msgid ""
"No trust value assigned to %lu:\n"
"%4u%c/%08lX %s \""
msgstr ""
"Pas de confiance définie pour %lu :\n"
"%4u%c/%08lX %s \""
#: g10/pkclist.c:148
msgid ""
"Please decide how far you trust this user to correctly\n"
"verify other users' keys (by looking at passports,\n"
"checking fingerprints from different sources...)?\n"
"\n"
" 1 = Don't know\n"
" 2 = I do NOT trust\n"
" 3 = I trust marginally\n"
" 4 = I trust fully\n"
" s = please show me more information\n"
msgstr ""
"Décidez à quel point vous avez confiance en cet utilisateur pour vérifier\n"
"correctement les clés des autres utilisateurs (en regardant des passeports,\n"
"en vérifiant les empreintes de diverses sources...)?\n"
"\n"
" 1 = je ne sais pas\n"
" 2 = je ne lui fais pas confiance\n"
" 3 = je le crois marginalement\n"
" 4 = je le crois totalement\n"
" s = montrez moi plus d'informations\n"
#: g10/pkclist.c:157
msgid " m = back to the main menu\n"
msgstr " m = retour au menu principal\n"
#: g10/pkclist.c:159
msgid " q = quit\n"
msgstr " q = quitter\n"
#. a string with valid answers
#: g10/pkclist.c:164
msgid "sSmMqQ"
msgstr "sSmMqQ"
#: g10/pkclist.c:168
msgid "Your decision? "
msgstr "Votre décision ? "
#: g10/pkclist.c:188
msgid "Certificates leading to an ultimately trusted key:\n"
msgstr "Certificats conduisant vers une clé à confiance ultime :\n"
#: g10/pkclist.c:223
msgid ""
"Could not find a valid trust path to the key. Let's see whether we\n"
"can assign some missing owner trust values.\n"
"\n"
msgstr ""
"N'a pas pu trouver un chemin de confiance valide jusqu'à la clé. Voyons si\n"
"nous ne pouvons pas assigner quelques indices de confiance manquants.\n"
#: g10/pkclist.c:261
msgid ""
"No path leading to one of our keys found.\n"
"\n"
msgstr ""
"Aucun chemin menant vers une de nos clés n'a été trouvé.\n"
"\n"
#: g10/pkclist.c:263
msgid ""
"No certificates with undefined trust found.\n"
"\n"
msgstr ""
"Aucun certificat à confiance indéfinie n'a été trouvé.\n"
"\n"
#: g10/pkclist.c:265
msgid ""
"No trust values changed.\n"
"\n"
msgstr ""
"Pas d'indice de confiance changé.\n"
"\n"
#: g10/pkclist.c:280
#, c-format
msgid "key %08lX: key has been revoked!\n"
msgstr "clé %08lX : la clé a été révoquée !\n"
#: g10/pkclist.c:286 g10/pkclist.c:381
msgid "Use this key anyway? "
msgstr "Utiliser cette clé quand-même ? "
#: g10/pkclist.c:308
#, c-format
msgid "%08lX: key has expired\n"
msgstr "%08lX : la clé a expiré\n"
#: g10/pkclist.c:314
#, c-format
msgid "%08lX: no info to calculate a trust probability\n"
msgstr "%08lX : pas d'information pour calculer une probabilité de confiance\n"
#: g10/pkclist.c:332
#, c-format
msgid "%08lX: We do NOT trust this key\n"
msgstr "%08lX : Nous ne faisons PAS confiance à cette clé\n"
#: g10/pkclist.c:338
#, c-format
msgid ""
"%08lX: It is not sure that this key really belongs to the owner\n"
"but it is accepted anyway\n"
msgstr ""
"%08lX : Il n'est pas sûr que cette clé appartient vraiment à son "
"propriétaire\n"
"mais elle est quand même acceptée\n"
#: g10/pkclist.c:344
msgid "This key probably belongs to the owner\n"
msgstr "Cette clé appartient probablement à son propriétaire\n"
#: g10/pkclist.c:349
msgid "This key belongs to us\n"
msgstr "Cette clé nous appartient\n"
#: g10/pkclist.c:376
msgid ""
"It is NOT certain that the key belongs to its owner.\n"
"If you *really* know what you are doing, you may answer\n"
"the next question with yes\n"
"\n"
msgstr ""
"Il n'est pas certain que la clé appartient à sos propriétaire.\n"
"Si vous savez *vraiment* ce que vous faites, vous pouvez répondre\n"
"oui à la prochaine question\n"
"\n"
#: g10/pkclist.c:385
msgid "WARNING: Using untrusted key!\n"
msgstr "ATTENTION : Utilisation d'une clé sans confiance !\n"
#: g10/pkclist.c:421
msgid "WARNING: This key has been revoked by its owner!\n"
msgstr "ATTENTION : Cette clé à été révoquée par son propriétaire !\n"
#: g10/pkclist.c:422
msgid " This could mean that the signature is forgery.\n"
msgstr " Cela pourrait signifier que la signature est fausse.\n"
#: g10/pkclist.c:443
msgid "Note: This key has expired!\n"
msgstr "Note : Cette clé a expiré !\n"
#: g10/pkclist.c:450
msgid "WARNING: This key is not certified with a trusted signature!\n"
msgstr ""
"ATTENTION : Cette clé n'est pas certifiée avec une signature de confiance !\n"
#: g10/pkclist.c:452
msgid ""
" There is no indication that the signature belongs to the owner.\n"
msgstr " Rien ne dit que la signature appartient à son propriétaire.\n"
#: g10/pkclist.c:468
msgid "WARNING: We do NOT trust this key!\n"
msgstr "ATTENTION : Nous ne faisons PAS confiance à cette clé !\n"
#: g10/pkclist.c:469
msgid " The signature is probably a FORGERY.\n"
msgstr " La signature est certainement FAUSSE.\n"
#: g10/pkclist.c:476
msgid ""
"WARNING: This key is not certified with sufficiently trusted signatures!\n"
msgstr ""
"ATTENTION : Les signatures de cette clé n'ont pas une confiance suffisante "
"!\n"
#: g10/pkclist.c:479
msgid " It is not certain that the signature belongs to the owner.\n"
msgstr ""
" Il n'est pas sûr que la signature appartient à son propriétaire.\n"
#: g10/pkclist.c:524
msgid ""
"You did not specify a user ID. (you may use \"-r\")\n"
"\n"
msgstr ""
"Vous n'avez pas spécifié de nom d'utilisateur. (vous pouvez utiliser "
"\"-r\")\n"
"\n"
#: g10/pkclist.c:529
msgid "Enter the user ID: "
msgstr "Entrez le nom d'utilisateur : "
#: g10/pkclist.c:540
msgid "No such user ID.\n"
msgstr "Pas de tel utilisateur.\n"
#: g10/pkclist.c:574 g10/pkclist.c:601
#, c-format
msgid "%s: skipped: %s\n"
msgstr "%s : ignoré : %s\n"
#: g10/pkclist.c:582
#, c-format
msgid "%s: error checking key: %s\n"
msgstr "%s : erreur pendant la vérification de la clé : %s\n"
#: g10/pkclist.c:608
msgid "no valid addressees\n"
msgstr "pas de destinataire valide\n"
# g10/keygen.c:123 ???
#: g10/keygen.c:124
msgid "writing self signature\n"
msgstr "écriture de l'auto-signature\n"
# g10/keygen.c:161 ???
#: g10/keygen.c:162
msgid "writing key binding signature\n"
msgstr "écriture de la signature de liaison\n"
#: g10/keygen.c:388
msgid "Please select what kind of key you want:\n"
msgstr "Sélectionnez le type de clé désiré :\n"
#: g10/keygen.c:390
#, c-format
msgid " (%d) DSA and ElGamal (default)\n"
msgstr " (%d) DSA et ElGamal (défaut)\n"
#: g10/keygen.c:391
#, c-format
msgid " (%d) DSA (sign only)\n"
msgstr " (%d) DSA (signature seule)\n"
#: g10/keygen.c:393
#, c-format
msgid " (%d) ElGamal (encrypt only)\n"
msgstr " (%d) ElGamal (chiffrement seul)\n"
#: g10/keygen.c:394
#, c-format
msgid " (%d) ElGamal (sign and encrypt)\n"
msgstr " (%d) ElGamal (signature et chiffrement)\n"
#: g10/keygen.c:396
#, c-format
msgid " (%d) ElGamal in a v3 packet\n"
msgstr " (%d) ElGamal dans un paquet v3\n"
#: g10/keygen.c:401
msgid "Your selection? "
msgstr "Votre choix ? "
#: g10/keygen.c:411
msgid "Do you really want to create a sign and encrypt key? "
msgstr "Voulez-vous vraiment créer une clé de signature et de chiffrement ? "
#: g10/keygen.c:432
msgid "Invalid selection.\n"
msgstr "Choix invalide.\n"
#: g10/keygen.c:444
#, c-format
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 ""
"Préparation à la génération d'une nouvelle paire de clés %s.\n"
" la taille minimale est 768 bits\n"
" la taille par défaut est 1024 bits\n"
" la taille maximale conseillée est 2048 bits\n"
#: g10/keygen.c:451
msgid "What keysize do you want? (1024) "
msgstr "Quelle taille de clé désirez-vous ? (1024) "
#: g10/keygen.c:456
msgid "DSA only allows keysizes from 512 to 1024\n"
msgstr "DSA permet seulement des tailles comprises entre 512 et 1024\n"
#: g10/keygen.c:458
msgid "keysize too small; 768 is smallest value allowed.\n"
msgstr "taille trop petite ; 768 est la plus petite valeur permise.\n"
#: g10/keygen.c:461
msgid ""
"Keysizes larger than 2048 are not suggested because\n"
"computations take REALLY long!\n"
msgstr ""
"Les tailles supérieures à 2048 ne sont pas conseillées car\n"
"les calculs prennent VRAIMENT beaucoup de temps !\n"
#: g10/keygen.c:464
msgid "Are you sure that you want this keysize? "
msgstr "Etes-vous sûr de vouloir cette taille ? "
#: g10/keygen.c:465
msgid ""
"Okay, but keep in mind that your monitor and keyboard radiation is also very "
"vulnerable to attacks!\n"
msgstr ""
"D'accord, mais n'oubliez pas que votre écran et les radiations du clavier\n"
"sont aussi très vulnérables aux attaques!\n"
#: g10/keygen.c:473
msgid "Do you really need such a large keysize? "
msgstr "Avez-vous réellement besoin d'une taille aussi grande ? "
#: g10/keygen.c:479
#, c-format
msgid "Requested keysize is %u bits\n"
msgstr "La taille demandée est %u bits\n"
#: g10/keygen.c:482 g10/keygen.c:486
#, c-format
msgid "rounded up to %u bits\n"
msgstr "arrondie à %u bits\n"
#: g10/keygen.c:499
msgid ""
"Please specify how long the key should be valid.\n"
" 0 = key does not expire\n"
" <n> = key expires in n days\n"
" <n>w = key expires in n weeks\n"
" <n>m = key expires in n months\n"
" <n>y = key expires in n years\n"
msgstr ""
"Spécifiez combien de temps cette clé devrait être valide.\n"
" 0 = la clé n'expire pas\n"
" <n> = la clé expire dans n jours\n"
" <n>w = la clé expire dans n semaines\n"
" <n>m = la clé expire dans n mois\n"
" <n>y = la clé expire dans n ans\n"
#: g10/keygen.c:514
msgid "Key is valid for? (0) "
msgstr "La clé est valide pour ? (0) "
#: g10/keygen.c:525
msgid "invalid value\n"
msgstr "valeur invalide\n"
#: g10/keygen.c:530
msgid "Key does not expire at all\n"
msgstr "La clé n'expire pas du tout\n"
#. print the date when the key expires
#: g10/keygen.c:536
#, c-format
msgid "Key expires at %s\n"
msgstr "La clé expire le %s\n"
#: g10/keygen.c:542
msgid "Is this correct (y/n)? "
msgstr "Est-ce correct (o/n) ? "
#: g10/keygen.c:584
msgid ""
"\n"
"You need a User-ID to identify your key; the software constructs the user "
"id\n"
"from Real Name, Comment and Email Address in this form:\n"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
msgstr ""
"\n"
"Vous avez besoin d'un nom d'utilisateur pour identifier votre clé ; le\n"
"programme le construit à partir du nom réel, d'un commentaire et d'une\n"
"adresse e-mail de cette manière:\n"
" « Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de> »\n"
"\n"
#: g10/keygen.c:595
msgid "Real name: "
msgstr "Nom réel : "
#: g10/keygen.c:599
msgid "Invalid character in name\n"
msgstr "Caractère invalide dans le nom\n"
#: g10/keygen.c:601
msgid "Name may not start with a digit\n"
msgstr "Le nom ne doit pas commencer avec un chiffre\n"
# ??? c'est de la discrimination...
#: g10/keygen.c:603
msgid "Name must be at least 5 characters long\n"
msgstr "Le nom doit faire au moins 5 caractères de long\n"
#: g10/keygen.c:611
msgid "Email address: "
msgstr "Adresse e-mail : "
#: g10/keygen.c:623
msgid "Not a valid email address\n"
msgstr "Ce n'est pas une adresse e-mail valide\n"
#: g10/keygen.c:631
msgid "Comment: "
msgstr "Commentaire : "
#: g10/keygen.c:637
msgid "Invalid character in comment\n"
msgstr "Caractère invalide dans le commentaire\n"
#: g10/keygen.c:657
#, c-format
msgid ""
"You selected this USER-ID:\n"
" \"%s\"\n"
"\n"
msgstr ""
"Vous avez sélectionné ce nom d'utilisateur :\n"
" \"%s\"\n"
"\n"
#: g10/keygen.c:660
msgid "NnCcEeOoQq"
msgstr "NnCcEeOoQq"
#: g10/keygen.c:670
msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
msgstr "Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter? "
#: g10/keygen.c:722
msgid ""
"You need a Passphrase to protect your secret key.\n"
"\n"
msgstr ""
"Vous avez besoin d'un mot de passe pour protéger votre clé secrète.\n"
"\n"
#: g10/keyedit.c:389 g10/keygen.c:730
msgid "passphrase not correctly repeated; try again.\n"
msgstr "le mot de passe n'a pas été identiquement répété ; recommencez.\n"
#: g10/keygen.c:736
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 ""
"Vous ne voulez pas de mot de passe - c'est sûrement une *mauvaise* idée !\n"
"Je l'accepte quand-même. Vous pouvez changer votre mot de passe quand vous\n"
"le désirez, en utilisant ce programme avec l'option « --edit-key ».\n"
"\n"
#: g10/keygen.c:757
msgid ""
"We need to generate a lot of random bytes. It is a good idea to perform\n"
"some other action (work in another window, move the mouse, utilize the\n"
"network and the disks) during the prime generation; this gives the random\n"
"number generator a better chance to gain enough entropy.\n"
msgstr ""
"Un grand nombre d'octets aléatoires doit être généré. Vous devriez\n"
"faire autre-chose (travailler dans une autre fenêtre, déplacer la\n"
"souris, utiliser le réseau et les disques) pendant la génération de nombres\n"
"premiers ; cela donne au générateur de nombres aléatoires une meilleure\n"
"chance d'avoir assez d'entropie.\n"
#: g10/keygen.c:827
msgid "Key generation can only be used in interactive mode\n"
msgstr "La génération de clé ne peut être faite qu'en mode interactif\n"
#: g10/keygen.c:835
msgid "DSA keypair will have 1024 bits.\n"
msgstr "La paire de clés DSA fera 1024 bits.\n"
#: g10/keygen.c:841
msgid "Key generation cancelled.\n"
msgstr "La génération a été annulée.\n"
#: g10/keygen.c:851
#, c-format
msgid "writing public certificate to `%s'\n"
msgstr "écriture d'un certificat public à `%s'\n"
#: g10/keygen.c:852
#, c-format
msgid "writing secret certificate to `%s'\n"
msgstr "écriture d'un certificat secret à `%s'\n"
#: g10/keygen.c:929
msgid "public and secret key created and signed.\n"
msgstr "les clés publique et secrète ont été créées et signées.\n"
#: g10/keygen.c:931
+#, fuzzy
msgid ""
"Note that this key cannot be used for encryption. You may want to use\n"
-"the command \"--add-key\" to generate a secondary key for this purpose.\n"
+"the command \"--edit-key\" to generate a secondary key for this purpose.\n"
msgstr ""
"Notez que cette clé ne peut être utilisée pour chiffrer. Vous pouvez\n"
"utiliser la commande « --add-key » pour générer une clé secondaire à\n"
"cette fin.\n"
-#: g10/keygen.c:945 g10/keygen.c:1030
+#: g10/keygen.c:945 g10/keygen.c:1044
#, c-format
msgid "Key generation failed: %s\n"
msgstr "La génération de clé a échoué : %s\n"
-#: g10/keygen.c:1008
+#: g10/keygen.c:989 g10/sig-check.c:172 g10/sign.c:52
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu second in future (time warp or clock problem)\n"
+msgstr "clé publique créée %lu %s dans le futur\n"
+
+#: g10/keygen.c:991 g10/sig-check.c:174 g10/sign.c:54
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu seconds in future (time warp or clock problem)\n"
+msgstr "clé publique créée %lu %s dans le futur\n"
+
+#: g10/keygen.c:1022
msgid "Really create? "
msgstr "Créer vraiment ? "
#: g10/encode.c:88 g10/openfile.c:81 g10/openfile.c:158 g10/tdbio.c:459
#: g10/tdbio.c:510
#, c-format
msgid "%s: can't open: %s\n"
msgstr "%s : ne peut ouvrir : %s\n"
#: g10/encode.c:107
#, c-format
msgid "error creating passphrase: %s\n"
msgstr "erreur pendant la création du mot de passe : %s\n"
#: g10/encode.c:155 g10/encode.c:269
#, c-format
msgid "%s: WARNING: empty file\n"
msgstr "%s : ATTENTION : fichier vide\n"
#: g10/encode.c:222
#, c-format
msgid "reading from `%s'\n"
msgstr "lecture de `%s'\n"
#: g10/encode.c:397
#, c-format
msgid "%s/%s encrypted for: %s\n"
msgstr "%s/%s chiffré pour : %s\n"
-#: g10/export.c:114
+#: g10/export.c:147
#, c-format
msgid "%s: user not found: %s\n"
msgstr "%s : utilisateur non trouvé : %s\n"
-#: g10/export.c:123
+#: g10/export.c:156
#, c-format
msgid "certificate read problem: %s\n"
msgstr "problème lors de lecture du certificat : %s\n"
-#: g10/export.c:132
+#: g10/export.c:165
#, c-format
msgid "key %08lX: not a rfc2440 key - skipped\n"
msgstr "clé %08lX : ce n'est pas une clé rfc2440 - ignorée\n"
-#: g10/export.c:174
+#: g10/export.c:203
msgid "WARNING: nothing exported\n"
msgstr "ATTENTION : rien n'a été exporté\n"
#: g10/getkey.c:164
msgid "too many entries in pk cache - disabled\n"
msgstr "trop d'entrées dans le cache pk - désactivé\n"
#: g10/getkey.c:294
msgid "too many entries in unk cache - disabled\n"
msgstr "trop d'entrées dans le cache unk - désactivé\n"
#: g10/getkey.c:1038
#, c-format
msgid "using secondary key %08lX instead of primary key %08lX\n"
msgstr ""
"utilisation de la clé secondaire %08lX à la place de la clé\n"
"principale %08lX\n"
-#: g10/import.c:129 g10/trustdb.c:1180
+#: g10/import.c:117 g10/trustdb.c:1180
#, c-format
msgid "can't open file: %s\n"
msgstr "ne peut ouvrir le fichier : %s\n"
-#: g10/import.c:148
+#: g10/import.c:165
#, c-format
msgid "skipping block of type %d\n"
msgstr "ne prend pas en compte le bloc de type %d\n"
-#: g10/import.c:155 g10/trustdb.c:1474 g10/trustdb.c:1543
+#: g10/import.c:172 g10/trustdb.c:1474 g10/trustdb.c:1543
#, c-format
msgid "%lu keys so far processed\n"
msgstr "%lu clés traitées jusqu'ici\n"
-#: g10/import.c:160 g10/trustdb.c:1256
+#: g10/import.c:177 g10/trustdb.c:1256
#, c-format
msgid "read error: %s\n"
msgstr "erreur de lecture : %s\n"
-#: g10/import.c:162
+#: g10/import.c:179
#, c-format
msgid "Total number processed: %lu\n"
msgstr " Quantité totale traitée : %lu\n"
-#: g10/import.c:164
+#: g10/import.c:181
#, c-format
msgid " w/o user IDs: %lu\n"
msgstr " sans nom d'utilisateur : %lu\n"
-#: g10/import.c:166
+#: g10/import.c:183
#, c-format
msgid " imported: %lu"
msgstr " importée : %lu"
-#: g10/import.c:172
+#: g10/import.c:189
#, c-format
msgid " unchanged: %lu\n"
msgstr " inchangée : %lu\n"
-#: g10/import.c:174
+#: g10/import.c:191
#, c-format
msgid " new user IDs: %lu\n"
msgstr " nouveaux noms d'utilisateurs : %lu\n"
-#: g10/import.c:176
+#: g10/import.c:193
#, c-format
msgid " new subkeys: %lu\n"
msgstr " nouvelles sous-clés : %lu\n"
-#: g10/import.c:178
+#: g10/import.c:195
#, c-format
msgid " new signatures: %lu\n"
msgstr " nouvelles signatures : %lu\n"
-#: g10/import.c:180
+#: g10/import.c:197
#, c-format
msgid " new key revocations: %lu\n"
msgstr " nouvelles révocations de clés : %lu\n"
-#: g10/import.c:182
+#: g10/import.c:199
#, c-format
msgid " secret keys read: %lu\n"
msgstr " clés secrètes lues : %lu\n"
-#: g10/import.c:184
+#: g10/import.c:201
#, c-format
msgid " secret keys imported: %lu\n"
msgstr " clés secrètes importées : %lu\n"
-#: g10/import.c:186
+#: g10/import.c:203
#, c-format
msgid " secret keys unchanged: %lu\n"
msgstr " clés secrètes inchangées : %lu\n"
-#: g10/import.c:328 g10/import.c:520
+#: g10/import.c:343 g10/import.c:535
#, c-format
msgid "key %08lX: no user id\n"
msgstr "clé %08lX : pas de nom d'utilisateur\n"
-#: g10/import.c:339
+#: g10/import.c:354
#, c-format
msgid "key %08lX: no valid user ids\n"
msgstr "clé %08lX : pas de nom d'utilisateur valide\n"
-#: g10/import.c:341
+#: g10/import.c:356
msgid "this may be caused by a missing self-signature\n"
msgstr "cela peut provenir d'une auto-signature manquante\n"
-#: g10/import.c:352 g10/import.c:588
+#: g10/import.c:367 g10/import.c:603
#, c-format
msgid "key %08lX: public key not found: %s\n"
msgstr "clé %08lX : clé publique pas trouvée: %s\n"
-#: g10/import.c:358
+#: g10/import.c:373
msgid "no default public keyring\n"
msgstr "pas de porte-clés public par défaut\n"
-#: g10/import.c:362 g10/openfile.c:105 g10/sign.c:205 g10/sign.c:592
+#: g10/import.c:377 g10/openfile.c:105 g10/sign.c:215 g10/sign.c:601
#, c-format
msgid "writing to `%s'\n"
msgstr "écriture de `%s'\n"
-#: g10/import.c:366 g10/import.c:426 g10/import.c:642
+#: g10/import.c:381 g10/import.c:441 g10/import.c:657
#, c-format
msgid "can't lock public keyring: %s\n"
msgstr "ne peut verrouiller le porte-clés public : %s\n"
-#: g10/import.c:369
+#: g10/import.c:384
#, c-format
msgid "can't write to keyring: %s\n"
msgstr "ne peut écrire le porte-clés : %s\n"
-#: g10/import.c:373
+#: g10/import.c:388
#, c-format
msgid "key %08lX: public key imported\n"
msgstr "clé %08lX : clé publique importée\n"
-#: g10/import.c:386
+#: g10/import.c:401
#, c-format
msgid "key %08lX: doesn't match our copy\n"
msgstr "clé %08lX : ne ressemble pas à notre copie\n"
-#: g10/import.c:399 g10/import.c:597
+#: g10/import.c:414 g10/import.c:612
#, c-format
msgid "key %08lX: can't locate original keyblock: %s\n"
msgstr "clé %08lX : ne peut trouver le bloc de clés original : %s\n"
-#: g10/import.c:406 g10/import.c:604
+#: g10/import.c:421 g10/import.c:619
#, c-format
msgid "key %08lX: can't read original keyblock: %s\n"
msgstr "clé %08lX : ne peut lire le bloc de clés original : %s\n"
-#: g10/import.c:423 g10/import.c:535 g10/import.c:639
+#: g10/import.c:438 g10/import.c:550 g10/import.c:654
msgid "writing keyblock\n"
msgstr "écriture du bloc de clés\n"
-#: g10/import.c:429 g10/import.c:645
+#: g10/import.c:444 g10/import.c:660
#, c-format
msgid "can't write keyblock: %s\n"
msgstr "ne peut écrire le bloc de clés : %s\n"
-#: g10/import.c:434
+#: g10/import.c:449
#, c-format
msgid "key %08lX: 1 new user-id\n"
msgstr "clé %08lX : un nouvel utilisateur\n"
-#: g10/import.c:437
+#: g10/import.c:452
#, c-format
msgid "key %08lX: %d new user-ids\n"
msgstr "clé %08lX : %d nouveaux utilisateurs\n"
-#: g10/import.c:440
+#: g10/import.c:455
#, c-format
msgid "key %08lX: 1 new signature\n"
msgstr "clé %08lX : une nouvelle signature\n"
-#: g10/import.c:443
+#: g10/import.c:458
#, c-format
msgid "key %08lX: %d new signatures\n"
msgstr "clé %08lX : %d nouvelles signatures\n"
-#: g10/import.c:446
+#: g10/import.c:461
#, c-format
msgid "key %08lX: 1 new subkey\n"
msgstr "clé %08lX : une nouvelle sous-clé\n"
-#: g10/import.c:449
+#: g10/import.c:464
#, c-format
msgid "key %08lX: %d new subkeys\n"
msgstr "clé %08lX : %d nouvelles sous-clés\n"
-#: g10/import.c:459
+#: g10/import.c:474
#, c-format
msgid "key %08lX: not changed\n"
msgstr "clé %08lX : n'a pas changé\n"
-#: g10/import.c:538
+#: g10/import.c:553
#, c-format
msgid "can't lock secret keyring: %s\n"
msgstr "ne peut verrouiller le porte-clés secret : %s\n"
-#: g10/import.c:541
+#: g10/import.c:556
#, c-format
msgid "can't write keyring: %s\n"
msgstr "ne peut écrire le porte-clés : %s\n"
#. we are ready
-#: g10/import.c:544
+#: g10/import.c:559
#, c-format
msgid "key %08lX: secret key imported\n"
msgstr "clé %08lX : clé secrète importée\n"
#. we can't merge secret keys
-#: g10/import.c:548
+#: g10/import.c:563
#, c-format
msgid "key %08lX: already in secret keyring\n"
msgstr "clé %08lX : déjà dans le porte-clés secret\n"
-#: g10/import.c:553
+#: g10/import.c:568
#, c-format
msgid "key %08lX: secret key not found: %s\n"
msgstr "clé %08lX : clé secrète pas trouvée: %s\n"
-#: g10/import.c:582
+#: g10/import.c:597
#, c-format
msgid "key %08lX: no public key - can't apply revocation certificate\n"
msgstr ""
"clé %08lX : pas de clé publique - ne peut appliquer le certificat de\n"
"révocation\n"
-#: g10/import.c:615
+#: g10/import.c:630
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - rejected\n"
msgstr "clé %08lX : certificat de révocation invalide : %s - rejeté\n"
-#: g10/import.c:649
+#: g10/import.c:664
#, c-format
msgid "key %08lX: revocation certificate imported\n"
msgstr "clé %08lX : certificat de révocation importé\n"
-#: g10/import.c:680
+#: g10/import.c:698
#, c-format
msgid "key %08lX: no user-id for signature\n"
msgstr "clé %08lX : pas d'utilisateur pour la signature\n"
-#: g10/import.c:687
+#: g10/import.c:705 g10/import.c:729
#, c-format
msgid "key %08lX: unsupported public key algorithm\n"
msgstr "clé %08lX : algorithme de clé publique non supporté\n"
-#: g10/import.c:688
+#: g10/import.c:706
#, c-format
msgid "key %08lX: invalid self-signature\n"
msgstr "clé %08lX : auto-signature invalide\n"
-#: g10/import.c:717
+#: g10/import.c:722
+#, fuzzy, c-format
+msgid "key %08lX: no subkey for key binding\n"
+msgstr "clé %08lX.%lu : bonne liaison avec la sous-clé\n"
+
+#: g10/import.c:730
+#, fuzzy, c-format
+msgid "key %08lX: invalid subkey binding\n"
+msgstr "clé %08lX.%lu : liaison avec la sous-clé invalide : %s\n"
+
+#: g10/import.c:761
#, c-format
msgid "key %08lX: skipped userid '"
msgstr "clé %08lX : utilisateur non pris en compte '"
-#: g10/import.c:740
+#: g10/import.c:781
+#, fuzzy, c-format
+msgid "key %08lX: skipped subkey\n"
+msgstr "clé %08lX : une nouvelle sous-clé\n"
+
+#: g10/import.c:800
#, c-format
msgid "key %08lX: revocation certificate at wrong place - skipped\n"
msgstr "clé %08lX : certificat de révocation au mauvais endroit - ignorée\n"
-#: g10/import.c:748
+#: g10/import.c:808
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - skipped\n"
msgstr "clé %08lX : certificat de révocation invalide : %s - ignorée\n"
-#: g10/import.c:807
+#: g10/import.c:867
#, c-format
msgid "key %08lX: revocation certificate added\n"
msgstr "clé %08lX : certificat de révocation ajouté\n"
-#: g10/import.c:921 g10/import.c:976
+#: g10/import.c:981 g10/import.c:1036
#, c-format
msgid "key %08lX: our copy has no self-signature\n"
msgstr "clé %08lX : notre copie n'a pas d'auto-signature\n"
#: g10/keyedit.c:81
#, c-format
msgid "%s: user not found\n"
msgstr "%s : utilisateur non trouvé\n"
#: g10/keyedit.c:164
msgid "[self-signature]"
msgstr "[auto-signature]"
#: g10/keyedit.c:182
msgid "1 bad signature\n"
msgstr "une mauvaise signature\n"
#: g10/keyedit.c:184
#, c-format
msgid "%d bad signatures\n"
msgstr "%d mauvaises signatures\n"
#: g10/keyedit.c:186
msgid "1 signature not checked due to a missing key\n"
msgstr "une signature non vérifiée à cause d'une clé manquante\n"
#: g10/keyedit.c:188
#, c-format
msgid "%d signatures not checked due to missing keys\n"
msgstr "%d signatures non vérifiées à cause de clés manquantes\n"
#: g10/keyedit.c:190
msgid "1 signature not checked due to an error\n"
msgstr "une signature non vérifiée à cause d'une erreur\n"
#: g10/keyedit.c:192
#, c-format
msgid "%d signatures not checked due to errors\n"
msgstr "%d signatures non vérifiées à cause d'erreurs\n"
#: g10/keyedit.c:194
msgid "1 user id without valid self-signature detected\n"
msgstr "un nom d'utilisateur sans auto-signature valide détecté\n"
#: g10/keyedit.c:196
#, c-format
msgid "%d user ids without valid self-signatures detected\n"
msgstr "%d nom d'utilisateurs sans auto-signature valide détecté\n"
#: g10/keyedit.c:258
#, c-format
msgid "Already signed by key %08lX\n"
msgstr "Déjà signé par la clé %08lX\n"
#: g10/keyedit.c:266
#, c-format
msgid "Nothing to sign with key %08lX\n"
msgstr "Rien à signer avec la clé %08lX\n"
#: g10/keyedit.c:275
msgid ""
"Are you really sure that you want to sign this key\n"
"with your key: \""
msgstr ""
"Etes-vous vraiment sûr(e) que vous voulez signer cette clé\n"
"avec la vôtre : \""
#: g10/keyedit.c:282
msgid "Really sign? "
msgstr "Signer réellement ? "
-#: g10/keyedit.c:303 g10/sign.c:65
+#: g10/keyedit.c:303 g10/sign.c:75
#, c-format
msgid "signing failed: %s\n"
msgstr "la signature a échoué : %s\n"
#: g10/keyedit.c:356
msgid "This key is not protected.\n"
msgstr "Cette clé n'est pas protégée.\n"
#: g10/keyedit.c:359
msgid "Key is protected.\n"
msgstr "La clé est protégée.\n"
#: g10/keyedit.c:376
#, c-format
msgid "Can't edit this key: %s\n"
msgstr "Ne peut éditer cette clé : %s\n"
#: g10/keyedit.c:381
msgid ""
"Enter the new passphrase for this secret key.\n"
"\n"
msgstr "Entrez le nouveau mot de passe pour cette clé secrète.\n"
#: g10/keyedit.c:393
msgid ""
"You don't want a passphrase - this is probably a *bad* idea!\n"
"\n"
msgstr ""
"Vous ne voulez pas de mot de passe - cela est certainement une\n"
"*mauvaise* idée\n"
"\n"
#: g10/keyedit.c:396
msgid "Do you really want to do this? "
msgstr "Voulez-vous vraiment faire cela? "
#: g10/keyedit.c:455
msgid "moving a key signature to the correct place\n"
msgstr "replacer la signature d'une clé à l'endroit correct\n"
#: g10/keyedit.c:490
msgid "quit"
msgstr "quitter"
#: g10/keyedit.c:490
msgid "quit this menu"
msgstr "quitter ce menu"
#: g10/keyedit.c:491
msgid "q"
msgstr "q"
#: g10/keyedit.c:492
msgid "save"
msgstr "enregistrer"
#: g10/keyedit.c:492
msgid "save and quit"
msgstr "enregistrer et quitter"
# FIXMOI : si je mets aide ça va demander de taper "aide"...
#: g10/keyedit.c:493
msgid "help"
msgstr "help"
#: g10/keyedit.c:493
msgid "show this help"
msgstr "afficher cette aide"
# g10/keyedit.c:556 ???
#: g10/keyedit.c:495
msgid "fpr"
msgstr "fpr"
#: g10/keyedit.c:495
msgid "show fingerprint"
msgstr "afficher l'empreinte"
#: g10/keyedit.c:496
msgid "list"
msgstr "lister"
#: g10/keyedit.c:496
msgid "list key and user ids"
msgstr "lister la clé et les noms d'utilisateurs"
#: g10/keyedit.c:497
msgid "l"
msgstr "l"
#: g10/keyedit.c:498
msgid "uid"
msgstr "uid"
#: g10/keyedit.c:498
msgid "select user id N"
msgstr "sélectionner le nom d'utilisateur N"
#: g10/keyedit.c:499
msgid "key"
msgstr "clé"
#: g10/keyedit.c:499
msgid "select secondary key N"
msgstr "sélectionner la clé secondaire N"
#: g10/keyedit.c:500
msgid "check"
msgstr "vérifier"
#: g10/keyedit.c:500
msgid "list signatures"
msgstr "lister les signatures"
#: g10/keyedit.c:501
msgid "c"
msgstr "c"
#: g10/keyedit.c:502
msgid "sign"
msgstr "signer"
#: g10/keyedit.c:502
msgid "sign the key"
msgstr "signer la clé"
#: g10/keyedit.c:503
msgid "s"
msgstr "s"
#: g10/keyedit.c:504
msgid "debug"
msgstr "déboguer"
#: g10/keyedit.c:505
msgid "adduid"
msgstr "aj.ut"
#: g10/keyedit.c:505
msgid "add a user id"
msgstr "ajouter un utilisateur"
#: g10/keyedit.c:506
msgid "deluid"
msgstr "suppr.ut"
#: g10/keyedit.c:506
msgid "delete user id"
msgstr "enlever un utilisateur"
#: g10/keyedit.c:507
msgid "addkey"
msgstr "aj.clé"
#: g10/keyedit.c:507
msgid "add a secondary key"
msgstr "ajouter une clé secondaire"
#: g10/keyedit.c:508
msgid "delkey"
msgstr "suppr.clé"
#: g10/keyedit.c:508
msgid "delete a secondary key"
msgstr "enlever une clé secondaire"
#: g10/keyedit.c:509
msgid "expire"
msgstr "expire"
#: g10/keyedit.c:509
msgid "change the expire date"
msgstr "changer la date d'expiration"
#: g10/keyedit.c:510
msgid "toggle"
msgstr "changer"
#: g10/keyedit.c:510
msgid "toggle between secret and public key listing"
msgstr "passer de la liste des clés secrètes aux clés privées et inversement"
#: g10/keyedit.c:512
msgid "t"
msgstr "t"
#: g10/keyedit.c:513
msgid "pref"
msgstr "préf"
#: g10/keyedit.c:513
msgid "list preferences"
msgstr "lister les préférences"
#: g10/keyedit.c:514
msgid "passwd"
msgstr "mot.pas"
#: g10/keyedit.c:514
msgid "change the passphrase"
msgstr "changer le mot de passe"
#: g10/keyedit.c:515
msgid "trust"
msgstr "confi."
#: g10/keyedit.c:515
msgid "change the ownertrust"
msgstr "changer la confiance"
#: g10/keyedit.c:534
msgid "can't do that in batchmode\n"
msgstr "ne peut faire cela en mode automatique\n"
#. check that they match
#. FIXME: check that they both match
#: g10/keyedit.c:561
msgid "Secret key is available.\n"
msgstr "La clé secrète est disponible.\n"
#: g10/keyedit.c:590
msgid "Command> "
msgstr "Commande> "
#: g10/keyedit.c:617
msgid "Need the secret key to do this.\n"
msgstr "Il faut la clé secrète pour faire cela.\n"
#: g10/keyedit.c:639
msgid "Save changes? "
msgstr "Enregistrer les changements? "
#: g10/keyedit.c:642
msgid "Quit without saving? "
msgstr "Quitter sans enregistrer? "
#: g10/keyedit.c:652
#, c-format
msgid "update failed: %s\n"
msgstr "la mise à jour a échoué : %s\n"
#: g10/keyedit.c:659
#, c-format
msgid "update secret failed: %s\n"
msgstr "la mise à jour de la clé secrète a échoué : %s\n"
#: g10/keyedit.c:666
msgid "Key not changed so no update needed.\n"
msgstr "La clé n'a pas changé donc la mise à jour est inutile.\n"
#: g10/keyedit.c:669 g10/keyedit.c:727
#, c-format
msgid "update of trustdb failed: %s\n"
msgstr "la mise à jour de la base de confiance a échoué : %s\n"
#: g10/keyedit.c:701
msgid "Really sign all user ids? "
msgstr "Signer vraiment tous les utilisateurs ? "
#: g10/keyedit.c:702
msgid "Hint: Select the user ids to sign\n"
msgstr "Aide : Sélectionner les utilisateurs à signer\n"
#: g10/keyedit.c:738
msgid "You must select at least one user id.\n"
msgstr "Vous devez sélectionner au moins un utilisateur.\n"
#: g10/keyedit.c:740
msgid "You can't delete the last user id!\n"
msgstr "Vous ne pouvez pas supprimer le dernier utilisateur !\n"
#: g10/keyedit.c:743
msgid "Really remove all selected user ids? "
msgstr "Enlever réellement tous les utilisateurs sélectionnés ? "
#: g10/keyedit.c:744
msgid "Really remove this user id? "
msgstr "Enlever réellement cet utilisateur ? "
#: g10/keyedit.c:767
msgid "You must select at least one key.\n"
msgstr "Vous devez sélectionner au moins une clé.\n"
#: g10/keyedit.c:771
msgid "Do you really want to delete the selected keys? "
msgstr "Voulez-vous vraiment supprimer les clés sélectionnées ? "
#: g10/keyedit.c:772
msgid "Do you really want to delete this key? "
msgstr "Voulez-vous vraiment supprimer cette clé ? "
#: g10/keyedit.c:819
msgid "Invalid command (try \"help\")\n"
msgstr "Commande invalide (essayez « help »)\n"
#: g10/keyedit.c:1197
msgid "Please remove selections from the secret keys.\n"
msgstr "Enlevez les sélections des clés secrètes.\n"
#: g10/keyedit.c:1203
msgid "Please select at most one secondary key.\n"
msgstr "Vous devez sélectionner au plus une clé secondaire.\n"
#: g10/keyedit.c:1207
msgid "Changing exiration time for a secondary key.\n"
msgstr "Changer la date d'expiration d'une clé secondaire.\n"
#: g10/keyedit.c:1209
msgid "Changing exiration time for the primary key.\n"
msgstr "Changer la date d'expiration de la clé principale.\n"
#: g10/keyedit.c:1250
msgid "You can't change the expiration date of a v3 key\n"
msgstr "Vous ne pouvez pas changer la date d'expiration d'une clé v3\n"
#: g10/keyedit.c:1266
msgid "No corresponding signature in secret ring\n"
msgstr "Pas de signature correspondante dans le porte-clés secret\n"
#: g10/keyedit.c:1326
#, c-format
msgid "No user id with index %d\n"
msgstr "Pas d'utilisateur avec l'index %d\n"
#: g10/keyedit.c:1371
#, c-format
msgid "No secondary key with index %d\n"
msgstr "Pas de clé secondaire avec l'index %d\n"
-#: g10/mainproc.c:198
+#: g10/mainproc.c:199
msgid "public key encrypted data: good DEK\n"
msgstr "données chiffrées avec la clé publique : bonne clé de chiffrement\n"
-#: g10/mainproc.c:201
+#: g10/mainproc.c:202
#, c-format
msgid "public key decryption failed: %s\n"
msgstr "le déchiffrement de la clé publique a échoué : %s\n"
-#: g10/mainproc.c:228
+#: g10/mainproc.c:229
msgid "decryption okay\n"
msgstr "le déchiffrement a réussi\n"
-#: g10/mainproc.c:231
+#: g10/mainproc.c:232
#, c-format
msgid "decryption failed: %s\n"
msgstr "le déchiffrement a échoué : %s\n"
-#: g10/mainproc.c:248
+#: g10/mainproc.c:249
msgid "NOTE: sender requested \"for-your-eyes-only\"\n"
msgstr "NOTE : l'expéditeur a demandé « pour vos yeux seulement »\n"
-#: g10/mainproc.c:250
+#: g10/mainproc.c:251
#, c-format
msgid "original file name='%.*s'\n"
msgstr "nom de fichier original : '%.*s'\n"
-#: g10/mainproc.c:833
+#: g10/mainproc.c:834
msgid "signature verification suppressed\n"
msgstr "vérification de signature supprimée\n"
-#: g10/mainproc.c:839
+#: g10/mainproc.c:840
#, c-format
msgid "Signature made %.*s using %s key ID %08lX\n"
msgstr "Signature faite %.*s avec une clé %s ID %08lX\n"
-#: g10/mainproc.c:847
+#: g10/mainproc.c:852
msgid "BAD signature from \""
msgstr "MAUVAISE signature de \""
-#: g10/mainproc.c:848
+#: g10/mainproc.c:853
msgid "Good signature from \""
msgstr "Bonne signature de \""
-#: g10/mainproc.c:879
+#: g10/mainproc.c:884
#, c-format
msgid "Can't check signature: %s\n"
msgstr "Ne peut vérifier la signature : %s\n"
-#: g10/mainproc.c:952
+#: g10/mainproc.c:957
msgid "old style (PGP 2.x) signature\n"
msgstr "signature d'un ancien style (PGP 2.x)\n"
-#: g10/mainproc.c:957
+#: g10/mainproc.c:962
msgid "invalid root packet detected in proc_tree()\n"
msgstr "paquet racine invalide détecté dans proc_tree()\n"
#: g10/misc.c:90
#, c-format
msgid "can't disable core dumps: %s\n"
msgstr "ne peut empêcher la génération de fichiers core : %s\n"
#: g10/misc.c:93
msgid "WARNING: program may create a core file!\n"
msgstr "ATTENTION : Le programme peut créer un fichier « core » !\n"
#: g10/misc.c:200
msgid "Experimental algorithms should not be used!\n"
msgstr "Les algorithmes expérimentaux ne devraient pas être utilisés !\n"
#: g10/misc.c:214
msgid ""
"RSA keys are deprecated; please consider creating a new key and use this key "
"in the future\n"
msgstr ""
"Les clés RSA sont déconseillées : considérez créer une nouvelle clé\n"
"et l'utiliser dans l'avenir\n"
#: g10/misc.c:235
msgid "this cipher algorithm is depreciated; please use a more standard one!\n"
msgstr ""
"Cet algorithme de chiffrement est déconseillé ; utilisez-en un\n"
"plus standard !\n"
#: g10/parse-packet.c:113
#, c-format
msgid "can't handle public key algorithm %d\n"
msgstr "ne peut gérer l'algorithme à clé publique %d\n"
#: g10/parse-packet.c:892
#, c-format
msgid "subpacket of type %d has critical bit set\n"
msgstr "un sous-paquet de type %d possède un bit critique\n"
#: g10/passphrase.c:141
msgid ""
"\n"
"You need a passphrase to unlock the secret key for\n"
"user: \""
msgstr ""
"\n"
"Vous avez besoin d'un mot de passe pour déverrouiller la clé secrète pour\n"
"l'utilisateur: \""
#: g10/passphrase.c:150
#, c-format
msgid "%u-bit %s key, ID %08lX, created %s"
msgstr "clé de %u bits %s, ID %08lX, créée le %s"
#: g10/passphrase.c:155
#, c-format
msgid " (main key ID %08lX)"
msgstr " (ID clé principale %08lX)"
#: g10/passphrase.c:183
msgid "Enter passphrase: "
msgstr "Entrez le mot de passe : "
#: g10/passphrase.c:187
msgid "Repeat passphrase: "
msgstr "Répétez le mot de passe : "
#: g10/plaintext.c:63
msgid "data not saved; use option \"--output\" to save it\n"
msgstr ""
"données non enregistrées ; utilisez l'option \"--output\" pour\n"
"les enregistrer\n"
-#: g10/plaintext.c:166
+#: g10/plaintext.c:208
msgid "Please enter name of data file: "
msgstr "Entrez le nom d'un fichier de données : "
-#: g10/plaintext.c:187
+#: g10/plaintext.c:229
msgid "reading stdin ...\n"
msgstr "lecture de l'entrée standard...\n"
-#: g10/plaintext.c:250
+#: g10/plaintext.c:292
#, c-format
msgid "can't open signed data `%s'\n"
msgstr "ne peut ouvir les données signées `%s'\n"
#: g10/pubkey-enc.c:78
#, c-format
msgid "anonymous receiver; trying secret key %08lX ...\n"
msgstr "destinataire anonyme ; essai de la clé secrète %08lX ...\n"
#: g10/pubkey-enc.c:84
msgid "okay, we are the anonymous recipient.\n"
msgstr "d'accord, nous sommes le récipient anonyme.\n"
#: g10/pubkey-enc.c:136
msgid "old encoding of the DEK is not supported\n"
msgstr "l'ancien codage de la clé de chiffrement (DEK) n'est pas supporté\n"
#: g10/pubkey-enc.c:183
#, c-format
msgid "NOTE: cipher algorithm %d not found in preferences\n"
msgstr ""
"NOTE : l'algorithme de chiffrement %d n'a pas été trouvé dans les "
"préférences\n"
#: g10/seckey-cert.c:56
#, c-format
msgid "protection algorithm %d is not supported\n"
msgstr "l'algorithme de protection %d n'est pas supporté\n"
#: g10/seckey-cert.c:176
msgid "Invalid passphrase; please try again ...\n"
msgstr "Mot de passe invalide ; réessayez...\n"
#: g10/seckey-cert.c:223
msgid "WARNING: Weak key detected - please change passphrase again.\n"
msgstr "ATTENTION : Mauvaise clé détectée - changez encore le mot de passe.\n"
#: g10/sig-check.c:155
msgid ""
"this is a PGP generated ElGamal key which is NOT secure for signatures!\n"
msgstr ""
"Ceci est une clé ElGamal générée par PGP qui n'est PAS sûre pour les\n"
"signatures!\n"
-#: g10/sig-check.c:166
-#, c-format
-msgid "public key created %lu %s in future (time warp or clock problem)\n"
-msgstr ""
-"clé publique créée %lu %s dans le futur\n"
-
-#: g10/sig-check.c:168
-msgid "second"
-msgstr "seconde"
+#: g10/sig-check.c:163
+#, fuzzy, c-format
+msgid "public key is %lu second newer than the signature\n"
+msgstr "lid %lu : utilisateur sans signature\n"
-#: g10/sig-check.c:168
-msgid "seconds"
-msgstr "secondes"
+#: g10/sig-check.c:164
+#, fuzzy, c-format
+msgid "public key is %lu seconds newer than the signature\n"
+msgstr "lid %lu : utilisateur sans signature\n"
-#: g10/sig-check.c:173
+#: g10/sig-check.c:180
#, c-format
msgid "NOTE: signature key expired %s\n"
msgstr "NOTE : la clé de signature a expiré le %s\n"
-#: g10/sig-check.c:230
+#: g10/sig-check.c:237
msgid "assuming bad signature due to an unknown critical bit\n"
msgstr ""
"la signature est supposée être fausse car un bit critique est\n"
"inconnu\n"
-#: g10/sign.c:69
+#: g10/sign.c:79
#, c-format
msgid "%s signature from: %s\n"
msgstr "Signature %s de : %s\n"
-#: g10/sign.c:200 g10/sign.c:587
+#: g10/sign.c:210 g10/sign.c:596
#, c-format
msgid "can't create %s: %s\n"
msgstr "ne peut créer %s : %s\n"
-#: g10/sign.c:296
+#: g10/sign.c:306
msgid "signing:"
msgstr "signature :"
-#: g10/sign.c:336
+#: g10/sign.c:346
#, c-format
msgid "WARNING: `%s' is an empty file\n"
msgstr "ATTENTION : `%s' est un fichier vide\n"
+#: g10/textfilter.c:199
+#, fuzzy, c-format
+msgid "can't handle text lines longer than %d characters\n"
+msgstr "armure invalide : ligne plus longue que %d caractères\n"
+
#: g10/tdbio.c:116 g10/tdbio.c:1418
#, c-format
msgid "trustdb rec %lu: lseek failed: %s\n"
msgstr "enregistrement de base de confiance %lu : lseek a échoué : %s\n"
#: g10/tdbio.c:122 g10/tdbio.c:1425
#, c-format
msgid "trustdb rec %lu: write failed (n=%d): %s\n"
msgstr ""
"enregistrement de la base de confiance %lu : l'écriture a échoué (n=%d) : "
"%s\n"
#: g10/tdbio.c:232
msgid "trustdb transaction too large\n"
msgstr "transaction de base de confiance trop volumineuse\n"
#: g10/tdbio.c:416
#, c-format
msgid "%s: can't access: %s\n"
msgstr "%s : ne peut accéder : %s\n"
#: g10/ringedit.c:273 g10/tdbio.c:436
#, c-format
msgid "%s: can't create directory: %s\n"
msgstr "%s : ne peut créer le répertoire : %s\n"
#: g10/ringedit.c:279 g10/tdbio.c:439
#, c-format
msgid "%s: directory created\n"
msgstr "%s : répertoire créé\n"
#: g10/tdbio.c:443
#, c-format
msgid "%s: directory does not exist!\n"
msgstr "%s : le répertoire n'existe pas !\n"
-#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1275 g10/tdbio.c:449
+#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1292 g10/tdbio.c:449
#, c-format
msgid "%s: can't create: %s\n"
msgstr "%s : ne peut créer : %s\n"
#: g10/tdbio.c:473
#, c-format
msgid "%s: failed to create version record: %s"
msgstr "%s : n'a pas pu créer un enregistrement de version : %s"
#: g10/tdbio.c:477
#, c-format
msgid "%s: invalid trustdb created\n"
msgstr "%s : base de confiance invalide créée\n"
#: g10/tdbio.c:479
#, c-format
msgid "%s: trustdb created\n"
msgstr "%s : base de confiance créée\n"
#: g10/tdbio.c:512
#, c-format
msgid "%s: invalid trustdb\n"
msgstr "%s : base de confiance invalide\n"
#: g10/tdbio.c:545
#, c-format
msgid "%s: failed to create hashtable: %s\n"
msgstr "%s : la création de la table de hachage a échoué : %s\n"
#: g10/tdbio.c:553
#, c-format
msgid "%s: error updating version record: %s\n"
msgstr ""
"%s : erreur pendant la mise à jour de l'enregistrement de version : %s\n"
#: g10/tdbio.c:569 g10/tdbio.c:608 g10/tdbio.c:633 g10/tdbio.c:1351
#: g10/tdbio.c:1378
#, c-format
msgid "%s: error reading version record: %s\n"
msgstr "%s : erreur pendant la lecture de l'enregistrement de version : %s\n"
#: g10/tdbio.c:582
#, c-format
msgid "%s: error writing version record: %s\n"
msgstr "%s : erreur pendant l'écriture de l'enregistrement de version : %s\n"
#: g10/tdbio.c:1058
#, c-format
msgid "trustdb: lseek failed: %s\n"
msgstr "base de confiance : « lseek() » a échoué : %s\n"
#: g10/tdbio.c:1066
#, c-format
msgid "trustdb: read failed (n=%d): %s\n"
msgstr "base de confiance : la lecture a échoué (n=%d) : %s\n"
#: g10/tdbio.c:1087
#, c-format
msgid "%s: not a trustdb file\n"
msgstr "%s : ce n'est pas un fichier de base de confiance\n"
#: g10/tdbio.c:1103
#, c-format
msgid "%s: version record with recnum %lu\n"
msgstr "%s : enregistrement de version avec un numéro %lu\n"
#: g10/tdbio.c:1108
#, c-format
msgid "%s: invalid file version %d\n"
msgstr "%s : version %d du fichier invalide\n"
#: g10/tdbio.c:1384
#, c-format
msgid "%s: error reading free record: %s\n"
msgstr "%s : erreur pendant la lecture de l'enregistrement libre : %s\n"
#: g10/tdbio.c:1392
#, c-format
msgid "%s: error writing dir record: %s\n"
msgstr ""
"%s : erreur pendant l'écriture de l'enregistrement de\n"
"répertoire : %s\n"
#: g10/tdbio.c:1402
#, c-format
msgid "%s: failed to zero a record: %s\n"
msgstr "%s : n'a pu mettre un enregistrement à zéro : %s\n"
#: g10/tdbio.c:1432
#, c-format
msgid "%s: failed to append a record: %s\n"
msgstr "%s : n'a pas pu ajouter un enregistrement : %s\n"
#: g10/trustdb.c:142
msgid "The trustdb is corrupted; please run \"gpgm --fix-trustdb\".\n"
msgstr ""
"La base de confiance est corrompue ; exécutez « gpgm --fix-trustdb ».\n"
#: g10/trustdb.c:155
#, c-format
msgid "trust record %lu, req type %d: read failed: %s\n"
msgstr ""
"enregistrement de confiance %lu, type de requête %d : la lecture a échoué : "
"%s\n"
#: g10/trustdb.c:170
#, c-format
msgid "trust record %lu, type %d: write failed: %s\n"
msgstr "enregistrement de confiance %lu, type %d : l'écriture a échoué : %s\n"
#: g10/trustdb.c:184
#, c-format
msgid "trust record %lu: delete failed: %s\n"
msgstr "enregistrement de confiance %lu : la suppression a échoué : %s\n"
#: g10/trustdb.c:198
#, c-format
msgid "trustdb: sync failed: %s\n"
msgstr "base de confiance : la synchronisation a échoué : %s\n"
#: g10/trustdb.c:327
#, c-format
msgid "error reading dir record for LID %lu: %s\n"
msgstr ""
"erreur pendant la lecture de l'enregistrement de répertoire pour\n"
"le LID %lu : %s\n"
#: g10/trustdb.c:334
#, c-format
msgid "lid %lu: expected dir record, got type %d\n"
msgstr "lid %lu : enregistrement de répertoire attendu, a reçu le type %d\n"
#: g10/trustdb.c:339
#, c-format
msgid "no primary key for LID %lu\n"
msgstr "pas de clé principale pour le LID %lu\n"
#: g10/trustdb.c:344
#, c-format
msgid "error reading primary key for LID %lu: %s\n"
msgstr "erreur pendant la lecture de la clé principale pour le LID %lu : %s\n"
#: g10/trustdb.c:420
#, c-format
msgid "chained sigrec %lu has a wrong owner\n"
msgstr "l'enregistrement de signature %lu a un mauvais propriétaire\n"
#: g10/trustdb.c:463
#, c-format
msgid "'%s' is not a valid long keyID\n"
msgstr "'%s' n'est pas une identification longue de clé valide\n"
#: g10/trustdb.c:498
#, c-format
msgid "key %08lX: no public key for trusted key - skipped\n"
msgstr "clé %08lX : pas de clé publique pour la clé certifiée - ignorée\n"
#: g10/trustdb.c:507 g10/trustdb.c:565
#, c-format
msgid "key %08lX: can't put it into the trustdb\n"
msgstr "clé %08lX : ne peut être mise dans la base de confiance\n"
#: g10/trustdb.c:512 g10/trustdb.c:571
#, c-format
msgid "key %08lX: query record failed\n"
msgstr "clé %08lX : l'enregistrement de requête a échoué\n"
#: g10/trustdb.c:517 g10/trustdb.c:580
#, c-format
msgid "key %08lX: already in trusted key table\n"
msgstr "clé %08lX : déjà dans la table des clés certifiées\n"
#: g10/trustdb.c:520 g10/trustdb.c:583
#, c-format
msgid "key %08lX: accepted as trusted key.\n"
msgstr "clé %08lX : acceptée comme clé certifiée.\n"
#: g10/trustdb.c:536
#, c-format
msgid "NOTE: secret key %08lX is NOT protected.\n"
msgstr "NOTE : la clé secrète %08lX n'est PAS protégée.\n"
#: g10/trustdb.c:548
#, c-format
msgid "key %08lX: secret key without public key - skipped\n"
msgstr "clé %08lX : clé secrète sans clé publique - non prise en compte\n"
#: g10/trustdb.c:555
#, c-format
msgid "key %08lX: secret and public key don't match\n"
msgstr "clé %08lX : les clés secrète et publique ne correspondent pas\n"
#: g10/trustdb.c:591
#, c-format
msgid "enumerate secret keys failed: %s\n"
msgstr "l'énumération des clés secrètes a échoué : %s\n"
#: g10/trustdb.c:774
#, c-format
msgid "lid %lu: read dir record failed: %s\n"
msgstr "lid %lu : la lecture d'enregistrement de répertoire a échoué : %s\n"
#: g10/trustdb.c:783
#, c-format
msgid "lid %lu: read key record failed: %s\n"
msgstr "lid %lu : la lecture de l''enregistrement de clé a échoué : %s\n"
#: g10/trustdb.c:793
#, c-format
msgid "lid %lu: read uid record failed: %s\n"
msgstr "lid %lu : la lecture d'enregistrement d'uid a échoué : %s\n"
#: g10/trustdb.c:802
#, c-format
msgid "lid %lu: read pref record failed: %s\n"
msgstr "lid %lu : la lecture d'enregistrement de préférences a échoué : %s\n"
#: g10/trustdb.c:812
#, c-format
msgid "lid %lu: read sig record failed: %s\n"
msgstr "lid %lu : la lecture d'enregistrement de signature a échoué : %s\n"
#: g10/trustdb.c:1013
msgid "Ooops, no keys\n"
msgstr "Ooops, pas de clé\n"
#: g10/trustdb.c:1017
msgid "Ooops, no user ids\n"
msgstr "Ooops, pas de nom d'utilisateur\n"
#: g10/trustdb.c:1088 g10/trustdb.c:1106
#, c-format
msgid "user '%s' read problem: %s\n"
msgstr "problème de lecture de l'utilisateur '%s' : %s\n"
#: g10/trustdb.c:1091 g10/trustdb.c:1109
#, c-format
msgid "user '%s' list problem: %s\n"
msgstr "problème de liste à l'utilisateur '%s' : %s\n"
#: g10/trustdb.c:1099 g10/trustdb.c:1346
#, c-format
msgid "user '%s' not found: %s\n"
msgstr "l'utilisateur '%s' n'a pas été trouvé : %s\n"
#: g10/trustdb.c:1101 g10/trustdb.c:1348
#, c-format
msgid "problem finding '%s' in trustdb: %s\n"
msgstr "problème de recherche de '%s' dans la base de confiance : %s\n"
#: g10/trustdb.c:1104
#, c-format
msgid "user '%s' not in trustdb\n"
msgstr "l'utilisateur '%s' n'est pas dans la base de confiance\n"
#: g10/trustdb.c:1139
#, c-format
msgid ""
"# List of assigned trustvalues, created %s\n"
"# (Use \"gpgm --import-ownertrust\" to restore them)\n"
msgstr ""
"# Liste des indices de confiance assignés, créée le %s\n"
"# (Utiliser « gpgm --import-ownertrust » pour les restaurer)\n"
#: g10/trustdb.c:1145
msgid "directory record w/o primary key\n"
msgstr "enregistrement de répertoire sans clé principale\n"
#: g10/trustdb.c:1152
#, c-format
msgid "error reading key record: %s\n"
msgstr "erreur pendant la lecture de l'enregistrement de clé : %s\n"
#: g10/trustdb.c:1192
msgid "line too long\n"
msgstr "ligne trop longue\n"
#: g10/trustdb.c:1200
msgid "error: missing colon\n"
msgstr "erreur : deux-points manquant\n"
#: g10/trustdb.c:1205
msgid "error: invalid fingerprint\n"
msgstr "erreur : empreinte digitale invalide\n"
#: g10/trustdb.c:1209
msgid "error: no ownertrust value\n"
msgstr "erreur : pas d'indice de confiance\n"
#: g10/trustdb.c:1234
msgid "key not in trustdb, searching ring.\n"
msgstr "la clé n'est pas dans la base de confiance, recherche du porte-clés.\n"
#: g10/trustdb.c:1237
#, c-format
msgid "key not in ring: %s\n"
msgstr "clé absente du porte-clés : %s\n"
#: g10/trustdb.c:1241
msgid "Oops: key is now in trustdb???\n"
msgstr "Oops : la clé est maintenant dans la base de confiance ???\n"
#. update the ownertrust
#: g10/trustdb.c:1246
#, c-format
msgid "insert trust record failed: %s\n"
msgstr "l'insertion d'enregistrement de confiance a échoué : %s\n"
#. error
#: g10/trustdb.c:1252
#, c-format
msgid "error finding dir record: %s\n"
msgstr "erreur pendant la recherche de l'enregistrement de répertoire : %s\n"
#: g10/trustdb.c:1351
#, c-format
msgid "user '%s' not in trustdb - inserting\n"
msgstr "l'utilisateur '%s' n'est pas dans la base de confiance - insertion\n"
#: g10/trustdb.c:1354
#, c-format
msgid "failed to put '%s' into trustdb: %s\n"
msgstr "n'a pas pu insérer '%s' dans la base de confiance : %s\n"
#: g10/trustdb.c:1404
#, c-format
msgid "%s: keyblock read problem: %s\n"
msgstr "%s : problème de lecture du bloc de clés : %s\n"
#: g10/trustdb.c:1418
#, c-format
msgid "%s: update failed: %s\n"
msgstr "%s : la mise à jour a échoué : %s\n"
#: g10/trustdb.c:1421
#, c-format
msgid "%s: updated\n"
msgstr "%s : mis à jour\n"
#: g10/trustdb.c:1423
#, c-format
msgid "%s: okay\n"
msgstr "%s : OK\n"
#: g10/trustdb.c:1438
#, c-format
msgid "lid %lu: dir record w/o key - skipped\n"
msgstr "lid %lu : enregistrement de répertoire sans clé - ignoré\n"
#: g10/trustdb.c:1451
#, c-format
msgid "lid %lu: keyblock not found: %s\n"
msgstr "lid %lu : le bloc de clés n'a pas été trouvé : %s\n"
#: g10/trustdb.c:1460 g10/trustdb.c:1529
#, c-format
msgid "lid %lu: update failed: %s\n"
msgstr "lid %lu : la mise à jour a échoué: %s\n"
#: g10/trustdb.c:1466 g10/trustdb.c:1535
#, c-format
msgid "lid %lu: updated\n"
msgstr "lid %lu : mis à jour\n"
#: g10/trustdb.c:1470 g10/trustdb.c:1539
#, c-format
msgid "lid %lu: okay\n"
msgstr "lid %lu : OK\n"
#: g10/trustdb.c:1477 g10/trustdb.c:1545
#, c-format
msgid "%lu keys processed\n"
msgstr "%lu clés traitées\n"
#: g10/trustdb.c:1479
#, c-format
msgid "\t%lu keys skipped\n"
msgstr "\t%lu clés ignorées\n"
#: g10/trustdb.c:1481 g10/trustdb.c:1547
#, c-format
msgid "\t%lu keys with errors\n"
msgstr "\t%lu clés avec erreurs\n"
#: g10/trustdb.c:1483 g10/trustdb.c:1549
#, c-format
msgid "\t%lu keys updated\n"
msgstr "\t%lu clés mises à jour\n"
#: g10/trustdb.c:1513
#, c-format
msgid "lid ?: insert failed: %s\n"
msgstr "lid ? : l'insertion a échoué : %s\n"
#: g10/trustdb.c:1518
#, c-format
msgid "lid %lu: insert failed: %s\n"
msgstr "lid %lu : l'insertion a échoué : %s\n"
#: g10/trustdb.c:1524
#, c-format
msgid "lid %lu: inserted\n"
msgstr "lid %lu : inséré\n"
#: g10/trustdb.c:1551
#, c-format
msgid "\t%lu keys inserted\n"
msgstr "\t%lu clés insérées\n"
#: g10/trustdb.c:1554
#, c-format
msgid "enumerate keyblocks failed: %s\n"
msgstr "l'énumération des blocs de clés a échoué : %s\n"
#: g10/trustdb.c:1599
#, c-format
msgid "check_trust: search dir record failed: %s\n"
msgstr ""
"check_trust : la recherche d'enregistrement de répertoire a échoué : %s\n"
#: g10/trustdb.c:1606
#, c-format
msgid "key %08lX: insert trust record failed: %s\n"
msgstr "clé %08lX : l'insertion d'enregistrement de confiance a échoué : %s\n"
#: g10/trustdb.c:1610
#, c-format
msgid "key %08lX.%lu: inserted into trustdb\n"
msgstr "clé %08lX.%lu : insérée dans la base de confiance\n"
#: g10/trustdb.c:1618
#, c-format
msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
msgstr ""
"clé %08lX.%lu : créée dans le futur (voyage temporel ou\n"
"problème d'horloge)\n"
#: g10/trustdb.c:1625
#, c-format
msgid "key %08lX.%lu: expired at %s\n"
msgstr "clé %08lX.%lu : a expiré le %s\n"
#: g10/trustdb.c:1633
#, c-format
msgid "key %08lX.%lu: trust check failed: %s\n"
msgstr "clé %08lX.%lu : la vérification de confiance a échoué: %s\n"
#: g10/trustdb.c:1842 g10/trustdb.c:1871 g10/trustdb.c:2610
msgid "WARNING: can't yet handle long pref records\n"
msgstr ""
"ATTENTION : les enregistrements de préférences longs ne sont pas encore\n"
"supportés\n"
#: g10/trustdb.c:1893
#, c-format
msgid "get_dir_record: search_record failed: %s\n"
msgstr "get_dir_record : search_record a échoué : %s\n"
#: g10/trustdb.c:1956
#, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but marked as checked\n"
msgstr ""
"NOTE : l'enregistrement de signature %lu[%d] est dans la liste d'aide\n"
"de %lu mais marqué comme vérifié\n"
#: g10/trustdb.c:1960
#, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but not marked\n"
msgstr ""
"NOTE : l'enregistrement de signature %lu[%d] est dans la liste d'aide\n"
"de %lu mais n'est pas marqué\n"
#. we need the dir record
#: g10/trustdb.c:1967
#, c-format
msgid "sig rec %lu[%d] in hintlist of %lu does not point to a dir record\n"
msgstr ""
"l'enregistrement de signature %lu[%d] dans la liste d'aide de %lu\n"
"ne pointe pas vers un enregistrement de répertoire\n"
#: g10/trustdb.c:1973
#, c-format
msgid "lid %lu: no primary key\n"
msgstr "lid %lu : pas de clé primaire\n"
#: g10/trustdb.c:2006
#, c-format
msgid "lid %lu: user id not found in keyblock\n"
msgstr "lid %lu : utilisateur non trouvé dans le bloc de clés\n"
#: g10/trustdb.c:2010
#, c-format
msgid "lid %lu: user id without signature\n"
msgstr "lid %lu : utilisateur sans signature\n"
#: g10/trustdb.c:2017
#, c-format
msgid "lid %lu: self-signature in hintlist\n"
msgstr "lid %lu : auto-signature dans la liste d'aide\n"
#: g10/trustdb.c:2028 g10/trustdb.c:2747 g10/trustdb.c:2831
msgid "Valid certificate revocation"
msgstr "Certificat de révocation valide"
#: g10/trustdb.c:2029 g10/trustdb.c:2748 g10/trustdb.c:2832
msgid "Good certificate"
msgstr "Bon certificat"
#: g10/trustdb.c:2038
msgid "very strange: no public key\n"
msgstr "très étrange : pas de clé publique\n"
#: g10/trustdb.c:2086
#, c-format
msgid "hintlist %lu[%d] of %lu does not point to a dir record\n"
msgstr ""
"la liste d'aide de %lu[%d] de %lu ne pointe pas vers un enregistrement\n"
"de répertoire\n"
#: g10/trustdb.c:2092
#, c-format
msgid "lid %lu does not have a key\n"
msgstr "la lid %lu n'a pas de clé\n"
#: g10/trustdb.c:2102
#, c-format
msgid "lid %lu: can't get keyblock: %s\n"
msgstr "lid %lu: ne peut obtenir le bloc de clés: %s\n"
#: g10/trustdb.c:2159 g10/trustdb.c:3082
#, c-format
msgid "tdbio_search_dir failed: %s\n"
msgstr "tdbio_search_dir a échoué : %s\n"
#: g10/trustdb.c:2312
#, c-format
msgid "key %08lX.%lu: Good subkey binding\n"
msgstr "clé %08lX.%lu : bonne liaison avec la sous-clé\n"
#: g10/trustdb.c:2318 g10/trustdb.c:2360
#, c-format
msgid "key %08lX.%lu: Invalid subkey binding: %s\n"
msgstr "clé %08lX.%lu : liaison avec la sous-clé invalide : %s\n"
#: g10/trustdb.c:2333
#, c-format
msgid "key %08lX.%lu: Valid key revocation\n"
msgstr "clé %08lX.%lu : révocation de clé valide\n"
#: g10/trustdb.c:2339
#, c-format
msgid "key %08lX.%lu: Invalid key revocation: %s\n"
msgstr "clé %08lX.%lu : révocation de sous-clé invalide : %s\n"
#: g10/trustdb.c:2354
#, c-format
msgid "key %08lX.%lu: Valid subkey revocation\n"
msgstr "clé %08lX.%lu : révocation de sous-clé valide\n"
#: g10/trustdb.c:2454
msgid "Good self-signature"
msgstr "Bonne auto-signature"
#: g10/trustdb.c:2465
msgid "Invalid self-signature"
msgstr "Auto-signature invalide"
#: g10/trustdb.c:2475
msgid "Valid user ID revocation skipped due to a newer self signature\n"
msgstr ""
"La révocation valide de nom d'utilisateur a été ignorée car l'auto-\n"
"signature est plus récente\n"
#: g10/trustdb.c:2482
msgid "Valid user ID revocation\n"
msgstr "Révocation de nom d'utilisateur valide\n"
#: g10/trustdb.c:2489
msgid "Invalid user ID revocation"
msgstr "Révocation de nom d'utilisateur invalide"
#: g10/trustdb.c:2573
msgid "Too many preferences"
msgstr "Trop de préférences"
#: g10/trustdb.c:2587
msgid "Too many preference items"
msgstr "Trop d'items de préférence"
#: g10/trustdb.c:2726
msgid "Duplicated certificate - deleted"
msgstr "Certificat dupliqué - enlevé"
#: g10/trustdb.c:2759
msgid "Hmmm, public key lost?"
msgstr "Hmmm, clé publique perdue ?"
#: g10/trustdb.c:2769 g10/trustdb.c:2852
msgid "Invalid certificate revocation"
msgstr "Révocation de certificat invalide"
#: g10/trustdb.c:2770 g10/trustdb.c:2853
msgid "Invalid certificate"
msgstr "Certificat invalide"
#: g10/trustdb.c:2785
#, c-format
msgid "uid %08lX.%lu/%02X%02X: has shadow dir %lu but is not yet marked.\n"
msgstr ""
"uid %08lX.%lu/%02X%02X : possède une ombre %lu mais n'est pas encore\n"
"marqué.\n"
#: g10/trustdb.c:2799
#, c-format
msgid "sig record %lu[%d] points to wrong record.\n"
msgstr ""
"l'enregistrement de signature %lu[%d] pointe vers le mauvais\n"
"enregistrement de répertoire\n"
#. that should never happen
#: g10/trustdb.c:3052
#, c-format
msgid "insert_trust_record: keyblock not found: %s\n"
msgstr "insert_trust_record : bloc de clés non trouvé : %s\n"
#: g10/trustdb.c:3070
msgid "did not use primary key for insert_trust_record()\n"
msgstr "n'a pas utilisé la clé principale pour « insert_trust_record() »\n"
#: g10/ringedit.c:293
#, c-format
msgid "%s: can't create keyring: %s\n"
msgstr "%s : ne peut créer le porte-clés : %s\n"
-#: g10/ringedit.c:299 g10/ringedit.c:1283
+#: g10/ringedit.c:299 g10/ringedit.c:1300
#, c-format
msgid "%s: keyring created\n"
msgstr "%s : porte-clés créé\n"
-#: g10/ringedit.c:1469
+#: g10/ringedit.c:1486
msgid "WARNING: 2 files with confidential information exists.\n"
msgstr ""
"ATTENTION : 2 fichiers avec des informations confidentielles existent.\n"
-#: g10/ringedit.c:1470
+#: g10/ringedit.c:1487
#, c-format
msgid "%s is the unchanged one\n"
msgstr "%s est le fichier original\n"
-#: g10/ringedit.c:1471
+#: g10/ringedit.c:1488
#, c-format
msgid "%s is the new one\n"
msgstr "%s est le nouveau\n"
-#: g10/ringedit.c:1472
+#: g10/ringedit.c:1489
msgid "Please fix this possible security flaw\n"
msgstr "Réparez ce problème de sécurité possible\n"
-#: g10/skclist.c:94
+#: g10/skclist.c:88 g10/skclist.c:125
+msgid "key is not flagged as insecure - can't use it with the faked RNG!\n"
+msgstr ""
+
+#: g10/skclist.c:113
#, c-format
msgid "skipped `%s': %s\n"
msgstr "`%s' a été ignoré : %s\n"
-#: g10/skclist.c:100
+#: g10/skclist.c:119
#, c-format
msgid ""
"skipped `%s': this is a PGP generated ElGamal key which is not secure for "
"signatures!\n"
msgstr ""
"`%s' a été ignorée : c'est une clé ElGamal générée par PGP qui n'est pas\n"
"sûre pour les signatures !\n"
#. do not overwrite
#: g10/openfile.c:58
#, c-format
msgid "File `%s' exists. "
msgstr "Le fichier `%s' existe. "
#: g10/openfile.c:60
msgid "Overwrite (y/N)? "
msgstr "Réécrire (o/N)? "
#: g10/openfile.c:85
msgid "writing to stdout\n"
msgstr "écriture vers la sortie standard\n"
#: g10/openfile.c:134
#, c-format
msgid "assuming signed data in `%s'\n"
msgstr "les données signées sont supposées être dans `%s'\n"
#: g10/openfile.c:181
#, c-format
msgid "%s: new options file created\n"
msgstr "%s : nouveau fichier d'options créé\n"
#: g10/encr-data.c:59
#, c-format
msgid "%s encrypted data\n"
msgstr "données chiffrées avec %s\n"
#: g10/encr-data.c:61
#, c-format
msgid "encrypted with unknown algorithm %d\n"
msgstr "chiffré avec l'algorithme inconnu %d\n"
#: g10/encr-data.c:74
msgid ""
"WARNING: message was encrypted with a weak key in the symmetric cipher.\n"
msgstr ""
"ATTENTION : Le message a été chiffré avec une mauvaise clé pendant le\n"
"chiffrement symétrique.\n"
#: g10/seskey.c:52
msgid "weak key created - retrying\n"
msgstr "mauvaise clé générée - nouvel essai\n"
#: g10/seskey.c:57
#, c-format
msgid "cannot avoid weak key for symmetric cipher; tried %d times!\n"
msgstr ""
"ne peut éviter une mauvaise clé pour le chiffrement symétrique : \n"
"%d essais ont eu lieu!\n"
#. begin of list
#: g10/helptext.c:48
msgid "edit_ownertrust.value"
msgstr ""
"C'est à vous d'assigner une valeur ici ; cette valeur ne sera jamais\n"
"einvoyée à une tierce personne. Nous en avons besoin pour créer le\n"
"réseau de confiance (web-of-trust) ; cela n'a rien à voir avec le\n"
"réseau des certificats (créé implicitement)"
#: g10/helptext.c:54
msgid "revoked_key.override"
msgstr ""
"Si vous voulez utiliser cette clé révoquée quand-même, répondez « oui »."
#: g10/helptext.c:58
msgid "untrusted_key.override"
msgstr ""
"Si vous voulez utiliser cette clé peu sûre quand-même, répondez « oui »."
#: g10/helptext.c:62
msgid "pklist.user_id.enter"
msgstr "Entrez l'adresse de la personne à qui vous voulez envoyer le message."
#: g10/helptext.c:66
msgid "keygen.algo"
msgstr ""
"Sélectionnez l'algorithme à utiliser.\n"
"DSA (alias DSS) est l'algorithme de signatures électroniques qui ne peut\n"
"être utilisé que pour les signatures. C'est l'algorithme recommandé car\n"
"la vérification des signatures DSA est beaucoup plus rapide que celle des\n"
"signatures ElGamal.\n"
"ElGamal est un algorithme pouvant à la fois être utilisé pour les\n"
"signatures et le chiffrement. OpenPGP en distingue deux sortes :\n"
"l'une destinée uniquement au chiffrement et l'autre pouvant aussi bien\n"
"servir aux signatures ; elles sont en fait identiques mais certains\n"
"paramètres doivent être spécialement choisis pour que la clé génère des\n"
"signatures sures : ce programme est capable de le faire mais les autres\n"
"implémentaions de OpenPGP ne sont pas obligées d'accepter cette forme de\n"
"clé.\n"
"La première clé (clé principale) doit toujours être capable de signer ;\n"
"c'est pourquoi la clé ElGamal de chiffrement seul est alors désactivée."
#: g10/helptext.c:82
msgid "keygen.algo.elg_se"
msgstr ""
"Bien que ces clés soient définies dans la RFC2440 elles ne sont pas\n"
"conseillées car tous les programmes ne les supportent pas et les signatures\n"
"créées avec elles sont plutôt longues et très lentes à vérifier."
#: g10/helptext.c:89
msgid "keygen.size"
msgstr "Entrez la taille de la clé"
#: g10/helptext.c:93
msgid "keygen.size.huge.okay"
msgstr "Répondez « oui » ou « non »"
#: g10/helptext.c:98
msgid "keygen.size.large.okay"
msgstr "Répondez « oui » ou « non »"
#: g10/helptext.c:103
msgid "keygen.valid"
msgstr "Entrez la valeur demandée"
#: g10/helptext.c:107
msgid "keygen.valid.okay"
msgstr "Répondez « oui » ou « non »"
#: g10/helptext.c:112
msgid "keygen.name"
msgstr "Entrez le nom du propriétaire de la clé"
#: g10/helptext.c:117
msgid "keygen.email"
msgstr "Entrez une adresse e-mail optionnelle mais hautement recommandée"
#: g10/helptext.c:121
msgid "keygen.comment"
msgstr "Entrez un commentaire optionnel"
#: g10/helptext.c:126
msgid "keygen.userid.cmd"
msgstr ""
"N pour changer le nom.\n"
"C pour changer le commentaire.\n"
"E pour changer l'adresse e-mail.\n"
"O pour continuer à générer la clé.\n"
"Q pour arrêter de générer de clé."
#: g10/helptext.c:135
msgid "keygen.sub.okay"
msgstr "Répondez « oui » (ou simplement « o ») pour générer la sous-clé"
#: g10/helptext.c:139
msgid "sign_uid.okay"
msgstr "Répondez « oui » ou « non »"
#: g10/helptext.c:144
msgid "change_passwd.empty.okay"
msgstr "Répondez « oui » ou « non »"
#: g10/helptext.c:149
msgid "keyedit.cmd"
msgstr "Entrez « help » pour voir la liste des commandes."
#: g10/helptext.c:153
msgid "keyedit.save.okay"
msgstr "Répondez « oui » ou « non »"
#: g10/helptext.c:158
msgid "keyedit.cancel.okay"
msgstr "Répondez « oui » ou « non »"
#: g10/helptext.c:162
msgid "keyedit.sign_all.okay"
msgstr "Répondez « oui » si vous voulez signer TOUS les noms d'utilisateurs"
#: g10/helptext.c:166
msgid "keyedit.remove.uid.okay"
msgstr ""
"Répondez « oui » si vous voulez vraiment supprimer ce nom\n"
"d'utilisateur. Tous les certificats seront alors perdus en même temps !"
#: g10/helptext.c:171
msgid "keyedit.remove.subkey.okay"
msgstr "Entrez « oui » s'il faut vraiment supprimer la sous-clé"
#: g10/helptext.c:175
msgid "passphrase.enter"
msgstr ""
"Entrez le mot de passe ; c'est une phrase secrète \n"
" Blurb, blurb,.... "
#: g10/helptext.c:182
msgid "passphrase.repeat"
msgstr ""
"Répétez le dernier mot de passe, pour être sûr de ce que vous avez tapé."
#: g10/helptext.c:186
msgid "detached_signature.filename"
msgstr "Donnez le nom du fichier auquel la signature se rapporte"
#: g10/helptext.c:190
msgid "openfile.overwrite.okay"
msgstr "Entrez « oui » s'il faut vraiment réécrire le fichier"
#: g10/helptext.c:204
msgid "No help available"
msgstr "Pas d'aide disponible"
#: g10/helptext.c:216
#, c-format
msgid "No help available for `%s'"
msgstr "Pas d'aide disponible pour `%s'"
+
+#~ msgid "second"
+#~ msgstr "seconde"
+
+#~ msgid "seconds"
+#~ msgstr "secondes"
diff --git a/po/it.po b/po/it.po
index ee3115911..a6f2d29a7 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,3144 +1,3213 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 1998 Free Software Foundation, Inc.
# Marco d'Itri <md@linux.it>, 1998.
#
msgid ""
msgstr ""
"Project-Id-Version: gnupg-0.4.3\n"
-"POT-Creation-Date: 1999-01-09 18:31+0100\n"
+"POT-Creation-Date: 1999-01-20 22:45+0100\n"
"PO-Revision-Date: 1998-11-09 16:19+01:00\n"
"Last-Translator: Marco d'Itri <md@linux.it>\n"
"Language-Team: Italian <it@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
#: util/secmem.c:77
msgid "Warning: using insecure memory!\n"
msgstr "Attenzione: si sta usando memoria insicura!\n"
#: util/miscutil.c:143
msgid "yes"
msgstr "sì"
#: util/miscutil.c:144
msgid "yY"
msgstr "sS"
#: util/errors.c:54
#, fuzzy
msgid "general error"
msgstr "Errore generale"
#: util/errors.c:55
#, fuzzy
msgid "unknown packet type"
msgstr "Tipo del pacchetto sconosciuto"
#: util/errors.c:56
#, fuzzy
msgid "unknown version"
msgstr "Versione sconosciuta"
#: util/errors.c:57
#, fuzzy
msgid "unknown pubkey algorithm"
msgstr "Algoritmo della chiave pubblica sconosciuto"
#: util/errors.c:58
#, fuzzy
msgid "unknown digest algorithm"
msgstr "Algoritmo del digest sconosciuto"
#: util/errors.c:59
#, fuzzy
msgid "bad public key"
msgstr "Chiave pubblica errata o danneggiata"
#: util/errors.c:60
#, fuzzy
msgid "bad secret key"
msgstr "Chiave segreta errata o danneggiata"
#: util/errors.c:61
#, fuzzy
msgid "bad signature"
msgstr "Firma errata o danneggiata"
#: util/errors.c:62
#, fuzzy
msgid "checksum error"
msgstr "Checksum errato"
#: util/errors.c:63
#, fuzzy
msgid "bad passphrase"
msgstr "Passphrase errata"
#: util/errors.c:64
#, fuzzy
msgid "public key not found"
msgstr "Chiave pubblica non trovata"
#: util/errors.c:65
#, fuzzy
msgid "unknown cipher algorithm"
msgstr "Algoritmo di cifratura sconosciuto"
#: util/errors.c:66
#, fuzzy
msgid "can't open the keyring"
msgstr "Impossibile aprire il portachiavi"
#: util/errors.c:67
#, fuzzy
msgid "invalid packet"
msgstr "Pacchetto non valido"
#: util/errors.c:68
#, fuzzy
msgid "invalid armor"
msgstr "Armatura non valida"
#: util/errors.c:69
#, fuzzy
msgid "no such user id"
msgstr "User id inesistente"
#: util/errors.c:70
#, fuzzy
msgid "secret key not available"
msgstr "La chiave segreta non è disponibile."
#: util/errors.c:71
#, fuzzy
msgid "wrong secret key used"
msgstr "È stata usata la chiave segreta sbagliata"
#: util/errors.c:72
#, fuzzy
msgid "not supported"
msgstr "Non gestito"
#: util/errors.c:73
#, fuzzy
msgid "bad key"
msgstr "Chiave danneggiata"
#: util/errors.c:74
#, fuzzy
msgid "file read error"
msgstr "Errore durante la lettura del file"
#: util/errors.c:75
#, fuzzy
msgid "file write error"
msgstr "Errore durante la scrittura del file"
#: util/errors.c:76
#, fuzzy
msgid "unknown compress algorithm"
msgstr "Algoritmo di compressione sconosciuto"
#: util/errors.c:77
#, fuzzy
msgid "file open error"
msgstr "Errore durante l'apertura del file"
#: util/errors.c:78
#, fuzzy
msgid "file create error"
msgstr "Errore durante la creazione del file"
#: util/errors.c:79
#, fuzzy
msgid "invalid passphrase"
msgstr "Passphrase non valida"
#: util/errors.c:80
#, fuzzy
msgid "unimplemented pubkey algorithm"
msgstr "Algoritmo della chiave pubblica non implementato"
#: util/errors.c:81
#, fuzzy
msgid "unimplemented cipher algorithm"
msgstr "Algoritmo di cifratura non implementato"
#: util/errors.c:82
#, fuzzy
msgid "unknown signature class"
msgstr "Classe della firma sconosciuta."
#: util/errors.c:83
#, fuzzy
msgid "trust database error"
msgstr "Errore nel database della fiducia"
#: util/errors.c:84
#, fuzzy
msgid "bad MPI"
msgstr "MPI danneggiato"
#: util/errors.c:85
#, fuzzy
msgid "resource limit"
msgstr "Limite della risorsa"
#: util/errors.c:86
#, fuzzy
msgid "invalid keyring"
msgstr "Portachiavi non valido"
#: util/errors.c:87
#, fuzzy
msgid "bad certificate"
msgstr "Certificato danneggiato"
#: util/errors.c:88
#, fuzzy
msgid "malformed user id"
msgstr "User id malformato"
#: util/errors.c:89
#, fuzzy
msgid "file close error"
msgstr "Errore durante la chiusura del file"
#: util/errors.c:90
#, fuzzy
msgid "file rename error"
msgstr "Errore durante la rinominazione del file"
#: util/errors.c:91
#, fuzzy
msgid "file delete error"
msgstr "Errore durante la cancellazione del file"
#: util/errors.c:92
#, fuzzy
msgid "unexpected data"
msgstr "Dati inaspettati"
#: util/errors.c:93
#, fuzzy
msgid "timestamp conflict"
msgstr "Date in conflitto"
#: util/errors.c:94
#, fuzzy
msgid "unusable pubkey algorithm"
msgstr "Algoritmo della chiave pubblica non utilizzabile"
#: util/errors.c:95
#, fuzzy
msgid "file exists"
msgstr "Il file esiste"
#: util/errors.c:96
#, fuzzy
msgid "weak key"
msgstr "Chiave debole"
+#: util/errors.c:97
+#, fuzzy
+msgid "invalid argument"
+msgstr "Armatura non valida"
+
+#: util/errors.c:98
+#, fuzzy
+msgid "bad URI"
+msgstr "MPI danneggiato"
+
+#: util/errors.c:99
+#, fuzzy
+msgid "unsupported URI"
+msgstr "Non gestito"
+
+#: util/errors.c:100
+#, fuzzy
+msgid "network error"
+msgstr "Errore generale"
+
#: util/logger.c:178
#, c-format
msgid "... this is a bug (%s:%d:%s)\n"
msgstr "... questo è un bug (%s:%d:%s)\n"
#: util/logger.c:184
#, c-format
msgid "you found a bug ... (%s:%d)\n"
msgstr "Hai trovato un bug... (%s:%d)\n"
-#: cipher/random.c:405
+#: cipher/random.c:412
#, fuzzy
msgid "WARNING: using insecure random number generator!!\n"
msgstr ""
"Attenzione: si sta usando un generatore di numeri casuali non sicuro!!\n"
-#: cipher/random.c:406
+#: cipher/random.c:413
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 ""
"Il generatore di numeri casuali è solo un ripiego per fare\n"
"compilare il programma - non è assolutamente un RNG forte!\n"
#: cipher/rndlinux.c:118
#, c-format
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"
"Non ci sono abbastanza byte casuali disponibili. Per favore fai qualche\n"
"altra cosa per dare all'OS la possibilità di raccogliere altra entropia!\n"
"(Servono ancora %d altri byte)\n"
-#: g10/g10.c:160
+#: g10/g10.c:163
msgid ""
"@Commands:\n"
" "
msgstr ""
"@Comandi:\n"
" "
-#: g10/g10.c:163
+#: g10/g10.c:166
msgid "|[file]|make a signature"
msgstr "|[file]|fai una firma"
-#: g10/g10.c:164
+#: g10/g10.c:167
msgid "|[file]|make a clear text signature"
msgstr "|[file]|fai una firma mantenendo il testo in chiaro"
-#: g10/g10.c:165
+#: g10/g10.c:168
msgid "make a detached signature"
msgstr "fai una firma separata"
-#: g10/g10.c:166
+#: g10/g10.c:169
msgid "encrypt data"
msgstr "cifra dati"
-#: g10/g10.c:167
+#: g10/g10.c:170
msgid "encryption only with symmetric cipher"
msgstr "cifra solo con un cifrario simmetrico"
-#: g10/g10.c:168
+#: g10/g10.c:171
msgid "store only"
msgstr "immagazzina soltanto"
-#: g10/g10.c:169
+#: g10/g10.c:172
msgid "decrypt data (default)"
msgstr "decifra dati (predefinito)"
-#: g10/g10.c:170
+#: g10/g10.c:173
msgid "verify a signature"
msgstr "verifica una firma"
-#: g10/g10.c:172
+#: g10/g10.c:175
msgid "list keys"
msgstr "elenca le chiavi"
-#: g10/g10.c:173
+#: g10/g10.c:176
msgid "list keys and signatures"
msgstr "elenca le chiavi e le firme"
-#: g10/g10.c:174
+#: g10/g10.c:177
msgid "check key signatures"
msgstr "controlla le firme delle chiavi"
-#: g10/g10.c:175
+#: g10/g10.c:178
msgid "list keys and fingerprints"
msgstr "elenca le chiavi e le impronte digitali"
-#: g10/g10.c:176
+#: g10/g10.c:179
msgid "list secret keys"
msgstr "elenca le chiavi segrete"
-#: g10/g10.c:178
+#: g10/g10.c:181
msgid "generate a new key pair"
msgstr "genera una nuova coppia di chiavi"
-#: g10/g10.c:180
+#: g10/g10.c:183
msgid "remove key from the public keyring"
msgstr "rimuove una chiave dal portachiavi pubblico"
-#: g10/g10.c:182
+#: g10/g10.c:185
msgid "sign or edit a key"
msgstr "firma o modifica una chiave"
-#: g10/g10.c:183
+#: g10/g10.c:186
msgid "generate a revocation certificate"
msgstr "genera un certificato di revoca"
-#: g10/g10.c:185
+#: g10/g10.c:188
msgid "export keys"
msgstr "esporta delle chiavi"
-#: g10/g10.c:188
+#: g10/g10.c:189
+msgid "export keys to a key server"
+msgstr ""
+
+#: g10/g10.c:192
msgid "import/merge keys"
msgstr "importa/aggiungi delle chiavi"
-#: g10/g10.c:190
+#: g10/g10.c:194
msgid "list only the sequence of packets"
msgstr "elenca solo la sequenza dei pacchetti"
-#: g10/g10.c:193
+#: g10/g10.c:197
msgid "export the ownertrust values"
msgstr "esporta i valori di fiducia"
-#: g10/g10.c:195
+#: g10/g10.c:199
msgid "import ownertrust values"
msgstr "importa i valori di fiducia"
-#: g10/g10.c:197
+#: g10/g10.c:201
msgid "|[NAMES]|update the trust database"
msgstr "|[NAMES]|controlla il database della fiducia"
-#: g10/g10.c:199
+#: g10/g10.c:203
msgid "|[NAMES]|check the trust database"
msgstr "|[NAMES]|controlla il database della fiducia"
-#: g10/g10.c:200
+#: g10/g10.c:204
msgid "fix a corrupted trust database"
msgstr "ripara un database della fiducia rovinato"
-#: g10/g10.c:201
+#: g10/g10.c:205
msgid "De-Armor a file or stdin"
msgstr "rimuovi l'armatura a un file o a stdin"
-#: g10/g10.c:202
+#: g10/g10.c:206
msgid "En-Armor a file or stdin"
msgstr "crea l'armatura a un file o a stdin"
-#: g10/g10.c:203
+#: g10/g10.c:207
msgid "|algo [files]|print message digests"
msgstr "|algo [files]|stampa tutti i message digests"
-#: g10/g10.c:204
+#: g10/g10.c:208
msgid "print all message digests"
msgstr "stampa tutti i message digests"
-#: g10/g10.c:211
+#: g10/g10.c:215
msgid ""
"@\n"
"Options:\n"
" "
msgstr ""
"@\n"
"Opzioni:\n"
" "
-#: g10/g10.c:213
+#: g10/g10.c:217
msgid "create ascii armored output"
msgstr "crea un output ascii con armatura"
-#: g10/g10.c:215
+#: g10/g10.c:219
msgid "use this user-id to sign or decrypt"
msgstr "usa questo user-id per firmare o decifrare"
-#: g10/g10.c:216
+#: g10/g10.c:220
msgid "use this user-id for encryption"
msgstr "usa questo user-id per cifrare"
-#: g10/g10.c:217
+#: g10/g10.c:221
msgid "|N|set compress level N (0 disables)"
msgstr "|N|imposta il livello di compressione (0 disabilita)"
-#: g10/g10.c:219
+#: g10/g10.c:223
msgid "use canonical text mode"
msgstr "usa il modo testo canonico"
-#: g10/g10.c:221
+#: g10/g10.c:225
msgid "use as output file"
msgstr "usa come file di output"
-#: g10/g10.c:222
+#: g10/g10.c:226
msgid "verbose"
msgstr "prolisso"
-#: g10/g10.c:223
+#: g10/g10.c:227
msgid "be somewhat more quiet"
msgstr "meno prolisso"
-#: g10/g10.c:224
+#: g10/g10.c:228
msgid "force v3 signatures"
msgstr "forza l'uso di firme v3"
#. { oDryRun, "dry-run", 0, N_("do not make any changes") },
-#: g10/g10.c:226
+#: g10/g10.c:230
msgid "batch mode: never ask"
msgstr "modo batch: non fare domande"
-#: g10/g10.c:227
+#: g10/g10.c:231
msgid "assume yes on most questions"
msgstr "assumi \"sì\" a quasi tutte le domande"
-#: g10/g10.c:228
+#: g10/g10.c:232
msgid "assume no on most questions"
msgstr "assumi \"no\" a quasi tutte le domande"
-#: g10/g10.c:229
+#: g10/g10.c:233
msgid "add this keyring to the list of keyrings"
msgstr "aggiungi questo portachiavi alla lista"
-#: g10/g10.c:230
+#: g10/g10.c:234
msgid "add this secret keyring to the list"
msgstr "aggiungi questo portachiavi segreto alla lista"
-#: g10/g10.c:231
+#: g10/g10.c:235
msgid "|NAME|use NAME as default secret key"
msgstr "|NAME|usa NAME come chiave segreta predefinita"
-#: g10/g10.c:232
+#: g10/g10.c:236
+msgid "|HOST|use this keyserver to lookup keys"
+msgstr ""
+
+#: g10/g10.c:237
#, fuzzy
msgid "|NAME|set terminal charset to NAME"
msgstr "|NAME|usa l'algoritmo di cifratura NOME"
-#: g10/g10.c:233
+#: g10/g10.c:238
msgid "read options from file"
msgstr "leggi le opzioni dal file"
-#: g10/g10.c:235
+#: g10/g10.c:240
msgid "set debugging flags"
msgstr "imposta i flag di debugging"
-#: g10/g10.c:236
+#: g10/g10.c:241
msgid "enable full debugging"
msgstr "abilita il debugging completo"
-#: g10/g10.c:237
+#: g10/g10.c:242
msgid "|FD|write status info to this FD"
msgstr "|FD|scrivi le informazioni di stato su questo fd"
-#: g10/g10.c:238
+#: g10/g10.c:243
msgid "do not write comment packets"
msgstr "non scrivere pacchetti di commento"
-#: g10/g10.c:239
+#: g10/g10.c:244
msgid "(default is 1)"
msgstr "(predefinito è 1)"
-#: g10/g10.c:240
+#: g10/g10.c:245
msgid "(default is 3)"
msgstr "(predefinito è 3)"
-#: g10/g10.c:242
+#: g10/g10.c:247
msgid "|KEYID|ulimately trust this key"
msgstr ""
-#: g10/g10.c:243
+#: g10/g10.c:248
msgid "|FILE|load extension module FILE"
msgstr "|FILE|carica il modulo di estensione FILE"
-#: g10/g10.c:244
+#: g10/g10.c:249
msgid "emulate the mode described in RFC1991"
msgstr "emula il modo descritto nel RFC1991"
-#: g10/g10.c:245
+#: g10/g10.c:250
msgid "|N|use passphrase mode N"
msgstr "|N|usa il modo N per la passphrase"
-#: g10/g10.c:247
+#: g10/g10.c:252
msgid "|NAME|use message digest algorithm NAME for passphrases"
msgstr "|NAME|usa l'algoritmo di message digest NOME"
-#: g10/g10.c:249
+#: g10/g10.c:254
msgid "|NAME|use cipher algorithm NAME for passphrases"
msgstr "|NAME|usa l'alg. di cifratura NOME per le passphrase"
-#: g10/g10.c:251
+#: g10/g10.c:256
msgid "|NAME|use cipher algorithm NAME"
msgstr "|NAME|usa l'algoritmo di cifratura NOME"
-#: g10/g10.c:252
+#: g10/g10.c:257
msgid "|NAME|use message digest algorithm NAME"
msgstr "|NAME|usa l'algoritmo di message digest NOME"
-#: g10/g10.c:253
+#: g10/g10.c:258
msgid "|N|use compress algorithm N"
msgstr "|N|usa l'algoritmo di compressione N"
-#: g10/g10.c:254
+#: g10/g10.c:259
msgid "throw keyid field of encrypted packets"
msgstr "elimina il campo keyid dei pacchetti crittografati"
-#: g10/g10.c:262
+#: g10/g10.c:267
msgid ""
"@\n"
"Examples:\n"
"\n"
" -se -r Bob [file] sign and encrypt for user Bob\n"
" --clearsign [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"
msgstr ""
"@\n"
"Esempi:\n"
"\n"
" -se -r Bob [file] firma e cifra per l'utente Bob\n"
" --clearsign [file] fai una firma mantenendo il testo in chiaro\n"
" --detach-sign [file] fai una firma separata\n"
" --list-keys [nomi] mostra le chiavi\n"
" --fingerprint [nomi] mostra le impronte digitali\n"
-#: g10/g10.c:341
+#: g10/g10.c:346
msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
msgstr "Per favore segnala i bug a <gnupg-bugs@gnu.org>.\n"
-#: g10/g10.c:346
+#: g10/g10.c:351
msgid "Usage: gpgm [options] [files] (-h for help)"
msgstr "Uso: gpgm [opzioni] [file] (-h per l'aiuto)"
-#: g10/g10.c:348
+#: g10/g10.c:353
msgid "Usage: gpg [options] [files] (-h for help)"
msgstr "Uso: gpg [opzioni] [file] (-h per l'aiuto)"
-#: g10/g10.c:353
+#: g10/g10.c:358
msgid ""
"Syntax: gpgm [options] [files]\n"
"GnuPG maintenance utility\n"
msgstr ""
"Sintassi: gpgm [opzioni] [file]\n"
"Utility di manutenzione di GnuPG\n"
-#: g10/g10.c:356
+#: g10/g10.c:361
msgid ""
"Syntax: gpg [options] [files]\n"
"sign, check, encrypt or decrypt\n"
"default operation depends on the input data\n"
msgstr ""
"Sintassi: gpg [opzioni] [file]\n"
"firma, controlla, cifra o decifra\n"
"l'operazione predefinita dipende dai dati di input\n"
-#: g10/g10.c:362
+#: g10/g10.c:367
msgid ""
"\n"
"Supported algorithms:\n"
msgstr ""
"\n"
"Algoritmi gestiti:\n"
-#: g10/g10.c:437
+#: g10/g10.c:442
msgid "usage: gpgm [options] "
msgstr "uso: gpgm [options] "
-#: g10/g10.c:439
+#: g10/g10.c:444
msgid "usage: gpg [options] "
msgstr "uso: gpg [options] "
-#: g10/g10.c:480
+#: g10/g10.c:485
msgid "conflicting commands\n"
msgstr "comandi in conflitto\n"
-#: g10/g10.c:618
+#: g10/g10.c:623
#, fuzzy, c-format
msgid "NOTE: no default option file `%s'\n"
msgstr "nota: nessun file con opzioni predefinite `%s'\n"
-#: g10/g10.c:622
+#: g10/g10.c:627
#, c-format
msgid "option file `%s': %s\n"
msgstr "file con opzioni predefinite `%s': %s\n"
-#: g10/g10.c:629
+#: g10/g10.c:634
#, c-format
msgid "reading options from `%s'\n"
msgstr "lettura delle opzioni da `%s'\n"
-#: g10/g10.c:782
+#: g10/g10.c:788
#, fuzzy, c-format
msgid "%s is not a valid character set\n"
msgstr "Carattere non valido nel commento\n"
-#: g10/g10.c:817 g10/g10.c:829
+#: g10/g10.c:824 g10/g10.c:836
msgid "selected cipher algorithm is invalid\n"
msgstr "l'algoritmo di cifratura selezionato non è valido\n"
-#: g10/g10.c:823 g10/g10.c:835
+#: g10/g10.c:830 g10/g10.c:842
msgid "selected digest algorithm is invalid\n"
msgstr "l'algoritmo di digest selezionato non è valido\n"
-#: g10/g10.c:838
+#: g10/g10.c:845
#, c-format
msgid "compress algorithm must be in range %d..%d\n"
msgstr "l'algoritmo di compressione deve essere tra %d e %d\n"
-#: g10/g10.c:840
+#: g10/g10.c:847
msgid "completes-needed must be greater than 0\n"
msgstr "completes-needed deve essere maggiore di 0\n"
-#: g10/g10.c:842
+#: g10/g10.c:849
msgid "marginals-needed must be greater than 1\n"
msgstr "marginals-needed deve essere maggiore di 1\n"
-#: g10/g10.c:844
+#: g10/g10.c:851
msgid "max-cert-depth must be in range 1 to 255\n"
msgstr ""
-#: g10/g10.c:847
+#: g10/g10.c:854
#, fuzzy
msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
msgstr "nota: il modo S2K semplice (0) è fortemente scoraggiato\n"
-#: g10/g10.c:851
+#: g10/g10.c:858
msgid "invalid S2K mode; must be 0, 1 or 3\n"
msgstr "modo S2K non valido; deve essere 0, 1 o 3\n"
-#: g10/g10.c:934
+#: g10/g10.c:941
#, c-format
msgid "failed to initialize the TrustDB: %s\n"
msgstr "inizializzazione del trustdb fallita: %s\n"
-#: g10/g10.c:940
+#: g10/g10.c:947
msgid "--store [filename]"
msgstr "--store [nomefile]"
-#: g10/g10.c:948
+#: g10/g10.c:955
msgid "--symmetric [filename]"
msgstr "--symmetric [nomefile]"
-#: g10/g10.c:956
+#: g10/g10.c:963
msgid "--encrypt [filename]"
msgstr "--encrypt [nomefile]"
-#: g10/g10.c:969
+#: g10/g10.c:976
msgid "--sign [filename]"
msgstr "--sign [nomefile]"
-#: g10/g10.c:982
+#: g10/g10.c:989
msgid "--sign --encrypt [filename]"
msgstr "--sign --encrypt [nomefile]"
-#: g10/g10.c:996
+#: g10/g10.c:1003
msgid "--clearsign [filename]"
msgstr "--clearsign [nomefile]"
-#: g10/g10.c:1008
+#: g10/g10.c:1015
msgid "--decrypt [filename]"
msgstr "--decrypt [nomefile]"
-#: g10/g10.c:1017
+#: g10/g10.c:1024
#, fuzzy
msgid "--edit-key username [commands]"
msgstr "--edit-key nomeutente"
-#: g10/g10.c:1033
+#: g10/g10.c:1040
msgid "--delete-secret-key username"
msgstr "--delete-secret-key nomeutente"
-#: g10/g10.c:1036
+#: g10/g10.c:1043
msgid "--delete-key username"
msgstr "--delete-key nomeutente"
-#: g10/encode.c:216 g10/g10.c:1059 g10/sign.c:301
+#: g10/encode.c:216 g10/g10.c:1066 g10/sign.c:311
#, c-format
msgid "can't open %s: %s\n"
msgstr "impossibile aprire `%s': %s\n"
-#: g10/g10.c:1070
+#: g10/g10.c:1077
msgid "-k[v][v][v][c] [userid] [keyring]"
msgstr "-k[v][v][v][c] [userid] [portachiavi]"
-#: g10/g10.c:1127
+#: g10/g10.c:1138
#, c-format
msgid "dearmoring failed: %s\n"
msgstr "rimozione dell'armatura fallita: %s\n"
-#: g10/g10.c:1135
+#: g10/g10.c:1146
#, c-format
msgid "enarmoring failed: %s\n"
msgstr "creazione dell'armatura fallita: %s\n"
-#: g10/g10.c:1201
+#: g10/g10.c:1212
#, c-format
msgid "invalid hash algorithm `%s'\n"
msgstr "algoritmo di hash non valido `%s'\n"
-#: g10/g10.c:1280
+#: g10/g10.c:1291
msgid "[filename]"
msgstr "[nomefile]"
-#: g10/g10.c:1284
+#: g10/g10.c:1295
msgid "Go ahead and type your message ...\n"
msgstr ""
-#: g10/decrypt.c:59 g10/g10.c:1287 g10/verify.c:66
+#: g10/decrypt.c:59 g10/g10.c:1298 g10/verify.c:66
#, c-format
msgid "can't open `%s'\n"
msgstr "impossibile aprire `%s'\n"
-#: g10/armor.c:321
+#: g10/armor.c:297
#, c-format
msgid "armor: %s\n"
msgstr "armatura: %s\n"
-#: g10/armor.c:344
+#: g10/armor.c:320
msgid "invalid armor header: "
msgstr "header dell'armatura non valido: "
-#: g10/armor.c:351
+#: g10/armor.c:327
msgid "armor header: "
msgstr "header dell'armatura: "
-#: g10/armor.c:362
+#: g10/armor.c:338
msgid "invalid clearsig header\n"
msgstr "header della firma in chiaro non valido\n"
-#: g10/armor.c:414
+#: g10/armor.c:390
#, fuzzy
msgid "nested clear text signatures\n"
msgstr "|[file]|fai una firma mantenendo il testo in chiaro"
-#: g10/armor.c:530
+#: g10/armor.c:508
msgid "invalid dash escaped line: "
msgstr "riga protetta con il trattino non valida: "
-#: g10/armor.c:538
+#: g10/armor.c:516
#, fuzzy
msgid "unexpected armor:"
msgstr "Dati inaspettati"
-#: g10/armor.c:624
+#: g10/armor.c:632
#, c-format
msgid "invalid radix64 character %02x skipped\n"
msgstr "Carattere radix64 non valido %02x saltato\n"
-#: g10/armor.c:654
+#: g10/armor.c:675
msgid "premature eof (no CRC)\n"
msgstr "eof prematura (nessun CRC)\n"
-#: g10/armor.c:671
+#: g10/armor.c:709
msgid "premature eof (in CRC)\n"
msgstr "eof prematura (nel CRC)\n"
-#: g10/armor.c:675
+#: g10/armor.c:713
msgid "malformed CRC\n"
msgstr "CRC malformato\n"
-#: g10/armor.c:679
+#: g10/armor.c:717
#, c-format
msgid "CRC error; %06lx - %06lx\n"
msgstr "errore nel CRC; %06lx - %06lx\n"
-#: g10/armor.c:696
+#: g10/armor.c:734
msgid "premature eof (in Trailer)\n"
msgstr "eof prematura (nella coda)\n"
-#: g10/armor.c:700
+#: g10/armor.c:738
msgid "error in trailer line\n"
msgstr "errore nella riga della coda\n"
-#: g10/armor.c:961
+#: g10/armor.c:999
#, fuzzy
msgid "no valid OpenPGP data found.\n"
msgstr "Non sono stati trovati dati RFC1991 o OpenPGP validi.\n"
-#: g10/armor.c:963
+#: g10/armor.c:1001
#, c-format
msgid "invalid armor: line longer than %d characters\n"
msgstr ""
+#: g10/armor.c:1005
+msgid ""
+"quoted printable character in armor - probably a buggy MTA has been used\n"
+msgstr ""
+
#: g10/pkclist.c:138
#, fuzzy, c-format
msgid ""
"No trust value assigned to %lu:\n"
"%4u%c/%08lX %s \""
msgstr ""
"Nessun valore di fiducia del proprietario definito per %lu:\n"
"%4u%c/%08lX %s \""
#: g10/pkclist.c:148
msgid ""
"Please decide how far you trust this user to correctly\n"
"verify other users' keys (by looking at passports,\n"
"checking fingerprints from different sources...)?\n"
"\n"
" 1 = Don't know\n"
" 2 = I do NOT trust\n"
" 3 = I trust marginally\n"
" 4 = I trust fully\n"
" s = please show me more information\n"
msgstr ""
"Per favore decidi quanto hai fiducia di questo utente perchè firmi\n"
"correttamente le chiavi di altri utenti (guardando il loro passaporto,\n"
"controllando le impronte digitali da diverse fonti ...)?\n"
"\n"
" 1 = Non lo so\n"
" 2 = NON mi fido\n"
" 3 = Mi fido marginalmente\n"
" 4 = Mi fido completamente\n"
" s = mostrami ulteriori informazioni\n"
#: g10/pkclist.c:157
msgid " m = back to the main menu\n"
msgstr " m = ritorna al menù principale\n"
#: g10/pkclist.c:159
msgid " q = quit\n"
msgstr ""
# valid user replies (not including 1..4)
# [Marco, you can change 'm' and 's' to whatever letters you like]
#. a string with valid answers
#: g10/pkclist.c:164
#, fuzzy
msgid "sSmMqQ"
msgstr "sSmMqQ"
#: g10/pkclist.c:168
msgid "Your decision? "
msgstr "Cosa hai deciso? "
#: g10/pkclist.c:188
msgid "Certificates leading to an ultimately trusted key:\n"
msgstr ""
#: g10/pkclist.c:223
msgid ""
"Could not find a valid trust path to the key. Let's see whether we\n"
"can assign some missing owner trust values.\n"
"\n"
msgstr ""
"Impossibile trovare un percorso di fiducia valido fino alla chiave. Vediamo\n"
"se possiamo assegnare qualche valore di fiducia del proprietario mancante.\n"
"\n"
#: g10/pkclist.c:261
msgid ""
"No path leading to one of our keys found.\n"
"\n"
msgstr ""
#: g10/pkclist.c:263
msgid ""
"No certificates with undefined trust found.\n"
"\n"
msgstr ""
#: g10/pkclist.c:265
#, fuzzy
msgid ""
"No trust values changed.\n"
"\n"
msgstr ""
"Nessun valore di fiducia del proprietario modificato.\n"
"\n"
#: g10/pkclist.c:280
#, fuzzy, c-format
msgid "key %08lX: key has been revoked!\n"
msgstr "chiave %08lX: accettata come chiave segreta\n"
#: g10/pkclist.c:286 g10/pkclist.c:381
msgid "Use this key anyway? "
msgstr "Uso lo stesso questa chiave? "
#: g10/pkclist.c:308
#, fuzzy, c-format
msgid "%08lX: key has expired\n"
msgstr "Nota: questa chiave è scaduta!\n"
#: g10/pkclist.c:314
#, c-format
msgid "%08lX: no info to calculate a trust probability\n"
msgstr ""
#: g10/pkclist.c:332
#, fuzzy, c-format
msgid "%08lX: We do NOT trust this key\n"
msgstr "ATTENZIONE: NON ci fidiamo di questa chiave!\n"
#: g10/pkclist.c:338
#, c-format
msgid ""
"%08lX: It is not sure that this key really belongs to the owner\n"
"but it is accepted anyway\n"
msgstr ""
#: g10/pkclist.c:344
msgid "This key probably belongs to the owner\n"
msgstr ""
#: g10/pkclist.c:349
msgid "This key belongs to us\n"
msgstr ""
#: g10/pkclist.c:376
msgid ""
"It is NOT certain that the key belongs to its owner.\n"
"If you *really* know what you are doing, you may answer\n"
"the next question with yes\n"
"\n"
msgstr ""
"NON è sicuro che la chiave appartenga al suo proprietario.\n"
"Se *veramente* sai cosa stai facendo, puoi rispondere sì alla\n"
"prossima domanda.\n"
"\n"
#: g10/pkclist.c:385
msgid "WARNING: Using untrusted key!\n"
msgstr "ATTENZIONE: uso di una chiave non fidata!\n"
#: g10/pkclist.c:421
msgid "WARNING: This key has been revoked by its owner!\n"
msgstr "ATTENZIONE: questa chiave è stata revocata dal suo proprietario!\n"
#: g10/pkclist.c:422
msgid " This could mean that the signature is forgery.\n"
msgstr " Questo può significare che la firma è stata falsificata.\n"
#: g10/pkclist.c:443
msgid "Note: This key has expired!\n"
msgstr "Nota: questa chiave è scaduta!\n"
#: g10/pkclist.c:450
msgid "WARNING: This key is not certified with a trusted signature!\n"
msgstr "ATTENZIONE: questa chiave non è certificata con una firma fidata!\n"
#: g10/pkclist.c:452
msgid ""
" There is no indication that the signature belongs to the owner.\n"
msgstr ""
" Non ci sono indicazioni che la firma appartenga al proprietario.\n"
#: g10/pkclist.c:468
msgid "WARNING: We do NOT trust this key!\n"
msgstr "ATTENZIONE: NON ci fidiamo di questa chiave!\n"
#: g10/pkclist.c:469
msgid " The signature is probably a FORGERY.\n"
msgstr " La firma è probabilmente un FALSO.\n"
#: g10/pkclist.c:476
msgid ""
"WARNING: This key is not certified with sufficiently trusted signatures!\n"
msgstr ""
"ATTENZIONE: questa chiave non è certificata con firme abbastanza fidate!\n"
#: g10/pkclist.c:479
msgid " It is not certain that the signature belongs to the owner.\n"
msgstr " Non è sicuro che la firma appartenga al proprietario.\n"
#: g10/pkclist.c:524
msgid ""
"You did not specify a user ID. (you may use \"-r\")\n"
"\n"
msgstr ""
"Non hai specificato un user ID. (puoi usare \"-r\")\n"
"\n"
#: g10/pkclist.c:529
msgid "Enter the user ID: "
msgstr "Inserisci l'user ID: "
#: g10/pkclist.c:540
msgid "No such user ID.\n"
msgstr "User ID inesistente.\n"
#: g10/pkclist.c:574 g10/pkclist.c:601
#, c-format
msgid "%s: skipped: %s\n"
msgstr "%s: saltata: %s\n"
#: g10/pkclist.c:582
#, c-format
msgid "%s: error checking key: %s\n"
msgstr "%s: errore nel controllare la chiave: %s\n"
#: g10/pkclist.c:608
msgid "no valid addressees\n"
msgstr "nessun indirizzo valido\n"
#: g10/keygen.c:124
msgid "writing self signature\n"
msgstr "scrittura della autofirma\n"
#: g10/keygen.c:162
msgid "writing key binding signature\n"
msgstr "scrittura della autofirma\n"
#: g10/keygen.c:388
msgid "Please select what kind of key you want:\n"
msgstr "Per favore scegli che tipo di chiave vuoi:\n"
#: g10/keygen.c:390
#, c-format
msgid " (%d) DSA and ElGamal (default)\n"
msgstr " (%d) DSA e ElGamal (default)\n"
#: g10/keygen.c:391
#, c-format
msgid " (%d) DSA (sign only)\n"
msgstr " (%d) DSA (firma solo)\n"
#: g10/keygen.c:393
#, c-format
msgid " (%d) ElGamal (encrypt only)\n"
msgstr " (%d) ElGamal (crittografa solo)\n"
#: g10/keygen.c:394
#, c-format
msgid " (%d) ElGamal (sign and encrypt)\n"
msgstr " (%d) ElGamal (firma e crittografa)\n"
#: g10/keygen.c:396
#, c-format
msgid " (%d) ElGamal in a v3 packet\n"
msgstr " (%d) ElGamal in un pacchetto v3\n"
#: g10/keygen.c:401
msgid "Your selection? "
msgstr "Cosa scegli? "
#: g10/keygen.c:411
#, fuzzy
msgid "Do you really want to create a sign and encrypt key? "
msgstr "Vuoi davvero cancellare le chiavi selezionate? "
#: g10/keygen.c:432
msgid "Invalid selection.\n"
msgstr "Scelta non valida.\n"
#: g10/keygen.c:444
#, c-format
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 ""
"Sto per generare una nuova coppia di chiavi %s.\n"
" la dimensione minima è 768 bit\n"
" la dimensione predefinita è 1024 bit\n"
" la dimensione massima consigliata è 2048 bit\n"
#: g10/keygen.c:451
msgid "What keysize do you want? (1024) "
msgstr "Di che dimensioni vuoi la chiave? (1024) "
#: g10/keygen.c:456
msgid "DSA only allows keysizes from 512 to 1024\n"
msgstr "DSA permette solo chiavi di dimensioni da 512 a 1024\n"
#: g10/keygen.c:458
msgid "keysize too small; 768 is smallest value allowed.\n"
msgstr "la chiave è troppo corta; 768 è il minimo valore permesso.\n"
#: g10/keygen.c:461
msgid ""
"Keysizes larger than 2048 are not suggested because\n"
"computations take REALLY long!\n"
msgstr ""
"Chiavi più lunghe di 2048 non sono consigliate perchè i calcoli sono \n"
"VERAMENTE lunghi!\n"
#: g10/keygen.c:464
msgid "Are you sure that you want this keysize? "
msgstr "Sei sicuro di volere una chiave di queste dimensioni? "
#: g10/keygen.c:465
msgid ""
"Okay, but keep in mind that your monitor and keyboard radiation is also very "
"vulnerable to attacks!\n"
msgstr ""
"Va bene, ma ricordati che anche le radiazioni emesse dal tuo monitor e dalla "
"tua tastiera sono molto vulnerabili ad attacchi!\n"
#: g10/keygen.c:473
msgid "Do you really need such a large keysize? "
msgstr "Ti serve davvero una chiave così lunga? "
#: g10/keygen.c:479
#, c-format
msgid "Requested keysize is %u bits\n"
msgstr "Le dimensioni della chiave richieste sono %u bit\n"
#: g10/keygen.c:482 g10/keygen.c:486
#, c-format
msgid "rounded up to %u bits\n"
msgstr "arrotondate a %u bit\n"
#: g10/keygen.c:499
msgid ""
"Please specify how long the key should be valid.\n"
" 0 = key does not expire\n"
" <n> = key expires in n days\n"
" <n>w = key expires in n weeks\n"
" <n>m = key expires in n months\n"
" <n>y = key expires in n years\n"
msgstr ""
"Per favore specifica per quanto la chiave sarà valida.\n"
" 0 = la chiave non scadrà\n"
" <n>w = la chiave scadrà dopo n giorni\n"
" <n>m = la chiave scadrà dopo n mesi\n"
" <n>y = la chiave scadrà dopo n anni\n"
#: g10/keygen.c:514
msgid "Key is valid for? (0) "
msgstr "Chiave valida per? (0) "
#: g10/keygen.c:525
msgid "invalid value\n"
msgstr "valore non valido\n"
#: g10/keygen.c:530
msgid "Key does not expire at all\n"
msgstr "La chiave non scade\n"
#. print the date when the key expires
#: g10/keygen.c:536
#, c-format
msgid "Key expires at %s\n"
msgstr "La chiave scadrà il %s\n"
#: g10/keygen.c:542
msgid "Is this correct (y/n)? "
msgstr "È giusto (s/n)? "
#: g10/keygen.c:584
msgid ""
"\n"
"You need a User-ID to identify your key; the software constructs the user "
"id\n"
"from Real Name, Comment and Email Address in this form:\n"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
msgstr ""
"\n"
"Ti serve un User ID per identificare la tua chiave; il software costruisce "
"l'user id a partire da Nome e Cognome, Commento e Indirizzo di Email "
"indicati in questa forma:\n"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
#: g10/keygen.c:595
msgid "Real name: "
msgstr "Nome e Cognome: "
#: g10/keygen.c:599
msgid "Invalid character in name\n"
msgstr "Carattere non valido nel nome\n"
#: g10/keygen.c:601
msgid "Name may not start with a digit\n"
msgstr "Il nome non può iniziare con una cifra\n"
#: g10/keygen.c:603
msgid "Name must be at least 5 characters long\n"
msgstr "Il nome deve essere lungo almeno 5 caratteri\n"
#: g10/keygen.c:611
msgid "Email address: "
msgstr "Indirizzo di Email: "
#: g10/keygen.c:623
msgid "Not a valid email address\n"
msgstr "L'indirizzo di email non è valido\n"
#: g10/keygen.c:631
msgid "Comment: "
msgstr "Commento: "
#: g10/keygen.c:637
msgid "Invalid character in comment\n"
msgstr "Carattere non valido nel commento\n"
#: g10/keygen.c:657
#, c-format
msgid ""
"You selected this USER-ID:\n"
" \"%s\"\n"
"\n"
msgstr ""
"Hai selezionato questo User Id:\n"
" \"%s\"\n"
"\n"
#: g10/keygen.c:660
msgid "NnCcEeOoQq"
msgstr "NnCcEeOoQq"
#: g10/keygen.c:670
msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
msgstr "Modifica (N)ome, (C)ommento, (E)mail oppure (O)kay/(Q)uit? "
#: g10/keygen.c:722
msgid ""
"You need a Passphrase to protect your secret key.\n"
"\n"
msgstr ""
"Ti serve una passphrase per proteggere la tua chiave segreta.\n"
"\n"
#: g10/keyedit.c:389 g10/keygen.c:730
msgid "passphrase not correctly repeated; try again.\n"
msgstr "passphrase non ripetuta correttamente; riprova.\n"
#: g10/keygen.c:736
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 ""
"Non hai specificato una passphrase - questa è probabilmente una *cattiva*\n"
"idea! Lo farò io comunque. Puoi cambiarla in ogni momento, usando questo\n"
"programma con l'opzione \"--edit-key\".\n"
"\n"
#: g10/keygen.c:757
msgid ""
"We need to generate a lot of random bytes. It is a good idea to perform\n"
"some other action (work in another window, move the mouse, utilize the\n"
"network and the disks) during the prime generation; this gives the random\n"
"number generator a better chance to gain enough entropy.\n"
msgstr ""
"Dobbiamo generare un mucchio di byte casuali. È una buona idea eseguire\n"
"qualche altra azione (lavorare in un'altra finestra, muovere il mouse, "
"usare\n"
"la rete e i dischi) durante la generazione dei numeri primi; questo dà al\n"
"generatore di numeri casuali la possibilità di raccogliere abbastanza\n"
"entropia.\n"
#: g10/keygen.c:827
msgid "Key generation can only be used in interactive mode\n"
msgstr "Una chiave può essere generata solo in modo interattivo\n"
#: g10/keygen.c:835
msgid "DSA keypair will have 1024 bits.\n"
msgstr "La coppia DSA avrà 1024 bit.\n"
#: g10/keygen.c:841
msgid "Key generation cancelled.\n"
msgstr "Generazione della chiave annullata.\n"
#: g10/keygen.c:851
#, c-format
msgid "writing public certificate to `%s'\n"
msgstr "scrittura del certificato pubblico in `%s'\n"
#: g10/keygen.c:852
#, c-format
msgid "writing secret certificate to `%s'\n"
msgstr "scrittura del certificato privato in `%s'\n"
#: g10/keygen.c:929
msgid "public and secret key created and signed.\n"
msgstr "chiavi pubbliche e segrete create e firmate.\n"
#: g10/keygen.c:931
+#, fuzzy
msgid ""
"Note that this key cannot be used for encryption. You may want to use\n"
-"the command \"--add-key\" to generate a secondary key for this purpose.\n"
+"the command \"--edit-key\" to generate a secondary key for this purpose.\n"
msgstr ""
"Nota che questa chiave non può essere usata per la crittografia. Forse\n"
"vorrai usare il comando \"--add-key\" per generare una chiave secondaria\n"
"per questo scopo.\n"
-#: g10/keygen.c:945 g10/keygen.c:1030
+#: g10/keygen.c:945 g10/keygen.c:1044
#, c-format
msgid "Key generation failed: %s\n"
msgstr "Generazione della chiave fallita: %s\n"
-#: g10/keygen.c:1008
+#: g10/keygen.c:989 g10/sig-check.c:172 g10/sign.c:52
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu second in future (time warp or clock problem)\n"
+msgstr ""
+"chiave pubblica creata nel futuro (salto nel tempo o problema con\n"
+"l'orologio)\n"
+
+#: g10/keygen.c:991 g10/sig-check.c:174 g10/sign.c:54
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu seconds in future (time warp or clock problem)\n"
+msgstr ""
+"chiave pubblica creata nel futuro (salto nel tempo o problema con\n"
+"l'orologio)\n"
+
+#: g10/keygen.c:1022
msgid "Really create? "
msgstr "Crea davvero? "
#: g10/encode.c:88 g10/openfile.c:81 g10/openfile.c:158 g10/tdbio.c:459
#: g10/tdbio.c:510
#, c-format
msgid "%s: can't open: %s\n"
msgstr "%s: impossibile aprire: %s\n"
#: g10/encode.c:107
#, c-format
msgid "error creating passphrase: %s\n"
msgstr "errore nella creazione della passhprase: %s\n"
#: g10/encode.c:155 g10/encode.c:269
#, fuzzy, c-format
msgid "%s: WARNING: empty file\n"
msgstr "%s: attenzione: file vuoto\n"
#: g10/encode.c:222
#, c-format
msgid "reading from `%s'\n"
msgstr "lettura da `%s'\n"
#: g10/encode.c:397
#, fuzzy, c-format
msgid "%s/%s encrypted for: %s\n"
msgstr "%s crittografato per: %s\n"
-#: g10/export.c:114
+#: g10/export.c:147
#, fuzzy, c-format
msgid "%s: user not found: %s\n"
msgstr "%s: utente non trovato\n"
-#: g10/export.c:123
+#: g10/export.c:156
#, c-format
msgid "certificate read problem: %s\n"
msgstr ""
-#: g10/export.c:132
+#: g10/export.c:165
#, fuzzy, c-format
msgid "key %08lX: not a rfc2440 key - skipped\n"
msgstr "chiave %08lX: chiave segreta senza chiave pubblica - saltata\n"
-#: g10/export.c:174
+#: g10/export.c:203
#, fuzzy
msgid "WARNING: nothing exported\n"
msgstr "ATTENZIONE: uso di una chiave non fidata!\n"
#: g10/getkey.c:164
msgid "too many entries in pk cache - disabled\n"
msgstr ""
#: g10/getkey.c:294
msgid "too many entries in unk cache - disabled\n"
msgstr ""
#: g10/getkey.c:1038
#, c-format
msgid "using secondary key %08lX instead of primary key %08lX\n"
msgstr "uso la chiave secondaria %08lX invece della chiave primaria %08lX\n"
-#: g10/import.c:129 g10/trustdb.c:1180
+#: g10/import.c:117 g10/trustdb.c:1180
#, c-format
msgid "can't open file: %s\n"
msgstr "impossibile aprire il file: %s\n"
-#: g10/import.c:148
+#: g10/import.c:165
#, c-format
msgid "skipping block of type %d\n"
msgstr "salto un blocco di tipo %d\n"
-#: g10/import.c:155 g10/trustdb.c:1474 g10/trustdb.c:1543
+#: g10/import.c:172 g10/trustdb.c:1474 g10/trustdb.c:1543
#, c-format
msgid "%lu keys so far processed\n"
msgstr "Per ora sono state esaminate %lu chiavi\n"
-#: g10/import.c:160 g10/trustdb.c:1256
+#: g10/import.c:177 g10/trustdb.c:1256
#, c-format
msgid "read error: %s\n"
msgstr "errore di lettura: %s\n"
-#: g10/import.c:162
+#: g10/import.c:179
#, c-format
msgid "Total number processed: %lu\n"
msgstr "Numero totale esaminato: %lu\n"
-#: g10/import.c:164
+#: g10/import.c:181
#, c-format
msgid " w/o user IDs: %lu\n"
msgstr "senza user ID: %lu\n"
-#: g10/import.c:166
+#: g10/import.c:183
#, c-format
msgid " imported: %lu"
msgstr "importate: %lu"
-#: g10/import.c:172
+#: g10/import.c:189
#, c-format
msgid " unchanged: %lu\n"
msgstr "non modificate: %lu\n"
-#: g10/import.c:174
+#: g10/import.c:191
#, c-format
msgid " new user IDs: %lu\n"
msgstr "nuovi user ID: %lu\n"
-#: g10/import.c:176
+#: g10/import.c:193
#, c-format
msgid " new subkeys: %lu\n"
msgstr "nuove subchiavi: %lu\n"
-#: g10/import.c:178
+#: g10/import.c:195
#, c-format
msgid " new signatures: %lu\n"
msgstr "nuove firme: %lu\n"
-#: g10/import.c:180
+#: g10/import.c:197
#, c-format
msgid " new key revocations: %lu\n"
msgstr "nuove revoche di chiavi: %lu\n"
-#: g10/import.c:182
+#: g10/import.c:199
#, c-format
msgid " secret keys read: %lu\n"
msgstr "chiavi segrete lette: %lu\n"
-#: g10/import.c:184
+#: g10/import.c:201
#, c-format
msgid " secret keys imported: %lu\n"
msgstr "chiavi segrete importate %lu\n"
-#: g10/import.c:186
+#: g10/import.c:203
#, c-format
msgid " secret keys unchanged: %lu\n"
msgstr "chiavi segrete non cambiate %lu\n"
-#: g10/import.c:328 g10/import.c:520
+#: g10/import.c:343 g10/import.c:535
#, c-format
msgid "key %08lX: no user id\n"
msgstr "chiave %08lX: nessun user id\n"
-#: g10/import.c:339
+#: g10/import.c:354
#, c-format
msgid "key %08lX: no valid user ids\n"
msgstr "chiave %08lX: nessun user id valido\n"
-#: g10/import.c:341
+#: g10/import.c:356
msgid "this may be caused by a missing self-signature\n"
msgstr "questo può essere causato da una autofirma mancante\n"
-#: g10/import.c:352 g10/import.c:588
+#: g10/import.c:367 g10/import.c:603
#, c-format
msgid "key %08lX: public key not found: %s\n"
msgstr "chiave %08lX: chiave pubblica non trovata: %s\n"
-#: g10/import.c:358
+#: g10/import.c:373
msgid "no default public keyring\n"
msgstr "nessun portachiavi pubblico predefinito\n"
-#: g10/import.c:362 g10/openfile.c:105 g10/sign.c:205 g10/sign.c:592
+#: g10/import.c:377 g10/openfile.c:105 g10/sign.c:215 g10/sign.c:601
#, c-format
msgid "writing to `%s'\n"
msgstr "scrittura in `%s'\n"
-#: g10/import.c:366 g10/import.c:426 g10/import.c:642
+#: g10/import.c:381 g10/import.c:441 g10/import.c:657
#, c-format
msgid "can't lock public keyring: %s\n"
msgstr "impossibile bloccare il portachiavi pubblico: %s\n"
-#: g10/import.c:369
+#: g10/import.c:384
#, c-format
msgid "can't write to keyring: %s\n"
msgstr "impossibile scrivere sul portachiavi pubblico: %s\n"
-#: g10/import.c:373
+#: g10/import.c:388
#, c-format
msgid "key %08lX: public key imported\n"
msgstr "chiave %08lX: chiave pubblica importata\n"
-#: g10/import.c:386
+#: g10/import.c:401
#, c-format
msgid "key %08lX: doesn't match our copy\n"
msgstr "chiave %08lX: non corrisponde alla nostra copia\n"
-#: g10/import.c:399 g10/import.c:597
+#: g10/import.c:414 g10/import.c:612
#, c-format
msgid "key %08lX: can't locate original keyblock: %s\n"
msgstr "chiave %08lX: impossibile individuare il keyblock originale: %s\n"
-#: g10/import.c:406 g10/import.c:604
+#: g10/import.c:421 g10/import.c:619
#, c-format
msgid "key %08lX: can't read original keyblock: %s\n"
msgstr "chiave %08lX: impossibile leggere il keyblock originale: %s\n"
-#: g10/import.c:423 g10/import.c:535 g10/import.c:639
+#: g10/import.c:438 g10/import.c:550 g10/import.c:654
msgid "writing keyblock\n"
msgstr "scrittura del keyblock\n"
-#: g10/import.c:429 g10/import.c:645
+#: g10/import.c:444 g10/import.c:660
#, c-format
msgid "can't write keyblock: %s\n"
msgstr "impossibile aprire il keyblock: %s\n"
-#: g10/import.c:434
+#: g10/import.c:449
#, c-format
msgid "key %08lX: 1 new user-id\n"
msgstr "chiave %08lX: un nuovo user id\n"
-#: g10/import.c:437
+#: g10/import.c:452
#, c-format
msgid "key %08lX: %d new user-ids\n"
msgstr "chiave %08lX: %d nuovi user id\n"
-#: g10/import.c:440
+#: g10/import.c:455
#, c-format
msgid "key %08lX: 1 new signature\n"
msgstr "chiave %08lX: una nuova firma\n"
-#: g10/import.c:443
+#: g10/import.c:458
#, c-format
msgid "key %08lX: %d new signatures\n"
msgstr "chiave %08lX: %d nuove firme\n"
-#: g10/import.c:446
+#: g10/import.c:461
#, c-format
msgid "key %08lX: 1 new subkey\n"
msgstr "chiave %08lX: una nuova subchiave\n"
-#: g10/import.c:449
+#: g10/import.c:464
#, c-format
msgid "key %08lX: %d new subkeys\n"
msgstr "chiave %08lX: %d nuove subchiavi\n"
-#: g10/import.c:459
+#: g10/import.c:474
#, c-format
msgid "key %08lX: not changed\n"
msgstr "chiave %08lX: non cambiata\n"
-#: g10/import.c:538
+#: g10/import.c:553
#, c-format
msgid "can't lock secret keyring: %s\n"
msgstr "impossibile bloccare il portachiavi segreto: %s\n"
-#: g10/import.c:541
+#: g10/import.c:556
#, c-format
msgid "can't write keyring: %s\n"
msgstr "impossibile scrivere il portachiavi: %s\n"
#. we are ready
-#: g10/import.c:544
+#: g10/import.c:559
#, c-format
msgid "key %08lX: secret key imported\n"
msgstr "chiave %08lX: chiave segreta importata\n"
#. we can't merge secret keys
-#: g10/import.c:548
+#: g10/import.c:563
#, c-format
msgid "key %08lX: already in secret keyring\n"
msgstr "chiave %08lX: già nel portachiavi segreto\n"
-#: g10/import.c:553
+#: g10/import.c:568
#, c-format
msgid "key %08lX: secret key not found: %s\n"
msgstr "chiave %08lX: chiave segreta non trovata: %s\n"
-#: g10/import.c:582
+#: g10/import.c:597
#, c-format
msgid "key %08lX: no public key - can't apply revocation certificate\n"
msgstr ""
"chiave %08lX: manca la chiave pubblica - impossibile applicare il\n"
"certificato di revoca\n"
-#: g10/import.c:615
+#: g10/import.c:630
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - rejected\n"
msgstr "chiave %08lX: certificato di revoca non valido: %s - rifiutato\n"
-#: g10/import.c:649
+#: g10/import.c:664
#, c-format
msgid "key %08lX: revocation certificate imported\n"
msgstr "chiave %08lX: certificato di revoca importato\n"
-#: g10/import.c:680
+#: g10/import.c:698
#, c-format
msgid "key %08lX: no user-id for signature\n"
msgstr "chiave %08lX: nessun user id per la firma\n"
-#: g10/import.c:687
+#: g10/import.c:705 g10/import.c:729
#, c-format
msgid "key %08lX: unsupported public key algorithm\n"
msgstr "chiave %08lX: algoritmo a chiave pubblica non gestito\n"
-#: g10/import.c:688
+#: g10/import.c:706
#, c-format
msgid "key %08lX: invalid self-signature\n"
msgstr "chiave %08lX: autofirma non valida\n"
-#: g10/import.c:717
+#: g10/import.c:722
+#, fuzzy, c-format
+msgid "key %08lX: no subkey for key binding\n"
+msgstr "chiave %08lX.%lu: Legame con la subchiave corretto\n"
+
+#: g10/import.c:730
+#, fuzzy, c-format
+msgid "key %08lX: invalid subkey binding\n"
+msgstr "chiave %08lX.%lu: Legame con la subchiave non valido: %s\n"
+
+#: g10/import.c:761
#, c-format
msgid "key %08lX: skipped userid '"
msgstr "chiave %08lX: saltato l'user id '"
-#: g10/import.c:740
+#: g10/import.c:781
+#, fuzzy, c-format
+msgid "key %08lX: skipped subkey\n"
+msgstr "chiave %08lX: una nuova subchiave\n"
+
+#: g10/import.c:800
#, c-format
msgid "key %08lX: revocation certificate at wrong place - skipped\n"
msgstr "chiave %08lX: certificato di revoca nel posto sbagliato - saltato\n"
-#: g10/import.c:748
+#: g10/import.c:808
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - skipped\n"
msgstr "chiave %08lX: certificato di revoca non valido: %s - saltato\n"
-#: g10/import.c:807
+#: g10/import.c:867
#, c-format
msgid "key %08lX: revocation certificate added\n"
msgstr "chiave %08lX: certificato di revoca aggiunto\n"
-#: g10/import.c:921 g10/import.c:976
+#: g10/import.c:981 g10/import.c:1036
#, c-format
msgid "key %08lX: our copy has no self-signature\n"
msgstr "chiave %08lX: la nostra copia non ha autofirma\n"
#: g10/keyedit.c:81
#, c-format
msgid "%s: user not found\n"
msgstr "%s: utente non trovato\n"
#: g10/keyedit.c:164
msgid "[self-signature]"
msgstr "[autofirma]"
#: g10/keyedit.c:182
msgid "1 bad signature\n"
msgstr "una firma non corretta\n"
#: g10/keyedit.c:184
#, c-format
msgid "%d bad signatures\n"
msgstr "%d firme non corrette\n"
#: g10/keyedit.c:186
msgid "1 signature not checked due to a missing key\n"
msgstr "1 firma non controllata per mancanza della chiave\n"
#: g10/keyedit.c:188
#, c-format
msgid "%d signatures not checked due to missing keys\n"
msgstr "%d firme non controllate per mancanza delle chiavi\n"
#: g10/keyedit.c:190
msgid "1 signature not checked due to an error\n"
msgstr "1 firma non controllata a causa di un errore\n"
#: g10/keyedit.c:192
#, c-format
msgid "%d signatures not checked due to errors\n"
msgstr "%d firme non controllate a causa di errori\n"
#: g10/keyedit.c:194
msgid "1 user id without valid self-signature detected\n"
msgstr "Trovato 1 user id senza autofirma valida\n"
#: g10/keyedit.c:196
#, c-format
msgid "%d user ids without valid self-signatures detected\n"
msgstr "Trovati %d user id senza autofirme valide\n"
#: g10/keyedit.c:258
#, c-format
msgid "Already signed by key %08lX\n"
msgstr "Già firmato dalla chiave %08lX\n"
#: g10/keyedit.c:266
#, c-format
msgid "Nothing to sign with key %08lX\n"
msgstr "Niente da firmare con la chiave %08lX\n"
#: g10/keyedit.c:275
msgid ""
"Are you really sure that you want to sign this key\n"
"with your key: \""
msgstr ""
"Sei davvero sicuro di volere firmare questa chiave\n"
"con la tua chiave: \""
#: g10/keyedit.c:282
msgid "Really sign? "
msgstr "Firmo davvero? "
-#: g10/keyedit.c:303 g10/sign.c:65
+#: g10/keyedit.c:303 g10/sign.c:75
#, c-format
msgid "signing failed: %s\n"
msgstr "firma fallita: %s\n"
#: g10/keyedit.c:356
msgid "This key is not protected.\n"
msgstr "Questa chiave non è protetta.\n"
#: g10/keyedit.c:359
msgid "Key is protected.\n"
msgstr "La chiave è protetta.\n"
#: g10/keyedit.c:376
#, c-format
msgid "Can't edit this key: %s\n"
msgstr "Impossibile modificare questa chiave: %s\n"
#: g10/keyedit.c:381
msgid ""
"Enter the new passphrase for this secret key.\n"
"\n"
msgstr ""
"Inserisci la nuova passphrase per questa chiave segreta.\n"
"\n"
#: g10/keyedit.c:393
msgid ""
"You don't want a passphrase - this is probably a *bad* idea!\n"
"\n"
msgstr ""
"Non vuoi una passphrase - questa è probabilmente una *cattiva* idea!\n"
"\n"
#: g10/keyedit.c:396
msgid "Do you really want to do this? "
msgstr "Vuoi veramente farlo?"
#: g10/keyedit.c:455
msgid "moving a key signature to the correct place\n"
msgstr ""
#: g10/keyedit.c:490
msgid "quit"
msgstr "quit"
#: g10/keyedit.c:490
msgid "quit this menu"
msgstr "abbandona questo menù"
#: g10/keyedit.c:491
msgid "q"
msgstr "q"
#: g10/keyedit.c:492
msgid "save"
msgstr "save"
#: g10/keyedit.c:492
msgid "save and quit"
msgstr "salva ed esci"
#: g10/keyedit.c:493
msgid "help"
msgstr "help"
#: g10/keyedit.c:493
msgid "show this help"
msgstr "mostra questo aiuto"
#: g10/keyedit.c:495
msgid "fpr"
msgstr "fpr"
#: g10/keyedit.c:495
msgid "show fingerprint"
msgstr "mostra le impronte digitali"
#: g10/keyedit.c:496
msgid "list"
msgstr "list"
#: g10/keyedit.c:496
msgid "list key and user ids"
msgstr "elenca le chiavi e gli user id"
#: g10/keyedit.c:497
msgid "l"
msgstr "l"
#: g10/keyedit.c:498
msgid "uid"
msgstr "uid"
#: g10/keyedit.c:498
msgid "select user id N"
msgstr "scegli l'user id N"
#: g10/keyedit.c:499
msgid "key"
msgstr "key"
#: g10/keyedit.c:499
msgid "select secondary key N"
msgstr "scegli la chiave secondaria N"
#: g10/keyedit.c:500
msgid "check"
msgstr "check"
#: g10/keyedit.c:500
msgid "list signatures"
msgstr "elenca le firme"
#: g10/keyedit.c:501
msgid "c"
msgstr "c"
#: g10/keyedit.c:502
msgid "sign"
msgstr "sign"
#: g10/keyedit.c:502
msgid "sign the key"
msgstr "firma la chiave"
#: g10/keyedit.c:503
msgid "s"
msgstr "s"
#: g10/keyedit.c:504
msgid "debug"
msgstr "debug"
#: g10/keyedit.c:505
msgid "adduid"
msgstr "adduid"
#: g10/keyedit.c:505
msgid "add a user id"
msgstr "aggiungi un user id"
#: g10/keyedit.c:506
msgid "deluid"
msgstr "deluid"
#: g10/keyedit.c:506
msgid "delete user id"
msgstr "cancella un user id"
#: g10/keyedit.c:507
msgid "addkey"
msgstr "addkey"
#: g10/keyedit.c:507
msgid "add a secondary key"
msgstr "aggiungi una chiave secondaria"
#: g10/keyedit.c:508
msgid "delkey"
msgstr "delkey"
#: g10/keyedit.c:508
msgid "delete a secondary key"
msgstr "cancella una chiave secondaria"
#: g10/keyedit.c:509
msgid "expire"
msgstr "expire"
#: g10/keyedit.c:509
msgid "change the expire date"
msgstr "cambia la data di scadenza"
#: g10/keyedit.c:510
msgid "toggle"
msgstr "toggle"
#: g10/keyedit.c:510
msgid "toggle between secret and public key listing"
msgstr "cambia tra visualizzare la chiave segreta e la chiave pubblica"
#: g10/keyedit.c:512
msgid "t"
msgstr "t"
#: g10/keyedit.c:513
msgid "pref"
msgstr "pref"
#: g10/keyedit.c:513
msgid "list preferences"
msgstr "elenca le impostazioni"
#: g10/keyedit.c:514
msgid "passwd"
msgstr "passwd"
#: g10/keyedit.c:514
msgid "change the passphrase"
msgstr "cambia la passphrase"
#: g10/keyedit.c:515
msgid "trust"
msgstr "trust"
#: g10/keyedit.c:515
msgid "change the ownertrust"
msgstr "cambia il valore di fiducia"
#: g10/keyedit.c:534
msgid "can't do that in batchmode\n"
msgstr "impossibile fare questo in batch mode\n"
#. check that they match
#. FIXME: check that they both match
#: g10/keyedit.c:561
msgid "Secret key is available.\n"
msgstr "È disponibile una chiave segreta.\n"
#: g10/keyedit.c:590
msgid "Command> "
msgstr "Comando> "
#: g10/keyedit.c:617
msgid "Need the secret key to do this.\n"
msgstr "Per fare questo serve la chiave segreta.\n"
#: g10/keyedit.c:639
msgid "Save changes? "
msgstr "Salvo i cambiamenti? "
#: g10/keyedit.c:642
msgid "Quit without saving? "
msgstr "Esco senza salvare? "
#: g10/keyedit.c:652
#, c-format
msgid "update failed: %s\n"
msgstr "aggiornamento fallito: %s\n"
#: g10/keyedit.c:659
#, c-format
msgid "update secret failed: %s\n"
msgstr "aggiornamento della chiave segreta fallito: %s\n"
#: g10/keyedit.c:666
msgid "Key not changed so no update needed.\n"
msgstr "La chiave non è cambiata quindi non sono necessari aggiornamenti.\n"
#: g10/keyedit.c:669 g10/keyedit.c:727
#, fuzzy, c-format
msgid "update of trustdb failed: %s\n"
msgstr "aggiornamento del trustdb fallito: %s\n"
#: g10/keyedit.c:701
msgid "Really sign all user ids? "
msgstr "Firmo davvero tutti gli user id? "
#: g10/keyedit.c:702
msgid "Hint: Select the user ids to sign\n"
msgstr "Suggerimento: seleziona gli user id da firmare\n"
#: g10/keyedit.c:738
msgid "You must select at least one user id.\n"
msgstr "Devi selezionare almeno un user id.\n"
#: g10/keyedit.c:740
msgid "You can't delete the last user id!\n"
msgstr "Non puoi cancellare l'ultimo user id!\n"
#: g10/keyedit.c:743
msgid "Really remove all selected user ids? "
msgstr "Tolgo davvero tutti gli user id selezionati? "
#: g10/keyedit.c:744
msgid "Really remove this user id? "
msgstr "Tolgo davvero questo user id? "
#: g10/keyedit.c:767
msgid "You must select at least one key.\n"
msgstr "Devi selezionare almeno una chiave.\n"
#: g10/keyedit.c:771
msgid "Do you really want to delete the selected keys? "
msgstr "Vuoi davvero cancellare le chiavi selezionate? "
#: g10/keyedit.c:772
msgid "Do you really want to delete this key? "
msgstr "Vuoi davvero cancellare questa chiave? "
#: g10/keyedit.c:819
msgid "Invalid command (try \"help\")\n"
msgstr "Comando non valido (prova \"help\")\n"
#: g10/keyedit.c:1197
msgid "Please remove selections from the secret keys.\n"
msgstr "Togli le selezioni dalle chiavi segrete.\n"
#: g10/keyedit.c:1203
msgid "Please select at most one secondary key.\n"
msgstr "Seleziona al massimo una chiave secondaria.\n"
#: g10/keyedit.c:1207
msgid "Changing exiration time for a secondary key.\n"
msgstr "Modifico il tempo di scadenza per una chiave secondaria.\n"
#: g10/keyedit.c:1209
msgid "Changing exiration time for the primary key.\n"
msgstr "Modifico il tempo di scadenza per la chiave primaria.\n"
#: g10/keyedit.c:1250
msgid "You can't change the expiration date of a v3 key\n"
msgstr ""
#: g10/keyedit.c:1266
msgid "No corresponding signature in secret ring\n"
msgstr "Manca la firma corrispondente nel portachiavi segreto\n"
#: g10/keyedit.c:1326
#, c-format
msgid "No user id with index %d\n"
msgstr "Nessun user id con l'indice %d\n"
#: g10/keyedit.c:1371
#, c-format
msgid "No secondary key with index %d\n"
msgstr "Nessuna chiave secondaria con l'indice %d\n"
-#: g10/mainproc.c:198
+#: g10/mainproc.c:199
#, fuzzy
msgid "public key encrypted data: good DEK\n"
msgstr "Decifratura della chiave pubblica fallita: %s\n"
-#: g10/mainproc.c:201
+#: g10/mainproc.c:202
#, c-format
msgid "public key decryption failed: %s\n"
msgstr "Decifratura della chiave pubblica fallita: %s\n"
-#: g10/mainproc.c:228
+#: g10/mainproc.c:229
#, fuzzy
msgid "decryption okay\n"
msgstr "decifratura fallita: %s\n"
-#: g10/mainproc.c:231
+#: g10/mainproc.c:232
#, c-format
msgid "decryption failed: %s\n"
msgstr "decifratura fallita: %s\n"
-#: g10/mainproc.c:248
+#: g10/mainproc.c:249
#, fuzzy
msgid "NOTE: sender requested \"for-your-eyes-only\"\n"
msgstr "nota: il mittente ha richiesto \"solo-per-i-tuoi-occhi\"\n"
-#: g10/mainproc.c:250
+#: g10/mainproc.c:251
#, c-format
msgid "original file name='%.*s'\n"
msgstr ""
-#: g10/mainproc.c:833
+#: g10/mainproc.c:834
msgid "signature verification suppressed\n"
msgstr ""
-#: g10/mainproc.c:839
+#: g10/mainproc.c:840
#, c-format
msgid "Signature made %.*s using %s key ID %08lX\n"
msgstr "Firma fatta %.*s usando %s key ID %08lX\n"
-#: g10/mainproc.c:847
+#: g10/mainproc.c:852
msgid "BAD signature from \""
msgstr "Firma NON corretta da \""
-#: g10/mainproc.c:848
+#: g10/mainproc.c:853
msgid "Good signature from \""
msgstr "Buona firma da \""
-#: g10/mainproc.c:879
+#: g10/mainproc.c:884
#, c-format
msgid "Can't check signature: %s\n"
msgstr "Impossibile controllare la firma: %s\n"
-#: g10/mainproc.c:952
+#: g10/mainproc.c:957
msgid "old style (PGP 2.x) signature\n"
msgstr ""
-#: g10/mainproc.c:957
+#: g10/mainproc.c:962
msgid "invalid root packet detected in proc_tree()\n"
msgstr ""
#: g10/misc.c:90
#, fuzzy, c-format
msgid "can't disable core dumps: %s\n"
msgstr "impossibile aprire `%s': %s\n"
#: g10/misc.c:93
msgid "WARNING: program may create a core file!\n"
msgstr ""
#: g10/misc.c:200
msgid "Experimental algorithms should not be used!\n"
msgstr ""
#: g10/misc.c:214
msgid ""
"RSA keys are deprecated; please consider creating a new key and use this key "
"in the future\n"
msgstr ""
"L'uso di chiavi RSA è deprecato; per favore in futuro considera di creare e\n"
"usare una nuova chiave.\n"
#: g10/misc.c:235
msgid "this cipher algorithm is depreciated; please use a more standard one!\n"
msgstr ""
#: g10/parse-packet.c:113
#, fuzzy, c-format
msgid "can't handle public key algorithm %d\n"
msgstr "impossibile bloccare il portachiavi pubblico: %s\n"
#: g10/parse-packet.c:892
#, c-format
msgid "subpacket of type %d has critical bit set\n"
msgstr ""
#: g10/passphrase.c:141
msgid ""
"\n"
"You need a passphrase to unlock the secret key for\n"
"user: \""
msgstr ""
"\n"
"Ti serve una passphrase per sbloccare la chiave segreta\n"
"dell'utente: \""
#: g10/passphrase.c:150
#, fuzzy, c-format
msgid "%u-bit %s key, ID %08lX, created %s"
msgstr "(chiave %2$s di %1$u-bit, ID %3$08lX, creata il %4$s)\n"
#: g10/passphrase.c:155
#, c-format
msgid " (main key ID %08lX)"
msgstr ""
#: g10/passphrase.c:183
#, fuzzy
msgid "Enter passphrase: "
msgstr "Inserisci la passphrase: "
#: g10/passphrase.c:187
#, fuzzy
msgid "Repeat passphrase: "
msgstr "Ripeti la passphrase: "
#: g10/plaintext.c:63
msgid "data not saved; use option \"--output\" to save it\n"
msgstr ""
"i dati non sono stati salvati; usa l'opzione \"--output\" per salvarli\n"
-#: g10/plaintext.c:166
+#: g10/plaintext.c:208
msgid "Please enter name of data file: "
msgstr "Inserisci il nome del file di dati: "
-#: g10/plaintext.c:187
+#: g10/plaintext.c:229
msgid "reading stdin ...\n"
msgstr ""
-#: g10/plaintext.c:250
+#: g10/plaintext.c:292
#, c-format
msgid "can't open signed data `%s'\n"
msgstr "impossibile aprire i dati firmati `%s'\n"
#: g10/pubkey-enc.c:78
#, c-format
msgid "anonymous receiver; trying secret key %08lX ...\n"
msgstr "ricevente anonimo; provo la chiave segreta %08lX ...\n"
#: g10/pubkey-enc.c:84
#, fuzzy
msgid "okay, we are the anonymous recipient.\n"
msgstr "Bene, siamo il ricevente anonimo.\n"
#: g10/pubkey-enc.c:136
#, fuzzy
msgid "old encoding of the DEK is not supported\n"
msgstr "l'algoritmo di protezione %d non è gestito\n"
#: g10/pubkey-enc.c:183
#, fuzzy, c-format
msgid "NOTE: cipher algorithm %d not found in preferences\n"
msgstr "nota: algoritmo di cifratura %d non trovato nelle impostazioni\n"
#: g10/seckey-cert.c:56
#, c-format
msgid "protection algorithm %d is not supported\n"
msgstr "l'algoritmo di protezione %d non è gestito\n"
#: g10/seckey-cert.c:176
msgid "Invalid passphrase; please try again ...\n"
msgstr "Passphrase non valida; riprova...\n"
#: g10/seckey-cert.c:223
#, fuzzy
msgid "WARNING: Weak key detected - please change passphrase again.\n"
msgstr ""
"Attenzione: individuata una chiave debole - per favore cambia ancora la\n"
"passphrase.\n"
#: g10/sig-check.c:155
msgid ""
"this is a PGP generated ElGamal key which is NOT secure for signatures!\n"
msgstr ""
"questa è una chiave ElGamal generata da PGP che NON è sicura per le firme!\n"
-#: g10/sig-check.c:166
+#: g10/sig-check.c:163
#, fuzzy, c-format
-msgid "public key created %lu %s in future (time warp or clock problem)\n"
-msgstr ""
-"chiave pubblica creata nel futuro (salto nel tempo o problema con\n"
-"l'orologio)\n"
-
-#: g10/sig-check.c:168
-msgid "second"
-msgstr ""
+msgid "public key is %lu second newer than the signature\n"
+msgstr "chiave %08lX: user id senza firma\n"
-#: g10/sig-check.c:168
-msgid "seconds"
-msgstr ""
+#: g10/sig-check.c:164
+#, fuzzy, c-format
+msgid "public key is %lu seconds newer than the signature\n"
+msgstr "chiave %08lX: user id senza firma\n"
-#: g10/sig-check.c:173
+#: g10/sig-check.c:180
#, fuzzy, c-format
msgid "NOTE: signature key expired %s\n"
msgstr "attenzione: firma della chiave scaduta il %s\n"
-#: g10/sig-check.c:230
+#: g10/sig-check.c:237
msgid "assuming bad signature due to an unknown critical bit\n"
msgstr ""
-#: g10/sign.c:69
+#: g10/sign.c:79
#, fuzzy, c-format
msgid "%s signature from: %s\n"
msgstr "Firma NON corretta da \""
-#: g10/sign.c:200 g10/sign.c:587
+#: g10/sign.c:210 g10/sign.c:596
#, fuzzy, c-format
msgid "can't create %s: %s\n"
msgstr "%s: impossibile creare: %s\n"
-#: g10/sign.c:296
+#: g10/sign.c:306
#, fuzzy
msgid "signing:"
msgstr "sign"
-#: g10/sign.c:336
+#: g10/sign.c:346
#, fuzzy, c-format
msgid "WARNING: `%s' is an empty file\n"
msgstr "%s: attenzione: file vuoto\n"
+#: g10/textfilter.c:199
+#, c-format
+msgid "can't handle text lines longer than %d characters\n"
+msgstr ""
+
#: g10/tdbio.c:116 g10/tdbio.c:1418
#, fuzzy, c-format
msgid "trustdb rec %lu: lseek failed: %s\n"
msgstr "aggiornamento della chiave segreta fallito: %s\n"
#: g10/tdbio.c:122 g10/tdbio.c:1425
#, c-format
msgid "trustdb rec %lu: write failed (n=%d): %s\n"
msgstr ""
#: g10/tdbio.c:232
msgid "trustdb transaction too large\n"
msgstr ""
#: g10/tdbio.c:416
#, fuzzy, c-format
msgid "%s: can't access: %s\n"
msgstr "%s: impossibile creare: %s\n"
#: g10/ringedit.c:273 g10/tdbio.c:436
#, fuzzy, c-format
msgid "%s: can't create directory: %s\n"
msgstr "%s: impossibile creare: %s\n"
#: g10/ringedit.c:279 g10/tdbio.c:439
#, fuzzy, c-format
msgid "%s: directory created\n"
msgstr "%s: impossibile creare: %s\n"
#: g10/tdbio.c:443
#, c-format
msgid "%s: directory does not exist!\n"
msgstr ""
-#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1275 g10/tdbio.c:449
+#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1292 g10/tdbio.c:449
#, c-format
msgid "%s: can't create: %s\n"
msgstr "%s: impossibile creare: %s\n"
#: g10/tdbio.c:473
#, c-format
msgid "%s: failed to create version record: %s"
msgstr ""
#: g10/tdbio.c:477
#, fuzzy, c-format
msgid "%s: invalid trustdb created\n"
msgstr "%s: impossibile creare: %s\n"
#: g10/tdbio.c:479
#, fuzzy, c-format
msgid "%s: trustdb created\n"
msgstr "%s: impossibile creare: %s\n"
#: g10/tdbio.c:512
#, fuzzy, c-format
msgid "%s: invalid trustdb\n"
msgstr "aggiornamento del trustdb fallito: %s\n"
#: g10/tdbio.c:545
#, fuzzy, c-format
msgid "%s: failed to create hashtable: %s\n"
msgstr "%s: impossibile creare: %s\n"
#: g10/tdbio.c:553
#, fuzzy, c-format
msgid "%s: error updating version record: %s\n"
msgstr "%s: errore nel controllare la chiave: %s\n"
#: g10/tdbio.c:569 g10/tdbio.c:608 g10/tdbio.c:633 g10/tdbio.c:1351
#: g10/tdbio.c:1378
#, fuzzy, c-format
msgid "%s: error reading version record: %s\n"
msgstr "%s: errore nel controllare la chiave: %s\n"
#: g10/tdbio.c:582
#, fuzzy, c-format
msgid "%s: error writing version record: %s\n"
msgstr "%s: errore nel controllare la chiave: %s\n"
#: g10/tdbio.c:1058
#, fuzzy, c-format
msgid "trustdb: lseek failed: %s\n"
msgstr "aggiornamento della chiave segreta fallito: %s\n"
#: g10/tdbio.c:1066
#, fuzzy, c-format
msgid "trustdb: read failed (n=%d): %s\n"
msgstr "aggiornamento del trustdb fallito: %s\n"
#: g10/tdbio.c:1087
#, fuzzy, c-format
msgid "%s: not a trustdb file\n"
msgstr "aggiornamento del trustdb fallito: %s\n"
#: g10/tdbio.c:1103
#, c-format
msgid "%s: version record with recnum %lu\n"
msgstr ""
#: g10/tdbio.c:1108
#, fuzzy, c-format
msgid "%s: invalid file version %d\n"
msgstr "header della firma in chiaro non valido\n"
#: g10/tdbio.c:1384
#, fuzzy, c-format
msgid "%s: error reading free record: %s\n"
msgstr "%s: errore nel controllare la chiave: %s\n"
#: g10/tdbio.c:1392
#, fuzzy, c-format
msgid "%s: error writing dir record: %s\n"
msgstr "%s: errore nel controllare la chiave: %s\n"
#: g10/tdbio.c:1402
#, c-format
msgid "%s: failed to zero a record: %s\n"
msgstr ""
#: g10/tdbio.c:1432
#, c-format
msgid "%s: failed to append a record: %s\n"
msgstr ""
#: g10/trustdb.c:142
#, fuzzy
msgid "The trustdb is corrupted; please run \"gpgm --fix-trustdb\".\n"
msgstr "Il trustdb è rovinato; per favore esegui \"gpgm --fix-trust-db\".\n"
#: g10/trustdb.c:155
#, c-format
msgid "trust record %lu, req type %d: read failed: %s\n"
msgstr ""
#: g10/trustdb.c:170
#, c-format
msgid "trust record %lu, type %d: write failed: %s\n"
msgstr ""
#: g10/trustdb.c:184
#, fuzzy, c-format
msgid "trust record %lu: delete failed: %s\n"
msgstr "aggiornamento della chiave segreta fallito: %s\n"
#: g10/trustdb.c:198
#, fuzzy, c-format
msgid "trustdb: sync failed: %s\n"
msgstr "aggiornamento del trustdb fallito: %s\n"
#: g10/trustdb.c:327
#, c-format
msgid "error reading dir record for LID %lu: %s\n"
msgstr ""
#: g10/trustdb.c:334
#, c-format
msgid "lid %lu: expected dir record, got type %d\n"
msgstr ""
#: g10/trustdb.c:339
#, c-format
msgid "no primary key for LID %lu\n"
msgstr ""
#: g10/trustdb.c:344
#, fuzzy, c-format
msgid "error reading primary key for LID %lu: %s\n"
msgstr "errore nella creazione della passhprase: %s\n"
#: g10/trustdb.c:420
#, c-format
msgid "chained sigrec %lu has a wrong owner\n"
msgstr "la chained sigrec %lu ha il proprietario sbagliato\n"
#: g10/trustdb.c:463
#, fuzzy, c-format
msgid "'%s' is not a valid long keyID\n"
msgstr "Carattere non valido nel commento\n"
#: g10/trustdb.c:498
#, fuzzy, c-format
msgid "key %08lX: no public key for trusted key - skipped\n"
msgstr "chiave %08lX: chiave segreta senza chiave pubblica - saltata\n"
#: g10/trustdb.c:507 g10/trustdb.c:565
#, c-format
msgid "key %08lX: can't put it into the trustdb\n"
msgstr "chiave %08lX: impossibile metterla nel trustdb\n"
#: g10/trustdb.c:512 g10/trustdb.c:571
#, c-format
msgid "key %08lX: query record failed\n"
msgstr "chiave %08lX: richiesta del record fallita\n"
#: g10/trustdb.c:517 g10/trustdb.c:580
#, fuzzy, c-format
msgid "key %08lX: already in trusted key table\n"
msgstr "chiave %08lX: già nella tabella delle chiavi segrete\n"
#: g10/trustdb.c:520 g10/trustdb.c:583
#, fuzzy, c-format
msgid "key %08lX: accepted as trusted key.\n"
msgstr "chiave %08lX: accettata come chiave segreta\n"
#: g10/trustdb.c:536
#, fuzzy, c-format
msgid "NOTE: secret key %08lX is NOT protected.\n"
msgstr "Questa chiave non è protetta.\n"
#: g10/trustdb.c:548
#, c-format
msgid "key %08lX: secret key without public key - skipped\n"
msgstr "chiave %08lX: chiave segreta senza chiave pubblica - saltata\n"
#: g10/trustdb.c:555
#, c-format
msgid "key %08lX: secret and public key don't match\n"
msgstr "chiave %08lX: le chiavi segreta e pubblica non corrispondono\n"
#: g10/trustdb.c:591
#, fuzzy, c-format
msgid "enumerate secret keys failed: %s\n"
msgstr "enum_secret_keys fallito: %s\n"
#: g10/trustdb.c:774
#, fuzzy, c-format
msgid "lid %lu: read dir record failed: %s\n"
msgstr "chiave %08lX: inserimento del record della fiducia fallito: %s\n"
#: g10/trustdb.c:783
#, fuzzy, c-format
msgid "lid %lu: read key record failed: %s\n"
msgstr "chiave %08lX: inserimento del record della fiducia fallito: %s\n"
#: g10/trustdb.c:793
#, fuzzy, c-format
msgid "lid %lu: read uid record failed: %s\n"
msgstr "chiave %08lX: inserimento del record della fiducia fallito: %s\n"
#: g10/trustdb.c:802
#, fuzzy, c-format
msgid "lid %lu: read pref record failed: %s\n"
msgstr "chiave %08lX: inserimento del record della fiducia fallito: %s\n"
#: g10/trustdb.c:812
#, fuzzy, c-format
msgid "lid %lu: read sig record failed: %s\n"
msgstr "chiave %08lX: inserimento del record della fiducia fallito: %s\n"
#: g10/trustdb.c:1013
msgid "Ooops, no keys\n"
msgstr ""
#: g10/trustdb.c:1017
#, fuzzy
msgid "Ooops, no user ids\n"
msgstr "elenca le chiavi e gli user id"
#: g10/trustdb.c:1088 g10/trustdb.c:1106
#, fuzzy, c-format
msgid "user '%s' read problem: %s\n"
msgstr "%s: utente non trovato\n"
#: g10/trustdb.c:1091 g10/trustdb.c:1109
#, fuzzy, c-format
msgid "user '%s' list problem: %s\n"
msgstr "%s: utente non trovato\n"
#: g10/trustdb.c:1099 g10/trustdb.c:1346
#, fuzzy, c-format
msgid "user '%s' not found: %s\n"
msgstr "%s: utente non trovato\n"
#: g10/trustdb.c:1101 g10/trustdb.c:1348
#, fuzzy, c-format
msgid "problem finding '%s' in trustdb: %s\n"
msgstr "inizializzazione del trustdb fallita: %s\n"
#: g10/trustdb.c:1104
#, fuzzy, c-format
msgid "user '%s' not in trustdb\n"
msgstr "%s: utente non trovato\n"
#: g10/trustdb.c:1139
#, c-format
msgid ""
"# List of assigned trustvalues, created %s\n"
"# (Use \"gpgm --import-ownertrust\" to restore them)\n"
msgstr ""
#: g10/trustdb.c:1145
msgid "directory record w/o primary key\n"
msgstr ""
#: g10/trustdb.c:1152
#, fuzzy, c-format
msgid "error reading key record: %s\n"
msgstr "%s: errore nel controllare la chiave: %s\n"
#: g10/trustdb.c:1192
msgid "line too long\n"
msgstr ""
#: g10/trustdb.c:1200
msgid "error: missing colon\n"
msgstr ""
#: g10/trustdb.c:1205
#, fuzzy
msgid "error: invalid fingerprint\n"
msgstr "errore nella riga della coda\n"
#: g10/trustdb.c:1209
#, fuzzy
msgid "error: no ownertrust value\n"
msgstr "esporta i valori di fiducia"
#: g10/trustdb.c:1234
msgid "key not in trustdb, searching ring.\n"
msgstr ""
#: g10/trustdb.c:1237
#, fuzzy, c-format
msgid "key not in ring: %s\n"
msgstr "impossibile scrivere il portachiavi: %s\n"
#: g10/trustdb.c:1241
msgid "Oops: key is now in trustdb???\n"
msgstr ""
#. update the ownertrust
#: g10/trustdb.c:1246
#, fuzzy, c-format
msgid "insert trust record failed: %s\n"
msgstr "chiave %08lX: inserimento del record della fiducia fallito: %s\n"
#. error
#: g10/trustdb.c:1252
#, fuzzy, c-format
msgid "error finding dir record: %s\n"
msgstr "rimozione dell'armatura fallita: %s\n"
#: g10/trustdb.c:1351
#, fuzzy, c-format
msgid "user '%s' not in trustdb - inserting\n"
msgstr "aggiornamento del trustdb fallito: %s\n"
#: g10/trustdb.c:1354
#, fuzzy, c-format
msgid "failed to put '%s' into trustdb: %s\n"
msgstr "inizializzazione del trustdb fallita: %s\n"
#: g10/trustdb.c:1404
#, c-format
msgid "%s: keyblock read problem: %s\n"
msgstr ""
#: g10/trustdb.c:1418
#, fuzzy, c-format
msgid "%s: update failed: %s\n"
msgstr "aggiornamento fallito: %s\n"
#: g10/trustdb.c:1421
#, fuzzy, c-format
msgid "%s: updated\n"
msgstr "\\t%lu chiavi aggiornate\n"
#: g10/trustdb.c:1423
#, c-format
msgid "%s: okay\n"
msgstr ""
#: g10/trustdb.c:1438
#, c-format
msgid "lid %lu: dir record w/o key - skipped\n"
msgstr ""
#: g10/trustdb.c:1451
#, fuzzy, c-format
msgid "lid %lu: keyblock not found: %s\n"
msgstr "chiave %08lX: chiave pubblica non trovata: %s\n"
#: g10/trustdb.c:1460 g10/trustdb.c:1529
#, fuzzy, c-format
msgid "lid %lu: update failed: %s\n"
msgstr "aggiornamento fallito: %s\n"
#: g10/trustdb.c:1466 g10/trustdb.c:1535
#, fuzzy, c-format
msgid "lid %lu: updated\n"
msgstr "\\t%lu chiavi aggiornate\n"
#: g10/trustdb.c:1470 g10/trustdb.c:1539
#, fuzzy, c-format
msgid "lid %lu: okay\n"
msgstr "lid %lu: manca la chiave primaria\n"
#: g10/trustdb.c:1477 g10/trustdb.c:1545
#, c-format
msgid "%lu keys processed\n"
msgstr "%lu chiavi esaminate\n"
#: g10/trustdb.c:1479
#, c-format
msgid "\t%lu keys skipped\n"
msgstr "\\t%lu chiavi saltate\n"
#: g10/trustdb.c:1481 g10/trustdb.c:1547
#, c-format
msgid "\t%lu keys with errors\n"
msgstr "\\t%lu chiavi con errori\n"
#: g10/trustdb.c:1483 g10/trustdb.c:1549
#, c-format
msgid "\t%lu keys updated\n"
msgstr "\\t%lu chiavi aggiornate\n"
#: g10/trustdb.c:1513
#, fuzzy, c-format
msgid "lid ?: insert failed: %s\n"
msgstr "aggiornamento della chiave segreta fallito: %s\n"
#: g10/trustdb.c:1518
#, fuzzy, c-format
msgid "lid %lu: insert failed: %s\n"
msgstr "aggiornamento della chiave segreta fallito: %s\n"
#: g10/trustdb.c:1524
#, fuzzy, c-format
msgid "lid %lu: inserted\n"
msgstr "\\t%lu chiavi inserite\n"
#: g10/trustdb.c:1551
#, c-format
msgid "\t%lu keys inserted\n"
msgstr "\\t%lu chiavi inserite\n"
#: g10/trustdb.c:1554
#, fuzzy, c-format
msgid "enumerate keyblocks failed: %s\n"
msgstr "enum_secret_keys fallito: %s\n"
#: g10/trustdb.c:1599
#, fuzzy, c-format
msgid "check_trust: search dir record failed: %s\n"
msgstr "chiave %08lX: inserimento del record della fiducia fallito: %s\n"
#: g10/trustdb.c:1606
#, c-format
msgid "key %08lX: insert trust record failed: %s\n"
msgstr "chiave %08lX: inserimento del record della fiducia fallito: %s\n"
#: g10/trustdb.c:1610
#, c-format
msgid "key %08lX.%lu: inserted into trustdb\n"
msgstr "chiave %08lX.%lu: inserita nel trustdb\n"
#: g10/trustdb.c:1618
#, c-format
msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
msgstr ""
"chiave %08lX.%lu: creata nel futuro (salto nel tempo o problema\n"
"con l'orologio)\n"
#: g10/trustdb.c:1625
#, c-format
msgid "key %08lX.%lu: expired at %s\n"
msgstr "chiave %08lX.%lu: scaduta il %s\n"
#: g10/trustdb.c:1633
#, c-format
msgid "key %08lX.%lu: trust check failed: %s\n"
msgstr "chiave %08lX.%lu: controllo della fiducia fallito: %s\n"
#: g10/trustdb.c:1842 g10/trustdb.c:1871 g10/trustdb.c:2610
msgid "WARNING: can't yet handle long pref records\n"
msgstr ""
#: g10/trustdb.c:1893
#, fuzzy, c-format
msgid "get_dir_record: search_record failed: %s\n"
msgstr "aggiornamento della chiave segreta fallito: %s\n"
#: g10/trustdb.c:1956
#, fuzzy, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but marked as checked\n"
msgstr ""
"nota: rec di %lu[%d] nella hintlist di %lu ma marcato come verificato\n"
#: g10/trustdb.c:1960
#, fuzzy, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but not marked\n"
msgstr "nota: rec di %lu[%d] nella hintlist di %lu ma non marcato\n"
#. we need the dir record
#: g10/trustdb.c:1967
#, c-format
msgid "sig rec %lu[%d] in hintlist of %lu does not point to a dir record\n"
msgstr "Il rec di %lu[%d] nella hintlist di %lu non punta a un record dir\n"
#: g10/trustdb.c:1973
#, c-format
msgid "lid %lu: no primary key\n"
msgstr "lid %lu: manca la chiave primaria\n"
#: g10/trustdb.c:2006
#, c-format
msgid "lid %lu: user id not found in keyblock\n"
msgstr "lid %lu: user id non trovato nel keyblock\n"
#: g10/trustdb.c:2010
#, c-format
msgid "lid %lu: user id without signature\n"
msgstr "chiave %08lX: user id senza firma\n"
#: g10/trustdb.c:2017
#, c-format
msgid "lid %lu: self-signature in hintlist\n"
msgstr "lid %lu: autofirma nella hintlist\n"
#: g10/trustdb.c:2028 g10/trustdb.c:2747 g10/trustdb.c:2831
msgid "Valid certificate revocation"
msgstr "Revoca del certificato valida"
#: g10/trustdb.c:2029 g10/trustdb.c:2748 g10/trustdb.c:2832
msgid "Good certificate"
msgstr "Certificato corretto"
#: g10/trustdb.c:2038
msgid "very strange: no public key\n"
msgstr "molto strano: non ci sono chiavi pubbliche\n"
#: g10/trustdb.c:2086
#, c-format
msgid "hintlist %lu[%d] of %lu does not point to a dir record\n"
msgstr "hintlist %lu[%d] di %lu non punta a un record dir\n"
#: g10/trustdb.c:2092
#, c-format
msgid "lid %lu does not have a key\n"
msgstr "Il lid %lu non ha una chiave\n"
#: g10/trustdb.c:2102
#, c-format
msgid "lid %lu: can't get keyblock: %s\n"
msgstr "lid %lu: impossibile ottenere il keyblock: %s\n"
#: g10/trustdb.c:2159 g10/trustdb.c:3082
#, fuzzy, c-format
msgid "tdbio_search_dir failed: %s\n"
msgstr "rimozione dell'armatura fallita: %s\n"
#: g10/trustdb.c:2312
#, c-format
msgid "key %08lX.%lu: Good subkey binding\n"
msgstr "chiave %08lX.%lu: Legame con la subchiave corretto\n"
#: g10/trustdb.c:2318 g10/trustdb.c:2360
#, c-format
msgid "key %08lX.%lu: Invalid subkey binding: %s\n"
msgstr "chiave %08lX.%lu: Legame con la subchiave non valido: %s\n"
#: g10/trustdb.c:2333
#, c-format
msgid "key %08lX.%lu: Valid key revocation\n"
msgstr "chiave %08lX.%lu: Revoca della chiave valida\n"
#: g10/trustdb.c:2339
#, c-format
msgid "key %08lX.%lu: Invalid key revocation: %s\n"
msgstr "chiave %08lX.%lu: Revoca della chiave non valida: %s\n"
#: g10/trustdb.c:2354
#, c-format
msgid "key %08lX.%lu: Valid subkey revocation\n"
msgstr "chiave %08lX.%lu: Revoca della subchiave valida\n"
#: g10/trustdb.c:2454
msgid "Good self-signature"
msgstr "Autofirma corretta"
#: g10/trustdb.c:2465
msgid "Invalid self-signature"
msgstr "Autofirma non valida"
#: g10/trustdb.c:2475
msgid "Valid user ID revocation skipped due to a newer self signature\n"
msgstr ""
#: g10/trustdb.c:2482
msgid "Valid user ID revocation\n"
msgstr "Revoca dell'user ID valida\n"
#: g10/trustdb.c:2489
msgid "Invalid user ID revocation"
msgstr "Revoca dell'user ID non valida"
#: g10/trustdb.c:2573
msgid "Too many preferences"
msgstr "Troppe preferenze"
#: g10/trustdb.c:2587
#, fuzzy
msgid "Too many preference items"
msgstr "Troppi elementi di preferenza"
#: g10/trustdb.c:2726
msgid "Duplicated certificate - deleted"
msgstr "Certificato doppio - cancellato"
#: g10/trustdb.c:2759
#, fuzzy
msgid "Hmmm, public key lost?"
msgstr "chiave pubblica perduta"
#: g10/trustdb.c:2769 g10/trustdb.c:2852
msgid "Invalid certificate revocation"
msgstr "Certificato di revoca non valido"
#: g10/trustdb.c:2770 g10/trustdb.c:2853
msgid "Invalid certificate"
msgstr "Certificato non valido"
#: g10/trustdb.c:2785
#, c-format
msgid "uid %08lX.%lu/%02X%02X: has shadow dir %lu but is not yet marked.\n"
msgstr ""
#: g10/trustdb.c:2799
#, fuzzy, c-format
msgid "sig record %lu[%d] points to wrong record.\n"
msgstr "Il rec di %lu[%d] nella hintlist di %lu non punta a un record dir\n"
#. that should never happen
#: g10/trustdb.c:3052
#, fuzzy, c-format
msgid "insert_trust_record: keyblock not found: %s\n"
msgstr "chiave %08lX: chiave segreta non trovata: %s\n"
#: g10/trustdb.c:3070
msgid "did not use primary key for insert_trust_record()\n"
msgstr ""
#: g10/ringedit.c:293
#, fuzzy, c-format
msgid "%s: can't create keyring: %s\n"
msgstr "%s: impossibile creare: %s\n"
-#: g10/ringedit.c:299 g10/ringedit.c:1283
+#: g10/ringedit.c:299 g10/ringedit.c:1300
#, fuzzy, c-format
msgid "%s: keyring created\n"
msgstr "%s: creato un nuovo file delle opzioni\n"
-#: g10/ringedit.c:1469
+#: g10/ringedit.c:1486
msgid "WARNING: 2 files with confidential information exists.\n"
msgstr ""
-#: g10/ringedit.c:1470
+#: g10/ringedit.c:1487
#, fuzzy, c-format
msgid "%s is the unchanged one\n"
msgstr "chiavi segrete non cambiate %lu\n"
-#: g10/ringedit.c:1471
+#: g10/ringedit.c:1488
#, c-format
msgid "%s is the new one\n"
msgstr ""
-#: g10/ringedit.c:1472
+#: g10/ringedit.c:1489
msgid "Please fix this possible security flaw\n"
msgstr ""
-#: g10/skclist.c:94
+#: g10/skclist.c:88 g10/skclist.c:125
+msgid "key is not flagged as insecure - can't use it with the faked RNG!\n"
+msgstr ""
+
+#: g10/skclist.c:113
#, fuzzy, c-format
msgid "skipped `%s': %s\n"
msgstr "%s: saltata: %s\n"
-#: g10/skclist.c:100
+#: g10/skclist.c:119
#, fuzzy, c-format
msgid ""
"skipped `%s': this is a PGP generated ElGamal key which is not secure for "
"signatures!\n"
msgstr ""
"questa è una chiave ElGamal generata da PGP che NON è sicura per le firme!\n"
#. do not overwrite
#: g10/openfile.c:58
#, c-format
msgid "File `%s' exists. "
msgstr "Il file `%s' esiste. "
#: g10/openfile.c:60
msgid "Overwrite (y/N)? "
msgstr "Sovrascrivo (y/N)? "
#: g10/openfile.c:85
msgid "writing to stdout\n"
msgstr "scrivo su stdout\n"
#: g10/openfile.c:134
#, c-format
msgid "assuming signed data in `%s'\n"
msgstr "presumo che i dati firmati siano in `%s'\n"
#: g10/openfile.c:181
#, c-format
msgid "%s: new options file created\n"
msgstr "%s: creato un nuovo file delle opzioni\n"
#: g10/encr-data.c:59
#, fuzzy, c-format
msgid "%s encrypted data\n"
msgstr "cifra dati"
#: g10/encr-data.c:61
#, c-format
msgid "encrypted with unknown algorithm %d\n"
msgstr ""
#: g10/encr-data.c:74
#, fuzzy
msgid ""
"WARNING: message was encrypted with a weak key in the symmetric cipher.\n"
msgstr ""
"Attenzione: il messaggio era stato crittografato usando una chiave debole\n"
"per il cifrario simmetrico\n"
#: g10/seskey.c:52
msgid "weak key created - retrying\n"
msgstr "creata una chiave debole - riprovo\n"
#: g10/seskey.c:57
#, c-format
msgid "cannot avoid weak key for symmetric cipher; tried %d times!\n"
msgstr ""
"Impossibile evitare una chiave debole per il cifrario simmetrico;\n"
"ho provato %d volte!\n"
#. begin of list
#: g10/helptext.c:48
msgid "edit_ownertrust.value"
msgstr "edit_ownertrust.value"
#: g10/helptext.c:54
msgid "revoked_key.override"
msgstr "revoked_key.override"
#: g10/helptext.c:58
msgid "untrusted_key.override"
msgstr "untrusted_key.override"
#: g10/helptext.c:62
msgid "pklist.user_id.enter"
msgstr "pklist.user_id.enter"
#: g10/helptext.c:66
msgid "keygen.algo"
msgstr "keygen.algo"
#: g10/helptext.c:82
#, fuzzy
msgid "keygen.algo.elg_se"
msgstr "keygen.algo"
#: g10/helptext.c:89
msgid "keygen.size"
msgstr "keygen.size"
#: g10/helptext.c:93
msgid "keygen.size.huge.okay"
msgstr "keygen.size.huge.okay"
#: g10/helptext.c:98
msgid "keygen.size.large.okay"
msgstr "keygen.size.large.okay"
#: g10/helptext.c:103
msgid "keygen.valid"
msgstr "keygen.valid"
#: g10/helptext.c:107
msgid "keygen.valid.okay"
msgstr "keygen.valid.okay"
#: g10/helptext.c:112
msgid "keygen.name"
msgstr "keygen.name"
#: g10/helptext.c:117
msgid "keygen.email"
msgstr "keygen.email"
#: g10/helptext.c:121
msgid "keygen.comment"
msgstr "keygen.comment"
#: g10/helptext.c:126
msgid "keygen.userid.cmd"
msgstr "keygen.userid.cmd"
#: g10/helptext.c:135
msgid "keygen.sub.okay"
msgstr "keygen.sub.okay"
#: g10/helptext.c:139
msgid "sign_uid.okay"
msgstr "sign_uid.okay"
#: g10/helptext.c:144
msgid "change_passwd.empty.okay"
msgstr "change_passwd.empty.okay"
#: g10/helptext.c:149
msgid "keyedit.cmd"
msgstr "keyedit.cmd"
#: g10/helptext.c:153
msgid "keyedit.save.okay"
msgstr "keyedit.save.okay"
#: g10/helptext.c:158
msgid "keyedit.cancel.okay"
msgstr "keyedit.cancel.okay"
#: g10/helptext.c:162
msgid "keyedit.sign_all.okay"
msgstr "keyedit.sign_all.okay"
#: g10/helptext.c:166
msgid "keyedit.remove.uid.okay"
msgstr "keyedit.remove.uid.okay"
#: g10/helptext.c:171
msgid "keyedit.remove.subkey.okay"
msgstr "keyedit.remove.subkey.okay"
#: g10/helptext.c:175
msgid "passphrase.enter"
msgstr "passphrase.enter"
#: g10/helptext.c:182
msgid "passphrase.repeat"
msgstr "passphrase.repeat"
#: g10/helptext.c:186
msgid "detached_signature.filename"
msgstr "detached_signature.filename"
#: g10/helptext.c:190
msgid "openfile.overwrite.okay"
msgstr "openfile.overwrite.okay"
#: g10/helptext.c:204
msgid "No help available"
msgstr "Nessun aiuto disponibile"
#: g10/helptext.c:216
#, c-format
msgid "No help available for `%s'"
msgstr "Nessun aiuto disponibile per `%s'"
#~ msgid "invalid clear text header: "
#~ msgstr "header del testo in chiaro non valido: "
#~ msgid "You will see a list of signators etc. here\n"
#~ msgstr "Qui vedrai una lista di firmatari, ecc.\n"
diff --git a/po/pl.po b/po/pl.po
index 7daf2fce8..d81cb593b 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,3185 +1,3251 @@
# GNU PG polish translation
# Copyright (C) 1998 Free Software Foundation, Inc.
# Janusz A. Urbanowicz <alex@bofh.net.pl>, 1998.
#
#
msgid ""
msgstr ""
"Project-Id-Version: gnupg-0.4.0\n"
-"POT-Creation-Date: 1999-01-09 18:31+0100\n"
+"POT-Creation-Date: 1999-01-20 22:45+0100\n"
"PO-Revision-Date: 1998-12-24 03:12+01:00\n"
"Last-Translator: Janusz A. Urbanowicz <alex@bofh.net.pl>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
"Xgettext-Options: --default-domain=gnupg --directory=.. --add-comments "
"--keyword=_ --keyword=N_ --files-from=./POTFILES.in\n"
"Files: util/secmem.c util/argparse.c cipher/random.c cipher/rand-dummy.c "
"cipher/rand-unix.c cipher/rand-w32.c g10/g10.c g10/pkclist.c g10/keygen.c "
"g10/decrypt.c g10/encode.c g10/import.c g10/keyedit.c g10/keylist.c "
"g10/mainproc.c g10/passphrase.c g10/plaintext.c g10/pref.c g10/seckey-cert.c "
"g10/sig-check.c g10/sign.c g10/trustdb.c g10/verify.c g10/status.c "
"g10/pubkey-enc.c\n"
#: util/secmem.c:77
msgid "Warning: using insecure memory!\n"
msgstr "Ostrze¿enie: u¿ywana pamiêæ nie jest pamiêci± bezpieczn±!\n"
#: util/miscutil.c:143
msgid "yes"
msgstr "tak"
#: util/miscutil.c:144
msgid "yY"
msgstr "tT"
#: util/errors.c:54
msgid "general error"
msgstr ""
#: util/errors.c:55
msgid "unknown packet type"
msgstr ""
#: util/errors.c:56
msgid "unknown version"
msgstr ""
#: util/errors.c:57
msgid "unknown pubkey algorithm"
msgstr ""
#: util/errors.c:58
msgid "unknown digest algorithm"
msgstr ""
#: util/errors.c:59
#, fuzzy
msgid "bad public key"
msgstr "brak domy¶lnego zbioru kluczy publicznych\n"
#: util/errors.c:60
#, fuzzy
msgid "bad secret key"
msgstr "lista kluczy tajnych"
#: util/errors.c:61
#, fuzzy
msgid "bad signature"
msgstr "1 niepoprawny podpis\n"
#: util/errors.c:62
msgid "checksum error"
msgstr ""
#: util/errors.c:63
#, fuzzy
msgid "bad passphrase"
msgstr "Proszê powtórzyæ wyra¿enie przej¶ciowe: "
#: util/errors.c:64
#, fuzzy
msgid "public key not found"
msgstr "klucz %08lX: brak klucza publicznegoL %s\n"
#: util/errors.c:65
#, fuzzy
msgid "unknown cipher algorithm"
msgstr "|NAZWA|algorytm szyfruj±cy NAZWA"
#: util/errors.c:66
#, fuzzy
msgid "can't open the keyring"
msgstr "nie mogê zapisaæ zbioru kluczy\n"
#: util/errors.c:67
#, fuzzy
msgid "invalid packet"
msgstr "niepoprawna warto¶æ\n"
#: util/errors.c:68
#, fuzzy
msgid "invalid armor"
msgstr "niepoprawna warto¶æ\n"
#: util/errors.c:69
#, fuzzy
msgid "no such user id"
msgstr "Brak takiego identyfikatora u¿ytkownika.\n"
#: util/errors.c:70
#, fuzzy
msgid "secret key not available"
msgstr "Dostêpny jest klucz tajny.\n"
#: util/errors.c:71
#, fuzzy
msgid "wrong secret key used"
msgstr "lista kluczy tajnych"
#: util/errors.c:72
msgid "not supported"
msgstr ""
#: util/errors.c:73
#, fuzzy
msgid "bad key"
msgstr "dodkl"
#: util/errors.c:74
#, fuzzy
msgid "file read error"
msgstr "b³±d odczytu: %s\n"
#: util/errors.c:75
msgid "file write error"
msgstr ""
#: util/errors.c:76
#, fuzzy
msgid "unknown compress algorithm"
msgstr "|N|algorytm kompresji N"
#: util/errors.c:77
msgid "file open error"
msgstr ""
#: util/errors.c:78
msgid "file create error"
msgstr ""
#: util/errors.c:79
#, fuzzy
msgid "invalid passphrase"
msgstr "Wyra¿enie przej¶ciowe: "
#: util/errors.c:80
#, fuzzy
msgid "unimplemented pubkey algorithm"
msgstr ""
"klucz %08lX: nie obs³ugiwany algorytm szyfrowania z kluczem publicznym\n"
#: util/errors.c:81
#, fuzzy
msgid "unimplemented cipher algorithm"
msgstr "wybrany algorytm szyfruj±cy jest niepoprawny\n"
#: util/errors.c:82
msgid "unknown signature class"
msgstr ""
#: util/errors.c:83
msgid "trust database error"
msgstr ""
#: util/errors.c:84
msgid "bad MPI"
msgstr ""
#: util/errors.c:85
msgid "resource limit"
msgstr ""
#: util/errors.c:86
#, fuzzy
msgid "invalid keyring"
msgstr "niepoprawna warto¶æ\n"
#: util/errors.c:87
msgid "bad certificate"
msgstr ""
#: util/errors.c:88
#, fuzzy
msgid "malformed user id"
msgstr "dodanie nowego identyfikatora u¿ytkownika do klucza"
#: util/errors.c:89
msgid "file close error"
msgstr ""
#: util/errors.c:90
msgid "file rename error"
msgstr ""
#: util/errors.c:91
msgid "file delete error"
msgstr ""
#: util/errors.c:92
msgid "unexpected data"
msgstr ""
#: util/errors.c:93
msgid "timestamp conflict"
msgstr ""
#: util/errors.c:94
#, fuzzy
msgid "unusable pubkey algorithm"
msgstr "|N|algorytm kompresji N"
#: util/errors.c:95
#, fuzzy
msgid "file exists"
msgstr "Plik `%s' ju¿ istnieje. "
#: util/errors.c:96
msgid "weak key"
msgstr ""
+#: util/errors.c:97
+#, fuzzy
+msgid "invalid argument"
+msgstr "niepoprawna warto¶æ\n"
+
+#: util/errors.c:98
+msgid "bad URI"
+msgstr ""
+
+#: util/errors.c:99
+msgid "unsupported URI"
+msgstr ""
+
+#: util/errors.c:100
+msgid "network error"
+msgstr ""
+
#: util/logger.c:178
#, c-format
msgid "... this is a bug (%s:%d:%s)\n"
msgstr ""
#: util/logger.c:184
#, c-format
msgid "you found a bug ... (%s:%d)\n"
msgstr ""
-#: cipher/random.c:405
+#: cipher/random.c:412
#, fuzzy
msgid "WARNING: using insecure random number generator!!\n"
msgstr ""
"ostrze¿enie: u¿ywany generator liczb losowych\n"
"nie jest kryptograficznie bezpieczny!!\n"
-#: cipher/random.c:406
+#: cipher/random.c:413
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 ""
"U¿ywany generator liczb losowych jest atrap± wprowadzon± dla umo¿liwienia\n"
"normalnej kompilacji - nie jest kryptograficznie bezpieczny!\n"
"\n"
"JAKIEKOLWIEK DANE GENEROWANE PRZEZ TEN PROGRAM NIE NADAJ¡ SIÊ DO \n"
"NORMALNEGO U¯YTKU I NIE ZAPEWNIAJ¡ BEZPIECZEÑSTWA!!\n"
#: cipher/rndlinux.c:118
#, c-format
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"
"Brakuje mo¿liwo¶ci wygenerowania odpowiedniej liczby losowych bajtów.\n"
"Proszê kontynuowaæ inne dzia³ania aby system móg³ zebraæ odpowiedni±\n"
"ilo¶æ entropii do ich wygenerowania (brakuje %d bajtów).\n"
-#: g10/g10.c:160
+#: g10/g10.c:163
msgid ""
"@Commands:\n"
" "
msgstr ""
"@Polecenia:\n"
" "
-#: g10/g10.c:163
+#: g10/g10.c:166
msgid "|[file]|make a signature"
msgstr "|[plik]|z³o¿enie podpisu"
-#: g10/g10.c:164
+#: g10/g10.c:167
msgid "|[file]|make a clear text signature"
msgstr "|[plik]|z³o¿enie podpisu na czytelnym dokumencie"
-#: g10/g10.c:165
+#: g10/g10.c:168
msgid "make a detached signature"
msgstr "sporz±dzenie podpisu oddzielonego od dokumentu"
-#: g10/g10.c:166
+#: g10/g10.c:169
msgid "encrypt data"
msgstr "szyfrowanie danych"
-#: g10/g10.c:167
+#: g10/g10.c:170
msgid "encryption only with symmetric cipher"
msgstr "szyfrowanie tylko szyfrem symetrycznym"
-#: g10/g10.c:168
+#: g10/g10.c:171
msgid "store only"
msgstr "tylko zapis"
-#: g10/g10.c:169
+#: g10/g10.c:172
msgid "decrypt data (default)"
msgstr "odszyfrowywanie danych (domy¶lnie)"
-#: g10/g10.c:170
+#: g10/g10.c:173
msgid "verify a signature"
msgstr "sprawdzenie podpisu"
-#: g10/g10.c:172
+#: g10/g10.c:175
msgid "list keys"
msgstr "lista kluczy"
-#: g10/g10.c:173
+#: g10/g10.c:176
msgid "list keys and signatures"
msgstr "lista kluczy i podpisów"
-#: g10/g10.c:174
+#: g10/g10.c:177
msgid "check key signatures"
msgstr "sprawdzenie podpisów kluczy"
-#: g10/g10.c:175
+#: g10/g10.c:178
msgid "list keys and fingerprints"
msgstr "lista kluczy i ich odcisków"
-#: g10/g10.c:176
+#: g10/g10.c:179
msgid "list secret keys"
msgstr "lista kluczy tajnych"
-#: g10/g10.c:178
+#: g10/g10.c:181
msgid "generate a new key pair"
msgstr "generacja nowej pary klucza"
-#: g10/g10.c:180
+#: g10/g10.c:183
msgid "remove key from the public keyring"
msgstr "usuniêcie klucza ze zbioru kluczy publicznych"
-#: g10/g10.c:182
+#: g10/g10.c:185
msgid "sign or edit a key"
msgstr "podpisanie lub modyfikacja klucza"
-#: g10/g10.c:183
+#: g10/g10.c:186
msgid "generate a revocation certificate"
msgstr "generacja certyfikatu uniewa¿nienia klucza"
-#: g10/g10.c:185
+#: g10/g10.c:188
msgid "export keys"
msgstr "eksport kluczy do pliku"
-#: g10/g10.c:188
+#: g10/g10.c:189
+msgid "export keys to a key server"
+msgstr ""
+
+#: g10/g10.c:192
msgid "import/merge keys"
msgstr "do³±czanie klucza do zbioru"
-#: g10/g10.c:190
+#: g10/g10.c:194
msgid "list only the sequence of packets"
msgstr "wypisane sekwencji pakietów"
-#: g10/g10.c:193
+#: g10/g10.c:197
msgid "export the ownertrust values"
msgstr ""
"Przypisanie tych warto¶ci nale¿y do Ciebie, nie bêd± one udostêpnione\n"
"nikomu innemu. S± one u¿ywane do stworzenia sieci zaufania i nie ma\n"
"to nic wspólnego z tworzon± sieci± certyfikatów."
-#: g10/g10.c:195
+#: g10/g10.c:199
msgid "import ownertrust values"
msgstr ""
"Przypisanie tych warto¶ci nale¿y do Ciebie, nie bêd± one udostêpnione\n"
"nikomu innemu. S± one u¿ywane do stworzenia sieci zaufania i nie ma\n"
"to nic wspólnego z tworzon± sieci± certyfikatów."
-#: g10/g10.c:197
+#: g10/g10.c:201
#, fuzzy
msgid "|[NAMES]|update the trust database"
msgstr "|[NAZWY]|sprawdzenie bazy zaufania"
-#: g10/g10.c:199
+#: g10/g10.c:203
msgid "|[NAMES]|check the trust database"
msgstr "|[NAZWY]|sprawdzenie bazy zaufania"
-#: g10/g10.c:200
+#: g10/g10.c:204
msgid "fix a corrupted trust database"
msgstr ""
-#: g10/g10.c:201
+#: g10/g10.c:205
msgid "De-Armor a file or stdin"
msgstr "Zdjêcie opakowania ASCII pliku lub potoku"
-#: g10/g10.c:202
+#: g10/g10.c:206
msgid "En-Armor a file or stdin"
msgstr "Opakowanie ASCII pliku lub potoku"
-#: g10/g10.c:203
+#: g10/g10.c:207
msgid "|algo [files]|print message digests"
msgstr "|algo [pliki]|skróty wiadomo¶ci"
-#: g10/g10.c:204
+#: g10/g10.c:208
msgid "print all message digests"
msgstr "wszystkie skróty wiadomo¶ci"
-#: g10/g10.c:211
+#: g10/g10.c:215
msgid ""
"@\n"
"Options:\n"
" "
msgstr ""
"@\n"
"Opcje:\n"
" "
-#: g10/g10.c:213
+#: g10/g10.c:217
msgid "create ascii armored output"
msgstr "plik wynikowy w opakowaniu ASCII"
-#: g10/g10.c:215
+#: g10/g10.c:219
msgid "use this user-id to sign or decrypt"
msgstr "u¿yæ tego identyfikatora do podpisania lub odszyfrowania"
-#: g10/g10.c:216
+#: g10/g10.c:220
msgid "use this user-id for encryption"
msgstr "u¿yæ tego identyfikatora do szyfrowania"
-#: g10/g10.c:217
+#: g10/g10.c:221
msgid "|N|set compress level N (0 disables)"
msgstr "|N|poziom kompresji N (0 - brak)"
-#: g10/g10.c:219
+#: g10/g10.c:223
msgid "use canonical text mode"
msgstr "kanoniczny format tekstowy"
-#: g10/g10.c:221
+#: g10/g10.c:225
msgid "use as output file"
msgstr "plik wyj¶ciowy"
-#: g10/g10.c:222
+#: g10/g10.c:226
msgid "verbose"
msgstr "z informacjami dodatkowymi"
-#: g10/g10.c:223
+#: g10/g10.c:227
msgid "be somewhat more quiet"
msgstr ""
-#: g10/g10.c:224
+#: g10/g10.c:228
#, fuzzy
msgid "force v3 signatures"
msgstr "sprawdzenie podpisów kluczy"
#. { oDryRun, "dry-run", 0, N_("do not make any changes") },
-#: g10/g10.c:226
+#: g10/g10.c:230
msgid "batch mode: never ask"
msgstr "tryb wsadowy: ¿adnych pytañ"
-#: g10/g10.c:227
+#: g10/g10.c:231
msgid "assume yes on most questions"
msgstr "automatyczna odpowied¼ tak na wiêkszo¶æ pytañ"
-#: g10/g10.c:228
+#: g10/g10.c:232
msgid "assume no on most questions"
msgstr "automatyczna odpowied¼ nie na wiêkszo¶æ pytañ"
-#: g10/g10.c:229
+#: g10/g10.c:233
msgid "add this keyring to the list of keyrings"
msgstr "dodaæ zbiór kluczy do listy"
-#: g10/g10.c:230
+#: g10/g10.c:234
msgid "add this secret keyring to the list"
msgstr "dodaæ zbiór kluczy tajnych do listy"
-#: g10/g10.c:231
+#: g10/g10.c:235
msgid "|NAME|use NAME as default secret key"
msgstr "|NAZWA|u¿ycie NAZWA jako domy¶lnego klucza tajnego"
-#: g10/g10.c:232
+#: g10/g10.c:236
+msgid "|HOST|use this keyserver to lookup keys"
+msgstr ""
+
+#: g10/g10.c:237
#, fuzzy
msgid "|NAME|set terminal charset to NAME"
msgstr "|NAZWA|algorytm szyfruj±cy NAZWA"
-#: g10/g10.c:233
+#: g10/g10.c:238
msgid "read options from file"
msgstr "wczytanie opcji z pliku"
-#: g10/g10.c:235
+#: g10/g10.c:240
msgid "set debugging flags"
msgstr "ustawienie opcji ¶ledzenia wykonania programu"
-#: g10/g10.c:236
+#: g10/g10.c:241
msgid "enable full debugging"
msgstr "umo¿liwienie pe³nego ¶ledzenia programu"
-#: g10/g10.c:237
+#: g10/g10.c:242
msgid "|FD|write status info to this FD"
msgstr "|FD|zapisaæ opis stanu do FD"
-#: g10/g10.c:238
+#: g10/g10.c:243
msgid "do not write comment packets"
msgstr "nie zapisywaæ pakietów z komentarzem"
-#: g10/g10.c:239
+#: g10/g10.c:244
msgid "(default is 1)"
msgstr "(domy¶lnie 1)"
-#: g10/g10.c:240
+#: g10/g10.c:245
msgid "(default is 3)"
msgstr "(domy¶lnie 3)"
-#: g10/g10.c:242
+#: g10/g10.c:247
msgid "|KEYID|ulimately trust this key"
msgstr ""
-#: g10/g10.c:243
+#: g10/g10.c:248
#, fuzzy
msgid "|FILE|load extension module FILE"
msgstr "|plik|³adowanie modu³u rozszerzenia"
-#: g10/g10.c:244
+#: g10/g10.c:249
msgid "emulate the mode described in RFC1991"
msgstr "emulacja trybu opisanego w RFC1991"
-#: g10/g10.c:245
+#: g10/g10.c:250
#, fuzzy
msgid "|N|use passphrase mode N"
msgstr "Wyra¿enie przej¶ciowe: "
-#: g10/g10.c:247
+#: g10/g10.c:252
#, fuzzy
msgid "|NAME|use message digest algorithm NAME for passphrases"
msgstr "|NAZWA|algorytm obliczania skrótów wiadomo¶ci NAZWA"
-#: g10/g10.c:249
+#: g10/g10.c:254
#, fuzzy
msgid "|NAME|use cipher algorithm NAME for passphrases"
msgstr "|NAZWA|algorytm szyfruj±cy NAZWA"
-#: g10/g10.c:251
+#: g10/g10.c:256
msgid "|NAME|use cipher algorithm NAME"
msgstr "|NAZWA|algorytm szyfruj±cy NAZWA"
-#: g10/g10.c:252
+#: g10/g10.c:257
msgid "|NAME|use message digest algorithm NAME"
msgstr "|NAZWA|algorytm obliczania skrótów wiadomo¶ci NAZWA"
-#: g10/g10.c:253
+#: g10/g10.c:258
msgid "|N|use compress algorithm N"
msgstr "|N|algorytm kompresji N"
-#: g10/g10.c:254
+#: g10/g10.c:259
msgid "throw keyid field of encrypted packets"
msgstr "usuniêcie identyfikatora klucza zaszyfrowanych pakietów"
-#: g10/g10.c:262
+#: g10/g10.c:267
#, fuzzy
msgid ""
"@\n"
"Examples:\n"
"\n"
" -se -r Bob [file] sign and encrypt for user Bob\n"
" --clearsign [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"
msgstr ""
"@\n"
"Przyk³ady:\n"
"\n"
" -se -r Bob [plik] podpisanie i zaszyfrowanie kluczem Boba\n"
" -sat [plik] podpisanie z pozostawieniem czytelnego "
"dokumentu\n"
" -sb [plik] podpisanie z umieszczeniem podpisu w osobnym "
"pliku\n"
" -k [identyfikator] pokazuje klucz\n"
" -kc [identyfikator] pokazuje odcisk klucza\n"
-#: g10/g10.c:341
+#: g10/g10.c:346
msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
msgstr "B³êdy prosimy zg³aszaæ na adres <gnupg-bugs@gnu.org>.\n"
-#: g10/g10.c:346
+#: g10/g10.c:351
msgid "Usage: gpgm [options] [files] (-h for help)"
msgstr "Sposób u¿ycia: gpgm [opcje] [pliki] (-h podaje pomoc)"
-#: g10/g10.c:348
+#: g10/g10.c:353
msgid "Usage: gpg [options] [files] (-h for help)"
msgstr "Sposób u¿ycia: gpg [opcje] [pliki] (-h podaje pomoc)"
-#: g10/g10.c:353
+#: g10/g10.c:358
#, fuzzy
msgid ""
"Syntax: gpgm [options] [files]\n"
"GnuPG maintenance utility\n"
msgstr ""
"Sk³adnia: gpgm [opcje] [pliki]\n"
"GNUPG program obs³uguj±cy\n"
-#: g10/g10.c:356
+#: g10/g10.c:361
msgid ""
"Syntax: gpg [options] [files]\n"
"sign, check, encrypt or decrypt\n"
"default operation depends on the input data\n"
msgstr ""
"Sk³adnia: gpg [opcje] [pliki]\\n\n"
"podpisywanie, sprawdzanie podpisów, szyfrowanie, deszyfrowanie\n"
"domy¶lnie wykonywana operacja zale¿y od danych wej¶ciowych\n"
-#: g10/g10.c:362
+#: g10/g10.c:367
msgid ""
"\n"
"Supported algorithms:\n"
msgstr ""
"\n"
"Obs³ugiwane algorytmy:\n"
-#: g10/g10.c:437
+#: g10/g10.c:442
msgid "usage: gpgm [options] "
msgstr "sposób u¿ycia: gpgm [opcje]"
-#: g10/g10.c:439
+#: g10/g10.c:444
msgid "usage: gpg [options] "
msgstr "sposób u¿ycia: gpg [opcje]"
-#: g10/g10.c:480
+#: g10/g10.c:485
msgid "conflicting commands\n"
msgstr "sprzeczne polecenia\n"
-#: g10/g10.c:618
+#: g10/g10.c:623
#, fuzzy, c-format
msgid "NOTE: no default option file `%s'\n"
msgstr "uwaga: brak domy¶lnego pliku opcji '%s\"\n"
-#: g10/g10.c:622
+#: g10/g10.c:627
#, c-format
msgid "option file `%s': %s\n"
msgstr "plik opcji `%s': %s\n"
-#: g10/g10.c:629
+#: g10/g10.c:634
#, c-format
msgid "reading options from `%s'\n"
msgstr "odczyt opcji z `%s'\n"
-#: g10/g10.c:782
+#: g10/g10.c:788
#, fuzzy, c-format
msgid "%s is not a valid character set\n"
msgstr "Niew³a¶ciwy znak w komentarzu\n"
-#: g10/g10.c:817 g10/g10.c:829
+#: g10/g10.c:824 g10/g10.c:836
msgid "selected cipher algorithm is invalid\n"
msgstr "wybrany algorytm szyfruj±cy jest niepoprawny\n"
-#: g10/g10.c:823 g10/g10.c:835
+#: g10/g10.c:830 g10/g10.c:842
msgid "selected digest algorithm is invalid\n"
msgstr "wybrany algorytm geenracji skrótów wiadomo¶ci jest niepoprawny\n"
-#: g10/g10.c:838
+#: g10/g10.c:845
#, c-format
msgid "compress algorithm must be in range %d..%d\n"
msgstr "ustawienie algortytmu kompresji musi pochodziæ z zakresu %d..%d\n"
-#: g10/g10.c:840
+#: g10/g10.c:847
msgid "completes-needed must be greater than 0\n"
msgstr "opcja completes-needed musi byæ ustawiona na warto¶æ wiêksz± od 0\n"
-#: g10/g10.c:842
+#: g10/g10.c:849
msgid "marginals-needed must be greater than 1\n"
msgstr "opcja marginals-needed musi byæ ustawiona na warto¶æ wiêksz± od 1\n"
-#: g10/g10.c:844
+#: g10/g10.c:851
msgid "max-cert-depth must be in range 1 to 255\n"
msgstr ""
-#: g10/g10.c:847
+#: g10/g10.c:854
msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
msgstr ""
-#: g10/g10.c:851
+#: g10/g10.c:858
msgid "invalid S2K mode; must be 0, 1 or 3\n"
msgstr ""
-#: g10/g10.c:934
+#: g10/g10.c:941
#, c-format
msgid "failed to initialize the TrustDB: %s\n"
msgstr "Inicjowanie Bazy Zaufania nie powiod³o siê: %s\n"
-#: g10/g10.c:940
+#: g10/g10.c:947
msgid "--store [filename]"
msgstr "--store [plik]"
-#: g10/g10.c:948
+#: g10/g10.c:955
msgid "--symmetric [filename]"
msgstr "--symmetric [plik]"
-#: g10/g10.c:956
+#: g10/g10.c:963
msgid "--encrypt [filename]"
msgstr "--encrypt [plik]"
-#: g10/g10.c:969
+#: g10/g10.c:976
msgid "--sign [filename]"
msgstr "--sign [plik]"
-#: g10/g10.c:982
+#: g10/g10.c:989
msgid "--sign --encrypt [filename]"
msgstr "--sign --encrypt [plik]"
-#: g10/g10.c:996
+#: g10/g10.c:1003
msgid "--clearsign [filename]"
msgstr "--clearsign [plik]\""
-#: g10/g10.c:1008
+#: g10/g10.c:1015
msgid "--decrypt [filename]"
msgstr "--decrypt [plik]"
-#: g10/g10.c:1017
+#: g10/g10.c:1024
#, fuzzy
msgid "--edit-key username [commands]"
msgstr "--edit-key nazwa u¿ytkownika"
-#: g10/g10.c:1033
+#: g10/g10.c:1040
msgid "--delete-secret-key username"
msgstr "--delete-secret-key nazwa u¿ytkownika"
-#: g10/g10.c:1036
+#: g10/g10.c:1043
msgid "--delete-key username"
msgstr "--delete-key nazwa u¿ytkownika"
-#: g10/encode.c:216 g10/g10.c:1059 g10/sign.c:301
+#: g10/encode.c:216 g10/g10.c:1066 g10/sign.c:311
#, c-format
msgid "can't open %s: %s\n"
msgstr "nie mogê otworzyæ %s: %s\n"
-#: g10/g10.c:1070
+#: g10/g10.c:1077
msgid "-k[v][v][v][c] [userid] [keyring]"
msgstr "-k[v][v][v][c] [identyfikator] [zbiór kluczy]"
-#: g10/g10.c:1127
+#: g10/g10.c:1138
#, c-format
msgid "dearmoring failed: %s\n"
msgstr "Usuniêcie opakowania ASCII nie powiod³o siê: %s\n"
-#: g10/g10.c:1135
+#: g10/g10.c:1146
#, c-format
msgid "enarmoring failed: %s\n"
msgstr "Opakowywanie ASCII nie powiod³o siê: %s\n"
-#: g10/g10.c:1201
+#: g10/g10.c:1212
#, c-format
msgid "invalid hash algorithm `%s'\n"
msgstr "niew³a¶ciwy algorytm skrótu `%s'\n"
-#: g10/g10.c:1280
+#: g10/g10.c:1291
msgid "[filename]"
msgstr "[nazwa pliku]"
-#: g10/g10.c:1284
+#: g10/g10.c:1295
msgid "Go ahead and type your message ...\n"
msgstr ""
-#: g10/decrypt.c:59 g10/g10.c:1287 g10/verify.c:66
+#: g10/decrypt.c:59 g10/g10.c:1298 g10/verify.c:66
#, c-format
msgid "can't open `%s'\n"
msgstr "nie mogê otworzyæ '%s\"\n"
-#: g10/armor.c:321
+#: g10/armor.c:297
#, fuzzy, c-format
msgid "armor: %s\n"
msgstr "b³±d odczytu: %s\n"
-#: g10/armor.c:344
+#: g10/armor.c:320
msgid "invalid armor header: "
msgstr ""
-#: g10/armor.c:351
+#: g10/armor.c:327
msgid "armor header: "
msgstr ""
-#: g10/armor.c:362
+#: g10/armor.c:338
#, fuzzy
msgid "invalid clearsig header\n"
msgstr "Niew³a¶ciwy znak w imieniu lub nazwisku\n"
-#: g10/armor.c:414
+#: g10/armor.c:390
#, fuzzy
msgid "nested clear text signatures\n"
msgstr "|[plik]|z³o¿enie podpisu na czytelnym dokumencie"
-#: g10/armor.c:530
+#: g10/armor.c:508
msgid "invalid dash escaped line: "
msgstr ""
-#: g10/armor.c:538
+#: g10/armor.c:516
msgid "unexpected armor:"
msgstr ""
-#: g10/armor.c:624
+#: g10/armor.c:632
#, fuzzy, c-format
msgid "invalid radix64 character %02x skipped\n"
msgstr "Niew³a¶ciwy znak w imieniu lub nazwisku\n"
-#: g10/armor.c:654
+#: g10/armor.c:675
msgid "premature eof (no CRC)\n"
msgstr ""
-#: g10/armor.c:671
+#: g10/armor.c:709
msgid "premature eof (in CRC)\n"
msgstr ""
-#: g10/armor.c:675
+#: g10/armor.c:713
msgid "malformed CRC\n"
msgstr ""
-#: g10/armor.c:679
+#: g10/armor.c:717
#, c-format
msgid "CRC error; %06lx - %06lx\n"
msgstr ""
-#: g10/armor.c:696
+#: g10/armor.c:734
msgid "premature eof (in Trailer)\n"
msgstr ""
-#: g10/armor.c:700
+#: g10/armor.c:738
msgid "error in trailer line\n"
msgstr ""
-#: g10/armor.c:961
+#: g10/armor.c:999
msgid "no valid OpenPGP data found.\n"
msgstr ""
-#: g10/armor.c:963
+#: g10/armor.c:1001
#, c-format
msgid "invalid armor: line longer than %d characters\n"
msgstr ""
+#: g10/armor.c:1005
+msgid ""
+"quoted printable character in armor - probably a buggy MTA has been used\n"
+msgstr ""
+
#: g10/pkclist.c:138
#, fuzzy, c-format
msgid ""
"No trust value assigned to %lu:\n"
"%4u%c/%08lX %s \""
msgstr ""
"Brak definicji zaufania w³a¶ciciela dla %lu:\n"
"%4u%c/%08lX %s \""
#: g10/pkclist.c:148
msgid ""
"Please decide how far you trust this user to correctly\n"
"verify other users' keys (by looking at passports,\n"
"checking fingerprints from different sources...)?\n"
"\n"
" 1 = Don't know\n"
" 2 = I do NOT trust\n"
" 3 = I trust marginally\n"
" 4 = I trust fully\n"
" s = please show me more information\n"
msgstr ""
"Zastanów siê jak bardzo ufasz temu u¿ytkownikowi w kwestii sprawdzania\n"
"to¿samo¶ci innych w³a¶cicieli kluczy (czy sprawdzi on odciski klucza \n"
"pobrane z ró¿nych ¼róde³, dokumenty potwierdzaj±ce to¿samo¶æ w³a¶ciciela\n"
"klucza itd.)?\n"
"\n"
" 1 = Nie wiem.\n"
" 2 = NIE ufam mu w tej kwestii.\n"
" 3 = Ufam marginalnie.\n"
" 4 = W pe³ni mu ufam.\n"
" i = potrzebujê wiêcej informacji\n"
#: g10/pkclist.c:157
msgid " m = back to the main menu\n"
msgstr " p = powrót do g³ównego menu\n"
#: g10/pkclist.c:159
msgid " q = quit\n"
msgstr ""
#. a string with valid answers
#: g10/pkclist.c:164
#, fuzzy
msgid "sSmMqQ"
msgstr "iIpP"
#: g10/pkclist.c:168
msgid "Your decision? "
msgstr "Twoja decyzja? "
#: g10/pkclist.c:188
msgid "Certificates leading to an ultimately trusted key:\n"
msgstr ""
#: g10/pkclist.c:223
msgid ""
"Could not find a valid trust path to the key. Let's see whether we\n"
"can assign some missing owner trust values.\n"
"\n"
msgstr ""
"Niemo¿liwe jest znalezienie poprawnej scie¿ki zaufania do tego klucza.\n"
"Sprawd¼my czy mo¿na przypisaæ brakuj±ce warto¶ci zaufania.\n"
"\n"
#: g10/pkclist.c:261
msgid ""
"No path leading to one of our keys found.\n"
"\n"
msgstr ""
#: g10/pkclist.c:263
msgid ""
"No certificates with undefined trust found.\n"
"\n"
msgstr ""
#: g10/pkclist.c:265
#, fuzzy
msgid ""
"No trust values changed.\n"
"\n"
msgstr "Parametry zaufania w³a¶ciciela nie zosta³y zmienione.\n"
#: g10/pkclist.c:280
#, fuzzy, c-format
msgid "key %08lX: key has been revoked!\n"
msgstr "klucz %08lX: pozostawiony bez zmian\n"
#: g10/pkclist.c:286 g10/pkclist.c:381
msgid "Use this key anyway? "
msgstr "U¿yæ tego klucza pomimo to? "
#: g10/pkclist.c:308
#, fuzzy, c-format
msgid "%08lX: key has expired\n"
msgstr "Uwaga: Data wa¿no¶ci tego klucza up³ynê³a!\n"
#: g10/pkclist.c:314
#, c-format
msgid "%08lX: no info to calculate a trust probability\n"
msgstr ""
#: g10/pkclist.c:332
#, fuzzy, c-format
msgid "%08lX: We do NOT trust this key\n"
msgstr "OSTRZE¯ENIE: Nie ufamy temu kluczowi!\n"
#: g10/pkclist.c:338
#, c-format
msgid ""
"%08lX: It is not sure that this key really belongs to the owner\n"
"but it is accepted anyway\n"
msgstr ""
#: g10/pkclist.c:344
msgid "This key probably belongs to the owner\n"
msgstr ""
#: g10/pkclist.c:349
msgid "This key belongs to us\n"
msgstr ""
#: g10/pkclist.c:376
msgid ""
"It is NOT certain that the key belongs to its owner.\n"
"If you *really* know what you are doing, you may answer\n"
"the next question with yes\n"
"\n"
msgstr ""
"NIE MA pewno¶ci ¿e ten klucz nale¿y do osoby która podaje siê za jego\n"
"w³a¶ciciela. Je¶li nie masz co do tego ¿adnych w±tpliwo¶ci i *naprawdê*\n"
"wiesz co robisz mo¿esz odpowiedzieæ \"tak\" na nastêpne pytanie.\n"
#: g10/pkclist.c:385
msgid "WARNING: Using untrusted key!\n"
msgstr "OSTRZE¯ENIE: u¿ywany jest klucz nie obdarzony zaufaniem!\n"
#: g10/pkclist.c:421
msgid "WARNING: This key has been revoked by its owner!\n"
msgstr "OSTRZE¯ENIE: Ten klucz zosta³ uniewa¿niony przez w³a¶ciciela!\n"
#: g10/pkclist.c:422
msgid " This could mean that the signature is forgery.\n"
msgstr " To mo¿e oznaczaæ ¿e podpis jest fa³szerstwem.\n"
#: g10/pkclist.c:443
msgid "Note: This key has expired!\n"
msgstr "Uwaga: Data wa¿no¶ci tego klucza up³ynê³a!\n"
#: g10/pkclist.c:450
msgid "WARNING: This key is not certified with a trusted signature!\n"
msgstr "OSTRZE¯ENIE: Ten klucz nie jest po¶wiadczony zaufanym podpisem!\n"
#: g10/pkclist.c:452
msgid ""
" There is no indication that the signature belongs to the owner.\n"
msgstr ""
" Nic nie wskazuje na to ¿e ten podpis nale¿y do w³a¶ciciela "
"klucza.\n"
#: g10/pkclist.c:468
msgid "WARNING: We do NOT trust this key!\n"
msgstr "OSTRZE¯ENIE: Nie ufamy temu kluczowi!\n"
#: g10/pkclist.c:469
msgid " The signature is probably a FORGERY.\n"
msgstr " Ten podpis prawdopodobnie jest FA£SZERSTWEM.\n"
#: g10/pkclist.c:476
msgid ""
"WARNING: This key is not certified with sufficiently trusted signatures!\n"
msgstr ""
"OSTRZE¯ENIE: Ten klucz nie jest po¶wiadczony wystarczaj±co zaufanymi "
"podpisami!\n"
#: g10/pkclist.c:479
msgid " It is not certain that the signature belongs to the owner.\n"
msgstr ""
" Nie ma pewno¶ci ¿e ten podpis zosta³ z³o¿nony przez w³a¶ciciela.\n"
#: g10/pkclist.c:524
msgid ""
"You did not specify a user ID. (you may use \"-r\")\n"
"\n"
msgstr ""
"Nie poda³e¶ identyfikatora u¿ytkownika (user ID). \n"
"Mo¿na to zrobiæ za pomoc± opcji \"-r\".\n"
#: g10/pkclist.c:529
msgid "Enter the user ID: "
msgstr "Wprowad¼ identyfikator u¿ytkownika (user ID): "
#: g10/pkclist.c:540
msgid "No such user ID.\n"
msgstr "Brak takiego identyfikatora u¿ytkownika.\n"
#: g10/pkclist.c:574 g10/pkclist.c:601
#, c-format
msgid "%s: skipped: %s\n"
msgstr "%s: pominiêty: %s\n"
#: g10/pkclist.c:582
#, c-format
msgid "%s: error checking key: %s\n"
msgstr "%s: b³±d podczas sprawdzania klucza: %s\n"
#: g10/pkclist.c:608
msgid "no valid addressees\n"
msgstr "brak poprawnych adresów\n"
#: g10/keygen.c:124
msgid "writing self signature\n"
msgstr "zapis podpisu klucza nim samym\n"
#: g10/keygen.c:162
msgid "writing key binding signature\n"
msgstr "zapis podpisu wi±¿±cego klucz\n"
#: g10/keygen.c:388
msgid "Please select what kind of key you want:\n"
msgstr "Proszê wybraæ rodzaj klucza:\n"
#: g10/keygen.c:390
#, c-format
msgid " (%d) DSA and ElGamal (default)\n"
msgstr " (%d) Para kluczy dla algorytmów DSA i ElGamala (domy¶lne)\n"
#: g10/keygen.c:391
#, c-format
msgid " (%d) DSA (sign only)\n"
msgstr " (%d) DSA (tylko do podpisywania)\n"
#: g10/keygen.c:393
#, c-format
msgid " (%d) ElGamal (encrypt only)\n"
msgstr " (%d) Klucz dla algorytmu ElGamala (tylko szyfrowanie)\n"
#: g10/keygen.c:394
#, c-format
msgid " (%d) ElGamal (sign and encrypt)\n"
msgstr " (%d) Klucz dla algorytmu ElGamala (szyfrowanie i podpisywanie)\n"
#: g10/keygen.c:396
#, c-format
msgid " (%d) ElGamal in a v3 packet\n"
msgstr ""
" (%d) Klucz dla algorytmu ElGamala w pakiecie w trzeciej wersji formatu\n"
#: g10/keygen.c:401
msgid "Your selection? "
msgstr "Twój wybór? "
#: g10/keygen.c:411
#, fuzzy
msgid "Do you really want to create a sign and encrypt key? "
msgstr "Czy na pewno chcesz usun±æ wybrane klucze? "
#: g10/keygen.c:432
msgid "Invalid selection.\n"
msgstr "Niew³a¶ciwy wybór.\n"
#: g10/keygen.c:444
#, c-format
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 ""
"Nast±pi generacja nowej pary kluczy dla algorytmu(ów) %s.\n"
" minimalny rozmiar klucza wynosi 768 bitów\n"
" domy¶lny rozmiar klucza wynosi 1024 bity\n"
" najwiêkszy sugerowany rozmiar klucza wynosi 2048 bitów\n"
#: g10/keygen.c:451
msgid "What keysize do you want? (1024) "
msgstr "Jakiej d³ugo¶ci klucz wygenerowaæ? (1024) "
#: g10/keygen.c:456
msgid "DSA only allows keysizes from 512 to 1024\n"
msgstr "Klucz dla DSA musi mieæ d³ugo¶æ pomiêdzy 512 i 1024 bitow.\n"
#: g10/keygen.c:458
msgid "keysize too small; 768 is smallest value allowed.\n"
msgstr "D³ugo¶æ klucza zbyt ma³a; minimalna dopuszczona wynosi 768 bitów.\n"
#: g10/keygen.c:461
msgid ""
"Keysizes larger than 2048 are not suggested because\n"
"computations take REALLY long!\n"
msgstr ""
"Klucze d³u¿sze ni¿ 2048 bitów s± odradzane poniewa¿ obliczenia\n"
"potrzebne do ich wygenerowania trwaj± BARDZO d³ugo!\n"
#: g10/keygen.c:464
msgid "Are you sure that you want this keysize? "
msgstr "Na pewno wygenerowaæ klucz takiej d³ugo¶ci? "
#: g10/keygen.c:465
msgid ""
"Okay, but keep in mind that your monitor and keyboard radiation is also very "
"vulnerable to attacks!\n"
msgstr ""
"Nale¿y tak¿e pamiêtaæ o tym, ¿e informacje mog± byæ te¿ wykradzione z\n"
"komputera przez pods³uch emisji elektromagnetycznej klawiatury i monitora!\n"
#: g10/keygen.c:473
msgid "Do you really need such a large keysize? "
msgstr "Czy naprawdê potrzebujesz takiego d³ugiego klucza? "
#: g10/keygen.c:479
#, c-format
msgid "Requested keysize is %u bits\n"
msgstr "¯±dana d³ugo¶æ klucza to %u bity.\n"
#: g10/keygen.c:482 g10/keygen.c:486
#, c-format
msgid "rounded up to %u bits\n"
msgstr "zaokr±glono do %u bitów\n"
#: g10/keygen.c:499
msgid ""
"Please specify how long the key should be valid.\n"
" 0 = key does not expire\n"
" <n> = key expires in n days\n"
" <n>w = key expires in n weeks\n"
" <n>m = key expires in n months\n"
" <n>y = key expires in n years\n"
msgstr ""
"Okres wa¿no¶æi klucza.\n"
" 0 = klucz nie ma okre¶lonego terminu wa¿no¶ci\n"
" <n> = termin wa¿no¶ci klucza up³ywa za n dni\n"
" <n>w = termin wa¿no¶ci klucza up³ywa za n tygodni\n"
" <n>m = termin wa¿no¶ci klucza up³ywa za n miesiêcy\n"
" <n>y = termin wa¿no¶ci klucza up³ywa za n lat\n"
#: g10/keygen.c:514
msgid "Key is valid for? (0) "
msgstr "Okres wa¿no¶ci klucza ? (0) "
#: g10/keygen.c:525
msgid "invalid value\n"
msgstr "niepoprawna warto¶æ\n"
#: g10/keygen.c:530
msgid "Key does not expire at all\n"
msgstr "Klucz nie ma daty wa¿no¶ci (nie traci wa¿no¶ci z up³ywem czasu).\n"
#. print the date when the key expires
#: g10/keygen.c:536
#, c-format
msgid "Key expires at %s\n"
msgstr "Data wa¿no¶ci klucza: %s\n"
#: g10/keygen.c:542
msgid "Is this correct (y/n)? "
msgstr "Dane poprawne (t/n)? "
#: g10/keygen.c:584
msgid ""
"\n"
"You need a User-ID to identify your key; the software constructs the user "
"id\n"
"from Real Name, Comment and Email Address in this form:\n"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
msgstr ""
"\n"
"Musisz okre¶liæ identyfikator u¿ytkownika aby mo¿na by³o rozpoznaæ twój\n"
"klucz; program z³o¿y go z twojego imienia i nazwiska, komentarza i adresu\n"
"poczty elektronicznej. Bêdzie on mia³ tak± postaæ:\n"
" \"Jan Kowalski (Ziutek) <jank@provider.com.pl>\"\n"
"\n"
#: g10/keygen.c:595
msgid "Real name: "
msgstr "Imiê i nazwisko: "
#: g10/keygen.c:599
msgid "Invalid character in name\n"
msgstr "Niew³a¶ciwy znak w imieniu lub nazwisku\n"
#: g10/keygen.c:601
msgid "Name may not start with a digit\n"
msgstr "Imiê lub nazwisko nie mo¿e zaczynaæ siê od cyfry\n"
#: g10/keygen.c:603
msgid "Name must be at least 5 characters long\n"
msgstr "Imiê i nazwisko musz± mieæ conajmniej 5 znaków d³ugo¶ci.\n"
#: g10/keygen.c:611
msgid "Email address: "
msgstr "Adres poczty elektronicznej: "
#: g10/keygen.c:623
msgid "Not a valid email address\n"
msgstr "To nie jest poprawny adres poczty elektronicznej\n"
#: g10/keygen.c:631
msgid "Comment: "
msgstr "Komentarz:"
#: g10/keygen.c:637
msgid "Invalid character in comment\n"
msgstr "Niew³a¶ciwy znak w komentarzu\n"
#: g10/keygen.c:657
#, c-format
msgid ""
"You selected this USER-ID:\n"
" \"%s\"\n"
"\n"
msgstr ""
"Twój identyfikator u¿ytkownika bêdzie wygl±da³ tak:\n"
" \"%s\"\n"
"\n"
#: g10/keygen.c:660
msgid "NnCcEeOoQq"
msgstr "IiKkEeDdWw"
#: g10/keygen.c:670
msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
msgstr ""
"Zmieniæ (I)miê/nazwisko, (K)omentarz, adres (E)mail, \n"
"przej¶æ (D)alej czy (W)yj¶æ z programu ? "
#: g10/keygen.c:722
msgid ""
"You need a Passphrase to protect your secret key.\n"
"\n"
msgstr ""
"Musisz podaæ wyra¿enie przej¶ciowe (has³o) aby ochroniæ swók klucz tajny.\n"
#: g10/keyedit.c:389 g10/keygen.c:730
msgid "passphrase not correctly repeated; try again.\n"
msgstr ""
"Powtórzone wyra¿enie przej¶ciowe nie zgadza siê z podanym w pierwszej "
"próbie;\n"
"spróbuj jeszcze raz.\n"
#: g10/keygen.c:736
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 ""
"Nie chcesz podaæ wyra¿enia przej¶ciowego (has³a) - to z³y pomys³!\n"
"W ka¿dej chwili mo¿esz ustawiæ wyra¿enie przej¶ciowe u¿ywaj±c tego programu\n"
"i opcji \"--edit-key\".\n"
"\n"
#: g10/keygen.c:757
msgid ""
"We need to generate a lot of random bytes. It is a good idea to perform\n"
"some other action (work in another window, move the mouse, utilize the\n"
"network and the disks) during the prime generation; this gives the random\n"
"number generator a better chance to gain enough entropy.\n"
msgstr ""
"Program musi wygenerowaæ du¿o losowych bajtów. Dobrze by by³o, zmusiæ "
"komputer\n"
"do równoleg³ej pracy nad czym¶ innym (w innym oknie, wykonaæ jakie¶ ruchy\n"
"myszk±, u¿yæ sieci albo odwo³aæ siê do dysku) podczas generacji liczb\n"
"pierwszych; to daje komputerowi szansê zebrania dostatecznej ilo¶ci "
"entropii\n"
"do zasilenia generatora liczb losowych.\n"
#: g10/keygen.c:827
msgid "Key generation can only be used in interactive mode\n"
msgstr "Generacjê klucza mo¿na wykonywaæ tylko w trybie interaktywnym\n"
#: g10/keygen.c:835
msgid "DSA keypair will have 1024 bits.\n"
msgstr "Para kluczy dla DSA bêdzie mia³a 1024 bity d³ugo¶ci.\n"
#: g10/keygen.c:841
msgid "Key generation cancelled.\n"
msgstr "Procedura generacji klucza zosta³a anulowana.\n"
#: g10/keygen.c:851
#, c-format
msgid "writing public certificate to `%s'\n"
msgstr "zapisujê certyfikat publiczny w `%s'\n"
#: g10/keygen.c:852
#, c-format
msgid "writing secret certificate to `%s'\n"
msgstr "zapisujê certyfikat prywatny w `%s'\n"
#: g10/keygen.c:929
msgid "public and secret key created and signed.\n"
msgstr "Prywatny i publiczny klucz zosta³ stworzony i podpisany.\n"
#: g10/keygen.c:931
+#, fuzzy
msgid ""
"Note that this key cannot be used for encryption. You may want to use\n"
-"the command \"--add-key\" to generate a secondary key for this purpose.\n"
+"the command \"--edit-key\" to generate a secondary key for this purpose.\n"
msgstr ""
"Uwaga: ten klucz nie mo¿e byæ wykorzystany do szyfrowania. Je¶li chcesz \n"
"u¿yæ go do szyfrowania, musisz komend± \"--add-key\" dodaæ do niego "
"podklucz\n"
"do obs³ugi szyfrowania i deszyfrowania.\n"
-#: g10/keygen.c:945 g10/keygen.c:1030
+#: g10/keygen.c:945 g10/keygen.c:1044
#, c-format
msgid "Key generation failed: %s\n"
msgstr "Generacja klucza nie powiod³a siê: %s\n"
-#: g10/keygen.c:1008
+#: g10/keygen.c:989 g10/sig-check.c:172 g10/sign.c:52
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu second in future (time warp or clock problem)\n"
+msgstr ""
+"Klucz publiczny zosta³ stworzony w przysz³o¶ci (zaburzenia \n"
+"czasoprzestrzeni, lub ¼le ustawiony zegar systemowy)\n"
+
+#: g10/keygen.c:991 g10/sig-check.c:174 g10/sign.c:54
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu seconds in future (time warp or clock problem)\n"
+msgstr ""
+"Klucz publiczny zosta³ stworzony w przysz³o¶ci (zaburzenia \n"
+"czasoprzestrzeni, lub ¼le ustawiony zegar systemowy)\n"
+
+#: g10/keygen.c:1022
msgid "Really create? "
msgstr "Na pewno generowaæ? "
#: g10/encode.c:88 g10/openfile.c:81 g10/openfile.c:158 g10/tdbio.c:459
#: g10/tdbio.c:510
#, c-format
msgid "%s: can't open: %s\n"
msgstr "%s: nie mogê otworzyæ: %s\n"
#: g10/encode.c:107
#, c-format
msgid "error creating passphrase: %s\n"
msgstr "b³±d podczs tworzenia wyra¿enia przej¶ciowego (has³a): %s\n"
#: g10/encode.c:155 g10/encode.c:269
#, fuzzy, c-format
msgid "%s: WARNING: empty file\n"
msgstr "%s: ostrze¿enie: plik jest pusty\n"
#: g10/encode.c:222
#, c-format
msgid "reading from `%s'\n"
msgstr "odczyt z `%s'\n"
#: g10/encode.c:397
#, fuzzy, c-format
msgid "%s/%s encrypted for: %s\n"
msgstr "%s zaszyfrowany dla: %s\n"
-#: g10/export.c:114
+#: g10/export.c:147
#, fuzzy, c-format
msgid "%s: user not found: %s\n"
msgstr "%s: nie znaleziono u¿ytkownika\n"
-#: g10/export.c:123
+#: g10/export.c:156
#, c-format
msgid "certificate read problem: %s\n"
msgstr ""
-#: g10/export.c:132
+#: g10/export.c:165
#, fuzzy, c-format
msgid "key %08lX: not a rfc2440 key - skipped\n"
msgstr "klucz %08lX: niepoprawny certyfikat uniewa¿nienia: %s - pominiêty\n"
-#: g10/export.c:174
+#: g10/export.c:203
#, fuzzy
msgid "WARNING: nothing exported\n"
msgstr "OSTRZE¯ENIE: u¿ywany jest klucz nie obdarzony zaufaniem!\n"
#: g10/getkey.c:164
msgid "too many entries in pk cache - disabled\n"
msgstr ""
#: g10/getkey.c:294
msgid "too many entries in unk cache - disabled\n"
msgstr ""
#: g10/getkey.c:1038
#, c-format
msgid "using secondary key %08lX instead of primary key %08lX\n"
msgstr ""
-#: g10/import.c:129 g10/trustdb.c:1180
+#: g10/import.c:117 g10/trustdb.c:1180
#, c-format
msgid "can't open file: %s\n"
msgstr "nie mo¿na otworzyæ pliku: %s\n"
-#: g10/import.c:148
+#: g10/import.c:165
#, c-format
msgid "skipping block of type %d\n"
msgstr "pomijam blok typu %d\n"
-#: g10/import.c:155 g10/trustdb.c:1474 g10/trustdb.c:1543
+#: g10/import.c:172 g10/trustdb.c:1474 g10/trustdb.c:1543
#, c-format
msgid "%lu keys so far processed\n"
msgstr ""
-#: g10/import.c:160 g10/trustdb.c:1256
+#: g10/import.c:177 g10/trustdb.c:1256
#, c-format
msgid "read error: %s\n"
msgstr "b³±d odczytu: %s\n"
-#: g10/import.c:162
+#: g10/import.c:179
#, c-format
msgid "Total number processed: %lu\n"
msgstr ""
-#: g10/import.c:164
+#: g10/import.c:181
#, c-format
msgid " w/o user IDs: %lu\n"
msgstr ""
-#: g10/import.c:166
+#: g10/import.c:183
#, c-format
msgid " imported: %lu"
msgstr ""
-#: g10/import.c:172
+#: g10/import.c:189
#, c-format
msgid " unchanged: %lu\n"
msgstr ""
-#: g10/import.c:174
+#: g10/import.c:191
#, c-format
msgid " new user IDs: %lu\n"
msgstr ""
-#: g10/import.c:176
+#: g10/import.c:193
#, c-format
msgid " new subkeys: %lu\n"
msgstr ""
-#: g10/import.c:178
+#: g10/import.c:195
#, fuzzy, c-format
msgid " new signatures: %lu\n"
msgstr "klucz %08lX: %d nowych podpisów\n"
-#: g10/import.c:180
+#: g10/import.c:197
#, c-format
msgid " new key revocations: %lu\n"
msgstr ""
-#: g10/import.c:182
+#: g10/import.c:199
#, fuzzy, c-format
msgid " secret keys read: %lu\n"
msgstr "b³±d procedury enum_secret_keys: %s\n"
-#: g10/import.c:184
+#: g10/import.c:201
#, fuzzy, c-format
msgid " secret keys imported: %lu\n"
msgstr "Klucz %08lX: klucz tajny wczytany do zbioru\n"
-#: g10/import.c:186
+#: g10/import.c:203
#, fuzzy, c-format
msgid " secret keys unchanged: %lu\n"
msgstr "b³±d procedury enum_secret_keys: %s\n"
-#: g10/import.c:328 g10/import.c:520
+#: g10/import.c:343 g10/import.c:535
#, c-format
msgid "key %08lX: no user id\n"
msgstr "klucz %08lX: brak identyfikatora u¿ytkownika\n"
-#: g10/import.c:339
+#: g10/import.c:354
#, c-format
msgid "key %08lX: no valid user ids\n"
msgstr "klucz %08lX: brak poprawnych identyfikatorów u¿ytkownika\n"
-#: g10/import.c:341
+#: g10/import.c:356
msgid "this may be caused by a missing self-signature\n"
msgstr "to mo¿e byæ spowodowane brakiem podpisu w³a¶ciciela klucza\n"
-#: g10/import.c:352 g10/import.c:588
+#: g10/import.c:367 g10/import.c:603
#, c-format
msgid "key %08lX: public key not found: %s\n"
msgstr "klucz %08lX: brak klucza publicznegoL %s\n"
-#: g10/import.c:358
+#: g10/import.c:373
msgid "no default public keyring\n"
msgstr "brak domy¶lnego zbioru kluczy publicznych\n"
-#: g10/import.c:362 g10/openfile.c:105 g10/sign.c:205 g10/sign.c:592
+#: g10/import.c:377 g10/openfile.c:105 g10/sign.c:215 g10/sign.c:601
#, c-format
msgid "writing to `%s'\n"
msgstr "zapisywanie '%s\"\n"
-#: g10/import.c:366 g10/import.c:426 g10/import.c:642
+#: g10/import.c:381 g10/import.c:441 g10/import.c:657
#, c-format
msgid "can't lock public keyring: %s\n"
msgstr "nie mogê zablokowaæ zbioru kluczy publicznych: %s\n"
-#: g10/import.c:369
+#: g10/import.c:384
#, c-format
msgid "can't write to keyring: %s\n"
msgstr "niemo¿liwy jest zapis do zbioru kluczy: %s\n"
-#: g10/import.c:373
+#: g10/import.c:388
#, c-format
msgid "key %08lX: public key imported\n"
msgstr "klucz %08lX: klucz publiczny wczytany\n"
-#: g10/import.c:386
+#: g10/import.c:401
#, c-format
msgid "key %08lX: doesn't match our copy\n"
msgstr "klucz %08lX: nie zgadza siê z lokalnie posiadan± kopi±\n"
-#: g10/import.c:399 g10/import.c:597
+#: g10/import.c:414 g10/import.c:612
#, c-format
msgid "key %08lX: can't locate original keyblock: %s\n"
msgstr "klucz %08lX: brak oryginalnego bloku klucza; %s\n"
-#: g10/import.c:406 g10/import.c:604
+#: g10/import.c:421 g10/import.c:619
#, c-format
msgid "key %08lX: can't read original keyblock: %s\n"
msgstr "klucz %08lX: nie mo¿na odczytaæ oryginalnego bloku klucza; %s\n"
-#: g10/import.c:423 g10/import.c:535 g10/import.c:639
+#: g10/import.c:438 g10/import.c:550 g10/import.c:654
msgid "writing keyblock\n"
msgstr "zapisujê blok klucza\n"
-#: g10/import.c:429 g10/import.c:645
+#: g10/import.c:444 g10/import.c:660
#, c-format
msgid "can't write keyblock: %s\n"
msgstr "nie mogê zapisaæ bloku klucza: %s\n"
-#: g10/import.c:434
+#: g10/import.c:449
#, c-format
msgid "key %08lX: 1 new user-id\n"
msgstr "klucz %08lX: 1 nowy identyfikator u¿ytkownika\n"
-#: g10/import.c:437
+#: g10/import.c:452
#, c-format
msgid "key %08lX: %d new user-ids\n"
msgstr "klucz %08lX: %d nowych identyfikatorów u¿ytkownika\n"
-#: g10/import.c:440
+#: g10/import.c:455
#, c-format
msgid "key %08lX: 1 new signature\n"
msgstr "klucz %08lX: 1 nowy podpis\n"
-#: g10/import.c:443
+#: g10/import.c:458
#, c-format
msgid "key %08lX: %d new signatures\n"
msgstr "klucz %08lX: %d nowych podpisów\n"
-#: g10/import.c:446
+#: g10/import.c:461
#, c-format
msgid "key %08lX: 1 new subkey\n"
msgstr "klucz %08lX: 1 nowy podklucz\n"
-#: g10/import.c:449
+#: g10/import.c:464
#, c-format
msgid "key %08lX: %d new subkeys\n"
msgstr "klucz %08lX: %d nowych podkluczy\n"
-#: g10/import.c:459
+#: g10/import.c:474
#, c-format
msgid "key %08lX: not changed\n"
msgstr "klucz %08lX: pozostawiony bez zmian\n"
-#: g10/import.c:538
+#: g10/import.c:553
#, c-format
msgid "can't lock secret keyring: %s\n"
msgstr "nie mogê zablokowaæ zbioru kluczy tajnych: %s\n"
-#: g10/import.c:541
+#: g10/import.c:556
#, fuzzy, c-format
msgid "can't write keyring: %s\n"
msgstr "niemo¿liwy jest zapis do zbioru kluczy: %s\n"
#. we are ready
-#: g10/import.c:544
+#: g10/import.c:559
#, c-format
msgid "key %08lX: secret key imported\n"
msgstr "Klucz %08lX: klucz tajny wczytany do zbioru\n"
#. we can't merge secret keys
-#: g10/import.c:548
+#: g10/import.c:563
#, c-format
msgid "key %08lX: already in secret keyring\n"
msgstr "Klucz %08lX: ten klucz ju¿ znajduje siê w zbiorze\n"
-#: g10/import.c:553
+#: g10/import.c:568
#, c-format
msgid "key %08lX: secret key not found: %s\n"
msgstr "klucz %08lX: brak klucza tajnego: %s\n"
-#: g10/import.c:582
+#: g10/import.c:597
#, c-format
msgid "key %08lX: no public key - can't apply revocation certificate\n"
msgstr ""
"klucz %08lX: brak klucza publicznego - wczytany certyfikat \n"
"uniwa¿nienia nie mo¿e byæ zastosowany\n"
-#: g10/import.c:615
+#: g10/import.c:630
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - rejected\n"
msgstr ""
"klucz %08lX: niepoprawny certyfikat uniewa¿nienia:\n"
"%s - odrzucony\n"
-#: g10/import.c:649
+#: g10/import.c:664
#, c-format
msgid "key %08lX: revocation certificate imported\n"
msgstr "klucz %08lX: wczytany certyfikat uniewa¿nienia\n"
-#: g10/import.c:680
+#: g10/import.c:698
#, c-format
msgid "key %08lX: no user-id for signature\n"
msgstr "klucz %08lX: brak identyfikatora u¿ytkownika do podpisu\n"
-#: g10/import.c:687
+#: g10/import.c:705 g10/import.c:729
#, c-format
msgid "key %08lX: unsupported public key algorithm\n"
msgstr ""
"klucz %08lX: nie obs³ugiwany algorytm szyfrowania z kluczem publicznym\n"
-#: g10/import.c:688
+#: g10/import.c:706
#, c-format
msgid "key %08lX: invalid self-signature\n"
msgstr "klucz %08lX: niepoprawny podpis w³a¶ciciela klucza\n"
-#: g10/import.c:717
+#: g10/import.c:722
+#, fuzzy, c-format
+msgid "key %08lX: no subkey for key binding\n"
+msgstr "klucz %08lX: brak identyfikatora u¿ytkownika\n"
+
+#: g10/import.c:730
+#, fuzzy, c-format
+msgid "key %08lX: invalid subkey binding\n"
+msgstr "klucz %08lX: brak poprawnych identyfikatorów u¿ytkownika\n"
+
+#: g10/import.c:761
#, c-format
msgid "key %08lX: skipped userid '"
msgstr "klucz %08lX: zosta³ pominiêty identyfikator u¿ytkownika '"
-#: g10/import.c:740
+#: g10/import.c:781
+#, fuzzy, c-format
+msgid "key %08lX: skipped subkey\n"
+msgstr "klucz %08lX: 1 nowy podklucz\n"
+
+#: g10/import.c:800
#, c-format
msgid "key %08lX: revocation certificate at wrong place - skipped\n"
msgstr ""
"klucz %08lX: certyfikat uniewa¿nienia umieszczony w niew³a¶ciwym miejscu\n"
"- pominiêty\n"
-#: g10/import.c:748
+#: g10/import.c:808
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - skipped\n"
msgstr "klucz %08lX: niepoprawny certyfikat uniewa¿nienia: %s - pominiêty\n"
-#: g10/import.c:807
+#: g10/import.c:867
#, c-format
msgid "key %08lX: revocation certificate added\n"
msgstr "klucz %08lX: dodany certyfikat uniewa¿nienia\n"
-#: g10/import.c:921 g10/import.c:976
+#: g10/import.c:981 g10/import.c:1036
#, c-format
msgid "key %08lX: our copy has no self-signature\n"
msgstr "klucz %08lX: dostêpna kopia nie jest podpisana ni± sam±\n"
#: g10/keyedit.c:81
#, c-format
msgid "%s: user not found\n"
msgstr "%s: nie znaleziono u¿ytkownika\n"
#: g10/keyedit.c:164
msgid "[self-signature]"
msgstr "[podpis klucza nim samym]"
#: g10/keyedit.c:182
msgid "1 bad signature\n"
msgstr "1 niepoprawny podpis\n"
#: g10/keyedit.c:184
#, c-format
msgid "%d bad signatures\n"
msgstr "%d niepoprawnych podpisów\n"
#: g10/keyedit.c:186
msgid "1 signature not checked due to a missing key\n"
msgstr "1 podpis nie zosta³ sprawdzony z powodu braku klucza\n"
#: g10/keyedit.c:188
#, c-format
msgid "%d signatures not checked due to missing keys\n"
msgstr "%d podpisów nie zosta³o sprawdzonych z powodu braku kluczy\n"
#: g10/keyedit.c:190
msgid "1 signature not checked due to an error\n"
msgstr "1 podpis nie zosta³ sprawdzony z powodu b³êdu\n"
#: g10/keyedit.c:192
#, c-format
msgid "%d signatures not checked due to errors\n"
msgstr "%d podpisów nie sprawdzonych z powodu b³êdów\n"
#: g10/keyedit.c:194
msgid "1 user id without valid self-signature detected\n"
msgstr "wykryto 1 identyfikator u¿ytkownika bez podpisu w³a¶ciciela klucza\n"
#: g10/keyedit.c:196
#, c-format
msgid "%d user ids without valid self-signatures detected\n"
msgstr ""
"wykryto %d identyfikatorów u¿ytkownika bez podpisów w³a¶ciciela klucza\n"
#: g10/keyedit.c:258
#, c-format
msgid "Already signed by key %08lX\n"
msgstr "Ju¿ podpisano kluczem %08lX.\n"
#: g10/keyedit.c:266
#, c-format
msgid "Nothing to sign with key %08lX\n"
msgstr "Nie ma nic do podpisania kluczem %08lX.\n"
#: g10/keyedit.c:275
msgid ""
"Are you really sure that you want to sign this key\n"
"with your key: \""
msgstr ""
"Czy jeste¶ naprawdê pewien ¿e chcesz podpisaæ ten klucz \n"
"swoim kluczem: \""
#: g10/keyedit.c:282
msgid "Really sign? "
msgstr "Na pewno podpisaæ? "
-#: g10/keyedit.c:303 g10/sign.c:65
+#: g10/keyedit.c:303 g10/sign.c:75
#, c-format
msgid "signing failed: %s\n"
msgstr "podpisywanie nie powiod³o siê: %s\n"
#: g10/keyedit.c:356
msgid "This key is not protected.\n"
msgstr "Ten klucz nie jest chroniony.\n"
#: g10/keyedit.c:359
msgid "Key is protected.\n"
msgstr "Klucz jest chroniony.\n"
#: g10/keyedit.c:376
#, c-format
msgid "Can't edit this key: %s\n"
msgstr "Tego klucza nie mo¿na edytowaæ: %s.\n"
#: g10/keyedit.c:381
msgid ""
"Enter the new passphrase for this secret key.\n"
"\n"
msgstr ""
"Wprowad¼ nowe wyra¿enie przej¶ciowe (has³o) dla tego klucza tajnego.\n"
"\n"
#: g10/keyedit.c:393
msgid ""
"You don't want a passphrase - this is probably a *bad* idea!\n"
"\n"
msgstr ""
"Nie chcesz podaæ wyra¿enia przej¶ciowego (has³a) - to z³y pomys³!\n"
"\n"
#: g10/keyedit.c:396
msgid "Do you really want to do this? "
msgstr "Czy na pewno chcesz to zrobiæ? "
#: g10/keyedit.c:455
msgid "moving a key signature to the correct place\n"
msgstr ""
#: g10/keyedit.c:490
msgid "quit"
msgstr "wyj¶cie"
#: g10/keyedit.c:490
msgid "quit this menu"
msgstr "wyj¶cie z tego menu"
#: g10/keyedit.c:491
msgid "q"
msgstr "w"
#: g10/keyedit.c:492
msgid "save"
msgstr "zapis"
#: g10/keyedit.c:492
msgid "save and quit"
msgstr "zapis zmian i wyj¶cie"
#: g10/keyedit.c:493
msgid "help"
msgstr "pomoc"
#: g10/keyedit.c:493
msgid "show this help"
msgstr "ten tekst pomocy"
#: g10/keyedit.c:495
msgid "fpr"
msgstr "odc"
#: g10/keyedit.c:495
msgid "show fingerprint"
msgstr "okazanie odcisku klucza"
#: g10/keyedit.c:496
msgid "list"
msgstr "lista"
#: g10/keyedit.c:496
msgid "list key and user ids"
msgstr "lista kluczy i identyfikatorów u¿ytkowników"
#: g10/keyedit.c:497
msgid "l"
msgstr "l"
#: g10/keyedit.c:498
msgid "uid"
msgstr "id"
#: g10/keyedit.c:498
msgid "select user id N"
msgstr "wybór identyfikatora u¿ytkownika N"
#: g10/keyedit.c:499
msgid "key"
msgstr "klucz"
#: g10/keyedit.c:499
msgid "select secondary key N"
msgstr "wybór podklucza N"
#: g10/keyedit.c:500
msgid "check"
msgstr "lista"
#: g10/keyedit.c:500
msgid "list signatures"
msgstr "lista podpisów"
#: g10/keyedit.c:501
msgid "c"
msgstr "l"
#: g10/keyedit.c:502
msgid "sign"
msgstr "podpis"
#: g10/keyedit.c:502
msgid "sign the key"
msgstr "z³o¿enie podpisu na kluczu"
#: g10/keyedit.c:503
msgid "s"
msgstr "p"
#: g10/keyedit.c:504
msgid "debug"
msgstr "¶ledzenia"
#: g10/keyedit.c:505
msgid "adduid"
msgstr "dodid"
#: g10/keyedit.c:505
msgid "add a user id"
msgstr "dodanie nowego identyfikatora u¿ytkownika do klucza"
#: g10/keyedit.c:506
msgid "deluid"
msgstr "usid"
#: g10/keyedit.c:506
msgid "delete user id"
msgstr "usuniêcie identyfikatora u¿ytkownika z klucza"
#: g10/keyedit.c:507
msgid "addkey"
msgstr "dodkl"
#: g10/keyedit.c:507
msgid "add a secondary key"
msgstr "dodanie podklucza"
#: g10/keyedit.c:508
msgid "delkey"
msgstr "uskl"
#: g10/keyedit.c:508
msgid "delete a secondary key"
msgstr "usuniêcie podklucza"
#: g10/keyedit.c:509
#, fuzzy
msgid "expire"
msgstr "opcje"
#: g10/keyedit.c:509
#, fuzzy
msgid "change the expire date"
msgstr "zmiana wyra¿enia przej¶ciowego (has³a)"
#: g10/keyedit.c:510
msgid "toggle"
msgstr "prze³"
#: g10/keyedit.c:510
msgid "toggle between secret and public key listing"
msgstr "prze³±czenie pomiêdzy list± kluczy publicznych i tajnych"
#: g10/keyedit.c:512
msgid "t"
msgstr "p"
#: g10/keyedit.c:513
msgid "pref"
msgstr "opcje"
#: g10/keyedit.c:513
msgid "list preferences"
msgstr "lista opcji"
#: g10/keyedit.c:514
msgid "passwd"
msgstr "has³o"
#: g10/keyedit.c:514
msgid "change the passphrase"
msgstr "zmiana wyra¿enia przej¶ciowego (has³a)"
#: g10/keyedit.c:515
msgid "trust"
msgstr "zaufanie"
#: g10/keyedit.c:515
msgid "change the ownertrust"
msgstr "zmiana zaufania w³a¶ciciela"
#: g10/keyedit.c:534
msgid "can't do that in batchmode\n"
msgstr "operacja niemo¿liwa do wykonania w trybie wsadowym\n"
#. check that they match
#. FIXME: check that they both match
#: g10/keyedit.c:561
msgid "Secret key is available.\n"
msgstr "Dostêpny jest klucz tajny.\n"
#: g10/keyedit.c:590
msgid "Command> "
msgstr "Polecenie> "
#: g10/keyedit.c:617
#, fuzzy
msgid "Need the secret key to do this.\n"
msgstr "Do wykonania tej operacji potrzebny jest klucz tajny.\n"
#: g10/keyedit.c:639
msgid "Save changes? "
msgstr "Zapisaæ zmiany? "
#: g10/keyedit.c:642
msgid "Quit without saving? "
msgstr "Wyj¶æ bez zapisania zmian? "
#: g10/keyedit.c:652
#, c-format
msgid "update failed: %s\n"
msgstr "naniesienie poprawek nie powiod³o siê: %s\n"
#: g10/keyedit.c:659
#, c-format
msgid "update secret failed: %s\n"
msgstr "naniesienie poprawek na kluczu tajnym nie powiod³o siê: %s\n"
#: g10/keyedit.c:666
msgid "Key not changed so no update needed.\n"
msgstr ""
"Klucz nie zosta³ zmieniony wiêc nanoszenie poprawek nie jest konieczne.\n"
#: g10/keyedit.c:669 g10/keyedit.c:727
#, fuzzy, c-format
msgid "update of trustdb failed: %s\n"
msgstr "naniesienie poprawek na kluczu tajnym nie powiod³o siê: %s\n"
#: g10/keyedit.c:701
msgid "Really sign all user ids? "
msgstr "Podpisaæ wszystkie identyfikatory u¿ytkownika na tym kluczu? "
#: g10/keyedit.c:702
msgid "Hint: Select the user ids to sign\n"
msgstr "Podpowied¼: wybierz identyfikatory u¿ytkownika do podpisania.\n"
#: g10/keyedit.c:738
msgid "You must select at least one user id.\n"
msgstr "Musisz wybraæ co najmniej jeden identyfikator u¿ytkownika.\n"
#: g10/keyedit.c:740
msgid "You can't delete the last user id!\n"
msgstr "Nie mo¿esz usun±æ ostatniego identyfikatora u¿ytkownika!\n"
#: g10/keyedit.c:743
msgid "Really remove all selected user ids? "
msgstr "Czy na pewno usun±æ wszystkie wybrane identyfikatory u¿ytkownika? "
#: g10/keyedit.c:744
msgid "Really remove this user id? "
msgstr "Czy na pewno usun±æ ten identyfikator u¿ytkownika? "
#: g10/keyedit.c:767
msgid "You must select at least one key.\n"
msgstr "Musisz wybraæ co najmniej jeden klucz.\n"
#: g10/keyedit.c:771
msgid "Do you really want to delete the selected keys? "
msgstr "Czy na pewno chcesz usun±æ wybrane klucze? "
#: g10/keyedit.c:772
msgid "Do you really want to delete this key? "
msgstr "Czy na pewno chcesz usun±æ ten klucz? "
#: g10/keyedit.c:819
msgid "Invalid command (try \"help\")\n"
msgstr "Niepoprawna komenda (spróbuj \"pomoc\")\n"
#: g10/keyedit.c:1197
msgid "Please remove selections from the secret keys.\n"
msgstr ""
#: g10/keyedit.c:1203
#, fuzzy
msgid "Please select at most one secondary key.\n"
msgstr "Musisz wybraæ co najmniej jeden klucz.\n"
#: g10/keyedit.c:1207
msgid "Changing exiration time for a secondary key.\n"
msgstr ""
#: g10/keyedit.c:1209
msgid "Changing exiration time for the primary key.\n"
msgstr ""
#: g10/keyedit.c:1250
msgid "You can't change the expiration date of a v3 key\n"
msgstr ""
#: g10/keyedit.c:1266
msgid "No corresponding signature in secret ring\n"
msgstr ""
#: g10/keyedit.c:1326
#, c-format
msgid "No user id with index %d\n"
msgstr "Brak identyfikatora u¿ytkownika o numerze %d.\n"
#: g10/keyedit.c:1371
#, c-format
msgid "No secondary key with index %d\n"
msgstr "Brak podklucza o indeksie %d\n"
-#: g10/mainproc.c:198
+#: g10/mainproc.c:199
#, fuzzy
msgid "public key encrypted data: good DEK\n"
msgstr "b³±d odszyfrowywania klucza publicznego: %s\n"
-#: g10/mainproc.c:201
+#: g10/mainproc.c:202
#, c-format
msgid "public key decryption failed: %s\n"
msgstr "b³±d odszyfrowywania klucza publicznego: %s\n"
-#: g10/mainproc.c:228
+#: g10/mainproc.c:229
#, fuzzy
msgid "decryption okay\n"
msgstr "b³±d odszyfrowywania: %s\n"
-#: g10/mainproc.c:231
+#: g10/mainproc.c:232
#, c-format
msgid "decryption failed: %s\n"
msgstr "b³±d odszyfrowywania: %s\n"
-#: g10/mainproc.c:248
+#: g10/mainproc.c:249
msgid "NOTE: sender requested \"for-your-eyes-only\"\n"
msgstr ""
-#: g10/mainproc.c:250
+#: g10/mainproc.c:251
#, c-format
msgid "original file name='%.*s'\n"
msgstr ""
-#: g10/mainproc.c:833
+#: g10/mainproc.c:834
msgid "signature verification suppressed\n"
msgstr ""
-#: g10/mainproc.c:839
+#: g10/mainproc.c:840
#, c-format
msgid "Signature made %.*s using %s key ID %08lX\n"
msgstr ""
"Podpis z³o¿ony %.*s za pomoc± %s,\n"
"z u¿yciem klucza o identyfikatorze %08lX\n"
-#: g10/mainproc.c:847
+#: g10/mainproc.c:852
msgid "BAD signature from \""
msgstr "NIEPOPRAWNY podpis z³o¿ony przez \""
-#: g10/mainproc.c:848
+#: g10/mainproc.c:853
msgid "Good signature from \""
msgstr "Poprawny podpis z³o¿ony przez \""
-#: g10/mainproc.c:879
+#: g10/mainproc.c:884
#, c-format
msgid "Can't check signature: %s\n"
msgstr "Nie mogê sprawdziæ podpisu: %s\n"
-#: g10/mainproc.c:952
+#: g10/mainproc.c:957
msgid "old style (PGP 2.x) signature\n"
msgstr ""
-#: g10/mainproc.c:957
+#: g10/mainproc.c:962
msgid "invalid root packet detected in proc_tree()\n"
msgstr ""
#: g10/misc.c:90
#, fuzzy, c-format
msgid "can't disable core dumps: %s\n"
msgstr "nie mogê otworzyæ %s: %s\n"
#: g10/misc.c:93
msgid "WARNING: program may create a core file!\n"
msgstr ""
#: g10/misc.c:200
msgid "Experimental algorithms should not be used!\n"
msgstr ""
#: g10/misc.c:214
msgid ""
"RSA keys are deprecated; please consider creating a new key and use this key "
"in the future\n"
msgstr ""
"Klucze RSA s± odradzane; proszê rozwa¿yæ przej¶cie na inne algorytmy po\n"
"wygenerowaniu odpowiednich kluczy.\n"
#: g10/misc.c:235
msgid "this cipher algorithm is depreciated; please use a more standard one!\n"
msgstr ""
#: g10/parse-packet.c:113
#, fuzzy, c-format
msgid "can't handle public key algorithm %d\n"
msgstr "nie mogê zablokowaæ zbioru kluczy publicznych: %s\n"
#: g10/parse-packet.c:892
#, c-format
msgid "subpacket of type %d has critical bit set\n"
msgstr ""
#: g10/passphrase.c:141
msgid ""
"\n"
"You need a passphrase to unlock the secret key for\n"
"user: \""
msgstr ""
"\n"
"Musisz podaæ wyra¿enie przej¶ciowe (has³o) aby uaktywniæ klucz tajny\n"
"dla u¿ytkownika: \""
#: g10/passphrase.c:150
#, fuzzy, c-format
msgid "%u-bit %s key, ID %08lX, created %s"
msgstr "(d³ugo¶æ %u bitów, typ %s, klucz %08lX, stworzony %s)\n"
#: g10/passphrase.c:155
#, c-format
msgid " (main key ID %08lX)"
msgstr ""
#: g10/passphrase.c:183
#, fuzzy
msgid "Enter passphrase: "
msgstr "Wyra¿enie przej¶ciowe: "
#: g10/passphrase.c:187
#, fuzzy
msgid "Repeat passphrase: "
msgstr "Proszê powtórzyæ wyra¿enie przej¶ciowe: "
#: g10/plaintext.c:63
msgid "data not saved; use option \"--output\" to save it\n"
msgstr ""
-#: g10/plaintext.c:166
+#: g10/plaintext.c:208
msgid "Please enter name of data file: "
msgstr "Nazwa pliku: "
-#: g10/plaintext.c:187
+#: g10/plaintext.c:229
msgid "reading stdin ...\n"
msgstr ""
-#: g10/plaintext.c:250
+#: g10/plaintext.c:292
#, c-format
msgid "can't open signed data `%s'\n"
msgstr "nie mogê otworzyæ podpisanego pliku `%s'\n"
#: g10/pubkey-enc.c:78
#, c-format
msgid "anonymous receiver; trying secret key %08lX ...\n"
msgstr "adresat anonimowy; próbujê klucz tajny %08lX ...\n"
#: g10/pubkey-enc.c:84
#, fuzzy
msgid "okay, we are the anonymous recipient.\n"
msgstr "OK, to my jeste¶my adresatem anonimowym.\n"
#: g10/pubkey-enc.c:136
#, fuzzy
msgid "old encoding of the DEK is not supported\n"
msgstr "%d - algorytm ochrony nie obs³ugiwany\n"
#: g10/pubkey-enc.c:183
#, fuzzy, c-format
msgid "NOTE: cipher algorithm %d not found in preferences\n"
msgstr "uwaga: brak algorytmu szyfruj±cego %d w ustawieniach\n"
#: g10/seckey-cert.c:56
#, c-format
msgid "protection algorithm %d is not supported\n"
msgstr "%d - algorytm ochrony nie obs³ugiwany\n"
#: g10/seckey-cert.c:176
msgid "Invalid passphrase; please try again ...\n"
msgstr ""
"Niepoprawne wyra¿enie przej¶ciowe (has³o); proszê spróbowaæ ponownie ...\n"
#: g10/seckey-cert.c:223
#, fuzzy
msgid "WARNING: Weak key detected - please change passphrase again.\n"
msgstr ""
"Ostrze¿enie: Wykryto klucz s³aby algorytmu - nale¿y ponownie zmieniæ \n"
"wyra¿enie przej¶ciowe (has³o).\n"
#: g10/sig-check.c:155
msgid ""
"this is a PGP generated ElGamal key which is NOT secure for signatures!\n"
msgstr ""
-#: g10/sig-check.c:166
+#: g10/sig-check.c:163
#, fuzzy, c-format
-msgid "public key created %lu %s in future (time warp or clock problem)\n"
-msgstr ""
-"Klucz publiczny zosta³ stworzony w przysz³o¶ci (zaburzenia \n"
-"czasoprzestrzeni, lub ¼le ustawiony zegar systemowy)\n"
-
-#: g10/sig-check.c:168
-msgid "second"
-msgstr ""
+msgid "public key is %lu second newer than the signature\n"
+msgstr "klucz %08lX: brak identyfikatora u¿ytkownika do podpisu\n"
-#: g10/sig-check.c:168
-msgid "seconds"
-msgstr ""
+#: g10/sig-check.c:164
+#, fuzzy, c-format
+msgid "public key is %lu seconds newer than the signature\n"
+msgstr "klucz %08lX: brak identyfikatora u¿ytkownika do podpisu\n"
-#: g10/sig-check.c:173
+#: g10/sig-check.c:180
#, fuzzy, c-format
msgid "NOTE: signature key expired %s\n"
msgstr "ostrze¿enie: klucz podpisuj±cy przekroczy³ datê wa¿no¶ci %s\n"
-#: g10/sig-check.c:230
+#: g10/sig-check.c:237
msgid "assuming bad signature due to an unknown critical bit\n"
msgstr ""
-#: g10/sign.c:69
+#: g10/sign.c:79
#, fuzzy, c-format
msgid "%s signature from: %s\n"
msgstr "NIEPOPRAWNY podpis z³o¿ony przez \""
-#: g10/sign.c:200 g10/sign.c:587
+#: g10/sign.c:210 g10/sign.c:596
#, fuzzy, c-format
msgid "can't create %s: %s\n"
msgstr "nie mogê otworzyæ %s: %s\n"
-#: g10/sign.c:296
+#: g10/sign.c:306
#, fuzzy
msgid "signing:"
msgstr "podpis"
-#: g10/sign.c:336
+#: g10/sign.c:346
#, fuzzy, c-format
msgid "WARNING: `%s' is an empty file\n"
msgstr "%s: ostrze¿enie: plik jest pusty\n"
+#: g10/textfilter.c:199
+#, c-format
+msgid "can't handle text lines longer than %d characters\n"
+msgstr ""
+
#: g10/tdbio.c:116 g10/tdbio.c:1418
#, fuzzy, c-format
msgid "trustdb rec %lu: lseek failed: %s\n"
msgstr "naniesienie poprawek na kluczu tajnym nie powiod³o siê: %s\n"
#: g10/tdbio.c:122 g10/tdbio.c:1425
#, c-format
msgid "trustdb rec %lu: write failed (n=%d): %s\n"
msgstr ""
#: g10/tdbio.c:232
msgid "trustdb transaction too large\n"
msgstr ""
#: g10/tdbio.c:416
#, fuzzy, c-format
msgid "%s: can't access: %s\n"
msgstr "%s: nie mogê otworzyæ: %s\n"
#: g10/ringedit.c:273 g10/tdbio.c:436
#, fuzzy, c-format
msgid "%s: can't create directory: %s\n"
msgstr "%s: nie mogê otworzyæ: %s\n"
#: g10/ringedit.c:279 g10/tdbio.c:439
#, c-format
msgid "%s: directory created\n"
msgstr ""
#: g10/tdbio.c:443
#, c-format
msgid "%s: directory does not exist!\n"
msgstr ""
-#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1275 g10/tdbio.c:449
+#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1292 g10/tdbio.c:449
#, fuzzy, c-format
msgid "%s: can't create: %s\n"
msgstr "%s: nie mogê otworzyæ: %s\n"
#: g10/tdbio.c:473
#, c-format
msgid "%s: failed to create version record: %s"
msgstr ""
#: g10/tdbio.c:477
#, c-format
msgid "%s: invalid trustdb created\n"
msgstr ""
#: g10/tdbio.c:479
#, c-format
msgid "%s: trustdb created\n"
msgstr ""
#: g10/tdbio.c:512
#, c-format
msgid "%s: invalid trustdb\n"
msgstr ""
#: g10/tdbio.c:545
#, c-format
msgid "%s: failed to create hashtable: %s\n"
msgstr ""
#: g10/tdbio.c:553
#, fuzzy, c-format
msgid "%s: error updating version record: %s\n"
msgstr "b³±d odczytu rekordu podpisu: %s\n"
#: g10/tdbio.c:569 g10/tdbio.c:608 g10/tdbio.c:633 g10/tdbio.c:1351
#: g10/tdbio.c:1378
#, fuzzy, c-format
msgid "%s: error reading version record: %s\n"
msgstr "b³±d odczytu rekordu podpisu: %s\n"
#: g10/tdbio.c:582
#, fuzzy, c-format
msgid "%s: error writing version record: %s\n"
msgstr "b³±d odczytu rekordu podpisu: %s\n"
#: g10/tdbio.c:1058
#, fuzzy, c-format
msgid "trustdb: lseek failed: %s\n"
msgstr "naniesienie poprawek na kluczu tajnym nie powiod³o siê: %s\n"
#: g10/tdbio.c:1066
#, fuzzy, c-format
msgid "trustdb: read failed (n=%d): %s\n"
msgstr "naniesienie poprawek nie powiod³o siê: %s\n"
#: g10/tdbio.c:1087
#, c-format
msgid "%s: not a trustdb file\n"
msgstr ""
#: g10/tdbio.c:1103
#, c-format
msgid "%s: version record with recnum %lu\n"
msgstr ""
#: g10/tdbio.c:1108
#, c-format
msgid "%s: invalid file version %d\n"
msgstr ""
#: g10/tdbio.c:1384
#, fuzzy, c-format
msgid "%s: error reading free record: %s\n"
msgstr "b³±d odczytu rekordu podpisu: %s\n"
#: g10/tdbio.c:1392
#, fuzzy, c-format
msgid "%s: error writing dir record: %s\n"
msgstr "b³±d odczytu rekordu podpisu: %s\n"
#: g10/tdbio.c:1402
#, c-format
msgid "%s: failed to zero a record: %s\n"
msgstr ""
#: g10/tdbio.c:1432
#, c-format
msgid "%s: failed to append a record: %s\n"
msgstr ""
#: g10/trustdb.c:142
msgid "The trustdb is corrupted; please run \"gpgm --fix-trustdb\".\n"
msgstr ""
#: g10/trustdb.c:155
#, c-format
msgid "trust record %lu, req type %d: read failed: %s\n"
msgstr ""
#: g10/trustdb.c:170
#, c-format
msgid "trust record %lu, type %d: write failed: %s\n"
msgstr ""
#: g10/trustdb.c:184
#, fuzzy, c-format
msgid "trust record %lu: delete failed: %s\n"
msgstr "naniesienie poprawek na kluczu tajnym nie powiod³o siê: %s\n"
#: g10/trustdb.c:198
#, fuzzy, c-format
msgid "trustdb: sync failed: %s\n"
msgstr "naniesienie poprawek na kluczu tajnym nie powiod³o siê: %s\n"
#: g10/trustdb.c:327
#, fuzzy, c-format
msgid "error reading dir record for LID %lu: %s\n"
msgstr "b³±d odczytu rekordu podpisu: %s\n"
#: g10/trustdb.c:334
#, c-format
msgid "lid %lu: expected dir record, got type %d\n"
msgstr ""
#: g10/trustdb.c:339
#, c-format
msgid "no primary key for LID %lu\n"
msgstr ""
#: g10/trustdb.c:344
#, fuzzy, c-format
msgid "error reading primary key for LID %lu: %s\n"
msgstr "b³±d odczytu rekordu podpisu: %s\n"
#: g10/trustdb.c:420
#, c-format
msgid "chained sigrec %lu has a wrong owner\n"
msgstr "powi±zany rekord podpisu %lu ma niew³a¶ciwego w³a¶ciciela\n"
#: g10/trustdb.c:463
#, c-format
msgid "'%s' is not a valid long keyID\n"
msgstr ""
#: g10/trustdb.c:498
#, fuzzy, c-format
msgid "key %08lX: no public key for trusted key - skipped\n"
msgstr "klucz %08lX: klucz publiczny wczytany\n"
#: g10/trustdb.c:507 g10/trustdb.c:565
#, c-format
msgid "key %08lX: can't put it into the trustdb\n"
msgstr "klucz %08lX: wpisanie do Bazy Zaufania niemo¿liwe\n"
#: g10/trustdb.c:512 g10/trustdb.c:571
#, c-format
msgid "key %08lX: query record failed\n"
msgstr "klucz %08lX: wyszukanie zapisu nie powiod³o siê\n"
#: g10/trustdb.c:517 g10/trustdb.c:580
#, fuzzy, c-format
msgid "key %08lX: already in trusted key table\n"
msgstr "klucz %08lX: ju¿ znajduje siê w in ultikey_table\n"
#: g10/trustdb.c:520 g10/trustdb.c:583
#, fuzzy, c-format
msgid "key %08lX: accepted as trusted key.\n"
msgstr "Klucz %08lX.%lu: wprowadzony do bazy zaufania\n"
#: g10/trustdb.c:536
#, fuzzy, c-format
msgid "NOTE: secret key %08lX is NOT protected.\n"
msgstr "Ten klucz nie jest chroniony.\n"
#: g10/trustdb.c:548
#, fuzzy, c-format
msgid "key %08lX: secret key without public key - skipped\n"
msgstr "klucz %08lX: klucz tajny bez klucza jawnego\n"
#: g10/trustdb.c:555
#, c-format
msgid "key %08lX: secret and public key don't match\n"
msgstr "klucz %08lX: klucz tajny nie pasuje do klucza jawnego\n"
#: g10/trustdb.c:591
#, fuzzy, c-format
msgid "enumerate secret keys failed: %s\n"
msgstr "b³±d procedury enum_secret_keys: %s\n"
#: g10/trustdb.c:774
#, fuzzy, c-format
msgid "lid %lu: read dir record failed: %s\n"
msgstr "klucz %08lX: wprowadzenie wpisu zaufania nie powiod³o siê: %s\n"
#: g10/trustdb.c:783
#, fuzzy, c-format
msgid "lid %lu: read key record failed: %s\n"
msgstr "klucz %08lX: wprowadzenie wpisu zaufania nie powiod³o siê: %s\n"
#: g10/trustdb.c:793
#, fuzzy, c-format
msgid "lid %lu: read uid record failed: %s\n"
msgstr "klucz %08lX: wprowadzenie wpisu zaufania nie powiod³o siê: %s\n"
#: g10/trustdb.c:802
#, fuzzy, c-format
msgid "lid %lu: read pref record failed: %s\n"
msgstr "klucz %08lX: wprowadzenie wpisu zaufania nie powiod³o siê: %s\n"
#: g10/trustdb.c:812
#, fuzzy, c-format
msgid "lid %lu: read sig record failed: %s\n"
msgstr "klucz %08lX: wprowadzenie wpisu zaufania nie powiod³o siê: %s\n"
#: g10/trustdb.c:1013
msgid "Ooops, no keys\n"
msgstr ""
#: g10/trustdb.c:1017
#, fuzzy
msgid "Ooops, no user ids\n"
msgstr "lista kluczy i identyfikatorów u¿ytkowników"
#: g10/trustdb.c:1088 g10/trustdb.c:1106
#, c-format
msgid "user '%s' read problem: %s\n"
msgstr ""
#: g10/trustdb.c:1091 g10/trustdb.c:1109
#, c-format
msgid "user '%s' list problem: %s\n"
msgstr ""
#: g10/trustdb.c:1099 g10/trustdb.c:1346
#, fuzzy, c-format
msgid "user '%s' not found: %s\n"
msgstr "%s: nie znaleziono u¿ytkownika\n"
#: g10/trustdb.c:1101 g10/trustdb.c:1348
#, c-format
msgid "problem finding '%s' in trustdb: %s\n"
msgstr ""
#: g10/trustdb.c:1104
#, c-format
msgid "user '%s' not in trustdb\n"
msgstr ""
#: g10/trustdb.c:1139
#, c-format
msgid ""
"# List of assigned trustvalues, created %s\n"
"# (Use \"gpgm --import-ownertrust\" to restore them)\n"
msgstr ""
#: g10/trustdb.c:1145
msgid "directory record w/o primary key\n"
msgstr ""
#: g10/trustdb.c:1152
#, fuzzy, c-format
msgid "error reading key record: %s\n"
msgstr "b³±d odczytu rekordu podpisu: %s\n"
#: g10/trustdb.c:1192
msgid "line too long\n"
msgstr ""
#: g10/trustdb.c:1200
msgid "error: missing colon\n"
msgstr ""
#: g10/trustdb.c:1205
#, fuzzy
msgid "error: invalid fingerprint\n"
msgstr "okazanie odcisku klucza"
#: g10/trustdb.c:1209
#, fuzzy
msgid "error: no ownertrust value\n"
msgstr ""
"Przypisanie tych warto¶ci nale¿y do Ciebie, nie bêd± one udostêpnione\n"
"nikomu innemu. S± one u¿ywane do stworzenia sieci zaufania i nie ma\n"
"to nic wspólnego z tworzon± sieci± certyfikatów."
#: g10/trustdb.c:1234
msgid "key not in trustdb, searching ring.\n"
msgstr ""
#: g10/trustdb.c:1237
#, fuzzy, c-format
msgid "key not in ring: %s\n"
msgstr "Generacja klucza nie powiod³a siê: %s\n"
#: g10/trustdb.c:1241
msgid "Oops: key is now in trustdb???\n"
msgstr ""
#. update the ownertrust
#: g10/trustdb.c:1246
#, fuzzy, c-format
msgid "insert trust record failed: %s\n"
msgstr "klucz %08lX: wprowadzenie wpisu zaufania nie powiod³o siê: %s\n"
#. error
#: g10/trustdb.c:1252
#, fuzzy, c-format
msgid "error finding dir record: %s\n"
msgstr "b³±d odczytu rekordu podpisu: %s\n"
#: g10/trustdb.c:1351
#, c-format
msgid "user '%s' not in trustdb - inserting\n"
msgstr ""
#: g10/trustdb.c:1354
#, fuzzy, c-format
msgid "failed to put '%s' into trustdb: %s\n"
msgstr "Inicjowanie Bazy Zaufania nie powiod³o siê: %s\n"
#: g10/trustdb.c:1404
#, c-format
msgid "%s: keyblock read problem: %s\n"
msgstr ""
#: g10/trustdb.c:1418
#, fuzzy, c-format
msgid "%s: update failed: %s\n"
msgstr "naniesienie poprawek nie powiod³o siê: %s\n"
#: g10/trustdb.c:1421
#, c-format
msgid "%s: updated\n"
msgstr ""
#: g10/trustdb.c:1423
#, c-format
msgid "%s: okay\n"
msgstr ""
#: g10/trustdb.c:1438
#, c-format
msgid "lid %lu: dir record w/o key - skipped\n"
msgstr ""
#: g10/trustdb.c:1451
#, fuzzy, c-format
msgid "lid %lu: keyblock not found: %s\n"
msgstr "klucz %08lX: brak klucza publicznegoL %s\n"
#: g10/trustdb.c:1460 g10/trustdb.c:1529
#, fuzzy, c-format
msgid "lid %lu: update failed: %s\n"
msgstr "naniesienie poprawek nie powiod³o siê: %s\n"
#: g10/trustdb.c:1466 g10/trustdb.c:1535
#, c-format
msgid "lid %lu: updated\n"
msgstr ""
#: g10/trustdb.c:1470 g10/trustdb.c:1539
#, c-format
msgid "lid %lu: okay\n"
msgstr ""
#: g10/trustdb.c:1477 g10/trustdb.c:1545
#, c-format
msgid "%lu keys processed\n"
msgstr ""
#: g10/trustdb.c:1479
#, fuzzy, c-format
msgid "\t%lu keys skipped\n"
msgstr "%s: pominiêty: %s\n"
#: g10/trustdb.c:1481 g10/trustdb.c:1547
#, c-format
msgid "\t%lu keys with errors\n"
msgstr ""
#: g10/trustdb.c:1483 g10/trustdb.c:1549
#, c-format
msgid "\t%lu keys updated\n"
msgstr ""
#: g10/trustdb.c:1513
#, fuzzy, c-format
msgid "lid ?: insert failed: %s\n"
msgstr "naniesienie poprawek na kluczu tajnym nie powiod³o siê: %s\n"
#: g10/trustdb.c:1518
#, fuzzy, c-format
msgid "lid %lu: insert failed: %s\n"
msgstr "naniesienie poprawek na kluczu tajnym nie powiod³o siê: %s\n"
#: g10/trustdb.c:1524
#, c-format
msgid "lid %lu: inserted\n"
msgstr ""
#: g10/trustdb.c:1551
#, c-format
msgid "\t%lu keys inserted\n"
msgstr ""
#: g10/trustdb.c:1554
#, fuzzy, c-format
msgid "enumerate keyblocks failed: %s\n"
msgstr "b³±d procedury enum_secret_keys: %s\n"
#: g10/trustdb.c:1599
#, fuzzy, c-format
msgid "check_trust: search dir record failed: %s\n"
msgstr "klucz %08lX: wprowadzenie wpisu zaufania nie powiod³o siê: %s\n"
#: g10/trustdb.c:1606
#, c-format
msgid "key %08lX: insert trust record failed: %s\n"
msgstr "klucz %08lX: wprowadzenie wpisu zaufania nie powiod³o siê: %s\n"
#: g10/trustdb.c:1610
#, c-format
msgid "key %08lX.%lu: inserted into trustdb\n"
msgstr "Klucz %08lX.%lu: wprowadzony do bazy zaufania\n"
#: g10/trustdb.c:1618
#, c-format
msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
msgstr ""
"Klucz %08lX.%lu: stworzony w przysz³o¶ci (zaburzenia czasoprzestrzeni,\n"
"lub ¼le ustawiony zegar systemowy)\n"
#: g10/trustdb.c:1625
#, c-format
msgid "key %08lX.%lu: expired at %s\n"
msgstr "klucz %08lX.%lu: okres wa¿no¶ci up³yn±³ %s\n"
#: g10/trustdb.c:1633
#, c-format
msgid "key %08lX.%lu: trust check failed: %s\n"
msgstr "klucz %08lX.%lu: b³±d przy sprawdzaniu zaufania: %s\n"
#: g10/trustdb.c:1842 g10/trustdb.c:1871 g10/trustdb.c:2610
msgid "WARNING: can't yet handle long pref records\n"
msgstr ""
#: g10/trustdb.c:1893
#, fuzzy, c-format
msgid "get_dir_record: search_record failed: %s\n"
msgstr "naniesienie poprawek na kluczu tajnym nie powiod³o siê: %s\n"
#: g10/trustdb.c:1956
#, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but marked as checked\n"
msgstr ""
#: g10/trustdb.c:1960
#, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but not marked\n"
msgstr ""
#. we need the dir record
#: g10/trustdb.c:1967
#, c-format
msgid "sig rec %lu[%d] in hintlist of %lu does not point to a dir record\n"
msgstr ""
#: g10/trustdb.c:1973
#, c-format
msgid "lid %lu: no primary key\n"
msgstr ""
#: g10/trustdb.c:2006
#, fuzzy, c-format
msgid "lid %lu: user id not found in keyblock\n"
msgstr "%s: nie znaleziono u¿ytkownika\n"
#: g10/trustdb.c:2010
#, fuzzy, c-format
msgid "lid %lu: user id without signature\n"
msgstr "klucz %08lX: brak identyfikatora u¿ytkownika do podpisu\n"
#: g10/trustdb.c:2017
#, c-format
msgid "lid %lu: self-signature in hintlist\n"
msgstr ""
#: g10/trustdb.c:2028 g10/trustdb.c:2747 g10/trustdb.c:2831
msgid "Valid certificate revocation"
msgstr ""
#: g10/trustdb.c:2029 g10/trustdb.c:2748 g10/trustdb.c:2832
msgid "Good certificate"
msgstr ""
#: g10/trustdb.c:2038
msgid "very strange: no public key\n"
msgstr ""
#: g10/trustdb.c:2086
#, c-format
msgid "hintlist %lu[%d] of %lu does not point to a dir record\n"
msgstr ""
#: g10/trustdb.c:2092
#, c-format
msgid "lid %lu does not have a key\n"
msgstr ""
#: g10/trustdb.c:2102
#, fuzzy, c-format
msgid "lid %lu: can't get keyblock: %s\n"
msgstr "nie mogê zapisaæ bloku klucza: %s\n"
#: g10/trustdb.c:2159 g10/trustdb.c:3082
#, fuzzy, c-format
msgid "tdbio_search_dir failed: %s\n"
msgstr "Usuniêcie opakowania ASCII nie powiod³o siê: %s\n"
#: g10/trustdb.c:2312
#, fuzzy, c-format
msgid "key %08lX.%lu: Good subkey binding\n"
msgstr "klucz %08lX: brak identyfikatora u¿ytkownika\n"
#: g10/trustdb.c:2318 g10/trustdb.c:2360
#, fuzzy, c-format
msgid "key %08lX.%lu: Invalid subkey binding: %s\n"
msgstr "klucz %08lX: brak poprawnych identyfikatorów u¿ytkownika\n"
#: g10/trustdb.c:2333
#, fuzzy, c-format
msgid "key %08lX.%lu: Valid key revocation\n"
msgstr "klucz %08lX.%lu: okres wa¿no¶ci up³yn±³ %s\n"
#: g10/trustdb.c:2339
#, fuzzy, c-format
msgid "key %08lX.%lu: Invalid key revocation: %s\n"
msgstr "klucz %08lX: brak klucza publicznegoL %s\n"
#: g10/trustdb.c:2354
#, fuzzy, c-format
msgid "key %08lX.%lu: Valid subkey revocation\n"
msgstr "klucz %08lX: brak poprawnych identyfikatorów u¿ytkownika\n"
#: g10/trustdb.c:2454
#, fuzzy
msgid "Good self-signature"
msgstr "[podpis klucza nim samym]"
#: g10/trustdb.c:2465
#, fuzzy
msgid "Invalid self-signature"
msgstr "klucz %08lX: niepoprawny podpis w³a¶ciciela klucza\n"
#: g10/trustdb.c:2475
msgid "Valid user ID revocation skipped due to a newer self signature\n"
msgstr ""
#: g10/trustdb.c:2482
#, fuzzy
msgid "Valid user ID revocation\n"
msgstr "Niew³a¶ciwy wybór.\n"
#: g10/trustdb.c:2489
#, fuzzy
msgid "Invalid user ID revocation"
msgstr "Niew³a¶ciwy wybór.\n"
#: g10/trustdb.c:2573
#, fuzzy
msgid "Too many preferences"
msgstr "lista opcji"
#: g10/trustdb.c:2587
msgid "Too many preference items"
msgstr ""
#: g10/trustdb.c:2726
msgid "Duplicated certificate - deleted"
msgstr ""
#: g10/trustdb.c:2759
msgid "Hmmm, public key lost?"
msgstr ""
#: g10/trustdb.c:2769 g10/trustdb.c:2852
#, fuzzy
msgid "Invalid certificate revocation"
msgstr "Niew³a¶ciwy wybór.\n"
#: g10/trustdb.c:2770 g10/trustdb.c:2853
#, fuzzy
msgid "Invalid certificate"
msgstr "Niew³a¶ciwy znak w imieniu lub nazwisku\n"
#: g10/trustdb.c:2785
#, c-format
msgid "uid %08lX.%lu/%02X%02X: has shadow dir %lu but is not yet marked.\n"
msgstr ""
#: g10/trustdb.c:2799
#, c-format
msgid "sig record %lu[%d] points to wrong record.\n"
msgstr ""
#. that should never happen
#: g10/trustdb.c:3052
#, fuzzy, c-format
msgid "insert_trust_record: keyblock not found: %s\n"
msgstr "klucz %08lX: brak klucza tajnego: %s\n"
#: g10/trustdb.c:3070
msgid "did not use primary key for insert_trust_record()\n"
msgstr ""
#: g10/ringedit.c:293
#, fuzzy, c-format
msgid "%s: can't create keyring: %s\n"
msgstr "niemo¿liwy jest zapis do zbioru kluczy: %s\n"
-#: g10/ringedit.c:299 g10/ringedit.c:1283
+#: g10/ringedit.c:299 g10/ringedit.c:1300
#, c-format
msgid "%s: keyring created\n"
msgstr ""
-#: g10/ringedit.c:1469
+#: g10/ringedit.c:1486
msgid "WARNING: 2 files with confidential information exists.\n"
msgstr ""
-#: g10/ringedit.c:1470
+#: g10/ringedit.c:1487
#, c-format
msgid "%s is the unchanged one\n"
msgstr ""
-#: g10/ringedit.c:1471
+#: g10/ringedit.c:1488
#, c-format
msgid "%s is the new one\n"
msgstr ""
-#: g10/ringedit.c:1472
+#: g10/ringedit.c:1489
msgid "Please fix this possible security flaw\n"
msgstr ""
-#: g10/skclist.c:94
+#: g10/skclist.c:88 g10/skclist.c:125
+msgid "key is not flagged as insecure - can't use it with the faked RNG!\n"
+msgstr ""
+
+#: g10/skclist.c:113
#, fuzzy, c-format
msgid "skipped `%s': %s\n"
msgstr "%s: pominiêty: %s\n"
-#: g10/skclist.c:100
+#: g10/skclist.c:119
#, c-format
msgid ""
"skipped `%s': this is a PGP generated ElGamal key which is not secure for "
"signatures!\n"
msgstr ""
#. do not overwrite
#: g10/openfile.c:58
#, c-format
msgid "File `%s' exists. "
msgstr "Plik `%s' ju¿ istnieje. "
#: g10/openfile.c:60
msgid "Overwrite (y/N)? "
msgstr "Nadpisaæ (t/N)? "
#: g10/openfile.c:85
#, fuzzy
msgid "writing to stdout\n"
msgstr "zapisywanie '%s\"\n"
#: g10/openfile.c:134
#, fuzzy, c-format
msgid "assuming signed data in `%s'\n"
msgstr "nie mogê otworzyæ podpisanego pliku `%s'\n"
#: g10/openfile.c:181
#, c-format
msgid "%s: new options file created\n"
msgstr ""
#: g10/encr-data.c:59
#, fuzzy, c-format
msgid "%s encrypted data\n"
msgstr "szyfrowanie danych"
#: g10/encr-data.c:61
#, c-format
msgid "encrypted with unknown algorithm %d\n"
msgstr ""
#: g10/encr-data.c:74
#, fuzzy
msgid ""
"WARNING: message was encrypted with a weak key in the symmetric cipher.\n"
msgstr ""
"Ostrze¿enie: Informacje by³y szyfrowane s³abym kluczem szyfru "
"symetrycznego.\n"
#: g10/seskey.c:52
msgid "weak key created - retrying\n"
msgstr "wygenerowano s³aby klucz - operacja zostaje powtórzona\n"
#: g10/seskey.c:57
#, c-format
msgid "cannot avoid weak key for symmetric cipher; tried %d times!\n"
msgstr ""
"brak mo¿liwo¶ci generacji dobrego klucza dla szyfru symetrycznego;\n"
"operacja by³a powtarzana %d razy!\n"
#. begin of list
#: g10/helptext.c:48
msgid "edit_ownertrust.value"
msgstr ""
"Przypisanie tych warto¶ci nale¿y do Ciebie, nie bêd± one udostêpnione\n"
"nikomu innemu. S± one u¿ywane do stworzenia sieci zaufania i nie ma\n"
"to nic wspólnego z tworzon± sieci± certyfikatów."
#: g10/helptext.c:54
msgid "revoked_key.override"
msgstr ""
#: g10/helptext.c:58
msgid "untrusted_key.override"
msgstr "If you want to use this untrusted key anyway, answer \"yes\"."
#: g10/helptext.c:62
msgid "pklist.user_id.enter"
msgstr "Podaj identyfikator u¿ytkownika adresata tych informacji."
#: g10/helptext.c:66
msgid "keygen.algo"
msgstr "Select the algorithm to use:Needs more explanation here."
#: g10/helptext.c:82
#, fuzzy
msgid "keygen.algo.elg_se"
msgstr "Select the algorithm to use:Needs more explanation here."
#: g10/helptext.c:89
msgid "keygen.size"
msgstr ""
#: g10/helptext.c:93
msgid "keygen.size.huge.okay"
msgstr ""
#: g10/helptext.c:98
msgid "keygen.size.large.okay"
msgstr ""
#: g10/helptext.c:103
msgid "keygen.valid"
msgstr ""
#: g10/helptext.c:107
msgid "keygen.valid.okay"
msgstr ""
#: g10/helptext.c:112
msgid "keygen.name"
msgstr ""
#: g10/helptext.c:117
msgid "keygen.email"
msgstr ""
#: g10/helptext.c:121
msgid "keygen.comment"
msgstr ""
#: g10/helptext.c:126
msgid "keygen.userid.cmd"
msgstr ""
"I - zmiana imienia lub nazwiska.\n"
"K - zmiana komentarza.\n"
"E - zmiana adresu email.\n"
"D - przej¶cie do w³a¶ciwej generacji klucza.\n"
"W - wyj¶cie z procedury generacji i z programu."
#: g10/helptext.c:135
msgid "keygen.sub.okay"
msgstr ""
"Odpowiedz \"tak\" (lub po prostu \"t\") je¶li zgadzasz siê na stworzenie "
"podklucza."
#: g10/helptext.c:139
msgid "sign_uid.okay"
msgstr ""
#: g10/helptext.c:144
msgid "change_passwd.empty.okay"
msgstr ""
#: g10/helptext.c:149
msgid "keyedit.cmd"
msgstr "Please enter \"help\"."
#: g10/helptext.c:153
msgid "keyedit.save.okay"
msgstr ""
#: g10/helptext.c:158
msgid "keyedit.cancel.okay"
msgstr ""
#: g10/helptext.c:162
msgid "keyedit.sign_all.okay"
msgstr ""
#: g10/helptext.c:166
msgid "keyedit.remove.uid.okay"
msgstr ""
#: g10/helptext.c:171
msgid "keyedit.remove.subkey.okay"
msgstr ""
#: g10/helptext.c:175
msgid "passphrase.enter"
msgstr ""
"Proszê wprowadziæ wyra¿enie przej¶ciowe (tajne zdanie)\n"
" Bla, bla, bla ..."
#: g10/helptext.c:182
msgid "passphrase.repeat"
msgstr ""
"Proszê powtórzyæ podane wyra¿enie przej¶ciowe dla wyeliminowania pomy³ek."
#: g10/helptext.c:186
msgid "detached_signature.filename"
msgstr ""
#: g10/helptext.c:190
msgid "openfile.overwrite.okay"
msgstr ""
#: g10/helptext.c:204
msgid "No help available"
msgstr "Pomoc niedostêpna"
#: g10/helptext.c:216
#, c-format
msgid "No help available for `%s'"
msgstr "Brak informacji o `%s'"
#~ msgid "You will see a list of signators etc. here\n"
#~ msgstr "Tu uka¿e siê lista podpisów itd.\n"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 3c9ec4c84..722403bd2 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,3154 +1,3222 @@
# Portuguese messages for gnupg
# Thiago Jung Bauermann <jungmann@usa.net>, 1998.
# I tried to make this one close to es_ES by Urko Lusa
#
msgid ""
msgstr ""
-"POT-Creation-Date: 1999-01-09 18:31+0100\n"
+"POT-Creation-Date: 1999-01-20 22:45+0100\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Date: 1998-11-20 23:46:36-0200\n"
"From: Thiago Jung Bauermann <jungmann@usa.net>\n"
"Xgettext-Options: --default-domain=gnupg --directory=.. --add-comments "
"--keyword=_ --keyword=N_ --files-from=./POTFILES.in\n"
"Files: util/secmem.c util/argparse.c cipher/random.c cipher/rand-dummy.c "
"cipher/rand-unix.c cipher/rand-w32.c g10/g10.c g10/pkclist.c g10/keygen.c "
"g10/decrypt.c g10/encode.c g10/import.c g10/keyedit.c g10/keylist.c "
"g10/mainproc.c g10/passphrase.c g10/plaintext.c g10/pref.c g10/seckey-cert.c "
"g10/sig-check.c g10/sign.c g10/trustdb.c g10/verify.c\n"
#: util/secmem.c:77
msgid "Warning: using insecure memory!\n"
msgstr "Aviso: usando memória insegura!\n"
#: util/miscutil.c:143
msgid "yes"
msgstr "sim"
#: util/miscutil.c:144
msgid "yY"
msgstr "sS"
#: util/errors.c:54
#, fuzzy
msgid "general error"
msgstr "Erro geral"
#: util/errors.c:55
#, fuzzy
msgid "unknown packet type"
msgstr "Formato desconhecido"
#: util/errors.c:56
#, fuzzy
msgid "unknown version"
msgstr "Versão desconhecida"
#: util/errors.c:57
#, fuzzy
msgid "unknown pubkey algorithm"
msgstr "Algoritmo de chave pública desconhecido"
#: util/errors.c:58
#, fuzzy
msgid "unknown digest algorithm"
msgstr "Algoritmo de \"digest\" desconhecido"
#: util/errors.c:59
#, fuzzy
msgid "bad public key"
msgstr "Chave pública incorreta"
#: util/errors.c:60
#, fuzzy
msgid "bad secret key"
msgstr "Chave secreta incorreta"
#: util/errors.c:61
#, fuzzy
msgid "bad signature"
msgstr "Assinatura incorreta"
#: util/errors.c:62
#, fuzzy
msgid "checksum error"
msgstr "Erro de \"checksum\""
#: util/errors.c:63
#, fuzzy
msgid "bad passphrase"
msgstr "Frase secreta incorreta"
#: util/errors.c:64
#, fuzzy
msgid "public key not found"
msgstr "Chave pública não encontrada"
#: util/errors.c:65
#, fuzzy
msgid "unknown cipher algorithm"
msgstr "Algoritmo de criptografia desconhecido"
#: util/errors.c:66
#, fuzzy
msgid "can't open the keyring"
msgstr "Não é possível abrir o anel de chaves"
#: util/errors.c:67
#, fuzzy
msgid "invalid packet"
msgstr "Valor inválido"
#: util/errors.c:68
#, fuzzy
msgid "invalid armor"
msgstr "Armadura inválida"
#: util/errors.c:69
#, fuzzy
msgid "no such user id"
msgstr "Identificador de usuário inexistente"
#: util/errors.c:70
#, fuzzy
msgid "secret key not available"
msgstr "Chave secreta não disponível"
#: util/errors.c:71
#, fuzzy
msgid "wrong secret key used"
msgstr "Chave secreta incorreta"
#: util/errors.c:72
#, fuzzy
msgid "not supported"
msgstr "Não suportado"
#: util/errors.c:73
#, fuzzy
msgid "bad key"
msgstr "Chave incorreta"
#: util/errors.c:74
#, fuzzy
msgid "file read error"
msgstr "Erro de leitura"
#: util/errors.c:75
#, fuzzy
msgid "file write error"
msgstr "Erro de escrita"
#: util/errors.c:76
#, fuzzy
msgid "unknown compress algorithm"
msgstr "Algoritmo de compressão desconhecido"
#: util/errors.c:77
#, fuzzy
msgid "file open error"
msgstr "Erro abrindo arquivo"
#: util/errors.c:78
#, fuzzy
msgid "file create error"
msgstr "Erro criando arquivo"
#: util/errors.c:79
#, fuzzy
msgid "invalid passphrase"
msgstr "Frase secreta inválida"
#: util/errors.c:80
#, fuzzy
msgid "unimplemented pubkey algorithm"
msgstr "Algoritmo de chave pública não implementado"
#: util/errors.c:81
#, fuzzy
msgid "unimplemented cipher algorithm"
msgstr "Algoritmo de criptografia não implementado"
#: util/errors.c:82
#, fuzzy
msgid "unknown signature class"
msgstr "Classe de assinatura desconhecida"
#: util/errors.c:83
#, fuzzy
msgid "trust database error"
msgstr "Erro no banco de dados de confiança"
#: util/errors.c:84
#, fuzzy
msgid "bad MPI"
msgstr "MPI incorreto"
#: util/errors.c:85
#, fuzzy
msgid "resource limit"
msgstr "Limite de recurso"
#: util/errors.c:86
#, fuzzy
msgid "invalid keyring"
msgstr "Anel de chaves inválido"
#: util/errors.c:87
#, fuzzy
msgid "bad certificate"
msgstr "Certificado incorreto"
#: util/errors.c:88
#, fuzzy
msgid "malformed user id"
msgstr "Identificação de usuário mal formada"
#: util/errors.c:89
#, fuzzy
msgid "file close error"
msgstr "Erro fechando arquivo"
#: util/errors.c:90
#, fuzzy
msgid "file rename error"
msgstr "Erro renomeando arquivo"
#: util/errors.c:91
#, fuzzy
msgid "file delete error"
msgstr "Erro deletando arquivo"
#: util/errors.c:92
#, fuzzy
msgid "unexpected data"
msgstr "Dados inesperados"
#: util/errors.c:93
#, fuzzy
msgid "timestamp conflict"
msgstr "Conflito com \"timestamp\""
#: util/errors.c:94
#, fuzzy
msgid "unusable pubkey algorithm"
msgstr "Algoritmo de chave pública inutilizável"
#: util/errors.c:95
#, fuzzy
msgid "file exists"
msgstr "O arquivo já existe"
#: util/errors.c:96
#, fuzzy
msgid "weak key"
msgstr "Chave fraca"
+#: util/errors.c:97
+#, fuzzy
+msgid "invalid argument"
+msgstr "Armadura inválida"
+
+#: util/errors.c:98
+#, fuzzy
+msgid "bad URI"
+msgstr "MPI incorreto"
+
+#: util/errors.c:99
+#, fuzzy
+msgid "unsupported URI"
+msgstr "Não suportado"
+
+#: util/errors.c:100
+#, fuzzy
+msgid "network error"
+msgstr "Erro geral"
+
#: util/logger.c:178
#, c-format
msgid "... this is a bug (%s:%d:%s)\n"
msgstr "... isto é um bug (%s:%d:%s)\n"
#: util/logger.c:184
#, c-format
msgid "you found a bug ... (%s:%d)\n"
msgstr "você encontrou um bug ... (%s:%d)\n"
-#: cipher/random.c:405
+#: cipher/random.c:412
msgid "WARNING: using insecure random number generator!!\n"
msgstr "AVISO: usando gerador de números aleatórios inseguro!\n"
-#: cipher/random.c:406
+#: cipher/random.c:413
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 compilar - Ele não é seguro!\n"
"\n"
"NÃO USE NENHUM DADO GERADO POR ESTE PROGRAMA!\n"
"\n"
#: cipher/rndlinux.c:118
#, c-format
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 algum outro trabalho\n"
"para que o sistema possa coletar mais entropia!\n"
"(São necessários mais %d bytes)\n"
-#: g10/g10.c:160
+#: g10/g10.c:163
msgid ""
"@Commands:\n"
" "
msgstr ""
"@Comandos:\n"
" "
-#: g10/g10.c:163
+#: g10/g10.c:166
msgid "|[file]|make a signature"
msgstr "|[arquivo]|faz uma assinatura"
-#: g10/g10.c:164
+#: g10/g10.c:167
msgid "|[file]|make a clear text signature"
msgstr "|[arquivo]|faz uma assinatura em texto puro"
-#: g10/g10.c:165
+#: g10/g10.c:168
msgid "make a detached signature"
msgstr "faz uma assinatura separada"
-#: g10/g10.c:166
+#: g10/g10.c:169
msgid "encrypt data"
msgstr "codifica dados"
-#: g10/g10.c:167
+#: g10/g10.c:170
msgid "encryption only with symmetric cipher"
msgstr "codifica apenas com criptografia simétrica"
-#: g10/g10.c:168
+#: g10/g10.c:171
msgid "store only"
msgstr "apenas armazena"
-#: g10/g10.c:169
+#: g10/g10.c:172
msgid "decrypt data (default)"
msgstr "decodifica dados (padrão)"
-#: g10/g10.c:170
+#: g10/g10.c:173
msgid "verify a signature"
msgstr "verifica uma assinatura"
-#: g10/g10.c:172
+#: g10/g10.c:175
msgid "list keys"
msgstr "lista as chaves"
-#: g10/g10.c:173
+#: g10/g10.c:176
msgid "list keys and signatures"
msgstr "lista as chaves e as assinaturas"
-#: g10/g10.c:174
+#: g10/g10.c:177
msgid "check key signatures"
msgstr "confere as assinaturas das chaves"
-#: g10/g10.c:175
+#: g10/g10.c:178
msgid "list keys and fingerprints"
msgstr "lista as chaves e as impressões digitais"
-#: g10/g10.c:176
+#: g10/g10.c:179
msgid "list secret keys"
msgstr "lista as chaves secretas"
-#: g10/g10.c:178
+#: g10/g10.c:181
msgid "generate a new key pair"
msgstr "gera um novo par de chaves"
-#: g10/g10.c:180
+#: g10/g10.c:183
msgid "remove key from the public keyring"
msgstr "remove a chave do anel de chaves público"
-#: g10/g10.c:182
+#: g10/g10.c:185
msgid "sign or edit a key"
msgstr "assina ou edita uma chave"
-#: g10/g10.c:183
+#: g10/g10.c:186
msgid "generate a revocation certificate"
msgstr "gera um certificado de revogação"
-#: g10/g10.c:185
+#: g10/g10.c:188
msgid "export keys"
msgstr "exporta as chaves"
-#: g10/g10.c:188
+#: g10/g10.c:189
+msgid "export keys to a key server"
+msgstr ""
+
+#: g10/g10.c:192
msgid "import/merge keys"
msgstr "importa/funde as chaves"
-#: g10/g10.c:190
+#: g10/g10.c:194
msgid "list only the sequence of packets"
msgstr "lista apenas as seqüências de pacotes"
-#: g10/g10.c:193
+#: g10/g10.c:197
msgid "export the ownertrust values"
msgstr "exporta os valores de confiança"
-#: g10/g10.c:195
+#: g10/g10.c:199
msgid "import ownertrust values"
msgstr "importa os valores de confiança"
-#: g10/g10.c:197
+#: g10/g10.c:201
msgid "|[NAMES]|update the trust database"
msgstr "|[NOMES]|atualiza o banco de dados de confiança"
-#: g10/g10.c:199
+#: g10/g10.c:203
msgid "|[NAMES]|check the trust database"
msgstr "|[NOMES]|confere o banco de dados de confiança"
-#: g10/g10.c:200
+#: g10/g10.c:204
msgid "fix a corrupted trust database"
msgstr "conserta um banco de dados de confiança danificado"
-#: g10/g10.c:201
+#: g10/g10.c:205
msgid "De-Armor a file or stdin"
msgstr "Retira a armadura de um arquivo ou \"stdin\""
-#: g10/g10.c:202
+#: g10/g10.c:206
msgid "En-Armor a file or stdin"
msgstr "Cria armadura para um arquivo ou \"stdin\""
-#: g10/g10.c:203
+#: g10/g10.c:207
msgid "|algo [files]|print message digests"
msgstr "|algo [arquivos]|imprime \"digests\" de mensagens"
-#: g10/g10.c:204
+#: g10/g10.c:208
msgid "print all message digests"
msgstr "imprime todos os \"digests\" de mensagens"
-#: g10/g10.c:211
+#: g10/g10.c:215
msgid ""
"@\n"
"Options:\n"
" "
msgstr ""
"@\n"
"Opções:\n"
" "
-#: g10/g10.c:213
+#: g10/g10.c:217
msgid "create ascii armored output"
msgstr "cria uma saída ascii com armadura"
-#: g10/g10.c:215
+#: g10/g10.c:219
msgid "use this user-id to sign or decrypt"
msgstr "usa este identificador de usuário para assinar ou decodificar"
-#: g10/g10.c:216
+#: g10/g10.c:220
msgid "use this user-id for encryption"
msgstr "usa este identificador de usuário para codificar"
-#: g10/g10.c:217
+#: g10/g10.c:221
msgid "|N|set compress level N (0 disables)"
msgstr "|N|estabelece nível de compressão N (0 desabilita)"
-#: g10/g10.c:219
+#: g10/g10.c:223
msgid "use canonical text mode"
msgstr "usa modo de texto canônico"
-#: g10/g10.c:221
+#: g10/g10.c:225
msgid "use as output file"
msgstr "usa como arquivo de saída"
-#: g10/g10.c:222
+#: g10/g10.c:226
msgid "verbose"
msgstr "prolixo"
-#: g10/g10.c:223
+#: g10/g10.c:227
msgid "be somewhat more quiet"
msgstr "ser mais silencioso"
-#: g10/g10.c:224
+#: g10/g10.c:228
msgid "force v3 signatures"
msgstr "força assinaturas v3"
#. { oDryRun, "dry-run", 0, N_("do not make any changes") },
-#: g10/g10.c:226
+#: g10/g10.c:230
msgid "batch mode: never ask"
msgstr "processo de lote: nunca perguntar"
-#: g10/g10.c:227
+#: g10/g10.c:231
msgid "assume yes on most questions"
msgstr "assumir sim para a maioria das perguntas"
-#: g10/g10.c:228
+#: g10/g10.c:232
msgid "assume no on most questions"
msgstr "assumir não para a maioria das perguntas"
-#: g10/g10.c:229
+#: g10/g10.c:233
msgid "add this keyring to the list of keyrings"
msgstr "adiciona este anel de chaves à lista de anéis de chaves"
-#: g10/g10.c:230
+#: g10/g10.c:234
msgid "add this secret keyring to the list"
msgstr "adiciona este anel de chaves secreto à lista"
-#: g10/g10.c:231
+#: g10/g10.c:235
msgid "|NAME|use NAME as default secret key"
msgstr "|NOME|usa NOME como chave secreta padrão"
-#: g10/g10.c:232
+#: g10/g10.c:236
+msgid "|HOST|use this keyserver to lookup keys"
+msgstr ""
+
+#: g10/g10.c:237
#, fuzzy
msgid "|NAME|set terminal charset to NAME"
msgstr "|NOME| estabelece mapa de caracteres do terminal para NOME"
-#: g10/g10.c:233
+#: g10/g10.c:238
msgid "read options from file"
msgstr "lê opções do arquivo"
-#: g10/g10.c:235
+#: g10/g10.c:240
msgid "set debugging flags"
msgstr "estabelece parâmetros de depuração"
-#: g10/g10.c:236
+#: g10/g10.c:241
msgid "enable full debugging"
msgstr "habilita depuração completa"
-#: g10/g10.c:237
+#: g10/g10.c:242
msgid "|FD|write status info to this FD"
msgstr "|DA|escreve informações de status para este DA"
-#: g10/g10.c:238
+#: g10/g10.c:243
msgid "do not write comment packets"
msgstr "não escreve pacotes de comentário"
-#: g10/g10.c:239
+#: g10/g10.c:244
msgid "(default is 1)"
msgstr "(o padrão é 1)"
-#: g10/g10.c:240
+#: g10/g10.c:245
msgid "(default is 3)"
msgstr "(o padrão é 3)"
-#: g10/g10.c:242
+#: g10/g10.c:247
msgid "|KEYID|ulimately trust this key"
msgstr ""
-#: g10/g10.c:243
+#: g10/g10.c:248
msgid "|FILE|load extension module FILE"
msgstr "|ARQUIVO|carrega módulo de extensão ARQUIVO"
-#: g10/g10.c:244
+#: g10/g10.c:249
msgid "emulate the mode described in RFC1991"
msgstr "emula o modo descrito no RFC1991"
-#: g10/g10.c:245
+#: g10/g10.c:250
msgid "|N|use passphrase mode N"
msgstr "|N|usa frase secreta modo N"
-#: g10/g10.c:247
+#: g10/g10.c:252
msgid "|NAME|use message digest algorithm NAME for passphrases"
msgstr ""
"|NOME|usa algoritmo de \"digest\" de mensagens NOME para\n"
"frases secretas"
-#: g10/g10.c:249
+#: g10/g10.c:254
msgid "|NAME|use cipher algorithm NAME for passphrases"
msgstr ""
"|NOME|usa algoritmo de criptografia NOME para\n"
"frases secretas"
-#: g10/g10.c:251
+#: g10/g10.c:256
msgid "|NAME|use cipher algorithm NAME"
msgstr "|NOME|usa algoritmo de criptografia NOME"
-#: g10/g10.c:252
+#: g10/g10.c:257
msgid "|NAME|use message digest algorithm NAME"
msgstr "|NOME|usa algoritmo de \"digest\" de mensagens NOME"
-#: g10/g10.c:253
+#: g10/g10.c:258
msgid "|N|use compress algorithm N"
msgstr "|N|usa algoritmo de compressão N"
-#: g10/g10.c:254
+#: g10/g10.c:259
msgid "throw keyid field of encrypted packets"
msgstr "elimina o campo keyid dos pacotes codificados"
-#: g10/g10.c:262
+#: g10/g10.c:267
msgid ""
"@\n"
"Examples:\n"
"\n"
" -se -r Bob [file] sign and encrypt for user Bob\n"
" --clearsign [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"
msgstr ""
"@\n"
"Exemplos:\n"
"\n"
" -se -r Bob [arquivo] assina e codifica para usuário Bob\n"
" --clearsign [arquivo] cria uma assinatura em texto puro\n"
" --detach-sign [arquivo] cria uma assinatura separada\n"
" --list-keys [nomes] mostra chaves\n"
" --fingerprint [nomes] mostra impressões digitais\n"
-#: g10/g10.c:341
+#: g10/g10.c:346
msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
msgstr "Por favor comunique bugs para <gnupg-bugs@gnu.org>.\n"
-#: g10/g10.c:346
+#: g10/g10.c:351
msgid "Usage: gpgm [options] [files] (-h for help)"
msgstr "Uso: gpgm [opções] [arquivos] (-h para ajuda)"
-#: g10/g10.c:348
+#: g10/g10.c:353
msgid "Usage: gpg [options] [files] (-h for help)"
msgstr "Uso: gpg [opções] [arquivos] (-h para ajuda)"
-#: g10/g10.c:353
+#: g10/g10.c:358
msgid ""
"Syntax: gpgm [options] [files]\n"
"GnuPG maintenance utility\n"
msgstr ""
"Sintaxe: gpgm [opções] [arquivos]\n"
"Utilitário de manutenção do GnuPG\n"
-#: g10/g10.c:356
+#: g10/g10.c:361
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] [arquivos]\n"
"assina, verifica, codifica ou decodifica\n"
"a operação padrão depende dos dados de entrada\n"
-#: g10/g10.c:362
+#: g10/g10.c:367
msgid ""
"\n"
"Supported algorithms:\n"
msgstr ""
"\n"
"Algoritmos suportados:\n"
-#: g10/g10.c:437
+#: g10/g10.c:442
msgid "usage: gpgm [options] "
msgstr "Uso: gpgm [opções] "
-#: g10/g10.c:439
+#: g10/g10.c:444
msgid "usage: gpg [options] "
msgstr "uso: gpg [opções] "
-#: g10/g10.c:480
+#: g10/g10.c:485
msgid "conflicting commands\n"
msgstr "comandos conflitantes\n"
-#: g10/g10.c:618
+#: g10/g10.c:623
#, c-format
msgid "NOTE: no default option file `%s'\n"
msgstr "NOTA: arquivo de opções padrão `%s' inexistente\n"
-#: g10/g10.c:622
+#: g10/g10.c:627
#, c-format
msgid "option file `%s': %s\n"
msgstr "arquivo de opções `%s': %s\n"
-#: g10/g10.c:629
+#: g10/g10.c:634
#, c-format
msgid "reading options from `%s'\n"
msgstr "lendo opções de `%s'\n"
-#: g10/g10.c:782
+#: g10/g10.c:788
#, c-format
msgid "%s is not a valid character set\n"
msgstr "%s não é um mapa de caracteres válido\n"
-#: g10/g10.c:817 g10/g10.c:829
+#: g10/g10.c:824 g10/g10.c:836
msgid "selected cipher algorithm is invalid\n"
msgstr "algoritmo de criptografia selecionado não é válido\n"
-#: g10/g10.c:823 g10/g10.c:835
+#: g10/g10.c:830 g10/g10.c:842
msgid "selected digest algorithm is invalid\n"
msgstr "algoritmo de \"digest\" selecionado não é válido\n"
-#: g10/g10.c:838
+#: g10/g10.c:845
#, c-format
msgid "compress algorithm must be in range %d..%d\n"
msgstr "algoritmo de compressão deve estar na faixa %d..%d\n"
-#: g10/g10.c:840
+#: g10/g10.c:847
msgid "completes-needed must be greater than 0\n"
msgstr "completes-needed deve ser maior que 0\n"
-#: g10/g10.c:842
+#: g10/g10.c:849
msgid "marginals-needed must be greater than 1\n"
msgstr "marginals-needed deve ser maior que 1\n"
-#: g10/g10.c:844
+#: g10/g10.c:851
msgid "max-cert-depth must be in range 1 to 255\n"
msgstr "max-cert-depth deve estar na faixa 1 a 255\n"
-#: g10/g10.c:847
+#: g10/g10.c:854
msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
msgstr "NOTA: o modo S2K simples (0) não é recomendável\n"
-#: g10/g10.c:851
+#: g10/g10.c:858
msgid "invalid S2K mode; must be 0, 1 or 3\n"
msgstr "modo S2K inválido: deve ser 0, 1 ou 3\n"
-#: g10/g10.c:934
+#: g10/g10.c:941
#, c-format
msgid "failed to initialize the TrustDB: %s\n"
msgstr "falha ao inicializar o banco de dados de confiança: %s\n"
-#: g10/g10.c:940
+#: g10/g10.c:947
msgid "--store [filename]"
msgstr "--store [nome_do_arquivo]"
-#: g10/g10.c:948
+#: g10/g10.c:955
msgid "--symmetric [filename]"
msgstr "--symmetric [nome_do_arquivo]"
-#: g10/g10.c:956
+#: g10/g10.c:963
msgid "--encrypt [filename]"
msgstr "--encrypt [nome_do_arquivo]"
-#: g10/g10.c:969
+#: g10/g10.c:976
msgid "--sign [filename]"
msgstr "--sign [nome_do_arquivo]"
-#: g10/g10.c:982
+#: g10/g10.c:989
msgid "--sign --encrypt [filename]"
msgstr "--sign --encrypt [nome_do_arquivo]"
-#: g10/g10.c:996
+#: g10/g10.c:1003
msgid "--clearsign [filename]"
msgstr "--clearsign [nome_do_arquivo]"
-#: g10/g10.c:1008
+#: g10/g10.c:1015
msgid "--decrypt [filename]"
msgstr "--decrypt [nome_do_arquivo]"
-#: g10/g10.c:1017
+#: g10/g10.c:1024
msgid "--edit-key username [commands]"
msgstr "--edit-key nome_do_usuário [comandos]"
-#: g10/g10.c:1033
+#: g10/g10.c:1040
msgid "--delete-secret-key username"
msgstr "--delete-secret-key nome_do_usuário"
-#: g10/g10.c:1036
+#: g10/g10.c:1043
msgid "--delete-key username"
msgstr "--delete-key nome_do_usuário"
-#: g10/encode.c:216 g10/g10.c:1059 g10/sign.c:301
+#: g10/encode.c:216 g10/g10.c:1066 g10/sign.c:311
#, c-format
msgid "can't open %s: %s\n"
msgstr "impossível abrir %s: %s\n"
-#: g10/g10.c:1070
+#: g10/g10.c:1077
msgid "-k[v][v][v][c] [userid] [keyring]"
msgstr "-k[v][v][v][c] [id_do_usuário] [anel_de_chaves]"
-#: g10/g10.c:1127
+#: g10/g10.c:1138
#, c-format
msgid "dearmoring failed: %s\n"
msgstr "retirada de armadura falhou: %s\n"
-#: g10/g10.c:1135
+#: g10/g10.c:1146
#, c-format
msgid "enarmoring failed: %s\n"
msgstr "criação de armadura falhou: %s\n"
-#: g10/g10.c:1201
+#: g10/g10.c:1212
#, c-format
msgid "invalid hash algorithm `%s'\n"
msgstr "algoritmo de distribuição inválido `%s'\n"
-#: g10/g10.c:1280
+#: g10/g10.c:1291
msgid "[filename]"
msgstr "[nome_do_arquivo]"
-#: g10/g10.c:1284
+#: g10/g10.c:1295
msgid "Go ahead and type your message ...\n"
msgstr "Vá em frente e digite sua mensagem ...\n"
-#: g10/decrypt.c:59 g10/g10.c:1287 g10/verify.c:66
+#: g10/decrypt.c:59 g10/g10.c:1298 g10/verify.c:66
#, c-format
msgid "can't open `%s'\n"
msgstr "impossível abrir `%s'\n"
-#: g10/armor.c:321
+#: g10/armor.c:297
#, c-format
msgid "armor: %s\n"
msgstr "armadura: %s\n"
-#: g10/armor.c:344
+#: g10/armor.c:320
msgid "invalid armor header: "
msgstr "cabeçalho de armadura inválido: "
-#: g10/armor.c:351
+#: g10/armor.c:327
msgid "armor header: "
msgstr "cabeçalho de armadura: "
-#: g10/armor.c:362
+#: g10/armor.c:338
msgid "invalid clearsig header\n"
msgstr "cabeçalho de assinatura em texto puro inválido\n"
-#: g10/armor.c:414
+#: g10/armor.c:390
#, fuzzy
msgid "nested clear text signatures\n"
msgstr "|[arquivo]|faz uma assinatura em texto puro"
-#: g10/armor.c:530
+#: g10/armor.c:508
msgid "invalid dash escaped line: "
msgstr "linha com hífen inválida: "
-#: g10/armor.c:538
+#: g10/armor.c:516
#, fuzzy
msgid "unexpected armor:"
msgstr "Dados inesperados"
-#: g10/armor.c:624
+#: g10/armor.c:632
#, c-format
msgid "invalid radix64 character %02x skipped\n"
msgstr "caractere radix64 inválido %02x ignorado\n"
-#: g10/armor.c:654
+#: g10/armor.c:675
msgid "premature eof (no CRC)\n"
msgstr "fim de arquivo prematuro (sem CRC)\n"
-#: g10/armor.c:671
+#: g10/armor.c:709
msgid "premature eof (in CRC)\n"
msgstr "fim de arquivo prematuro (no CRC)\n"
-#: g10/armor.c:675
+#: g10/armor.c:713
msgid "malformed CRC\n"
msgstr "CRC malformado\n"
-#: g10/armor.c:679
+#: g10/armor.c:717
#, c-format
msgid "CRC error; %06lx - %06lx\n"
msgstr "erro de CRC; %06lx - %06lx\n"
-#: g10/armor.c:696
+#: g10/armor.c:734
msgid "premature eof (in Trailer)\n"
msgstr "fim de arquivo prematuro (no \"Trailer\")\n"
-#: g10/armor.c:700
+#: g10/armor.c:738
msgid "error in trailer line\n"
msgstr "erro na linha \"trailer\"\n"
-#: g10/armor.c:961
+#: g10/armor.c:999
#, fuzzy
msgid "no valid OpenPGP data found.\n"
msgstr "nenum dado RFC1991 ou OpenPGP válido encontrado.\n"
-#: g10/armor.c:963
+#: g10/armor.c:1001
#, c-format
msgid "invalid armor: line longer than %d characters\n"
msgstr ""
+#: g10/armor.c:1005
+msgid ""
+"quoted printable character in armor - probably a buggy MTA has been used\n"
+msgstr ""
+
#: g10/pkclist.c:138
#, c-format
msgid ""
"No trust value assigned to %lu:\n"
"%4u%c/%08lX %s \""
msgstr ""
"Nenhum valor de confiança designado para %lu:\n"
"%4u%c/%08lX %s \""
#: g10/pkclist.c:148
msgid ""
"Please decide how far you trust this user to correctly\n"
"verify other users' keys (by looking at passports,\n"
"checking fingerprints from different sources...)?\n"
"\n"
" 1 = Don't know\n"
" 2 = I do NOT trust\n"
" 3 = I trust marginally\n"
" 4 = I trust fully\n"
" s = please show me more information\n"
msgstr ""
"Por favor decida quanto você confia neste usuário para\n"
"verificar corretamente as chaves de outros usuários\n"
"(olhando em passaportes, checando impressões digitais\n"
"de outras fontes...)?\n"
"\n"
" 1 = Não sei\n"
" 2 = Eu NÃO confio\n"
" 3 = Eu confio marginalmente\n"
" 4 = Eu confio completamente\n"
" 5 = Mostrar mais informação\n"
#: g10/pkclist.c:157
msgid " m = back to the main menu\n"
msgstr " m = volta ao menu principal\n"
#: g10/pkclist.c:159
msgid " q = quit\n"
msgstr ""
#. a string with valid answers
#: g10/pkclist.c:164
#, fuzzy
msgid "sSmMqQ"
msgstr "iImMqQ"
#: g10/pkclist.c:168
msgid "Your decision? "
msgstr "Sua decisão? "
#: g10/pkclist.c:188
msgid "Certificates leading to an ultimately trusted key:\n"
msgstr "Certificados que levam a uma chave confiada plenamente:\n"
#: g10/pkclist.c:223
msgid ""
"Could not find a valid trust path to the key. Let's see whether we\n"
"can assign some missing owner trust values.\n"
"\n"
msgstr ""
"Não foi possível encontrar uma rota de confiança válida para a chave.\n"
"Vamos ver se é possível designar alguns valores de confiança perdidos.\n"
"\n"
#: g10/pkclist.c:261
msgid ""
"No path leading to one of our keys found.\n"
"\n"
msgstr "Nenhuma rota que leva a uma de nossas chaves encontrada.\n"
#: g10/pkclist.c:263
msgid ""
"No certificates with undefined trust found.\n"
"\n"
msgstr ""
"Nenhum certificado com confiança indefinida encontrado.\n"
"\n"
#: g10/pkclist.c:265
msgid ""
"No trust values changed.\n"
"\n"
msgstr ""
"Nenhum valor de confiança modificado.\n"
"\n"
#: g10/pkclist.c:280
#, c-format
msgid "key %08lX: key has been revoked!\n"
msgstr "chave %08lX: a chave foi revogada!\n"
#: g10/pkclist.c:286 g10/pkclist.c:381
msgid "Use this key anyway? "
msgstr "Usa esta chave de qualquer modo?"
#: g10/pkclist.c:308
#, c-format
msgid "%08lX: key has expired\n"
msgstr "%08lX: a chave expirou\n"
#: g10/pkclist.c:314
#, c-format
msgid "%08lX: no info to calculate a trust probability\n"
msgstr "%08lX: sem informação para calcular probabilidade de confiança\n"
#: g10/pkclist.c:332
#, c-format
msgid "%08lX: We do NOT trust this key\n"
msgstr "%08lX: Nós NÃO confiamos nesta chave\n"
#: g10/pkclist.c:338
#, fuzzy, c-format
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 é aceitada de qualquer modo\n"
#: g10/pkclist.c:344
msgid "This key probably belongs to the owner\n"
msgstr "Esta chave provavelmente pertence ao dono\n"
#: g10/pkclist.c:349
msgid "This key belongs to us\n"
msgstr "Esta chave pertence a nós (nós temos a chave secreta)\n"
#: g10/pkclist.c:376
msgid ""
"It is NOT certain that the key belongs to its owner.\n"
"If you *really* know what you are doing, you may answer\n"
"the next question with yes\n"
"\n"
msgstr ""
"Não se tem certeza de que esta chave pertence a seu dono.\n"
"Se você *realmente* sabe o que está fazendo, pode responder\n"
"afirmativamente à próxima pergunta\n"
"\n"
#: g10/pkclist.c:385
msgid "WARNING: Using untrusted key!\n"
msgstr "AVISO: Usando chave não confiável!\n"
#: g10/pkclist.c:421
msgid "WARNING: This key has been revoked by its owner!\n"
msgstr "AVISO: Esta chave foi revogada pelo seu dono!\n"
#: g10/pkclist.c:422
msgid " This could mean that the signature is forgery.\n"
msgstr " Isto pode significar que a assinatura é falsificada.\n"
#: g10/pkclist.c:443
msgid "Note: This key has expired!\n"
msgstr "Nota: Esta chave expirou!\n"
#: g10/pkclist.c:450
msgid "WARNING: This key is not certified with a trusted signature!\n"
msgstr "AVISO: Esta chave não está certificada com uma assinatura confiável!\n"
#: g10/pkclist.c:452
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"
#: g10/pkclist.c:468
msgid "WARNING: We do NOT trust this key!\n"
msgstr "AVISO: Nós NÃO confiamos nesta chave!\n"
#: g10/pkclist.c:469
msgid " The signature is probably a FORGERY.\n"
msgstr " A assinatura é provavelmente uma FALSIFICAÇÃO.\n"
#: g10/pkclist.c:476
msgid ""
"WARNING: This key is not certified with sufficiently trusted signatures!\n"
msgstr "AVISO: Esta chave não está certificada com assinaturas confiáveis!\n"
#: g10/pkclist.c:479
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"
#: g10/pkclist.c:524
msgid ""
"You did not specify a user ID. (you may use \"-r\")\n"
"\n"
msgstr ""
"Você não especificou um ID de usuário. (pode-se usar \"-r\")\n"
"\n"
#: g10/pkclist.c:529
msgid "Enter the user ID: "
msgstr "Digite o identificador de usuário:"
#: g10/pkclist.c:540
msgid "No such user ID.\n"
msgstr "Identificador de usuário inexistente.\n"
#: g10/pkclist.c:574 g10/pkclist.c:601
#, c-format
msgid "%s: skipped: %s\n"
msgstr "%s: ignorado: %s\n"
#: g10/pkclist.c:582
#, c-format
msgid "%s: error checking key: %s\n"
msgstr "%s: erro verificando chave: %s\n"
#: g10/pkclist.c:608
msgid "no valid addressees\n"
msgstr "nenhum endereço válido\n"
#: g10/keygen.c:124
msgid "writing self signature\n"
msgstr "escrevendo auto-assinatura\n"
#: g10/keygen.c:162
msgid "writing key binding signature\n"
msgstr "escrevendo assinatura ligada a uma chave\n"
#: g10/keygen.c:388
msgid "Please select what kind of key you want:\n"
msgstr "Por favor selecione o tipo de chave desejado:\n"
#: g10/keygen.c:390
#, c-format
msgid " (%d) DSA and ElGamal (default)\n"
msgstr " (%d) DSA e ElGamal (padrão)\n"
#: g10/keygen.c:391
#, c-format
msgid " (%d) DSA (sign only)\n"
msgstr " (%d) DSA (apenas assinatura)\n"
#: g10/keygen.c:393
#, c-format
msgid " (%d) ElGamal (encrypt only)\n"
msgstr " (%d) ElGamal (apenas criptografia)\n"
#: g10/keygen.c:394
#, c-format
msgid " (%d) ElGamal (sign and encrypt)\n"
msgstr " (%d) ElGamal (assinatura e criptografia)\n"
#: g10/keygen.c:396
#, c-format
msgid " (%d) ElGamal in a v3 packet\n"
msgstr " (%d) ElGamal em um pacote v3\n"
#: g10/keygen.c:401
msgid "Your selection? "
msgstr "Sua opção? "
#: g10/keygen.c:411
#, fuzzy
msgid "Do you really want to create a sign and encrypt key? "
msgstr "Você realmente quer deletar as chaves selecionadas? "
#: g10/keygen.c:432
msgid "Invalid selection.\n"
msgstr "Opção inválida.\n"
#: g10/keygen.c:444
#, c-format
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 novo par de chaves %s.\n"
" tamanho mínimo é 768 bits\n"
" tamanho padrão é 1024 bits\n"
" tamanho máximo sugerido é 2048 bits\n"
#: g10/keygen.c:451
msgid "What keysize do you want? (1024) "
msgstr "Que tamanho de chave você quer? (1024) "
#: g10/keygen.c:456
msgid "DSA only allows keysizes from 512 to 1024\n"
msgstr "DSA permite apenas tamanhos de 512 a 1024\n"
#: g10/keygen.c:458
msgid "keysize too small; 768 is smallest value allowed.\n"
msgstr "tamanho muito pequeno; 768 é o valor mínimo permitido.\n"
#: g10/keygen.c:461
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"
#: g10/keygen.c:464
msgid "Are you sure that you want this keysize? "
msgstr "Você tem certeza de que quer este tamanho de chave? "
#: g10/keygen.c:465
msgid ""
"Okay, but keep in mind that your monitor and keyboard radiation is also very "
"vulnerable to attacks!\n"
msgstr ""
"Tudo bem, mas tenha em mente que a radiação de seu monitor e teclado também "
"é vulnerável a ataques!\n"
#: g10/keygen.c:473
msgid "Do you really need such a large keysize? "
msgstr "Você realmente precisa de uma chave tão grande? "
#: g10/keygen.c:479
#, c-format
msgid "Requested keysize is %u bits\n"
msgstr "O tamanho de chave pedido é %u bits\n"
#: g10/keygen.c:482 g10/keygen.c:486
#, c-format
msgid "rounded up to %u bits\n"
msgstr "arredondado para %u bits\n"
#: g10/keygen.c:499
msgid ""
"Please specify how long the key should be valid.\n"
" 0 = key does not expire\n"
" <n> = key expires in n days\n"
" <n>w = key expires in n weeks\n"
" <n>m = key expires in n months\n"
" <n>y = key expires in n years\n"
msgstr ""
"Por favor especifique por quanto tempo a chave deve ser válida.\n"
" 0 = chave não expira\n"
" <n> = chave expira em n dias\n"
" <n>w = chave expira em n semanas\n"
" <n>m = chave expira em n meses\n"
" <n>y = chave expira em n anos\n"
#: g10/keygen.c:514
msgid "Key is valid for? (0) "
msgstr "A chave é valida por? (0) "
#: g10/keygen.c:525
msgid "invalid value\n"
msgstr "valor inválido\n"
#: g10/keygen.c:530
msgid "Key does not expire at all\n"
msgstr "A chave não expira nunca\n"
#. print the date when the key expires
#: g10/keygen.c:536
#, c-format
msgid "Key expires at %s\n"
msgstr "A chave expira em %s\n"
#: g10/keygen.c:542
msgid "Is this correct (y/n)? "
msgstr "Está correto (s/n)? "
#: g10/keygen.c:584
msgid ""
"\n"
"You need a User-ID to identify your key; the software constructs the user "
"id\n"
"from Real Name, Comment and Email Address in this form:\n"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
msgstr ""
"\n"
"Você precisa de um identificador de usuário 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"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
#: g10/keygen.c:595
msgid "Real name: "
msgstr "Nome completo: "
#: g10/keygen.c:599
msgid "Invalid character in name\n"
msgstr "Caractere inválido no nome\n"
#: g10/keygen.c:601
msgid "Name may not start with a digit\n"
msgstr "O nome não deve começar com um dígito\n"
#: g10/keygen.c:603
msgid "Name must be at least 5 characters long\n"
msgstr "O nome deve ter pelo menos 5 caracteres\n"
#: g10/keygen.c:611
msgid "Email address: "
msgstr "Endereço de correio eletrônico: "
#: g10/keygen.c:623
msgid "Not a valid email address\n"
msgstr "Endereço eletrônico inválido\n"
#: g10/keygen.c:631
msgid "Comment: "
msgstr "Comentário: "
#: g10/keygen.c:637
msgid "Invalid character in comment\n"
msgstr "Caractere inválido no comentário\n"
#: g10/keygen.c:657
#, c-format
msgid ""
"You selected this USER-ID:\n"
" \"%s\"\n"
"\n"
msgstr ""
"Você selecionou este identificador de usuário:\n"
" \"%s\"\n"
"\n"
#: g10/keygen.c:660
msgid "NnCcEeOoQq"
msgstr "NnCcEeVvSs"
#: g10/keygen.c:670
msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
msgstr "Muda (N)ome, (C)omentário, (E)ndereço ou (V)álido/(S)air? "
#: g10/keygen.c:722
msgid ""
"You need a Passphrase to protect your secret key.\n"
"\n"
msgstr ""
"Você precisa de uma frase secreta para proteger sua chave.\n"
"\n"
#: g10/keyedit.c:389 g10/keygen.c:730
msgid "passphrase not correctly repeated; try again.\n"
msgstr "A frase secreta não foi repetida corretamente; tente outra vez.\n"
#: g10/keygen.c:736
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 fazer isso de qualquer modo. Você pode mudar sua frase secreta a\n"
"qualquer hora, usando este programa com a opção \"--edit-key\".\n"
"\n"
#: g10/keygen.c:757
msgid ""
"We need to generate a lot of random bytes. It is a good idea to perform\n"
"some other action (work in another window, move the mouse, utilize the\n"
"network and the disks) during the prime generation; this gives the random\n"
"number generator a better chance to gain enough entropy.\n"
msgstr ""
"Precisamos gerar muitos bytes aleatórios. É uma boa idéia realizar outra\n"
"atividade (trabalhar em outra janela, mover o mouse, usar a rede e os "
"disco)\n"
"durante a geração dos números primos; isso dá ao gerador de números "
"aleatórios\n"
"uma chance melhor de conseguir entropia suficiente.\n"
#: g10/keygen.c:827
msgid "Key generation can only be used in interactive mode\n"
msgstr "A geração de chaves só pode ser feita em modo interativo\n"
#: g10/keygen.c:835
msgid "DSA keypair will have 1024 bits.\n"
msgstr "O par de chaves DSA terá 1024 bits.\n"
#: g10/keygen.c:841
msgid "Key generation cancelled.\n"
msgstr "Geração de chaves cancelada.\n"
#: g10/keygen.c:851
#, c-format
msgid "writing public certificate to `%s'\n"
msgstr "escrevendo certificado público para `%s'\n"
#: g10/keygen.c:852
#, c-format
msgid "writing secret certificate to `%s'\n"
msgstr "escrevendo certificado privado para `%s'\n"
#: g10/keygen.c:929
msgid "public and secret key created and signed.\n"
msgstr "chaves pública e privada criadas e assinadas.\n"
#: g10/keygen.c:931
+#, fuzzy
msgid ""
"Note that this key cannot be used for encryption. You may want to use\n"
-"the command \"--add-key\" to generate a secondary key for this purpose.\n"
+"the command \"--edit-key\" to generate a secondary key for this purpose.\n"
msgstr ""
"Note que esta chave não pode ser usada para criptografia. Você pode usar\n"
"o comando \"--add-key\" para gerar uma chave secundária para esse "
"propósito.\n"
-#: g10/keygen.c:945 g10/keygen.c:1030
+#: g10/keygen.c:945 g10/keygen.c:1044
#, c-format
msgid "Key generation failed: %s\n"
msgstr "A geração de chaves falhou: %s\n"
-#: g10/keygen.c:1008
+#: g10/keygen.c:989 g10/sig-check.c:172 g10/sign.c:52
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu second in future (time warp or clock problem)\n"
+msgstr ""
+"chave pública criada no futuro (viagem no tempo ou problema no relógio)\n"
+
+#: g10/keygen.c:991 g10/sig-check.c:174 g10/sign.c:54
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu seconds in future (time warp or clock problem)\n"
+msgstr ""
+"chave pública criada no futuro (viagem no tempo ou problema no relógio)\n"
+
+#: g10/keygen.c:1022
msgid "Really create? "
msgstr "Realmente criar? "
#: g10/encode.c:88 g10/openfile.c:81 g10/openfile.c:158 g10/tdbio.c:459
#: g10/tdbio.c:510
#, c-format
msgid "%s: can't open: %s\n"
msgstr "%s: impossível abrir: %s\n"
#: g10/encode.c:107
#, c-format
msgid "error creating passphrase: %s\n"
msgstr "erro criando frase secreta: %s\n"
#: g10/encode.c:155 g10/encode.c:269
#, c-format
msgid "%s: WARNING: empty file\n"
msgstr "%s: AVISO: arquivo vazio\n"
#: g10/encode.c:222
#, c-format
msgid "reading from `%s'\n"
msgstr "lendo de `%s'\n"
#: g10/encode.c:397
#, fuzzy, c-format
msgid "%s/%s encrypted for: %s\n"
msgstr "%s codificado para: %s\n"
-#: g10/export.c:114
+#: g10/export.c:147
#, fuzzy, c-format
msgid "%s: user not found: %s\n"
msgstr "%s: usuário não encontrado\n"
-#: g10/export.c:123
+#: g10/export.c:156
#, fuzzy, c-format
msgid "certificate read problem: %s\n"
msgstr "erro de leitura do usuário `%s': %s\n"
-#: g10/export.c:132
+#: g10/export.c:165
#, fuzzy, c-format
msgid "key %08lX: not a rfc2440 key - skipped\n"
msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n"
-#: g10/export.c:174
+#: g10/export.c:203
msgid "WARNING: nothing exported\n"
msgstr "AVISO: nada exportado\n"
#: g10/getkey.c:164
msgid "too many entries in pk cache - disabled\n"
msgstr "entradas demais no cache pk - desabilitado\n"
#: g10/getkey.c:294
msgid "too many entries in unk cache - disabled\n"
msgstr "entradas demais no cache unk - desabilitado\n"
#: g10/getkey.c:1038
#, c-format
msgid "using secondary key %08lX instead of primary key %08lX\n"
msgstr "usando chave secundária %08lX ao invés de chave primária %08lX\n"
-#: g10/import.c:129 g10/trustdb.c:1180
+#: g10/import.c:117 g10/trustdb.c:1180
#, c-format
msgid "can't open file: %s\n"
msgstr "impossível abrir arquivo: %s\n"
-#: g10/import.c:148
+#: g10/import.c:165
#, c-format
msgid "skipping block of type %d\n"
msgstr "ignorando bloco do tipo %d\n"
-#: g10/import.c:155 g10/trustdb.c:1474 g10/trustdb.c:1543
+#: g10/import.c:172 g10/trustdb.c:1474 g10/trustdb.c:1543
#, c-format
msgid "%lu keys so far processed\n"
msgstr "%lu chaves processadas até agora\n"
-#: g10/import.c:160 g10/trustdb.c:1256
+#: g10/import.c:177 g10/trustdb.c:1256
#, c-format
msgid "read error: %s\n"
msgstr "erro de leitura: %s\n"
-#: g10/import.c:162
+#: g10/import.c:179
#, c-format
msgid "Total number processed: %lu\n"
msgstr "Número total processado: %lu\n"
-#: g10/import.c:164
+#: g10/import.c:181
#, c-format
msgid " w/o user IDs: %lu\n"
msgstr " sem IDs de usuários: %lu\n"
-#: g10/import.c:166
+#: g10/import.c:183
#, c-format
msgid " imported: %lu"
msgstr " importados: %lu"
-#: g10/import.c:172
+#: g10/import.c:189
#, c-format
msgid " unchanged: %lu\n"
msgstr " não modificados: %lu\n"
-#: g10/import.c:174
+#: g10/import.c:191
#, c-format
msgid " new user IDs: %lu\n"
msgstr " novos IDs de usuários: %lu\n"
-#: g10/import.c:176
+#: g10/import.c:193
#, c-format
msgid " new subkeys: %lu\n"
msgstr " novas subchaves: %lu\n"
-#: g10/import.c:178
+#: g10/import.c:195
#, c-format
msgid " new signatures: %lu\n"
msgstr " novas assinaturas: %lu\n"
-#: g10/import.c:180
+#: g10/import.c:197
#, c-format
msgid " new key revocations: %lu\n"
msgstr " novas revogações de chaves: %lu\n"
-#: g10/import.c:182
+#: g10/import.c:199
#, c-format
msgid " secret keys read: %lu\n"
msgstr " chaves secretas lidas: %lu\n"
-#: g10/import.c:184
+#: g10/import.c:201
#, c-format
msgid " secret keys imported: %lu\n"
msgstr " chaves secretas importadas: %lu\n"
-#: g10/import.c:186
+#: g10/import.c:203
#, c-format
msgid " secret keys unchanged: %lu\n"
msgstr " chaves secretas não modificadas: %lu\n"
-#: g10/import.c:328 g10/import.c:520
+#: g10/import.c:343 g10/import.c:535
#, c-format
msgid "key %08lX: no user id\n"
msgstr "chave %08lX: sem id de usuário\n"
-#: g10/import.c:339
+#: g10/import.c:354
#, c-format
msgid "key %08lX: no valid user ids\n"
msgstr "chave %08lX: sem ids de usuários válidos\n"
-#: g10/import.c:341
+#: g10/import.c:356
msgid "this may be caused by a missing self-signature\n"
msgstr "isto pode ser causado por falta de auto-assinatura\n"
-#: g10/import.c:352 g10/import.c:588
+#: g10/import.c:367 g10/import.c:603
#, c-format
msgid "key %08lX: public key not found: %s\n"
msgstr "chave %08lX: chave pública não encontrada: %s\n"
-#: g10/import.c:358
+#: g10/import.c:373
msgid "no default public keyring\n"
msgstr "sem anel de chaves público padrão\n"
-#: g10/import.c:362 g10/openfile.c:105 g10/sign.c:205 g10/sign.c:592
+#: g10/import.c:377 g10/openfile.c:105 g10/sign.c:215 g10/sign.c:601
#, c-format
msgid "writing to `%s'\n"
msgstr "escrevendo para `%s'\n"
-#: g10/import.c:366 g10/import.c:426 g10/import.c:642
+#: g10/import.c:381 g10/import.c:441 g10/import.c:657
#, c-format
msgid "can't lock public keyring: %s\n"
msgstr "impossível bloquear anel de chaves público: %s\n"
-#: g10/import.c:369
+#: g10/import.c:384
#, c-format
msgid "can't write to keyring: %s\n"
msgstr "impossível escrever para o anel de chaves: %s\n"
-#: g10/import.c:373
+#: g10/import.c:388
#, c-format
msgid "key %08lX: public key imported\n"
msgstr "chave %08lX: chave pública importada\n"
-#: g10/import.c:386
+#: g10/import.c:401
#, c-format
msgid "key %08lX: doesn't match our copy\n"
msgstr "chave %08lX: não corresponde à nossa cópia\n"
-#: g10/import.c:399 g10/import.c:597
+#: g10/import.c:414 g10/import.c:612
#, c-format
msgid "key %08lX: can't locate original keyblock: %s\n"
msgstr "chave %08lX: impossível localizar bloco de chaves original: %s\n"
-#: g10/import.c:406 g10/import.c:604
+#: g10/import.c:421 g10/import.c:619
#, c-format
msgid "key %08lX: can't read original keyblock: %s\n"
msgstr "chave %08lX: impossível ler bloco de chaves original: %s\n"
-#: g10/import.c:423 g10/import.c:535 g10/import.c:639
+#: g10/import.c:438 g10/import.c:550 g10/import.c:654
msgid "writing keyblock\n"
msgstr "escrevendo bloco de chaves\n"
-#: g10/import.c:429 g10/import.c:645
+#: g10/import.c:444 g10/import.c:660
#, c-format
msgid "can't write keyblock: %s\n"
msgstr "impossível escrever bloco de chaves: %s\n"
-#: g10/import.c:434
+#: g10/import.c:449
#, c-format
msgid "key %08lX: 1 new user-id\n"
msgstr "chave %8lX: 1 novo id de usuário\n"
-#: g10/import.c:437
+#: g10/import.c:452
#, c-format
msgid "key %08lX: %d new user-ids\n"
msgstr "chave %08lX: %d novos ids de usuários\n"
-#: g10/import.c:440
+#: g10/import.c:455
#, c-format
msgid "key %08lX: 1 new signature\n"
msgstr "chave %08lX: 1 nova assinatura\n"
-#: g10/import.c:443
+#: g10/import.c:458
#, c-format
msgid "key %08lX: %d new signatures\n"
msgstr "chave %08lX: %d novas assinaturas\n"
-#: g10/import.c:446
+#: g10/import.c:461
#, c-format
msgid "key %08lX: 1 new subkey\n"
msgstr "chave %08lX: 1 nova subchave\n"
-#: g10/import.c:449
+#: g10/import.c:464
#, c-format
msgid "key %08lX: %d new subkeys\n"
msgstr "chave %08lX: %d novas subchaves\n"
-#: g10/import.c:459
+#: g10/import.c:474
#, c-format
msgid "key %08lX: not changed\n"
msgstr "chave %08lX: não modificada\n"
-#: g10/import.c:538
+#: g10/import.c:553
#, c-format
msgid "can't lock secret keyring: %s\n"
msgstr "impossível bloquear anel de chaves secreto: %s\n"
-#: g10/import.c:541
+#: g10/import.c:556
#, c-format
msgid "can't write keyring: %s\n"
msgstr "impossível escrever anel de chaves: %s\n"
#. we are ready
-#: g10/import.c:544
+#: g10/import.c:559
#, c-format
msgid "key %08lX: secret key imported\n"
msgstr "chave %08lX: chave secreta importada\n"
#. we can't merge secret keys
-#: g10/import.c:548
+#: g10/import.c:563
#, c-format
msgid "key %08lX: already in secret keyring\n"
msgstr "chave %08lX: já no anel de chaves secreto\n"
-#: g10/import.c:553
+#: g10/import.c:568
#, c-format
msgid "key %08lX: secret key not found: %s\n"
msgstr "chave %08lX: chave secreta não encontrada: %s\n"
-#: g10/import.c:582
+#: g10/import.c:597
#, c-format
msgid "key %08lX: 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"
-#: g10/import.c:615
+#: g10/import.c:630
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - rejected\n"
msgstr "chave %08lX: certificado de revogação inválido: %s - rejeitado\n"
-#: g10/import.c:649
+#: g10/import.c:664
#, c-format
msgid "key %08lX: revocation certificate imported\n"
msgstr "chave %08lX: certificado de revogação importado\n"
-#: g10/import.c:680
+#: g10/import.c:698
#, c-format
msgid "key %08lX: no user-id for signature\n"
msgstr "chave %08lX: sem id de usuário para assinatura\n"
-#: g10/import.c:687
+#: g10/import.c:705 g10/import.c:729
#, c-format
msgid "key %08lX: unsupported public key algorithm\n"
msgstr "chave %08lX: algoritmo de chave pública não suportado\n"
-#: g10/import.c:688
+#: g10/import.c:706
#, c-format
msgid "key %08lX: invalid self-signature\n"
msgstr "chave %08lX: auto-assinatura inválida\n"
-#: g10/import.c:717
+#: g10/import.c:722
+#, fuzzy, c-format
+msgid "key %08lX: no subkey for key binding\n"
+msgstr "chave %08lX.%lu: Ligação de subchave válida\n"
+
+#: g10/import.c:730
+#, fuzzy, c-format
+msgid "key %08lX: invalid subkey binding\n"
+msgstr "chave %08lX.%lu: Ligação de subchave inválida: %s\n"
+
+#: g10/import.c:761
#, c-format
msgid "key %08lX: skipped userid '"
msgstr "chave %08lX: id de usuário ignorado '"
-#: g10/import.c:740
+#: g10/import.c:781
+#, fuzzy, c-format
+msgid "key %08lX: skipped subkey\n"
+msgstr "chave %08lX: 1 nova subchave\n"
+
+#: g10/import.c:800
#, c-format
msgid "key %08lX: revocation certificate at wrong place - skipped\n"
msgstr "chave %08lX: certificado de revogação no local errado - ignorado\n"
-#: g10/import.c:748
+#: g10/import.c:808
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - skipped\n"
msgstr "chave %08lX: certificado de revogação inválido: %s - ignorado\n"
-#: g10/import.c:807
+#: g10/import.c:867
#, c-format
msgid "key %08lX: revocation certificate added\n"
msgstr "chave %08lX: certificado de revogação adicionado\n"
-#: g10/import.c:921 g10/import.c:976
+#: g10/import.c:981 g10/import.c:1036
#, c-format
msgid "key %08lX: our copy has no self-signature\n"
msgstr "chave %08lX: nossa cópia não tem auto-assinatura\n"
#: g10/keyedit.c:81
#, c-format
msgid "%s: user not found\n"
msgstr "%s: usuário não encontrado\n"
#: g10/keyedit.c:164
msgid "[self-signature]"
msgstr "[auto-assinatura]"
#: g10/keyedit.c:182
msgid "1 bad signature\n"
msgstr "1 assinatura incorreta\n"
#: g10/keyedit.c:184
#, c-format
msgid "%d bad signatures\n"
msgstr "%d assinaturas incorretas\n"
#: g10/keyedit.c:186
msgid "1 signature not checked due to a missing key\n"
msgstr "1 assinatura não verificada por falta de chave\n"
#: g10/keyedit.c:188
#, c-format
msgid "%d signatures not checked due to missing keys\n"
msgstr "%d assinaturas não verificadas por falta de chaves\n"
#: g10/keyedit.c:190
msgid "1 signature not checked due to an error\n"
msgstr "1 assinatura não checada por causa de um erro\n"
#: g10/keyedit.c:192
#, c-format
msgid "%d signatures not checked due to errors\n"
msgstr "%d assinaturas não verificadas por causa de erros\n"
#: g10/keyedit.c:194
msgid "1 user id without valid self-signature detected\n"
msgstr "1 id de usuário sem auto-assinatura válida detectado\n"
#: g10/keyedit.c:196
#, c-format
msgid "%d user ids without valid self-signatures detected\n"
msgstr "%d ids de usuários sem auto-assinaturas válidas detectados\n"
#: g10/keyedit.c:258
#, c-format
msgid "Already signed by key %08lX\n"
msgstr "Já assinado pela chave %08lX\n"
#: g10/keyedit.c:266
#, c-format
msgid "Nothing to sign with key %08lX\n"
msgstr "Nada para assinar com a chave %08lX\n"
#: g10/keyedit.c:275
msgid ""
"Are you really sure that you want to sign this key\n"
"with your key: \""
msgstr ""
"Você tem certeza de que quer assinar esta chave com\n"
"sua chave: \""
#: g10/keyedit.c:282
msgid "Really sign? "
msgstr "Realmente assinar? "
-#: g10/keyedit.c:303 g10/sign.c:65
+#: g10/keyedit.c:303 g10/sign.c:75
#, c-format
msgid "signing failed: %s\n"
msgstr "assinatura falhou: %s\n"
#: g10/keyedit.c:356
msgid "This key is not protected.\n"
msgstr "Esta chave não é protegida.\n"
#: g10/keyedit.c:359
msgid "Key is protected.\n"
msgstr "A chave é protegida.\n"
#: g10/keyedit.c:376
#, c-format
msgid "Can't edit this key: %s\n"
msgstr "Impossível editar esta chave: %s\n"
#: g10/keyedit.c:381
msgid ""
"Enter the new passphrase for this secret key.\n"
"\n"
msgstr ""
"Digite a nova frase para esta chave secreta.\n"
"\n"
#: g10/keyedit.c:393
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"
#: g10/keyedit.c:396
msgid "Do you really want to do this? "
msgstr "Você realmente quer fazer isso? "
#: g10/keyedit.c:455
msgid "moving a key signature to the correct place\n"
msgstr "movendo a assinatura da chave para o local correto\n"
#: g10/keyedit.c:490
msgid "quit"
msgstr "sair"
#: g10/keyedit.c:490
msgid "quit this menu"
msgstr "sair deste menu"
#: g10/keyedit.c:491
msgid "q"
msgstr "s"
#: g10/keyedit.c:492
msgid "save"
msgstr "gravar"
#: g10/keyedit.c:492
msgid "save and quit"
msgstr "gravar e sair"
#: g10/keyedit.c:493
msgid "help"
msgstr "ajuda"
#: g10/keyedit.c:493
msgid "show this help"
msgstr "mostra esta ajuda"
#: g10/keyedit.c:495
msgid "fpr"
msgstr ""
#: g10/keyedit.c:495
msgid "show fingerprint"
msgstr "mostra impressão digital"
#: g10/keyedit.c:496
msgid "list"
msgstr "lista"
#: g10/keyedit.c:496
msgid "list key and user ids"
msgstr "lista chave e identificadores de usuários"
#: g10/keyedit.c:497
msgid "l"
msgstr ""
#: g10/keyedit.c:498
msgid "uid"
msgstr ""
#: g10/keyedit.c:498
msgid "select user id N"
msgstr "seleciona id de usuário N"
#: g10/keyedit.c:499
msgid "key"
msgstr "chave"
#: g10/keyedit.c:499
msgid "select secondary key N"
msgstr "seleciona chave secundária N"
#: g10/keyedit.c:500
msgid "check"
msgstr "verifica"
#: g10/keyedit.c:500
msgid "list signatures"
msgstr "lista assinaturas"
#: g10/keyedit.c:501
msgid "c"
msgstr "v"
#: g10/keyedit.c:502
msgid "sign"
msgstr "assina"
#: g10/keyedit.c:502
msgid "sign the key"
msgstr "assina a chave"
#: g10/keyedit.c:503
msgid "s"
msgstr "a"
#: g10/keyedit.c:504
msgid "debug"
msgstr "depura"
#: g10/keyedit.c:505
msgid "adduid"
msgstr ""
#: g10/keyedit.c:505
msgid "add a user id"
msgstr "adiciona um novo id de usuário"
#: g10/keyedit.c:506
msgid "deluid"
msgstr ""
#: g10/keyedit.c:506
msgid "delete user id"
msgstr "deleta id de usuário"
#: g10/keyedit.c:507
msgid "addkey"
msgstr ""
#: g10/keyedit.c:507
msgid "add a secondary key"
msgstr "adiciona nova chave secundária"
#: g10/keyedit.c:508
msgid "delkey"
msgstr ""
#: g10/keyedit.c:508
msgid "delete a secondary key"
msgstr "deleta uma chave secundária"
#: g10/keyedit.c:509
msgid "expire"
msgstr "expira"
#: g10/keyedit.c:509
msgid "change the expire date"
msgstr "muda a data em que a chave expira"
#: g10/keyedit.c:510
msgid "toggle"
msgstr "comuta"
#: g10/keyedit.c:510
msgid "toggle between secret and public key listing"
msgstr "comuta entre listagem de chave secreta e pública"
#: g10/keyedit.c:512
msgid "t"
msgstr "c"
#: g10/keyedit.c:513
msgid "pref"
msgstr ""
#: g10/keyedit.c:513
msgid "list preferences"
msgstr "lista preferências"
#: g10/keyedit.c:514
msgid "passwd"
msgstr "senha"
#: g10/keyedit.c:514
msgid "change the passphrase"
msgstr "muda a frase secreta"
#: g10/keyedit.c:515
msgid "trust"
msgstr "confianca"
#: g10/keyedit.c:515
msgid "change the ownertrust"
msgstr "muda os valores de confiança"
#: g10/keyedit.c:534
msgid "can't do that in batchmode\n"
msgstr "impossível fazer isso em modo de processo por lotes\n"
#. check that they match
#. FIXME: check that they both match
#: g10/keyedit.c:561
msgid "Secret key is available.\n"
msgstr "Chave secreta disponível\n"
#: g10/keyedit.c:590
msgid "Command> "
msgstr "Comando> "
#: g10/keyedit.c:617
#, fuzzy
msgid "Need the secret key to do this.\n"
msgstr "A chave secreta é necessária para fazer isto.\n"
#: g10/keyedit.c:639
msgid "Save changes? "
msgstr "Salvar alterações? "
#: g10/keyedit.c:642
msgid "Quit without saving? "
msgstr "Sair sem salvar? "
#: g10/keyedit.c:652
#, c-format
msgid "update failed: %s\n"
msgstr "atualização falhou: %s\n"
#: g10/keyedit.c:659
#, c-format
msgid "update secret failed: %s\n"
msgstr "atualização da chave secreta falhou: %s\n"
#: g10/keyedit.c:666
msgid "Key not changed so no update needed.\n"
msgstr "Chave sem mudanças, nenhuma atualização é necessária.\n"
#: g10/keyedit.c:669 g10/keyedit.c:727
#, fuzzy, c-format
msgid "update of trustdb failed: %s\n"
msgstr "atualização da confiança falhou: %s\n"
#: g10/keyedit.c:701
msgid "Really sign all user ids? "
msgstr "Realmente assinar todos os ids de usuário? "
#: g10/keyedit.c:702
msgid "Hint: Select the user ids to sign\n"
msgstr "Sugestão: Selecione os ids de usuário para assinar\n"
#: g10/keyedit.c:738
msgid "You must select at least one user id.\n"
msgstr "Você precisa selecionar pelo menos um id de usuário.\n"
#: g10/keyedit.c:740
msgid "You can't delete the last user id!\n"
msgstr "Você não pode deletar o último id de usuário!\n"
#: g10/keyedit.c:743
msgid "Really remove all selected user ids? "
msgstr "Realmente remover todos os ids de usuário selecionados? "
#: g10/keyedit.c:744
msgid "Really remove this user id? "
msgstr "Realmente remover este id de usuário? "
#: g10/keyedit.c:767
msgid "You must select at least one key.\n"
msgstr "Você deve selecionar pelo menos uma chave.\n"
#: g10/keyedit.c:771
msgid "Do you really want to delete the selected keys? "
msgstr "Você realmente quer deletar as chaves selecionadas? "
#: g10/keyedit.c:772
msgid "Do you really want to delete this key? "
msgstr "Você realmente quer deletar esta chave? "
#: g10/keyedit.c:819
msgid "Invalid command (try \"help\")\n"
msgstr "Comando inválido (tente \"ajuda\")\n"
#: g10/keyedit.c:1197
msgid "Please remove selections from the secret keys.\n"
msgstr "Por favor remova as seleções das chaves secretas.\n"
#: g10/keyedit.c:1203
msgid "Please select at most one secondary key.\n"
msgstr "Por favor selecione no máximo uma chave secundária.\n"
#: g10/keyedit.c:1207
msgid "Changing exiration time for a secondary key.\n"
msgstr "Modificando data de expiração para a chave secundária.\n"
#: g10/keyedit.c:1209
msgid "Changing exiration time for the primary key.\n"
msgstr "Modificando data de expiração para a chave primária.\n"
#: g10/keyedit.c:1250
msgid "You can't change the expiration date of a v3 key\n"
msgstr "Você não pode modificar a data de expiração de uma chave v3\n"
#: g10/keyedit.c:1266
msgid "No corresponding signature in secret ring\n"
msgstr "Nenhuma assinatura correspondente no anel de chaves secreto\n"
#: g10/keyedit.c:1326
#, c-format
msgid "No user id with index %d\n"
msgstr "Nenhum id de usuário com índice %d\n"
#: g10/keyedit.c:1371
#, c-format
msgid "No secondary key with index %d\n"
msgstr "Nenhuma chave secundária com índice %d\n"
-#: g10/mainproc.c:198
+#: g10/mainproc.c:199
#, fuzzy
msgid "public key encrypted data: good DEK\n"
msgstr "dados codificados com chave pública: DEK bom\n"
-#: g10/mainproc.c:201
+#: g10/mainproc.c:202
#, c-format
msgid "public key decryption failed: %s\n"
msgstr "decodificação de chave pública falhou: %s\n"
-#: g10/mainproc.c:228
+#: g10/mainproc.c:229
msgid "decryption okay\n"
msgstr "decodificação correta\n"
-#: g10/mainproc.c:231
+#: g10/mainproc.c:232
#, c-format
msgid "decryption failed: %s\n"
msgstr "decodifiação falhou: %s\n"
-#: g10/mainproc.c:248
+#: g10/mainproc.c:249
msgid "NOTE: sender requested \"for-your-eyes-only\"\n"
msgstr "NOTA: o remetente solicitou \"apenas-para-seus-olhos\"\n"
-#: g10/mainproc.c:250
+#: g10/mainproc.c:251
#, c-format
msgid "original file name='%.*s'\n"
msgstr "nome de arquivo original='%.*s'\n"
-#: g10/mainproc.c:833
+#: g10/mainproc.c:834
msgid "signature verification suppressed\n"
msgstr "verifiação de assinatura suprimida\n"
-#: g10/mainproc.c:839
+#: g10/mainproc.c:840
#, c-format
msgid "Signature made %.*s using %s key ID %08lX\n"
msgstr "Assinatura feita %.*s usando %s ID da chave %08lX\n"
-#: g10/mainproc.c:847
+#: g10/mainproc.c:852
msgid "BAD signature from \""
msgstr "Assinatura INCORRETA de \""
-#: g10/mainproc.c:848
+#: g10/mainproc.c:853
msgid "Good signature from \""
msgstr "Assinatura correta de\""
-#: g10/mainproc.c:879
+#: g10/mainproc.c:884
#, c-format
msgid "Can't check signature: %s\n"
msgstr "Impossível verificar assinatura: %s\n"
-#: g10/mainproc.c:952
+#: g10/mainproc.c:957
msgid "old style (PGP 2.x) signature\n"
msgstr "assinatura antiga (PGP2.x)\n"
-#: g10/mainproc.c:957
+#: g10/mainproc.c:962
msgid "invalid root packet detected in proc_tree()\n"
msgstr "pacote raiz inválido detectado em proc_tree()\n"
#: g10/misc.c:90
#, c-format
msgid "can't disable core dumps: %s\n"
msgstr "impossível desabilitar core dumps: %s\n"
#: g10/misc.c:93
#, fuzzy
msgid "WARNING: program may create a core file!\n"
msgstr "AVISO: O programa pode criar um arquivo core!\n"
#: g10/misc.c:200
msgid "Experimental algorithms should not be used!\n"
msgstr ""
#: g10/misc.c:214
msgid ""
"RSA keys are deprecated; please consider creating a new key and use this key "
"in the future\n"
msgstr ""
"Chaves RSA não são recomendáveis; por favor considere criar uma nova chave e "
"usá-la no futuro\n"
#: g10/misc.c:235
msgid "this cipher algorithm is depreciated; please use a more standard one!\n"
msgstr ""
#: g10/parse-packet.c:113
#, c-format
msgid "can't handle public key algorithm %d\n"
msgstr "impossível manipular algoritmo de chave pública %d\n"
#: g10/parse-packet.c:892
#, c-format
msgid "subpacket of type %d has critical bit set\n"
msgstr ""
#: g10/passphrase.c:141
msgid ""
"\n"
"You need a passphrase to unlock the secret key for\n"
"user: \""
msgstr ""
"\n"
"Você precisa de uma frase para desbloquear a chave secreta do\n"
"usuário: \""
#: g10/passphrase.c:150
#, fuzzy, c-format
msgid "%u-bit %s key, ID %08lX, created %s"
msgstr "(chave %u-bit/%s, ID %08lX, criada em %s)\n"
#: g10/passphrase.c:155
#, c-format
msgid " (main key ID %08lX)"
msgstr ""
#: g10/passphrase.c:183
msgid "Enter passphrase: "
msgstr "Digite a frase secreta: "
#: g10/passphrase.c:187
msgid "Repeat passphrase: "
msgstr "Repita a frase secreta: "
#: g10/plaintext.c:63
msgid "data not saved; use option \"--output\" to save it\n"
msgstr "dados não salvos; use a opção \"--output\" para salvá-los\n"
-#: g10/plaintext.c:166
+#: g10/plaintext.c:208
msgid "Please enter name of data file: "
msgstr "Por favor digite o nome do arquivo de dados: "
-#: g10/plaintext.c:187
+#: g10/plaintext.c:229
msgid "reading stdin ...\n"
msgstr "lendo \"stdin\" ...\n"
-#: g10/plaintext.c:250
+#: g10/plaintext.c:292
#, c-format
msgid "can't open signed data `%s'\n"
msgstr "impossível abrir dados assinados `%s'\n"
#: g10/pubkey-enc.c:78
#, c-format
msgid "anonymous receiver; trying secret key %08lX ...\n"
msgstr "destinatário anônimo; tentando chave secreta %08lX ...\n"
#: g10/pubkey-enc.c:84
#, fuzzy
msgid "okay, we are the anonymous recipient.\n"
msgstr "correto, nós somos o destinatário anônimo.\n"
#: g10/pubkey-enc.c:136
msgid "old encoding of the DEK is not supported\n"
msgstr "codificação antiga do DEK não suportada\n"
#: g10/pubkey-enc.c:183
#, c-format
msgid "NOTE: cipher algorithm %d not found in preferences\n"
msgstr "NOTA: algoritmo de criptografia %d não encontrado nas preferências\n"
#: g10/seckey-cert.c:56
#, c-format
msgid "protection algorithm %d is not supported\n"
msgstr "algoritmo de proteção %d não é suportado\n"
#: g10/seckey-cert.c:176
msgid "Invalid passphrase; please try again ...\n"
msgstr "Frase secreta inválida; por favor tente novamente ...\n"
#: g10/seckey-cert.c:223
msgid "WARNING: Weak key detected - please change passphrase again.\n"
msgstr ""
"AVISO: Chave fraca detectada - por favor mude a frase secreta novamente\n"
#: g10/sig-check.c:155
msgid ""
"this is a PGP generated ElGamal key which is NOT secure for signatures!\n"
msgstr ""
"esta é uma chave ElGamal gerada pelo PGP que NÃO é segura para assinaturas!\n"
-#: g10/sig-check.c:166
+#: g10/sig-check.c:163
#, fuzzy, c-format
-msgid "public key created %lu %s in future (time warp or clock problem)\n"
-msgstr ""
-"chave pública criada no futuro (viagem no tempo ou problema no relógio)\n"
-
-#: g10/sig-check.c:168
-msgid "second"
-msgstr ""
+msgid "public key is %lu second newer than the signature\n"
+msgstr "lid %lu: id de usuário sem assinatura\n"
-#: g10/sig-check.c:168
-msgid "seconds"
-msgstr ""
+#: g10/sig-check.c:164
+#, fuzzy, c-format
+msgid "public key is %lu seconds newer than the signature\n"
+msgstr "lid %lu: id de usuário sem assinatura\n"
-#: g10/sig-check.c:173
+#: g10/sig-check.c:180
#, c-format
msgid "NOTE: signature key expired %s\n"
msgstr "NOTA: chave de assinatura expirou %s\n"
-#: g10/sig-check.c:230
+#: g10/sig-check.c:237
msgid "assuming bad signature due to an unknown critical bit\n"
msgstr ""
-#: g10/sign.c:69
+#: g10/sign.c:79
#, c-format
msgid "%s signature from: %s\n"
msgstr "%s assinatura de: %s\n"
-#: g10/sign.c:200 g10/sign.c:587
+#: g10/sign.c:210 g10/sign.c:596
#, c-format
msgid "can't create %s: %s\n"
msgstr "impossível criar %s: %s\n"
-#: g10/sign.c:296
+#: g10/sign.c:306
msgid "signing:"
msgstr "assinando:"
-#: g10/sign.c:336
+#: g10/sign.c:346
#, c-format
msgid "WARNING: `%s' is an empty file\n"
msgstr "AVISO: `%s' é um arquivo vazio\n"
+#: g10/textfilter.c:199
+#, c-format
+msgid "can't handle text lines longer than %d characters\n"
+msgstr ""
+
#: g10/tdbio.c:116 g10/tdbio.c:1418
#, fuzzy, c-format
msgid "trustdb rec %lu: lseek failed: %s\n"
msgstr "banco de dados de confiança rec %lu: lseek falhou: %s\n"
#: g10/tdbio.c:122 g10/tdbio.c:1425
#, fuzzy, c-format
msgid "trustdb rec %lu: write failed (n=%d): %s\n"
msgstr "banco de dados de confiança rec %lu: escrita falhou (n=%d): %s\n"
#: g10/tdbio.c:232
#, fuzzy
msgid "trustdb transaction too large\n"
msgstr "transação de banco de dados de confiança muito grande\n"
#: g10/tdbio.c:416
#, c-format
msgid "%s: can't access: %s\n"
msgstr "%s: impossível acessar: %s\n"
#: g10/ringedit.c:273 g10/tdbio.c:436
#, c-format
msgid "%s: can't create directory: %s\n"
msgstr "%s: impossível criar diretório: %s\n"
#: g10/ringedit.c:279 g10/tdbio.c:439
#, c-format
msgid "%s: directory created\n"
msgstr "%s: diretório criado\n"
#: g10/tdbio.c:443
#, c-format
msgid "%s: directory does not exist!\n"
msgstr "%s: diretório inexistente!\n"
-#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1275 g10/tdbio.c:449
+#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1292 g10/tdbio.c:449
#, c-format
msgid "%s: can't create: %s\n"
msgstr "%s: impossível criar: %s\n"
#: g10/tdbio.c:473
#, c-format
msgid "%s: failed to create version record: %s"
msgstr "%s: falha ao criar registro de versão: %s"
#: g10/tdbio.c:477
#, fuzzy, c-format
msgid "%s: invalid trustdb created\n"
msgstr "%s: banco de dados de confiança inválido criado\n"
#: g10/tdbio.c:479
#, fuzzy, c-format
msgid "%s: trustdb created\n"
msgstr "%s: banco de dados de confiança criado\n"
#: g10/tdbio.c:512
#, fuzzy, c-format
msgid "%s: invalid trustdb\n"
msgstr "%s: banco de dados de confiança inválido\n"
#: g10/tdbio.c:545
#, c-format
msgid "%s: failed to create hashtable: %s\n"
msgstr "%s: falha ao criar tabela \"hash\": %s\n"
#: g10/tdbio.c:553
#, c-format
msgid "%s: error updating version record: %s\n"
msgstr "%s: erro atualizando registro de versão: %s\n"
#: g10/tdbio.c:569 g10/tdbio.c:608 g10/tdbio.c:633 g10/tdbio.c:1351
#: g10/tdbio.c:1378
#, c-format
msgid "%s: error reading version record: %s\n"
msgstr "%s: erro lendo registro de versão: %s\n"
#: g10/tdbio.c:582
#, c-format
msgid "%s: error writing version record: %s\n"
msgstr "%s: erro escrevendo registro de versão: %s\n"
#: g10/tdbio.c:1058
#, c-format
msgid "trustdb: lseek failed: %s\n"
msgstr "banco de dados de confiança: lseek falhou: %s\n"
#: g10/tdbio.c:1066
#, c-format
msgid "trustdb: read failed (n=%d): %s\n"
msgstr "banco de dados de confiança: leitura falhou (n=%d): %s\n"
#: g10/tdbio.c:1087
#, c-format
msgid "%s: not a trustdb file\n"
msgstr "%s: não é um banco de dados de confiança\n"
#: g10/tdbio.c:1103
#, c-format
msgid "%s: version record with recnum %lu\n"
msgstr "%s: registro de versão com recnum %lu\n"
#: g10/tdbio.c:1108
#, c-format
msgid "%s: invalid file version %d\n"
msgstr "%s: versão de arquivo inválida %d\n"
#: g10/tdbio.c:1384
#, c-format
msgid "%s: error reading free record: %s\n"
msgstr "%s: erro lendo registro livre: %s\n"
#: g10/tdbio.c:1392
#, fuzzy, c-format
msgid "%s: error writing dir record: %s\n"
msgstr "%s: erro escrevendo registro de diretório: %s\n"
#: g10/tdbio.c:1402
#, c-format
msgid "%s: failed to zero a record: %s\n"
msgstr "%s: falha ao zerar um registro: %s\n"
#: g10/tdbio.c:1432
#, c-format
msgid "%s: failed to append a record: %s\n"
msgstr "%s: falha ao anexar um registro: %s\n"
#: g10/trustdb.c:142
#, fuzzy
msgid "The trustdb is corrupted; please run \"gpgm --fix-trustdb\".\n"
msgstr ""
"O banco de dados de confiança está danificado; por favor rode\n"
"\"gpgm --fix-trust-db\".\n"
#: g10/trustdb.c:155
#, fuzzy, c-format
msgid "trust record %lu, req type %d: read failed: %s\n"
msgstr "registro de confiança %lu, tipo req %d: leitura falhou: %s\n"
#: g10/trustdb.c:170
#, c-format
msgid "trust record %lu, type %d: write failed: %s\n"
msgstr "registro de confiança %lu, tipo %d: gravação falhou: %s\n"
#: g10/trustdb.c:184
#, c-format
msgid "trust record %lu: delete failed: %s\n"
msgstr "registro de confiança %lu: remoção falhou: %s\n"
#: g10/trustdb.c:198
#, fuzzy, c-format
msgid "trustdb: sync failed: %s\n"
msgstr "banco de dados de confiança: sincronização falhou: %s\n"
#: g10/trustdb.c:327
#, fuzzy, c-format
msgid "error reading dir record for LID %lu: %s\n"
msgstr "erro lendo registro de diretório para LID %lu: %s\n"
#: g10/trustdb.c:334
#, fuzzy, c-format
msgid "lid %lu: expected dir record, got type %d\n"
msgstr "lid %lu: registro de diretório esperado, tipo %d recebido\n"
#: g10/trustdb.c:339
#, c-format
msgid "no primary key for LID %lu\n"
msgstr "nenhuma chave primária para LID %lu\n"
#: g10/trustdb.c:344
#, c-format
msgid "error reading primary key for LID %lu: %s\n"
msgstr "erro lendo chave primária para LID %lu: %s\n"
#: g10/trustdb.c:420
#, fuzzy, c-format
msgid "chained sigrec %lu has a wrong owner\n"
msgstr "sigrec em cadeia %lu possui dono errado\n"
#: g10/trustdb.c:463
#, fuzzy, c-format
msgid "'%s' is not a valid long keyID\n"
msgstr "%s não é um mapa de caracteres válido\n"
#: g10/trustdb.c:498
#, fuzzy, c-format
msgid "key %08lX: no public key for trusted key - skipped\n"
msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n"
#: g10/trustdb.c:507 g10/trustdb.c:565
#, c-format
msgid "key %08lX: can't put it into the trustdb\n"
msgstr "chave %08lX: impossível colocá-la no banco de dados de confiança\n"
#: g10/trustdb.c:512 g10/trustdb.c:571
#, c-format
msgid "key %08lX: query record failed\n"
msgstr "chave %08lX: pedido de registro falhou\n"
#: g10/trustdb.c:517 g10/trustdb.c:580
#, fuzzy, c-format
msgid "key %08lX: already in trusted key table\n"
msgstr "chave %08lX: já está na tabela de chaves secretas\n"
#: g10/trustdb.c:520 g10/trustdb.c:583
#, fuzzy, c-format
msgid "key %08lX: accepted as trusted key.\n"
msgstr "chave %08lX: aceita como chave secreta.\n"
#: g10/trustdb.c:536
#, c-format
msgid "NOTE: secret key %08lX is NOT protected.\n"
msgstr "NOTA: chave secreta %08lX NÃO está protegida.\n"
#: g10/trustdb.c:548
#, c-format
msgid "key %08lX: secret key without public key - skipped\n"
msgstr "chave %08lX: chave secreta sem chave pública - ignorada\n"
#: g10/trustdb.c:555
#, c-format
msgid "key %08lX: secret and public key don't match\n"
msgstr "chave %08lX: chaves secreta e pública não combinam\n"
#: g10/trustdb.c:591
#, c-format
msgid "enumerate secret keys failed: %s\n"
msgstr "enumeração de chaves secretas falhou: %s\n"
#: g10/trustdb.c:774
#, fuzzy, c-format
msgid "lid %lu: read dir record failed: %s\n"
msgstr "lid %lu: leitura de registro de diretório falhou: %s\n"
#: g10/trustdb.c:783
#, c-format
msgid "lid %lu: read key record failed: %s\n"
msgstr "lid %lu: leitura de registro de chave falhou: %s\n"
#: g10/trustdb.c:793
#, c-format
msgid "lid %lu: read uid record failed: %s\n"
msgstr "lid %lu: leitura de registro de uid falhou: %s\n"
#: g10/trustdb.c:802
#, fuzzy, c-format
msgid "lid %lu: read pref record failed: %s\n"
msgstr "lid %lu: leitura de registro de preferências falhou: %s\n"
#: g10/trustdb.c:812
#, c-format
msgid "lid %lu: read sig record failed: %s\n"
msgstr "lid %lu: leitura de registro de assinatura falhou: %s\n"
#: g10/trustdb.c:1013
msgid "Ooops, no keys\n"
msgstr "Ooops, nenhuma chave\n"
#: g10/trustdb.c:1017
msgid "Ooops, no user ids\n"
msgstr "Ooops, nenhum id de usuário\n"
#: g10/trustdb.c:1088 g10/trustdb.c:1106
#, fuzzy, c-format
msgid "user '%s' read problem: %s\n"
msgstr "erro de leitura do usuário `%s': %s\n"
#: g10/trustdb.c:1091 g10/trustdb.c:1109
#, fuzzy, c-format
msgid "user '%s' list problem: %s\n"
msgstr "erro de listagem do usuário `%s': %s\n"
#: g10/trustdb.c:1099 g10/trustdb.c:1346
#, fuzzy, c-format
msgid "user '%s' not found: %s\n"
msgstr "usuário `%s' não encontrado: %s\n"
#: g10/trustdb.c:1101 g10/trustdb.c:1348
#, fuzzy, c-format
msgid "problem finding '%s' in trustdb: %s\n"
msgstr "problemas encontrando `%s' no banco de dados de confiança: %s\n"
#: g10/trustdb.c:1104
#, fuzzy, c-format
msgid "user '%s' not in trustdb\n"
msgstr "usuário `%s' não está no banco de dados de confiança\n"
#: g10/trustdb.c:1139
#, c-format
msgid ""
"# List of assigned trustvalues, created %s\n"
"# (Use \"gpgm --import-ownertrust\" to restore them)\n"
msgstr ""
"# Lista de valores de confiança designados, criada em %s\n"
"# (Use \"gpgm --import-ownertrust\" para restaurá-los)\n"
#: g10/trustdb.c:1145
msgid "directory record w/o primary key\n"
msgstr "registro de diretório sem chave primária\n"
#: g10/trustdb.c:1152
#, c-format
msgid "error reading key record: %s\n"
msgstr "erro lendo registro de chave: %s\n"
#: g10/trustdb.c:1192
msgid "line too long\n"
msgstr "linha muito longa\n"
#: g10/trustdb.c:1200
msgid "error: missing colon\n"
msgstr "erro: falta dois pontos\n"
#: g10/trustdb.c:1205
msgid "error: invalid fingerprint\n"
msgstr "erro: impressão digital inválida\n"
#: g10/trustdb.c:1209
msgid "error: no ownertrust value\n"
msgstr "erro: nenhum valor de confiança\n"
#: g10/trustdb.c:1234
msgid "key not in trustdb, searching ring.\n"
msgstr ""
"chave não encontrada no banco de dados de confiança, procurando no anel\n"
#: g10/trustdb.c:1237
#, c-format
msgid "key not in ring: %s\n"
msgstr "chave não encontrada no anel: %s\n"
#: g10/trustdb.c:1241
msgid "Oops: key is now in trustdb???\n"
msgstr "Oops: agora a chave está no banco de dados de confiança???\n"
#. update the ownertrust
#: g10/trustdb.c:1246
#, c-format
msgid "insert trust record failed: %s\n"
msgstr "inserção de registro de confiança falhou: %s\n"
#. error
#: g10/trustdb.c:1252
#, fuzzy, c-format
msgid "error finding dir record: %s\n"
msgstr "erro encontrando registro de diretório: %s\n"
#: g10/trustdb.c:1351
#, fuzzy, c-format
msgid "user '%s' not in trustdb - inserting\n"
msgstr ""
"usuário `%s' não encontrado no banco de dados de confiança - inserindo\n"
#: g10/trustdb.c:1354
#, fuzzy, c-format
msgid "failed to put '%s' into trustdb: %s\n"
msgstr "falha ao colocar `%s' no banco de dados de confiança: %s\n"
#: g10/trustdb.c:1404
#, c-format
msgid "%s: keyblock read problem: %s\n"
msgstr "%s: erro de leitura de bloco de chaves: %s\n"
#: g10/trustdb.c:1418
#, c-format
msgid "%s: update failed: %s\n"
msgstr "%s: atualização falhou: %s\n"
#: g10/trustdb.c:1421
#, c-format
msgid "%s: updated\n"
msgstr "%s: atualizado\n"
#: g10/trustdb.c:1423
#, c-format
msgid "%s: okay\n"
msgstr "%s: correto\n"
#: g10/trustdb.c:1438
#, fuzzy, c-format
msgid "lid %lu: dir record w/o key - skipped\n"
msgstr "lid %lu: registro de diretório sem chave - ignorado\n"
#: g10/trustdb.c:1451
#, c-format
msgid "lid %lu: keyblock not found: %s\n"
msgstr "lid %lu: bloco de chaves não encontrado: %s\n"
#: g10/trustdb.c:1460 g10/trustdb.c:1529
#, c-format
msgid "lid %lu: update failed: %s\n"
msgstr "lid %lu: atualização falhou %s\n"
#: g10/trustdb.c:1466 g10/trustdb.c:1535
#, c-format
msgid "lid %lu: updated\n"
msgstr "lid %lu: atualizado\n"
#: g10/trustdb.c:1470 g10/trustdb.c:1539
#, c-format
msgid "lid %lu: okay\n"
msgstr "lid %lu: correto\n"
#: g10/trustdb.c:1477 g10/trustdb.c:1545
#, c-format
msgid "%lu keys processed\n"
msgstr "%lu chaves processadas\n"
#: g10/trustdb.c:1479
#, c-format
msgid "\t%lu keys skipped\n"
msgstr "\t%lu chaves ignoradas\n"
#: g10/trustdb.c:1481 g10/trustdb.c:1547
#, c-format
msgid "\t%lu keys with errors\n"
msgstr "\t%lu chaves com erros\n"
#: g10/trustdb.c:1483 g10/trustdb.c:1549
#, c-format
msgid "\t%lu keys updated\n"
msgstr "\t%lu chaves atualizadas\n"
#: g10/trustdb.c:1513
#, c-format
msgid "lid ?: insert failed: %s\n"
msgstr "lid ?: inserção falhou: %s\n"
#: g10/trustdb.c:1518
#, c-format
msgid "lid %lu: insert failed: %s\n"
msgstr "lid %lu: inserção falhou: %s\n"
#: g10/trustdb.c:1524
#, c-format
msgid "lid %lu: inserted\n"
msgstr "lid %lu: inserido\n"
#: g10/trustdb.c:1551
#, c-format
msgid "\t%lu keys inserted\n"
msgstr "\t%lu chaves inseridas\n"
#: g10/trustdb.c:1554
#, c-format
msgid "enumerate keyblocks failed: %s\n"
msgstr "enumeração de blocos de chaves falhou: %s\n"
#: g10/trustdb.c:1599
#, c-format
msgid "check_trust: search dir record failed: %s\n"
msgstr "check_trust: busca de registro de diretório falhou: %s\n"
#: g10/trustdb.c:1606
#, c-format
msgid "key %08lX: insert trust record failed: %s\n"
msgstr "chave %08lX: inserção de registro de confiança falhou: %s\n"
#: g10/trustdb.c:1610
#, c-format
msgid "key %08lX.%lu: inserted into trustdb\n"
msgstr "chave %08lX.%lu: inserida no banco de dados de confiança\n"
#: g10/trustdb.c:1618
#, c-format
msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
msgstr ""
"chave %08lX.%lu: criada no futuro (viagem no tempo ou problema no relogio)\n"
#: g10/trustdb.c:1625
#, c-format
msgid "key %08lX.%lu: expired at %s\n"
msgstr "chave %08lX.%lu: expirada em %s\n"
#: g10/trustdb.c:1633
#, c-format
msgid "key %08lX.%lu: trust check failed: %s\n"
msgstr "chave %08lX.%lu: verificação de confiança falhou: %s\n"
#: g10/trustdb.c:1842 g10/trustdb.c:1871 g10/trustdb.c:2610
msgid "WARNING: can't yet handle long pref records\n"
msgstr "AVISO: ainda é impossível manipular registros de preferências longos\n"
#: g10/trustdb.c:1893
#, c-format
msgid "get_dir_record: search_record failed: %s\n"
msgstr "get_dir_record: search_record falhou: %s\n"
#: g10/trustdb.c:1956
#, fuzzy, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but marked as checked\n"
msgstr ""
"NOTA: assinatura rec %lu[%d] em lista de sugestões de %lu mas marcada\n"
"como verificada\n"
#: g10/trustdb.c:1960
#, fuzzy, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but not marked\n"
msgstr ""
"NOTA: assinatura rec %lu[%d] em lista de sugestões de %lu mas não\n"
"marcada\n"
#. we need the dir record
#: g10/trustdb.c:1967
#, c-format
msgid "sig rec %lu[%d] in hintlist of %lu does not point to a dir record\n"
msgstr ""
"assinatura rec %lu[%d] em lista de sugestões de %lu não aponta para\n"
"um registro de diretório\n"
#: g10/trustdb.c:1973
#, c-format
msgid "lid %lu: no primary key\n"
msgstr "lid %lu: nenhuma chave primária\n"
#: g10/trustdb.c:2006
#, c-format
msgid "lid %lu: user id not found in keyblock\n"
msgstr "lid %lu: id de usuário não encontrado no bloco de chaves\n"
#: g10/trustdb.c:2010
#, c-format
msgid "lid %lu: user id without signature\n"
msgstr "lid %lu: id de usuário sem assinatura\n"
#: g10/trustdb.c:2017
#, c-format
msgid "lid %lu: self-signature in hintlist\n"
msgstr "lid %lu: auto-assinatura na lista de sugestões\n"
#: g10/trustdb.c:2028 g10/trustdb.c:2747 g10/trustdb.c:2831
msgid "Valid certificate revocation"
msgstr "Certificado de revogação válido"
#: g10/trustdb.c:2029 g10/trustdb.c:2748 g10/trustdb.c:2832
msgid "Good certificate"
msgstr "Certificado correto"
#: g10/trustdb.c:2038
msgid "very strange: no public key\n"
msgstr "muito estranho: nenhuma chave pública\n"
#: g10/trustdb.c:2086
#, c-format
msgid "hintlist %lu[%d] of %lu does not point to a dir record\n"
msgstr ""
"lista de sugestões %lu[%d] de %lu não aponta para registro de diretório\n"
#: g10/trustdb.c:2092
#, c-format
msgid "lid %lu does not have a key\n"
msgstr "lid %lu não tem uma chave\n"
#: g10/trustdb.c:2102
#, c-format
msgid "lid %lu: can't get keyblock: %s\n"
msgstr "lid %lu: impossível pegar bloco de chaves: %s\n"
#: g10/trustdb.c:2159 g10/trustdb.c:3082
#, c-format
msgid "tdbio_search_dir failed: %s\n"
msgstr "tdbio_search_dir falhou: %s\n"
#: g10/trustdb.c:2312
#, c-format
msgid "key %08lX.%lu: Good subkey binding\n"
msgstr "chave %08lX.%lu: Ligação de subchave válida\n"
#: g10/trustdb.c:2318 g10/trustdb.c:2360
#, c-format
msgid "key %08lX.%lu: Invalid subkey binding: %s\n"
msgstr "chave %08lX.%lu: Ligação de subchave inválida: %s\n"
#: g10/trustdb.c:2333
#, c-format
msgid "key %08lX.%lu: Valid key revocation\n"
msgstr "chave %08lX.%lu: Revogação de chave válida\n"
#: g10/trustdb.c:2339
#, c-format
msgid "key %08lX.%lu: Invalid key revocation: %s\n"
msgstr "chave %08lX.%lu: Revogação de chave inválida: %s\n"
#: g10/trustdb.c:2354
#, c-format
msgid "key %08lX.%lu: Valid subkey revocation\n"
msgstr "chave %08lX.%lu: Revogação de subchave válida\n"
#: g10/trustdb.c:2454
msgid "Good self-signature"
msgstr "Auto-assinatura válida"
#: g10/trustdb.c:2465
msgid "Invalid self-signature"
msgstr "Auto-assinatura inválida"
#: g10/trustdb.c:2475
msgid "Valid user ID revocation skipped due to a newer self signature\n"
msgstr ""
#: g10/trustdb.c:2482
msgid "Valid user ID revocation\n"
msgstr "Revogação de ID de usuário válida\n"
#: g10/trustdb.c:2489
msgid "Invalid user ID revocation"
msgstr "Revogação de ID de usuário inválida"
#: g10/trustdb.c:2573
msgid "Too many preferences"
msgstr "Muitas preferências"
#: g10/trustdb.c:2587
msgid "Too many preference items"
msgstr "Muitos itens de preferência"
#: g10/trustdb.c:2726
msgid "Duplicated certificate - deleted"
msgstr "Certificado duplicado - deletado"
#: g10/trustdb.c:2759
msgid "Hmmm, public key lost?"
msgstr "Hmmm, chave pública perdida?"
#: g10/trustdb.c:2769 g10/trustdb.c:2852
msgid "Invalid certificate revocation"
msgstr "Certificado de revogação inválido"
#: g10/trustdb.c:2770 g10/trustdb.c:2853
msgid "Invalid certificate"
msgstr "Certificado inválido"
#: g10/trustdb.c:2785
#, c-format
msgid "uid %08lX.%lu/%02X%02X: has shadow dir %lu but is not yet marked.\n"
msgstr ""
"uid %08lX.%lu/%02X%02X: tem diretório sombra %lu mas ainda não está\n"
"marcado\n"
#: g10/trustdb.c:2799
#, c-format
msgid "sig record %lu[%d] points to wrong record.\n"
msgstr "registro de assinatura %lu[%d] aponta para registro errado.\n"
#. that should never happen
#: g10/trustdb.c:3052
#, c-format
msgid "insert_trust_record: keyblock not found: %s\n"
msgstr "insert_trust_record: bloco de chaves não encontrado: %s\n"
#: g10/trustdb.c:3070
msgid "did not use primary key for insert_trust_record()\n"
msgstr "você usou a chave primária para insert_trust_record()\n"
#: g10/ringedit.c:293
#, c-format
msgid "%s: can't create keyring: %s\n"
msgstr "%s: impossível criar anel de chaves: %s\n"
-#: g10/ringedit.c:299 g10/ringedit.c:1283
+#: g10/ringedit.c:299 g10/ringedit.c:1300
#, c-format
msgid "%s: keyring created\n"
msgstr "%s: anel de chaves criado\n"
-#: g10/ringedit.c:1469
+#: g10/ringedit.c:1486
msgid "WARNING: 2 files with confidential information exists.\n"
msgstr "AVISO: 2 arquivos com informações confidenciais existem.\n"
-#: g10/ringedit.c:1470
+#: g10/ringedit.c:1487
#, c-format
msgid "%s is the unchanged one\n"
msgstr "%s é o não modificado\n"
-#: g10/ringedit.c:1471
+#: g10/ringedit.c:1488
#, c-format
msgid "%s is the new one\n"
msgstr "%s é o novo\n"
-#: g10/ringedit.c:1472
+#: g10/ringedit.c:1489
msgid "Please fix this possible security flaw\n"
msgstr "Por favor conserte este possível furo de segurança\n"
-#: g10/skclist.c:94
+#: g10/skclist.c:88 g10/skclist.c:125
+msgid "key is not flagged as insecure - can't use it with the faked RNG!\n"
+msgstr ""
+
+#: g10/skclist.c:113
#, c-format
msgid "skipped `%s': %s\n"
msgstr "ignorado `%s': %s\n"
-#: g10/skclist.c:100
+#: g10/skclist.c:119
#, c-format
msgid ""
"skipped `%s': this is a PGP generated ElGamal key which is not secure for "
"signatures!\n"
msgstr ""
"ignorado `%s': esta é uma chave ElGamal gerada pelo PGP que não é segura "
"para assinaturas!\n"
#. do not overwrite
#: g10/openfile.c:58
#, c-format
msgid "File `%s' exists. "
msgstr "Arquivo `%s' existe. "
#: g10/openfile.c:60
msgid "Overwrite (y/N)? "
msgstr "Sobrescrever (s/N)? "
#: g10/openfile.c:85
msgid "writing to stdout\n"
msgstr "escrevendo para \"stdout\"\n"
#: g10/openfile.c:134
#, c-format
msgid "assuming signed data in `%s'\n"
msgstr "assumindo dados assinados em `%s'\n"
#: g10/openfile.c:181
#, c-format
msgid "%s: new options file created\n"
msgstr "%s: novo arquivo de opções criado\n"
#: g10/encr-data.c:59
#, c-format
msgid "%s encrypted data\n"
msgstr "dados codificados com\n"
#: g10/encr-data.c:61
#, c-format
msgid "encrypted with unknown algorithm %d\n"
msgstr "codificado com algoritmo desconhecido %d\n"
#: g10/encr-data.c:74
#, fuzzy
msgid ""
"WARNING: message was encrypted with a weak key in the symmetric cipher.\n"
msgstr ""
"AVISO: A mensagem foi codificada com uma chave fraca na criptografia\n"
"simétrica.\n"
#: g10/seskey.c:52
msgid "weak key created - retrying\n"
msgstr "chave fraca criada - tentando novamente\n"
#: g10/seskey.c:57
#, 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"
"tentado %d vezes!\n"
#. begin of list
#: g10/helptext.c:48
msgid "edit_ownertrust.value"
msgstr ""
#: g10/helptext.c:54
msgid "revoked_key.override"
msgstr ""
#: g10/helptext.c:58
msgid "untrusted_key.override"
msgstr ""
#: g10/helptext.c:62
msgid "pklist.user_id.enter"
msgstr ""
#: g10/helptext.c:66
msgid "keygen.algo"
msgstr ""
#: g10/helptext.c:82
msgid "keygen.algo.elg_se"
msgstr ""
#: g10/helptext.c:89
msgid "keygen.size"
msgstr ""
#: g10/helptext.c:93
msgid "keygen.size.huge.okay"
msgstr ""
#: g10/helptext.c:98
msgid "keygen.size.large.okay"
msgstr ""
#: g10/helptext.c:103
msgid "keygen.valid"
msgstr ""
#: g10/helptext.c:107
msgid "keygen.valid.okay"
msgstr ""
#: g10/helptext.c:112
msgid "keygen.name"
msgstr ""
#: g10/helptext.c:117
msgid "keygen.email"
msgstr ""
#: g10/helptext.c:121
msgid "keygen.comment"
msgstr ""
#: g10/helptext.c:126
msgid "keygen.userid.cmd"
msgstr ""
#: g10/helptext.c:135
msgid "keygen.sub.okay"
msgstr ""
#: g10/helptext.c:139
msgid "sign_uid.okay"
msgstr ""
#: g10/helptext.c:144
msgid "change_passwd.empty.okay"
msgstr ""
#: g10/helptext.c:149
msgid "keyedit.cmd"
msgstr ""
#: g10/helptext.c:153
msgid "keyedit.save.okay"
msgstr ""
#: g10/helptext.c:158
msgid "keyedit.cancel.okay"
msgstr ""
#: g10/helptext.c:162
msgid "keyedit.sign_all.okay"
msgstr ""
#: g10/helptext.c:166
msgid "keyedit.remove.uid.okay"
msgstr ""
#: g10/helptext.c:171
msgid "keyedit.remove.subkey.okay"
msgstr ""
#: g10/helptext.c:175
msgid "passphrase.enter"
msgstr ""
#: g10/helptext.c:182
msgid "passphrase.repeat"
msgstr ""
#: g10/helptext.c:186
msgid "detached_signature.filename"
msgstr ""
#: g10/helptext.c:190
msgid "openfile.overwrite.okay"
msgstr ""
#: g10/helptext.c:204
msgid "No help available"
msgstr "Nenhuma ajuda disponível"
#: g10/helptext.c:216
#, c-format
msgid "No help available for `%s'"
msgstr "Nenhuma ajuda disponível para `%s'"
#~ msgid "invalid clear text header: "
#~ msgstr "cabeçalho de texto puro inválido: "
#~ msgid "LID %lu: changing trust from %u to %u\n"
#~ msgstr "LID %lu: mudando confiança de %u para %u\n"
#~ msgid "LID %lu: setting trust to %u\n"
#~ msgstr "LID %lu: estabelecendo confiança para %u\n"
diff --git a/po/ru.po b/po/ru.po
index 9b8217c5f..ba2d5b957 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -1,3289 +1,3357 @@
# I finished the translation without looking at the contrib directory of
# GPG site. Werner enlightened me about two previous translations and I
# dared to look in them to correct my translation of questionable phrases.
# So I'd like to thank:
# Artem Belevich <artemb@usa.net>
# Alexey Morozov <morozov@iname.com>
# Michael Sobolev <mss@transas.com>, 1998
# Alexey Vyskubov <alexey@alv.stud.pu.ru>, 1998
# QingLong <qinglong@Bolizm> (couldn't send an email to let you know)
msgid ""
msgstr ""
-"POT-Creation-Date: 1999-01-09 18:31+0100\n"
+"POT-Creation-Date: 1999-01-20 22:45+0100\n"
"Content-Type: text/plain; charset=\n"
"Date: 1998-01-26 22:08:36+0100\n"
"From: Gregory Steuck <steuck@iname.com>\n"
"Xgettext-Options: --default-domain=gnupg --directory=.. --add-comments "
"--keyword=_ --keyword=N_ --files-from=./POTFILES.in\n"
"Files: util/secmem.c util/argparse.c cipher/random.c cipher/rand-dummy.c "
"cipher/rand-unix.c cipher/rand-w32.c g10/g10.c g10/pkclist.c g10/keygen.c "
"g10/decrypt.c g10/encode.c g10/import.c g10/keyedit.c g10/keylist.c "
"g10/mainproc.c g10/passphrase.c g10/plaintext.c g10/pref.c g10/seckey-cert.c "
"g10/sig-check.c g10/sign.c g10/trustdb.c g10/verify.c\n"
#: util/secmem.c:77
msgid "Warning: using insecure memory!\n"
msgstr ""
"÷ÎÉÍÁÎÉÅ, ×ÏÚÍÏÖÎÁ ÕÔÅÞËÁ ÓÅËÒÅÔÎÙÈ ÄÁÎÎÙÈ!\n"
"üÔÕ ÐÒÏÂÌÅÍÕ ÍÏÖÎÏ ÒÅÛÉÔØ, ÕÓÔÁÎÏ×É× ÐÒÏÇÒÁÍÍÕ suid(root).\n"
"ïÂÒÁÔÉÔÅÓØ ÄÌÑ ÜÔÏÇÏ Ë ÁÄÍÉÎÉÓÔÒÁÔÏÒÕ ÷ÁÛÅÊ ÓÉÓÔÅÍÙ.\n"
#: util/miscutil.c:143
msgid "yes"
msgstr "ÄÁ(y)"
#: util/miscutil.c:144
msgid "yY"
msgstr "yY"
#: util/errors.c:54
#, fuzzy
msgid "general error"
msgstr "ïÂÝÁÑ ÏÛÉÂËÁ"
#: util/errors.c:55
#, fuzzy
msgid "unknown packet type"
msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÐÁËÅÔÁ"
#: util/errors.c:56
#, fuzzy
msgid "unknown version"
msgstr "îÅÉÚ×ÅÓÔÎÁÑ ×ÅÒÓÉÑ"
#: util/errors.c:57
#, fuzzy
msgid "unknown pubkey algorithm"
msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÁÌÇÏÒÉÔÍ ÛÉÆÒÏ×ÁÎÉÑ Ó ÏÔËÒÙÔÙÍ ËÌÀÞÏÍ"
#: util/errors.c:58
#, fuzzy
msgid "unknown digest algorithm"
msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÁÌÇÏÒÉÔÍ ÇÅÎÅÒÁÃÉÉ ÄÁÊÄÖÅÓÔÁ"
#: util/errors.c:59
#, fuzzy
msgid "bad public key"
msgstr "ðÌÏÈÏÊ ÏÔËÒÙÔÙÊ ËÌÀÞ"
#: util/errors.c:60
#, fuzzy
msgid "bad secret key"
msgstr "ðÌÏÈÏÊ ÓÅËÒÅÔÎÙÊ ËÌÀÞ"
#: util/errors.c:61
#, fuzzy
msgid "bad signature"
msgstr "ðÌÏÈÁÑ ÐÏÄÐÉÓØ"
#: util/errors.c:62
#, fuzzy
msgid "checksum error"
msgstr "îÅÓÏ×ÐÁÄÅÎÉÅ ËÏÎÔÒÏÌØÎÏÊ ÓÕÍÍÙ"
#: util/errors.c:63
#, fuzzy
msgid "bad passphrase"
msgstr "îÅ×ÅÒÎÁÑ \"ËÌÀÞÅ×ÁÑ ÆÒÁÚÁ\""
#: util/errors.c:64
#, fuzzy
msgid "public key not found"
msgstr "ïÔËÒÙÔÙÊ ËÌÀÞ ÎÅ ÎÁÊÄÅÎ"
#: util/errors.c:65
#, fuzzy
msgid "unknown cipher algorithm"
msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÁÌÇÏÒÉÔÍ ÛÉÆÒÏ×ÁÎÉÑ"
#: util/errors.c:66
#, fuzzy
msgid "can't open the keyring"
msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ \"Ó×ÑÚËÕ ËÌÀÞÅÊ\""
#: util/errors.c:67
#, fuzzy
msgid "invalid packet"
msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÐÁËÅÔ"
#: util/errors.c:68
#, fuzzy
msgid "invalid armor"
msgstr "îÅÄÏÐÕÓÔÉÍÁÑ ASCII-ËÏÄÉÒÏ×ËÁ"
#: util/errors.c:69
#, fuzzy
msgid "no such user id"
msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ"
#: util/errors.c:70
#, fuzzy
msgid "secret key not available"
msgstr "óÅËÒÅÔÎÙÊ ËÌÀÞ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ"
#: util/errors.c:71
#, fuzzy
msgid "wrong secret key used"
msgstr "éÓÐÏÌØÚÏ×ÁÎ ÎÅÐÒÁ×ÉÌØÎÙÊ ÓÅËÒÅÔÎÙÊ ËÌÀÞ"
#: util/errors.c:72
#, fuzzy
msgid "not supported"
msgstr "îÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
#: util/errors.c:73
#, fuzzy
msgid "bad key"
msgstr "ðÌÏÈÏÊ ËÌÀÞ"
#: util/errors.c:74
#, fuzzy
msgid "file read error"
msgstr "ïÛÉÂËÁ ÞÔÅÎÉÑ ÆÁÊÌÁ"
#: util/errors.c:75
#, fuzzy
msgid "file write error"
msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ ÆÁÊÌÁ"
#: util/errors.c:76
#, fuzzy
msgid "unknown compress algorithm"
msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÁÌÇÏÒÉÔÍ ÕÐÁËÏ×ËÉ"
#: util/errors.c:77
#, fuzzy
msgid "file open error"
msgstr "ïÛÉÂËÁ ÏÔËÒÙÔÉÑ ÆÁÊÌÁ"
#: util/errors.c:78
#, fuzzy
msgid "file create error"
msgstr "ïÛÉÂËÁ ÓÏÚÄÁÎÉÑ ÆÁÊÌÁ"
#: util/errors.c:79
#, fuzzy
msgid "invalid passphrase"
msgstr "îÅ×ÅÒÎÁÑ \"ËÌÀÞÅ×ÁÑ ÆÒÁÚÁ\""
#: util/errors.c:80
#, fuzzy
msgid "unimplemented pubkey algorithm"
msgstr "îÅÒÅÁÌÉÚÏ×ÁÎÎÙÊ ÁÌÇÏÒÉÔÍ ÛÉÆÒÏ×ÁÎÉÑ Ó ÏÔËÒÙÔÙÍ ËÌÀÞÏÍ"
#: util/errors.c:81
#, fuzzy
msgid "unimplemented cipher algorithm"
msgstr "îÅÒÅÁÌÉÚÏ×ÁÎÎÙÊ ÁÌÇÏÒÉÔÍ ÛÉÆÒÏ×ÁÎÉÑ"
#: util/errors.c:82
#, fuzzy
msgid "unknown signature class"
msgstr "ðÏÄÐÉÓØ ÎÅÉÚ×ÅÓÔÎÏÇÏ ÔÉÐÁ"
#: util/errors.c:83
#, fuzzy
msgid "trust database error"
msgstr "ïÛÉÂËÁ × Trust-DB (ÂÁÚÁ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ)"
#: util/errors.c:84
msgid "bad MPI"
msgstr ""
#: util/errors.c:85
#, fuzzy
msgid "resource limit"
msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÒÅÓÕÒÓÏ×"
#: util/errors.c:86
#, fuzzy
msgid "invalid keyring"
msgstr "îÅÄÏÐÕÓÔÉÍÁÑ \"Ó×ÑÚËÁ ËÌÀÞÅÊ\""
#: util/errors.c:87
#, fuzzy
msgid "bad certificate"
msgstr "ðÌÏÈÏÊ ÓÅÒÔÉÆÉËÁÔ"
#: util/errors.c:88
#, fuzzy
msgid "malformed user id"
msgstr "îÅÄÏÐÕÓÔÉÍÁÑ ÆÏÒÍÁ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ÐÏÌØÚÏ×ÁÔÅÌÑ"
#: util/errors.c:89
#, fuzzy
msgid "file close error"
msgstr "ïÛÉÂËÁ ÚÁËÒÙÔÉÑ ÆÁÊÌÁ"
#: util/errors.c:90
#, fuzzy
msgid "file rename error"
msgstr "ïÛÉÂËÁ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ ÆÁÊÌÁ"
#: util/errors.c:91
#, fuzzy
msgid "file delete error"
msgstr "ïÛÉÂËÁ ÕÄÁÌÅÎÉÑ ÆÁÊÌÁ"
#: util/errors.c:92
#, fuzzy
msgid "unexpected data"
msgstr "îÅÏÖÉÄÁÎÎÙÅ ÄÁÎÎÙÅ"
#: util/errors.c:93
#, fuzzy
msgid "timestamp conflict"
msgstr "ëÏÎÆÌÉËÔ ×ÒÅÍÅÎÎÙÈ ÏÔÐÅÞÁÔËÏ× (timestamp)"
#: util/errors.c:94
#, fuzzy
msgid "unusable pubkey algorithm"
msgstr "îÅÐÒÉÇÏÄÎÙÊ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÁÌÇÏÒÉÔÍ ÏÔËÒÙÔÏÇÏ ËÌÀÞÁ"
#: util/errors.c:95
#, fuzzy
msgid "file exists"
msgstr "æÁÊÌ ÓÕÝÅÓÔ×ÕÅÔ"
#: util/errors.c:96
#, fuzzy
msgid "weak key"
msgstr "óÌÁÂÙÊ ËÌÀÞ"
+#: util/errors.c:97
+#, fuzzy
+msgid "invalid argument"
+msgstr "îÅÄÏÐÕÓÔÉÍÁÑ ASCII-ËÏÄÉÒÏ×ËÁ"
+
+#: util/errors.c:98
+msgid "bad URI"
+msgstr ""
+
+#: util/errors.c:99
+#, fuzzy
+msgid "unsupported URI"
+msgstr "îÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+
+#: util/errors.c:100
+#, fuzzy
+msgid "network error"
+msgstr "ïÂÝÁÑ ÏÛÉÂËÁ"
+
#: util/logger.c:178
#, fuzzy, c-format
msgid "... this is a bug (%s:%d:%s)\n"
msgstr "ïÊ-ÊÏ ... ÏÛÉÂËÁ × ÐÒÏÇÒÁÍÍÅ (%s:%d:%s)\n"
#: util/logger.c:184
#, c-format
msgid "you found a bug ... (%s:%d)\n"
msgstr "÷Ù ÎÁÛÌÉ ÏÛÉÂËÕ × ÐÒÏÇÒÁÍÍÅ ... (%s:%d)\n"
-#: cipher/random.c:405
+#: cipher/random.c:412
#, fuzzy
msgid "WARNING: using insecure random number generator!!\n"
msgstr "÷ÎÉÍÁÎÉÅ: ÉÓÐÏÌØÚÕÅÔÓÑ ÎÅÎÁÄÅÖÎÙÊ ÇÅÎÅÒÁÔÏÒ ÓÌÕÞÁÊÎÙÈ ÞÉÓÅÌ!\n"
-#: cipher/random.c:406
+#: cipher/random.c:413
msgid ""
"The random number generator is only a kludge to let\n"
"it run - it is in no way a strong RNG!\n"
"\n"
"DON'T USE ANY DATA GENERATED BY THIS PROGRAM!!\n"
"\n"
msgstr ""
"éÓÐÏÌØÚÕÅÍÙÊ ÇÅÎÅÒÁÔÏÒ ÓÌÕÞÁÊÎÙÈ ÞÉÓÅÌ -- ÔÏÌØËÏ ÚÁÇÌÕÛËÁ,\n"
"ÞÔÏÂÙ ÓËÏÍÐÉÌÉÒÏ×ÁÔØ ÐÒÏÇÒÁÍÍÕ, ÎÉËÁË ÎÅ ÎÁÄÅÖÎÙÊ çóþ!\n"
"\n"
"îå ðïìøúõêôåóø äáîîùíé óïúäáîîùíé üôïê ðòïçòáííïê!\n"
"\n"
#: cipher/rndlinux.c:118
#, c-format
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"
"ïó ÍÏÇÌÁ ÎÁÂÒÁÔØ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÓÌÕÞÁÊÎÙÅ ÞÉÓÌÁ! (ÎÕÖÎÏ ÅÝÅ %d ÂÁÊÔ)\n"
-#: g10/g10.c:160
+#: g10/g10.c:163
msgid ""
"@Commands:\n"
" "
msgstr ""
"@ëÏÍÁÎÄÙ:\n"
" "
-#: g10/g10.c:163
+#: g10/g10.c:166
#, fuzzy
msgid "|[file]|make a signature"
msgstr "|[ÆÁÊÌ]|ÓÏÚÄÁÔØ ÐÏÄÐÉÓØ"
-#: g10/g10.c:164
+#: g10/g10.c:167
#, fuzzy
msgid "|[file]|make a clear text signature"
msgstr "|[ÆÁÊÌ]|ÓÏÚÄÁÔØ ÔÅËÓÔÏ×ÕÀ ÐÏÄÐÉÓØ"
-#: g10/g10.c:165
+#: g10/g10.c:168
msgid "make a detached signature"
msgstr "ÓÏÚÄÁÔØ ÏÔÄÅÌØÎÕÀ ÐÏÄÐÉÓØ"
-#: g10/g10.c:166
+#: g10/g10.c:169
msgid "encrypt data"
msgstr "ÚÁÛÉÆÒÏ×ÁÔØ ÄÁÎÎÙÅ"
-#: g10/g10.c:167
+#: g10/g10.c:170
msgid "encryption only with symmetric cipher"
msgstr "ÚÁÛÉÆÒÏ×ÁÔØ ÓÉÍÍÅÔÒÉÞÎÙÍ ÁÌÇÏÒÉÔÍÏÍ"
-#: g10/g10.c:168
+#: g10/g10.c:171
msgid "store only"
msgstr "ÔÏÌØËÏ ÓÏÈÒÁÎÉÔØ"
-#: g10/g10.c:169
+#: g10/g10.c:172
msgid "decrypt data (default)"
msgstr "ÒÁÓÛÉÆÒÏ×ÁÔØ ÄÁÎÎÙÅ (ÐÏ ÕÍÏÌÞÁÎÉÀ)"
-#: g10/g10.c:170
+#: g10/g10.c:173
msgid "verify a signature"
msgstr "ÐÒÏ×ÅÒÉÔØ ÐÏÄÐÉÓØ"
-#: g10/g10.c:172
+#: g10/g10.c:175
msgid "list keys"
msgstr "ÓÐÉÓÏË ËÌÀÞÅÊ"
-#: g10/g10.c:173
+#: g10/g10.c:176
msgid "list keys and signatures"
msgstr "ÓÐÉÓÏË ËÌÀÞÅÊ É ÐÏÄÐÉÓÅÊ"
-#: g10/g10.c:174
+#: g10/g10.c:177
msgid "check key signatures"
msgstr "ÐÒÏ×ÅÒÉÔØ ÐÏÄÐÉÓØ ÎÁ ËÌÀÞÅ"
-#: g10/g10.c:175
+#: g10/g10.c:178
msgid "list keys and fingerprints"
msgstr "ÓÐÉÓÏË ËÌÀÞÅÊ Ó ÉÈ \"ÏÔÐÅÞÁÔËÁÍÉ ÐÁÌØÃÅ×\""
-#: g10/g10.c:176
+#: g10/g10.c:179
msgid "list secret keys"
msgstr "ÓÐÉÓÏË ÓÅËÒÅÔÎÙÈ ËÌÀÞÅÊ"
-#: g10/g10.c:178
+#: g10/g10.c:181
msgid "generate a new key pair"
msgstr "ÓÇÅÎÅÒÉÒÏ×ÁÔØ ÎÏ×ÕÀ ÐÁÒÕ ËÌÀÞÅÊ (ÏÔËÒÙÔÙÊ É ÓÅËÒÅÔÎÙÊ)"
-#: g10/g10.c:180
+#: g10/g10.c:183
msgid "remove key from the public keyring"
msgstr "ÕÄÁÌÉÔØ ËÌÀÞ ÓÏ Ó×ÑÚËÉ"
-#: g10/g10.c:182
+#: g10/g10.c:185
msgid "sign or edit a key"
msgstr "ÐÏÄÐÉÓÁÔØ ÉÌÉ ÒÅÄÁËÔÉÒÏ×ÁÔØ ËÌÀÞ"
-#: g10/g10.c:183
+#: g10/g10.c:186
msgid "generate a revocation certificate"
msgstr "ÓÇÅÎÅÒÉÒÏ×ÁÔØ ÏÔÚÙ×ÁÀÝÉÊ ÓÅÒÔÉÆÉËÁÔ"
-#: g10/g10.c:185
+#: g10/g10.c:188
msgid "export keys"
msgstr "ÜËÓÐÏÒÔÉÒÏ×ÁÔØ ËÌÀÞÉ"
-#: g10/g10.c:188
+#: g10/g10.c:189
+msgid "export keys to a key server"
+msgstr ""
+
+#: g10/g10.c:192
msgid "import/merge keys"
msgstr "ÉÍÐÏÒÔÉÒÏ×ÁÔØ/ÄÏÂÁ×ÉÔØ ËÌÀÞÉ"
-#: g10/g10.c:190
+#: g10/g10.c:194
msgid "list only the sequence of packets"
msgstr "ÎÁÐÅÞÁÔÁÔØ ÔÏÌØËÏ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÐÁËÅÔÏ×"
-#: g10/g10.c:193
+#: g10/g10.c:197
#, fuzzy
msgid "export the ownertrust values"
msgstr "ÜËÓÐÏÒÔÉÒÏ×ÁÔØ ÐÁÒÁÍÅÔÒÙ ÄÏ×ÅÒÉÑ\n"
-#: g10/g10.c:195
+#: g10/g10.c:199
#, fuzzy
msgid "import ownertrust values"
msgstr "ÉÍÐÏÒÔÉÒÏ×ÁÔØ ÐÁÒÁÍÅÔÒÙ ÄÏ×ÅÒÉÑ\n"
-#: g10/g10.c:197
+#: g10/g10.c:201
#, fuzzy
msgid "|[NAMES]|update the trust database"
msgstr "|[éíåîá]|ÐÒÏ×ÅÒÉÔØ ÂÁÚÕ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ"
-#: g10/g10.c:199
+#: g10/g10.c:203
msgid "|[NAMES]|check the trust database"
msgstr "|[éíåîá]|ÐÒÏ×ÅÒÉÔØ ÂÁÚÕ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ"
-#: g10/g10.c:200
+#: g10/g10.c:204
msgid "fix a corrupted trust database"
msgstr "ÉÓÐÒÁ×ÉÔØ ÒÁÚÒÕÛÅÎÎÕÀ ÂÁÚÕ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ"
-#: g10/g10.c:201
+#: g10/g10.c:205
msgid "De-Armor a file or stdin"
msgstr "äÅËÏÄÉÒÏ×ÁÔØ stdin ÉÌÉ ÆÁÊÌ ÉÚ ASCII-ÐÒÅÄÓÔÁ×ÌÅÎÉÑ"
-#: g10/g10.c:202
+#: g10/g10.c:206
msgid "En-Armor a file or stdin"
msgstr "úÁËÏÄÉÒÏ×ÁÔØ stdin ÉÌÉ ÆÁÊÌ × ASCII-ÐÒÅÄÓÔÁ×ÌÅÎÉÅ"
-#: g10/g10.c:203
+#: g10/g10.c:207
msgid "|algo [files]|print message digests"
msgstr "|algo [files]|ÎÁÐÅÞÁÔÁÔØ ÄÁÊÄÖÅÓÔ ÓÏÏÂÝÅÎÉÑ"
-#: g10/g10.c:204
+#: g10/g10.c:208
msgid "print all message digests"
msgstr "ÎÁÐÅÞÁÔÁÔØ ×ÓÅ ÄÁÊÄÖÅÓÔÙ ÓÏÏÂÝÅÎÉÑ"
-#: g10/g10.c:211
+#: g10/g10.c:215
msgid ""
"@\n"
"Options:\n"
" "
msgstr ""
"@\n"
"ðÁÒÁÍÅÔÒÙ:\n"
" "
-#: g10/g10.c:213
+#: g10/g10.c:217
msgid "create ascii armored output"
msgstr "×Ù×ÏÄ × ASCII-ÐÒÅÄÓÔÁ×ÌÅÎÉÉ"
-#: g10/g10.c:215
+#: g10/g10.c:219
msgid "use this user-id to sign or decrypt"
msgstr ""
"ÉÓÐÏÌØÚÏ×ÁÔØ ÕËÁÚÁÎÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ÐÏÄÐÉÓÉ ÉÌÉ ÒÁÓÛÉÆÒÏ×ËÉ"
-#: g10/g10.c:216
+#: g10/g10.c:220
msgid "use this user-id for encryption"
msgstr "ÉÓÐÏÌØÚÏ×ÁÔØ ÕËÁÚÁÎÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ÛÉÆÒÏ×ÁÎÉÑ"
-#: g10/g10.c:217
+#: g10/g10.c:221
msgid "|N|set compress level N (0 disables)"
msgstr "|N|ÕÓÔÁÎÏ×ÉÔØ ÕÒÏ×ÅÎØ ÓÖÁÔÉÑ (0 - ÎÅ ÓÖÉÍÁÔØ)"
-#: g10/g10.c:219
+#: g10/g10.c:223
msgid "use canonical text mode"
msgstr "ÉÓÐÏÌØÚÏ×ÁÔØ ËÁÎÏÎÉÞÅÓËÉÊ ÔÅËÓÔÏ×ÙÊ ÒÅÖÉÍ"
-#: g10/g10.c:221
+#: g10/g10.c:225
msgid "use as output file"
msgstr "ÉÓÐÏÌØÚÏ×ÁÔØ × ËÁÞÅÓÔ×Å ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ"
-#: g10/g10.c:222
+#: g10/g10.c:226
msgid "verbose"
msgstr "ÍÎÏÇÏÓÌÏ×ÎÙÊ"
-#: g10/g10.c:223
+#: g10/g10.c:227
msgid "be somewhat more quiet"
msgstr ""
-#: g10/g10.c:224
+#: g10/g10.c:228
#, fuzzy
msgid "force v3 signatures"
msgstr "ÐÒÏ×ÅÒÉÔØ ÐÏÄÐÉÓØ ÎÁ ËÌÀÞÅ"
#. { oDryRun, "dry-run", 0, N_("do not make any changes") },
-#: g10/g10.c:226
+#: g10/g10.c:230
msgid "batch mode: never ask"
msgstr "ÐÁËÅÔÎÙÊ ÒÅÖÉÍ: ÎÉÞÅÇÏ ÎÅ ÓÐÒÁÛÉ×ÁÔØ"
-#: g10/g10.c:227
+#: g10/g10.c:231
msgid "assume yes on most questions"
msgstr "ÏÔ×ÅÞÁÔØ \"ÄÁ\" ÎÁ ÂÏÌØÛÉÎÓÔ×Ï ×ÏÐÒÏÓÏ×"
-#: g10/g10.c:228
+#: g10/g10.c:232
msgid "assume no on most questions"
msgstr "ÏÔ×ÅÞÁÔØ \"ÎÅÔ\" ÎÁ ÂÏÌØÛÉÎÓÔ×Ï ×ÏÐÒÏÓÏ×"
-#: g10/g10.c:229
+#: g10/g10.c:233
msgid "add this keyring to the list of keyrings"
msgstr "ÄÏÂÁ×ÉÔØ ÜÔÕ Ó×ÑÚËÕ Ë ÓÐÉÓËÕ Ó×ÑÚÏË ËÌÀÞÅÊ"
-#: g10/g10.c:230
+#: g10/g10.c:234
msgid "add this secret keyring to the list"
msgstr "ÄÏÂÁ×ÉÔØ ÜÔÕ ÓÅËÒÅÔÎÕÀ Ó×ÑÚËÕ Ë ÓÐÉÓËÕ Ó×ÑÚÏË ËÌÀÞÅÊ"
-#: g10/g10.c:231
+#: g10/g10.c:235
msgid "|NAME|use NAME as default secret key"
msgstr "|éíñ|ÉÓÐÏÌØÚÏ×ÁÔØ éíñ × ËÁÞÅÓÔ×Å ÓÅËÒÅÔÎÏÇÏ ËÌÀÞÁ ÐÏ ÕÍÏÌÞÁÎÉÀ"
-#: g10/g10.c:232
+#: g10/g10.c:236
+msgid "|HOST|use this keyserver to lookup keys"
+msgstr ""
+
+#: g10/g10.c:237
#, fuzzy
msgid "|NAME|set terminal charset to NAME"
msgstr "|éíñ|ÉÓÐÏÌØÚÏ×ÁÔØ ÛÉÆÒÏ×ÁÌØÎÙÊ ÁÌÇÏÒÉÔÍÏÍ éíñ"
-#: g10/g10.c:233
+#: g10/g10.c:238
msgid "read options from file"
msgstr "ÞÉÔÁÔØ ÐÁÒÁÍÅÔÒÙ ÉÚ ÆÁÊÌÁ"
-#: g10/g10.c:235
+#: g10/g10.c:240
msgid "set debugging flags"
msgstr "ÕÓÔÁÎÏ×ÉÔØ ÏÔÌÁÄÏÞÎÙÅ ÆÌÁÇÉ"
-#: g10/g10.c:236
+#: g10/g10.c:241
msgid "enable full debugging"
msgstr "ÒÁÚÒÅÛÉÔØ ×ÓÀ ÏÔÌÁÄËÕ"
-#: g10/g10.c:237
+#: g10/g10.c:242
msgid "|FD|write status info to this FD"
msgstr "|FD| ÚÁÐÉÓÙ×ÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÓÏÓÔÏÑÎÉÉ × ÄÅÓËÒÉÐÔÏÒ (FD)"
-#: g10/g10.c:238
+#: g10/g10.c:243
msgid "do not write comment packets"
msgstr "ÎÅ ÐÉÓÁÔØ ÐÁËÅÔÙ Ó ËÏÍÍÅÎÔÁÒÉÑÍÉ"
-#: g10/g10.c:239
+#: g10/g10.c:244
msgid "(default is 1)"
msgstr "(ÐÏ ÕÍÏÌÞÁÎÉÀ 1)"
-#: g10/g10.c:240
+#: g10/g10.c:245
msgid "(default is 3)"
msgstr "(ÐÏ ÕÍÏÌÞÁÎÉÀ 3)"
-#: g10/g10.c:242
+#: g10/g10.c:247
msgid "|KEYID|ulimately trust this key"
msgstr ""
-#: g10/g10.c:243
+#: g10/g10.c:248
#, fuzzy
msgid "|FILE|load extension module FILE"
msgstr "|æáêì|ÚÁÇÒÕÚÉÔØ æáêì Ó ÒÁÓÛÉÒÑÀÝÉÍÉ ÍÏÄÕÌÑÍÉ"
-#: g10/g10.c:244
+#: g10/g10.c:249
msgid "emulate the mode described in RFC1991"
msgstr "ÜÍÕÌÉÒÏ×ÁÔØ ÒÅÖÉÍ ÏÐÉÓÁÎÎÙÊ × RFC1991"
-#: g10/g10.c:245
+#: g10/g10.c:250
#, fuzzy
msgid "|N|use passphrase mode N"
msgstr "|N|ÉÓÐÏÌØÚÏ×ÁÔØ ËÌÀÞÅ×ÕÀ ÆÒÁÚÕ ÒÅÖÉÍÁ N\n"
-#: g10/g10.c:247
+#: g10/g10.c:252
#, fuzzy
msgid "|NAME|use message digest algorithm NAME for passphrases"
msgstr "|éíñ|ÉÓÐÏÌØÚÏ×ÁÔØ ÈÜÛ-ÁÌÇÏÒÉÔÍ éíñ ÄÌÑ ËÌÀÞÅ×ÙÈ ÆÒÁÚ"
-#: g10/g10.c:249
+#: g10/g10.c:254
#, fuzzy
msgid "|NAME|use cipher algorithm NAME for passphrases"
msgstr "|éíñ|ÉÓÐÏÌØÚÏ×ÁÔØ ÛÉÆÒÏ×ÁÌØÎÙÊ ÁÌÇÏÒÉÔÍÏÍ éíñ ÄÌÑ ËÌÀÞÅ×ÙÈ ÆÒÁÚ"
-#: g10/g10.c:251
+#: g10/g10.c:256
msgid "|NAME|use cipher algorithm NAME"
msgstr "|éíñ|ÉÓÐÏÌØÚÏ×ÁÔØ ÛÉÆÒÏ×ÁÌØÎÙÊ ÁÌÇÏÒÉÔÍÏÍ éíñ"
-#: g10/g10.c:252
+#: g10/g10.c:257
msgid "|NAME|use message digest algorithm NAME"
msgstr "|éíñ|ÉÓÐÏÌØÚÏ×ÁÔØ ÈÜÛ-ÁÌÇÏÒÉÔÍ éíñ"
-#: g10/g10.c:253
+#: g10/g10.c:258
msgid "|N|use compress algorithm N"
msgstr "|N|ÉÓÐÏÌØÚÏ×ÁÔØ ÁÌÇÏÒÉÔÍ ÓÖÁÔÉÑ N"
-#: g10/g10.c:254
+#: g10/g10.c:259
msgid "throw keyid field of encrypted packets"
msgstr "×ÙÂÒÁÓÙ×ÁÔØ ÐÏÌÅ keyid Õ ÚÁÛÉÆÒÏ×ÁÎÎÙÈ ÐÁËÅÔÏ×"
-#: g10/g10.c:262
+#: g10/g10.c:267
#, fuzzy
msgid ""
"@\n"
"Examples:\n"
"\n"
" -se -r Bob [file] sign and encrypt for user Bob\n"
" --clearsign [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"
msgstr ""
"@\n"
"ðÒÉÍÅÒÙ:\n"
"\n"
" -se -r Bob [file] ÐÏÄÐÉÓÁÔØ É ÚÁÛÉÆÒÏ×ÁÔØ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÑ Bob\n"
" --clearsign [file] ÓÄÅÌÁÔØ ÔÅËÓÔÏ×ÕÀ ÐÏÄÐÉÓØ\n"
" --detach-sign [file] ÓÄÅÌÁÔØ ÏÔÄÅÌØÎÕÀ ÐÏÄÐÉÓØ\n"
" --list-keys [names] ÐÏËÁÚÁÔØ ÓÐÉÓÏË ËÌÀÞÅÊ\n"
" --fingerprint [names] ÐÏËÁÚÁÔØ \"ÏÔÐÅÞÁÔËÉ ÐÁÌØÃÅ×\" ËÌÀÞÅÊ\n"
-#: g10/g10.c:341
+#: g10/g10.c:346
msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
msgstr ""
"ðÏÖÁÌÕÊÓÔÁ, ÏÔÐÒÁ×ÌÑÊÔÅ ÓÏÏÂÝÅÎÉÑ Ï ÏÛÉÂËÁÈ ÐÏ ÁÄÒÅÓÕ "
"<gnupg-bugs@gnu.org>.\n"
-#: g10/g10.c:346
+#: g10/g10.c:351
msgid "Usage: gpgm [options] [files] (-h for help)"
msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: gpgm [ÐÁÒÁÍÅÔÒÙ] [ÆÁÊÌÙ] (-h ÄÌÑ ÐÏÍÏÝÉ)"
-#: g10/g10.c:348
+#: g10/g10.c:353
msgid "Usage: gpg [options] [files] (-h for help)"
msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: gpg [ÐÁÒÁÍÅÔÒÙ] [ÆÁÊÌÙ] (-h ÄÌÑ ÐÏÍÏÝÉ)"
-#: g10/g10.c:353
+#: g10/g10.c:358
#, fuzzy
msgid ""
"Syntax: gpgm [options] [files]\n"
"GnuPG maintenance utility\n"
msgstr ""
"óÉÎÔÁËÓÉÓ: gpgm [ÐÁÒÁÍÅÔÒÙ] [ÆÁÊÌÙ]\n"
"ðÒÏÇÒÁÍÍÁ ÓÏÐÒÏ×ÏÖÄÅÎÉÑ GNUPG\n"
-#: g10/g10.c:356
+#: g10/g10.c:361
msgid ""
"Syntax: gpg [options] [files]\n"
"sign, check, encrypt or decrypt\n"
"default operation depends on the input data\n"
msgstr ""
"óÉÎÔÁËÓÉÓ: gpg [ÐÁÒÁÍÅÔÒÙ] [ÆÁÊÌÙ]\n"
"ÐÏÄÐÉÓÙ×ÁÅÔ, ÐÒÏ×ÅÒÑÅÔ ÐÏÄÐÉÓÉ, ÛÉÆÒÕÅÔ ÉÌÉ ÒÁÓÛÉÆÒÏ×Ù×ÁÅÔ\n"
"ÒÅÖÉÍ ÒÁÂÏÔÙ ÚÁ×ÉÓÉÔ ÏÔ ×ÈÏÄÎÙÈ ÄÁÎÎÙÈ\n"
-#: g10/g10.c:362
+#: g10/g10.c:367
msgid ""
"\n"
"Supported algorithms:\n"
msgstr ""
"\n"
"ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÁÌÇÏÒÉÔÍÙ:\n"
-#: g10/g10.c:437
+#: g10/g10.c:442
msgid "usage: gpgm [options] "
msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: gpgm [ÐÁÒÁÍÅÔÒÙ] "
-#: g10/g10.c:439
+#: g10/g10.c:444
msgid "usage: gpg [options] "
msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: gpg [ÐÁÒÁÍÅÔÒÙ] "
-#: g10/g10.c:480
+#: g10/g10.c:485
msgid "conflicting commands\n"
msgstr "Widersprüchliche Kommandos\n"
-#: g10/g10.c:618
+#: g10/g10.c:623
#, fuzzy, c-format
msgid "NOTE: no default option file `%s'\n"
msgstr "ÚÁÍÅÞÁÎÉÅ: ÆÁÊÌ ÐÁÒÁÍÅÔÒÏ× ÐÏ ÕÍÏÌÞÁÎÉÀ `%s' ÏÔÓÕÔÓÔ×ÕÅÔ\n"
-#: g10/g10.c:622
+#: g10/g10.c:627
#, c-format
msgid "option file `%s': %s\n"
msgstr "ÆÁÊÌ ÐÁÒÁÍÅÔÒÏ× `%s': %s\n"
-#: g10/g10.c:629
+#: g10/g10.c:634
#, c-format
msgid "reading options from `%s'\n"
msgstr "ÞÉÔÁÀÔÓÑ ÐÁÒÁÍÅÔÒÙ ÉÚ `%s'\n"
-#: g10/g10.c:782
+#: g10/g10.c:788
#, fuzzy, c-format
msgid "%s is not a valid character set\n"
msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÓÉÍ×ÏÌ × ËÏÍÍÅÎÔÁÒÉÉ.\n"
-#: g10/g10.c:817 g10/g10.c:829
+#: g10/g10.c:824 g10/g10.c:836
msgid "selected cipher algorithm is invalid\n"
msgstr "×ÙÂÒÁÎ ÎÅÄÏÐÕÓÔÉÍÙÊ ÁÌÇÏÒÉÔÍ ÛÉÆÒÏ×ÁÎÉÑ\n"
-#: g10/g10.c:823 g10/g10.c:835
+#: g10/g10.c:830 g10/g10.c:842
msgid "selected digest algorithm is invalid\n"
msgstr "×ÙÂÒÁÎ ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÁÊÄÖÅÓÔ-ÁÌÇÏÒÉÔÍ\n"
-#: g10/g10.c:838
+#: g10/g10.c:845
#, c-format
msgid "compress algorithm must be in range %d..%d\n"
msgstr "ÁÌÇÏÒÉÔÍ ÕÐÁËÏ×ËÉ ÍÏÖÅÔ ÉÍÅÔØ ÚÎÁÞÅÎÉÑ ÏÔ %d ÄÏ %d\n"
-#: g10/g10.c:840
+#: g10/g10.c:847
msgid "completes-needed must be greater than 0\n"
msgstr "completes-needed ÄÏÌÖÅÎ ÂÙÔØ ÂÏÌØÛÅ 0\n"
-#: g10/g10.c:842
+#: g10/g10.c:849
msgid "marginals-needed must be greater than 1\n"
msgstr "marginals-needed ÄÏÌÖÅÎ ÂÙÔØ ÂÏÌØÛÅ 1\n"
-#: g10/g10.c:844
+#: g10/g10.c:851
msgid "max-cert-depth must be in range 1 to 255\n"
msgstr ""
-#: g10/g10.c:847
+#: g10/g10.c:854
#, fuzzy
msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
msgstr "ÚÁÍÅÞÁÎÉÅ: ÐÒÏÓÔÏÊ S2K ÒÅÖÉÍ (0) ÏÞÅÎØ ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ\n"
-#: g10/g10.c:851
+#: g10/g10.c:858
msgid "invalid S2K mode; must be 0, 1 or 3\n"
msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÒÅÖÉÍ S2K: ÄÏÌÖÅÎ ÂÙÔØ 0, 1 ÉÌÉ 3\n"
-#: g10/g10.c:934
+#: g10/g10.c:941
#, c-format
msgid "failed to initialize the TrustDB: %s\n"
msgstr "ïÛÉÂËÁ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÂÁÚÙ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ: %s\n"
-#: g10/g10.c:940
+#: g10/g10.c:947
msgid "--store [filename]"
msgstr "--store [ÉÍÑ ÆÁÊÌÁ]"
-#: g10/g10.c:948
+#: g10/g10.c:955
msgid "--symmetric [filename]"
msgstr "--symmetric [ÉÍÑ ÆÁÊÌÁ]"
-#: g10/g10.c:956
+#: g10/g10.c:963
msgid "--encrypt [filename]"
msgstr "--encrypt [ÉÍÑ ÆÁÊÌÁ]"
-#: g10/g10.c:969
+#: g10/g10.c:976
msgid "--sign [filename]"
msgstr "--sign [ÉÍÑ ÆÁÊÌÁ]"
-#: g10/g10.c:982
+#: g10/g10.c:989
msgid "--sign --encrypt [filename]"
msgstr "--sign --encrypt [ÉÍÑ ÆÁÊÌÁ]"
-#: g10/g10.c:996
+#: g10/g10.c:1003
msgid "--clearsign [filename]"
msgstr "--clearsign [ÉÍÑ ÆÁÊÌÁ]"
-#: g10/g10.c:1008
+#: g10/g10.c:1015
msgid "--decrypt [filename]"
msgstr "--decrypt [ÉÍÑ ÆÁÊÌÁ]"
-#: g10/g10.c:1017
+#: g10/g10.c:1024
#, fuzzy
msgid "--edit-key username [commands]"
msgstr "--edit-key ÉÍÑ-ÐÏÌØÚÏ×ÁÔÅÌÑ"
-#: g10/g10.c:1033
+#: g10/g10.c:1040
msgid "--delete-secret-key username"
msgstr "--delete-secret-key ÉÍÑ-ÐÏÌØÚÏ×ÁÔÅÌÑ"
-#: g10/g10.c:1036
+#: g10/g10.c:1043
msgid "--delete-key username"
msgstr "--delete-key ÉÍÑ-ÐÏÌØÚÏ×ÁÔÅÌÑ"
-#: g10/encode.c:216 g10/g10.c:1059 g10/sign.c:301
+#: g10/encode.c:216 g10/g10.c:1066 g10/sign.c:311
#, c-format
msgid "can't open %s: %s\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ `%s': %s\n"
-#: g10/g10.c:1070
+#: g10/g10.c:1077
msgid "-k[v][v][v][c] [userid] [keyring]"
msgstr "-k[v][v][v][c] [ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ] [Ó×ÑÚËÁ ËÌÀÞÅÊ]"
-#: g10/g10.c:1127
+#: g10/g10.c:1138
#, c-format
msgid "dearmoring failed: %s\n"
msgstr "ÏÛÉÂËÁ ÄÅËÏÄÉÒÏ×ÁÎÉÑ: %s\n"
-#: g10/g10.c:1135
+#: g10/g10.c:1146
#, c-format
msgid "enarmoring failed: %s\n"
msgstr "ÏÛÉÂËÁ ËÏÄÉÒÏ×ÁÎÉÑ: %s\n"
-#: g10/g10.c:1201
+#: g10/g10.c:1212
#, c-format
msgid "invalid hash algorithm `%s'\n"
msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÈÜÛ-ÁÌÇÏÒÉÔÍ `%s'\n"
-#: g10/g10.c:1280
+#: g10/g10.c:1291
msgid "[filename]"
msgstr "[ÉÍÑ ÆÁÊÌÁ]"
-#: g10/g10.c:1284
+#: g10/g10.c:1295
msgid "Go ahead and type your message ...\n"
msgstr ""
-#: g10/decrypt.c:59 g10/g10.c:1287 g10/verify.c:66
+#: g10/decrypt.c:59 g10/g10.c:1298 g10/verify.c:66
#, c-format
msgid "can't open `%s'\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ `%s'\n"
-#: g10/armor.c:321
+#: g10/armor.c:297
#, fuzzy, c-format
msgid "armor: %s\n"
msgstr "ëÏÄÉÒÏ×ËÁ: %s\n"
-#: g10/armor.c:344
+#: g10/armor.c:320
msgid "invalid armor header: "
msgstr ""
-#: g10/armor.c:351
+#: g10/armor.c:327
msgid "armor header: "
msgstr ""
-#: g10/armor.c:362
+#: g10/armor.c:338
#, fuzzy
msgid "invalid clearsig header\n"
msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÎÁÞÁÌÏ ÔÅËÓÔÏ×ÏÊ ÐÏÄÐÉÓÉ\n"
-#: g10/armor.c:414
+#: g10/armor.c:390
#, fuzzy
msgid "nested clear text signatures\n"
msgstr "|[ÆÁÊÌ]|ÓÏÚÄÁÔØ ÔÅËÓÔÏ×ÕÀ ÐÏÄÐÉÓØ"
-#: g10/armor.c:530
+#: g10/armor.c:508
msgid "invalid dash escaped line: "
msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ÓÔÒÏËÁ ÎÁÞÉÎÁÀÝÁÑÓÑ Ó ÍÉÎÕÓÏ×: "
-#: g10/armor.c:538
+#: g10/armor.c:516
#, fuzzy
msgid "unexpected armor:"
msgstr "îÅÏÖÉÄÁÎÎÙÅ ÄÁÎÎÙÅ"
-#: g10/armor.c:624
+#: g10/armor.c:632
#, fuzzy, c-format
msgid "invalid radix64 character %02x skipped\n"
msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÌÑ ËÏÄÉÒÏ×ËÉ radix64 ÓÉÍ×ÏÌ %02x ÐÒÏÐÕÝÅÎ\n"
-#: g10/armor.c:654
+#: g10/armor.c:675
msgid "premature eof (no CRC)\n"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ (ÎÅÔ CRC)\n"
-#: g10/armor.c:671
+#: g10/armor.c:709
msgid "premature eof (in CRC)\n"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ (× CRC)\n"
-#: g10/armor.c:675
+#: g10/armor.c:713
msgid "malformed CRC\n"
msgstr "ÎÅÐÒÁ×ÉÌØÎÁÑ ÆÏÒÍÁ CRC\n"
-#: g10/armor.c:679
+#: g10/armor.c:717
#, c-format
msgid "CRC error; %06lx - %06lx\n"
msgstr "ÏÛÉÂËÁ CRC; %06lx - %06lx\n"
-#: g10/armor.c:696
+#: g10/armor.c:734
msgid "premature eof (in Trailer)\n"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ (× È×ÏÓÔÅ)\n"
-#: g10/armor.c:700
+#: g10/armor.c:738
msgid "error in trailer line\n"
msgstr "ÏÛÉÂËÁ × ÚÁ×ÅÒÛÁÀÝÅÊ ÓÔÒÏËÅ\n"
-#: g10/armor.c:961
+#: g10/armor.c:999
#, fuzzy
msgid "no valid OpenPGP data found.\n"
msgstr "ÎÅ ÎÁÊÄÅÎÏ ÄÏÐÕÓÔÉÍÙÈ RFC1991 ÉÌÉ OpenPGP ÄÁÎÎÙÈ.\n"
-#: g10/armor.c:963
+#: g10/armor.c:1001
#, c-format
msgid "invalid armor: line longer than %d characters\n"
msgstr ""
+#: g10/armor.c:1005
+msgid ""
+"quoted printable character in armor - probably a buggy MTA has been used\n"
+msgstr ""
+
#: g10/pkclist.c:138
#, fuzzy, c-format
msgid ""
"No trust value assigned to %lu:\n"
"%4u%c/%08lX %s \""
msgstr ""
"îÅ ÏÐÒÅÄÅÌÅÎÙ ÐÁÒÁÍÅÔÒÙ ÄÏ×ÅÒÉÑ ÄÌÑ %lu:\n"
"%4u%c/%08lX %s \""
#: g10/pkclist.c:148
#, fuzzy
msgid ""
"Please decide how far you trust this user to correctly\n"
"verify other users' keys (by looking at passports,\n"
"checking fingerprints from different sources...)?\n"
"\n"
" 1 = Don't know\n"
" 2 = I do NOT trust\n"
" 3 = I trust marginally\n"
" 4 = I trust fully\n"
" s = please show me more information\n"
msgstr ""
"\"\n"
"\n"
"ðÏÖÁÌÕÊÓÔÁ ÒÅÛÉÔÅ, ÎÁÓËÏÌØËÏ ×Ù ÄÏ×ÅÒÑÅÔÅ ÜÔÏÍÕ ÐÏÌØÚÏ×ÁÔÅÌÀ ÐÒÏ×ÅÒÑÔØ\n"
"ÞÕÖÉÅ ËÌÀÞÉ (ÇÌÑÄÑ × ÐÁÓÐÏÒÔÁ, ÐÒÏ×ÅÒÑÑ \"ÏÔÐÅÞÁÔËÉ ÐÁÌØÃÅ×\" ÐÏ ÄÒÕÇÉÍ\n"
"ÉÓÔÏÞÎÉËÁÍ)?\n"
"\n"
" 1 = îÅ ÚÎÁÀ\n"
" 2 = îÅÔ, ÎÅ ÄÏ×ÅÒÑÀ\n"
" 3 = ÷ÅÒÀ ÏÔÞÁÓÔÉ\n"
" 4 = ÷ÅÒÀ ÐÏÌÎÏÓÔØÀ\n"
" s = ðÏÖÁÌÕÊÓÔÁ, ÐÏËÁÖÉÔÅ ÄÏÐÏÌÎÉÔÅÌØÎÕÀ ÉÎÆÏÒÍÁÃÉÀ\n"
#: g10/pkclist.c:157
msgid " m = back to the main menu\n"
msgstr " m = ÏÂÒÁÔÎÏ × ÇÌÁ×ÎÏÅ ÍÅÎÀ\n"
#: g10/pkclist.c:159
msgid " q = quit\n"
msgstr ""
# valid user replies (not including 1..4)
#. a string with valid answers
#: g10/pkclist.c:164
#, fuzzy
msgid "sSmMqQ"
msgstr "sSmMqQ"
#: g10/pkclist.c:168
msgid "Your decision? "
msgstr "÷ÁÛÅ ÒÅÛÅÎÉÅ? "
#: g10/pkclist.c:188
msgid "Certificates leading to an ultimately trusted key:\n"
msgstr ""
#: g10/pkclist.c:223
msgid ""
"Could not find a valid trust path to the key. Let's see whether we\n"
"can assign some missing owner trust values.\n"
"\n"
msgstr ""
"îÅ ÐÏÌÕÞÉÌÏÓØ ÎÁÊÔÉ ÃÅÐÏÞËÕ ÄÏ×ÅÒÉÑ ÄÌÑ ËÌÀÞÁ. ðÏÓÍÏÔÒÉÍ, ÍÏÖÎÏ ÌÉ "
"ÐÒÉÓ×ÏÉÔØ\n"
"ÎÅËÏÔÏÒÙÅ ÎÅÄÏÓÔÁÀÝÉÅ ÚÎÁÞÅÎÉÑ \"ÄÏ×ÅÒÉÑ ×ÌÁÄÅÌØÃÕ\"\n"
"\n"
#: g10/pkclist.c:261
msgid ""
"No path leading to one of our keys found.\n"
"\n"
msgstr ""
#: g10/pkclist.c:263
msgid ""
"No certificates with undefined trust found.\n"
"\n"
msgstr ""
#: g10/pkclist.c:265
#, fuzzy
msgid ""
"No trust values changed.\n"
"\n"
msgstr "úÎÁÞÅÎÉÑ ÐÁÒÁÍÅÔÒÏ× ÄÏ×ÅÒÉÑ ÎÅ ÉÚÍÅÎÅÎÙ.\n"
#: g10/pkclist.c:280
#, fuzzy, c-format
msgid "key %08lX: key has been revoked!\n"
msgstr "build_sigrecs: ËÌÀÞ ist widerrufen\n"
#: g10/pkclist.c:286 g10/pkclist.c:381
msgid "Use this key anyway? "
msgstr "÷ÓÅ ÒÁ×ÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÏÔ ËÌÀÞ?"
#: g10/pkclist.c:308
#, fuzzy, c-format
msgid "%08lX: key has expired\n"
msgstr "úÁÍÅÞÁÎÉÅ: óÒÏË ÄÅÊÓÔ×ÉÑ ËÌÀÞÁ ÕÖÅ ÉÓÔÅË!\n"
#: g10/pkclist.c:314
#, c-format
msgid "%08lX: no info to calculate a trust probability\n"
msgstr ""
#: g10/pkclist.c:332
#, fuzzy, c-format
msgid "%08lX: We do NOT trust this key\n"
msgstr "÷îéíáîéå: íÙ îå ÄÏ×ÅÒÑÅÍ ÜÔÏÍÕ ËÌÀÞÕ!\n"
#: g10/pkclist.c:338
#, c-format
msgid ""
"%08lX: It is not sure that this key really belongs to the owner\n"
"but it is accepted anyway\n"
msgstr ""
#: g10/pkclist.c:344
msgid "This key probably belongs to the owner\n"
msgstr ""
#: g10/pkclist.c:349
msgid "This key belongs to us\n"
msgstr ""
#: g10/pkclist.c:376
msgid ""
"It is NOT certain that the key belongs to its owner.\n"
"If you *really* know what you are doing, you may answer\n"
"the next question with yes\n"
"\n"
msgstr ""
"îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÄÏÓÔÏ×ÅÒÎÏ, ÞÔÏ ËÌÀÞ ÐÒÉÎÁÄÌÅÖÉÔ ÔÏÍÕ,\n"
"ËÔÏ ÕËÁÚÁÎ ÅÇÏ ×ÌÁÄÅÌØÃÅÍ. ïÔ×ÅÞÁÊÔÅ \"ÄÁ\" ÎÁ ÓÌÅÄÕÀÝÉÊ ×ÏÐÒÏÓ,\n"
"ÔÏÌØËÏ ÅÓÌÉ ×Ù *ÄÅÊÓÔ×ÉÔÅÌØÎÏ* ÐÏÎÉÍÁÅÔÅ ÞÔÏ ÄÅÌÁÅÔÅ.\n"
#: g10/pkclist.c:385
msgid "WARNING: Using untrusted key!\n"
msgstr "÷îéíáîéå: éÓÐÏÌØÚÕÅÔÓÑ ËÌÀÞ Ë ËÏÔÏÒÏÍÕ ÎÅÔ ÄÏ×ÅÒÉÑ!\n"
#: g10/pkclist.c:421
msgid "WARNING: This key has been revoked by its owner!\n"
msgstr "÷îéíáîéå: ÷ÌÁÄÅÌÅà ËÌÀÞÁ ÕÖÅ ÏÔÏÚ×ÁÌ ÅÇÏ!\n"
#: g10/pkclist.c:422
msgid " This could mean that the signature is forgery.\n"
msgstr " üÔÏ ÍÏÖÅÔ ÏÚÎÁÞÁÔØ, ÞÔÏ ÐÏÄÐÉÓØ ÐÏÄÄÅÌØÎÁÑ.\n"
#: g10/pkclist.c:443
msgid "Note: This key has expired!\n"
msgstr "úÁÍÅÞÁÎÉÅ: óÒÏË ÄÅÊÓÔ×ÉÑ ËÌÀÞÁ ÕÖÅ ÉÓÔÅË!\n"
#: g10/pkclist.c:450
msgid "WARNING: This key is not certified with a trusted signature!\n"
msgstr "÷îéíáîéå: üÔÏÔ ËÌÀÞ ÎÅ ÚÁ×ÅÒÅÎ ÄÏ×ÅÒÅÎÎÏÊ ÐÏÄÐÉÓØÀ!\n"
#: g10/pkclist.c:452
msgid ""
" There is no indication that the signature belongs to the owner.\n"
msgstr ""
" îÅÔ ÎÉËÁËÉÈ ÕËÁÚÁÎÉÑ ÎÁ ÔÏ, ÞÔÏ ËÌÀÞ ÐÒÉÎÁÄÌÅÖÉÔ ÅÇÏ ×ÌÁÄÅÌØÃÕ.\n"
#: g10/pkclist.c:468
msgid "WARNING: We do NOT trust this key!\n"
msgstr "÷îéíáîéå: íÙ îå ÄÏ×ÅÒÑÅÍ ÜÔÏÍÕ ËÌÀÞÕ!\n"
#: g10/pkclist.c:469
msgid " The signature is probably a FORGERY.\n"
msgstr " ðÏÄÐÉÓØ ×ÅÒÏÑÔÎÏ -- ðïääåìëá.\n"
#: g10/pkclist.c:476
msgid ""
"WARNING: This key is not certified with sufficiently trusted signatures!\n"
msgstr "÷îéíáîéå: üÔÏÔ ËÌÀÞ ÎÅ ÚÁ×ÅÒÅÎ ÄÏÓÔÁÔÏÞÎÏ ÄÏ×ÅÒÅÎÎÙÍÉ ÐÏÄÐÉÓÑÍÉ!\n"
#: g10/pkclist.c:479
msgid " It is not certain that the signature belongs to the owner.\n"
msgstr " îÅÔ Õ×ÅÒÅÎÎÏÓÔÉ, ÞÔÏ ÐÏÄÐÉÓØ ÐÒÉÎÁÄÌÅÖÉÔ ×ÌÁÄÅÌØÃÕ.\n"
#: g10/pkclist.c:524
msgid ""
"You did not specify a user ID. (you may use \"-r\")\n"
"\n"
msgstr ""
"÷Ù ÎÅ ÕËÁÚÁÌÉ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ (×ÏÓÐÏÌØÚÕÊÔÅÓØ ÐÁÒÁÍÅÔÒÏÍ "
"\"-r\").\n"
"\n"
#: g10/pkclist.c:529
msgid "Enter the user ID: "
msgstr "÷×ÅÄÉÔÅ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ: "
#: g10/pkclist.c:540
msgid "No such user ID.\n"
msgstr "îÅÔ ÔÁËÏÇÏ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ÐÏÌØÚÏ×ÁÔÅÌÑ.\n"
#: g10/pkclist.c:574 g10/pkclist.c:601
#, c-format
msgid "%s: skipped: %s\n"
msgstr "%s: ÐÒÏÐÕÝÅÎ: %s\n"
#: g10/pkclist.c:582
#, c-format
msgid "%s: error checking key: %s\n"
msgstr "%s: ÏÛÉÂËÁ ÐÒÉ ÐÒÏ×ÅÒËÅ ËÌÀÞÁ: %s\n"
#: g10/pkclist.c:608
msgid "no valid addressees\n"
msgstr "ÎÅÔ ÄÏÐÕÓÔÉÍÙÈ ÁÄÒÅÓÏ×\n"
#: g10/keygen.c:124
msgid "writing self signature\n"
msgstr "ÐÉÛÅÔÓÑ ÓÁÍÏ-ÐÏÄÐÉÓØ\n"
#: g10/keygen.c:162
msgid "writing key binding signature\n"
msgstr "ÐÉÛÅÔÓÑ \"key-binding\" ÐÏÄÐÉÓØ\n"
#: g10/keygen.c:388
msgid "Please select what kind of key you want:\n"
msgstr "÷ÙÂÅÒÉÔÅ ÖÅÌÁÅÍÙÊ ÔÉÐ ËÌÀÞÁ:\n"
#: g10/keygen.c:390
#, c-format
msgid " (%d) DSA and ElGamal (default)\n"
msgstr " (%d) DSA É ElGamal (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n"
#: g10/keygen.c:391
#, c-format
msgid " (%d) DSA (sign only)\n"
msgstr " (%d) DSA (ÔÏÌØËÏ ÐÏÄÐÉÓØ)\n"
#: g10/keygen.c:393
#, c-format
msgid " (%d) ElGamal (encrypt only)\n"
msgstr " (%d) ElGamal (ÔÏÌØËÏ ÛÉÆÒÏ×ÁÎÉÅ)\n"
#: g10/keygen.c:394
#, c-format
msgid " (%d) ElGamal (sign and encrypt)\n"
msgstr " (%d) ElGamal (ÐÏÄÐÉÓØ É ÛÉÆÒÏ×ÁÎÉÅ)\n"
#: g10/keygen.c:396
#, c-format
msgid " (%d) ElGamal in a v3 packet\n"
msgstr " (%d) ElGamal × v3-ÐÁËÅÔÅ\n"
#: g10/keygen.c:401
msgid "Your selection? "
msgstr "÷ÁÛ ×ÙÂÏÒ? "
#: g10/keygen.c:411
#, fuzzy
msgid "Do you really want to create a sign and encrypt key? "
msgstr "÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ×ÙÂÒÁÎÎÙÅ ËÌÀÞÉ? "
#: g10/keygen.c:432
msgid "Invalid selection.\n"
msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ×ÙÂÏÒ.\n"
#: g10/keygen.c:444
#, c-format
msgid ""
"About to generate a new %s keypair.\n"
" minimum keysize is 768 bits\n"
" default keysize is 1024 bits\n"
" highest suggested keysize is 2048 bits\n"
msgstr ""
"óÏÂÉÒÁÅÍÓÑ ÓÇÅÎÅÒÉÒÏ×ÁÔØ %s ËÌÀÞÅ×ÕÀ ÐÁÒÕ.\n"
" ÍÉÎÉÍÁÌØÎÁÑ ÄÌÉÎÁ ËÌÀÞÁ: 768 ÂÉÔ\n"
" ÄÌÉÎÁ ËÌÀÞÁ ÐÏ ÕÍÏÌÞÁÎÉÀ: 1024 ÂÉÔÁ\n"
" ÍÁËÓÉÍÁÌØÎÁÑ ÒÅËÏÍÅÎÄÕÅÍÁÑ ÄÌÉÎÁ ËÌÀÞÁ: 2048 ÂÉÔ\n"
#: g10/keygen.c:451
msgid "What keysize do you want? (1024) "
msgstr "ëÁËÏÇÏ ÒÁÚÍÅÒÁ ËÌÀÞ ×Ù ÖÅÌÁÅÔÅ? (1024)"
#: g10/keygen.c:456
msgid "DSA only allows keysizes from 512 to 1024\n"
msgstr "äÏÐÕÓÔÉÍÙÊ ÒÁÚÍÅÒ DSA ËÌÀÞÅÊ - ÏÔ 512 ÄÏ 1024 ÂÉÔ\n"
#: g10/keygen.c:458
msgid "keysize too small; 768 is smallest value allowed.\n"
msgstr "ÓÌÉÛËÏÍ ÍÁÌÅÎØËÁÑ ÄÌÉÎÁ ËÌÀÞÁ, ÎÁÉÍÅÎØÛÅÅ ÚÎÁÞÅÎÉÅ - 768.\n"
#: g10/keygen.c:461
#, fuzzy
msgid ""
"Keysizes larger than 2048 are not suggested because\n"
"computations take REALLY long!\n"
msgstr ""
"ëÌÀÞÉ ÄÌÉÎÏÊ ÂÏÌØÛÅ 2048 ÎÅ ÒÅËÏÍÅÎÄÕÀÔÓÑ, ÐÏÔÏÍÕ ÞÔÏ ×ÙÞÉÓÌÅÎÉÑÚÁÎÉÍÁÀÔ "
"ïþåîø ÍÎÏÇÏ ×ÒÅÍÅÎÉ!\n"
#: g10/keygen.c:464
msgid "Are you sure that you want this keysize? "
msgstr "÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ËÌÀÞ ÔÁËÏÊ ÄÌÉÎÙ? "
#: g10/keygen.c:465
msgid ""
"Okay, but keep in mind that your monitor and keyboard radiation is also very "
"vulnerable to attacks!\n"
msgstr ""
"ïË, ÔÏÌØËÏ ÎÅ ÚÁÂÙ×ÁÊÔÅ, ÞÔÏ ÉÚÌÕÞÅÎÉÅ ×ÁÛÉÈ ËÌÁ×ÉÁÔÕÒÙ É ÍÏÎÉÔÏÒÁ ÔÏÖÅ\n"
"ÄÅÌÁÀÔ ×ÁÓ ÕÑÚ×ÉÍÙÍ ÄÌÑ ÁÔÁË.\n"
#: g10/keygen.c:473
msgid "Do you really need such a large keysize? "
msgstr "÷ÁÍ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÎÕÖÅÎ ÔÁËÏÊ ÄÌÉÎÎÙÊ ËÌÀÞ? "
#: g10/keygen.c:479
#, c-format
msgid "Requested keysize is %u bits\n"
msgstr "úÁÐÒÏÛÅÎÎÙÊ ËÌÀÞ ÉÍÅÅÔ ÄÌÉÎÕ %u ÂÉÔ\n"
#: g10/keygen.c:482 g10/keygen.c:486
#, c-format
msgid "rounded up to %u bits\n"
msgstr "ÏËÒÕÇÌÅÎÏ ÄÏ %u ÂÉÔ\n"
#: g10/keygen.c:499
msgid ""
"Please specify how long the key should be valid.\n"
" 0 = key does not expire\n"
" <n> = key expires in n days\n"
" <n>w = key expires in n weeks\n"
" <n>m = key expires in n months\n"
" <n>y = key expires in n years\n"
msgstr ""
"ðÏÖÁÌÕÊÓÔÁ, ÕËÁÖÉÔÅ ÐÒÏÄÏÌÖÉÔÅÌØÎÏÓÔØ ÄÅÊÓÔ×ÉÑ ×ÁÛÅÇÏ ËÌÀÞÁ.\n"
" 0 = ÂÅÓÓÒÏÞÎÙÊ ËÌÀÞ\n"
" <n> = ÓÒÏË ÄÅÊÓÔ×ÉÑ ËÌÀÞÁ n ÄÎÅÊ\n"
" <n>w = ÓÒÏË ÄÅÊÓÔ×ÉÑ ËÌÀÞÁ n ÎÅÄÅÌØ\n"
" <n>m = ÓÒÏË ÄÅÊÓÔ×ÉÑ ËÌÀÞÁ n ÍÅÓÑÃÅ×\n"
" <n>y = ÓÒÏË ÄÅÊÓÔ×ÉÑ ËÌÀÞÁ n ÌÅÔ\n"
#: g10/keygen.c:514
msgid "Key is valid for? (0) "
msgstr "ëÌÀÞ ÄÅÊÓÔ×ÉÔÅÌÅÎ × ÔÅÞÅÎÉÅ? (0) "
#: g10/keygen.c:525
msgid "invalid value\n"
msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÚÎÁÞÅÎÉÅ.\n"
#: g10/keygen.c:530
msgid "Key does not expire at all\n"
msgstr "âÅÓÓÒÏÞÎÙÊ ËÌÀÞ.\n"
#. print the date when the key expires
#: g10/keygen.c:536
#, c-format
msgid "Key expires at %s\n"
msgstr "ëÌÀÞ ÄÅÊÓÔ×ÕÅÔ ÄÏ %s\n"
#: g10/keygen.c:542
msgid "Is this correct (y/n)? "
msgstr "üÔÏ ×ÅÒÎÏ? (y/n) "
#: g10/keygen.c:584
msgid ""
"\n"
"You need a User-ID to identify your key; the software constructs the user "
"id\n"
"from Real Name, Comment and Email Address in this form:\n"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
msgstr ""
"\n"
"äÌÑ ÉÄÅÎÔÉÆÉËÁÃÉÉ ËÌÀÞÁ ÎÅÏÂÈÏÄÉÍ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ; ÐÒÏÇÒÁÍÍÁ\n"
"ËÏÎÓÔÒÕÉÒÕÅÔ ÅÇÏ ÉÚ ÐÏÌÎÏÇÏ ÉÍÅÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ, ËÏÍÍÅÎÔÁÒÉÑ É ÁÄÒÅÓÁ email× "
"×ÉÄÅ:\n"
" \"Vasya Pupkin (KRUTOI) <vasya@mega-cool.ru>\"\n"
"\n"
#: g10/keygen.c:595
msgid "Real name: "
msgstr "÷ÁÛÅ ÉÍÑ (\"éÍÑ æÁÍÉÌÉÑ\"): "
#: g10/keygen.c:599
msgid "Invalid character in name\n"
msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÓÉÍ×ÏÌ × ÉÍÅÎÉ\n"
#: g10/keygen.c:601
msgid "Name may not start with a digit\n"
msgstr "ðÏÌÎÏÅ ÉÍÑ ÎÅ ÍÏÖÅÔ ÎÁÞÉÎÁÔØÓÑ Ó ÃÉÆÒÙ.\n"
#: g10/keygen.c:603
msgid "Name must be at least 5 characters long\n"
msgstr "ðÏÌÎÏÅ ÉÍÑ ÄÏÌÖÎÏ ÓÏÓÔÏÑÔØ ÎÅ ÍÅÎÅÅ ÞÅÍ ÉÚ 5ÔÉ ÓÉÍ×ÏÌÏ×.\n"
#: g10/keygen.c:611
msgid "Email address: "
msgstr "E-Mail: "
#: g10/keygen.c:623
msgid "Not a valid email address\n"
msgstr "îÅÄÏÐÕÓÔÉÍÙÊ E-Mail\n"
#: g10/keygen.c:631
msgid "Comment: "
msgstr "ëÏÍÍÅÎÔÁÒÉÊ: "
#: g10/keygen.c:637
msgid "Invalid character in comment\n"
msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÓÉÍ×ÏÌ × ËÏÍÍÅÎÔÁÒÉÉ.\n"
#: g10/keygen.c:657
#, c-format
msgid ""
"You selected this USER-ID:\n"
" \"%s\"\n"
"\n"
msgstr ""
"÷Ù ×ÙÂÒÁÌÉ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ:\n"
" \"%s\"\n"
"\n"
#: g10/keygen.c:660
msgid "NnCcEeOoQq"
msgstr ""
#: g10/keygen.c:670
#, fuzzy
msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
msgstr "éÚÍÅÎÉÔØ: N=éÍÑ, C=ëÏÍÍÅÎÔÁÒÉÊ, E=E-Mail, O=Okay/Q=÷ÙÈÏÄ? "
#: g10/keygen.c:722
msgid ""
"You need a Passphrase to protect your secret key.\n"
"\n"
msgstr ""
"äÌÑ ÚÁÝÉÔÙ ×ÁÛÅÇÏ ËÌÀÞÁ ÎÕÖÎÁ ËÌÀÞÅ×ÁÑ ÆÒÁÚÁ.\n"
"\n"
#: g10/keyedit.c:389 g10/keygen.c:730
msgid "passphrase not correctly repeated; try again.\n"
msgstr "ËÌÀÞÅ×ÁÑ ÆÒÁÚÁ ÎÅ ÂÙÌÁ ×ÏÓÐÒÏÉÚ×ÅÄÅÎÁ, ÐÏÐÒÏÂÕÊÔÅ ÓÎÏ×Á.\n"
#: g10/keygen.c:736
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 ""
"÷Ù ÎÅ ÈÏÔÉÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ËÌÀÞÅ×ÕÀ ÆÒÁÚÕ - ÜÔÏ, ÓËÏÒÅÅ ×ÓÅÇÏ, *ÐÌÏÈÁÑ*\n"
"ÉÄÅÑ. îÏ Ñ ÓÄÅÌÁÀ, ÞÔÏ ÷Ù ÈÏÔÉÔÅ. ëÌÀÞÅ×ÕÀ ÆÒÁÚÕ ÍÏÖÎÏ ÓÍÅÎÉÔØ × ÌÀÂÏÅ\n"
"×ÒÅÍÑ, ÚÁÐÕÓÔÉ× ÜÔÕ ÐÒÏÇÒÁÍÍÕ Ó ÐÁÒÁÍÅÔÒÏÍ \"--edit-key\".\n"
"\n"
#: g10/keygen.c:757
msgid ""
"We need to generate a lot of random bytes. It is a good idea to perform\n"
"some other action (work in another window, move the mouse, utilize the\n"
"network and the disks) during the prime generation; this gives the random\n"
"number generator a better chance to gain enough entropy.\n"
msgstr ""
"îÁÍ ÎÕÖÎÏ ÓÇÅÎÅÒÉÒÏ×ÁÔØ ÍÎÏÇÏ ÓÌÕÞÁÊÎÙÈ ÂÁÊÔÏ×. óÅÊÞÁÓ ÏÞÅÎØ ÈÏÒÏÛÏ ÂÙÌÏ ÂÙ\n"
"ÞÔÏ-ÔÏ ÐÏÄÅÌÁÔØ ÎÁ ÍÁÛÉÎÅ (ÐÏÒÁÂÏÔÁÔØ × ÄÒÕÇÏÍ ÏËÎÅ, ÐÏÄ×ÉÇÁÔØ ÍÙÛØ,\n"
"ÎÁÇÒÕÚÉÔØ ÓÅÔÅ×ÕÀ ÉÌÉ ÄÉÓËÏ×ÕÀ ÐÏÄÓÉÓÔÅÍÕ). üÔÏ ÄÁÓÔ ÇÅÎÅÒÁÔÏÒÕ ÓÌÕÞÁÊÎÙÈ\n"
"ÞÉÓÅÌ ×ÏÚÍÏÖÎÏÓÔØ ÎÁÂÒÁÔØ ÄÏÓÔÁÔÏÞÎÏ ÜÎÔÒÏÐÉÉ.\n"
#: g10/keygen.c:827
msgid "Key generation can only be used in interactive mode\n"
msgstr "çÅÎÅÒÁÃÉÑ ËÌÀÞÁ ÍÏÖÅÔ ÂÙÔØ ×ÙÐÏÌÎÅÎÁ ÔÏÌØËÏ × ÉÎÔÅÒÁËÔÉ×ÎÏÍ ÒÅÖÉÍÅ.\n"
#: g10/keygen.c:835
msgid "DSA keypair will have 1024 bits.\n"
msgstr "ëÌÀÞÅ×ÁÑ ÐÁÒÁ DSA ÂÕÄÅÔ ÉÍÅÔØ ÄÌÉÎÕ 1024 ÂÉÔÁ.\n"
#: g10/keygen.c:841
#, fuzzy
msgid "Key generation cancelled.\n"
msgstr "çÅÎÅÒÁÃÉÑ ËÌÀÞÁ ÏÔÍÅÎÅÎÁ: %s\n"
#: g10/keygen.c:851
#, c-format
msgid "writing public certificate to `%s'\n"
msgstr "ÏÔËÒÙÔÙÊ ÓÅÒÔÉÆÉËÁÔ ÚÁÐÉÓÙ×ÁÅÔÓÑ × `%s'\n"
#: g10/keygen.c:852
#, c-format
msgid "writing secret certificate to `%s'\n"
msgstr "ÓÅËÒÅÔÎÙÊ ÓÅÒÔÉÆÉËÁÔ ÚÁÐÉÓÙ×ÁÅÔÓÑ × `%s'\n"
#: g10/keygen.c:929
msgid "public and secret key created and signed.\n"
msgstr "ÏÔËÒÙÔÙÊ É ÓÅËÒÅÔÎÙÊ ËÌÀÞÉ ÓÏÚÄÁÎÙ É ÐÏÄÐÉÓÁÎÙ.\n"
#: g10/keygen.c:931
+#, fuzzy
msgid ""
"Note that this key cannot be used for encryption. You may want to use\n"
-"the command \"--add-key\" to generate a secondary key for this purpose.\n"
+"the command \"--edit-key\" to generate a secondary key for this purpose.\n"
msgstr ""
"ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÜÔÏÔ ËÌÀÞ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ ÄÌÑ ÛÉÆÒÏ×ÁÎÉÑ.\n"
"÷Ù ÍÏÖÅÔÅ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ÐÁÒÁÍÅÔÒÏÍ --add-key ÄÌÑ ÇÅÎÅÒÁÃÉÉ "
"ÄÏÐÏÌÎÉÔÅÌØÎÏÇÏ\n"
"ËÌÀÞÁ ÄÌÑ ÛÉÆÒÏ×ÁÎÉÑ.\n"
-#: g10/keygen.c:945 g10/keygen.c:1030
+#: g10/keygen.c:945 g10/keygen.c:1044
#, c-format
msgid "Key generation failed: %s\n"
msgstr "çÅÎÅÒÁÃÉÑ ËÌÀÞÁ ÎÅ ÕÄÁÌÁÓØ: %s\n"
-#: g10/keygen.c:1008
+#: g10/keygen.c:989 g10/sig-check.c:172 g10/sign.c:52
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu second in future (time warp or clock problem)\n"
+msgstr ""
+"ÏÔËÒÙÔÙÊ ËÌÀÞ ÓÇÅÎÅÒÉÒÏ×ÁÎ × ÂÕÄÕÝÅÍ (ÉÓËÒÉ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÌÉ ÎÅÐÒÁ×ÉÌØÎÏ "
+"ÕÓÔÁÎÏ×ÌÅÎÙ ÞÁÓÙ)\n"
+
+#: g10/keygen.c:991 g10/sig-check.c:174 g10/sign.c:54
+#, fuzzy, c-format
+msgid ""
+"key has been created %lu seconds in future (time warp or clock problem)\n"
+msgstr ""
+"ÏÔËÒÙÔÙÊ ËÌÀÞ ÓÇÅÎÅÒÉÒÏ×ÁÎ × ÂÕÄÕÝÅÍ (ÉÓËÒÉ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÌÉ ÎÅÐÒÁ×ÉÌØÎÏ "
+"ÕÓÔÁÎÏ×ÌÅÎÙ ÞÁÓÙ)\n"
+
+#: g10/keygen.c:1022
#, fuzzy
msgid "Really create? "
msgstr "äÅÊÓÔ×ÉÔÅÌØÎÏ ÓÏÚÄÁÔØ? "
#: g10/encode.c:88 g10/openfile.c:81 g10/openfile.c:158 g10/tdbio.c:459
#: g10/tdbio.c:510
#, c-format
msgid "%s: can't open: %s\n"
msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s\n"
#: g10/encode.c:107
#, c-format
msgid "error creating passphrase: %s\n"
msgstr "ÏÛÉÂËÁ ÐÒÉ ÓÏÚÄÁÎÉÉ ËÌÀÞÅ×ÏÊ ÆÒÁÚÙ: %s\n"
#: g10/encode.c:155 g10/encode.c:269
#, fuzzy, c-format
msgid "%s: WARNING: empty file\n"
msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÕÓÔÏÊ ÆÁÊÌ.\n"
#: g10/encode.c:222
#, c-format
msgid "reading from `%s'\n"
msgstr "þÉÔÁÅÔÓÑ ÉÚ `%s'\n"
#: g10/encode.c:397
#, fuzzy, c-format
msgid "%s/%s encrypted for: %s\n"
msgstr "%s ÚÁÛÉÆÒÏ×ÁÎÏ ÄÌÑ: %s\n"
-#: g10/export.c:114
+#: g10/export.c:147
#, fuzzy, c-format
msgid "%s: user not found: %s\n"
msgstr "%s: ÐÏÌØÚÏ×ÁÔÅÌØ ÎÅ ÎÁÊÄÅÎ\n"
-#: g10/export.c:123
+#: g10/export.c:156
#, c-format
msgid "certificate read problem: %s\n"
msgstr ""
-#: g10/export.c:132
+#: g10/export.c:165
#, fuzzy, c-format
msgid "key %08lX: not a rfc2440 key - skipped\n"
msgstr "ÓÅËÒÅÔÎÙÊ ËÌÀÞ %08lX: ÎÅ ÉÍÅÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÏÔËÒÙÔÏÇÏ ËÌÀÞÁ.\n"
-#: g10/export.c:174
+#: g10/export.c:203
#, fuzzy
msgid "WARNING: nothing exported\n"
msgstr "÷îéíáîéå: éÓÐÏÌØÚÕÅÔÓÑ ËÌÀÞ Ë ËÏÔÏÒÏÍÕ ÎÅÔ ÄÏ×ÅÒÉÑ!\n"
#: g10/getkey.c:164
msgid "too many entries in pk cache - disabled\n"
msgstr ""
#: g10/getkey.c:294
msgid "too many entries in unk cache - disabled\n"
msgstr ""
#: g10/getkey.c:1038
#, c-format
msgid "using secondary key %08lX instead of primary key %08lX\n"
msgstr "ÉÓÐÏÌØÚÕÅÔÓÑ ÄÏÐÏÌÎÉÔÅÌØÎÙÊ ËÌÀÞ %09lX ×ÍÅÓÔÏ ÏÓÎÏ×ÎÏÇÏ %08lX%\n"
-#: g10/import.c:129 g10/trustdb.c:1180
+#: g10/import.c:117 g10/trustdb.c:1180
#, c-format
msgid "can't open file: %s\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ: %s\n"
-#: g10/import.c:148
+#: g10/import.c:165
#, c-format
msgid "skipping block of type %d\n"
msgstr "ÐÒÏÐÕÓËÁÅÍ ÂÌÏË ÔÉÐÁ %d\n"
-#: g10/import.c:155 g10/trustdb.c:1474 g10/trustdb.c:1543
+#: g10/import.c:172 g10/trustdb.c:1474 g10/trustdb.c:1543
#, c-format
msgid "%lu keys so far processed\n"
msgstr ""
-#: g10/import.c:160 g10/trustdb.c:1256
+#: g10/import.c:177 g10/trustdb.c:1256
#, c-format
msgid "read error: %s\n"
msgstr "ÏÛÉÂËÁ ÞÔÅÎÉÑ: %s\n"
-#: g10/import.c:162
+#: g10/import.c:179
#, c-format
msgid "Total number processed: %lu\n"
msgstr ""
-#: g10/import.c:164
+#: g10/import.c:181
#, c-format
msgid " w/o user IDs: %lu\n"
msgstr ""
-#: g10/import.c:166
+#: g10/import.c:183
#, c-format
msgid " imported: %lu"
msgstr ""
-#: g10/import.c:172
+#: g10/import.c:189
#, c-format
msgid " unchanged: %lu\n"
msgstr ""
-#: g10/import.c:174
+#: g10/import.c:191
#, c-format
msgid " new user IDs: %lu\n"
msgstr ""
-#: g10/import.c:176
+#: g10/import.c:193
#, c-format
msgid " new subkeys: %lu\n"
msgstr ""
-#: g10/import.c:178
+#: g10/import.c:195
#, fuzzy, c-format
msgid " new signatures: %lu\n"
msgstr "ËÌÀÞ %08lX: %d ÎÏ×ÙÈ ÐÏÄÐÉÓÅÊ\n"
-#: g10/import.c:180
+#: g10/import.c:197
#, c-format
msgid " new key revocations: %lu\n"
msgstr ""
-#: g10/import.c:182
+#: g10/import.c:199
#, c-format
msgid " secret keys read: %lu\n"
msgstr ""
-#: g10/import.c:184
+#: g10/import.c:201
#, fuzzy, c-format
msgid " secret keys imported: %lu\n"
msgstr "ËÌÀÞ %08lX: ÓÅËÒÅÔÎÙÊ ËÌÀÞ ÉÍÐÏÒÔÉÒÏ×ÁÎ\n"
-#: g10/import.c:186
+#: g10/import.c:203
#, fuzzy, c-format
msgid " secret keys unchanged: %lu\n"
msgstr "éÓÐÏÌØÚÏ×ÁÎ ÎÅÐÒÁ×ÉÌØÎÙÊ ÓÅËÒÅÔÎÙÊ ËÌÀÞ"
-#: g10/import.c:328 g10/import.c:520
+#: g10/import.c:343 g10/import.c:535
#, c-format
msgid "key %08lX: no user id\n"
msgstr "ËÌÀÞ %08lX: ÎÅÔ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
-#: g10/import.c:339
+#: g10/import.c:354
#, c-format
msgid "key %08lX: no valid user ids\n"
msgstr "ËÌÀÞ %08lX: ÎÅÔ ÄÏÐÕÓÔÉÍÙÈ ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ\n"
-#: g10/import.c:341
+#: g10/import.c:356
msgid "this may be caused by a missing self-signature\n"
msgstr "ÜÔÏ ÍÏÖÅÔ ÂÙÔØ ×ÙÚ×ÁÎÏ ÏÔÓÕÔÓÔ×ÉÅÍ ÓÁÍÏ-ÐÏÄÐÉÓÉ\n"
-#: g10/import.c:352 g10/import.c:588
+#: g10/import.c:367 g10/import.c:603
#, c-format
msgid "key %08lX: public key not found: %s\n"
msgstr "ËÌÀÞ %08lX: ÏÔËÒÙÔÙÊ ËÌÀÞ ÎÅ ÎÁÊÄÅÎ: %s\n"
-#: g10/import.c:358
+#: g10/import.c:373
msgid "no default public keyring\n"
msgstr "ÎÅÔ Ó×ÑÚËÉ ÏÔËÒÙÔÙÈ ËÌÀÞÅÊ ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
-#: g10/import.c:362 g10/openfile.c:105 g10/sign.c:205 g10/sign.c:592
+#: g10/import.c:377 g10/openfile.c:105 g10/sign.c:215 g10/sign.c:601
#, c-format
msgid "writing to `%s'\n"
msgstr "ÚÁÐÉÓÙ×ÁÅÔÓÑ × `%s'\n"
-#: g10/import.c:366 g10/import.c:426 g10/import.c:642
+#: g10/import.c:381 g10/import.c:441 g10/import.c:657
#, c-format
msgid "can't lock public keyring: %s\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÂÌÏËÉÒÏ×ÁÔØ Ó×ÑÚËÕ ÏÔËÒÙÔÙÈ ËÌÀÞÅÊ: %s\n"
-#: g10/import.c:369
+#: g10/import.c:384
#, c-format
msgid "can't write to keyring: %s\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ × Ó×ÑÚËÕ ËÌÀÞÅÊ: %s\n"
-#: g10/import.c:373
+#: g10/import.c:388
#, c-format
msgid "key %08lX: public key imported\n"
msgstr "ËÌÀÞ %08lX: ÏÔËÒÙÔÙÊ ËÌÀÞ ÉÍÐÏÒÔÉÒÏ×ÁÎ\n"
-#: g10/import.c:386
+#: g10/import.c:401
#, c-format
msgid "key %08lX: doesn't match our copy\n"
msgstr "ËÌÀÞ %08lX: ÎÅ ÓÏ×ÐÁÄÁÅÔ Ó ÎÁÛÅÊ ËÏÐÉÅÊ\n"
-#: g10/import.c:399 g10/import.c:597
+#: g10/import.c:414 g10/import.c:612
#, c-format
msgid "key %08lX: can't locate original keyblock: %s\n"
msgstr "ËÌÀÞ %08lX: ÎÅ×ÏÚÍÏÖÎÏ ÏÂÎÁÒÕÖÉÔØ original keyblock: %s\n"
-#: g10/import.c:406 g10/import.c:604
+#: g10/import.c:421 g10/import.c:619
#, c-format
msgid "key %08lX: can't read original keyblock: %s\n"
msgstr "ËÌÀÞ %08lX: ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ original keyblock: %s\n"
-#: g10/import.c:423 g10/import.c:535 g10/import.c:639
+#: g10/import.c:438 g10/import.c:550 g10/import.c:654
msgid "writing keyblock\n"
msgstr "ÚÁÐÉÓÙ×ÁÅÔÓÑ ÂÌÏË ËÌÀÞÁ\n"
-#: g10/import.c:429 g10/import.c:645
+#: g10/import.c:444 g10/import.c:660
#, c-format
msgid "can't write keyblock: %s\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ ÂÌÏË ËÌÀÞÁ: %s\n"
-#: g10/import.c:434
+#: g10/import.c:449
#, c-format
msgid "key %08lX: 1 new user-id\n"
msgstr "ËÌÀÞ %08lX: 1 ÎÏ×ÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
-#: g10/import.c:437
+#: g10/import.c:452
#, c-format
msgid "key %08lX: %d new user-ids\n"
msgstr "ËÌÀÞ %08lX: %d ÎÏ×ÙÈ ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ\n"
-#: g10/import.c:440
+#: g10/import.c:455
#, c-format
msgid "key %08lX: 1 new signature\n"
msgstr "ËÌÀÞ %08lX: 1 ÎÏ×ÁÑ ÐÏÄÐÉÓØ\n"
-#: g10/import.c:443
+#: g10/import.c:458
#, c-format
msgid "key %08lX: %d new signatures\n"
msgstr "ËÌÀÞ %08lX: %d ÎÏ×ÙÈ ÐÏÄÐÉÓÅÊ\n"
-#: g10/import.c:446
+#: g10/import.c:461
#, c-format
msgid "key %08lX: 1 new subkey\n"
msgstr "ËÌÀÞ %08lX: 1 ÎÏ×ÙÊ ÐÏÄ-ËÌÀÞ\n"
-#: g10/import.c:449
+#: g10/import.c:464
#, c-format
msgid "key %08lX: %d new subkeys\n"
msgstr "ËÌÀÞ %08lX: %d ÎÏ×ÙÈ ÐÏÄ-ËÌÀÞÅÊ\n"
-#: g10/import.c:459
+#: g10/import.c:474
#, c-format
msgid "key %08lX: not changed\n"
msgstr "ËÌÀÞ %08lX: ÎÅ ÉÚÍÅÎÅÎ\n"
-#: g10/import.c:538
+#: g10/import.c:553
#, c-format
msgid "can't lock secret keyring: %s\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÂÌÏËÉÒÏ×ÁÔØ Ó×ÑÚËÕ ÓÅËÒÅÔÎÙÈ ËÌÀÞÅÊ: %s\n"
-#: g10/import.c:541
+#: g10/import.c:556
#, fuzzy, c-format
msgid "can't write keyring: %s\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ Ó×ÑÚËÕ ËÌÀÞÅÊ: %s\n"
#. we are ready
-#: g10/import.c:544
+#: g10/import.c:559
#, c-format
msgid "key %08lX: secret key imported\n"
msgstr "ËÌÀÞ %08lX: ÓÅËÒÅÔÎÙÊ ËÌÀÞ ÉÍÐÏÒÔÉÒÏ×ÁÎ\n"
#. we can't merge secret keys
-#: g10/import.c:548
+#: g10/import.c:563
#, c-format
msgid "key %08lX: already in secret keyring\n"
msgstr "ËÌÀÞ %08lX: ÕÖÅ ÎÁ Ó×ÑÚËÅ ÓÅËÒÅÔÎÙÈ ËÌÀÞÅÊ\n"
-#: g10/import.c:553
+#: g10/import.c:568
#, c-format
msgid "key %08lX: secret key not found: %s\n"
msgstr "ËÌÀÞ %08lX: ÓÅËÒÅÔÎÙÊ ËÌÀÞ ÎÅ ÎÁÊÄÅÎ: %s\n"
-#: g10/import.c:582
+#: g10/import.c:597
#, c-format
msgid "key %08lX: no public key - can't apply revocation certificate\n"
msgstr ""
"ËÌÀÞ %08lX: ÎÅÔ ÏÔËÒÙÔÏÇÏ ËÌÀÞÁ - ÎÅ×ÏÚÍÏÖÎÏ ÐÒÉÍÅÎÉÔØ ÏÔÚÙ×ÁÀÝÉÊ "
"ÓÅÒÔÉÆÉËÁÔ\n"
-#: g10/import.c:615
+#: g10/import.c:630
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - rejected\n"
msgstr "ËÌÀÞ %08lX: ÎÅÄÏÐÕÓÔÉÍÙÊ ÏÔÚÙ×ÁÀÝÉÊ ÓÅÒÔÉÆÉËÁÔ: %s - ÏÔ×ÅÒÇÎÕÔ\n"
-#: g10/import.c:649
+#: g10/import.c:664
#, c-format
msgid "key %08lX: revocation certificate imported\n"
msgstr "ËÌÀÞ %08lX: ÏÔÚÙ×ÁÀÝÉÊ ÓÅÒÔÉÆÉËÁÔ ÉÍÐÏÒÔÉÒÏ×ÁÎ\n"
-#: g10/import.c:680
+#: g10/import.c:698
#, c-format
msgid "key %08lX: no user-id for signature\n"
msgstr "ËÌÀÞ %08lX: ÎÅÔ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ÐÏÄÐÉÓÉ\n"
-#: g10/import.c:687
+#: g10/import.c:705 g10/import.c:729
#, c-format
msgid "key %08lX: unsupported public key algorithm\n"
msgstr "ËÌÀÞ %08lX: ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÁÌÇÏÒÉÔÍ ÏÔËÒÙÔÏÇÏ ËÌÀÞÁ\n"
-#: g10/import.c:688
+#: g10/import.c:706
#, c-format
msgid "key %08lX: invalid self-signature\n"
msgstr "ËÌÀÞ %08lX: ÎÅÄÏÐÕÓÔÉÍÁÑ ÓÁÍÏ-ÐÏÄÐÉÓØ\n"
-#: g10/import.c:717
+#: g10/import.c:722
+#, fuzzy, c-format
+msgid "key %08lX: no subkey for key binding\n"
+msgstr "ËÌÀÞ %08lX: ÎÅÔ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
+
+#: g10/import.c:730
+#, fuzzy, c-format
+msgid "key %08lX: invalid subkey binding\n"
+msgstr "ËÌÀÞ %08lX: ÎÅÔ ÄÏÐÕÓÔÉÍÙÈ ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ\n"
+
+#: g10/import.c:761
#, c-format
msgid "key %08lX: skipped userid '"
msgstr "ËÌÀÞ %08lX: ÐÒÏÐÕÝÅÎ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ '"
-#: g10/import.c:740
+#: g10/import.c:781
+#, fuzzy, c-format
+msgid "key %08lX: skipped subkey\n"
+msgstr "ËÌÀÞ %08lX: 1 ÎÏ×ÙÊ ÐÏÄ-ËÌÀÞ\n"
+
+#: g10/import.c:800
#, c-format
msgid "key %08lX: revocation certificate at wrong place - skipped\n"
msgstr "ËÌÀÞ %08lX: ÏÔÚÙ×ÁÀÝÉÊ ÓÅÒÔÉÆÉËÁÔ × ÎÅÐÒÁ×ÉÌØÎÏÍ ÍÅÓÔÅ - ÐÒÏÐÕÝÅÎ\n"
-#: g10/import.c:748
+#: g10/import.c:808
#, c-format
msgid "key %08lX: invalid revocation certificate: %s - skipped\n"
msgstr "ËÌÀÞ %08lX: ÎÅÄÏÐÕÓÔÉÍÙÊ ÏÔÚÙ×ÁÀÝÉÊ ÓÅÒÔÉÆÉËÁÔ: %s - ÐÒÏÐÕÝÅÎ\n"
-#: g10/import.c:807
+#: g10/import.c:867
#, c-format
msgid "key %08lX: revocation certificate added\n"
msgstr "ËÌÀÞ %08lX: ÏÔÚÙ×ÁÀÝÉÊ ÓÅÒÔÉÆÉËÁÔ ÄÏÂÁ×ÌÅÎ\n"
-#: g10/import.c:921 g10/import.c:976
+#: g10/import.c:981 g10/import.c:1036
#, c-format
msgid "key %08lX: our copy has no self-signature\n"
msgstr "ËÌÀÞ %08lX: ÎÁÛÁ ËÏÐÉÑ ÎÅ ÉÍÅÅÔ ÓÁÍÏ-ÐÏÄÐÉÓÉ\n"
#: g10/keyedit.c:81
#, c-format
msgid "%s: user not found\n"
msgstr "%s: ÐÏÌØÚÏ×ÁÔÅÌØ ÎÅ ÎÁÊÄÅÎ\n"
#: g10/keyedit.c:164
#, fuzzy
msgid "[self-signature]"
msgstr "[ÓÁÍÏ-ÐÏÄÐÉÓØ]\n"
#: g10/keyedit.c:182
#, fuzzy
msgid "1 bad signature\n"
msgstr "1 ÐÌÏÈÁÑ ÐÏÄÐÉÓØ\n"
#: g10/keyedit.c:184
#, c-format
msgid "%d bad signatures\n"
msgstr "%d ÐÌÏÈÉÈ ÐÏÄÐÉÓÅÊ\n"
#: g10/keyedit.c:186
#, fuzzy
msgid "1 signature not checked due to a missing key\n"
msgstr "1 ÐÏÄÐÉÓØ ÎÅ ÐÒÏ×ÅÒÅÎÁ ÉÚ-ÚÁ ÏÔÓÕÔÓÔ×ÉÑ ËÌÀÞÁ\n"
#: g10/keyedit.c:188
#, fuzzy, c-format
msgid "%d signatures not checked due to missing keys\n"
msgstr "%s ÐÏÄÐÉÓÅÊ ÎÅ ÐÒÏ×ÅÒÅÎÏ ÉÚ-ÚÁ ÏÔÓÕÔÓÔ×ÉÑ ËÌÀÞÅÊ\n"
#: g10/keyedit.c:190
#, fuzzy
msgid "1 signature not checked due to an error\n"
msgstr "1 ÐÏÄÐÉÓØ ÎÅ ÐÒÏ×ÅÒÅÎÁ ÉÚ-ÚÁ ÏÛÉÂËÉ\n"
#: g10/keyedit.c:192
#, c-format
msgid "%d signatures not checked due to errors\n"
msgstr "%s ÐÏÄÐÉÓÅÊ ÎÅ ÐÒÏ×ÅÒÅÎÏ ÉÚ-ÚÁ ÏÛÉÂÏË\n"
#: g10/keyedit.c:194
#, fuzzy
msgid "1 user id without valid self-signature detected\n"
msgstr "ÏÂÎÁÒÕÖÅÎ 1 ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ ÂÅÚ ÄÏÐÕÓÔÉÍÏÊ ÓÁÍÏ-ÐÏÄÐÉÓÉ\n"
#: g10/keyedit.c:196
#, c-format
msgid "%d user ids without valid self-signatures detected\n"
msgstr ""
"ÏÂÎÁÒÕÖÅÎÏ %d ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ ÂÅÚ ÄÏÐÕÓÔÉÍÙÈ ÓÁÍÏ-ÐÏÄÐÉÓÅÊ\n"
#: g10/keyedit.c:258
#, fuzzy, c-format
msgid "Already signed by key %08lX\n"
msgstr "õÖÅ ÐÏÄÐÉÓÁÎÏ ËÌÀÞÏÍ %08lX.\n"
#: g10/keyedit.c:266
#, fuzzy, c-format
msgid "Nothing to sign with key %08lX\n"
msgstr "îÅÞÅÇÏ ÐÏÄÐÉÓÙ×ÁÔØ ËÌÀÞÁÍ %08lX\n"
#: g10/keyedit.c:275
#, fuzzy
msgid ""
"Are you really sure that you want to sign this key\n"
"with your key: \""
msgstr "÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ Õ×ÅÒÅÎÙ, ÞÔÏ ÈÏÔÉÔÅ ÐÏÄÐÉÓÁÔØ ÜÔÏÔ ËÌÀÞ Ó×ÏÉÍ:\n"
#: g10/keyedit.c:282
msgid "Really sign? "
msgstr "äÅÊÓÔ×ÉÔÅÌØÎÏ ÐÏÄÐÉÓÁÔØ? "
-#: g10/keyedit.c:303 g10/sign.c:65
+#: g10/keyedit.c:303 g10/sign.c:75
#, fuzzy, c-format
msgid "signing failed: %s\n"
msgstr "ÏÛÉÂËÁ ÐÏÄÐÉÓÙ×ÁÎÉÑ: %s\n"
#: g10/keyedit.c:356
msgid "This key is not protected.\n"
msgstr "üÔÏÔ ËÌÀÞ ÎÅ ÚÁÝÉÝÅÎ.\n"
#: g10/keyedit.c:359
msgid "Key is protected.\n"
msgstr "üÔÏÔ ËÌÀÞ ÚÁÝÉÝÅÎ.\n"
#: g10/keyedit.c:376
#, c-format
msgid "Can't edit this key: %s\n"
msgstr "îÅ×ÏÚÍÏÖÎÏ ÒÅÄÁËÔÉÒÏ×ÁÔØ ÜÔÏÔ ËÌÀÞ: %s\n"
#: g10/keyedit.c:381
msgid ""
"Enter the new passphrase for this secret key.\n"
"\n"
msgstr ""
"÷×ÅÄÉÔÅ ÎÏ×ÕÀ ËÌÀÞÅ×ÕÀ ÆÒÁÚÕ ÄÌÑ ÜÔÏÇÏ ÓÅËÒÅÔÎÏÇÏ ËÌÀÞÁ.\n"
"\n"
#: g10/keyedit.c:393
msgid ""
"You don't want a passphrase - this is probably a *bad* idea!\n"
"\n"
msgstr ""
"÷Ù ÎÅ ÈÏÔÉÔÅ ËÌÀÞÅ×ÕÀ ÆÒÁÚÕ - ÜÔÏ ÓËÏÒÅÅ ×ÓÅÇÏ *ÐÌÏÈÁÑ* ÉÄÅÑ!\n"
"\n"
#: g10/keyedit.c:396
msgid "Do you really want to do this? "
msgstr "÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÜÔÏÇÏ ÈÏÔÉÔÅ? "
#: g10/keyedit.c:455
msgid "moving a key signature to the correct place\n"
msgstr ""
#: g10/keyedit.c:490
msgid "quit"
msgstr "×ÙÈÏÄ"
#: g10/keyedit.c:490
msgid "quit this menu"
msgstr "×ÙÊÔÉ ÉÚ ÍÅÎÀ"
#: g10/keyedit.c:491
msgid "q"
msgstr ""
#: g10/keyedit.c:492
msgid "save"
msgstr "ÚÁÐÉÓÁÔØ"
#: g10/keyedit.c:492
msgid "save and quit"
msgstr "ÚÁÐÉÓÁÔØ É ×ÙÊÔÉ"
#: g10/keyedit.c:493
msgid "help"
msgstr "ÐÏÍÏÝØ"
#: g10/keyedit.c:493
msgid "show this help"
msgstr "ÐÏËÁÚÁÔØ ÐÏÍÏÝØ"
#: g10/keyedit.c:495
msgid "fpr"
msgstr ""
#: g10/keyedit.c:495
#, fuzzy
msgid "show fingerprint"
msgstr "ÐÏËÁÚÁÔØ \"ÏÔÐÅÞÁÔÏË ÐÁÌØÃÁ\""
#: g10/keyedit.c:496
#, fuzzy
msgid "list"
msgstr "ÓÐÉÓÏË"
#: g10/keyedit.c:496
#, fuzzy
msgid "list key and user ids"
msgstr "ÓÐÉÓÏË ËÌÀÞÅÊ É ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ"
#: g10/keyedit.c:497
msgid "l"
msgstr ""
#: g10/keyedit.c:498
msgid "uid"
msgstr ""
#: g10/keyedit.c:498
msgid "select user id N"
msgstr "×ÙÂÒÁÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ N"
#: g10/keyedit.c:499
msgid "key"
msgstr "ËÌÀÞ"
#: g10/keyedit.c:499
msgid "select secondary key N"
msgstr "×ÙÂÒÁÔØ ÄÏÐÏÌÎÉÔÅÌØÎÙÊ ËÌÀÞ N"
#: g10/keyedit.c:500
msgid "check"
msgstr "ÐÒÏ×ÅÒËÁ"
#: g10/keyedit.c:500
#, fuzzy
msgid "list signatures"
msgstr "ÓÐÉÓÏË ËÌÀÞÅÊ É ÉÈ ÐÏÄÐÉÓÅÊ"
#: g10/keyedit.c:501
msgid "c"
msgstr ""
#: g10/keyedit.c:502
msgid "sign"
msgstr "ÐÏÄÐÉÓÁÔØ"
#: g10/keyedit.c:502
#, fuzzy
msgid "sign the key"
msgstr "ÐÏÄÐÉÓÁÔØ ËÌÀÞ"
#: g10/keyedit.c:503
msgid "s"
msgstr ""
#: g10/keyedit.c:504
msgid "debug"
msgstr "ÏÔÌÁÄËÁ"
#: g10/keyedit.c:505
msgid "adduid"
msgstr ""
#: g10/keyedit.c:505
msgid "add a user id"
msgstr "ÄÏÂÁ×ÉÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ"
#: g10/keyedit.c:506
msgid "deluid"
msgstr ""
#: g10/keyedit.c:506
#, fuzzy
msgid "delete user id"
msgstr "ÕÄÁÌÉÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ"
#: g10/keyedit.c:507
msgid "addkey"
msgstr ""
#: g10/keyedit.c:507
#, fuzzy
msgid "add a secondary key"
msgstr "ÄÏÂÁ×ÉÔØ ÄÏÐÏÌÎÉÔÅÌØÎÙÊ ËÌÀÞ"
#: g10/keyedit.c:508
msgid "delkey"
msgstr ""
#: g10/keyedit.c:508
msgid "delete a secondary key"
msgstr "ÕÄÁÌÉÔØ ÄÏÐÏÌÎÉÔÅÌØÎÙÊ ËÌÀÞ"
#: g10/keyedit.c:509
msgid "expire"
msgstr ""
#: g10/keyedit.c:509
#, fuzzy
msgid "change the expire date"
msgstr "ÉÚÍÅÎÉÔØ ËÌÀÞÅ×ÕÀ ÆÒÁÚÕ"
#: g10/keyedit.c:510
msgid "toggle"
msgstr ""
#: g10/keyedit.c:510
msgid "toggle between secret and public key listing"
msgstr "ÐÅÒÅËÌÀÞÉÔØ ÍÅÖÄÕ ÓÐÉÓËÏÍ ÓÅËÒÅÔÎÙÈ É ÏÔËÒÙÔÙÈ ËÌÀÞÅÊ"
#: g10/keyedit.c:512
msgid "t"
msgstr ""
#: g10/keyedit.c:513
msgid "pref"
msgstr ""
#: g10/keyedit.c:513
msgid "list preferences"
msgstr ""
#: g10/keyedit.c:514
msgid "passwd"
msgstr ""
#: g10/keyedit.c:514
#, fuzzy
msgid "change the passphrase"
msgstr "ÉÚÍÅÎÉÔØ ËÌÀÞÅ×ÕÀ ÆÒÁÚÕ"
#: g10/keyedit.c:515
msgid "trust"
msgstr ""
#: g10/keyedit.c:515
msgid "change the ownertrust"
msgstr "ÉÚÍÅÎÉÔØ ÐÁÒÁÍÅÔÒÙ ÄÏ×ÅÒÉÑ"
#: g10/keyedit.c:534
msgid "can't do that in batchmode\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÄÅÌÁÔØ ÜÔÏ × ÐÁËÅÔÎÏÍ ÒÅÖÉÍÅ.\n"
#. check that they match
#. FIXME: check that they both match
#: g10/keyedit.c:561
#, fuzzy
msgid "Secret key is available.\n"
msgstr "éÍÅÅÔÓÑ ÓÅËÒÅÔÎÙÊ ËÌÀÞ.\n"
#: g10/keyedit.c:590
#, fuzzy
msgid "Command> "
msgstr "ëÏÍÁÎÄÁ> "
#: g10/keyedit.c:617
#, fuzzy
msgid "Need the secret key to do this.\n"
msgstr "þÔÏÂÙ ÜÔÏ ÓÄÅÌÁÔØ, ÎÕÖÅÎ ÓÅËÒÅÔÎÙÊ ËÌÀÞ.\n"
#: g10/keyedit.c:639
msgid "Save changes? "
msgstr "óÏÈÒÁÎÉÔØ ÉÚÍÅÎÅÎÉÑ? "
#: g10/keyedit.c:642
msgid "Quit without saving? "
msgstr "÷ÙÊÔÉ ÂÅÚ ÓÏÈÒÁÎÅÎÉÑ? "
#: g10/keyedit.c:652
#, fuzzy, c-format
msgid "update failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/keyedit.c:659
#, fuzzy, c-format
msgid "update secret failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÓÅËÒÅÔÁ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/keyedit.c:666
msgid "Key not changed so no update needed.\n"
msgstr "ëÌÀÞ ÎÅ ÉÚÍÅÎÉÌÓÑ, ÏÂÎÏ×ÌÅÎÉÅ ÎÅ ÎÕÖÎÏ.\n"
#: g10/keyedit.c:669 g10/keyedit.c:727
#, fuzzy, c-format
msgid "update of trustdb failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÂÁÚÙ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/keyedit.c:701
msgid "Really sign all user ids? "
msgstr "äÅÊÓÔ×ÉÔÅÌØÎÏ ÐÏÄÐÉÓÁÔØ ×ÓÅ ÉÄÅÎÔÉÆÉËÁÔÏÒÙ ÐÏÌØÚÏ×ÁÔÅÌÑ? "
#: g10/keyedit.c:702
msgid "Hint: Select the user ids to sign\n"
msgstr ""
"ðÏÄÓËÁÚËÁ: ×ÙÂÅÒÉÔÅ ÉÄÅÎÔÉÆÉËÁÔÏÒÙ ÐÏÌØÚÏ×ÁÔÅÌÑ ËÏÔÏÒÙÅ ÈÏÔÉÔÅ ÐÏÄÐÉÓÁÔØ\n"
#: g10/keyedit.c:738
msgid "You must select at least one user id.\n"
msgstr "÷Ù ÄÏÌÖÎÙ ×ÙÂÒÁÔØ ÈÏÔÑ ÂÙ ÏÄÉÎ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ.\n"
#: g10/keyedit.c:740
msgid "You can't delete the last user id!\n"
msgstr "÷Ù ÎÅ ÍÏÖÅÔÅ ÕÄÁÌÉÔØ ÐÏÓÌÅÄÎÉÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ!\n"
#: g10/keyedit.c:743
#, fuzzy
msgid "Really remove all selected user ids? "
msgstr "äÅÊÓÔ×ÉÔÅÌØÎÏ ÕÄÁÌÉÔØ ×ÓÅ ×ÙÂÒÁÎÎÙÅ ÉÄÅÎÔÉÆÉËÁÔÏÒÙ ÐÏÌØÚÏ×ÁÔÅÌÑ? "
#: g10/keyedit.c:744
#, fuzzy
msgid "Really remove this user id? "
msgstr "äÅÊÓÔ×ÉÔÅÌØÎÏ ÕÄÁÌÉÔØ ÜÔÏÔ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ? "
#: g10/keyedit.c:767
msgid "You must select at least one key.\n"
msgstr "÷Ù ÄÏÌÖÎÙ ×ÙÂÒÁÔØ ÈÏÔÑ ÂÙ ÏÄÉÎ ËÌÀÞ.\n"
#: g10/keyedit.c:771
#, fuzzy
msgid "Do you really want to delete the selected keys? "
msgstr "÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ×ÙÂÒÁÎÎÙÅ ËÌÀÞÉ? "
#: g10/keyedit.c:772
#, fuzzy
msgid "Do you really want to delete this key? "
msgstr "÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ÜÔÏÔ ËÌÀÞ? "
#: g10/keyedit.c:819
msgid "Invalid command (try \"help\")\n"
msgstr "îÅÄÏÐÕÓÔÉÍÁÑ ËÏÍÁÎÄÁ (ÐÏÐÒÏÂÕÊÔÅ \"help\")\n"
#: g10/keyedit.c:1197
msgid "Please remove selections from the secret keys.\n"
msgstr ""
#: g10/keyedit.c:1203
#, fuzzy
msgid "Please select at most one secondary key.\n"
msgstr "÷Ù ÄÏÌÖÎÙ ×ÙÂÒÁÔØ ÈÏÔÑ ÂÙ ÏÄÉÎ ËÌÀÞ.\n"
#: g10/keyedit.c:1207
msgid "Changing exiration time for a secondary key.\n"
msgstr ""
#: g10/keyedit.c:1209
msgid "Changing exiration time for the primary key.\n"
msgstr ""
#: g10/keyedit.c:1250
msgid "You can't change the expiration date of a v3 key\n"
msgstr ""
#: g10/keyedit.c:1266
msgid "No corresponding signature in secret ring\n"
msgstr ""
#: g10/keyedit.c:1326
#, c-format
msgid "No user id with index %d\n"
msgstr "îÅÔ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ÐÏÌØÚÏ×ÁÔÅÌÑ Ó ÉÎÄÅËÓÏÍ %d\n"
#: g10/keyedit.c:1371
#, c-format
msgid "No secondary key with index %d\n"
msgstr "îÅÔ ÄÏÐÏÌÎÉÔÅÌØÎÏÇÏ ËÌÀÞÁ Ó ÉÎÄÅËÓÏÍ %d\n"
-#: g10/mainproc.c:198
+#: g10/mainproc.c:199
#, fuzzy
msgid "public key encrypted data: good DEK\n"
msgstr "ÒÁÓÛÉÆÒÏ×ËÁ ÏÔËÒÙÔÙÍ ËÌÀÞÏÍ ÎÅ ÕÄÁÌÁÓØ %s\n"
-#: g10/mainproc.c:201
+#: g10/mainproc.c:202
#, c-format
msgid "public key decryption failed: %s\n"
msgstr "ÒÁÓÛÉÆÒÏ×ËÁ ÏÔËÒÙÔÙÍ ËÌÀÞÏÍ ÎÅ ÕÄÁÌÁÓØ %s\n"
-#: g10/mainproc.c:228
+#: g10/mainproc.c:229
#, fuzzy
msgid "decryption okay\n"
msgstr "ÒÁÓÛÉÆÒÏ×ËÁ ÎÅ ÕÄÁÌÁÓØ: %s\n"
-#: g10/mainproc.c:231
+#: g10/mainproc.c:232
#, c-format
msgid "decryption failed: %s\n"
msgstr "ÒÁÓÛÉÆÒÏ×ËÁ ÎÅ ÕÄÁÌÁÓØ: %s\n"
-#: g10/mainproc.c:248
+#: g10/mainproc.c:249
#, fuzzy
msgid "NOTE: sender requested \"for-your-eyes-only\"\n"
msgstr "ÚÁÍÅÞÁÎÉÅ: ÏÔÐÒÁ×ÉÔÅÌØ ÚÁÐÒÏÓÉÌ \"ÔÏÌØËÏ-ÄÌÑ-÷ÁÛÉÈ-ÇÌÁÚ\"\n"
-#: g10/mainproc.c:250
+#: g10/mainproc.c:251
#, c-format
msgid "original file name='%.*s'\n"
msgstr ""
-#: g10/mainproc.c:833
+#: g10/mainproc.c:834
msgid "signature verification suppressed\n"
msgstr ""
-#: g10/mainproc.c:839
+#: g10/mainproc.c:840
#, c-format
msgid "Signature made %.*s using %s key ID %08lX\n"
msgstr "ðÏÄÐÉÓØ ÓÄÅÌÁÎÁ %.*s, ÉÓÐÏÌØÚÕÑ %s ËÌÀÞ %08lX\n"
-#: g10/mainproc.c:847
+#: g10/mainproc.c:852
msgid "BAD signature from \""
msgstr "ðìïèáñ ÐÏÄÐÉÓØ ÏÔ \""
-#: g10/mainproc.c:848
+#: g10/mainproc.c:853
msgid "Good signature from \""
msgstr "èÏÒÏÛÁÑ ÐÏÄÐÉÓØ ÏÔ \""
-#: g10/mainproc.c:879
+#: g10/mainproc.c:884
#, c-format
msgid "Can't check signature: %s\n"
msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏ×ÅÒÉÔØ ÐÏÄÐÉÓØ: %s\n"
-#: g10/mainproc.c:952
+#: g10/mainproc.c:957
msgid "old style (PGP 2.x) signature\n"
msgstr ""
-#: g10/mainproc.c:957
+#: g10/mainproc.c:962
msgid "invalid root packet detected in proc_tree()\n"
msgstr ""
#: g10/misc.c:90
#, fuzzy, c-format
msgid "can't disable core dumps: %s\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ `%s': %s\n"
#: g10/misc.c:93
msgid "WARNING: program may create a core file!\n"
msgstr ""
#: g10/misc.c:200
msgid "Experimental algorithms should not be used!\n"
msgstr ""
#: g10/misc.c:214
msgid ""
"RSA keys are deprecated; please consider creating a new key and use this key "
"in the future\n"
msgstr ""
"ðÏÌØÚÏ×ÁÎÉÅ RSA ËÌÀÞÁÍÉ ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ, ÐÏÖÁÌÕÊÓÔÁ, ÐÏÄÕÍÁÊÔÅ Ï ÓÏÚÄÁÎÉÉ\n"
"ÎÏ×ÏÇÏ ËÌÀÞÁ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × ÂÕÄÕÝÅÍ\n"
#: g10/misc.c:235
msgid "this cipher algorithm is depreciated; please use a more standard one!\n"
msgstr ""
#: g10/parse-packet.c:113
#, fuzzy, c-format
msgid "can't handle public key algorithm %d\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÂÌÏËÉÒÏ×ÁÔØ Ó×ÑÚËÕ ÏÔËÒÙÔÙÈ ËÌÀÞÅÊ: %s\n"
#: g10/parse-packet.c:892
#, c-format
msgid "subpacket of type %d has critical bit set\n"
msgstr ""
#: g10/passphrase.c:141
msgid ""
"\n"
"You need a passphrase to unlock the secret key for\n"
"user: \""
msgstr ""
"\n"
"÷ÁÍ ÎÕÖÎÁ ËÌÀÞÅ×ÁÑ ÆÒÁÚÁ, ÞÔÏÂÙ ÏÔÏÍËÎÕÔØ ËÌÀÞ\n"
"ÐÏÌØÚÏ×ÁÔÅÌÑ: \""
#: g10/passphrase.c:150
#, fuzzy, c-format
msgid "%u-bit %s key, ID %08lX, created %s"
msgstr "(%u-ÂÉÔ %s ËÌÀÞ, ID %08lX, ÓÏÚÄÁÎ %s)\n"
#: g10/passphrase.c:155
#, c-format
msgid " (main key ID %08lX)"
msgstr ""
#: g10/passphrase.c:183
#, fuzzy
msgid "Enter passphrase: "
msgstr "÷×ÅÄÉÔÅ ËÌÀÞÅ×ÕÀ ÆÒÁÚÕ: %s\n"
#: g10/passphrase.c:187
#, fuzzy
msgid "Repeat passphrase: "
msgstr "ðÏ×ÔÏÒÉÔÅ ËÌÀÞÅ×ÕÀ ÆÒÁÚÕ: %s\n"
#: g10/plaintext.c:63
msgid "data not saved; use option \"--output\" to save it\n"
msgstr "ÄÁÎÎÙÅ ÎÅ ÂÙÌÉ ÓÏÈÒÁÎÅÎÙ; ×ÏÓÐÏÌØÚÕÊÔÅÓØ --\"output\" ÄÌÑ ÓÏÈÒÁÎÅÎÉÑ\n"
-#: g10/plaintext.c:166
+#: g10/plaintext.c:208
msgid "Please enter name of data file: "
msgstr "ðÏÖÁÌÕÊÓÔÁ, ××ÅÄÉÔÅ ÉÍÑ ÆÁÊÌÁ ÄÁÎÎÙÈ: "
-#: g10/plaintext.c:187
+#: g10/plaintext.c:229
msgid "reading stdin ...\n"
msgstr ""
-#: g10/plaintext.c:250
+#: g10/plaintext.c:292
#, c-format
msgid "can't open signed data `%s'\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÐÏÄÐÉÓÁÎÎÙÅ ÄÁÎÎÙÅ `%s' .\n"
#: g10/pubkey-enc.c:78
#, c-format
msgid "anonymous receiver; trying secret key %08lX ...\n"
msgstr "ÁÎÏÎÉÍÎÙÊ ÐÏÌÕÞÁÔÅÌØ, ÐÒÏÂÕÅÍ ÓÅËÒÅÔÎÙÊ ËÌÀÞ %08lX ...\n"
#: g10/pubkey-enc.c:84
#, fuzzy
msgid "okay, we are the anonymous recipient.\n"
msgstr "ïË, ÍÙ -- ÁÎÏÎÉÍÎÙÊ ÐÏÌÕÞÁÔÅÌØ.\n"
#: g10/pubkey-enc.c:136
#, fuzzy
msgid "old encoding of the DEK is not supported\n"
msgstr "ÁÌÇÏÒÉÔÍ ÚÁÝÉÔÙ %d ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ\n"
#: g10/pubkey-enc.c:183
#, fuzzy, c-format
msgid "NOTE: cipher algorithm %d not found in preferences\n"
msgstr "ÚÁÍÅÞÁÎÉÅ: ÛÉÆÒÏ×ÁÌØÎÙÊ ÁÌÇÏÒÉÔÍ %d ÎÅ ÎÁÊÄÅÎ × ÐÒÅÄÐÏÞÔÅÎÉÑÈ\n"
#: g10/seckey-cert.c:56
#, fuzzy, c-format
msgid "protection algorithm %d is not supported\n"
msgstr "ÁÌÇÏÒÉÔÍ ÚÁÝÉÔÙ %d ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ\n"
#: g10/seckey-cert.c:176
msgid "Invalid passphrase; please try again ...\n"
msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ËÌÀÞÅ×ÁÑ ÆÒÁÚÁ, ÐÏÐÒÏÂÕÊÔÅ ÓÎÏ×Á ...\n"
#: g10/seckey-cert.c:223
#, fuzzy
msgid "WARNING: Weak key detected - please change passphrase again.\n"
msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÏÂÎÁÒÕÖÅÎ ÓÌÁÂÙÊ ËÌÀÞ - ÓÍÅÎÉÔÅ ËÌÀÞÅ×ÕÀ ÆÒÁÚÕ.\n"
#: g10/sig-check.c:155
msgid ""
"this is a PGP generated ElGamal key which is NOT secure for signatures!\n"
msgstr "ÜÔÏÔ ElGamal ËÌÀÞ, ÓÏÚÄÁÎÎÙÊ PGP, ÎÅ ÎÁÄÅÖÅÎ ÄÌÑ ÓÏÚÄÁÎÉÑ ÐÏÄÐÉÓÅÊ!\n"
-#: g10/sig-check.c:166
+#: g10/sig-check.c:163
#, fuzzy, c-format
-msgid "public key created %lu %s in future (time warp or clock problem)\n"
-msgstr ""
-"ÏÔËÒÙÔÙÊ ËÌÀÞ ÓÇÅÎÅÒÉÒÏ×ÁÎ × ÂÕÄÕÝÅÍ (ÉÓËÒÉ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÌÉ ÎÅÐÒÁ×ÉÌØÎÏ "
-"ÕÓÔÁÎÏ×ÌÅÎÙ ÞÁÓÙ)\n"
-
-#: g10/sig-check.c:168
-msgid "second"
-msgstr ""
+msgid "public key is %lu second newer than the signature\n"
+msgstr "ËÌÀÞ %08lX: ÎÅÔ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ÐÏÄÐÉÓÉ\n"
-#: g10/sig-check.c:168
-msgid "seconds"
-msgstr ""
+#: g10/sig-check.c:164
+#, fuzzy, c-format
+msgid "public key is %lu seconds newer than the signature\n"
+msgstr "ËÌÀÞ %08lX: ÎÅÔ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ÐÏÄÐÉÓÉ\n"
-#: g10/sig-check.c:173
+#: g10/sig-check.c:180
#, fuzzy, c-format
msgid "NOTE: signature key expired %s\n"
msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ËÌÀÞ ÐÏÄÐÉÓÉ ÕÓÔÁÒÅÌ %s\n"
-#: g10/sig-check.c:230
+#: g10/sig-check.c:237
msgid "assuming bad signature due to an unknown critical bit\n"
msgstr ""
-#: g10/sign.c:69
+#: g10/sign.c:79
#, fuzzy, c-format
msgid "%s signature from: %s\n"
msgstr "ðìïèáñ ÐÏÄÐÉÓØ ÏÔ \""
-#: g10/sign.c:200 g10/sign.c:587
+#: g10/sign.c:210 g10/sign.c:596
#, fuzzy, c-format
msgid "can't create %s: %s\n"
msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s\n"
-#: g10/sign.c:296
+#: g10/sign.c:306
#, fuzzy
msgid "signing:"
msgstr "ÐÏÄÐÉÓÁÔØ"
-#: g10/sign.c:336
+#: g10/sign.c:346
#, fuzzy, c-format
msgid "WARNING: `%s' is an empty file\n"
msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÕÓÔÏÊ ÆÁÊÌ.\n"
+#: g10/textfilter.c:199
+#, c-format
+msgid "can't handle text lines longer than %d characters\n"
+msgstr ""
+
#: g10/tdbio.c:116 g10/tdbio.c:1418
#, fuzzy, c-format
msgid "trustdb rec %lu: lseek failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÓÅËÒÅÔÁ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/tdbio.c:122 g10/tdbio.c:1425
#, c-format
msgid "trustdb rec %lu: write failed (n=%d): %s\n"
msgstr ""
#: g10/tdbio.c:232
msgid "trustdb transaction too large\n"
msgstr ""
#: g10/tdbio.c:416
#, fuzzy, c-format
msgid "%s: can't access: %s\n"
msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s\n"
#: g10/ringedit.c:273 g10/tdbio.c:436
#, fuzzy, c-format
msgid "%s: can't create directory: %s\n"
msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s\n"
#: g10/ringedit.c:279 g10/tdbio.c:439
#, fuzzy, c-format
msgid "%s: directory created\n"
msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s\n"
#: g10/tdbio.c:443
#, c-format
msgid "%s: directory does not exist!\n"
msgstr ""
-#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1275 g10/tdbio.c:449
+#: g10/openfile.c:101 g10/openfile.c:165 g10/ringedit.c:1292 g10/tdbio.c:449
#, fuzzy, c-format
msgid "%s: can't create: %s\n"
msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s\n"
#: g10/tdbio.c:473
#, c-format
msgid "%s: failed to create version record: %s"
msgstr ""
#: g10/tdbio.c:477
#, fuzzy, c-format
msgid "%s: invalid trustdb created\n"
msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s\n"
#: g10/tdbio.c:479
#, fuzzy, c-format
msgid "%s: trustdb created\n"
msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s\n"
#: g10/tdbio.c:512
#, fuzzy, c-format
msgid "%s: invalid trustdb\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÂÁÚÙ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/tdbio.c:545
#, fuzzy, c-format
msgid "%s: failed to create hashtable: %s\n"
msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s\n"
#: g10/tdbio.c:553
#, fuzzy, c-format
msgid "%s: error updating version record: %s\n"
msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
#: g10/tdbio.c:569 g10/tdbio.c:608 g10/tdbio.c:633 g10/tdbio.c:1351
#: g10/tdbio.c:1378
#, fuzzy, c-format
msgid "%s: error reading version record: %s\n"
msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
#: g10/tdbio.c:582
#, fuzzy, c-format
msgid "%s: error writing version record: %s\n"
msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
#: g10/tdbio.c:1058
#, fuzzy, c-format
msgid "trustdb: lseek failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÓÅËÒÅÔÁ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/tdbio.c:1066
#, fuzzy, c-format
msgid "trustdb: read failed (n=%d): %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÂÁÚÙ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/tdbio.c:1087
#, fuzzy, c-format
msgid "%s: not a trustdb file\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÂÁÚÙ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/tdbio.c:1103
#, c-format
msgid "%s: version record with recnum %lu\n"
msgstr ""
#: g10/tdbio.c:1108
#, fuzzy, c-format
msgid "%s: invalid file version %d\n"
msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÎÁÞÁÌÏ ÔÅËÓÔÏ×ÏÊ ÐÏÄÐÉÓÉ\n"
#: g10/tdbio.c:1384
#, fuzzy, c-format
msgid "%s: error reading free record: %s\n"
msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
#: g10/tdbio.c:1392
#, fuzzy, c-format
msgid "%s: error writing dir record: %s\n"
msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
#: g10/tdbio.c:1402
#, c-format
msgid "%s: failed to zero a record: %s\n"
msgstr ""
#: g10/tdbio.c:1432
#, c-format
msgid "%s: failed to append a record: %s\n"
msgstr ""
#: g10/trustdb.c:142
#, fuzzy
msgid "The trustdb is corrupted; please run \"gpgm --fix-trustdb\".\n"
msgstr "âÁÚÁ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ ÒÁÚÒÕÛÅÎÁ: ÚÁÐÕÓÔÉÔÅ \"gpgm --fix-trust-db\".\n"
#: g10/trustdb.c:155
#, c-format
msgid "trust record %lu, req type %d: read failed: %s\n"
msgstr ""
#: g10/trustdb.c:170
#, c-format
msgid "trust record %lu, type %d: write failed: %s\n"
msgstr ""
#: g10/trustdb.c:184
#, fuzzy, c-format
msgid "trust record %lu: delete failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÓÅËÒÅÔÁ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/trustdb.c:198
#, fuzzy, c-format
msgid "trustdb: sync failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÂÁÚÙ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/trustdb.c:327
#, fuzzy, c-format
msgid "error reading dir record for LID %lu: %s\n"
msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
#: g10/trustdb.c:334
#, c-format
msgid "lid %lu: expected dir record, got type %d\n"
msgstr ""
#: g10/trustdb.c:339
#, c-format
msgid "no primary key for LID %lu\n"
msgstr ""
#: g10/trustdb.c:344
#, fuzzy, c-format
msgid "error reading primary key for LID %lu: %s\n"
msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
#: g10/trustdb.c:420
#, c-format
msgid "chained sigrec %lu has a wrong owner\n"
msgstr ""
#: g10/trustdb.c:463
#, fuzzy, c-format
msgid "'%s' is not a valid long keyID\n"
msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÓÉÍ×ÏÌ × ËÏÍÍÅÎÔÁÒÉÉ.\n"
#: g10/trustdb.c:498
#, fuzzy, c-format
msgid "key %08lX: no public key for trusted key - skipped\n"
msgstr "ÓÅËÒÅÔÎÙÊ ËÌÀÞ %08lX: ÎÅ ÉÍÅÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÏÔËÒÙÔÏÇÏ ËÌÀÞÁ.\n"
#: g10/trustdb.c:507 g10/trustdb.c:565
#, fuzzy, c-format
msgid "key %08lX: can't put it into the trustdb\n"
msgstr "ËÌÀÞ %08lX.%lu: ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÏÖÉÔØ × ÂÁÚÕ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ\n"
#: g10/trustdb.c:512 g10/trustdb.c:571
#, fuzzy, c-format
msgid "key %08lX: query record failed\n"
msgstr "ËÌÀÞ %08lX: ÚÁÐÒÏÓ ÚÁÐÉÓÉ ÎÅ ÕÄÁÌÓÑ\n"
#: g10/trustdb.c:517 g10/trustdb.c:580
#, fuzzy, c-format
msgid "key %08lX: already in trusted key table\n"
msgstr "ËÌÀÞ %08lX: ÕÖÅ ÎÁ Ó×ÑÚËÅ ÓÅËÒÅÔÎÙÈ ËÌÀÞÅÊ\n"
#: g10/trustdb.c:520 g10/trustdb.c:583
#, fuzzy, c-format
msgid "key %08lX: accepted as trusted key.\n"
msgstr "ËÌÀÞ %08lX: ÕÖÅ ÎÁ Ó×ÑÚËÅ ÓÅËÒÅÔÎÙÈ ËÌÀÞÅÊ\n"
#: g10/trustdb.c:536
#, fuzzy, c-format
msgid "NOTE: secret key %08lX is NOT protected.\n"
msgstr "üÔÏÔ ËÌÀÞ ÎÅ ÚÁÝÉÝÅÎ.\n"
#: g10/trustdb.c:548
#, fuzzy, c-format
msgid "key %08lX: secret key without public key - skipped\n"
msgstr "ÓÅËÒÅÔÎÙÊ ËÌÀÞ %08lX: ÎÅ ÉÍÅÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÏÔËÒÙÔÏÇÏ ËÌÀÞÁ.\n"
#: g10/trustdb.c:555
#, c-format
msgid "key %08lX: secret and public key don't match\n"
msgstr "ËÌÀÞ %08lX: ÓÅËÒÅÔÎÙÊ É ÏÔËÒÙÔÏÇÏ ËÌÀÞÉ ÎÅ ÓÏ×ÐÁÄÁÀÔ.\n"
#: g10/trustdb.c:591
#, fuzzy, c-format
msgid "enumerate secret keys failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÓÅËÒÅÔÁ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/trustdb.c:774
#, fuzzy, c-format
msgid "lid %lu: read dir record failed: %s\n"
msgstr "ËÌÀÞ %08lX.%lu: ×ÓÔÁ×ËÁ ÄÏ×ÅÒÉÔÅÌØÎÏÊ ÚÁÐÉÓÉ ÎÅ ÕÄÁÌÁÓØ: %s\n"
#: g10/trustdb.c:783
#, fuzzy, c-format
msgid "lid %lu: read key record failed: %s\n"
msgstr "ËÌÀÞ %08lX.%lu: ×ÓÔÁ×ËÁ ÄÏ×ÅÒÉÔÅÌØÎÏÊ ÚÁÐÉÓÉ ÎÅ ÕÄÁÌÁÓØ: %s\n"
#: g10/trustdb.c:793
#, fuzzy, c-format
msgid "lid %lu: read uid record failed: %s\n"
msgstr "ËÌÀÞ %08lX.%lu: ×ÓÔÁ×ËÁ ÄÏ×ÅÒÉÔÅÌØÎÏÊ ÚÁÐÉÓÉ ÎÅ ÕÄÁÌÁÓØ: %s\n"
#: g10/trustdb.c:802
#, fuzzy, c-format
msgid "lid %lu: read pref record failed: %s\n"
msgstr "ËÌÀÞ %08lX.%lu: ×ÓÔÁ×ËÁ ÄÏ×ÅÒÉÔÅÌØÎÏÊ ÚÁÐÉÓÉ ÎÅ ÕÄÁÌÁÓØ: %s\n"
#: g10/trustdb.c:812
#, fuzzy, c-format
msgid "lid %lu: read sig record failed: %s\n"
msgstr "ËÌÀÞ %08lX.%lu: ×ÓÔÁ×ËÁ ÄÏ×ÅÒÉÔÅÌØÎÏÊ ÚÁÐÉÓÉ ÎÅ ÕÄÁÌÁÓØ: %s\n"
#: g10/trustdb.c:1013
msgid "Ooops, no keys\n"
msgstr ""
#: g10/trustdb.c:1017
#, fuzzy
msgid "Ooops, no user ids\n"
msgstr "ÓÐÉÓÏË ËÌÀÞÅÊ É ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ"
#: g10/trustdb.c:1088 g10/trustdb.c:1106
#, fuzzy, c-format
msgid "user '%s' read problem: %s\n"
msgstr "%s: ÐÏÌØÚÏ×ÁÔÅÌØ ÎÅ ÎÁÊÄÅÎ\n"
#: g10/trustdb.c:1091 g10/trustdb.c:1109
#, fuzzy, c-format
msgid "user '%s' list problem: %s\n"
msgstr "%s: ÐÏÌØÚÏ×ÁÔÅÌØ ÎÅ ÎÁÊÄÅÎ\n"
#: g10/trustdb.c:1099 g10/trustdb.c:1346
#, fuzzy, c-format
msgid "user '%s' not found: %s\n"
msgstr "%s: ÐÏÌØÚÏ×ÁÔÅÌØ ÎÅ ÎÁÊÄÅÎ\n"
#: g10/trustdb.c:1101 g10/trustdb.c:1348
#, fuzzy, c-format
msgid "problem finding '%s' in trustdb: %s\n"
msgstr "ïÛÉÂËÁ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÂÁÚÙ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ: %s\n"
#: g10/trustdb.c:1104
#, fuzzy, c-format
msgid "user '%s' not in trustdb\n"
msgstr "%s: ÐÏÌØÚÏ×ÁÔÅÌØ ÎÅ ÎÁÊÄÅÎ\n"
#: g10/trustdb.c:1139
#, c-format
msgid ""
"# List of assigned trustvalues, created %s\n"
"# (Use \"gpgm --import-ownertrust\" to restore them)\n"
msgstr ""
#: g10/trustdb.c:1145
msgid "directory record w/o primary key\n"
msgstr ""
#: g10/trustdb.c:1152
#, fuzzy, c-format
msgid "error reading key record: %s\n"
msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
#: g10/trustdb.c:1192
msgid "line too long\n"
msgstr ""
#: g10/trustdb.c:1200
msgid "error: missing colon\n"
msgstr ""
#: g10/trustdb.c:1205
#, fuzzy
msgid "error: invalid fingerprint\n"
msgstr "ÏÛÉÂËÁ × ÚÁ×ÅÒÛÁÀÝÅÊ ÓÔÒÏËÅ\n"
#: g10/trustdb.c:1209
#, fuzzy
msgid "error: no ownertrust value\n"
msgstr "ÜËÓÐÏÒÔÉÒÏ×ÁÔØ ÐÁÒÁÍÅÔÒÙ ÄÏ×ÅÒÉÑ\n"
#: g10/trustdb.c:1234
msgid "key not in trustdb, searching ring.\n"
msgstr ""
#: g10/trustdb.c:1237
#, fuzzy, c-format
msgid "key not in ring: %s\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ Ó×ÑÚËÕ ËÌÀÞÅÊ: %s\n"
#: g10/trustdb.c:1241
msgid "Oops: key is now in trustdb???\n"
msgstr ""
#. update the ownertrust
#: g10/trustdb.c:1246
#, fuzzy, c-format
msgid "insert trust record failed: %s\n"
msgstr "ËÌÀÞ %08lX.%lu: ×ÓÔÁ×ËÁ ÄÏ×ÅÒÉÔÅÌØÎÏÊ ÚÁÐÉÓÉ ÎÅ ÕÄÁÌÁÓØ: %s\n"
#. error
#: g10/trustdb.c:1252
#, fuzzy, c-format
msgid "error finding dir record: %s\n"
msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
#: g10/trustdb.c:1351
#, fuzzy, c-format
msgid "user '%s' not in trustdb - inserting\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÂÁÚÙ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/trustdb.c:1354
#, fuzzy, c-format
msgid "failed to put '%s' into trustdb: %s\n"
msgstr "ïÛÉÂËÁ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÂÁÚÙ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ: %s\n"
#: g10/trustdb.c:1404
#, c-format
msgid "%s: keyblock read problem: %s\n"
msgstr ""
#: g10/trustdb.c:1418
#, fuzzy, c-format
msgid "%s: update failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/trustdb.c:1421
#, c-format
msgid "%s: updated\n"
msgstr ""
#: g10/trustdb.c:1423
#, c-format
msgid "%s: okay\n"
msgstr ""
#: g10/trustdb.c:1438
#, c-format
msgid "lid %lu: dir record w/o key - skipped\n"
msgstr ""
#: g10/trustdb.c:1451
#, fuzzy, c-format
msgid "lid %lu: keyblock not found: %s\n"
msgstr "ËÌÀÞ %08lX: ÏÔËÒÙÔÙÊ ËÌÀÞ ÎÅ ÎÁÊÄÅÎ: %s\n"
#: g10/trustdb.c:1460 g10/trustdb.c:1529
#, fuzzy, c-format
msgid "lid %lu: update failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/trustdb.c:1466 g10/trustdb.c:1535
#, c-format
msgid "lid %lu: updated\n"
msgstr ""
#: g10/trustdb.c:1470 g10/trustdb.c:1539
#, c-format
msgid "lid %lu: okay\n"
msgstr ""
#: g10/trustdb.c:1477 g10/trustdb.c:1545
#, c-format
msgid "%lu keys processed\n"
msgstr ""
#: g10/trustdb.c:1479
#, fuzzy, c-format
msgid "\t%lu keys skipped\n"
msgstr "%s: ÐÒÏÐÕÝÅÎ: %s\n"
#: g10/trustdb.c:1481 g10/trustdb.c:1547
#, fuzzy, c-format
msgid "\t%lu keys with errors\n"
msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ ÆÁÊÌÁ"
#: g10/trustdb.c:1483 g10/trustdb.c:1549
#, c-format
msgid "\t%lu keys updated\n"
msgstr ""
#: g10/trustdb.c:1513
#, fuzzy, c-format
msgid "lid ?: insert failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÓÅËÒÅÔÁ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/trustdb.c:1518
#, fuzzy, c-format
msgid "lid %lu: insert failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÓÅËÒÅÔÁ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/trustdb.c:1524
#, c-format
msgid "lid %lu: inserted\n"
msgstr ""
#: g10/trustdb.c:1551
#, c-format
msgid "\t%lu keys inserted\n"
msgstr ""
#: g10/trustdb.c:1554
#, fuzzy, c-format
msgid "enumerate keyblocks failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÓÅËÒÅÔÁ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/trustdb.c:1599
#, fuzzy, c-format
msgid "check_trust: search dir record failed: %s\n"
msgstr "ËÌÀÞ %08lX.%lu: ×ÓÔÁ×ËÁ ÄÏ×ÅÒÉÔÅÌØÎÏÊ ÚÁÐÉÓÉ ÎÅ ÕÄÁÌÁÓØ: %s\n"
#: g10/trustdb.c:1606
#, fuzzy, c-format
msgid "key %08lX: insert trust record failed: %s\n"
msgstr "ËÌÀÞ %08lX.%lu: ×ÓÔÁ×ËÁ ÄÏ×ÅÒÉÔÅÌØÎÏÊ ÚÁÐÉÓÉ ÎÅ ÕÄÁÌÁÓØ: %s\n"
#: g10/trustdb.c:1610
#, c-format
msgid "key %08lX.%lu: inserted into trustdb\n"
msgstr "ËÌÀÞ %08lX.%lu: ×ÓÔÁ×ÌÅÎ × ÂÁÚÕ ÄÁÎÎÙÈ ÄÏ×ÅÒÉÑ\n"
#: g10/trustdb.c:1618
#, c-format
msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
msgstr ""
"ËÌÀÞ %08lX.%lu: ÓÇÅÎÅÒÉÒÏ×ÁÎ × ÂÕÄÕÝÅÍ (ÎÅÐÒÁ×ÉÌØÎÏ ÕÓÔÁÎÏ×ÌÅÎÙ ÞÁÓÙ)\n"
#: g10/trustdb.c:1625
#, c-format
msgid "key %08lX.%lu: expired at %s\n"
msgstr "ËÌÀÞ %08lX.%lu: ÓÒÏË ÄÅÊÓÔ×ÉÑ ÉÓÔÅË %s\n"
#: g10/trustdb.c:1633
#, c-format
msgid "key %08lX.%lu: trust check failed: %s\n"
msgstr "ËÌÀÞ %08lX.%lu: ÐÒÏ×ÅÒËÁ ÄÏ×ÅÒÉÑ ÎÅ ÕÄÁÌÁÓØ: %s\n"
#: g10/trustdb.c:1842 g10/trustdb.c:1871 g10/trustdb.c:2610
msgid "WARNING: can't yet handle long pref records\n"
msgstr ""
#: g10/trustdb.c:1893
#, fuzzy, c-format
msgid "get_dir_record: search_record failed: %s\n"
msgstr "ÏÂÎÏ×ÌÅÎÉÅ ÓÅËÒÅÔÁ ÎÅ ÕÄÁÌÏÓØ: %s\n"
#: g10/trustdb.c:1956
#, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but marked as checked\n"
msgstr ""
#: g10/trustdb.c:1960
#, c-format
msgid "NOTE: sig rec %lu[%d] in hintlist of %lu but not marked\n"
msgstr ""
#. we need the dir record
#: g10/trustdb.c:1967
#, c-format
msgid "sig rec %lu[%d] in hintlist of %lu does not point to a dir record\n"
msgstr ""
#: g10/trustdb.c:1973
#, c-format
msgid "lid %lu: no primary key\n"
msgstr ""
#: g10/trustdb.c:2006
#, fuzzy, c-format
msgid "lid %lu: user id not found in keyblock\n"
msgstr "%s: ÐÏÌØÚÏ×ÁÔÅÌØ ÎÅ ÎÁÊÄÅÎ\n"
#: g10/trustdb.c:2010
#, fuzzy, c-format
msgid "lid %lu: user id without signature\n"
msgstr "ËÌÀÞ %08lX: ÎÅÔ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ÐÏÄÐÉÓÉ\n"
#: g10/trustdb.c:2017
#, fuzzy, c-format
msgid "lid %lu: self-signature in hintlist\n"
msgstr "build_sigrecs: Selbst-Signatur fehlt\n"
#: g10/trustdb.c:2028 g10/trustdb.c:2747 g10/trustdb.c:2831
#, fuzzy
msgid "Valid certificate revocation"
msgstr "ðÌÏÈÏÊ ÓÅÒÔÉÆÉËÁÔ"
#: g10/trustdb.c:2029 g10/trustdb.c:2748 g10/trustdb.c:2832
#, fuzzy
msgid "Good certificate"
msgstr "ðÌÏÈÏÊ ÓÅÒÔÉÆÉËÁÔ"
#: g10/trustdb.c:2038
msgid "very strange: no public key\n"
msgstr ""
#: g10/trustdb.c:2086
#, c-format
msgid "hintlist %lu[%d] of %lu does not point to a dir record\n"
msgstr ""
#: g10/trustdb.c:2092
#, c-format
msgid "lid %lu does not have a key\n"
msgstr ""
#: g10/trustdb.c:2102
#, fuzzy, c-format
msgid "lid %lu: can't get keyblock: %s\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ ÂÌÏË ËÌÀÞÁ: %s\n"
#: g10/trustdb.c:2159 g10/trustdb.c:3082
#, fuzzy, c-format
msgid "tdbio_search_dir failed: %s\n"
msgstr "ÏÛÉÂËÁ ÄÅËÏÄÉÒÏ×ÁÎÉÑ: %s\n"
#: g10/trustdb.c:2312
#, fuzzy, c-format
msgid "key %08lX.%lu: Good subkey binding\n"
msgstr "ËÌÀÞ %08lX: ÎÅÔ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
#: g10/trustdb.c:2318 g10/trustdb.c:2360
#, fuzzy, c-format
msgid "key %08lX.%lu: Invalid subkey binding: %s\n"
msgstr "ËÌÀÞ %08lX: ÎÅÔ ÄÏÐÕÓÔÉÍÙÈ ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ\n"
#: g10/trustdb.c:2333
#, fuzzy, c-format
msgid "key %08lX.%lu: Valid key revocation\n"
msgstr "ËÌÀÞ %08lX.%lu: ÓÒÏË ÄÅÊÓÔ×ÉÑ ÉÓÔÅË %s\n"
#: g10/trustdb.c:2339
#, fuzzy, c-format
msgid "key %08lX.%lu: Invalid key revocation: %s\n"
msgstr "ËÌÀÞ %08lX: ÏÔËÒÙÔÙÊ ËÌÀÞ ÎÅ ÎÁÊÄÅÎ: %s\n"
#: g10/trustdb.c:2354
#, fuzzy, c-format
msgid "key %08lX.%lu: Valid subkey revocation\n"
msgstr "ËÌÀÞ %08lX: ÎÅÔ ÄÏÐÕÓÔÉÍÙÈ ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ\n"
#: g10/trustdb.c:2454
#, fuzzy
msgid "Good self-signature"
msgstr "[ÓÁÍÏ-ÐÏÄÐÉÓØ]\n"
#: g10/trustdb.c:2465
#, fuzzy
msgid "Invalid self-signature"
msgstr "ËÌÀÞ %08lX: ÎÅÄÏÐÕÓÔÉÍÁÑ ÓÁÍÏ-ÐÏÄÐÉÓØ\n"
#: g10/trustdb.c:2475
msgid "Valid user ID revocation skipped due to a newer self signature\n"
msgstr ""
#: g10/trustdb.c:2482
#, fuzzy
msgid "Valid user ID revocation\n"
msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ×ÙÂÏÒ.\n"
#: g10/trustdb.c:2489
#, fuzzy
msgid "Invalid user ID revocation"
msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ×ÙÂÏÒ.\n"
#: g10/trustdb.c:2573
msgid "Too many preferences"
msgstr ""
#: g10/trustdb.c:2587
msgid "Too many preference items"
msgstr ""
#: g10/trustdb.c:2726
msgid "Duplicated certificate - deleted"
msgstr ""
#: g10/trustdb.c:2759
#, fuzzy
msgid "Hmmm, public key lost?"
msgstr "ðÌÏÈÏÊ ÏÔËÒÙÔÙÊ ËÌÀÞ"
#: g10/trustdb.c:2769 g10/trustdb.c:2852
#, fuzzy
msgid "Invalid certificate revocation"
msgstr "ðÌÏÈÏÊ ÓÅÒÔÉÆÉËÁÔ"
#: g10/trustdb.c:2770 g10/trustdb.c:2853
#, fuzzy
msgid "Invalid certificate"
msgstr "ðÌÏÈÏÊ ÓÅÒÔÉÆÉËÁÔ"
#: g10/trustdb.c:2785
#, c-format
msgid "uid %08lX.%lu/%02X%02X: has shadow dir %lu but is not yet marked.\n"
msgstr ""
#: g10/trustdb.c:2799
#, c-format
msgid "sig record %lu[%d] points to wrong record.\n"
msgstr ""
#. that should never happen
#: g10/trustdb.c:3052
#, fuzzy, c-format
msgid "insert_trust_record: keyblock not found: %s\n"
msgstr "ËÌÀÞ %08lX: ÓÅËÒÅÔÎÙÊ ËÌÀÞ ÎÅ ÎÁÊÄÅÎ: %s\n"
#: g10/trustdb.c:3070
msgid "did not use primary key for insert_trust_record()\n"
msgstr ""
#: g10/ringedit.c:293
#, fuzzy, c-format
msgid "%s: can't create keyring: %s\n"
msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s\n"
-#: g10/ringedit.c:299 g10/ringedit.c:1283
+#: g10/ringedit.c:299 g10/ringedit.c:1300
#, fuzzy, c-format
msgid "%s: keyring created\n"
msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s\n"
-#: g10/ringedit.c:1469
+#: g10/ringedit.c:1486
msgid "WARNING: 2 files with confidential information exists.\n"
msgstr ""
-#: g10/ringedit.c:1470
+#: g10/ringedit.c:1487
#, fuzzy, c-format
msgid "%s is the unchanged one\n"
msgstr "éÓÐÏÌØÚÏ×ÁÎ ÎÅÐÒÁ×ÉÌØÎÙÊ ÓÅËÒÅÔÎÙÊ ËÌÀÞ"
-#: g10/ringedit.c:1471
+#: g10/ringedit.c:1488
#, c-format
msgid "%s is the new one\n"
msgstr ""
-#: g10/ringedit.c:1472
+#: g10/ringedit.c:1489
msgid "Please fix this possible security flaw\n"
msgstr ""
-#: g10/skclist.c:94
+#: g10/skclist.c:88 g10/skclist.c:125
+msgid "key is not flagged as insecure - can't use it with the faked RNG!\n"
+msgstr ""
+
+#: g10/skclist.c:113
#, fuzzy, c-format
msgid "skipped `%s': %s\n"
msgstr "%s: ÐÒÏÐÕÝÅÎ: %s\n"
-#: g10/skclist.c:100
+#: g10/skclist.c:119
#, fuzzy, c-format
msgid ""
"skipped `%s': this is a PGP generated ElGamal key which is not secure for "
"signatures!\n"
msgstr "ÜÔÏÔ ElGamal ËÌÀÞ, ÓÏÚÄÁÎÎÙÊ PGP, ÎÅ ÎÁÄÅÖÅÎ ÄÌÑ ÓÏÚÄÁÎÉÑ ÐÏÄÐÉÓÅÊ!\n"
#. do not overwrite
#: g10/openfile.c:58
#, c-format
msgid "File `%s' exists. "
msgstr "æÁÊÌ `%s' ÓÕÝÅÓÔ×ÕÅÔ. "
#: g10/openfile.c:60
msgid "Overwrite (y/N)? "
msgstr "ðÅÒÅÐÉÓÁÔØ (y/N)? "
#: g10/openfile.c:85
#, fuzzy
msgid "writing to stdout\n"
msgstr "ÚÁÐÉÓÙ×ÁÅÔÓÑ × `%s'\n"
#: g10/openfile.c:134
#, fuzzy, c-format
msgid "assuming signed data in `%s'\n"
msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÐÏÄÐÉÓÁÎÎÙÅ ÄÁÎÎÙÅ `%s' .\n"
#: g10/openfile.c:181
#, c-format
msgid "%s: new options file created\n"
msgstr ""
#: g10/encr-data.c:59
#, fuzzy, c-format
msgid "%s encrypted data\n"
msgstr "ÚÁÛÉÆÒÏ×ÁÔØ ÄÁÎÎÙÅ"
#: g10/encr-data.c:61
#, c-format
msgid "encrypted with unknown algorithm %d\n"
msgstr ""
#: g10/encr-data.c:74
#, fuzzy
msgid ""
"WARNING: message was encrypted with a weak key in the symmetric cipher.\n"
msgstr ""
"ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÏÏÂÝÅÎÉÅ ÂÙÌÏ ÚÁÛÉÆÒÏ×ÁÎÏ, ÉÓÐÏÌØÚÕÑ ÓÌÁÂÙÊ ËÌÀÞ, × "
"ÓÉÍÍÅÔÒÉÞÎÏÍ ÁÌÇÏÒÉÔÍÅ ÛÉÆÒÏ×ÁÎÉÑ.\n"
#: g10/seskey.c:52
msgid "weak key created - retrying\n"
msgstr "ÐÏÌÕÞÉÌÓÑ ÓÌÁÂÙÊ ËÌÀÞ, ÐÒÏÂÕÅÍ ÅÝÅ ÒÁÚ\n"
#: g10/seskey.c:57
#, c-format
msgid "cannot avoid weak key for symmetric cipher; tried %d times!\n"
msgstr ""
"ÎÅ ÐÏÌÕÞÁÅÔÓÑ ÉÚÂÅÖÁÔØ ÓÌÁÂÏÇÏ ËÌÀÞÁ × ÓÉÍÍÅÔÒÉÞÎÏÍ ÁÌÇÏÒÉÔÍÅ; ÐÒÏÂÏ×ÁÌÉ %d "
"ÒÁÚ!\n"
#. begin of list
#: g10/helptext.c:48
msgid "edit_ownertrust.value"
msgstr ""
#: g10/helptext.c:54
msgid "revoked_key.override"
msgstr ""
#: g10/helptext.c:58
msgid "untrusted_key.override"
msgstr ""
#: g10/helptext.c:62
msgid "pklist.user_id.enter"
msgstr ""
#: g10/helptext.c:66
msgid "keygen.algo"
msgstr ""
#: g10/helptext.c:82
msgid "keygen.algo.elg_se"
msgstr ""
#: g10/helptext.c:89
msgid "keygen.size"
msgstr ""
#: g10/helptext.c:93
msgid "keygen.size.huge.okay"
msgstr ""
#: g10/helptext.c:98
msgid "keygen.size.large.okay"
msgstr ""
#: g10/helptext.c:103
msgid "keygen.valid"
msgstr ""
#: g10/helptext.c:107
msgid "keygen.valid.okay"
msgstr ""
#: g10/helptext.c:112
msgid "keygen.name"
msgstr ""
#: g10/helptext.c:117
msgid "keygen.email"
msgstr ""
#: g10/helptext.c:121
msgid "keygen.comment"
msgstr ""
#: g10/helptext.c:126
msgid "keygen.userid.cmd"
msgstr ""
#: g10/helptext.c:135
msgid "keygen.sub.okay"
msgstr ""
#: g10/helptext.c:139
msgid "sign_uid.okay"
msgstr ""
#: g10/helptext.c:144
msgid "change_passwd.empty.okay"
msgstr ""
#: g10/helptext.c:149
msgid "keyedit.cmd"
msgstr ""
#: g10/helptext.c:153
msgid "keyedit.save.okay"
msgstr ""
#: g10/helptext.c:158
msgid "keyedit.cancel.okay"
msgstr ""
#: g10/helptext.c:162
msgid "keyedit.sign_all.okay"
msgstr ""
#: g10/helptext.c:166
msgid "keyedit.remove.uid.okay"
msgstr ""
#: g10/helptext.c:171
msgid "keyedit.remove.subkey.okay"
msgstr ""
# ################################
# ####### Help msgids ############
# ################################
#: g10/helptext.c:175
msgid "passphrase.enter"
msgstr ""
"Bitte geben Sie die \"Passhrase\" ein; dies ist ein geheimer Satz der aus\n"
"beliebigen Zeichen bestehen kann. Was Sie eingegeben wird nicht angezeigt.\n"
"Zur ihrer eigenen Sicherbeit benutzen Sie biite einen Satz, den sie sich\n"
"gut merken könne, der aber nicht leicht zu raten ist; Zitate und andere\n"
"bekannte Texte sind eine SCHLECHTE Wahl, da diese mit Sicherheit online\n"
"verfügbar sind und durch entsprechende Programme zum Raten der "
"\"Passphrase\"\n"
"benutzt werden. Sätze mit persönlicher Bedeutung, die auch noch durch\n"
"falsche Groß-/Kleinschreibung und eingestreute Sonderzeichen verändert "
"werden,\n"
"sind i.d.R. eine gute Wahl"
#: g10/helptext.c:182
msgid "passphrase.repeat"
msgstr ""
"Um sicher zu gehen, daß Sie sich bei der Eingabe der \"Passphrase\" nicht\n"
"vertippt haben, geben Sie diese bitte nochmal ein. Nur wenn beide Eingaben\n"
"übereinstimmen, wird die \"Passphrase\" akzeptiert."
#: g10/helptext.c:186
#, fuzzy
msgid "detached_signature.filename"
msgstr "ÉÍÑ ÆÁÊÌÁ ÄÌÑ ÏÔÄÅÌØÎÏÊ ÐÏÄÐÉÓÉ"
#: g10/helptext.c:190
msgid "openfile.overwrite.okay"
msgstr "÷Ù ÖÅÌÁÅÔÅ ÐÅÒÅÚÁÐÉÓÁÔØ ÆÁÊÌ (×ÏÚÍÏÖÎÁ ÐÏÔÅÒÑ ÄÁÎÎÙÈ)"
#: g10/helptext.c:204
msgid "No help available"
msgstr "ðÏÍÏÝØ ÏÔÓÕÔÓÔ×ÕÅÔ."
#: g10/helptext.c:216
#, c-format
msgid "No help available for `%s'"
msgstr "ðÏÍÏÝØ ÄÌÑ `%s' ÏÔÓÕÔÓÔ×ÕÅÔ."
#~ msgid "invalid clear text header: "
#~ msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÔÅËÓÔÏ×ÙÊ ÚÁÇÏÌÏ×ÏË: "
#~ msgid "You will see a list of signators etc. here\n"
#~ msgstr "úÄÅÓØ ×Ù Õ×ÉÄÉÔÅ ÓÐÉÓÏË ÐÏÄÐÉÓÁ×ÛÉÈ É Ô.Ä.\n"
#~ msgid "key %08lX: already in ultikey_table\n"
#~ msgstr "ËÌÀÞ %08lX: ÕÖÅ × ultikey_table\n"
#, fuzzy
#~ msgid "key %08lX.%lu, uid %02X%02X: no public key for signature %08lX\n"
#~ msgstr ""
#~ "ËÌÀÞ %08lX.%lu, uid %02X%02X: ÎÅÔ ÏÔËÒÙÔÏÇÏ ËÌÀÞÁ ÄÌÑ ÐÏÄÐÉÓÉ %08lX\n"
#, fuzzy
#~ msgid "key %08lX.%lu, uid %02X%02X: invalid %ssignature: %s\n"
#~ msgstr "ËÌÀÞ %08lX: ÎÅÄÏÐÕÓÔÉÍÁÑ ÓÁÍÏ-ÐÏÄÐÉÓØ\n"
#~ msgid "can't write keyring\n"
#~ msgstr "kann ËÌÀÞring nicht schreiben\n"
#~ msgid "make a signature on a key in the keyring"
#~ msgstr "ËÌÀÞ signieren"
#~ msgid "edit a key signature"
#~ msgstr "Bearbeiten der Signaturen eines ËÌÀÞs"
#~ msgid "do not make any changes"
#~ msgstr "Keine wirklichen Änderungen durchführen"
#~ 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.\n"
#~ msgstr ""
#~ "Sie müssen selbt entscheiden, welchen Wert Sie hier eintragen; dieser Wert\n"
#~ "wird niemals an eine dritte Seite weitergegeben. Wir brauchen diesen Wert,\n"
#~ "um das \"Netz des Vertrauens\" aufzubauen. Dieses hat nichts mit dem "
#~ "(implizit\n"
#~ "erzeugten) \"Netz der Zertifikate\" zu tun.\n"
#~ msgid "public and secret subkey created.\n"
#~ msgstr "Öffentlicher und privater ËÌÀÞ erzeugt.\n"
#~ msgid "No public key for %d signatures\n"
#~ msgstr "Kein öffentlicher ËÌÀÞ für %d Signaturen\n"
#~ msgid "[User name not available] "
#~ msgstr "[Benuzername nicht verfügbar] "
#~ msgid "This is a BAD signature!\n"
#~ msgstr "Dies ist eine FALSCHE Signatur!\n"
#~ msgid "The signature could not be checked!\n"
#~ msgstr "Die Signatur konnte nicht geprüft werden!\n"
#~ msgid "Checking signatures of this public key certificate:\n"
#~ msgstr "Die Signaturen dieses Zertifikats werden überprüft:\n"
#~ msgid "Do you want to remove some of the invalid signatures? "
#~ msgstr "Möchten Sie einige der ungültigen Signaturen entfernen? "
#~ msgid "there is a secret key for this public key!\n"
#~ msgstr "Es gibt einen privaten ËÌÀÞ zu diesem öffentlichen ËÌÀÞ!\n"
#~ msgid "use option \"--delete-secret-key\" to delete it first.\n"
#~ msgstr ""
#~ "Benutzen Sie das Kommando \"--delete-secret-key\", um ihn vorab zu "
#~ "entfernen.\n"
#~ msgid "can't do that in batchmode without \"--yes\"\n"
#~ msgstr "Dies kann im Batchmodus ohne \"--yes\" nicht durchgeführt werden.\n"
#~ msgid "Delete this key from the keyring? "
#~ msgstr "Diesen ËÌÀÞ aus dem ËÌÀÞring löschen? "
#~ msgid "This is a secret key! - really delete? "
#~ msgstr "Dies ist ein privater ËÌÀÞ! - Wirklich löschen? "
diff --git a/scripts/config.sub b/scripts/config.sub
index b95132478..34c7b07b4 100755
--- a/scripts/config.sub
+++ b/scripts/config.sub
@@ -1,1188 +1,1188 @@
#! /bin/sh
# Configuration validation subroutine script, version 1.1.
# Copyright (C) 1991, 92, 93, 94, 95, 96, 1999 Free Software Foundation, Inc.
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
# can handle that machine. It does not imply ALL GNU software can.
#
# This file 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 2 of the License, or
# (at your option) any later version.
#
# This program 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
# Each package is responsible for reporting which valid configurations
# it does not support. The user should be able to distinguish
# a failure to support a valid configuration from a meaningless
# configuration.
# The goal of this file is to map all the various variations of a given
# machine specification into a single specification in the form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or in some cases, the newer four-part form:
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
if [ x$1 = x ]
then
echo Configuration name missing. 1>&2
echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
echo "or $0 ALIAS" 1>&2
echo where ALIAS is a recognized configuration type. 1>&2
exit 1
fi
# First pass through any local machine types.
case $1 in
*local*)
echo $1
exit 0
;;
*)
;;
esac
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
linux-gnu*|freebsd*-*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
then os=`echo $1 | sed 's/.*-/-/'`
else os=; fi
;;
esac
### Let's recognize common machines as not being operating systems so
### that things like config.sub decstation-3100 work. We also
### recognize some manufacturers as not being operating systems, so we
### can provide default operating systems below.
case $os in
-sun*os*)
# Prevent following clause from handling this invalid input.
;;
-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-apple)
os=
basic_machine=$1
;;
-sim | -cisco | -oki | -wec | -winbond ) # CYGNUS LOCAL
os=
basic_machine=$1
;;
-scout) # CYGNUS LOCAL
;;
-wrs) # CYGNUS LOCAL
os=vxworks
basic_machine=$1
;;
-hiuxmpp)
os=-hiuxmpp
;;
-hiux*)
os=-hiuxwe2
;;
-sco5)
os=sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
os=-sco3.2v4
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2v[4-9]*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco*)
os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-isc)
os=-isc2.2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-clix*)
basic_machine=clipper-intergraph
;;
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-lynx*)
os=-lynxos
;;
-ptx*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
;;
-windowsnt*)
os=`echo $os | sed -e 's/windowsnt/winnt/'`
;;
-psos*)
os=-psos
;;
esac
# Decode aliases for certain CPU-COMPANY combinations.
case $basic_machine in
# Recognize the basic CPU types without company name.
# Some are omitted here because they have special meanings below.
tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arm \
| arme[lb] | pyramid | mn10300 \
| tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
| alpha | we32k | ns16k | clipper | i370 | sh \
| powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \
| pdp11 | mips64el | mips64orion | mips64orionel \
| sparc | sparclet | sparclite | sparc64)
basic_machine=$basic_machine-unknown
;;
m88110 | m680[01234]0 | m683?2 | m68360 | z8k | v70 | h8500 | w65) # CYGNUS LOCAL
basic_machine=$basic_machine-unknown
;;
mips64vr4300 | mips64vr4300el) # CYGNUS LOCAL jsmith/vr4300
basic_machine=$basic_machine-unknown
;;
mips64vr4100 | mips64vr4100el) # CYGNUS LOCAL jsmith/vr4100
basic_machine=$basic_machine-unknown
;;
mips64vr5000 | mips64vr5000el) # CYGNUS LOCAL ian/vr5000
basic_machine=$basic_machine-unknown
;;
mips16) # CYGNUS LOCAL krk/mips16
basic_machine=$basic_machine-unknown
;;
# CYGNUS LOCAL law
mn10200)
basic_machine=$basic_machine-unknown
;;
# END CYGNUS LOCAL
d10v) # CYGNUS LOCAL meissner/d10v
basic_machine=$basic_machine-unknown
;;
mn10200) # CYGNUS LOCAL
basic_machine=$basic_machine-unknown
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i[3456]86)
basic_machine=$basic_machine-pc
;;
# Object if more than one company name word.
*-*-*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
# Recognize the basic CPU types with company name.
vax-* | tahoe-* | i[3456]86-* | i860-* | m32r-* | m68k-* | m68000-* \
| m88k-* | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \
| none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
| hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
| pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \
| pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \
| mips64el-* | mips64orion-* | mips64orionel-* | f301-*)
;;
m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | h8500-* | d10v-*) # CYGNUS LOCAL
;;
mips64vr4300-* | mips64vr4300el-*) # CYGNUS LOCAL jsmith/vr4300
;;
mips64vr4100-* | mips64vr4100el-*) # CYGNUS LOCAL jsmith/vr4100
;;
mips16-*) # CYGNUS LOCAL krk/mips16
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd) # CYGNUS LOCAL
basic_machine=i386-unknown
os=-bsd
;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
basic_machine=m68000-att
;;
3b*)
basic_machine=we32k-att
;;
a29khif) # CYGNUS LOCAL
basic_machine=a29k-amd
os=-udi
;;
adobe68k) # CYGNUS LOCAL
basic_machine=m68010-adobe
os=-scout
;;
alliant | fx80)
basic_machine=fx80-alliant
;;
altos | altos3068)
basic_machine=m68k-altos
;;
am29k)
basic_machine=a29k-none
os=-bsd
;;
amdahl)
basic_machine=580-amdahl
os=-sysv
;;
amiga | amiga-*)
basic_machine=m68k-cbm
;;
amigados)
basic_machine=m68k-cbm
os=-amigados
;;
amigaunix | amix)
basic_machine=m68k-cbm
os=-sysv4
;;
apollo68)
basic_machine=m68k-apollo
os=-sysv
;;
apollo68bsd) # CYGNUS LOCAL
basic_machine=m68k-apollo
os=-bsd
;;
atarist)
basic_machine=m68k-atari
;;
aux)
basic_machine=m68k-apple
os=-aux
;;
balance)
basic_machine=ns32k-sequent
os=-dynix
;;
convex-c1)
basic_machine=c1-convex
os=-bsd
;;
convex-c2)
basic_machine=c2-convex
os=-bsd
;;
convex-c32)
basic_machine=c32-convex
os=-bsd
;;
convex-c34)
basic_machine=c34-convex
os=-bsd
;;
convex-c38)
basic_machine=c38-convex
os=-bsd
;;
cray | ymp)
basic_machine=ymp-cray
os=-unicos
;;
cray2)
basic_machine=cray2-cray
os=-unicos
;;
[ctj]90-cray)
basic_machine=c90-cray
os=-unicos
;;
crds | unos)
basic_machine=m68k-crds
;;
da30 | da30-*)
basic_machine=m68k-da30
;;
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
basic_machine=mips-dec
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
basic_machine=m68k-motorola
;;
delta88)
basic_machine=m88k-motorola
os=-sysv3
;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
;;
dpx2* | dpx2*-bull)
basic_machine=m68k-bull
os=-sysv3
;;
ebmon29k)
basic_machine=a29k-amd
os=-ebmon
;;
elxsi)
basic_machine=elxsi-elxsi
os=-bsd
;;
encore | umax | mmax)
basic_machine=ns32k-encore
;;
es1800 | OSE68k | ose68k | ose | OSE) # CYGNUS LOCAL
basic_machine=m68k-ericsson
os=-ose
;;
fx2800)
basic_machine=i860-alliant
;;
genix)
basic_machine=ns32k-ns
;;
gmicro)
basic_machine=tron-gmicro
os=-sysv
;;
hiuxmpp)
basic_machine=hppa1.1-hitachi
os=-hiuxmpp
;;
h3050r* | hiux*)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
h8300hms)
basic_machine=h8300-hitachi
os=-hms
;;
h8300xray) # CYGNUS LOCAL
basic_machine=h8300-hitachi
os=-xray
;;
h8500hms) # CYGNUS LOCAL
basic_machine=h8500-hitachi
os=-hms
;;
harris)
basic_machine=m88k-harris
os=-sysv3
;;
hp300-*)
basic_machine=m68k-hp
;;
hp300bsd)
basic_machine=m68k-hp
os=-bsd
;;
hp300hpux)
basic_machine=m68k-hp
os=-hpux
;;
w89k-*) # CYGNUS LOCAL
basic_machine=hppa1.1-winbond
os=-proelf
;;
op50n-*) # CYGNUS LOCAL
basic_machine=hppa1.1-oki
os=-proelf
;;
op60c-*) # CYGNUS LOCAL
basic_machine=hppa1.1-oki
os=-proelf
;;
hppro) # CYGNUS LOCAL
basic_machine=hppa1.1-hp
os=-proelf
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
basic_machine=m68000-hp
;;
hp9k3[2-9][0-9])
basic_machine=m68k-hp
;;
hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
basic_machine=hppa1.1-hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
basic_machine=hppa1.0-hp
;;
hppa-next)
os=-nextstep3
;;
hppaosf) # CYGNUS LOCAL
basic_machine=hppa1.1-hp
os=-osf
;;
i370-ibm* | ibm*)
basic_machine=i370-ibm
os=-mvs
;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i[3456]86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
;;
i[3456]86v4*)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv4
;;
i[3456]86v)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv
;;
i[3456]86sol2)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-solaris2
;;
i386mach) # CYGNUS LOCAL
basic_machine=i386-mach
os=-mach
;;
i386-vsta | vsta) # CYGNUS LOCAL
basic_machine=i386-unknown
os=-vsta
;;
i386-go32 | go32) # CYGNUS LOCAL
basic_machine=i386-unknown
os=-go32
;;
iris | iris4d)
basic_machine=mips-sgi
case $os in
-irix*)
;;
*)
os=-irix4
;;
esac
;;
isi68 | isi)
basic_machine=m68k-isi
os=-sysv
;;
m88k-omron*)
basic_machine=m88k-omron
;;
magnum | m3230)
basic_machine=mips-mips
os=-sysv
;;
merlin)
basic_machine=ns32k-utek
os=-sysv
;;
miniframe)
basic_machine=m68000-convergent
;;
mipsel*-linux*)
basic_machine=mipsel-unknown
os=-linux
;;
mips*-linux*)
basic_machine=mips-unknown
os=-linux
;;
mips3*-*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
;;
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
monitor) # CYGNUS LOCAL
basic_machine=m68k-rom68k
os=-coff
;;
msdos) # CYGNUS LOCAL
basic_machine=i386-unknown
os=-msdos
;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
;;
netbsd386)
basic_machine=i386-unknown # CYGNUS LOCAL
os=-netbsd
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
os=-newsos
;;
news1000)
basic_machine=m68030-sony
os=-newsos
;;
news-3600 | risc-news)
basic_machine=mips-sony
os=-newsos
;;
necv70) # CYGNUS LOCAL
basic_machine=v70-nec
os=-sysv
;;
next | m*-next )
basic_machine=m68k-next
case $os in
-nextstep* )
;;
-ns2*)
os=-nextstep2
;;
*)
os=-nextstep3
;;
esac
;;
nh3000)
basic_machine=m68k-harris
os=-cxux
;;
nh[45]000)
basic_machine=m88k-harris
os=-cxux
;;
nindy960)
basic_machine=i960-intel
os=-nindy
;;
mon960) # CYGNUS LOCAL
basic_machine=i960-intel
os=-mon960
;;
np1)
basic_machine=np1-gould
;;
OSE68000 | ose68000) # CYGNUS LOCAL
basic_machine=m68000-ericsson
os=-ose
;;
os68k) # CYGNUS LOCAL
basic_machine=m68k-none
os=-os68k
;;
pa-hitachi)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
paragon)
basic_machine=i860-intel
os=-osf
;;
pbd)
basic_machine=sparc-tti
;;
pbb)
basic_machine=m68k-tti
;;
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pentium | p5)
basic_machine=i586-intel
;;
pentiumpro | p6)
basic_machine=i686-intel
;;
pentium-* | p5-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
k5)
# We don't have specific support for AMD's K5 yet, so just call it a Pentium
basic_machine=i586-amd
;;
nexen)
# We don't have specific support for Nexgen yet, so just call it a Pentium
basic_machine=i586-nexgen
;;
pn)
basic_machine=pn-gould
;;
power) basic_machine=rs6000-ibm
;;
ppc) basic_machine=powerpc-unknown
;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
;;
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ps2)
basic_machine=i386-ibm
;;
rom68k) # CYGNUS LOCAL
basic_machine=m68k-rom68k
os=-coff
;;
rm[46]00)
basic_machine=mips-siemens
;;
rtpc | rtpc-*)
basic_machine=romp-ibm
;;
sa29200) # CYGNUS LOCAL
basic_machine=a29k-amd
os=-udi
;;
sequent)
basic_machine=i386-sequent
;;
sh)
basic_machine=sh-hitachi
os=-hms
;;
sparclite-wrs) # CYGNUS LOCAL
basic_machine=sparclite-wrs
os=-vxworks
;;
sps7)
basic_machine=m68k-bull
os=-sysv2
;;
spur)
basic_machine=spur-unknown
;;
st2000) # CYGNUS LOCAL
basic_machine=m68k-tandem
;;
stratus) # CYGNUS LOCAL
basic_machine=i860-stratus
os=-sysv4
;;
sun2)
basic_machine=m68000-sun
;;
sun2os3)
basic_machine=m68000-sun
os=-sunos3
;;
sun2os4)
basic_machine=m68000-sun
os=-sunos4
;;
sun3os3)
basic_machine=m68k-sun
os=-sunos3
;;
sun3os4)
basic_machine=m68k-sun
os=-sunos4
;;
sun4os3)
basic_machine=sparc-sun
os=-sunos3
;;
sun4os4)
basic_machine=sparc-sun
os=-sunos4
;;
sun4sol2)
basic_machine=sparc-sun
os=-solaris2
;;
sun3 | sun3-*)
basic_machine=m68k-sun
;;
sun4)
basic_machine=sparc-sun
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
symmetry)
basic_machine=i386-sequent
os=-dynix
;;
tower | tower-32)
basic_machine=m68k-ncr
;;
udi29k)
basic_machine=a29k-amd
os=-udi
;;
ultra3)
basic_machine=a29k-nyu
os=-sym1
;;
v810 | necv810) # CYGNUS LOCAL
basic_machine=v810-nec
os=-none
;;
vaxv)
basic_machine=vax-dec
os=-sysv
;;
vms)
basic_machine=vax-dec
os=-vms
;;
vpp*|vx|vx-*)
basic_machine=f301-fujitsu
;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
;;
vxworks68)
basic_machine=m68k-wrs
os=-vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
os=-vxworks
;;
w65*) # CYGNUS LOCAL
basic_machine=w65-wdc
os=-none
;;
xmp)
basic_machine=xmp-cray
os=-unicos
;;
xps | xps100)
basic_machine=xps100-honeywell
;;
z8k-*-coff) # CYGNUS LOCAL
basic_machine=z8k-unknown
os=-sim
;;
none)
basic_machine=none-none
os=-none
;;
# Here we handle the default manufacturer of certain CPU types. It is in
# some cases the only manufacturer, in others, it is the most popular.
w89k) # CYGNUS LOCAL
basic_machine=hppa1.1-winbond
;;
op50n) # CYGNUS LOCAL
basic_machine=hppa1.1-oki
;;
op60c) # CYGNUS LOCAL
basic_machine=hppa1.1-oki
;;
mips)
if [ x$os = x-linux ]; then
basic_machine=mips-unknown
else
basic_machine=mips-mips
fi
;;
romp)
basic_machine=romp-ibm
;;
rs6000)
basic_machine=rs6000-ibm
;;
vax)
basic_machine=vax-dec
;;
pdp11)
basic_machine=pdp11-dec
;;
we32k)
basic_machine=we32k-att
;;
sparc)
basic_machine=sparc-sun
;;
cydra)
basic_machine=cydra-cydrome
;;
orion)
basic_machine=orion-highlevel
;;
orion105)
basic_machine=clipper-highlevel
;;
mac | mpw | mac-mpw) # CYGNUS LOCAL
basic_machine=m68k-apple
;;
pmac | pmac-mpw) # CYGNUS LOCAL
basic_machine=powerpc-apple
;;
*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
esac
# Here we canonicalize certain aliases for manufacturers.
case $basic_machine in
*-digital*)
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
;;
*-commodore*)
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
;;
*)
;;
esac
# Decode manufacturer-specific aliases for certain operating systems.
if [ x"$os" != x"" ]
then
case $os in
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
-solaris)
os=-solaris2
;;
-unixware* | svr4*)
os=-sysv4
;;
-gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
# First accept the basic system types.
# The portable systems comes first.
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
| -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -linux-gnu* | -uxpv* | -mingw32* )
# Remember, each alternative MUST END IN *, to match a version number.
;;
# CYGNUS LOCAL
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \
| -macos* | -mpw* | -magic* | -mon960* | -lnews* )
;;
-mac*)
os=`echo $os | sed -e 's|mac|macos|'`
;;
# END CYGNUS LOCAL
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
-sunos5*)
os=`echo $os | sed -e 's|sunos5|solaris2|'`
;;
-sunos6*)
os=`echo $os | sed -e 's|sunos6|solaris3|'`
;;
-osfrose*)
os=-osfrose
;;
-osf*)
os=-osf
;;
-utek*)
os=-bsd
;;
-dynix*)
os=-bsd
;;
-acis*)
os=-aos
;;
-386bsd) # CYGNUS LOCAL
os=-bsd
;;
-ctix* | -uts*)
os=-sysv
;;
-ns2 )
os=-nextstep2
;;
# Preserve the version number of sinix5.
-sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
;;
-sinix*)
os=-sysv4
;;
-triton*)
os=-sysv3
;;
-oss*)
os=-sysv3
;;
-svr4)
os=-sysv4
;;
-svr3)
os=-sysv3
;;
-sysvr4)
os=-sysv4
;;
# This must come after -sysvr4.
-sysv*)
;;
-ose*) # CYGNUS LOCAL
os=-ose
;;
-es1800*) # CYGNUS LOCAL
os=-ose
;;
-xenix)
os=-xenix
;;
- -MiNT | -mint)
+ -mint)
os=-mint
;;
-none)
;;
*)
# Get rid of the `-' at the beginning of $os.
echo "os=($os)"
os=`echo $os | sed 's/[^-]*-//'`
echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
exit 1
;;
esac
else
# Here we handle the default operating systems that come with various machines.
# The value should be what the vendor currently ships out the door with their
# machine or put another way, the most popular os provided with the machine.
# Note that if you're going to try to match "-MANUFACTURER" here (say,
# "-sun"), then you have to tell the case statement up towards the top
# that MANUFACTURER isn't an operating system. Otherwise, code above
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
case $basic_machine in
*-acorn)
os=-riscix1.2
;;
arm*-semi)
os=-aout
;;
pdp11-*)
os=-none
;;
*-dec | vax-*)
os=-ultrix4.2
;;
m68*-apollo)
os=-domain
;;
i386-sun)
os=-sunos4.0.2
;;
m68000-sun)
os=-sunos3
# This also exists in the configure program, but was not the
# default.
# os=-sunos4
;;
m68*-cisco) # CYGNUS LOCAL
os=-aout
;;
mips*-cisco) # CYGNUS LOCAL
os=-elf
;;
mips*-*) # CYGNUS LOCAL
os=-elf
;;
*-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3
;;
sparc-* | *-sun)
os=-sunos4.1.1
;;
*-be) # CYGNUS LOCAL
os=-beos
;;
*-ibm)
os=-aix
;;
*-wec) # CYGNUS LOCAL
os=-proelf
;;
*-winbond) # CYGNUS LOCAL
os=-proelf
;;
*-oki) # CYGNUS LOCAL
os=-proelf
;;
*-hp)
os=-hpux
;;
*-hitachi)
os=-hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
os=-sysv
;;
*-cbm)
os=-amigados
;;
*-dg)
os=-dgux
;;
*-dolphin)
os=-sysv3
;;
m68k-ccur)
os=-rtu
;;
m88k-omron*)
os=-luna
;;
*-next )
os=-nextstep
;;
*-sequent)
os=-ptx
;;
*-crds)
os=-unos
;;
*-ns)
os=-genix
;;
i370-*)
os=-mvs
;;
*-next)
os=-nextstep3
;;
*-gould)
os=-sysv
;;
*-highlevel)
os=-bsd
;;
*-encore)
os=-bsd
;;
*-sgi)
os=-irix
;;
*-siemens)
os=-sysv4
;;
*-masscomp)
os=-rtu
;;
f301-fujitsu)
os=-uxpv
;;
*-rom68k) # CYGNUS LOCAL
os=-coff
;;
*-*bug) # CYGNUS LOCAL
os=-coff
;;
*-apple) # CYGNUS LOCAL
os=-macos
;;
*)
os=-none
;;
esac
fi
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
vendor=unknown
case $basic_machine in
*-unknown)
case $os in
-riscix*)
vendor=acorn
;;
-sunos*)
vendor=sun
;;
-aix*)
vendor=ibm
;;
-beos*) # CYGNUS LOCAL
vendor=be
;;
-hpux*)
vendor=hp
;;
-hiux*)
vendor=hitachi
;;
-unos*)
vendor=crds
;;
-dgux*)
vendor=dg
;;
-luna*)
vendor=omron
;;
-genix*)
vendor=ns
;;
-mvs*)
vendor=ibm
;;
-ptx*)
vendor=sequent
;;
-vxsim* | -vxworks*)
vendor=wrs
;;
-aux*)
vendor=apple
;;
-hms*) # CYGNUS LOCAL
vendor=hitachi
;;
-mpw* | -macos*) # CYGNUS LOCAL
vendor=apple
;;
esac
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
esac
echo $basic_machine$os
diff --git a/util/ChangeLog b/util/ChangeLog
index 1afdf7602..0c1597a51 100644
--- a/util/ChangeLog
+++ b/util/ChangeLog
@@ -1,282 +1,286 @@
+Wed Jan 20 21:40:21 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
+
+ * http.c (http_wait_response): Moved the shutdown behind the dup
+
Wed Jan 20 18:59:49 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* http.c (send_request): Removed double LF
Tue Jan 19 19:34:58 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* * iobuf.c (iobuf_push_filter): Allow filters for temp streams
(iobuf_write_temp): Ditto.
(iobuf_flush_temp): New.
(iobuf_unget_and_close_temp): Removed.
* http.c (close_http_document): Renamed to http_close().
(open_http_document): Renamed to http_open_document().
(http_open): New.
(http_start_data): New.
(http_wait_response): New.
Sun Jan 17 11:04:33 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* strgutil.c (trim_trailing_ws): New.
Sat Jan 16 12:03:27 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* http.c (connect_server): Fixed stupid bug.
Sat Jan 16 09:27:30 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* http.c: New
Wed Jan 13 14:10:15 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* iobuf.c (iobuf_fdopen): New.
Sat Jan 9 16:02:23 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* secmem.c (lock_pool): add another check that setuid() worked.
(secmem_init): Ditto.
Thu Jan 7 18:00:58 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* iobuf.c (iobuf_clear_eof): Removed.
(underflow): Changed the eof handling.
(iobuf_pop_filter): Made static and renamed to pop_filter.
* iobuf.c (iobuf_read_line): New.
Sun Jan 3 15:28:44 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* dotlock.c (make_dotlock): print another informal message.
(make_dotlock): Removed the cpp checks.
Tue Dec 29 14:41:47 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* secmem.c: Moved unistd.h out of the #ifdef
* dotlock.c (make_dotlock): Sun has no SYS_NMLN
* iobuf.c (iobuf_unget_and_close_temp): Reset .start
Sat Dec 12 18:40:32 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* argparse.c (arg_pars): fixed opts[i] with negative index.
Fri Nov 27 21:37:41 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
* dotlock.c: Implemented
Wed Nov 25 11:30:07 1998 Werner Koch (wk@isil.d.shuttle.de)
* iobuf.c (iobuf_pop_filter): Fixed sigsegv after error.
Thu Nov 19 07:09:55 1998 Werner Koch <werner.koch@guug.de>
* miscutil.c (strtimevalue): New.
Tue Nov 10 10:01:53 1998 Werner Koch (wk@isil.d.shuttle.de)
* strgutil.c (set_native_charset): New.
(native_to_utf8): Now handles koi8-r.
Tue Nov 3 16:17:56 1998 Werner Koch (wk@isil.d.shuttle.de)
* strgutil.c (native_to_utf8): New.
(utf8_to_native): New, but only as a stub.
* argparse.c (optfile_parse): Trimmed spaces from args.
Wed Oct 28 08:01:49 1998 me,,, (wk@tobold)
* argparse.c (find_long_option): New.
(arg_parse): option=value is now allowed. Add a new internal
option "--dump-options".
Thu Oct 22 16:25:49 1998 Michael Roth (mroth@nessie.de)
* fileutil.c (make_basename): New.
(make_dirname): New.
Wed Oct 21 12:20:29 1998 Werner Koch (wk@isil.d.shuttle.de)
* util.c (iobuf_flush): autoincreasing of a temp. iobuf
(iobuf_temp_with_content): New.
Tue Oct 13 12:40:13 1998 Werner Koch (wk@isil.d.shuttle.de)
* util.c (.nofast): set this variable
Wed Oct 7 19:27:50 1998 Werner Koch (wk@isil.d.shuttle.de)
* memory.c (m_print_stats): New.
Tue Oct 6 09:53:56 1998 Werner Koch (wk@isil.d.shuttle.de)
* strgutil.c (memicmp): Add HAVE_MEMICMP.
Mon Sep 21 19:45:01 1998 Werner Koch (wk@(none))
* secmem.c: New flags to allow suspend/resume of warnings.
Fri Sep 18 16:25:47 1998 Werner Koch (wk@(none))
* secmem.c (lock_pool): Kludge for broken mlock on HPUX 10.20
Tue Sep 15 17:52:21 1998 Werner Koch (wk@(none))
* miscutil.c (asctimestamp): New.
Mon Sep 14 09:38:18 1998 Werner Koch (wk@(none))
* secmem.c (init_pool): Now mmaps /dev/zero if we do not have MAP_ANON.
Wed Sep 9 13:52:28 1998 Werner Koch (wk@(none))
* ttyio.c (do_get): Ctrl-D is now a valid but special character
Mon Sep 7 13:52:41 1998 Werner Koch (wk@(none))
* iobuf.c (get_real_fname): New and changed file_filter datastructures
and their initialization.
Tue Aug 11 15:12:35 1998 Werner Koch (wk@(none))
* miscutil.c (answer_is_yes): i18ned
Sat Aug 8 18:35:00 1998 Werner Koch (wk@(none))
* ttyio.c (cleanup): New.
Mon Aug 3 17:06:00 1998 Werner Koch (wk@(none))
* secmem.c (MAP_ANON): Add a macro test
Wed Jul 29 14:53:34 1998 Werner Koch (wk@(none))
* ttyio.c (tty_get_answer_is_yes): New.
Tue Jul 21 10:35:48 1998 Werner Koch (wk@(none))
* argparse.c: New option flag to distinguish options and commands.
Sat Jul 18 19:49:30 1998 Werner Koch (wk@(none))
* argparse.c (arg_parse): Added -? as alias for -h
Thu Jul 9 14:47:20 1998 Werner Koch (wk@isil.d.shuttle.de)
* secmem.c (secmem_init): Drops setuid if called with 0.
Tue Jul 7 11:49:25 1998 Werner Koch (wk@isil.d.shuttle.de)
* logger.c (log_set_filename): New.
Mon Jul 6 09:03:49 1998 Werner Koch (wk@isil.d.shuttle.de)
* strgutil.c (append_to_strlist): New.
Thu Jul 2 15:55:44 1998 Werner Koch (wk@isil.d.shuttle.de)
* iobuf.c (block_filter): Add writing of OP partial length headers.
Fri Jun 26 10:38:35 1998 Werner Koch (wk@isil.d.shuttle.de)
* ttyio.c (do_get): all iso8859-1 characters are now allowed.
Thu Jun 25 15:57:21 1998 Werner Koch (wk@isil.d.shuttle.de)
* secmem.c (lock_pool): Removed left over test code.
Wed Jun 10 07:39:41 1998 Werner Koch,mobil,,, (wk@tobold)
* fileutil.c (compare_filenames): New.
* argparse.c (arg_parse): New flag bit 6 to ignore --version
Thu May 14 16:45:13 1998 Werner Koch (wk@isil.d.shuttle.de)
* argparse.c (show_help): Add some formatting stuff
Fri May 8 17:06:49 1998 Werner Koch (wk@isil.d.shuttle.de)
* errors.c (strerror): New if !HAVE_STRERROR
Mon May 4 19:48:03 1998 Werner Koch (wk@isil.d.shuttle.de)
* iobuf.c (iobuf_read): Code is now faster.
* (iobuf_write): ditto.
Mon Apr 27 11:01:32 1998 Werner Koch (wk@isil.d.shuttle.de)
* strgutil.c (memicmp): New.
Thu Mar 19 11:29:03 1998 Werner Koch (wk@isil.d.shuttle.de)
* strgutil.c (memistr): Add const to return and first arg.
Sat Mar 7 11:54:35 1998 Werner Koch (wk@isil.d.shuttle.de)
* miscutil.c (print_string): New arg delim; changed all callers.
Thu Mar 5 12:19:30 1998 Werner Koch (wk@isil.d.shuttle.de)
* errors.c: New strings.
Thu Mar 5 12:06:31 1998 Werner Koch (wk@isil.d.shuttle.de)
* iobuf.c (iobuf_open): A name of "-" now opens stdin.
* fileutil.c (print_fname_stdout, print_fname_stdin): New.
Fri Feb 27 10:20:03 1998 Werner Koch (wk@isil.d.shuttle.de)
* memory.c (m_is_secure): Removed.
* secmem.c (m_is_secure): Moved to here.
* secmem.c (secmem_realloc): New.
* memory.c (M_GUARD,EXTRA_ALIGN): New (all functions).
Thu Feb 26 14:36:51 1998 Werner Koch (wk@isil.d.shuttle.de)
* secmem.c (lock_pool): No error if EAGAIN is returned instead
of EPERM.
Fri Feb 20 17:43:05 1998 Werner Koch (wk@isil.d.shuttle.de)
* ttyio.c [MINGW32]: Add support for mingw32.
Tue Feb 17 19:43:44 1998 Werner Koch (wk@isil.d.shuttle.de)
* memory.c (dump_table_at_exit): New.
Mon Feb 16 10:07:28 1998 Werner Koch (wk@isil.d.shuttle.de)
* argparse.c (show_version, show_help, default_strusage): Changed
according to GNU standards.
Mon Feb 16 08:58:25 1998 Werner Koch (wk@isil.d.shuttle.de)
* iobuf.c (iobuf_peek): New
Fri Feb 13 19:34:59 1998 Werner Koch (wk@isil.d.shuttle.de)
* iobuf.c (iobuf_seek): Set counters to new offset.
Fri Feb 13 17:13:04 1998 Werner Koch (wk@isil.d.shuttle.de)
* logger.c (log_set_name, log_get_name): New.
(print_prefix, pgm_name): New, changed all function to make use it.
(log_mpidump): Removed the "DBG" prefix.
(log_hexdump): Ditto.
* logger.c (printstr): Removed.
Fri Feb 13 15:14:13 1998 Werner Koch (wk@isil.d.shuttle.de)
* argparse.c (show_help): New '\v' kludge.
diff --git a/util/http.c b/util/http.c
index 4f04b62e9..408209213 100644
--- a/util/http.c
+++ b/util/http.c
@@ -1,747 +1,748 @@
/* http.c - HTTP protocol handler
* Copyright (C) 1999 Free Software Foundation, Inc.
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netdb.h>
#include "util.h"
#include "iobuf.h"
#include "i18n.h"
#include "http.h"
#define MAX_LINELEN 20000 /* max. length of a HTTP line */
#define VALID_URI_CHARS "abcdefghijklmnopqrstuvwxyz" \
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
"01234567890@" \
"!\"#$%&'()*+,-./:;<=>?[\\]^_{|}~"
#ifndef EAGAIN
#define EAGAIN EWOULDBLOCK
#endif
static int parse_uri( PARSED_URI *ret_uri, const char *uri );
static void release_parsed_uri( PARSED_URI uri );
static int do_parse_uri( PARSED_URI uri, int only_local_part );
static int remove_escapes( byte *string );
static int insert_escapes( byte *buffer, const byte *string,
const byte *special );
static URI_TUPLE parse_tuple( byte *string );
static int send_request( HTTP_HD hd );
static byte *build_rel_path( PARSED_URI uri );
static int parse_response( HTTP_HD hd );
static int connect_server( const char *server, ushort port );
static int write_server( int socket, const char *data, size_t length );
int
http_open( HTTP_HD hd, HTTP_REQ_TYPE reqtype, const char *url,
unsigned int flags )
{
int rc;
if( flags || !(reqtype == HTTP_REQ_GET || reqtype == HTTP_REQ_POST) )
return G10ERR_INV_ARG;
/* initialize the handle */
memset( hd, 0, sizeof *hd );
hd->socket = -1;
hd->initialized = 1;
hd->req_type = reqtype;
rc = parse_uri( &hd->uri, url );
if( !rc ) {
rc = send_request( hd );
if( !rc ) {
hd->fp_write = iobuf_fdopen( hd->socket , "w" );
if( hd->fp_write )
return 0;
rc = G10ERR_GENERAL;
}
}
if( !hd->fp_read && !hd->fp_write && hd->socket != -1 )
close( hd->socket );
iobuf_close( hd->fp_read );
iobuf_close( hd->fp_write);
release_parsed_uri( hd->uri );
hd->initialized = 0;
return rc;
}
void
http_start_data( HTTP_HD hd )
{
if( !hd->in_data ) {
iobuf_put( hd->fp_write, '\n' );
hd->in_data = 1;
}
}
int
http_wait_response( HTTP_HD hd, unsigned int *ret_status )
{
int rc;
http_start_data( hd ); /* make sure that we are in the data */
iobuf_flush( hd->fp_write );
- shutdown( hd->socket, 1 );
- hd->in_data = 0;
hd->socket = dup( hd->socket );
if( hd->socket == -1 )
return G10ERR_GENERAL;
iobuf_close( hd->fp_write );
hd->fp_write = NULL;
+ shutdown( hd->socket, 1 );
+ hd->in_data = 0;
hd->fp_read = iobuf_fdopen( hd->socket , "r" );
if( !hd->fp_read )
return G10ERR_GENERAL;
rc = parse_response( hd );
if( !rc && ret_status )
*ret_status = hd->status_code;
return rc;
}
int
http_open_document( HTTP_HD hd, const char *document, unsigned int flags )
{
int rc;
if( flags )
return G10ERR_INV_ARG;
rc = http_open( hd, HTTP_REQ_GET, document, 0 );
if( rc )
return rc;
rc = http_wait_response( hd, NULL );
if( rc )
http_close( hd );
return rc;
}
void
http_close( HTTP_HD hd )
{
if( !hd || !hd->initialized )
return;
if( !hd->fp_read && !hd->fp_write && hd->socket != -1 )
close( hd->socket );
iobuf_close( hd->fp_read );
iobuf_close( hd->fp_write );
release_parsed_uri( hd->uri );
m_free( hd->buffer );
hd->initialized = 0;
}
/****************
* Parse an URI and put the result into the newly allocated ret_uri.
* The caller must always use release_parsed_uri to releases the
* resources (even on an error).
*/
static int
parse_uri( PARSED_URI *ret_uri, const char *uri )
{
*ret_uri = m_alloc_clear( sizeof(**ret_uri) + strlen(uri) );
strcpy( (*ret_uri)->buffer, uri );
return do_parse_uri( *ret_uri, 0 );
}
static void
release_parsed_uri( PARSED_URI uri )
{
if( uri )
{
URI_TUPLE r, r2;
for( r = uri->query; r; r = r2 ) {
r2 = r->next;
m_free( r );
}
m_free( uri );
}
}
static int
do_parse_uri( PARSED_URI uri, int only_local_part )
{
URI_TUPLE *tail;
char *p, *p2, *p3;
int n;
p = uri->buffer;
n = strlen( uri->buffer );
/* initialize all fields to an empty string or an empty list */
uri->scheme = uri->host = uri->path = p + n;
uri->port = 0;
uri->params = uri->query = NULL;
/* a quick validity check */
if( strspn( p, VALID_URI_CHARS) != n )
return G10ERR_BAD_URI; /* invalid characters found */
if( !only_local_part ) {
/* find the scheme */
if( !(p2 = strchr( p, ':' ) ) || p2 == p )
return G10ERR_BAD_URI; /* No scheme */
*p2++ = 0;
strlwr( p );
uri->scheme = p;
if( !strcmp( uri->scheme, "http" ) )
;
else if( !strcmp( uri->scheme, "x-hkp" ) ) /* same as HTTP */
;
else
return G10ERR_INVALID_URI; /* Unsupported scheme */
p = p2;
/* find the hostname */
if( *p != '/' )
return G10ERR_INVALID_URI; /* does not start with a slash */
p++;
if( *p == '/' ) { /* there seems to be a hostname */
p++;
if( (p2 = strchr(p, '/')) )
*p2++ = 0;
strlwr( p );
uri->host = p;
if( (p3=strchr( p, ':' )) ) {
*p3++ = 0;
uri->port = atoi( p3 );
}
else
uri->port = 80;
uri->host = p;
if( (n = remove_escapes( uri->host )) < 0 )
return G10ERR_BAD_URI;
if( n != strlen( p ) )
return G10ERR_BAD_URI; /* hostname with a Nul in it */
p = p2 ? p2 : NULL;
}
} /* end global URI part */
/* parse the pathname part */
if( !p || !*p ) /* we don't have a path */
return 0; /* and this is okay */
/* fixme: here we have to check params */
/* do we have a query part */
if( (p2 = strchr( p, '?' )) )
*p2++ = 0;
uri->path = p;
if( (n = remove_escapes( p )) < 0 )
return G10ERR_BAD_URI;
if( n != strlen( p ) )
return G10ERR_BAD_URI; /* path with a Nul in it */
p = p2 ? p2 : NULL;
if( !p || !*p ) /* we don't have a query string */
return 0; /* okay */
/* now parse the query string */
tail = &uri->query;
for(;;) {
URI_TUPLE elem;
if( (p2 = strchr( p, '&' )) )
*p2++ = 0;
if( !(elem = parse_tuple( p )) )
return G10ERR_BAD_URI;
*tail = elem;
tail = &elem->next;
if( !p2 )
break; /* ready */
p = p2;
}
return 0;
}
/****************
* Remove all %xx escapes; this is done inplace.
* Returns: new length of the string.
*/
static int
remove_escapes( byte *string )
{
int n = 0;
byte *p, *s;
for(p=s=string; *s ; s++ ) {
if( *s == '%' ) {
if( s[1] && s[2] && isxdigit(s[1]) && isxdigit(s[2]) ) {
s++;
*p = *s >= '0' && *s <= '9' ? *s - '0' :
*s >= 'A' && *s <= 'F' ? *s - 'A' + 10 : *s - 'a' + 10 ;
*p <<= 4;
s++;
*p |= *s >= '0' && *s <= '9' ? *s - '0' :
*s >= 'A' && *s <= 'F' ? *s - 'A' + 10 : *s - 'a' + 10 ;
p++;
n++;
}
else {
*p++ = *s++;
if( *s )
*p++ = *s++;
if( *s )
*p++ = *s++;
if( *s )
*p = 0;
return -1; /* bad URI */
}
}
else
{
*p++ = *s;
n++;
}
}
*p = 0; /* always keep a string terminator */
return n;
}
static int
insert_escapes( byte *buffer, const byte *string, const byte *special )
{
int n = 0;
for( ; *string; string++ ) {
if( strchr( VALID_URI_CHARS, *string )
&& !strchr( special, *string ) ) {
if( buffer )
*buffer++ = *string;
n++;
}
else {
if( buffer ) {
sprintf( buffer, "%02X", *string );
buffer += 3;
}
n += 3;
}
}
return n;
}
static URI_TUPLE
parse_tuple( byte *string )
{
byte *p = string;
byte *p2;
int n;
URI_TUPLE tuple;
if( (p2 = strchr( p, '=' )) )
*p2++ = 0;
if( (n = remove_escapes( p )) < 0 )
return NULL; /* bad URI */
if( n != strlen( p ) )
return NULL; /* name with a Nul in it */
tuple = m_alloc_clear( sizeof *tuple );
tuple->name = p;
if( !p2 ) {
/* we have only the name, so we assume an empty value string */
tuple->value = p + strlen(p);
tuple->valuelen = 0;
}
else { /* name and value */
if( (n = remove_escapes( p2 )) < 0 ) {
m_free( tuple );
return NULL; /* bad URI */
}
tuple->value = p2;
tuple->valuelen = n;
}
return tuple;
}
/****************
* Send a HTTP request to the server
* Returns 0 if the request was successful
*/
static int
send_request( HTTP_HD hd )
{
const byte *server;
byte *request, *p;
ushort port;
int rc;
server = *hd->uri->host? hd->uri->host : "localhost";
port = hd->uri->port? hd->uri->port : 80;
hd->socket = connect_server( server, port );
if( hd->socket == -1 )
return G10ERR_NETWORK;
p = build_rel_path( hd->uri );
request = m_alloc( strlen(p) + 20 );
sprintf( request, "%s %s%s HTTP/1.0\r\n",
hd->req_type == HTTP_REQ_GET ? "GET" :
hd->req_type == HTTP_REQ_HEAD? "HEAD":
hd->req_type == HTTP_REQ_POST? "POST": "OOPS",
*p == '/'? "":"/", p );
m_free(p);
rc = write_server( hd->socket, request, strlen(request) );
m_free( request );
return rc;
}
/****************
* Build the relative path from the parsed URI.
* Minimal implementation.
*/
static byte*
build_rel_path( PARSED_URI uri )
{
URI_TUPLE r;
byte *rel_path, *p;
int n;
/* count the needed space */
n = insert_escapes( NULL, uri->path, "%;?&" );
/* fixme: add params */
for( r=uri->query; r; r = r->next ) {
n++; /* '?'/'&' */
n += insert_escapes( NULL, r->name, "%;?&=" );
n++; /* '='*/
n += insert_escapes( NULL, r->value, "%;?&=" );
}
n++;
/* now allocate and copy */
p = rel_path = m_alloc( n );
n = insert_escapes( p, uri->path, "%;?&" );
p += n;
/* fixme: add params */
for( r=uri->query; r; r = r->next ) {
*p++ = r == uri->query? '?':'&';
n = insert_escapes( p, r->name, "%;?&=" );
p += n;
*p++ = '=';
/* fixme: use valuelen */
n = insert_escapes( p, r->value, "%;?&=" );
p += n;
}
*p = 0;
return rel_path;
}
/***********************
* Parse the response from a server.
* Returns: errorcode and sets some fileds in the handle
*/
static int
parse_response( HTTP_HD hd )
{
byte *line, *p, *p2;
unsigned maxlen, len;
/* Wait for the status line */
do {
maxlen = MAX_LINELEN;
len = iobuf_read_line( hd->fp_read, &hd->buffer,
&hd->buffer_size, &maxlen );
line = hd->buffer;
if( !maxlen )
return -1; /* line has been truncated */
if( !len )
return -1; /* eof */
} while( !*line );
if( (p = strchr( line, '/')) )
*p++ = 0;
if( !p || strcmp( line, "HTTP" ) )
return 0; /* assume http 0.9 */
if( (p2 = strpbrk( p, " \t" ) ) ) {
*p2++ = 0;
p2 += strspn( p2, " \t" );
}
if( !p2 )
return 0; /* assume http 0.9 */
p = p2;
/* fixme: add HTTP version number check here */
if( (p2 = strpbrk( p, " \t" ) ) )
*p2++ = 0;
if( !isdigit(p[0]) || !isdigit(p[1]) || !isdigit(p[2]) || p[3] ) {
/* malformed HTTP statuscode - assume HTTP 0.9 */
hd->is_http_0_9 = 1;
hd->status_code = 200;
return 0;
}
hd->status_code = atoi( p );
/* skip all the header lines and wait for the empty line */
do {
maxlen = MAX_LINELEN;
len = iobuf_read_line( hd->fp_read, &hd->buffer,
&hd->buffer_size, &maxlen );
line = hd->buffer;
/* we ignore truncated lines */
if( !len )
return -1; /* eof */
/* time lineendings */
if( (*line == '\r' && line[1] == '\n') || *line == '\n' )
*line = 0;
} while( len && *line );
return 0;
}
#if 0
static int
start_server()
{
struct sockaddr_in mya;
struct sockaddr_in peer;
int fd, client;
fd_set rfds;
int addrlen;
int i;
if( (fd=socket(AF_INET,SOCK_STREAM, 0)) == -1 ) {
log_error("socket() failed: %s\n", strerror(errno));
return -1;
}
i = 1;
if( setsockopt( fd, SOL_SOCKET, SO_REUSEADDR, (byte*)&i, sizeof(i) ) )
log_info("setsockopt(SO_REUSEADDR) failed: %s\n", strerror(errno) );
mya.sin_family=AF_INET;
memset(&mya.sin_addr, 0, sizeof(mya.sin_addr));
mya.sin_port=htons(11371);
if( bind( fd, (struct sockaddr *)&mya, sizeof(mya)) ) {
log_error("bind to port 11371 failed: %s\n", strerror(errno) );
close( fd );
return -1;
}
if( listen( fd, 5 ) ) {
log_error("listen failed: %s\n", strerror(errno) );
close( fd );
return -1;
}
for(;;) {
FD_ZERO(&rfds);
FD_SET( fd, &rfds );
if( select( fd+1, &rfds, NULL, NULL, NULL) <= 0 )
continue; /* ignore any errors */
if( !FD_ISSET( fd, &rfds ) )
continue;
addrlen = sizeof peer;
client = accept( fd, (struct sockaddr *)&peer, &addrlen);
if( client == -1 )
continue; /* oops */
log_info("connect from %s\n", inet_ntoa( peer.sin_addr ) );
fflush(stdout);
fflush(stderr);
if( !fork() ) {
int c;
FILE *fp;
fp = fdopen( client , "r" );
while( (c=getc(fp)) != EOF )
putchar(c);
fclose(fp);
exit(0);
}
close( client );
}
return 0;
}
#endif
static int
connect_server( const char *server, ushort port )
{
struct sockaddr_in addr;
struct hostent *host;
int sd;
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
host = gethostbyname((char*)server);
if( !host )
return -1;
addr.sin_addr = *(struct in_addr*)host->h_addr;
sd = socket(AF_INET, SOCK_STREAM, 0);
if( sd == -1 )
return -1;
if( connect( sd, (struct sockaddr *)&addr, sizeof addr) == -1 ) {
close(sd);
return -1;
}
return sd;
}
static int
write_server( int socket, const char *data, size_t length )
{
int nleft, nwritten;
nleft = length;
while( nleft > 0 ) {
nwritten = write( socket, data, nleft );
if( nwritten == -1 ) {
if( errno == EINTR )
continue;
if( errno == EAGAIN ) {
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 50000;
select(0, NULL, NULL, NULL, &tv);
continue;
}
+ log_info("write failed: %s\n", strerror(errno));
return G10ERR_NETWORK;
}
nleft -=nwritten;
data += nwritten;
}
return 0;
}
/**** Test code ****/
#ifdef TEST
int
main(int argc, char **argv)
{
int rc;
PARSED_URI uri;
URI_TUPLE r;
struct http_context hd;
int c;
log_set_name("http-test");
if( argc == 1 ) {
start_server();
return 0;
}
if( argc != 2 ) {
fprintf(stderr,"usage: http-test uri\n");
return 1;
}
argc--; argv++;
rc = parse_uri( &uri, *argv );
if( rc ) {
log_error("`%s': %s\n", *argv, g10_errstr(rc));
release_parsed_uri( uri );
return 1;
}
printf("Scheme: %s\n", uri->scheme );
printf("Host : %s\n", uri->host );
printf("Port : %u\n", uri->port );
printf("Path : %s\n", uri->path );
for( r=uri->params; r; r = r->next ) {
printf("Params: %s=%s", r->name, r->value );
if( strlen( r->value ) != r->valuelen )
printf(" [real length=%d]", (int)r->valuelen );
putchar('\n');
}
for( r=uri->query; r; r = r->next ) {
printf("Query : %s=%s", r->name, r->value );
if( strlen( r->value ) != r->valuelen )
printf(" [real length=%d]", (int)r->valuelen );
putchar('\n');
}
release_parsed_uri( uri ); uri = NULL;
rc = http_open_document( &hd, *argv, 0 );
if( rc ) {
log_error("can't get `%s': %s\n", *argv, g10_errstr(rc));
return 1;
}
log_info("open_http_document succeeded; status=%u\n", hd.status_code );
while( (c=iobuf_get( hd.fp_read)) != -1 )
putchar(c);
http_close( &hd );
return 0;
}
#endif /*TEST*/
diff --git a/zlib/ChangeLog b/zlib/ChangeLog
index 5c0abb87b..67a513941 100644
--- a/zlib/ChangeLog
+++ b/zlib/ChangeLog
@@ -1,483 +1,487 @@
+Wed Jan 20 21:40:21 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
+
+ * Makefile.am: Corrected the list of sources
+
Wed Jan 13 14:10:15 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* Merged version 1.1.13 with the previousy used 1.0.4
Thu Feb 12 12:20:45 1998 Werner Koch (wk@frodo)
- removed a couple of files, as this is only used if zlib is
missing on a system.
- added automake stuff
ChangeLog file for zlib
Changes in 1.1.3 (9 July 1998)
- fix "an inflate input buffer bug that shows up on rare but persistent
occasions" (Mark)
- fix gzread and gztell for concatenated .gz files (Didier Le Botlan)
- fix gzseek(..., SEEK_SET) in write mode
- fix crc check after a gzeek (Frank Faubert)
- fix miniunzip when the last entry in a zip file is itself a zip file
(J Lillge)
- add contrib/asm586 and contrib/asm686 (Brian Raiter)
See http://www.muppetlabs.com/~breadbox/software/assembly.html
- add support for Delphi 3 in contrib/delphi (Bob Dellaca)
- add support for C++Builder 3 and Delphi 3 in contrib/delphi2 (Davide Moretti)
- do not exit prematurely in untgz if 0 at start of block (Magnus Holmgren)
- use macro EXTERN instead of extern to support DLL for BeOS (Sander Stoks)
- added a FAQ file
- Support gzdopen on Mac with Metrowerks (Jason Linhart)
- Do not redefine Byte on Mac (Brad Pettit & Jason Linhart)
- define SEEK_END too if SEEK_SET is not defined (Albert Chin-A-Young)
- avoid some warnings with Borland C (Tom Tanner)
- fix a problem in contrib/minizip/zip.c for 16-bit MSDOS (Gilles Vollant)
- emulate utime() for WIN32 in contrib/untgz (Gilles Vollant)
- allow several arguments to configure (Tim Mooney, Frodo Looijaard)
- use libdir and includedir in Makefile.in (Tim Mooney)
- support shared libraries on OSF1 V4 (Tim Mooney)
- remove so_locations in "make clean" (Tim Mooney)
- fix maketree.c compilation error (Glenn, Mark)
- Python interface to zlib now in Python 1.5 (Jeremy Hylton)
- new Makefile.riscos (Rich Walker)
- initialize static descriptors in trees.c for embedded targets (Nick Smith)
- use "foo-gz" in example.c for RISCOS and VMS (Nick Smith)
- add the OS/2 files in Makefile.in too (Andrew Zabolotny)
- fix fdopen and halloc macros for Microsoft C 6.0 (Tom Lane)
- fix maketree.c to allow clean compilation of inffixed.h (Mark)
- fix parameter check in deflateCopy (Gunther Nikl)
- cleanup trees.c, use compressed_len only in debug mode (Christian Spieler)
- Many portability patches by Christian Spieler:
. zutil.c, zutil.h: added "const" for zmem*
. Make_vms.com: fixed some typos
. Make_vms.com: msdos/Makefile.*: removed zutil.h from some dependency lists
. msdos/Makefile.msc: remove "default rtl link library" info from obj files
. msdos/Makefile.*: use model-dependent name for the built zlib library
. msdos/Makefile.emx, nt/Makefile.emx, nt/Makefile.gcc:
new makefiles, for emx (DOS/OS2), emx&rsxnt and mingw32 (Windows 9x / NT)
- use define instead of typedef for Bytef also for MSC small/medium (Tom Lane)
- replace __far with _far for better portability (Christian Spieler, Tom Lane)
- fix test for errno.h in configure (Tim Newsham)
Changes in 1.1.2 (19 March 98)
- added contrib/minzip, mini zip and unzip based on zlib (Gilles Vollant)
See http://www.winimage.com/zLibDll/unzip.html
- preinitialize the inflate tables for fixed codes, to make the code
completely thread safe (Mark)
- some simplifications and slight speed-up to the inflate code (Mark)
- fix gzeof on non-compressed files (Allan Schrum)
- add -std1 option in configure for OSF1 to fix gzprintf (Martin Mokrejs)
- use default value of 4K for Z_BUFSIZE for 16-bit MSDOS (Tim Wegner + Glenn)
- added os2/Makefile.def and os2/zlib.def (Andrew Zabolotny)
- add shared lib support for UNIX_SV4.2MP (MATSUURA Takanori)
- do not wrap extern "C" around system includes (Tom Lane)
- mention zlib binding for TCL in README (Andreas Kupries)
- added amiga/Makefile.pup for Amiga powerUP SAS/C PPC (Andreas Kleinert)
- allow "make install prefix=..." even after configure (Glenn Randers-Pehrson)
- allow "configure --prefix $HOME" (Tim Mooney)
- remove warnings in example.c and gzio.c (Glenn Randers-Pehrson)
- move Makefile.sas to amiga/Makefile.sas
Changes in 1.1.1 (27 Feb 98)
- fix macros _tr_tally_* in deflate.h for debug mode (Glenn Randers-Pehrson)
- remove block truncation heuristic which had very marginal effect for zlib
(smaller lit_bufsize than in gzip 1.2.4) and degraded a little the
compression ratio on some files. This also allows inlining _tr_tally for
matches in deflate_slow.
- added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier)
Changes in 1.1.0 (24 Feb 98)
- do not return STREAM_END prematurely in inflate (John Bowler)
- revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler)
- compile with -DFASTEST to get compression code optimized for speed only
- in minigzip, try mmap'ing the input file first (Miguel Albrecht)
- increase size of I/O buffers in minigzip.c and gzio.c (not a big gain
on Sun but significant on HP)
- add a pointer to experimental unzip library in README (Gilles Vollant)
- initialize variable gcc in configure (Chris Herborth)
Changes in 1.0.9 (17 Feb 1998)
- added gzputs and gzgets functions
- do not clear eof flag in gzseek (Mark Diekhans)
- fix gzseek for files in transparent mode (Mark Diekhans)
- do not assume that vsprintf returns the number of bytes written (Jens Krinke)
- replace EXPORT with ZEXPORT to avoid conflict with other programs
- added compress2 in zconf.h, zlib.def, zlib.dnt
- new asm code from Gilles Vollant in contrib/asm386
- simplify the inflate code (Mark):
. Replace ZALLOC's in huft_build() with single ZALLOC in inflate_blocks_new()
. ZALLOC the length list in inflate_trees_fixed() instead of using stack
. ZALLOC the value area for huft_build() instead of using stack
. Simplify Z_FINISH check in inflate()
- Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8
- in inftrees.c, avoid cc -O bug on HP (Farshid Elahi)
- in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with
the declaration of FAR (Gilles VOllant)
- install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann)
- read_buf buf parameter of type Bytef* instead of charf*
- zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout)
- do not redeclare unlink in minigzip.c for WIN32 (John Bowler)
- fix check for presence of directories in "make install" (Ian Willis)
Changes in 1.0.8 (27 Jan 1998)
- fixed offsets in contrib/asm386/gvmat32.asm (Gilles Vollant)
- fix gzgetc and gzputc for big endian systems (Markus Oberhumer)
- added compress2() to allow setting the compression level
- include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong)
- use constant arrays for the static trees in trees.c instead of computing
them at run time (thanks to Ken Raeburn for this suggestion). To create
trees.h, compile with GEN_TREES_H and run "make test".
- check return code of example in "make test" and display result
- pass minigzip command line options to file_compress
- simplifying code of inflateSync to avoid gcc 2.8 bug
- support CC="gcc -Wall" in configure -s (QingLong)
- avoid a flush caused by ftell in gzopen for write mode (Ken Raeburn)
- fix test for shared library support to avoid compiler warnings
- zlib.lib -> zlib.dll in msdos/zlib.rc (Gilles Vollant)
- check for TARGET_OS_MAC in addition to MACOS (Brad Pettit)
- do not use fdopen for Metrowerks on Mac (Brad Pettit))
- add checks for gzputc and gzputc in example.c
- avoid warnings in gzio.c and deflate.c (Andreas Kleinert)
- use const for the CRC table (Ken Raeburn)
- fixed "make uninstall" for shared libraries
- use Tracev instead of Trace in infblock.c
- in example.c use correct compressed length for test_sync
- suppress +vnocompatwarnings in configure for HPUX (not always supported)
Changes in 1.0.7 (20 Jan 1998)
- fix gzseek which was broken in write mode
- return error for gzseek to negative absolute position
- fix configure for Linux (Chun-Chung Chen)
- increase stack space for MSC (Tim Wegner)
- get_crc_table and inflateSyncPoint are EXPORTed (Gilles Vollant)
- define EXPORTVA for gzprintf (Gilles Vollant)
- added man page zlib.3 (Rick Rodgers)
- for contrib/untgz, fix makedir() and improve Makefile
- check gzseek in write mode in example.c
- allocate extra buffer for seeks only if gzseek is actually called
- avoid signed/unsigned comparisons (Tim Wegner, Gilles Vollant)
- add inflateSyncPoint in zconf.h
- fix list of exported functions in nt/zlib.dnt and mdsos/zlib.def
Changes in 1.0.6 (19 Jan 1998)
- add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and
gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code)
- Fix a deflate bug occuring only with compression level 0 (thanks to
Andy Buckler for finding this one).
- In minigzip, pass transparently also the first byte for .Z files.
- return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress()
- check Z_FINISH in inflate (thanks to Marc Schluper)
- Implement deflateCopy (thanks to Adam Costello)
- make static libraries by default in configure, add --shared option.
- move MSDOS or Windows specific files to directory msdos
- suppress the notion of partial flush to simplify the interface
(but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4)
- suppress history buffer provided by application to simplify the interface
(this feature was not implemented anyway in 1.0.4)
- next_in and avail_in must be initialized before calling inflateInit or
inflateInit2
- add EXPORT in all exported functions (for Windows DLL)
- added Makefile.nt (thanks to Stephen Williams)
- added the unsupported "contrib" directory:
contrib/asm386/ by Gilles Vollant <info@winimage.com>
386 asm code replacing longest_match().
contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu>
A C++ I/O streams interface to the zlib gz* functions
contrib/iostream2/ by Tyge Løvset <Tyge.Lovset@cmr.no>
Another C++ I/O streams interface
contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <paag@tid.es>
A very simple tar.gz file extractor using zlib
contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl>
How to use compress(), uncompress() and the gz* functions from VB.
- pass params -f (filtered data), -h (huffman only), -1 to -9 (compression
level) in minigzip (thanks to Tom Lane)
- use const for rommable constants in deflate
- added test for gzseek and gztell in example.c
- add undocumented function inflateSyncPoint() (hack for Paul Mackerras)
- add undocumented function zError to convert error code to string
(for Tim Smithers)
- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code.
- Use default memcpy for Symantec MSDOS compiler.
- Add EXPORT keyword for check_func (needed for Windows DLL)
- add current directory to LD_LIBRARY_PATH for "make test"
- create also a link for libz.so.1
- added support for FUJITSU UXP/DS (thanks to Toshiaki Nomura)
- use $(SHAREDLIB) instead of libz.so in Makefile.in (for HPUX)
- added -soname for Linux in configure (Chun-Chung Chen,
- assign numbers to the exported functions in zlib.def (for Windows DLL)
- add advice in zlib.h for best usage of deflateSetDictionary
- work around compiler bug on Atari (cast Z_NULL in call of s->checkfn)
- allow compilation with ANSI keywords only enabled for TurboC in large model
- avoid "versionString"[0] (Borland bug)
- add NEED_DUMMY_RETURN for Borland
- use variable z_verbose for tracing in debug mode (L. Peter Deutsch).
- allow compilation with CC
- defined STDC for OS/2 (David Charlap)
- limit external names to 8 chars for MVS (Thomas Lund)
- in minigzip.c, use static buffers only for 16-bit systems
- fix suffix check for "minigzip -d foo.gz"
- do not return an error for the 2nd of two consecutive gzflush() (Felix Lee)
- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau)
- added makelcc.bat for lcc-win32 (Tom St Denis)
- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe)
- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
- check for unistd.h in configure (for off_t)
- remove useless check parameter in inflate_blocks_free
- avoid useless assignment of s->check to itself in inflate_blocks_new
- do not flush twice in gzclose (thanks to Ken Raeburn)
- rename FOPEN as F_OPEN to avoid clash with /usr/include/sys/file.h
- use NO_ERRNO_H instead of enumeration of operating systems with errno.h
- work around buggy fclose on pipes for HP/UX
- support zlib DLL with BORLAND C++ 5.0 (thanks to Glenn Randers-Pehrson)
- fix configure if CC is already equal to gcc
Changes in 1.0.5 (3 Jan 98)
- Fix inflate to terminate gracefully when fed corrupted or invalid data
- Use const for rommable constants in inflate
- Eliminate memory leaks on error conditions in inflate
- Removed some vestigial code in inflate
- Update web address in README
Changes in 1.0.4 (24 Jul 96)
- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF
bit, so the decompressor could decompress all the correct data but went
on to attempt decompressing extra garbage data. This affected minigzip too.
- zlibVersion and gzerror return const char* (needed for DLL)
- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno)
- use z_error only for DEBUG (avoid problem with DLLs)
Changes in 1.0.3 (2 Jul 96)
- use z_streamp instead of z_stream *, which is now a far pointer in MSDOS
small and medium models; this makes the library incompatible with previous
versions for these models. (No effect in large model or on other systems.)
- return OK instead of BUF_ERROR if previous deflate call returned with
avail_out as zero but there is nothing to do
- added memcmp for non STDC compilers
- define NO_DUMMY_DECL for more Mac compilers (.h files merged incorrectly)
- define __32BIT__ if __386__ or i386 is defined (pb. with Watcom and SCO)
- better check for 16-bit mode MSC (avoids problem with Symantec)
Changes in 1.0.2 (23 May 96)
- added Windows DLL support
- added a function zlibVersion (for the DLL support)
- fixed declarations using Bytef in infutil.c (pb with MSDOS medium model)
- Bytef is define's instead of typedef'd only for Borland C
- avoid reading uninitialized memory in example.c
- mention in README that the zlib format is now RFC1950
- updated Makefile.dj2
- added algorithm.doc
Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
- fix array overlay in deflate.c which sometimes caused bad compressed data
- fix inflate bug with empty stored block
- fix MSDOS medium model which was broken in 0.99
- fix deflateParams() which could generated bad compressed data.
- Bytef is define'd instead of typedef'ed (work around Borland bug)
- added an INDEX file
- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
Watcom (Makefile.wat), Amiga SAS/C (Makefile.sas)
- speed up adler32 for modern machines without auto-increment
- added -ansi for IRIX in configure
- static_init_done in trees.c is an int
- define unlink as delete for VMS
- fix configure for QNX
- add configure branch for SCO and HPUX
- avoid many warnings (unused variables, dead assignments, etc...)
- no fdopen for BeOS
- fix the Watcom fix for 32 bit mode (define FAR as empty)
- removed redefinition of Byte for MKWERKS
- work around an MWKERKS bug (incorrect merge of all .h files)
Changes in 0.99 (27 Jan 96)
- allow preset dictionary shared between compressor and decompressor
- allow compression level 0 (no compression)
- add deflateParams in zlib.h: allow dynamic change of compression level
and compression strategy.
- test large buffers and deflateParams in example.c
- add optional "configure" to build zlib as a shared library
- suppress Makefile.qnx, use configure instead
- fixed deflate for 64-bit systems (detected on Cray)
- fixed inflate_blocks for 64-bit systems (detected on Alpha)
- declare Z_DEFLATED in zlib.h (possible parameter for deflateInit2)
- always return Z_BUF_ERROR when deflate() has nothing to do
- deflateInit and inflateInit are now macros to allow version checking
- prefix all global functions and types with z_ with -DZ_PREFIX
- make falloc completely reentrant (inftrees.c)
- fixed very unlikely race condition in ct_static_init
- free in reverse order of allocation to help memory manager
- use zlib-1.0/* instead of zlib/* inside the tar.gz
- make zlib warning-free with "gcc -O3 -Wall -Wwrite-strings -Wpointer-arith
-Wconversion -Wstrict-prototypes -Wmissing-prototypes"
- allow gzread on concatenated .gz files
- deflateEnd now returns Z_DATA_ERROR if it was premature
- deflate is finally (?) fully deterministic (no matches beyond end of input)
- Document Z_SYNC_FLUSH
- add uninstall in Makefile
- Check for __cpluplus in zlib.h
- Better test in ct_align for partial flush
- avoid harmless warnings for Borland C++
- initialize hash_head in deflate.c
- avoid warning on fdopen (gzio.c) for HP cc -Aa
- include stdlib.h for STDC compilers
- include errno.h for Cray
- ignore error if ranlib doesn't exist
- call ranlib twice for NeXTSTEP
- use exec_prefix instead of prefix for libz.a
- renamed ct_* as _tr_* to avoid conflict with applications
- clear z->msg in inflateInit2 before any error return
- initialize opaque in example.c, gzio.c, deflate.c and inflate.c
- fixed typo in zconf.h (_GNUC__ => __GNUC__)
- check for WIN32 in zconf.h and zutil.c (avoid farmalloc in 32-bit mode)
- fix typo in Make_vms.com (f$trnlnm -> f$getsyi)
- in fcalloc, normalize pointer if size > 65520 bytes
- don't use special fcalloc for 32 bit Borland C++
- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc...
- use Z_BINARY instead of BINARY
- document that gzclose after gzdopen will close the file
- allow "a" as mode in gzopen.
- fix error checking in gzread
- allow skipping .gz extra-field on pipes
- added reference to Perl interface in README
- put the crc table in FAR data (I dislike more and more the medium model :)
- added get_crc_table
- added a dimension to all arrays (Borland C can't count).
- workaround Borland C bug in declaration of inflate_codes_new & inflate_fast
- guard against multiple inclusion of *.h (for precompiled header on Mac)
- Watcom C pretends to be Microsoft C small model even in 32 bit mode.
- don't use unsized arrays to avoid silly warnings by Visual C++:
warning C4746: 'inflate_mask' : unsized array treated as '__far'
(what's wrong with far data in far model?).
- define enum out of inflate_blocks_state to allow compilation with C++
Changes in 0.95 (16 Aug 95)
- fix MSDOS small and medium model (now easier to adapt to any compiler)
- inlined send_bits
- fix the final (:-) bug for deflate with flush (output was correct but
not completely flushed in rare occasions).
- default window size is same for compression and decompression
(it's now sufficient to set MAX_WBITS in zconf.h).
- voidp -> voidpf and voidnp -> voidp (for consistency with other
typedefs and because voidnp was not near in large model).
Changes in 0.94 (13 Aug 95)
- support MSDOS medium model
- fix deflate with flush (could sometimes generate bad output)
- fix deflateReset (zlib header was incorrectly suppressed)
- added support for VMS
- allow a compression level in gzopen()
- gzflush now calls fflush
- For deflate with flush, flush even if no more input is provided.
- rename libgz.a as libz.a
- avoid complex expression in infcodes.c triggering Turbo C bug
- work around a problem with gcc on Alpha (in INSERT_STRING)
- don't use inline functions (problem with some gcc versions)
- allow renaming of Byte, uInt, etc... with #define.
- avoid warning about (unused) pointer before start of array in deflate.c
- avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c
- avoid reserved word 'new' in trees.c
Changes in 0.93 (25 June 95)
- temporarily disable inline functions
- make deflate deterministic
- give enough lookahead for PARTIAL_FLUSH
- Set binary mode for stdin/stdout in minigzip.c for OS/2
- don't even use signed char in inflate (not portable enough)
- fix inflate memory leak for segmented architectures
Changes in 0.92 (3 May 95)
- don't assume that char is signed (problem on SGI)
- Clear bit buffer when starting a stored block
- no memcpy on Pyramid
- suppressed inftest.c
- optimized fill_window, put longest_match inline for gcc
- optimized inflate on stored blocks.
- untabify all sources to simplify patches
Changes in 0.91 (2 May 95)
- Default MEM_LEVEL is 8 (not 9 for Unix) as documented in zlib.h
- Document the memory requirements in zconf.h
- added "make install"
- fix sync search logic in inflateSync
- deflate(Z_FULL_FLUSH) now works even if output buffer too short
- after inflateSync, don't scare people with just "lo world"
- added support for DJGPP
Changes in 0.9 (1 May 95)
- don't assume that zalloc clears the allocated memory (the TurboC bug
was Mark's bug after all :)
- let again gzread copy uncompressed data unchanged (was working in 0.71)
- deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented
- added a test of inflateSync in example.c
- moved MAX_WBITS to zconf.h because users might want to change that.
- document explicitly that zalloc(64K) on MSDOS must return a normalized
pointer (zero offset)
- added Makefiles for Microsoft C, Turbo C, Borland C++
- faster crc32()
Changes in 0.8 (29 April 95)
- added fast inflate (inffast.c)
- deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this
is incompatible with previous versions of zlib which returned Z_OK.
- work around a TurboC compiler bug (bad code for b << 0, see infutil.h)
(actually that was not a compiler bug, see 0.81 above)
- gzread no longer reads one extra byte in certain cases
- In gzio destroy(), don't reference a freed structure
- avoid many warnings for MSDOS
- avoid the ERROR symbol which is used by MS Windows
Changes in 0.71 (14 April 95)
- Fixed more MSDOS compilation problems :( There is still a bug with
TurboC large model.
Changes in 0.7 (14 April 95)
- Added full inflate support.
- Simplified the crc32() interface. The pre- and post-conditioning
(one's complement) is now done inside crc32(). WARNING: this is
incompatible with previous versions; see zlib.h for the new usage.
Changes in 0.61 (12 April 95)
- workaround for a bug in TurboC. example and minigzip now work on MSDOS.
Changes in 0.6 (11 April 95)
- added minigzip.c
- added gzdopen to reopen a file descriptor as gzFile
- added transparent reading of non-gziped files in gzread.
- fixed bug in gzread (don't read crc as data)
- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose).
- don't allocate big arrays in the stack (for MSDOS)
- fix some MSDOS compilation problems
Changes in 0.5:
- do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but
not yet Z_FULL_FLUSH.
- support decompression but only in a single step (forced Z_FINISH)
- added opaque object for zalloc and zfree.
- added deflateReset and inflateReset
- added a variable zlib_version for consistency checking.
- renamed the 'filter' parameter of deflateInit2 as 'strategy'.
Added Z_FILTERED and Z_HUFFMAN_ONLY constants.
Changes in 0.4:
- avoid "zip" everywhere, use zlib instead of ziplib.
- suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush
if compression method == 8.
- added adler32 and crc32
- renamed deflateOptions as deflateInit2, call one or the other but not both
- added the method parameter for deflateInit2.
- added inflateInit2
- simplied considerably deflateInit and inflateInit by not supporting
user-provided history buffer. This is supported only in deflateInit2
and inflateInit2.
Changes in 0.3:
- prefix all macro names with Z_
- use Z_FINISH instead of deflateEnd to finish compression.
- added Z_HUFFMAN_ONLY
- added gzerror()
diff --git a/zlib/Makefile.am b/zlib/Makefile.am
index 2f2f65a29..91610af4d 100644
--- a/zlib/Makefile.am
+++ b/zlib/Makefile.am
@@ -1,29 +1,30 @@
# Process this file with automake to produce Makefile.in
# Copyright (C) 1995-1996 Jean-loup Gailly.
# For conditions of distribution and use, see copyright notice in zlib.h
# This is used if a systems lacks support of zlib
CFLAGS = -O -Wall
-EXTRA_DIST = README algorithm.doc ChangeLog example.c
+EXTRA_DIST = README algorithm.doc ChangeLog
# I found no other easy way to use this only if zlib is neede
# doing this with SUBDIR = @xxx@ in the top Makefile.am does not
# work because automake doesn't scan this Makefile.am here.
if ENABLE_LOCAL_ZLIB
noinst_LIBRARIES = libzlib.a
endif
-libzlib_a_SOURCES = adler32.c compress.c crc32.c gzio.c \
+libzlib_a_SOURCES = adler32.c compress.c crc32.c \
uncompr.c deflate.c trees.c zutil.c \
inflate.c infblock.c inftrees.c \
infcodes.c infutil.c inffast.c \
- zlib.h zconf.h deflate.h infblock.h \
- infcodes.h inffast.h inftrees.h infutil.h zutil.h
+ deflate.h infblock.h infcodes.h inffast.h \
+ inffixed.h inftrees.h infutil.h trees.h \
+ zconf.h zlib.h zutil.h
-CLEANFILES = example foo.gz
+CLEANFILES = foo.gz
diff --git a/zlib/Makefile.am~ b/zlib/Makefile.am~
deleted file mode 100644
index 71103692f..000000000
--- a/zlib/Makefile.am~
+++ /dev/null
@@ -1,29 +0,0 @@
-# Process this file with automake to produce Makefile.in
-# Copyright (C) 1995-1996 Jean-loup Gailly.
-# For conditions of distribution and use, see copyright notice in zlib.h
-# This is used if a systems lacks support of zlib
-
-CFLAGS = -O -Wall
-
-EXTRA_DIST = README algorithm.doc ChangeLog gzio.c example.c
-
-# I found no other easy way to use this only if zlib is neede
-# doing this with SUBDIR = @xxx@ in the top Makefile.am does not
-# work because automake doesn't scan this Makefile.am here.
-if ENABLE_LOCAL_ZLIB
-noinst_LIBRARIES = libzlib.a
-endif
-
-
-libzlib_a_SOURCES = adler32.c compress.c crc32.c \
- uncompr.c deflate.c trees.c zutil.c \
- inflate.c infblock.c inftrees.c \
- infcodes.c infutil.c inffast.c \
- zlib.h zconf.h deflate.h infblock.h \
- infcodes.h inffast.h inftrees.h infutil.h zutil.h
-
-
-CLEANFILES = example foo.gz
-
-
-
diff --git a/zlib/gzio.c b/zlib/gzio.c
deleted file mode 100644
index f7c336a55..000000000
--- a/zlib/gzio.c
+++ /dev/null
@@ -1,875 +0,0 @@
-/* gzio.c -- IO on .gz files
- * Copyright (C) 1995-1998 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Compile this file with -DNO_DEFLATE to avoid the compression code.
- */
-
-/* @(#) $Id$ */
-
-#include <stdio.h>
-
-#include "zutil.h"
-
-struct internal_state {int dummy;}; /* for buggy compilers */
-
-#ifndef Z_BUFSIZE
-# ifdef MAXSEG_64K
-# define Z_BUFSIZE 4096 /* minimize memory usage for 16-bit DOS */
-# else
-# define Z_BUFSIZE 16384
-# endif
-#endif
-#ifndef Z_PRINTF_BUFSIZE
-# define Z_PRINTF_BUFSIZE 4096
-#endif
-
-#define ALLOC(size) malloc(size)
-#define TRYFREE(p) {if (p) free(p);}
-
-static int gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */
-
-/* gzip flag byte */
-#define ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */
-#define HEAD_CRC 0x02 /* bit 1 set: header CRC present */
-#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */
-#define ORIG_NAME 0x08 /* bit 3 set: original file name present */
-#define COMMENT 0x10 /* bit 4 set: file comment present */
-#define RESERVED 0xE0 /* bits 5..7: reserved */
-
-typedef struct gz_stream {
- z_stream stream;
- int z_err; /* error code for last stream operation */
- int z_eof; /* set if end of input file */
- FILE *file; /* .gz file */
- Byte *inbuf; /* input buffer */
- Byte *outbuf; /* output buffer */
- uLong crc; /* crc32 of uncompressed data */
- char *msg; /* error message */
- char *path; /* path name for debugging only */
- int transparent; /* 1 if input file is not a .gz file */
- char mode; /* 'w' or 'r' */
- long startpos; /* start of compressed data in file (header skipped) */
-} gz_stream;
-
-
-local gzFile gz_open OF((const char *path, const char *mode, int fd));
-local int do_flush OF((gzFile file, int flush));
-local int get_byte OF((gz_stream *s));
-local void check_header OF((gz_stream *s));
-local int destroy OF((gz_stream *s));
-local void putLong OF((FILE *file, uLong x));
-local uLong getLong OF((gz_stream *s));
-
-/* ===========================================================================
- Opens a gzip (.gz) file for reading or writing. The mode parameter
- is as in fopen ("rb" or "wb"). The file is given either by file descriptor
- or path name (if fd == -1).
- gz_open return NULL if the file could not be opened or if there was
- insufficient memory to allocate the (de)compression state; errno
- can be checked to distinguish the two cases (if errno is zero, the
- zlib error is Z_MEM_ERROR).
-*/
-local gzFile gz_open (path, mode, fd)
- const char *path;
- const char *mode;
- int fd;
-{
- int err;
- int level = Z_DEFAULT_COMPRESSION; /* compression level */
- int strategy = Z_DEFAULT_STRATEGY; /* compression strategy */
- char *p = (char*)mode;
- gz_stream *s;
- char fmode[80]; /* copy of mode, without the compression level */
- char *m = fmode;
-
- if (!path || !mode) return Z_NULL;
-
- s = (gz_stream *)ALLOC(sizeof(gz_stream));
- if (!s) return Z_NULL;
-
- s->stream.zalloc = (alloc_func)0;
- s->stream.zfree = (free_func)0;
- s->stream.opaque = (voidpf)0;
- s->stream.next_in = s->inbuf = Z_NULL;
- s->stream.next_out = s->outbuf = Z_NULL;
- s->stream.avail_in = s->stream.avail_out = 0;
- s->file = NULL;
- s->z_err = Z_OK;
- s->z_eof = 0;
- s->crc = crc32(0L, Z_NULL, 0);
- s->msg = NULL;
- s->transparent = 0;
-
- s->path = (char*)ALLOC(strlen(path)+1);
- if (s->path == NULL) {
- return destroy(s), (gzFile)Z_NULL;
- }
- strcpy(s->path, path); /* do this early for debugging */
-
- s->mode = '\0';
- do {
- if (*p == 'r') s->mode = 'r';
- if (*p == 'w' || *p == 'a') s->mode = 'w';
- if (*p >= '0' && *p <= '9') {
- level = *p - '0';
- } else if (*p == 'f') {
- strategy = Z_FILTERED;
- } else if (*p == 'h') {
- strategy = Z_HUFFMAN_ONLY;
- } else {
- *m++ = *p; /* copy the mode */
- }
- } while (*p++ && m != fmode + sizeof(fmode));
- if (s->mode == '\0') return destroy(s), (gzFile)Z_NULL;
-
- if (s->mode == 'w') {
-#ifdef NO_DEFLATE
- err = Z_STREAM_ERROR;
-#else
- err = deflateInit2(&(s->stream), level,
- Z_DEFLATED, -MAX_WBITS, DEF_MEM_LEVEL, strategy);
- /* windowBits is passed < 0 to suppress zlib header */
-
- s->stream.next_out = s->outbuf = (Byte*)ALLOC(Z_BUFSIZE);
-#endif
- if (err != Z_OK || s->outbuf == Z_NULL) {
- return destroy(s), (gzFile)Z_NULL;
- }
- } else {
- s->stream.next_in = s->inbuf = (Byte*)ALLOC(Z_BUFSIZE);
-
- err = inflateInit2(&(s->stream), -MAX_WBITS);
- /* windowBits is passed < 0 to tell that there is no zlib header.
- * Note that in this case inflate *requires* an extra "dummy" byte
- * after the compressed stream in order to complete decompression and
- * return Z_STREAM_END. Here the gzip CRC32 ensures that 4 bytes are
- * present after the compressed stream.
- */
- if (err != Z_OK || s->inbuf == Z_NULL) {
- return destroy(s), (gzFile)Z_NULL;
- }
- }
- s->stream.avail_out = Z_BUFSIZE;
-
- errno = 0;
- s->file = fd < 0 ? F_OPEN(path, fmode) : (FILE*)fdopen(fd, fmode);
-
- if (s->file == NULL) {
- return destroy(s), (gzFile)Z_NULL;
- }
- if (s->mode == 'w') {
- /* Write a very simple .gz header:
- */
- fprintf(s->file, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1],
- Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/, OS_CODE);
- s->startpos = 10L;
- /* We use 10L instead of ftell(s->file) to because ftell causes an
- * fflush on some systems. This version of the library doesn't use
- * startpos anyway in write mode, so this initialization is not
- * necessary.
- */
- } else {
- check_header(s); /* skip the .gz header */
- s->startpos = (ftell(s->file) - s->stream.avail_in);
- }
-
- return (gzFile)s;
-}
-
-/* ===========================================================================
- Opens a gzip (.gz) file for reading or writing.
-*/
-gzFile ZEXPORT gzopen (path, mode)
- const char *path;
- const char *mode;
-{
- return gz_open (path, mode, -1);
-}
-
-/* ===========================================================================
- Associate a gzFile with the file descriptor fd. fd is not dup'ed here
- to mimic the behavio(u)r of fdopen.
-*/
-gzFile ZEXPORT gzdopen (fd, mode)
- int fd;
- const char *mode;
-{
- char name[20];
-
- if (fd < 0) return (gzFile)Z_NULL;
- sprintf(name, "<fd:%d>", fd); /* for debugging */
-
- return gz_open (name, mode, fd);
-}
-
-/* ===========================================================================
- * Update the compression level and strategy
- */
-int ZEXPORT gzsetparams (file, level, strategy)
- gzFile file;
- int level;
- int strategy;
-{
- gz_stream *s = (gz_stream*)file;
-
- if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
-
- /* Make room to allow flushing */
- if (s->stream.avail_out == 0) {
-
- s->stream.next_out = s->outbuf;
- if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) {
- s->z_err = Z_ERRNO;
- }
- s->stream.avail_out = Z_BUFSIZE;
- }
-
- return deflateParams (&(s->stream), level, strategy);
-}
-
-/* ===========================================================================
- Read a byte from a gz_stream; update next_in and avail_in. Return EOF
- for end of file.
- IN assertion: the stream s has been sucessfully opened for reading.
-*/
-local int get_byte(s)
- gz_stream *s;
-{
- if (s->z_eof) return EOF;
- if (s->stream.avail_in == 0) {
- errno = 0;
- s->stream.avail_in = fread(s->inbuf, 1, Z_BUFSIZE, s->file);
- if (s->stream.avail_in == 0) {
- s->z_eof = 1;
- if (ferror(s->file)) s->z_err = Z_ERRNO;
- return EOF;
- }
- s->stream.next_in = s->inbuf;
- }
- s->stream.avail_in--;
- return *(s->stream.next_in)++;
-}
-
-/* ===========================================================================
- Check the gzip header of a gz_stream opened for reading. Set the stream
- mode to transparent if the gzip magic header is not present; set s->err
- to Z_DATA_ERROR if the magic header is present but the rest of the header
- is incorrect.
- IN assertion: the stream s has already been created sucessfully;
- s->stream.avail_in is zero for the first time, but may be non-zero
- for concatenated .gz files.
-*/
-local void check_header(s)
- gz_stream *s;
-{
- int method; /* method byte */
- int flags; /* flags byte */
- uInt len;
- int c;
-
- /* Check the gzip magic header */
- for (len = 0; len < 2; len++) {
- c = get_byte(s);
- if (c != gz_magic[len]) {
- if (len != 0) s->stream.avail_in++, s->stream.next_in--;
- if (c != EOF) {
- s->stream.avail_in++, s->stream.next_in--;
- s->transparent = 1;
- }
- s->z_err = s->stream.avail_in != 0 ? Z_OK : Z_STREAM_END;
- return;
- }
- }
- method = get_byte(s);
- flags = get_byte(s);
- if (method != Z_DEFLATED || (flags & RESERVED) != 0) {
- s->z_err = Z_DATA_ERROR;
- return;
- }
-
- /* Discard time, xflags and OS code: */
- for (len = 0; len < 6; len++) (void)get_byte(s);
-
- if ((flags & EXTRA_FIELD) != 0) { /* skip the extra field */
- len = (uInt)get_byte(s);
- len += ((uInt)get_byte(s))<<8;
- /* len is garbage if EOF but the loop below will quit anyway */
- while (len-- != 0 && get_byte(s) != EOF) ;
- }
- if ((flags & ORIG_NAME) != 0) { /* skip the original file name */
- while ((c = get_byte(s)) != 0 && c != EOF) ;
- }
- if ((flags & COMMENT) != 0) { /* skip the .gz file comment */
- while ((c = get_byte(s)) != 0 && c != EOF) ;
- }
- if ((flags & HEAD_CRC) != 0) { /* skip the header crc */
- for (len = 0; len < 2; len++) (void)get_byte(s);
- }
- s->z_err = s->z_eof ? Z_DATA_ERROR : Z_OK;
-}
-
- /* ===========================================================================
- * Cleanup then free the given gz_stream. Return a zlib error code.
- Try freeing in the reverse order of allocations.
- */
-local int destroy (s)
- gz_stream *s;
-{
- int err = Z_OK;
-
- if (!s) return Z_STREAM_ERROR;
-
- TRYFREE(s->msg);
-
- if (s->stream.state != NULL) {
- if (s->mode == 'w') {
-#ifdef NO_DEFLATE
- err = Z_STREAM_ERROR;
-#else
- err = deflateEnd(&(s->stream));
-#endif
- } else if (s->mode == 'r') {
- err = inflateEnd(&(s->stream));
- }
- }
- if (s->file != NULL && fclose(s->file)) {
-#ifdef ESPIPE
- if (errno != ESPIPE) /* fclose is broken for pipes in HP/UX */
-#endif
- err = Z_ERRNO;
- }
- if (s->z_err < 0) err = s->z_err;
-
- TRYFREE(s->inbuf);
- TRYFREE(s->outbuf);
- TRYFREE(s->path);
- TRYFREE(s);
- return err;
-}
-
-/* ===========================================================================
- Reads the given number of uncompressed bytes from the compressed file.
- gzread returns the number of bytes actually read (0 for end of file).
-*/
-int ZEXPORT gzread (file, buf, len)
- gzFile file;
- voidp buf;
- unsigned len;
-{
- gz_stream *s = (gz_stream*)file;
- Bytef *start = (Bytef*)buf; /* starting point for crc computation */
- Byte *next_out; /* == stream.next_out but not forced far (for MSDOS) */
-
- if (s == NULL || s->mode != 'r') return Z_STREAM_ERROR;
-
- if (s->z_err == Z_DATA_ERROR || s->z_err == Z_ERRNO) return -1;
- if (s->z_err == Z_STREAM_END) return 0; /* EOF */
-
- next_out = (Byte*)buf;
- s->stream.next_out = (Bytef*)buf;
- s->stream.avail_out = len;
-
- while (s->stream.avail_out != 0) {
-
- if (s->transparent) {
- /* Copy first the lookahead bytes: */
- uInt n = s->stream.avail_in;
- if (n > s->stream.avail_out) n = s->stream.avail_out;
- if (n > 0) {
- zmemcpy(s->stream.next_out, s->stream.next_in, n);
- next_out += n;
- s->stream.next_out = next_out;
- s->stream.next_in += n;
- s->stream.avail_out -= n;
- s->stream.avail_in -= n;
- }
- if (s->stream.avail_out > 0) {
- s->stream.avail_out -= fread(next_out, 1, s->stream.avail_out,
- s->file);
- }
- len -= s->stream.avail_out;
- s->stream.total_in += (uLong)len;
- s->stream.total_out += (uLong)len;
- if (len == 0) s->z_eof = 1;
- return (int)len;
- }
- if (s->stream.avail_in == 0 && !s->z_eof) {
-
- errno = 0;
- s->stream.avail_in = fread(s->inbuf, 1, Z_BUFSIZE, s->file);
- if (s->stream.avail_in == 0) {
- s->z_eof = 1;
- if (ferror(s->file)) {
- s->z_err = Z_ERRNO;
- break;
- }
- }
- s->stream.next_in = s->inbuf;
- }
- s->z_err = inflate(&(s->stream), Z_NO_FLUSH);
-
- if (s->z_err == Z_STREAM_END) {
- /* Check CRC and original size */
- s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
- start = s->stream.next_out;
-
- if (getLong(s) != s->crc) {
- s->z_err = Z_DATA_ERROR;
- } else {
- (void)getLong(s);
- /* The uncompressed length returned by above getlong() may
- * be different from s->stream.total_out) in case of
- * concatenated .gz files. Check for such files:
- */
- check_header(s);
- if (s->z_err == Z_OK) {
- uLong total_in = s->stream.total_in;
- uLong total_out = s->stream.total_out;
-
- inflateReset(&(s->stream));
- s->stream.total_in = total_in;
- s->stream.total_out = total_out;
- s->crc = crc32(0L, Z_NULL, 0);
- }
- }
- }
- if (s->z_err != Z_OK || s->z_eof) break;
- }
- s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
-
- return (int)(len - s->stream.avail_out);
-}
-
-
-/* ===========================================================================
- Reads one byte from the compressed file. gzgetc returns this byte
- or -1 in case of end of file or error.
-*/
-int ZEXPORT gzgetc(file)
- gzFile file;
-{
- unsigned char c;
-
- return gzread(file, &c, 1) == 1 ? c : -1;
-}
-
-
-/* ===========================================================================
- Reads bytes from the compressed file until len-1 characters are
- read, or a newline character is read and transferred to buf, or an
- end-of-file condition is encountered. The string is then terminated
- with a null character.
- gzgets returns buf, or Z_NULL in case of error.
-
- The current implementation is not optimized at all.
-*/
-char * ZEXPORT gzgets(file, buf, len)
- gzFile file;
- char *buf;
- int len;
-{
- char *b = buf;
- if (buf == Z_NULL || len <= 0) return Z_NULL;
-
- while (--len > 0 && gzread(file, buf, 1) == 1 && *buf++ != '\n') ;
- *buf = '\0';
- return b == buf && len > 0 ? Z_NULL : b;
-}
-
-
-#ifndef NO_DEFLATE
-/* ===========================================================================
- Writes the given number of uncompressed bytes into the compressed file.
- gzwrite returns the number of bytes actually written (0 in case of error).
-*/
-int ZEXPORT gzwrite (file, buf, len)
- gzFile file;
- const voidp buf;
- unsigned len;
-{
- gz_stream *s = (gz_stream*)file;
-
- if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
-
- s->stream.next_in = (Bytef*)buf;
- s->stream.avail_in = len;
-
- while (s->stream.avail_in != 0) {
-
- if (s->stream.avail_out == 0) {
-
- s->stream.next_out = s->outbuf;
- if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) {
- s->z_err = Z_ERRNO;
- break;
- }
- s->stream.avail_out = Z_BUFSIZE;
- }
- s->z_err = deflate(&(s->stream), Z_NO_FLUSH);
- if (s->z_err != Z_OK) break;
- }
- s->crc = crc32(s->crc, (const Bytef *)buf, len);
-
- return (int)(len - s->stream.avail_in);
-}
-
-/* ===========================================================================
- Converts, formats, and writes the args to the compressed file under
- control of the format string, as in fprintf. gzprintf returns the number of
- uncompressed bytes actually written (0 in case of error).
-*/
-#ifdef STDC
-#include <stdarg.h>
-
-int ZEXPORTVA gzprintf (gzFile file, const char *format, /* args */ ...)
-{
- char buf[Z_PRINTF_BUFSIZE];
- va_list va;
- int len;
-
- va_start(va, format);
-#ifdef HAS_vsnprintf
- (void)vsnprintf(buf, sizeof(buf), format, va);
-#else
- (void)vsprintf(buf, format, va);
-#endif
- va_end(va);
- len = strlen(buf); /* some *sprintf don't return the nb of bytes written */
- if (len <= 0) return 0;
-
- return gzwrite(file, buf, (unsigned)len);
-}
-#else /* not ANSI C */
-
-int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
- a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
- gzFile file;
- const char *format;
- int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
- a11, a12, a13, a14, a15, a16, a17, a18, a19, a20;
-{
- char buf[Z_PRINTF_BUFSIZE];
- int len;
-
-#ifdef HAS_snprintf
- snprintf(buf, sizeof(buf), format, a1, a2, a3, a4, a5, a6, a7, a8,
- a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
-#else
- sprintf(buf, format, a1, a2, a3, a4, a5, a6, a7, a8,
- a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
-#endif
- len = strlen(buf); /* old sprintf doesn't return the nb of bytes written */
- if (len <= 0) return 0;
-
- return gzwrite(file, buf, len);
-}
-#endif
-
-/* ===========================================================================
- Writes c, converted to an unsigned char, into the compressed file.
- gzputc returns the value that was written, or -1 in case of error.
-*/
-int ZEXPORT gzputc(file, c)
- gzFile file;
- int c;
-{
- unsigned char cc = (unsigned char) c; /* required for big endian systems */
-
- return gzwrite(file, &cc, 1) == 1 ? (int)cc : -1;
-}
-
-
-/* ===========================================================================
- Writes the given null-terminated string to the compressed file, excluding
- the terminating null character.
- gzputs returns the number of characters written, or -1 in case of error.
-*/
-int ZEXPORT gzputs(file, s)
- gzFile file;
- const char *s;
-{
- return gzwrite(file, (char*)s, (unsigned)strlen(s));
-}
-
-
-/* ===========================================================================
- Flushes all pending output into the compressed file. The parameter
- flush is as in the deflate() function.
-*/
-local int do_flush (file, flush)
- gzFile file;
- int flush;
-{
- uInt len;
- int done = 0;
- gz_stream *s = (gz_stream*)file;
-
- if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
-
- s->stream.avail_in = 0; /* should be zero already anyway */
-
- for (;;) {
- len = Z_BUFSIZE - s->stream.avail_out;
-
- if (len != 0) {
- if ((uInt)fwrite(s->outbuf, 1, len, s->file) != len) {
- s->z_err = Z_ERRNO;
- return Z_ERRNO;
- }
- s->stream.next_out = s->outbuf;
- s->stream.avail_out = Z_BUFSIZE;
- }
- if (done) break;
- s->z_err = deflate(&(s->stream), flush);
-
- /* Ignore the second of two consecutive flushes: */
- if (len == 0 && s->z_err == Z_BUF_ERROR) s->z_err = Z_OK;
-
- /* deflate has finished flushing only when it hasn't used up
- * all the available space in the output buffer:
- */
- done = (s->stream.avail_out != 0 || s->z_err == Z_STREAM_END);
-
- if (s->z_err != Z_OK && s->z_err != Z_STREAM_END) break;
- }
- return s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
-}
-
-int ZEXPORT gzflush (file, flush)
- gzFile file;
- int flush;
-{
- gz_stream *s = (gz_stream*)file;
- int err = do_flush (file, flush);
-
- if (err) return err;
- fflush(s->file);
- return s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
-}
-#endif /* NO_DEFLATE */
-
-/* ===========================================================================
- Sets the starting position for the next gzread or gzwrite on the given
- compressed file. The offset represents a number of bytes in the
- gzseek returns the resulting offset location as measured in bytes from
- the beginning of the uncompressed stream, or -1 in case of error.
- SEEK_END is not implemented, returns error.
- In this version of the library, gzseek can be extremely slow.
-*/
-z_off_t ZEXPORT gzseek (file, offset, whence)
- gzFile file;
- z_off_t offset;
- int whence;
-{
- gz_stream *s = (gz_stream*)file;
-
- if (s == NULL || whence == SEEK_END ||
- s->z_err == Z_ERRNO || s->z_err == Z_DATA_ERROR) {
- return -1L;
- }
-
- if (s->mode == 'w') {
-#ifdef NO_DEFLATE
- return -1L;
-#else
- if (whence == SEEK_SET) {
- offset -= s->stream.total_in;
- }
- if (offset < 0) return -1L;
-
- /* At this point, offset is the number of zero bytes to write. */
- if (s->inbuf == Z_NULL) {
- s->inbuf = (Byte*)ALLOC(Z_BUFSIZE); /* for seeking */
- zmemzero(s->inbuf, Z_BUFSIZE);
- }
- while (offset > 0) {
- uInt size = Z_BUFSIZE;
- if (offset < Z_BUFSIZE) size = (uInt)offset;
-
- size = gzwrite(file, s->inbuf, size);
- if (size == 0) return -1L;
-
- offset -= size;
- }
- return (z_off_t)s->stream.total_in;
-#endif
- }
- /* Rest of function is for reading only */
-
- /* compute absolute position */
- if (whence == SEEK_CUR) {
- offset += s->stream.total_out;
- }
- if (offset < 0) return -1L;
-
- if (s->transparent) {
- /* map to fseek */
- s->stream.avail_in = 0;
- s->stream.next_in = s->inbuf;
- if (fseek(s->file, offset, SEEK_SET) < 0) return -1L;
-
- s->stream.total_in = s->stream.total_out = (uLong)offset;
- return offset;
- }
-
- /* For a negative seek, rewind and use positive seek */
- if ((uLong)offset >= s->stream.total_out) {
- offset -= s->stream.total_out;
- } else if (gzrewind(file) < 0) {
- return -1L;
- }
- /* offset is now the number of bytes to skip. */
-
- if (offset != 0 && s->outbuf == Z_NULL) {
- s->outbuf = (Byte*)ALLOC(Z_BUFSIZE);
- }
- while (offset > 0) {
- int size = Z_BUFSIZE;
- if (offset < Z_BUFSIZE) size = (int)offset;
-
- size = gzread(file, s->outbuf, (uInt)size);
- if (size <= 0) return -1L;
- offset -= size;
- }
- return (z_off_t)s->stream.total_out;
-}
-
-/* ===========================================================================
- Rewinds input file.
-*/
-int ZEXPORT gzrewind (file)
- gzFile file;
-{
- gz_stream *s = (gz_stream*)file;
-
- if (s == NULL || s->mode != 'r') return -1;
-
- s->z_err = Z_OK;
- s->z_eof = 0;
- s->stream.avail_in = 0;
- s->stream.next_in = s->inbuf;
- s->crc = crc32(0L, Z_NULL, 0);
-
- if (s->startpos == 0) { /* not a compressed file */
- rewind(s->file);
- return 0;
- }
-
- (void) inflateReset(&s->stream);
- return fseek(s->file, s->startpos, SEEK_SET);
-}
-
-/* ===========================================================================
- Returns the starting position for the next gzread or gzwrite on the
- given compressed file. This position represents a number of bytes in the
- uncompressed data stream.
-*/
-z_off_t ZEXPORT gztell (file)
- gzFile file;
-{
- return gzseek(file, 0L, SEEK_CUR);
-}
-
-/* ===========================================================================
- Returns 1 when EOF has previously been detected reading the given
- input stream, otherwise zero.
-*/
-int ZEXPORT gzeof (file)
- gzFile file;
-{
- gz_stream *s = (gz_stream*)file;
-
- return (s == NULL || s->mode != 'r') ? 0 : s->z_eof;
-}
-
-/* ===========================================================================
- Outputs a long in LSB order to the given file
-*/
-local void putLong (file, x)
- FILE *file;
- uLong x;
-{
- int n;
- for (n = 0; n < 4; n++) {
- fputc((int)(x & 0xff), file);
- x >>= 8;
- }
-}
-
-/* ===========================================================================
- Reads a long in LSB order from the given gz_stream. Sets z_err in case
- of error.
-*/
-local uLong getLong (s)
- gz_stream *s;
-{
- uLong x = (uLong)get_byte(s);
- int c;
-
- x += ((uLong)get_byte(s))<<8;
- x += ((uLong)get_byte(s))<<16;
- c = get_byte(s);
- if (c == EOF) s->z_err = Z_DATA_ERROR;
- x += ((uLong)c)<<24;
- return x;
-}
-
-/* ===========================================================================
- Flushes all pending output if necessary, closes the compressed file
- and deallocates all the (de)compression state.
-*/
-int ZEXPORT gzclose (file)
- gzFile file;
-{
- int err;
- gz_stream *s = (gz_stream*)file;
-
- if (s == NULL) return Z_STREAM_ERROR;
-
- if (s->mode == 'w') {
-#ifdef NO_DEFLATE
- return Z_STREAM_ERROR;
-#else
- err = do_flush (file, Z_FINISH);
- if (err != Z_OK) return destroy((gz_stream*)file);
-
- putLong (s->file, s->crc);
- putLong (s->file, s->stream.total_in);
-#endif
- }
- return destroy((gz_stream*)file);
-}
-
-/* ===========================================================================
- Returns the error message for the last error which occured on the
- given compressed file. errnum is set to zlib error number. If an
- error occured in the file system and not in the compression library,
- errnum is set to Z_ERRNO and the application may consult errno
- to get the exact error code.
-*/
-const char* ZEXPORT gzerror (file, errnum)
- gzFile file;
- int *errnum;
-{
- char *m;
- gz_stream *s = (gz_stream*)file;
-
- if (s == NULL) {
- *errnum = Z_STREAM_ERROR;
- return (const char*)ERR_MSG(Z_STREAM_ERROR);
- }
- *errnum = s->z_err;
- if (*errnum == Z_OK) return (const char*)"";
-
- m = (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg);
-
- if (m == NULL || *m == '\0') m = (char*)ERR_MSG(s->z_err);
-
- TRYFREE(s->msg);
- s->msg = (char*)ALLOC(strlen(s->path) + strlen(m) + 3);
- strcpy(s->msg, s->path);
- strcat(s->msg, ": ");
- strcat(s->msg, m);
- return (const char*)s->msg;
-}
diff --git a/zlib/inffixed.h b/zlib/inffixed.h
new file mode 100644
index 000000000..77f7e7631
--- /dev/null
+++ b/zlib/inffixed.h
@@ -0,0 +1,151 @@
+/* inffixed.h -- table for decoding fixed codes
+ * Generated automatically by the maketree.c program
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+ part of the implementation of the compression library and is
+ subject to change. Applications should only use zlib.h.
+ */
+
+local uInt fixed_bl = 9;
+local uInt fixed_bd = 5;
+local inflate_huft fixed_tl[] = {
+ {{{96,7}},256}, {{{0,8}},80}, {{{0,8}},16}, {{{84,8}},115},
+ {{{82,7}},31}, {{{0,8}},112}, {{{0,8}},48}, {{{0,9}},192},
+ {{{80,7}},10}, {{{0,8}},96}, {{{0,8}},32}, {{{0,9}},160},
+ {{{0,8}},0}, {{{0,8}},128}, {{{0,8}},64}, {{{0,9}},224},
+ {{{80,7}},6}, {{{0,8}},88}, {{{0,8}},24}, {{{0,9}},144},
+ {{{83,7}},59}, {{{0,8}},120}, {{{0,8}},56}, {{{0,9}},208},
+ {{{81,7}},17}, {{{0,8}},104}, {{{0,8}},40}, {{{0,9}},176},
+ {{{0,8}},8}, {{{0,8}},136}, {{{0,8}},72}, {{{0,9}},240},
+ {{{80,7}},4}, {{{0,8}},84}, {{{0,8}},20}, {{{85,8}},227},
+ {{{83,7}},43}, {{{0,8}},116}, {{{0,8}},52}, {{{0,9}},200},
+ {{{81,7}},13}, {{{0,8}},100}, {{{0,8}},36}, {{{0,9}},168},
+ {{{0,8}},4}, {{{0,8}},132}, {{{0,8}},68}, {{{0,9}},232},
+ {{{80,7}},8}, {{{0,8}},92}, {{{0,8}},28}, {{{0,9}},152},
+ {{{84,7}},83}, {{{0,8}},124}, {{{0,8}},60}, {{{0,9}},216},
+ {{{82,7}},23}, {{{0,8}},108}, {{{0,8}},44}, {{{0,9}},184},
+ {{{0,8}},12}, {{{0,8}},140}, {{{0,8}},76}, {{{0,9}},248},
+ {{{80,7}},3}, {{{0,8}},82}, {{{0,8}},18}, {{{85,8}},163},
+ {{{83,7}},35}, {{{0,8}},114}, {{{0,8}},50}, {{{0,9}},196},
+ {{{81,7}},11}, {{{0,8}},98}, {{{0,8}},34}, {{{0,9}},164},
+ {{{0,8}},2}, {{{0,8}},130}, {{{0,8}},66}, {{{0,9}},228},
+ {{{80,7}},7}, {{{0,8}},90}, {{{0,8}},26}, {{{0,9}},148},
+ {{{84,7}},67}, {{{0,8}},122}, {{{0,8}},58}, {{{0,9}},212},
+ {{{82,7}},19}, {{{0,8}},106}, {{{0,8}},42}, {{{0,9}},180},
+ {{{0,8}},10}, {{{0,8}},138}, {{{0,8}},74}, {{{0,9}},244},
+ {{{80,7}},5}, {{{0,8}},86}, {{{0,8}},22}, {{{192,8}},0},
+ {{{83,7}},51}, {{{0,8}},118}, {{{0,8}},54}, {{{0,9}},204},
+ {{{81,7}},15}, {{{0,8}},102}, {{{0,8}},38}, {{{0,9}},172},
+ {{{0,8}},6}, {{{0,8}},134}, {{{0,8}},70}, {{{0,9}},236},
+ {{{80,7}},9}, {{{0,8}},94}, {{{0,8}},30}, {{{0,9}},156},
+ {{{84,7}},99}, {{{0,8}},126}, {{{0,8}},62}, {{{0,9}},220},
+ {{{82,7}},27}, {{{0,8}},110}, {{{0,8}},46}, {{{0,9}},188},
+ {{{0,8}},14}, {{{0,8}},142}, {{{0,8}},78}, {{{0,9}},252},
+ {{{96,7}},256}, {{{0,8}},81}, {{{0,8}},17}, {{{85,8}},131},
+ {{{82,7}},31}, {{{0,8}},113}, {{{0,8}},49}, {{{0,9}},194},
+ {{{80,7}},10}, {{{0,8}},97}, {{{0,8}},33}, {{{0,9}},162},
+ {{{0,8}},1}, {{{0,8}},129}, {{{0,8}},65}, {{{0,9}},226},
+ {{{80,7}},6}, {{{0,8}},89}, {{{0,8}},25}, {{{0,9}},146},
+ {{{83,7}},59}, {{{0,8}},121}, {{{0,8}},57}, {{{0,9}},210},
+ {{{81,7}},17}, {{{0,8}},105}, {{{0,8}},41}, {{{0,9}},178},
+ {{{0,8}},9}, {{{0,8}},137}, {{{0,8}},73}, {{{0,9}},242},
+ {{{80,7}},4}, {{{0,8}},85}, {{{0,8}},21}, {{{80,8}},258},
+ {{{83,7}},43}, {{{0,8}},117}, {{{0,8}},53}, {{{0,9}},202},
+ {{{81,7}},13}, {{{0,8}},101}, {{{0,8}},37}, {{{0,9}},170},
+ {{{0,8}},5}, {{{0,8}},133}, {{{0,8}},69}, {{{0,9}},234},
+ {{{80,7}},8}, {{{0,8}},93}, {{{0,8}},29}, {{{0,9}},154},
+ {{{84,7}},83}, {{{0,8}},125}, {{{0,8}},61}, {{{0,9}},218},
+ {{{82,7}},23}, {{{0,8}},109}, {{{0,8}},45}, {{{0,9}},186},
+ {{{0,8}},13}, {{{0,8}},141}, {{{0,8}},77}, {{{0,9}},250},
+ {{{80,7}},3}, {{{0,8}},83}, {{{0,8}},19}, {{{85,8}},195},
+ {{{83,7}},35}, {{{0,8}},115}, {{{0,8}},51}, {{{0,9}},198},
+ {{{81,7}},11}, {{{0,8}},99}, {{{0,8}},35}, {{{0,9}},166},
+ {{{0,8}},3}, {{{0,8}},131}, {{{0,8}},67}, {{{0,9}},230},
+ {{{80,7}},7}, {{{0,8}},91}, {{{0,8}},27}, {{{0,9}},150},
+ {{{84,7}},67}, {{{0,8}},123}, {{{0,8}},59}, {{{0,9}},214},
+ {{{82,7}},19}, {{{0,8}},107}, {{{0,8}},43}, {{{0,9}},182},
+ {{{0,8}},11}, {{{0,8}},139}, {{{0,8}},75}, {{{0,9}},246},
+ {{{80,7}},5}, {{{0,8}},87}, {{{0,8}},23}, {{{192,8}},0},
+ {{{83,7}},51}, {{{0,8}},119}, {{{0,8}},55}, {{{0,9}},206},
+ {{{81,7}},15}, {{{0,8}},103}, {{{0,8}},39}, {{{0,9}},174},
+ {{{0,8}},7}, {{{0,8}},135}, {{{0,8}},71}, {{{0,9}},238},
+ {{{80,7}},9}, {{{0,8}},95}, {{{0,8}},31}, {{{0,9}},158},
+ {{{84,7}},99}, {{{0,8}},127}, {{{0,8}},63}, {{{0,9}},222},
+ {{{82,7}},27}, {{{0,8}},111}, {{{0,8}},47}, {{{0,9}},190},
+ {{{0,8}},15}, {{{0,8}},143}, {{{0,8}},79}, {{{0,9}},254},
+ {{{96,7}},256}, {{{0,8}},80}, {{{0,8}},16}, {{{84,8}},115},
+ {{{82,7}},31}, {{{0,8}},112}, {{{0,8}},48}, {{{0,9}},193},
+ {{{80,7}},10}, {{{0,8}},96}, {{{0,8}},32}, {{{0,9}},161},
+ {{{0,8}},0}, {{{0,8}},128}, {{{0,8}},64}, {{{0,9}},225},
+ {{{80,7}},6}, {{{0,8}},88}, {{{0,8}},24}, {{{0,9}},145},
+ {{{83,7}},59}, {{{0,8}},120}, {{{0,8}},56}, {{{0,9}},209},
+ {{{81,7}},17}, {{{0,8}},104}, {{{0,8}},40}, {{{0,9}},177},
+ {{{0,8}},8}, {{{0,8}},136}, {{{0,8}},72}, {{{0,9}},241},
+ {{{80,7}},4}, {{{0,8}},84}, {{{0,8}},20}, {{{85,8}},227},
+ {{{83,7}},43}, {{{0,8}},116}, {{{0,8}},52}, {{{0,9}},201},
+ {{{81,7}},13}, {{{0,8}},100}, {{{0,8}},36}, {{{0,9}},169},
+ {{{0,8}},4}, {{{0,8}},132}, {{{0,8}},68}, {{{0,9}},233},
+ {{{80,7}},8}, {{{0,8}},92}, {{{0,8}},28}, {{{0,9}},153},
+ {{{84,7}},83}, {{{0,8}},124}, {{{0,8}},60}, {{{0,9}},217},
+ {{{82,7}},23}, {{{0,8}},108}, {{{0,8}},44}, {{{0,9}},185},
+ {{{0,8}},12}, {{{0,8}},140}, {{{0,8}},76}, {{{0,9}},249},
+ {{{80,7}},3}, {{{0,8}},82}, {{{0,8}},18}, {{{85,8}},163},
+ {{{83,7}},35}, {{{0,8}},114}, {{{0,8}},50}, {{{0,9}},197},
+ {{{81,7}},11}, {{{0,8}},98}, {{{0,8}},34}, {{{0,9}},165},
+ {{{0,8}},2}, {{{0,8}},130}, {{{0,8}},66}, {{{0,9}},229},
+ {{{80,7}},7}, {{{0,8}},90}, {{{0,8}},26}, {{{0,9}},149},
+ {{{84,7}},67}, {{{0,8}},122}, {{{0,8}},58}, {{{0,9}},213},
+ {{{82,7}},19}, {{{0,8}},106}, {{{0,8}},42}, {{{0,9}},181},
+ {{{0,8}},10}, {{{0,8}},138}, {{{0,8}},74}, {{{0,9}},245},
+ {{{80,7}},5}, {{{0,8}},86}, {{{0,8}},22}, {{{192,8}},0},
+ {{{83,7}},51}, {{{0,8}},118}, {{{0,8}},54}, {{{0,9}},205},
+ {{{81,7}},15}, {{{0,8}},102}, {{{0,8}},38}, {{{0,9}},173},
+ {{{0,8}},6}, {{{0,8}},134}, {{{0,8}},70}, {{{0,9}},237},
+ {{{80,7}},9}, {{{0,8}},94}, {{{0,8}},30}, {{{0,9}},157},
+ {{{84,7}},99}, {{{0,8}},126}, {{{0,8}},62}, {{{0,9}},221},
+ {{{82,7}},27}, {{{0,8}},110}, {{{0,8}},46}, {{{0,9}},189},
+ {{{0,8}},14}, {{{0,8}},142}, {{{0,8}},78}, {{{0,9}},253},
+ {{{96,7}},256}, {{{0,8}},81}, {{{0,8}},17}, {{{85,8}},131},
+ {{{82,7}},31}, {{{0,8}},113}, {{{0,8}},49}, {{{0,9}},195},
+ {{{80,7}},10}, {{{0,8}},97}, {{{0,8}},33}, {{{0,9}},163},
+ {{{0,8}},1}, {{{0,8}},129}, {{{0,8}},65}, {{{0,9}},227},
+ {{{80,7}},6}, {{{0,8}},89}, {{{0,8}},25}, {{{0,9}},147},
+ {{{83,7}},59}, {{{0,8}},121}, {{{0,8}},57}, {{{0,9}},211},
+ {{{81,7}},17}, {{{0,8}},105}, {{{0,8}},41}, {{{0,9}},179},
+ {{{0,8}},9}, {{{0,8}},137}, {{{0,8}},73}, {{{0,9}},243},
+ {{{80,7}},4}, {{{0,8}},85}, {{{0,8}},21}, {{{80,8}},258},
+ {{{83,7}},43}, {{{0,8}},117}, {{{0,8}},53}, {{{0,9}},203},
+ {{{81,7}},13}, {{{0,8}},101}, {{{0,8}},37}, {{{0,9}},171},
+ {{{0,8}},5}, {{{0,8}},133}, {{{0,8}},69}, {{{0,9}},235},
+ {{{80,7}},8}, {{{0,8}},93}, {{{0,8}},29}, {{{0,9}},155},
+ {{{84,7}},83}, {{{0,8}},125}, {{{0,8}},61}, {{{0,9}},219},
+ {{{82,7}},23}, {{{0,8}},109}, {{{0,8}},45}, {{{0,9}},187},
+ {{{0,8}},13}, {{{0,8}},141}, {{{0,8}},77}, {{{0,9}},251},
+ {{{80,7}},3}, {{{0,8}},83}, {{{0,8}},19}, {{{85,8}},195},
+ {{{83,7}},35}, {{{0,8}},115}, {{{0,8}},51}, {{{0,9}},199},
+ {{{81,7}},11}, {{{0,8}},99}, {{{0,8}},35}, {{{0,9}},167},
+ {{{0,8}},3}, {{{0,8}},131}, {{{0,8}},67}, {{{0,9}},231},
+ {{{80,7}},7}, {{{0,8}},91}, {{{0,8}},27}, {{{0,9}},151},
+ {{{84,7}},67}, {{{0,8}},123}, {{{0,8}},59}, {{{0,9}},215},
+ {{{82,7}},19}, {{{0,8}},107}, {{{0,8}},43}, {{{0,9}},183},
+ {{{0,8}},11}, {{{0,8}},139}, {{{0,8}},75}, {{{0,9}},247},
+ {{{80,7}},5}, {{{0,8}},87}, {{{0,8}},23}, {{{192,8}},0},
+ {{{83,7}},51}, {{{0,8}},119}, {{{0,8}},55}, {{{0,9}},207},
+ {{{81,7}},15}, {{{0,8}},103}, {{{0,8}},39}, {{{0,9}},175},
+ {{{0,8}},7}, {{{0,8}},135}, {{{0,8}},71}, {{{0,9}},239},
+ {{{80,7}},9}, {{{0,8}},95}, {{{0,8}},31}, {{{0,9}},159},
+ {{{84,7}},99}, {{{0,8}},127}, {{{0,8}},63}, {{{0,9}},223},
+ {{{82,7}},27}, {{{0,8}},111}, {{{0,8}},47}, {{{0,9}},191},
+ {{{0,8}},15}, {{{0,8}},143}, {{{0,8}},79}, {{{0,9}},255}
+ };
+local inflate_huft fixed_td[] = {
+ {{{80,5}},1}, {{{87,5}},257}, {{{83,5}},17}, {{{91,5}},4097},
+ {{{81,5}},5}, {{{89,5}},1025}, {{{85,5}},65}, {{{93,5}},16385},
+ {{{80,5}},3}, {{{88,5}},513}, {{{84,5}},33}, {{{92,5}},8193},
+ {{{82,5}},9}, {{{90,5}},2049}, {{{86,5}},129}, {{{192,5}},24577},
+ {{{80,5}},2}, {{{87,5}},385}, {{{83,5}},25}, {{{91,5}},6145},
+ {{{81,5}},7}, {{{89,5}},1537}, {{{85,5}},97}, {{{93,5}},24577},
+ {{{80,5}},4}, {{{88,5}},769}, {{{84,5}},49}, {{{92,5}},12289},
+ {{{82,5}},13}, {{{90,5}},3073}, {{{86,5}},193}, {{{192,5}},24577}
+ };
diff --git a/zlib/trees.h b/zlib/trees.h
new file mode 100644
index 000000000..72facf900
--- /dev/null
+++ b/zlib/trees.h
@@ -0,0 +1,128 @@
+/* header created automatically with -DGEN_TREES_H */
+
+local const ct_data static_ltree[L_CODES+2] = {
+{{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}},
+{{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}},
+{{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}},
+{{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}},
+{{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}},
+{{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}},
+{{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}},
+{{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}},
+{{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}},
+{{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}},
+{{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}},
+{{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}},
+{{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}},
+{{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}},
+{{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}},
+{{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}},
+{{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}},
+{{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}},
+{{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}},
+{{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}},
+{{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}},
+{{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}},
+{{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}},
+{{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}},
+{{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}},
+{{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}},
+{{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}},
+{{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}},
+{{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}},
+{{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}},
+{{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}},
+{{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}},
+{{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}},
+{{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}},
+{{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}},
+{{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}},
+{{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}},
+{{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}},
+{{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}},
+{{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}},
+{{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}},
+{{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}},
+{{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}},
+{{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}},
+{{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}},
+{{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}},
+{{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}},
+{{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}},
+{{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}},
+{{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}},
+{{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}},
+{{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}},
+{{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}},
+{{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}},
+{{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}},
+{{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}},
+{{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}},
+{{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}}
+};
+
+local const ct_data static_dtree[D_CODES] = {
+{{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}},
+{{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}},
+{{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}},
+{{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}},
+{{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}},
+{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}}
+};
+
+const uch _dist_code[DIST_CODE_LEN] = {
+ 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8,
+ 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10,
+10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13,
+13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
+15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17,
+18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22,
+23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27,
+27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
+};
+
+const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12,
+13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
+17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19,
+19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22,
+22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
+23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26,
+26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28
+};
+
+local const int base_length[LENGTH_CODES] = {
+0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56,
+64, 80, 96, 112, 128, 160, 192, 224, 0
+};
+
+local const int base_dist[D_CODES] = {
+ 0, 1, 2, 3, 4, 6, 8, 12, 16, 24,
+ 32, 48, 64, 96, 128, 192, 256, 384, 512, 768,
+ 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576
+};
+
diff --git a/zlib/zconf.h~ b/zlib/zconf.h~
deleted file mode 100644
index 12e6a8487..000000000
--- a/zlib/zconf.h~
+++ /dev/null
@@ -1,186 +0,0 @@
-#warning local zconf
-
-/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-1996 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* $Id$ */
-
-#ifndef _ZCONF_H
-#define _ZCONF_H
-
-/*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
- */
-#ifdef Z_PREFIX
-# define deflateInit_ z_deflateInit_
-# define deflate z_deflate
-# define deflateEnd z_deflateEnd
-# define inflateInit_ z_inflateInit_
-# define inflate z_inflate
-# define inflateEnd z_inflateEnd
-# define deflateInit2_ z_deflateInit2_
-# define deflateSetDictionary z_deflateSetDictionary
-# define deflateCopy z_deflateCopy
-# define deflateReset z_deflateReset
-# define deflateParams z_deflateParams
-# define inflateInit2_ z_inflateInit2_
-# define inflateSetDictionary z_inflateSetDictionary
-# define inflateSync z_inflateSync
-# define inflateReset z_inflateReset
-# define compress z_compress
-# define uncompress z_uncompress
-# define adler32 z_adler32
-# define crc32 z_crc32
-# define get_crc_table z_get_crc_table
-
-# define Byte z_Byte
-# define uInt z_uInt
-# define uLong z_uLong
-# define Bytef z_Bytef
-# define charf z_charf
-# define intf z_intf
-# define uIntf z_uIntf
-# define uLongf z_uLongf
-# define voidpf z_voidpf
-# define voidp z_voidp
-#endif
-
-#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
-# define WIN32
-#endif
-#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386)
-# ifndef __32BIT__
-# define __32BIT__
-# endif
-#endif
-#if defined(__MSDOS__) && !defined(MSDOS)
-# define MSDOS
-#endif
-
-/*
- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
- * than 64k bytes at a time (needed on systems with 16-bit int).
- */
-#if defined(MSDOS) && !defined(__32BIT__)
-# define MAXSEG_64K
-#endif
-#ifdef MSDOS
-# define UNALIGNED_OK
-#endif
-
-#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) && !defined(STDC)
-# define STDC
-#endif
-#if (defined(__STDC__) || defined(__cplusplus)) && !defined(STDC)
-# define STDC
-#endif
-
-#ifndef STDC
-# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-# define const
-# endif
-#endif
-
-/* Some Mac compilers merge all .h files incorrectly: */
-#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__)
-# define NO_DUMMY_DECL
-#endif
-
-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-# ifdef MAXSEG_64K
-# define MAX_MEM_LEVEL 8
-# else
-# define MAX_MEM_LEVEL 9
-# endif
-#endif
-
-/* Maximum value for windowBits in deflateInit2 and inflateInit2 */
-#ifndef MAX_WBITS
-# define MAX_WBITS 15 /* 32K LZ77 window */
-#endif
-
-/* The memory requirements for deflate are (in bytes):
- 1 << (windowBits+2) + 1 << (memLevel+9)
- that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
- plus a few kilobytes for small objects. For example, if you want to reduce
- the default memory requirements from 256K to 128K, compile with
- make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
- Of course this will generally degrade compression (there's no free lunch).
-
- The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects.
-*/
-
- /* Type declarations */
-
-#ifndef OF /* function prototypes */
-# ifdef STDC
-# define OF(args) args
-# else
-# define OF(args) ()
-# endif
-#endif
-
-/* The following definitions for FAR are needed only for MSDOS mixed
- * model programming (small or medium model with some far allocations).
- * This was tested only with MSC; for other MSDOS compilers you may have
- * to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
- * just define FAR to be empty.
- */
-#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__)
- /* MSC small or medium model */
-# define SMALL_MEDIUM
-# ifdef _MSC_VER
-# define FAR __far
-# else
-# define FAR far
-# endif
-#endif
-#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))
-# ifndef __32BIT__
-# define SMALL_MEDIUM
-# define FAR __far
-# endif
-#endif
-#ifndef FAR
-# define FAR
-#endif
-
-typedef unsigned char Byte; /* 8 bits */
-typedef unsigned int uInt; /* 16 bits or more */
-typedef unsigned long uLong; /* 32 bits or more */
-
-#if defined(__BORLANDC__) && defined(SMALL_MEDIUM)
- /* Borland C/C++ ignores FAR inside typedef */
-# define Bytef Byte FAR
-#else
- typedef Byte FAR Bytef;
-#endif
-typedef char FAR charf;
-typedef int FAR intf;
-typedef uInt FAR uIntf;
-typedef uLong FAR uLongf;
-
-#ifdef STDC
- typedef void FAR *voidpf;
- typedef void *voidp;
-#else
- typedef Byte FAR *voidpf;
- typedef Byte *voidp;
-#endif
-
-
-/* Compile with -DZLIB_DLL for Windows DLL support */
-#if (defined(_WINDOWS) || defined(WINDOWS)) && defined(ZLIB_DLL)
-# include <windows.h>
-# define EXPORT WINAPI
-#else
-# define EXPORT
-#endif
-
-#endif /* _ZCONF_H */
diff --git a/zlib/zlib.h~ b/zlib/zlib.h~
deleted file mode 100644
index 28b56d186..000000000
--- a/zlib/zlib.h~
+++ /dev/null
@@ -1,782 +0,0 @@
-
-#warning static zlib
-/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.0.4, Jul 24th, 1996.
-
- Copyright (C) 1995-1996 Jean-loup Gailly and Mark Adler
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jean-loup Gailly Mark Adler
- gzip@prep.ai.mit.edu madler@alumni.caltech.edu
-
-
- The data format used by the zlib library is described by RFCs (Request for
- Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
- (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
-*/
-
-#ifndef _ZLIB_H
-#define _ZLIB_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "zconf.h"
-
-#define ZLIB_VERSION "1.0.4"
-
-/*
- The 'zlib' compression library provides in-memory compression and
- decompression functions, including integrity checks of the uncompressed
- data. This version of the library supports only one compression method
- (deflation) but other algorithms may be added later and will have the same
- stream interface.
-
- For compression the application must provide the output buffer and
- may optionally provide the input buffer for optimization. For decompression,
- the application must provide the input buffer and may optionally provide
- the output buffer for optimization.
-
- Compression can be done in a single step if the buffers are large
- enough (for example if an input file is mmap'ed), or can be done by
- repeated calls of the compression function. In the latter case, the
- application must provide more input and/or consume the output
- (providing more output space) before each call.
-
- The library does not install any signal handler. It is recommended to
- add at least a handler for SIGSEGV when decompressing; the library checks
- the consistency of the input data whenever possible but may go nuts
- for some forms of corrupted input.
-*/
-
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void (*free_func) OF((voidpf opaque, voidpf address));
-
-struct internal_state;
-
-typedef struct z_stream_s {
- Bytef *next_in; /* next input byte */
- uInt avail_in; /* number of bytes available at next_in */
- uLong total_in; /* total nb of input bytes read so far */
-
- Bytef *next_out; /* next output byte should be put there */
- uInt avail_out; /* remaining free space at next_out */
- uLong total_out; /* total nb of bytes output so far */
-
- char *msg; /* last error message, NULL if no error */
- struct internal_state FAR *state; /* not visible by applications */
-
- alloc_func zalloc; /* used to allocate the internal state */
- free_func zfree; /* used to free the internal state */
- voidpf opaque; /* private data object passed to zalloc and zfree */
-
- int data_type; /* best guess about the data type: ascii or binary */
- uLong adler; /* adler32 value of the uncompressed data */
- uLong reserved; /* reserved for future use */
-} z_stream;
-
-typedef z_stream FAR *z_streamp;
-
-/*
- The application must update next_in and avail_in when avail_in has
- dropped to zero. It must update next_out and avail_out when avail_out
- has dropped to zero. The application must initialize zalloc, zfree and
- opaque before calling the init function. All other fields are set by the
- compression library and must not be updated by the application.
-
- The opaque value provided by the application will be passed as the first
- parameter for calls of zalloc and zfree. This can be useful for custom
- memory management. The compression library attaches no meaning to the
- opaque value.
-
- zalloc must return Z_NULL if there is not enough memory for the object.
- On 16-bit systems, the functions zalloc and zfree must be able to allocate
- exactly 65536 bytes, but will not be required to allocate more than this
- if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
- pointers returned by zalloc for objects of exactly 65536 bytes *must*
- have their offset normalized to zero. The default allocation function
- provided by this library ensures this (see zutil.c). To reduce memory
- requirements and avoid any allocation of 64K objects, at the expense of
- compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
-
- The fields total_in and total_out can be used for statistics or
- progress reports. After compression, total_in holds the total size of
- the uncompressed data and may be saved for use in the decompressor
- (particularly if the decompressor wants to decompress everything in
- a single step).
-*/
-
- /* constants */
-
-#define Z_NO_FLUSH 0
-#define Z_PARTIAL_FLUSH 1
-#define Z_SYNC_FLUSH 2
-#define Z_FULL_FLUSH 3
-#define Z_FINISH 4
-/* Allowed flush values; see deflate() below for details */
-
-#define Z_OK 0
-#define Z_STREAM_END 1
-#define Z_NEED_DICT 2
-#define Z_ERRNO (-1)
-#define Z_STREAM_ERROR (-2)
-#define Z_DATA_ERROR (-3)
-#define Z_MEM_ERROR (-4)
-#define Z_BUF_ERROR (-5)
-#define Z_VERSION_ERROR (-6)
-/* Return codes for the compression/decompression functions. Negative
- * values are errors, positive values are used for special but normal events.
- */
-
-#define Z_NO_COMPRESSION 0
-#define Z_BEST_SPEED 1
-#define Z_BEST_COMPRESSION 9
-#define Z_DEFAULT_COMPRESSION (-1)
-/* compression levels */
-
-#define Z_FILTERED 1
-#define Z_HUFFMAN_ONLY 2
-#define Z_DEFAULT_STRATEGY 0
-/* compression strategy; see deflateInit2() below for details */
-
-#define Z_BINARY 0
-#define Z_ASCII 1
-#define Z_UNKNOWN 2
-/* Possible values of the data_type field */
-
-#define Z_DEFLATED 8
-/* The deflate compression method (the only one supported in this version) */
-
-#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
-
-#define zlib_version zlibVersion()
-/* for compatibility with versions < 1.0.2 */
-
- /* basic functions */
-
-extern const char * EXPORT zlibVersion OF((void));
-/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
- If the first character differs, the library code actually used is
- not compatible with the zlib.h header file used by the application.
- This check is automatically made by deflateInit and inflateInit.
- */
-
-/*
-extern int EXPORT deflateInit OF((z_streamp strm, int level));
-
- Initializes the internal stream state for compression. The fields
- zalloc, zfree and opaque must be initialized before by the caller.
- If zalloc and zfree are set to Z_NULL, deflateInit updates them to
- use default allocation functions.
-
- The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
- 1 gives best speed, 9 gives best compression, 0 gives no compression at
- all (the input data is simply copied a block at a time).
- Z_DEFAULT_COMPRESSION requests a default compromise between speed and
- compression (currently equivalent to level 6).
-
- deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_STREAM_ERROR if level is not a valid compression level,
- Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
- with the version assumed by the caller (ZLIB_VERSION).
- msg is set to null if there is no error message. deflateInit does not
- perform any compression: this will be done by deflate().
-*/
-
-
-extern int EXPORT deflate OF((z_streamp strm, int flush));
-/*
- Performs one or both of the following actions:
-
- - Compress more input starting at next_in and update next_in and avail_in
- accordingly. If not all input can be processed (because there is not
- enough room in the output buffer), next_in and avail_in are updated and
- processing will resume at this point for the next call of deflate().
-
- - Provide more output starting at next_out and update next_out and avail_out
- accordingly. This action is forced if the parameter flush is non zero.
- Forcing flush frequently degrades the compression ratio, so this parameter
- should be set only when necessary (in interactive applications).
- Some output may be provided even if flush is not set.
-
- Before the call of deflate(), the application should ensure that at least
- one of the actions is possible, by providing more input and/or consuming
- more output, and updating avail_in or avail_out accordingly; avail_out
- should never be zero before the call. The application can consume the
- compressed output when it wants, for example when the output buffer is full
- (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
- and with zero avail_out, it must be called again after making room in the
- output buffer because there might be more output pending.
-
- If the parameter flush is set to Z_PARTIAL_FLUSH, the current compression
- block is terminated and flushed to the output buffer so that the
- decompressor can get all input data available so far. For method 9, a future
- variant on method 8, the current block will be flushed but not terminated.
- Z_SYNC_FLUSH has the same effect as partial flush except that the compressed
- output is byte aligned (the compressor can clear its internal bit buffer)
- and the current block is always terminated; this can be useful if the
- compressor has to be restarted from scratch after an interruption (in which
- case the internal state of the compressor may be lost).
- If flush is set to Z_FULL_FLUSH, the compression block is terminated, a
- special marker is output and the compression dictionary is discarded; this
- is useful to allow the decompressor to synchronize if one compressed block
- has been damaged (see inflateSync below). Flushing degrades compression and
- so should be used only when necessary. Using Z_FULL_FLUSH too often can
- seriously degrade the compression. If deflate returns with avail_out == 0,
- this function must be called again with the same value of the flush
- parameter and more output space (updated avail_out), until the flush is
- complete (deflate returns with non-zero avail_out).
-
- If the parameter flush is set to Z_FINISH, pending input is processed,
- pending output is flushed and deflate returns with Z_STREAM_END if there
- was enough output space; if deflate returns with Z_OK, this function must be
- called again with Z_FINISH and more output space (updated avail_out) but no
- more input data, until it returns with Z_STREAM_END or an error. After
- deflate has returned Z_STREAM_END, the only possible operations on the
- stream are deflateReset or deflateEnd.
-
- Z_FINISH can be used immediately after deflateInit if all the compression
- is to be done in a single step. In this case, avail_out must be at least
- 0.1% larger than avail_in plus 12 bytes. If deflate does not return
- Z_STREAM_END, then it must be called again as described above.
-
- deflate() may update data_type if it can make a good guess about
- the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
- binary. This field is only for information purposes and does not affect
- the compression algorithm in any manner.
-
- deflate() returns Z_OK if some progress has been made (more input
- processed or more output produced), Z_STREAM_END if all input has been
- consumed and all output has been produced (only when flush is set to
- Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
- if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible.
-*/
-
-
-extern int EXPORT deflateEnd OF((z_streamp strm));
-/*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any
- pending output.
-
- deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
- stream state was inconsistent, Z_DATA_ERROR if the stream was freed
- prematurely (some input or output was discarded). In the error case,
- msg may be set but then points to a static string (which must not be
- deallocated).
-*/
-
-
-/*
-extern int EXPORT inflateInit OF((z_streamp strm));
-
- Initializes the internal stream state for decompression. The fields
- zalloc, zfree and opaque must be initialized before by the caller. If
- zalloc and zfree are set to Z_NULL, inflateInit updates them to use default
- allocation functions.
-
- inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_VERSION_ERROR if the zlib library version is incompatible
- with the version assumed by the caller. msg is set to null if there is no
- error message. inflateInit does not perform any decompression: this will be
- done by inflate().
-*/
-
-
-extern int EXPORT inflate OF((z_streamp strm, int flush));
-/*
- Performs one or both of the following actions:
-
- - Decompress more input starting at next_in and update next_in and avail_in
- accordingly. If not all input can be processed (because there is not
- enough room in the output buffer), next_in is updated and processing
- will resume at this point for the next call of inflate().
-
- - Provide more output starting at next_out and update next_out and avail_out
- accordingly. inflate() provides as much output as possible, until there
- is no more input data or no more space in the output buffer (see below
- about the flush parameter).
-
- Before the call of inflate(), the application should ensure that at least
- one of the actions is possible, by providing more input and/or consuming
- more output, and updating the next_* and avail_* values accordingly.
- The application can consume the uncompressed output when it wants, for
- example when the output buffer is full (avail_out == 0), or after each
- call of inflate(). If inflate returns Z_OK and with zero avail_out, it
- must be called again after making room in the output buffer because there
- might be more output pending.
-
- If the parameter flush is set to Z_PARTIAL_FLUSH, inflate flushes as much
- output as possible to the output buffer. The flushing behavior of inflate is
- not specified for values of the flush parameter other than Z_PARTIAL_FLUSH
- and Z_FINISH, but the current implementation actually flushes as much output
- as possible anyway.
-
- inflate() should normally be called until it returns Z_STREAM_END or an
- error. However if all decompression is to be performed in a single step
- (a single call of inflate), the parameter flush should be set to
- Z_FINISH. In this case all pending input is processed and all pending
- output is flushed; avail_out must be large enough to hold all the
- uncompressed data. (The size of the uncompressed data may have been saved
- by the compressor for this purpose.) The next operation on this stream must
- be inflateEnd to deallocate the decompression state. The use of Z_FINISH
- is never required, but can be used to inform inflate that a faster routine
- may be used for the single inflate() call.
-
- inflate() returns Z_OK if some progress has been made (more input
- processed or more output produced), Z_STREAM_END if the end of the
- compressed data has been reached and all uncompressed output has been
- produced, Z_NEED_DICT if a preset dictionary is needed at this point (see
- inflateSetDictionary below), Z_DATA_ERROR if the input data was corrupted,
- Z_STREAM_ERROR if the stream structure was inconsistent (for example if
- next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
- Z_BUF_ERROR if no progress is possible or if there was not enough room in
- the output buffer when Z_FINISH is used. In the Z_DATA_ERROR case, the
- application may then call inflateSync to look for a good compression block.
- In the Z_NEED_DICT case, strm->adler is set to the Adler32 value of the
- dictionary chosen by the compressor.
-*/
-
-
-extern int EXPORT inflateEnd OF((z_streamp strm));
-/*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any
- pending output.
-
- inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
- was inconsistent. In the error case, msg may be set but then points to a
- static string (which must not be deallocated).
-*/
-
- /* Advanced functions */
-
-/*
- The following functions are needed only in some special applications.
-*/
-
-/*
-extern int EXPORT deflateInit2 OF((z_streamp strm,
- int level,
- int method,
- int windowBits,
- int memLevel,
- int strategy));
-
- This is another version of deflateInit with more compression options. The
- fields next_in, zalloc, zfree and opaque must be initialized before by
- the caller.
-
- The method parameter is the compression method. It must be Z_DEFLATED in
- this version of the library. (Method 9 will allow a 64K history buffer and
- partial block flushes.)
-
- The windowBits parameter is the base two logarithm of the window size
- (the size of the history buffer). It should be in the range 8..15 for this
- version of the library (the value 16 will be allowed for method 9). Larger
- values of this parameter result in better compression at the expense of
- memory usage. The default value is 15 if deflateInit is used instead.
-
- The memLevel parameter specifies how much memory should be allocated
- for the internal compression state. memLevel=1 uses minimum memory but
- is slow and reduces compression ratio; memLevel=9 uses maximum memory
- for optimal speed. The default value is 8. See zconf.h for total memory
- usage as a function of windowBits and memLevel.
-
- The strategy parameter is used to tune the compression algorithm. Use the
- value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
- filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
- string match). Filtered data consists mostly of small values with a
- somewhat random distribution. In this case, the compression algorithm is
- tuned to compress them better. The effect of Z_FILTERED is to force more
- Huffman coding and less string matching; it is somewhat intermediate
- between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
- the compression ratio but not the correctness of the compressed output even
- if it is not set appropriately.
-
- If next_in is not null, the library will use this buffer to hold also
- some history information; the buffer must either hold the entire input
- data, or have at least 1<<(windowBits+1) bytes and be writable. If next_in
- is null, the library will allocate its own history buffer (and leave next_in
- null). next_out need not be provided here but must be provided by the
- application for the next call of deflate().
-
- If the history buffer is provided by the application, next_in must
- must never be changed by the application since the compressor maintains
- information inside this buffer from call to call; the application
- must provide more input only by increasing avail_in. next_in is always
- reset by the library in this case.
-
- deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was
- not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as
- an invalid method). msg is set to null if there is no error message.
- deflateInit2 does not perform any compression: this will be done by
- deflate().
-*/
-
-extern int EXPORT deflateSetDictionary OF((z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength));
-/*
- Initializes the compression dictionary (history buffer) from the given
- byte sequence without producing any compressed output. This function must
- be called immediately after deflateInit or deflateInit2, before any call
- of deflate. The compressor and decompressor must use exactly the same
- dictionary (see inflateSetDictionary).
- The dictionary should consist of strings (byte sequences) that are likely
- to be encountered later in the data to be compressed, with the most commonly
- used strings preferably put towards the end of the dictionary. Using a
- dictionary is most useful when the data to be compressed is short and
- can be predicted with good accuracy; the data can then be compressed better
- than with the default empty dictionary. In this version of the library,
- only the last 32K bytes of the dictionary are used.
- Upon return of this function, strm->adler is set to the Adler32 value
- of the dictionary; the decompressor may later use this value to determine
- which dictionary has been used by the compressor. (The Adler32 value
- applies to the whole dictionary even if only a subset of the dictionary is
- actually used by the compressor.)
-
- deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
- parameter is invalid (such as NULL dictionary) or the stream state
- is inconsistent (for example if deflate has already been called for this
- stream). deflateSetDictionary does not perform any compression: this will
- be done by deflate().
-*/
-
-extern int EXPORT deflateCopy OF((z_streamp dest,
- z_streamp source));
-/*
- Sets the destination stream as a complete copy of the source stream. If
- the source stream is using an application-supplied history buffer, a new
- buffer is allocated for the destination stream. The compressed output
- buffer is always application-supplied. It's the responsibility of the
- application to provide the correct values of next_out and avail_out for the
- next call of deflate.
-
- This function can be useful when several compression strategies will be
- tried, for example when there are several ways of pre-processing the input
- data with a filter. The streams that will be discarded should then be freed
- by calling deflateEnd. Note that deflateCopy duplicates the internal
- compression state which can be quite large, so this strategy is slow and
- can consume lots of memory.
-
- deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
- (such as zalloc being NULL). msg is left unchanged in both source and
- destination.
-*/
-
-extern int EXPORT deflateReset OF((z_streamp strm));
-/*
- This function is equivalent to deflateEnd followed by deflateInit,
- but does not free and reallocate all the internal compression state.
- The stream will keep the same compression level and any other attributes
- that may have been set by deflateInit2.
-
- deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-extern int EXPORT deflateParams OF((z_streamp strm, int level, int strategy));
-/*
- Dynamically update the compression level and compression strategy.
- This can be used to switch between compression and straight copy of
- the input data, or to switch to a different kind of input data requiring
- a different strategy. If the compression level is changed, the input
- available so far is compressed with the old level (and may be flushed);
- the new level will take effect only at the next call of deflate().
-
- Before the call of deflateParams, the stream state must be set as for
- a call of deflate(), since the currently available input may have to
- be compressed and flushed. In particular, strm->avail_out must be non-zero.
-
- deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
- stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
- if strm->avail_out was zero.
-*/
-
-/*
-extern int EXPORT inflateInit2 OF((z_streamp strm,
- int windowBits));
-
- This is another version of inflateInit with more compression options. The
- fields next_out, zalloc, zfree and opaque must be initialized before by
- the caller.
-
- The windowBits parameter is the base two logarithm of the maximum window
- size (the size of the history buffer). It should be in the range 8..15 for
- this version of the library (the value 16 will be allowed soon). The
- default value is 15 if inflateInit is used instead. If a compressed stream
- with a larger window size is given as input, inflate() will return with
- the error code Z_DATA_ERROR instead of trying to allocate a larger window.
-
- If next_out is not null, the library will use this buffer for the history
- buffer; the buffer must either be large enough to hold the entire output
- data, or have at least 1<<windowBits bytes. If next_out is null, the
- library will allocate its own buffer (and leave next_out null). next_in
- need not be provided here but must be provided by the application for the
- next call of inflate().
-
- If the history buffer is provided by the application, next_out must
- never be changed by the application since the decompressor maintains
- history information inside this buffer from call to call; the application
- can only reset next_out to the beginning of the history buffer when
- avail_out is zero and all output has been consumed.
-
- inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was
- not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as
- windowBits < 8). msg is set to null if there is no error message.
- inflateInit2 does not perform any decompression: this will be done by
- inflate().
-*/
-
-extern int EXPORT inflateSetDictionary OF((z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength));
-/*
- Initializes the decompression dictionary (history buffer) from the given
- uncompressed byte sequence. This function must be called immediately after
- a call of inflate if this call returned Z_NEED_DICT. The dictionary chosen
- by the compressor can be determined from the Adler32 value returned by this
- call of inflate. The compressor and decompressor must use exactly the same
- dictionary (see deflateSetDictionary).
-
- inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
- parameter is invalid (such as NULL dictionary) or the stream state is
- inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
- expected one (incorrect Adler32 value). inflateSetDictionary does not
- perform any decompression: this will be done by subsequent calls of
- inflate().
-*/
-
-extern int EXPORT inflateSync OF((z_streamp strm));
-/*
- Skips invalid compressed data until the special marker (see deflate()
- above) can be found, or until all available input is skipped. No output
- is provided.
-
- inflateSync returns Z_OK if the special marker has been found, Z_BUF_ERROR
- if no more input was provided, Z_DATA_ERROR if no marker has been found,
- or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
- case, the application may save the current current value of total_in which
- indicates where valid compressed data was found. In the error case, the
- application may repeatedly call inflateSync, providing more input each time,
- until success or end of the input data.
-*/
-
-extern int EXPORT inflateReset OF((z_streamp strm));
-/*
- This function is equivalent to inflateEnd followed by inflateInit,
- but does not free and reallocate all the internal decompression state.
- The stream will keep attributes that may have been set by inflateInit2.
-
- inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-
- /* utility functions */
-
-/*
- The following utility functions are implemented on top of the
- basic stream-oriented functions. To simplify the interface, some
- default options are assumed (compression level, window size,
- standard memory allocation functions). The source code of these
- utility functions can easily be modified if you need special options.
-*/
-
-extern int EXPORT compress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen));
-/*
- Compresses the source buffer into the destination buffer. sourceLen is
- the byte length of the source buffer. Upon entry, destLen is the total
- size of the destination buffer, which must be at least 0.1% larger than
- sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
- compressed buffer.
- This function can be used to compress a whole file at once if the
- input file is mmap'ed.
- compress returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_BUF_ERROR if there was not enough room in the output
- buffer.
-*/
-
-extern int EXPORT uncompress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen));
-/*
- Decompresses the source buffer into the destination buffer. sourceLen is
- the byte length of the source buffer. Upon entry, destLen is the total
- size of the destination buffer, which must be large enough to hold the
- entire uncompressed data. (The size of the uncompressed data must have
- been saved previously by the compressor and transmitted to the decompressor
- by some mechanism outside the scope of this compression library.)
- Upon exit, destLen is the actual size of the compressed buffer.
- This function can be used to decompress a whole file at once if the
- input file is mmap'ed.
-
- uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_BUF_ERROR if there was not enough room in the output
- buffer, or Z_DATA_ERROR if the input data was corrupted.
-*/
-
-
-typedef voidp gzFile;
-
-extern gzFile EXPORT gzopen OF((const char *path, const char *mode));
-/*
- Opens a gzip (.gz) file for reading or writing. The mode parameter
- is as in fopen ("rb" or "wb") but can also include a compression level
- ("wb9"). gzopen can be used to read a file which is not in gzip format;
- in this case gzread will directly read from the file without decompression.
- gzopen returns NULL if the file could not be opened or if there was
- insufficient memory to allocate the (de)compression state; errno
- can be checked to distinguish the two cases (if errno is zero, the
- zlib error is Z_MEM_ERROR).
-*/
-
-extern gzFile EXPORT gzdopen OF((int fd, const char *mode));
-/*
- gzdopen() associates a gzFile with the file descriptor fd. File
- descriptors are obtained from calls like open, dup, creat, pipe or
- fileno (in the file has been previously opened with fopen).
- The mode parameter is as in gzopen.
- The next call of gzclose on the returned gzFile will also close the
- file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
- descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
- gzdopen returns NULL if there was insufficient memory to allocate
- the (de)compression state.
-*/
-
-extern int EXPORT gzread OF((gzFile file, voidp buf, unsigned len));
-/*
- Reads the given number of uncompressed bytes from the compressed file.
- If the input file was not in gzip format, gzread copies the given number
- of bytes into the buffer.
- gzread returns the number of uncompressed bytes actually read (0 for
- end of file, -1 for error). */
-
-extern int EXPORT gzwrite OF((gzFile file, const voidp buf, unsigned len));
-/*
- Writes the given number of uncompressed bytes into the compressed file.
- gzwrite returns the number of uncompressed bytes actually written
- (0 in case of error).
-*/
-
-extern int EXPORT gzflush OF((gzFile file, int flush));
-/*
- Flushes all pending output into the compressed file. The parameter
- flush is as in the deflate() function. The return value is the zlib
- error number (see function gzerror below). gzflush returns Z_OK if
- the flush parameter is Z_FINISH and all output could be flushed.
- gzflush should be called only when strictly necessary because it can
- degrade compression.
-*/
-
-extern int EXPORT gzclose OF((gzFile file));
-/*
- Flushes all pending output if necessary, closes the compressed file
- and deallocates all the (de)compression state. The return value is the zlib
- error number (see function gzerror below).
-*/
-
-extern const char * EXPORT gzerror OF((gzFile file, int *errnum));
-/*
- Returns the error message for the last error which occurred on the
- given compressed file. errnum is set to zlib error number. If an
- error occurred in the file system and not in the compression library,
- errnum is set to Z_ERRNO and the application may consult errno
- to get the exact error code.
-*/
-
- /* checksum functions */
-
-/*
- These functions are not related to compression but are exported
- anyway because they might be useful in applications using the
- compression library.
-*/
-
-extern uLong EXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-
-/*
- Update a running Adler-32 checksum with the bytes buf[0..len-1] and
- return the updated checksum. If buf is NULL, this function returns
- the required initial value for the checksum.
- An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
- much faster. Usage example:
-
- uLong adler = adler32(0L, Z_NULL, 0);
-
- while (read_buffer(buffer, length) != EOF) {
- adler = adler32(adler, buffer, length);
- }
- if (adler != original_adler) error();
-*/
-
-extern uLong EXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
-/*
- Update a running crc with the bytes buf[0..len-1] and return the updated
- crc. If buf is NULL, this function returns the required initial value
- for the crc. Pre- and post-conditioning (one's complement) is performed
- within this function so it shouldn't be done by the application.
- Usage example:
-
- uLong crc = crc32(0L, Z_NULL, 0);
-
- while (read_buffer(buffer, length) != EOF) {
- crc = crc32(crc, buffer, length);
- }
- if (crc != original_crc) error();
-*/
-
-
- /* various hacks, don't look :) */
-
-/* deflateInit and inflateInit are macros to allow checking the zlib version
- * and the compiler's view of z_stream:
- */
-extern int EXPORT deflateInit_ OF((z_streamp strm, int level,
- const char *version, int stream_size));
-extern int EXPORT inflateInit_ OF((z_streamp strm,
- const char *version, int stream_size));
-extern int EXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
- int windowBits, int memLevel, int strategy,
- const char *version, int stream_size));
-extern int EXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
- const char *version, int stream_size));
-#define deflateInit(strm, level) \
- deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit(strm) \
- inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
-#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
- deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
- (strategy), ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit2(strm, windowBits) \
- inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
-
-#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
- struct internal_state {int dummy;}; /* hack for buggy compilers */
-#endif
-
-uLongf *get_crc_table OF((void)); /* can be used by asm versions of crc32() */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ZLIB_H */

File Metadata

Mime Type
text/x-diff
Expires
Mon, May 12, 6:37 PM (1 d, 18 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
f3/d1/bf34870e0c56ebc2573a10260b06

Event Timeline