Page MenuHome GnuPG

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/dirmngr/ChangeLog b/dirmngr/ChangeLog
index d88822e9d..d1c768a53 100644
--- a/dirmngr/ChangeLog
+++ b/dirmngr/ChangeLog
@@ -1,1475 +1,1479 @@
+2010-10-21 Werner Koch <wk@g10code.com>
+
+ * dirmngr.c (main): Changed faked system time warning
+
2010-10-15 Werner Koch <wk@g10code.com>
* Makefile.am (CLEANFILES): Add no-libgcrypt.c.
2010-09-16 Werner Koch <wk@g10code.com>
* validate.c (validate_cert_chain): Use GPG_ERR_MISSING_ISSUER_CERT.
2010-08-13 Werner Koch <wk@g10code.com>
* Makefile.am (dirmngr_SOURCES): Add w32-ldap-help.h.
* dirmngr_ldap.c (fetch_ldap): Call ldap_unbind.
* w32-ldap-help.h: New.
* dirmngr_ldap.c [W32CE]: Include w32-ldap-help.h and use the
mapped ldap functions.
2010-08-12 Werner Koch <wk@g10code.com>
* crlcache.c (update_dir, crl_cache_insert): s/unlink/gnupg_remove/.
* dirmngr.c (dirmngr_sighup_action): New.
* server.c (cmd_killdirmngr, cmd_reloaddirmngr): New.
(struct server_local_s): Add field STOPME.
(start_command_handler): Act on STOPME.
2010-08-06 Werner Koch <wk@g10code.com>
* dirmngr.c (JNLIB_NEED_AFLOCAL): Define macro.
(main): Use SUN_LEN macro.
(main) [W32]: Allow EEXIST in addition to EADDRINUSE.
2010-08-05 Werner Koch <wk@g10code.com>
* server.c (set_error, leave_cmd): New.
(cmd_validate, cmd_ldapserver, cmd_isvalid, cmd_checkcrl)
(cmd_checkocsp, cmd_lookup, cmd_listcrls, cmd_cachecert): Use
leave_cmd.
(cmd_getinfo): New.
(data_line_cookie_write, data_line_cookie_close): New.
(cmd_listcrls): Replace assuan_get_data_fp by es_fopencookie.
* misc.c (create_estream_ksba_reader, my_estream_ksba_reader_cb): New.
* certcache.c (load_certs_from_dir): Use create_estream_ksba_reader.
* crlcache.c (crl_cache_load): Ditto.
2010-08-03 Werner Koch <wk@g10code.com>
* dirmngr_ldap.c (pth_enter, pth_leave) [USE_LDAPWRAPPER]: Turn
into functions for use in a 'for' control stmt.
2010-07-26 Werner Koch <wk@g10code.com>
* dirmngr_ldap.c (print_ldap_entries): Remove special fwrite case
for W32 because that is now handles by estream.
2010-07-25 Werner Koch <wk@g10code.com>
* Makefile.am (dirmngr_SOURCES) [!USE_LDAPWRAPPER]: Build
ldap-wrapper-ce.
* ldap-wrapper-ce.c: New.
* dirmngr_ldap.c (opt): Remove global variable ...
(my_opt_t): ... and declare a type instead.
(main): Define a MY_OPT variable and change all references to OPT
to this.
(set_timeout, print_ldap_entries, fetch_ldap, process_url): Pass
MYOPT arg.
2010-07-24 Werner Koch <wk@g10code.com>
* dirmngr_ldap.c (main): Init common subsystems. Call
es_set_binary.
2010-07-19 Werner Koch <wk@g10code.com>
* dirmngr.c: Include ldap-wrapper.h.
(launch_reaper_thread): Move code to ...
* ldap-wrapper.c (ldap_wrapper_launch_thread): .. here. Change
callers.
(ldap_wrapper_thread): Rename to ...
(wrapper_thread): this and make local.
* ldap.c (destroy_wrapper, print_log_line)
(read_log_data, ldap_wrapper_thread)
(ldap_wrapper_wait_connections, ldap_wrapper_release_context)
(ldap_wrapper_connection_cleanup, reader_callback, ldap_wrapper):
Factor code out to ...
* ldap-wrapper.c: new.
(ldap_wrapper): Make public.
(read_buffer): Copy from ldap.c.
* ldap-wrapper.h: New.
* Makefile.am (dirmngr_SOURCES): Add new files.
2010-07-16 Werner Koch <wk@g10code.com>
* http.c, http.h: Remove.
* dirmngr-err.h: New.
* dirmngr.h: Include dirmngr-err.h instead of gpg-error.h
* cdblib.c: Replace assignments to ERRNO by a call to
gpg_err_set_errno. Include dirmngr-err.h.
(cdb_free) [__MINGW32CE__]: Do not use get_osfhandle.
* dirmngr.c [!HAVE_SIGNAL_H]: Don't include signal.h.
(USE_W32_SERVICE): New. Use this to control the use of the W32
service system.
2010-07-06 Werner Koch <wk@g10code.com>
* dirmngr.c (main): Print note on directory name changes.
Replace almost all uses of stdio by estream.
* b64dec.c, b64enc.c: Remove. They are duplicated in ../common/.
2010-06-28 Werner Koch <wk@g10code.com>
* dirmngr_ldap.c (my_i18n_init): Remove.
(main): Call i18n_init instead of above function.
* dirmngr-client.c (my_i18n_init): Remove.
(main): Call i18n_init instead of above function.
* Makefile.am (dirmngr_LDADD): Add ../gl/libgnu.
(dirmngr_ldap_LDADD, dirmngr_client_LDADD): Ditto.
2010-06-09 Werner Koch <wk@g10code.com>
* i18n.h: Remove.
* Makefile.am (no-libgcrypt.c): New rule.
* exechelp.h: Remove.
* exechelp.c: Remove.
(dirmngr_release_process): Change callers to use the gnupg func.
(dirmngr_wait_process): Likewise.
(dirmngr_kill_process): Likewise. This actually implements it for
W32.
* ldap.c (ldap_wrapper): s/get_dirmngr_ldap_path/gnupg_module_name/.
(ldap_wrapper_thread): Use gnupg_wait_process and adjust for
changed semantics.
(ldap_wrapper): Replace xcalloc by xtrycalloc. Replace spawn
mechanism.
* server.c (start_command_handler): Remove assuan_set_log_stream.
* validate.c: Remove gcrypt.h and ksba.h.
* ldapserver.c: s/util.h/dirmngr.h/.
* dirmngr.c (sleep) [W32]: Remove macro.
(main): s/sleep/gnupg_sleep/.
(pid_suffix_callback): Change arg type.
(my_gcry_logger): Remove.
(fixed_gcry_pth_init): New.
(main): Use it.
(FD2INT): Remove.
2010-06-08 Werner Koch <wk@g10code.com>
* misc.h (copy_time): Remove and replace by gnupg_copy_time which
allows to set a null date.
* misc.c (dump_isotime, get_time, get_isotime, set_time)
(check_isotime, add_isotime): Remove and replace all calls by the
versions from common/gettime.c.
* crlcache.c, misc.c, misc.h: s/dirmngr_isotime_t/gnupg_isotime_t/.
* server.c, ldap.c: Reorder include directives.
* crlcache.h, misc.h: Remove all include directives.
* certcache.c (cmp_simple_canon_sexp): Remove.
(compare_serialno): Rewrite using cmp_simple_canon_sexp from
common/sexputil.c
* error.h: Remove.
* dirmngr.c: Remove transitional option "--ignore-ocsp-servic-url".
(opts): Use ARGPARSE macros.
(i18n_init): Remove.
(main): Use GnuPG init functions.
* dirmngr.h: Remove duplicated stuff now taken from ../common.
* get-path.c, util.h: Remove.
* Makefile.am: Adjust to GnuPG system.
* estream.c, estream.h, estream-printf.c, estream-printf.h: Remove.
2010-06-07 Werner Koch <wk@g10code.com>
* OAUTHORS, ONEWS, ChangeLog.1: New.
* ChangeLog, Makefile.am, b64dec.c, b64enc.c, cdb.h, cdblib.c
* certcache.c, certcache.h, crlcache.c, crlcache.h, crlfetch.c
* crlfetch.h, dirmngr-client.c, dirmngr.c, dirmngr.h
* dirmngr_ldap.c, error.h, estream-printf.c, estream-printf.h
* estream.c, estream.h, exechelp.c, exechelp.h, get-path.c, http.c
* http.h, i18n.h, ldap-url.c, ldap-url.h, ldap.c, ldapserver.c
* ldapserver.h, misc.c, misc.h, ocsp.c, ocsp.h, server.c, util.h
* validate.c, validate.h: Imported from the current SVN of the
dirmngr package (only src/).
2010-03-13 Werner Koch <wk@g10code.com>
* dirmngr.c (int_and_ptr_u): New.
(pid_suffix_callback): Trick out compiler.
(start_connection_thread): Ditto.
(handle_connections): Ditto.
2010-03-09 Werner Koch <wk@g10code.com>
* dirmngr.c (set_debug): Allow numerical values.
2009-12-15 Werner Koch <wk@g10code.com>
* dirmngr.c: Add option --ignore-cert-extension.
(parse_rereadable_options): Implement.
* dirmngr.h (opt): Add IGNORED_CERT_EXTENSIONS.
* validate.c (unknown_criticals): Handle ignored extensions.
2009-12-08 Marcus Brinkmann <marcus@g10code.de>
* dirmngr-client.c (start_dirmngr): Convert posix FDs to assuan fds.
2009-11-25 Marcus Brinkmann <marcus@g10code.de>
* server.c (start_command_handler): Use assuan_fd_t and
assuan_fdopen on fds.
2009-11-05 Marcus Brinkmann <marcus@g10code.de>
* server.c (start_command_handler): Update use of
assuan_init_socket_server.
* dirmngr-client.c (start_dirmngr): Update use of
assuan_pipe_connect and assuan_socket_connect.
2009-11-04 Werner Koch <wk@g10code.com>
* server.c (register_commands): Add help arg to
assuan_register_command. Change all command comments to strings.
2009-11-02 Marcus Brinkmann <marcus@g10code.de>
* server.c (reset_notify): Take LINE argument, return gpg_error_t.
2009-10-16 Marcus Brinkmann <marcus@g10code.com>
* Makefile.am: (dirmngr_LDADD): Link to $(LIBASSUAN_LIBS) instead
of $(LIBASSUAN_PTH_LIBS).
* dirmngr.c: Invoke ASSUAN_SYSTEM_PTH_IMPL.
(main): Call assuan_set_system_hooks and assuan_sock_init.
2009-09-22 Marcus Brinkmann <marcus@g10code.de>
* dirmngr.c (main): Update to new Assuan interface.
* server.c (option_handler, cmd_ldapserver, cmd_isvalid)
(cmd_checkcrl, cmd_checkocsp, cmd_lookup, cmd_loadcrl)
(cmd_listcrls, cmd_cachecert, cmd_validate): Return gpg_error_t
instead int.
(register_commands): Likewise for member HANDLER.
(start_command_handler): Allocate context with assuan_new before
starting server. Release on error.
* dirmngr-client.c (main): Update to new Assuan interface.
(start_dirmngr): Allocate context with assuan_new before
connecting to server. Release on error.
2009-08-12 Werner Koch <wk@g10code.com>
* dirmngr-client.c (squid_loop_body): Flush stdout. Suggested by
Philip Shin.
2009-08-07 Werner Koch <wk@g10code.com>
* crlfetch.c (my_es_read): Add explicit check for EOF.
* http.c (struct http_context_s): Turn IN_DATA and IS_HTTP_0_9 to
bit fields.
(struct cookie_s): Add CONTENT_LENGTH_VALID and CONTENT_LENGTH.
(parse_response): Parse the Content-Length header.
(cookie_read): Handle content length.
(http_open): Make NEED_HEADER the semi-default.
* http.h (HTTP_FLAG_IGNORE_CL): New.
2009-08-04 Werner Koch <wk@g10code.com>
* ldap.c (ldap_wrapper_thread): Factor some code out to ...
(read_log_data): ... new. Close the log fd on error.
(ldap_wrapper_thread): Delay cleanup until the log fd is closed.
(SAFE_PTH_CLOSE): New. Use it instead of pth_close.
2009-07-31 Werner Koch <wk@g10code.com>
* server.c (cmd_loadcrl): Add option --url.
* dirmngr-client.c (do_loadcrl): Make use of --url.
* crlfetch.c (crl_fetch): Remove HTTP_FLAG_NO_SHUTDOWN. Add
flag HTTP_FLAG_LOG_RESP with active DBG_LOOKUP.
* http.c: Require estream. Remove P_ES macro.
(write_server): Remove.
(my_read_line): Remove. Replace all callers by es_read_line.
(send_request): Use es_asprintf. Always store the cookie.
(http_wait_response): Remove the need to dup the socket. USe new
shutdown flag.
* http.h (HTTP_FLAG_NO_SHUTDOWN): Rename to HTTP_FLAG_SHUTDOWN.
* estream.c, estream.h, estream-printf.c, estream-printf.h: Update
from current libestream. This is provide es_asprintf.
2009-07-20 Werner Koch <wk@g10code.com>
* dirmngr.c (pid_suffix_callback): New.
(main): Use log_set_pid_suffix_cb.
(start_connection_thread): Put the fd into the tls.
* ldap.c (ldap_wrapper_thread): Print ldap worker stati.
(ldap_wrapper_release_context): Print a debug info.
(end_cert_fetch_ldap): Release the reader. Might fix bug#999.
2009-06-17 Werner Koch <wk@g10code.com>
* util.h: Remove unused dotlock.h.
2009-05-26 Werner Koch <wk@g10code.com>
* ldap.c (ldap_wrapper): Show reader object in diagnostics.
* crlcache.c (crl_cache_reload_crl): Ditto. Change debug messages
to regular diagnostics.
* dirmngr_ldap.c (print_ldap_entries): Add extra diagnostics.
2009-04-03 Werner Koch <wk@g10code.com>
* dirmngr.h (struct server_local_s): Move back to ...
* server.c (struct server_local_s): ... here.
(get_ldapservers_from_ctrl): New.
* ldapserver.h (ldapserver_iter_begin): Use it.
2008-10-29 Marcus Brinkmann <marcus@g10code.de>
* estream.c (es_getline): Add explicit cast to silence gcc -W
warning.
* crlcache.c (finish_sig_check): Likewise.
* dirmngr.c (opts): Add missing initializer to silence gcc
-W warning.
* server.c (register_commands): Likewise.
* dirmngr-client.c (opts): Likewise.
* dirmngr_ldap.c (opts): Likewise.
* dirmngr-client.c (status_cb, inq_cert, data_cb): Change return
type to gpg_error_t to silence gcc warning.
2008-10-21 Werner Koch <wk@g10code.com>
* certcache.c (load_certs_from_dir): Accept ".der" files.
* server.c (get_istrusted_from_client): New.
* validate.c (validate_cert_chain): Add new optional arg
R_TRUST_ANCHOR. Adjust all callers
* crlcache.c (crl_cache_entry_s): Add fields USER_TRUST_REQ
and CHECK_TRUST_ANCHOR.
(release_one_cache_entry): Release CHECK_TRUST_ANCHOR.
(list_one_crl_entry): Print info about the new fields.
(open_dir, write_dir_line_crl): Support the new U-flag.
(crl_parse_insert): Add arg R_TRUST_ANCHOR and set it accordingly.
(crl_cache_insert): Store trust anchor in entry object.
(cache_isvalid): Ask client for trust is needed.
* crlcache.c (open_dir): Replace xcalloc by xtrycalloc.
(next_line_from_file): Ditt. Add arg to return the gpg error.
Change all callers.
(update_dir): Replace sprintf and malloc by estream_asprintf.
(crl_cache_insert): Ditto.
(crl_cache_isvalid): Replace xmalloc by xtrymalloc.
(get_auth_key_id): Ditto.
(crl_cache_insert): Ditto.
* crlcache.c (start_sig_check): Remove HAVE_GCRY_MD_DEBUG test.
* validate.c (check_cert_sig): Ditto. Remove workaround for bug
in libgcrypt 1.2.
* estream.c, estream.h, estream-printf.c, estream-printf.h: Update
from current libestream (svn rev 61).
2008-09-30 Marcus Brinkmann <marcus@g10code.com>
* get-path.c (get_dirmngr_ldap_path): Revert last change.
Instead, use dirmngr_libexecdir().
(find_program_at_standard_place): Don't define for now.
2008-09-30 Marcus Brinkmann <marcus@g10code.com>
* get-path.c (dirmngr_cachedir): Make COMP a pointer to const to
silence gcc warning.
(get_dirmngr_ldap_path): Look for dirmngr_ldap in the installation
directory.
2008-08-06 Marcus Brinkmann <marcus@g10code.com>
* dirmngr.c (main): Mark the ldapserverlist-file option as
read-only.
2008-07-31 Werner Koch <wk@g10code.com>
* crlcache.c (start_sig_check) [!HAVE_GCRY_MD_DEBUG]: Use
gcry_md_start_debug
2008-06-16 Werner Koch <wk@g10code.com>
* get-path.c (w32_commondir): New.
(dirmngr_sysconfdir): Use it here.
(dirmngr_datadir): Ditto.
2008-06-12 Marcus Brinkmann <marcus@g10code.de>
* Makefile.am (dirmngr_SOURCES): Add ldapserver.h and ldapserver.c.
* ldapserver.h, ldapserver.c: New files.
* ldap.c: Include "ldapserver.h".
(url_fetch_ldap): Use iterator to get session servers as well.
(attr_fetch_ldap, start_default_fetch_ldap): Likewise.
* dirmngr.c: Include "ldapserver.h".
(free_ldapservers_list): Removed. Change callers to
ldapserver_list_free.
(parse_ldapserver_file): Use ldapserver_parse_one.
* server.c: Include "ldapserver.h".
(cmd_ldapserver): New command.
(register_commands): Add new command LDAPSERVER.
(reset_notify): New function.
(start_command_handler): Register reset notify handler.
Deallocate session server list.
(lookup_cert_by_pattern): Use iterator to get session servers as well.
(struct server_local_s): Move to ...
* dirmngr.h (struct server_local_s): ... here. Add new member
ldapservers.
2008-06-10 Werner Koch <wk@g10code.com>
Support PEM encoded CRLs. Fixes bug#927.
* crlfetch.c (struct reader_cb_context_s): New.
(struct file_reader_map_s): Replace FP by new context.
(register_file_reader, get_file_reader): Adjust accordingly.
(my_es_read): Detect Base64 encoded CRL and decode if needed.
(crl_fetch): Pass new context to the callback.
(crl_close_reader): Cleanup the new context.
* b64dec.c: New. Taken from GnuPG.
* util.h (struct b64state): Add new fields STOP_SEEN and
INVALID_ENCODING.
2008-05-26 Marcus Brinkmann <marcus@g10code.com>
* dirmngr.c (main) [HAVE_W32_SYSTEM]: Switch to system
configuration on gpgconf related commands, and make all options
unchangeable.
2008-03-25 Marcus Brinkmann <marcus@g10code.de>
* dirmngr_ldap.c (print_ldap_entries): Add code alternative for
W32 console stdout (unused at this point).
2008-03-21 Marcus Brinkmann <marcus@g10code.de>
* estream.c (ESTREAM_MUTEX_DESTROY): New macro.
(es_create, es_destroy): Use it.
2008-02-21 Werner Koch <wk@g10code.com>
* validate.c (check_cert_sig) [HAVE_GCRY_MD_DEBUG]: Use new debug
function if available.
* crlcache.c (abort_sig_check): Mark unused arg.
* exechelp.c (dirmngr_release_process) [!W32]: Mark unsed arg.
* validate.c (is_root_cert): New. Taken from GnuPG.
(validate_cert_chain): Use it in place of the simple DN compare.
2008-02-15 Marcus Brinkmann <marcus@g10code.de>
* dirmngr.c (main): Reinitialize assuan log stream if necessary.
* crlcache.c (update_dir) [HAVE_W32_SYSTEM]: Remove destination
file before rename.
(crl_cache_insert) [HAVE_W32_SYSTEM]: Remove destination file
before rename.
2008-02-14 Marcus Brinkmann <marcus@g10code.de>
* validate.c (check_cert_policy): Use ksba_free instead of xfree.
(validate_cert_chain): Likewise. Free SUBJECT on error.
(cert_usage_p): Likewise.
* crlcache.c (finish_sig_check): Undo last change.
(finish_sig_check): Close md.
(abort_sig_check): New function.
(crl_parse_insert): Use abort_sig_check to clean up.
* crlcache.c (crl_cache_insert): Clean up CDB on error.
2008-02-13 Marcus Brinkmann <marcus@g10code.de>
* crlcache.c (finish_sig_check): Call gcry_md_stop_debug.
* exechelp.h (dirmngr_release_process): New prototype.
* exechelp.c (dirmngr_release_process): New function.
* ldap.c (ldap_wrapper_thread): Release pid.
(destroy_wrapper): Likewise.
* dirmngr.c (launch_reaper_thread): Destroy tattr.
(handle_connections): Likewise.
2008-02-12 Marcus Brinkmann <marcus@g10code.de>
* ldap.c (pth_close) [! HAVE_W32_SYSTEM]: New macro.
(struct wrapper_context_s): New member log_ev.
(destroy_wrapper): Check FDs for != -1 rather than != 0. Use
pth_close instead of close. Free CTX->log_ev.
(ldap_wrapper_thread): Rewritten to use pth_wait instead of
select. Also use pth_read instead of read and pth_close instead
of close.
(ldap_wrapper): Initialize CTX->log_ev.
(reader_callback): Use pth_close instead of close.
* exechelp.c (create_inheritable_pipe) [HAVE_W32_SYSTEM]: Removed.
(dirmngr_spawn_process) [HAVE_W32_SYSTEM]: Use pth_pipe instead.
* dirmngr_ldap.c [HAVE_W32_SYSTEM]: Include <fcntl.h>.
(main) [HAVE_W32_SYSTEM]: Set mode of stdout to binary.
2008-02-01 Werner Koch <wk@g10code.com>
* ldap.c: Remove all ldap headers as they are unused.
* dirmngr_ldap.c (LDAP_DEPRECATED): New, to have OpenLDAP use the
old standard API.
2008-01-10 Werner Koch <wk@g10code.com>
* dirmngr-client.c: New option --local.
(do_lookup): Use it.
* server.c (lookup_cert_by_pattern): Implement local lookup.
(return_one_cert): New.
* certcache.c (hexsn_to_sexp): New.
(classify_pattern, get_certs_bypattern): New.
* misc.c (unhexify): Allow passing NULL for RESULT.
(cert_log_subject): Do not call ksba_free on an unused variable.
2008-01-02 Marcus Brinkmann <marcus@g10code.de>
* Makefile.am (dirmngr_LDADD, dirmngr_ldap_LDADD)
(dirmngr_client_LDADD): Add $(LIBICONV). Reported by Michael
Nottebrock.
2007-12-11 Werner Koch <wk@g10code.com>
* server.c (option_handler): New option audit-events.
* dirmngr.h (struct server_control_s): Add member AUDIT_EVENTS.
2007-11-26 Marcus Brinkmann <marcus@g10code.de>
* get-path.c (dirmngr_cachedir): Create intermediate directories.
(default_socket_name): Use CSIDL_WINDOWS.
2007-11-21 Werner Koch <wk@g10code.com>
* server.c (lookup_cert_by_pattern): Add args SINGLE and CACHE_ONLY.
(cmd_lookup): Add options --single and --cache-only.
2007-11-16 Werner Koch <wk@g10code.com>
* certcache.c (load_certs_from_dir): Also log the subject DN.
* misc.c (cert_log_subject): New.
2007-11-14 Werner Koch <wk@g10code.com>
* dirmngr-client.c: Replace --lookup-url by --url.
(main): Remove extra code for --lookup-url.
(do_lookup): Remove LOOKUP_URL arg and use the
global option OPT.URL.
* server.c (has_leading_option): New.
(cmd_lookup): Use it.
* crlfetch.c (fetch_cert_by_url): Use GPG_ERR_INV_CERT_OBJ.
(fetch_cert_by_url): Use gpg_error_from_syserror.
2007-11-14 Moritz <moritz@gnu.org> (wk)
* dirmngr-client.c: New command: --lookup-url <URL>.
(do_lookup): New parameter: lookup_url. If TRUE, include "--url"
switch in LOOKUP transaction.
(enum): New entry: oLookupUrl.
(opts): Likewise.
(main): Handle oLookupUrl. New variable: cmd_lookup_url, set
during option parsing, pass to do_lookup() and substitute some
occurences of "cmd_lookup" with "cmd_lookup OR cmd_lookup_url".
* crlfetch.c (fetch_cert_by_url): New function, uses
url_fetch_ldap() to create a reader object and libksba functions
to read a single cert from that reader.
* server.c (lookup_cert_by_url, lookup_cert_by_pattern): New
functions.
(cmd_lookup): Moved almost complete code ...
(lookup_cert_by_pattern): ... here.
(cmd_lookup): Support new optional argument: --url. Depending on
the presence of that switch, call lookup_cert_by_url() or
lookup_cert_by_pattern().
(lookup_cert_by_url): Heavily stripped down version of
lookup_cert_by_pattern(), using fetch_cert_by_url.
2007-10-24 Marcus Brinkmann <marcus@g10code.de>
* exechelp.c (dirmngr_spawn_process): Fix child handles.
2007-10-05 Marcus Brinkmann <marcus@g10code.de>
* dirmngr.h: Include assuan.h.
(start_command_handler): Change type of FD to assuan_fd_t.
* dirmngr.c: Do not include w32-afunix.h.
(socket_nonce): New global variable.
(create_server_socket): Use assuan socket wrappers. Remove W32
specific stuff. Save the server nonce.
(check_nonce): New function.
(start_connection_thread): Call it.
(handle_connections): Change args to assuan_fd_t.
* server.c (start_command_handler): Change type of FD to assuan_fd_t.
2007-09-12 Marcus Brinkmann <marcus@g10code.de>
* dirmngr.c (main): Percent escape pathnames in --gpgconf-list output.
2007-08-27 Moritz Schulte <moritz@g10code.com>
* src/Makefile.am (AM_CPPFLAGS): Define DIRMNGR_SOCKETDIR based on
$(localstatedir).
* src/get-path.c (default_socket_name): Use DIRMNGR_SOCKETDIR
instead of hard-coded "/var/run/dirmngr".
2007-08-16 Werner Koch <wk@g10code.com>
* get-path.c (get_dirmngr_ldap_path): Make PATHNAME const.
* dirmngr.c (my_ksba_hash_buffer): Mark unused arg.
(dirmngr_init_default_ctrl): Ditto.
(my_gcry_logger): Ditto.
* dirmngr-client.c (status_cb): Ditto.
* dirmngr_ldap.c (catch_alarm): Ditto.
* estream-printf.c (pr_bytes_so_far): Ditto.
* estream.c (es_func_fd_create): Ditto.
(es_func_fp_create): Ditto.
(es_write_hexstring): Ditto.
* server.c (cmd_listcrls): Ditto.
(cmd_cachecert): Ditto.
* crlcache.c (cache_isvalid): Ditto.
* ocsp.c (do_ocsp_request): Ditto.
* ldap.c (ldap_wrapper_thread): Ditto.
* http.c (http_register_tls_callback): Ditto.
(connect_server): Ditto.
(write_server) [!HTTP_USE_ESTREAM]: Don't build.
2007-08-14 Werner Koch <wk@g10code.com>
* get-path.c (dirmngr_cachedir) [W32]: Use CSIDL_LOCAL_APPDATA.
2007-08-13 Werner Koch <wk@g10code.com>
* dirmngr.c (handle_connections): Use a timeout in the accept
function. Block signals while creating a new thread.
(shutdown_pending): Needs to be volatile as also accessed bt the
service function.
(w32_service_control): Do not use the regular log fucntions here.
(handle_tick): New.
(main): With system_service in effect use aDaemon as default
command.
(main) [W32]: Only temporary redefine main for the sake of Emacs's
"C-x 4 a".
* dirmngr-client.c (main) [W32]: Initialize sockets.
(start_dirmngr): Use default_socket_name instead of a constant.
* Makefile.am (dirmngr_client_SOURCES): Add get-path.c
2007-08-09 Werner Koch <wk@g10code.com>
* dirmngr.c (parse_ocsp_signer): New.
(parse_rereadable_options): Set opt.ocsp_signer to this.
* dirmngr.h (fingerprint_list_t): New.
* ocsp.c (ocsp_isvalid, check_signature, validate_responder_cert):
Allow for several default ocscp signers.
(ocsp_isvalid): Return GPG_ERR_NO_DATA for an unknwon status.
* dirmngr-client.c: New option --force-default-responder.
* server.c (has_option, skip_options): New.
(cmd_checkocsp): Add option --force-default-responder.
(cmd_isvalid): Ditto. Also add option --only-ocsp.
* ocsp.c (ocsp_isvalid): New arg FORCE_DEFAULT_RESPONDER.
* dirmngr.c: New option --ocsp-max-period.
* ocsp.c (ocsp_isvalid): Implement it and take care that a missing
next_update is to be ignored.
* crlfetch.c (my_es_read): New. Use it instead of es_read.
* estream.h, estream.c, estream-printf.c: Updated from current
libestream SVN.
2007-08-08 Werner Koch <wk@g10code.com>
* crlcache.c (crl_parse_insert): Hack to allow for a missing
nextUpdate.
* dirmngr_ldap.c (print_ldap_entries): Strip the extension from
the want_attr.
* exechelp.c (dirmngr_wait_process): Reworked for clear error
semantics.
* ldap.c (ldap_wrapper_thread): Adjust for new
dirmngr_wait_process semantics.
2007-08-07 Werner Koch <wk@g10code.com>
* get-path.c (default_socket_name) [!W32]: Fixed syntax error.
* ldap.c (X509CACERT, make_url, fetch_next_cert_ldap): Support
x509caCert as used by the Bundesnetzagentur.
(ldap_wrapper): Do not pass the prgtram name as the first
argument. dirmngr_spawn_process takes care of that.
2007-08-04 Marcus Brinkmann <marcus@g10code.de>
* dirmngr.h (opt): Add member system_service.
* dirmngr.c (opts) [HAVE_W32_SYSTEM]: New entry for option
--service.
(DEFAULT_SOCKET_NAME): Removed.
(service_handle, service_status,
w32_service_control) [HAVE_W32_SYSTEM]: New symbols.
(main) [HAVE_W32_SYSTEM]: New entry point for --service. Rename
old function to ...
(real_main) [HAVE_W32_SYSTEM]: ... this. Use default_socket_name
instead of DEFAULT_SOCKET_NAME, and similar for other paths.
Allow colons in Windows socket path name, and implement --service
option.
* util.h (dirmngr_sysconfdir, dirmngr_libexecdir, dirmngr_datadir,
dirmngr_cachedir, default_socket_name): New prototypes.
* get-path.c (dirmngr_sysconfdir, dirmngr_libexecdir)
(dirmngr_datadir, dirmngr_cachedir, default_socket_name): New
functions.
(DIRSEP_C, DIRSEP_S): New macros.
2007-08-03 Marcus Brinkmann <marcus@g10code.de>
* get-path.c: Really add the file this time.
2007-07-31 Marcus Brinkmann <marcus@g10code.de>
* crlfetch.c: Include "estream.h".
(crl_fetch): Use es_read callback instead a file handle.
(crl_close_reader): Use es_fclose instead of fclose.
(struct file_reader_map_s): Change type of FP to estream_t.
(register_file_reader, crl_fetch, crl_close_reader): Likewise.
* ocsp.c: Include "estream.h".
(read_response): Change type of FP to estream_t.
(read_response, do_ocsp_request): Use es_* variants of I/O
functions.
* http.c: Include <pth.h>.
(http_wait_response) [HAVE_W32_SYSTEM]: Use DuplicateHandle.
(cookie_read): Use pth_read instead read.
(cookie_write): Use pth_write instead write.
2007-07-30 Marcus Brinkmann <marcus@g10code.de>
* ldap-url.c (ldap_str2charray): Fix buglet in ldap_utf8_strchr
invocation.
2007-07-27 Marcus Brinkmann <marcus@g10code.de>
* estream.h, estream.c: Update from recent GnuPG.
* get-path.c: New file.
* Makefile.am (dirmngr_SOURCES): Add get-path.c.
* util.h (default_homedir, get_dirmngr_ldap_path): New prototypes.
* dirmngr.c (main): Use default_homedir().
* ldap-url.h: Remove japanese white space (sorry!).
2007-07-26 Marcus Brinkmann <marcus@g10code.de>
* ldap.c (pth_yield): Remove macro.
* ldap.c (pth_yield) [HAVE_W32_SYSTEM]: Define to Sleep(0).
* dirmngr_ldap.c [HAVE_W32_SYSTEM]: Do not include <ldap.h>, but
<winsock2.h>, <winldap.h> and "ldap-url.h".
* ldap.c [HAVE_W32_SYSTEM]: Do not include <ldap.h>, but
<winsock2.h> and <winldap.h>.
* ldap-url.c: Do not include <ldap.h>, but <winsock2.h>,
<winldap.h> and "ldap-url.h".
(LDAP_P): New macro.
* ldap-url.h: New file.
* Makefile.am (ldap_url): Add ldap-url.h.
* Makefile.am (ldap_url): New variable.
(dirmngr_ldap_SOURCES): Add $(ldap_url).
(dirmngr_ldap_LDADD): Add $(LIBOBJS).
* ldap-url.c: New file, excerpted from OpenLDAP.
* dirmngr.c (main) [HAVE_W32_SYSTEM]: Avoid the daemonization.
* dirmngr_ldap.c: Include "util.h".
(main) [HAVE_W32_SYSTEM]: Don't set up alarm.
(set_timeout) [HAVE_W32_SYSTEM]: Likewise.
* ldap.c [HAVE_W32_SYSTEM]: Add macros for setenv and pth_yield.
* no-libgcrypt.h (NO_LIBGCRYPT): Define.
* util.h [NO_LIBGCRYPT]: Don't include <gcrypt.h>.
2007-07-23 Marcus Brinkmann <marcus@g10code.de>
* Makefile.am (dirmngr_SOURCES): Add exechelp.h and exechelp.c.
* exechelp.h, exechelp.c: New files.
* ldap.c: Don't include <sys/wait.h> but "exechelp.h".
(destroy_wrapper, ldap_wrapper_thread,
ldap_wrapper_connection_cleanup): Use dirmngr_kill_process instead
of kill.
(ldap_wrapper_thread): Use dirmngr_wait_process instead of
waitpid.
(ldap_wrapper): Use dirmngr_spawn_process.
2007-07-20 Marcus Brinkmann <marcus@g10code.de>
* certcache.c (cert_cache_lock): Do not initialize statically.
(init_cache_lock): New function.
(cert_cache_init): Call init_cache_lock.
* estream.h, estream.c, estream-printf.h, estream-printf.c: New
files.
* Makefile.am (dirmngr_SOURCES): Add estream.c, estream.h,
estream-printf.c, estream-printf.h.
* http.c: Update to latest version from GnuPG.
* Makefile.am (cdb_sources)
* cdblib.c: Port to windows (backport from tinycdb 0.76).
* crlcache.c [HAVE_W32_SYSTEM]: Don't include sys/utsname.h.
[MKDIR_TAKES_ONE_ARG]: Define mkdir as a macro for such systems.
(update_dir, crl_cache_insert) [HAVE_W32_SYSTEM]: Don't get uname.
* server.c (start_command_handler) [HAVE_W32_SYSTEM]: Don't log
peer credentials.
* dirmngr.c [HAVE_W32_SYSTEM]: Do not include sys/socket.h or
sys/un.h, but ../jnlib/w32-afunix.h.
(sleep) [HAVE_W32_SYSTEM]: New macro.
(main) [HAVE_W32_SYSTEM]: Don't mess with SIGPIPE. Use W32 socket
API.
(handle_signal) [HAVE_W32_SYSTEM]: Deactivate the bunch of the
code.
(handle_connections) [HAVE_W32_SYSTEM]: don't handle signals.
2006-11-29 Werner Koch <wk@g10code.com>
* dirmngr.c (my_strusage): Use macro for the bug report address
and the copyright line.
* dirmngr-client.c (my_strusage): Ditto.
* dirmngr_ldap.c (my_strusage): Ditto.
* Makefile.am: Do not link against LIBICONV.
2006-11-19 Werner Koch <wk@g10code.com>
* dirmngr.c: Include i18n.h.
2006-11-17 Werner Koch <wk@g10code.com>
* Makefile.am (dirmngr_LDADD): Use LIBASSUAN_PTH_LIBS.
2006-11-16 Werner Koch <wk@g10code.com>
* server.c (start_command_handler): Replaced
assuan_init_connected_socket_server by assuan_init_socket_server_ext.
* crlcache.c (update_dir): Put a diagnostic into DIR.txt.
(open_dir): Detect invalid and duplicate entries.
(update_dir): Fixed search for second field.
2006-10-23 Werner Koch <wk@g10code.com>
* dirmngr.c (main): New command --gpgconf-test.
2006-09-14 Werner Koch <wk@g10code.com>
* server.c (start_command_handler): In vebose mode print
information about the peer. This may later be used to restrict
certain commands.
2006-09-12 Werner Koch <wk@g10code.com>
* server.c (start_command_handler): Print a more informative hello
line.
* dirmngr.c: Moved config_filename into the opt struct.
2006-09-11 Werner Koch <wk@g10code.com>
Changed everything to use Assuan with gpg-error codes.
* maperror.c: Removed.
* server.c (map_to_assuan_status): Removed.
* dirmngr.c (main): Set assuan error source.
* dirmngr-client.c (main): Ditto.
2006-09-04 Werner Koch <wk@g10code.com>
* crlfetch.c (crl_fetch): Implement HTTP redirection.
* ocsp.c (do_ocsp_request): Ditto.
New HTTP code version taken from gnupg svn release 4236.
* http.c (http_get_header): New.
(capitalize_header_name, store_header): New.
(parse_response): Store headers away.
(send_request): Return GPG_ERR_NOT_FOUND if connect_server failed.
* http.h: New flag HTTP_FLAG_NEED_HEADER.
2006-09-01 Werner Koch <wk@g10code.com>
* crlfetch.c (register_file_reader, get_file_reader): New.
(crl_fetch): Register the file pointer for HTTP.
(crl_close_reader): And release it.
* http.c, http.h: Updated from GnuPG SVN trunk. Changed all users
to adopt the new API.
* dirmngr.h: Moved inclusion of jnlib header to ...
* util.h: .. here. This is required becuase http.c includes only
a file util.h but makes use of log_foo. Include gcrypt.h so that
gcry_malloc et al are declared.
2006-08-31 Werner Koch <wk@g10code.com>
* ocsp.c (check_signature): Make use of the responder id.
2006-08-30 Werner Koch <wk@g10code.com>
* validate.c (check_cert_sig): Workaround for rimemd160.
(allowed_ca): Always allow trusted CAs.
* dirmngr.h (cert_ref_t): New.
(struct server_control_s): Add field OCSP_CERTS.
* server.c (start_command_handler): Release new field
* ocsp.c (release_ctrl_ocsp_certs): New.
(check_signature): Store certificates in OCSP_CERTS.
* certcache.c (find_issuing_cert): Reset error if cert was found
by subject.
(put_cert): Add new arg FPR_BUFFER. Changed callers.
(cache_cert_silent): New.
* dirmngr.c (parse_rereadable_options): New options
--ocsp-max-clock-skew and --ocsp-current-period.
* ocsp.c (ocsp_isvalid): Use them here.
* ocsp.c (validate_responder_cert): New optional arg signer_cert.
(check_signature_core): Ditto.
(check_signature): Use the default signer certificate here.
2006-06-27 Werner Koch <wk@g10code.com>
* dirmngr-client.c (inq_cert): Take care of SENDCERT_SKI.
2006-06-26 Werner Koch <wk@g10code.com>
* crlcache.c (lock_db_file): Count open files when needed.
(find_entry): Fixed deleted case.
2006-06-23 Werner Koch <wk@g10code.com>
* misc.c (cert_log_name): New.
* certcache.c (load_certs_from_dir): Also print certificate name.
(find_cert_bysn): Release ISSDN.
* validate.h: New VALIDATE_MODE_CERT.
* server.c (cmd_validate): Use it here so that no policy checks
are done. Try to validated a cached copy of the target.
* validate.c (validate_cert_chain): Implement a validation cache.
(check_revocations): Print more diagnostics. Actually use the
loop variable and not the head of the list.
(validate_cert_chain): Do not check revocations of CRL issuer
certificates in plain CRL check mode.
* ocsp.c (ocsp_isvalid): Make sure it is reset for a status of
revoked.
2006-06-22 Werner Koch <wk@g10code.com>
* validate.c (cert_use_crl_p): New.
(cert_usage_p): Add a mode 6 for CRL signing.
(validate_cert_chain): Check that the certificate may be used for
CRL signing. Print a note when not running as system daemon.
(validate_cert_chain): Reduce the maximum depth from 50 to 10.
* certcache.c (find_cert_bysn): Minor restructuring
(find_cert_bysubject): Ditto. Use get_cert_local when called
without KEYID.
* crlcache.c (get_crlissuer_cert_bysn): Removed.
(get_crlissuer_cert): Removed.
(crl_parse_insert): Use find_cert_bysubject and find_cert_bysn
instead of the removed functions.
2006-06-19 Werner Koch <wk@g10code.com>
* certcache.c (compare_serialno): Silly me. Using 0 as true is
that hard; tsss. Fixed call cases except for the only working one
which are both numbers of the same length.
2006-05-15 Werner Koch <wk@g10code.com>
* crlfetch.c (crl_fetch): Use no-shutdown flag for HTTP. This
seems to be required for "IBM_HTTP_Server/2.0.47.1 Apache/2.0.47
(Unix)".
* http.c (parse_tuple): Set flag to to indicate no value.
(build_rel_path): Take care of it.
* crlcache.c (crl_cache_reload_crl): Also iterate over all names
within a DP.
2005-09-28 Marcus Brinkmann <marcus@g10code.de>
* Makefile.am (dirmngr_LDADD): Add @LIBINTL@ and @LIBICONV@.
(dirmngr_ldap_LDADD): Likewise.
(dirmngr_client_LDADD): Likewise.
2005-09-12 Werner Koch <wk@g10code.com>
* dirmngr.c: Fixed description to match the one in gpgconf.
2005-06-15 Werner Koch <wk@g10code.com>
* server.c (cmd_lookup): Take care of NO_DATA which might get
returned also by start_cert_fetch().
2005-04-20 Werner Koch <wk@g10code.com>
* ldap.c (ldap_wrapper_wait_connections): Set a shutdown flag.
(ldap_wrapper_thread): Handle shutdown in a special way.
2005-04-19 Werner Koch <wk@g10code.com>
* server.c (get_cert_local, get_issuing_cert_local)
(get_cert_local_ski): Bail out if called without a local context.
2005-04-18 Werner Koch <wk@g10code.com>
* certcache.c (find_issuing_cert): Fixed last resort method which
should be finding by subject and not by issuer. Try to locate it
also using the keyIdentifier method. Improve error reporting.
(cmp_simple_canon_sexp): New.
(find_cert_bysubject): New.
(find_cert_bysn): Ask back to the caller before trying an extarnl
lookup.
* server.c (get_cert_local_ski): New.
* crlcache.c (crl_parse_insert): Also try to locate issuer
certificate using the keyIdentifier. Improved error reporting.
2005-04-14 Werner Koch <wk@g10code.com>
* ldap.c (start_cert_fetch_ldap): Really return ERR.
2005-03-17 Werner Koch <wk@g10code.com>
* http.c (parse_response): Changed MAXLEN and LEN to size_t to
match the requirement of read_line.
* http.h (http_context_s): Ditto for BUFFER_SIZE.
2005-03-15 Werner Koch <wk@g10code.com>
* ldap.c: Included time.h. Reported by Bernhard Herzog.
2005-03-09 Werner Koch <wk@g10code.com>
* dirmngr.c: Add a note to the help listing check the man page for
other options.
2005-02-01 Werner Koch <wk@g10code.com>
* crlcache.c (crl_parse_insert): Renamed a few variables and
changed diagnostic strings for clarity.
(get_issuer_cert): Renamed to get_crlissuer_cert. Try to locate
the certificate from the cache using the subject name. Use new
fetch function.
(get_crlissuer_cert_bysn): New.
(crl_parse_insert): Use it here.
* crlfetch.c (ca_cert_fetch): Changed interface.
(fetch_next_ksba_cert): New.
* ldap.c (run_ldap_wrapper): Add arg MULTI_MODE. Changed all
callers.
(start_default_fetch_ldap): New
* certcache.c (get_cert_bysubject): New.
(clean_cache_slot, put_cert): Store the subject DN if available.
(MAX_EXTRA_CACHED_CERTS): Increase limit of cachable certificates
to 1000.
(find_cert_bysn): Loop until a certificate with a matching S/N has
been found.
* dirmngr.c (main): Add honor-http-proxy to the gpgconf list.
2005-01-31 Werner Koch <wk@g10code.com>
* ldap.c: Started to work on support for userSMIMECertificates.
* dirmngr.c (main): Make sure to always pass a server control
structure to the caching functions. Reported by Neil Dunbar.
2005-01-05 Werner Koch <wk@g10code.com>
* dirmngr-client.c (read_pem_certificate): Skip trailing percent
escaped linefeeds.
2005-01-03 Werner Koch <wk@g10code.com>
* dirmngr-client.c (read_pem_certificate): New.
(read_certificate): Divert to it depending on pem option.
(squid_loop_body): New.
(main): New options --pem and --squid-mode.
2004-12-17 Werner Koch <wk@g10code.com>
* dirmngr.c (launch_ripper_thread): Renamed to launch_reaper_thread.
(shutdown_reaper): New. Use it for --server and --daemon.
* ldap.c (ldap_wrapper_wait_connections): New.
2004-12-17 Werner Koch <wk@g10code.com>
* Makefile.am (dirmngr_ldap_LDADD): Adjusted for new LDAP checks.
2004-12-16 Werner Koch <wk@g10code.com>
* ldap.c (ldap_wrapper): Peek on the output to detect empty output
early.
2004-12-15 Werner Koch <wk@g10code.com>
* ldap.c (ldap_wrapper): Print a diagnostic after forking for the
ldap wrapper.
* certcache.h (find_cert_bysn): Add this prototype.
* crlcache.c (start_sig_check): Write CRL hash debug file.
(finish_sig_check): Dump the signer's certificate.
(crl_parse_insert): Try to get the issuing cert by authKeyId.
Moved certificate retrieval after item processing.
2004-12-13 Werner Koch <wk@g10code.com>
* dirmngr_ldap.c (catch_alarm, set_timeout): new.
(main): Install alarm handler. Add new option --only-search-timeout.
(print_ldap_entries, fetch_ldap): Use set_timeout ();
* dirmngr.h: Make LDAPTIMEOUT a simple unsigned int. Change all
initializations.
* ldap.c (start_cert_fetch_ldap, run_ldap_wrapper): Pass timeout
option to the wrapper.
(INACTIVITY_TIMEOUT): Depend on LDAPTIMEOUT.
(run_ldap_wrapper): Add arg IGNORE_TIMEOUT.
(ldap_wrapper_thread): Check for special timeout exit code.
* dirmngr.c: Workaround a typo in gpgconf for
ignore-ocsp-service-url.
2004-12-10 Werner Koch <wk@g10code.com>
* ldap.c (url_fetch_ldap): Use TMP and not a HOST which is always
NULL.
* misc.c (host_and_port_from_url): Fixed bad encoding detection.
2004-12-03 Werner Koch <wk@g10code.com>
* crlcache.c (crl_cache_load): Re-implement it.
* dirmngr-client.c: New command --load-crl
(do_loadcrl): New.
* dirmngr.c (parse_rereadable_options, main): Make --allow-ocsp,
--ocsp-responder, --ocsp-signer and --max-replies re-readable.
* ocsp.c (check_signature): try to get the cert from the cache
first.
(ocsp_isvalid): Print the next and this update times on time
conflict.
* certcache.c (load_certs_from_dir): Print the fingerprint for
trusted certificates.
(get_cert_byhexfpr): New.
* misc.c (get_fingerprint_hexstring_colon): New.
2004-12-01 Werner Koch <wk@g10code.com>
* Makefile.am (dirmngr_LDADD): Don't use LDAP_LIBS.
* validate.c (validate_cert_chain): Fixed test; as written in the
comment we want to do this only in daemon mode. For clarity
reworked by using a linked list of certificates and include root
and tragte certificate.
(check_revocations): Likewise. Introduced a recursion sentinel.
2004-11-30 Werner Koch <wk@g10code.com>
* crlfetch.c (ca_cert_fetch, crl_fetch_default): Do not use the
binary prefix as this will be handled in the driver.
* dirmngr_ldap.c: New option --log-with-pid.
(fetch_ldap): Handle LDAP_NO_SUCH_OBJECT.
* ldap.c (run_ldap_wrapper, start_cert_fetch_ldap): Use new log
option.
2004-11-25 Werner Koch <wk@g10code.com>
* Makefile.am (dirmngr_ldap_CFLAGS): Added GPG_ERROR_CFLAGS.
Noted by Bernhard Herzog.
2004-11-24 Werner Koch <wk@g10code.com>
* ldap.c (ldap_wrapper): Fixed default name of the ldap wrapper.
* b64enc.c (b64enc_start, b64enc_finish): Use standard strdup/free
to manage memory.
* dirmngr.c: New options --ignore-http-dp, --ignore-ldap-dp and
--ignore-ocsp-service-url.
* crlcache.c (crl_cache_reload_crl): Implement them.
* ocsp.c (ocsp_isvalid): Ditto.
2004-11-23 Werner Koch <wk@g10code.com>
* ldap.c (ldap_wrapper_thread, reader_callback, ldap_wrapper):
Keep a timestamp and terminate the wrapper after some time of
inactivity.
* dirmngr-client.c (do_lookup): New.
(main): New option --lookup.
(data_cb): New.
* b64enc.c: New. Taken from GnuPG 1.9.
* no-libgcrypt.c (gcry_strdup): Added.
* ocsp.c (ocsp_isvalid): New arg CERT and lookup the issuer
certificate using the standard methods.
* server.c (cmd_lookup): Truncation is now also an indication for
error.
(cmd_checkocsp): Implemented.
* dirmngr_ldap.c (fetch_ldap): Write an error marker for a
truncated search.
* ldap.c (add_server_to_servers): Reactivated.
(url_fetch_ldap): Call it here and try all configured servers in
case of a a failed lookup.
(fetch_next_cert_ldap): Detect the truncation error flag.
* misc.c (host_and_port_from_url, remove_percent_escapes): New.
2004-11-22 Werner Koch <wk@g10code.com>
* dirmngr_ldap.c (main): New option --proxy.
* ocsp.c (do_ocsp_request): Take care of opt.disable_http.
* crlfetch.c (crl_fetch): Honor the --honor-http-proxy variable.
(crl_fetch): Take care of opt.disable_http and disable_ldap.
(crl_fetch_default, ca_cert_fetch, start_cert_fetch):
* ldap.c (run_ldap_wrapper): New arg PROXY.
(url_fetch_ldap, attr_fetch_ldap, start_cert_fetch_ldap): Pass it.
* http.c (http_open_document): Add arg PROXY.
(http_open): Ditto.
(send_request): Ditto and implement it as an override.
* ocsp.c (validate_responder_cert): Use validate_cert_chain.
* Makefile.am (AM_CPPFLAGS): Add macros for a few system
directories.
* dirmngr.h (opt): New members homedir_data, homedir_cache,
ldap_wrapper_program, system_daemon, honor_http_proxy, http_proxy,
ldap_proxy, only_ldap_proxy, disable_ldap, disable_http.
* dirmngr.c (main): Initialize new opt members HOMEDIR_DATA and
HOMEDIR_CACHE.
(parse_rereadable_options): New options --ldap-wrapper-program,
--http-wrapper-program, --disable-ldap, --disable-http,
--honor-http-proxy, --http-proxy, --ldap-proxy, --only-ldap-proxy.
(reread_configuration): New.
* ldap.c (ldap_wrapper): Use the correct name for the wrapper.
* crlcache.c (DBDIR_D): Make it depend on opt.SYSTEM_DAEMON.
(cleanup_cache_dir, open_dir, update_dir, make_db_file_name)
(crl_cache_insert, create_directory_if_needed): Use opt.HOMEDIR_CACHE
* validate.c (check_revocations): New.
* crlcache.c (crl_cache_isvalid): Factored most code out to
(cache_isvalid): .. new.
(crl_cache_cert_isvalid): New.
* server.c (cmd_checkcrl): Cleaned up by using this new function.
(reload_crl): Moved to ..
* crlcache.c (crl_cache_reload_crl): .. here and made global.
* certcache.c (cert_compute_fpr): Renamed from computer_fpr and
made global.
(find_cert_bysn): Try to lookup missing certs.
(cert_cache_init): Intialize using opt.HOMEDIR_DATA.
2004-11-19 Werner Koch <wk@g10code.com>
* dirmngr-client.c (status_cb): New. Use it in very verbose mode.
* server.c (start_command_handler): Malloc the control structure
and properly release it. Removed the primary_connection
hack. Cleanup running wrappers.
(dirmngr_status): Return an error code.
(dirmngr_tick): Return an error code and detect a
cancellation. Use wall time and not CPU time.
* validate.c (validate_cert_chain): Add CTRL arg and changed callers.
* crlcache.c (crl_cache_isvalid):
* crlfetch.c (ca_cert_fetch, start_cert_fetch, crl_fetch_default)
(crl_fetch): Ditto.
* ldap.c (ldap_wrapper, run_ldap_wrapper, url_fetch_ldap)
(attr_fetch_ldap, start_cert_fetch_ldap): Ditto.
(ldap_wrapper_release_context): Reset the stored CTRL.
(reader_callback): Periodically call dirmngr_tick.
(ldap_wrapper_release_context): Print an error message for read
errors.
(ldap_wrapper_connection_cleanup): New.
2004-11-18 Werner Koch <wk@g10code.com>
* dirmngr.c (main): Do not cd / if not running detached.
* dirmngr-client.c: New options --cache-cert and --validate.
(do_cache, do_validate): New.
* server.c (cmd_cachecert, cmd_validate): New.
* crlcache.c (get_issuer_cert): Make use of the certificate cache.
(crl_parse_insert): Validate the issuer certificate.
* dirmngr.c (handle_signal): Reinitialize the certificate cache on
a HUP.
(struct opts): Add --homedir to enable the already implemented code.
(handle_signal): Print stats on SIGUSR1.
* certcache.c (clean_cache_slot, cert_cache_init)
(cert_cache_deinit): New.
(acquire_cache_read_lock, acquire_cache_write_lock)
(release_cache_lock): New. Use them where needed.
(put_cert): Renamed from put_loaded_cert.
(cache_cert): New.
(cert_cache_print_stats): New.
(compare_serialno): Fixed.
2004-11-16 Werner Koch <wk@g10code.com>
* Makefile.am (AM_CPPFLAGS): Define DIRMNGR_SYSCONFDIR and
DIRMNGR_LIBEXECDIR.
* misc.c (dump_isotime, dump_string, dump_cert): New. Taken from
gnupg 1.9.
(dump_serial): New.
2004-11-15 Werner Koch <wk@g10code.com>
* validate.c: New. Based on gnupg's certchain.c
* ldap.c (get_cert_ldap): Removed.
(read_buffer): New.
(start_cert_fetch_ldap, fetch_next_cert_ldap)
(end_cert_fetch_ldap): Rewritten to make use of the ldap wrapper.
2004-11-12 Werner Koch <wk@g10code.com>
* http.c (insert_escapes): Print the percent sign too.
* dirmngr-client.c (inq_cert): Ignore "SENDCERT" and
"SENDISSUERCERT".
* server.c (do_get_cert_local): Limit the length of a retruned
certificate. Return NULL without an error if an empry value has
been received.
* crlfetch.c (ca_cert_fetch): Use the ksba_reader_object.
(setup_funopen, fun_reader, fun_closer): Removed.
* crlcache.c (get_issuer_cert): Adjust accordingly.
* ldap.c (attr_fetch_ldap_internal, attr_fetch_fun_closer)
(attr_fetch_fun_reader, url_fetch_ldap_internal)
(get_attr_from_result_ldap): Removed.
(destroy_wrapper, print_log_line, ldap_wrapper_thread)
(ldap_wrapper_release_context, reader_callback, ldap_wrapper)
(run_ldap_wrapper): New.
(url_fetch_ldap): Make use of the new ldap wrapper and return a
ksba reader object instead of a stdio stream.
(attr_fetch_ldap): Ditto.
(make_url, escape4url): New.
2004-11-11 Werner Koch <wk@g10code.com>
* dirmngr.c (launch_ripper_thread): New.
(main): Start it wheere appropriate. Always ignore SIGPIPE.
(start_connection_thread): Maintain a connection count.
(handle_signal, handle_connections): Use it here instead of the
thread count.
* crlcache.c (crl_cache_insert): Changed to use ksba reader
object. Changed all callers to pass this argument.
2004-11-08 Werner Koch <wk@g10code.com>
* dirmngr_ldap.c: New.
* crlcache.c (crl_cache_init): Don't return a cache object but
keep it module local. We only need one.
(crl_cache_deinit): Don't take cache object but work on existing
one.
(get_current_cache): New.
(crl_cache_insert, crl_cache_list, crl_cache_load): Use the global
cache object and removed the cache arg. Changed all callers.
* dirmngr-client.c: New option --ping.
* dirmngr.c (main): New option --daemon. Initialize PTH.
(handle_connections, start_connection_thread): New.
(handle_signal): New.
(parse_rereadable_options): New. Changed main to make use of it.
(set_debug): Don't bail out on invalid debug levels.
(main): Init the crl_chache for server and daemon mode.
* server.c (start_command_handler): New arg FD. Changed callers.
2004-11-06 Werner Koch <wk@g10code.com>
* server.c (map_assuan_err): Factored out to ..
* maperror.c: .. new file.
* util.h: Add prototype
2004-11-05 Werner Koch <wk@g10code.com>
* no-libgcrypt.c: New, used as helper for dirmngr-client which
does not need libgcrypt proper but jnlib references the memory
functions. Taken from gnupg 1.9.12.
* dirmngr.h: Factored i18n and xmalloc code out to ..
* i18n.h, util.h: .. New.
* dirmngr-client.c: New. Some code taken from gnupg 1.9.12.
* Makefile.am (bin_PROGRAMS) Add dirmngr-client.
2004-11-04 Werner Koch <wk@g10code.com>
* src/server.c (get_fingerprint_from_line, cmd_checkcrl)
(cmd_checkocsp): New.
(register_commands): Register new commands.
(inquire_cert_and_load_crl): Factored most code out to ..
(reload_crl): .. new function.
* src/certcache.h, src/certcache.c: New.
* src/Makefile.am (dirmngr_SOURCES): Add new files.
2004-11-04 Werner Koch <wk@g10code.com>
Please note that earlier entries are found in the top level
ChangeLog.
[Update after merge with GnuPG: see ./ChangeLog.1]
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010 g10 Code GmbH
This file is free software; as a special exception the author gives
unlimited permission to copy and/or distribute it, with or without
modifications, as long as this notice is preserved.
This file is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c
index ed6259a29..8e1aa116a 100644
--- a/dirmngr/dirmngr.c
+++ b/dirmngr/dirmngr.c
@@ -1,1842 +1,1843 @@
/* dirmngr.c - LDAP access
* Copyright (C) 2002 Klarälvdalens Datakonsult AB
* Copyright (C) 2003, 2004, 2006, 2007, 2008, 2010 g10 Code GmbH
*
* This file is part of DirMngr.
*
* DirMngr 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.
*
* DirMngr 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., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <stdarg.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
#include <time.h>
#include <fcntl.h>
#ifndef HAVE_W32_SYSTEM
#include <sys/socket.h>
#include <sys/un.h>
#endif
#include <sys/stat.h>
#include <unistd.h>
#ifdef HAVE_SIGNAL_H
# include <signal.h>
#endif
#include <pth.h>
#define JNLIB_NEED_LOG_LOGV
#define JNLIB_NEED_AFLOCAL
#include "dirmngr.h"
#include <assuan.h>
#include "certcache.h"
#include "crlcache.h"
#include "crlfetch.h"
#include "misc.h"
#include "ldapserver.h"
#include "asshelp.h"
#include "ldap-wrapper.h"
/* The plain Windows version uses the windows service system. For
example to start the service you may use "sc start dirmngr".
WindowsCE does not support this; the service system over there is
based on a single process with all services being DLLs - we can't
support this easily. */
#if defined(HAVE_W32_SYSTEM) && !defined(HAVE_W32CE_SYSTEM)
# define USE_W32_SERVICE 1
#endif
enum cmd_and_opt_values {
aNull = 0,
oCsh = 'c',
oQuiet = 'q',
oSh = 's',
oVerbose = 'v',
oNoVerbose = 500,
aServer,
aDaemon,
aService,
aListCRLs,
aLoadCRL,
aFetchCRL,
aShutdown,
aFlush,
aGPGConfList,
aGPGConfTest,
oOptions,
oDebug,
oDebugAll,
oDebugWait,
oDebugLevel,
oNoGreeting,
oNoOptions,
oHomedir,
oNoDetach,
oLogFile,
oBatch,
oDisableHTTP,
oDisableLDAP,
oIgnoreLDAPDP,
oIgnoreHTTPDP,
oIgnoreOCSPSvcUrl,
oHonorHTTPProxy,
oHTTPProxy,
oLDAPProxy,
oOnlyLDAPProxy,
oLDAPFile,
oLDAPTimeout,
oLDAPAddServers,
oOCSPResponder,
oOCSPSigner,
oOCSPMaxClockSkew,
oOCSPMaxPeriod,
oOCSPCurrentPeriod,
oMaxReplies,
oFakedSystemTime,
oForce,
oAllowOCSP,
oSocketName,
oLDAPWrapperProgram,
oHTTPWrapperProgram,
oIgnoreCertExtension,
aTest
};
static ARGPARSE_OPTS opts[] = {
ARGPARSE_group (300, N_("@Commands:\n ")),
ARGPARSE_c (aServer, "server", N_("run in server mode (foreground)") ),
ARGPARSE_c (aDaemon, "daemon", N_("run in daemon mode (background)") ),
#ifdef USE_W32_SERVICE
ARGPARSE_c (aService, "service", N_("run as windows service (background)")),
#endif
ARGPARSE_c (aListCRLs, "list-crls", N_("list the contents of the CRL cache")),
ARGPARSE_c (aLoadCRL, "load-crl", N_("|FILE|load CRL from FILE into cache")),
ARGPARSE_c (aFetchCRL, "fetch-crl", N_("|URL|fetch a CRL from URL")),
ARGPARSE_c (aShutdown, "shutdown", N_("shutdown the dirmngr")),
ARGPARSE_c (aFlush, "flush", N_("flush the cache")),
ARGPARSE_c (aGPGConfList, "gpgconf-list", "@"),
ARGPARSE_c (aGPGConfTest, "gpgconf-test", "@"),
ARGPARSE_group (301, N_("@\nOptions:\n ")),
ARGPARSE_s_n (oVerbose, "verbose", N_("verbose")),
ARGPARSE_s_n (oQuiet, "quiet", N_("be somewhat more quiet")),
ARGPARSE_s_n (oSh, "sh", N_("sh-style command output")),
ARGPARSE_s_n (oCsh, "csh", N_("csh-style command output")),
ARGPARSE_s_s (oOptions, "options", N_("|FILE|read options from FILE")),
ARGPARSE_s_s (oDebugLevel, "debug-level",
N_("|LEVEL|set the debugging level to LEVEL")),
ARGPARSE_s_n (oNoDetach, "no-detach", N_("do not detach from the console")),
ARGPARSE_s_s (oLogFile, "log-file",
N_("|FILE|write server mode logs to FILE")),
ARGPARSE_s_n (oBatch, "batch", N_("run without asking a user")),
ARGPARSE_s_n (oForce, "force", N_("force loading of outdated CRLs")),
ARGPARSE_s_n (oAllowOCSP, "allow-ocsp", N_("allow sending OCSP requests")),
ARGPARSE_s_n (oDisableHTTP, "disable-http", N_("inhibit the use of HTTP")),
ARGPARSE_s_n (oDisableLDAP, "disable-ldap", N_("inhibit the use of LDAP")),
ARGPARSE_s_n (oIgnoreHTTPDP,"ignore-http-dp",
N_("ignore HTTP CRL distribution points")),
ARGPARSE_s_n (oIgnoreLDAPDP,"ignore-ldap-dp",
N_("ignore LDAP CRL distribution points")),
ARGPARSE_s_n (oIgnoreOCSPSvcUrl, "ignore-ocsp-service-url",
N_("ignore certificate contained OCSP service URLs")),
ARGPARSE_s_s (oHTTPProxy, "http-proxy",
N_("|URL|redirect all HTTP requests to URL")),
ARGPARSE_s_s (oLDAPProxy, "ldap-proxy",
N_("|HOST|use HOST for LDAP queries")),
ARGPARSE_s_n (oOnlyLDAPProxy, "only-ldap-proxy",
N_("do not use fallback hosts with --ldap-proxy")),
ARGPARSE_s_s (oLDAPFile, "ldapserverlist-file",
N_("|FILE|read LDAP server list from FILE")),
ARGPARSE_s_n (oLDAPAddServers, "add-servers",
N_("add new servers discovered in CRL distribution"
" points to serverlist")),
ARGPARSE_s_i (oLDAPTimeout, "ldaptimeout",
N_("|N|set LDAP timeout to N seconds")),
ARGPARSE_s_s (oOCSPResponder, "ocsp-responder",
N_("|URL|use OCSP responder at URL")),
ARGPARSE_s_s (oOCSPSigner, "ocsp-signer",
N_("|FPR|OCSP response signed by FPR")),
ARGPARSE_s_i (oOCSPMaxClockSkew, "ocsp-max-clock-skew", "@"),
ARGPARSE_s_i (oOCSPMaxPeriod, "ocsp-max-period", "@"),
ARGPARSE_s_i (oOCSPCurrentPeriod, "ocsp-current-period", "@"),
ARGPARSE_s_i (oMaxReplies, "max-replies",
N_("|N|do not return more than N items in one query")),
ARGPARSE_s_s (oSocketName, "socket-name", "@"), /* Only for debugging. */
ARGPARSE_s_u (oFakedSystemTime, "faked-system-time", "@"), /*(epoch time)*/
ARGPARSE_p_u (oDebug, "debug", "@"),
ARGPARSE_s_n (oDebugAll, "debug-all", "@"),
ARGPARSE_s_i (oDebugWait, "debug-wait", "@"),
ARGPARSE_s_n (oNoGreeting, "no-greeting", "@"),
ARGPARSE_s_s (oHomedir, "homedir", "@"),
ARGPARSE_s_s (oLDAPWrapperProgram, "ldap-wrapper-program", "@"),
ARGPARSE_s_s (oHTTPWrapperProgram, "http-wrapper-program", "@"),
ARGPARSE_s_n (oHonorHTTPProxy, "honor-http-proxy", "@"),
ARGPARSE_s_s (oIgnoreCertExtension,"ignore-cert-extension", "@"),
ARGPARSE_group (302,N_("@\n(See the \"info\" manual for a complete listing "
"of all commands and options)\n")),
ARGPARSE_end ()
};
#define DEFAULT_MAX_REPLIES 10
#define DEFAULT_LDAP_TIMEOUT 100 /* arbitrary large timeout */
/* For the cleanup handler we need to keep track of the socket's name. */
static const char *socket_name;
/* We need to keep track of the server's nonces (these are dummies for
POSIX systems). */
static assuan_sock_nonce_t socket_nonce;
/* Only if this flag has been set we will remove the socket file. */
static int cleanup_socket;
/* Keep track of the current log file so that we can avoid updating
the log file after a SIGHUP if it didn't changed. Malloced. */
static char *current_logfile;
/* Helper to implement --debug-level. */
static const char *debug_level;
/* Flag indicating that a shutdown has been requested. */
static volatile int shutdown_pending;
/* Counter for the active connections. */
static int active_connections;
/* The timer tick used for housekeeping stuff. For Windows we use a
longer period as the SetWaitableTimer seems to signal earlier than
the 2 seconds. */
#ifdef HAVE_W32_SYSTEM
#define TIMERTICK_INTERVAL (4)
#else
#define TIMERTICK_INTERVAL (2) /* Seconds. */
#endif
/* This union is used to avoid compiler warnings in case a pointer is
64 bit and an int 32 bit. We store an integer in a pointer and get
it back later (pth_key_getdata et al.). */
union int_and_ptr_u
{
int aint;
assuan_fd_t afd;
void *aptr;
};
/* The key used to store the current file descriptor in the thread
local storage. We use this in conjunction with the
log_set_pid_suffix_cb feature.. */
#ifndef HAVE_W32_SYSTEM
static int my_tlskey_current_fd;
#endif
/* Prototypes. */
static void cleanup (void);
static ldap_server_t parse_ldapserver_file (const char* filename);
static fingerprint_list_t parse_ocsp_signer (const char *string);
static void handle_connections (assuan_fd_t listen_fd);
/* Pth wrapper function definitions. */
ASSUAN_SYSTEM_PTH_IMPL;
GCRY_THREAD_OPTION_PTH_IMPL;
static int fixed_gcry_pth_init (void)
{
return pth_self ()? 0 : (pth_init () == FALSE) ? errno : 0;
}
static const char *
my_strusage( int level )
{
const char *p;
switch ( level )
{
case 11: p = "dirmngr (GnuPG)";
break;
case 13: p = VERSION; break;
case 17: p = PRINTABLE_OS_NAME; break;
/* TRANSLATORS: @EMAIL@ will get replaced by the actual bug
reporting address. This is so that we can change the
reporting address without breaking the translations. */
case 19: p = _("Please report bugs to <@EMAIL@>.\n"); break;
case 49: p = PACKAGE_BUGREPORT; break;
case 1:
case 40: p = _("Usage: dirmngr [options] (-h for help)");
break;
case 41: p = _("Syntax: dirmngr [options] [command [args]]\n"
"LDAP and OCSP access for GnuPG\n");
break;
default: p = NULL;
}
return p;
}
/* Callback from libksba to hash a provided buffer. Our current
implementation does only allow SHA-1 for hashing. This may be
extended by mapping the name, testing for algorithm availibility
and adjust the length checks accordingly. */
static gpg_error_t
my_ksba_hash_buffer (void *arg, const char *oid,
const void *buffer, size_t length, size_t resultsize,
unsigned char *result, size_t *resultlen)
{
(void)arg;
if (oid && strcmp (oid, "1.3.14.3.2.26"))
return gpg_error (GPG_ERR_NOT_SUPPORTED);
if (resultsize < 20)
return gpg_error (GPG_ERR_BUFFER_TOO_SHORT);
gcry_md_hash_buffer (2, result, buffer, length);
*resultlen = 20;
return 0;
}
/* Setup the debugging. With a LEVEL of NULL only the active debug
flags are propagated to the subsystems. With LEVEL set, a specific
set of debug flags is set; thus overriding all flags already
set. */
static void
set_debug (void)
{
int numok = (debug_level && digitp (debug_level));
int numlvl = numok? atoi (debug_level) : 0;
if (!debug_level)
;
else if (!strcmp (debug_level, "none") || (numok && numlvl < 1))
opt.debug = 0;
else if (!strcmp (debug_level, "basic") || (numok && numlvl <= 2))
opt.debug = DBG_ASSUAN_VALUE;
else if (!strcmp (debug_level, "advanced") || (numok && numlvl <= 5))
opt.debug = (DBG_ASSUAN_VALUE|DBG_X509_VALUE|DBG_LOOKUP_VALUE);
else if (!strcmp (debug_level, "expert") || (numok && numlvl <= 8))
opt.debug = (DBG_ASSUAN_VALUE|DBG_X509_VALUE|DBG_LOOKUP_VALUE
|DBG_CACHE_VALUE|DBG_CRYPTO_VALUE);
else if (!strcmp (debug_level, "guru") || numok)
{
opt.debug = ~0;
/* Unless the "guru" string has been used we don't want to allow
hashing debugging. The rationale is that people tend to
select the highest debug value and would then clutter their
disk with debug files which may reveal confidential data. */
if (numok)
opt.debug &= ~(DBG_HASHING_VALUE);
}
else
{
log_error (_("invalid debug-level `%s' given\n"), debug_level);
log_info (_("valid debug levels are: %s\n"),
"none, basic, advanced, expert, guru");
opt.debug = 0; /* Reset debugging, so that prior debug
statements won't have an undesired effect. */
}
if (opt.debug && !opt.verbose)
{
opt.verbose = 1;
gcry_control (GCRYCTL_SET_VERBOSITY, (int)opt.verbose);
}
if (opt.debug && opt.quiet)
opt.quiet = 0;
if (opt.debug & DBG_CRYPTO_VALUE )
gcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1);
}
static void
wrong_args (const char *text)
{
es_fputs (_("usage: dirmngr [options] "), es_stderr);
es_fputs (text, es_stderr);
es_putc ('\n', es_stderr);
dirmngr_exit (2);
}
/* Helper to stop the reaper thread for the ldap wrapper. */
static void
shutdown_reaper (void)
{
ldap_wrapper_wait_connections ();
}
/* Handle options which are allowed to be reset after program start.
Return true if the current option in PARGS could be handled and
false if not. As a special feature, passing a value of NULL for
PARGS, resets the options to the default. REREAD should be set
true if it is not the initial option parsing. */
static int
parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread)
{
if (!pargs)
{ /* Reset mode. */
opt.quiet = 0;
opt.verbose = 0;
opt.debug = 0;
opt.ldap_wrapper_program = NULL;
opt.disable_http = 0;
opt.disable_ldap = 0;
opt.honor_http_proxy = 0;
opt.http_proxy = NULL;
opt.ldap_proxy = NULL;
opt.only_ldap_proxy = 0;
opt.ignore_http_dp = 0;
opt.ignore_ldap_dp = 0;
opt.ignore_ocsp_service_url = 0;
opt.allow_ocsp = 0;
opt.ocsp_responder = NULL;
opt.ocsp_max_clock_skew = 10 * 60; /* 10 minutes. */
opt.ocsp_max_period = 90 * 86400; /* 90 days. */
opt.ocsp_current_period = 3 * 60 * 60; /* 3 hours. */
opt.max_replies = DEFAULT_MAX_REPLIES;
while (opt.ocsp_signer)
{
fingerprint_list_t tmp = opt.ocsp_signer->next;
xfree (opt.ocsp_signer);
opt.ocsp_signer = tmp;
}
FREE_STRLIST (opt.ignored_cert_extensions);
return 1;
}
switch (pargs->r_opt)
{
case oQuiet: opt.quiet = 1; break;
case oVerbose: opt.verbose++; break;
case oDebug: opt.debug |= pargs->r.ret_ulong; break;
case oDebugAll: opt.debug = ~0; break;
case oDebugLevel: debug_level = pargs->r.ret_str; break;
case oLogFile:
if (!reread)
return 0; /* Not handled. */
if (!current_logfile || !pargs->r.ret_str
|| strcmp (current_logfile, pargs->r.ret_str))
{
log_set_file (pargs->r.ret_str);
xfree (current_logfile);
current_logfile = xtrystrdup (pargs->r.ret_str);
}
break;
case oLDAPWrapperProgram:
opt.ldap_wrapper_program = pargs->r.ret_str;
break;
case oHTTPWrapperProgram:
opt.http_wrapper_program = pargs->r.ret_str;
break;
case oDisableHTTP: opt.disable_http = 1; break;
case oDisableLDAP: opt.disable_ldap = 1; break;
case oHonorHTTPProxy: opt.honor_http_proxy = 1; break;
case oHTTPProxy: opt.http_proxy = pargs->r.ret_str; break;
case oLDAPProxy: opt.ldap_proxy = pargs->r.ret_str; break;
case oOnlyLDAPProxy: opt.only_ldap_proxy = 1; break;
case oIgnoreHTTPDP: opt.ignore_http_dp = 1; break;
case oIgnoreLDAPDP: opt.ignore_ldap_dp = 1; break;
case oIgnoreOCSPSvcUrl: opt.ignore_ocsp_service_url = 1; break;
case oAllowOCSP: opt.allow_ocsp = 1; break;
case oOCSPResponder: opt.ocsp_responder = pargs->r.ret_str; break;
case oOCSPSigner:
opt.ocsp_signer = parse_ocsp_signer (pargs->r.ret_str);
break;
case oOCSPMaxClockSkew: opt.ocsp_max_clock_skew = pargs->r.ret_int; break;
case oOCSPMaxPeriod: opt.ocsp_max_period = pargs->r.ret_int; break;
case oOCSPCurrentPeriod: opt.ocsp_current_period = pargs->r.ret_int; break;
case oMaxReplies: opt.max_replies = pargs->r.ret_int; break;
case oIgnoreCertExtension:
add_to_strlist (&opt.ignored_cert_extensions, pargs->r.ret_str);
break;
default:
return 0; /* Not handled. */
}
return 1; /* Handled. */
}
#ifdef USE_W32_SERVICE
/* The global status of our service. */
SERVICE_STATUS_HANDLE service_handle;
SERVICE_STATUS service_status;
DWORD WINAPI
w32_service_control (DWORD control, DWORD event_type, LPVOID event_data,
LPVOID context)
{
/* event_type and event_data are not used here. */
switch (control)
{
case SERVICE_CONTROL_SHUTDOWN:
/* For shutdown we will try to force termination. */
service_status.dwCurrentState = SERVICE_STOP_PENDING;
SetServiceStatus (service_handle, &service_status);
shutdown_pending = 3;
break;
case SERVICE_CONTROL_STOP:
service_status.dwCurrentState = SERVICE_STOP_PENDING;
SetServiceStatus (service_handle, &service_status);
shutdown_pending = 1;
break;
default:
break;
}
return 0;
}
#endif /*USE_W32_SERVICE*/
#ifndef HAVE_W32_SYSTEM
static int
pid_suffix_callback (unsigned long *r_suffix)
{
union int_and_ptr_u value;
value.aptr = pth_key_getdata (my_tlskey_current_fd);
*r_suffix = value.aint;
return (*r_suffix != -1); /* Use decimal representation. */
}
#endif /*!HAVE_W32_SYSTEM*/
#ifdef USE_W32_SERVICE
# define main real_main
#endif
int
main (int argc, char **argv)
{
#ifdef USE_W32_SERVICE
# undef main
#endif
enum cmd_and_opt_values cmd = 0;
ARGPARSE_ARGS pargs;
int orig_argc;
char **orig_argv;
FILE *configfp = NULL;
char *configname = NULL;
const char *shell;
unsigned configlineno;
int parse_debug = 0;
int default_config =1;
int greeting = 0;
int nogreeting = 0;
int nodetach = 0;
int csh_style = 0;
char *logfile = NULL;
char *ldapfile = NULL;
int debug_wait = 0;
int rc;
int homedir_seen = 0;
struct assuan_malloc_hooks malloc_hooks;
#ifdef USE_W32_SERVICE
/* The option will be set by main() below if we should run as a
system daemon. */
if (opt.system_service)
{
service_handle
= RegisterServiceCtrlHandlerEx ("DirMngr",
&w32_service_control, NULL /*FIXME*/);
if (service_handle == 0)
log_error ("failed to register service control handler: ec=%d",
(int) GetLastError ());
service_status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
service_status.dwCurrentState = SERVICE_START_PENDING;
service_status.dwControlsAccepted
= SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
service_status.dwWin32ExitCode = NO_ERROR;
service_status.dwServiceSpecificExitCode = NO_ERROR;
service_status.dwCheckPoint = 0;
service_status.dwWaitHint = 10000; /* 10 seconds timeout. */
SetServiceStatus (service_handle, &service_status);
}
#endif /*USE_W32_SERVICE*/
set_strusage (my_strusage);
log_set_prefix ("dirmngr", 1|4);
/* Make sure that our subsystems are ready. */
i18n_init ();
init_common_subsystems (&argc, &argv);
/* Libgcrypt requires us to register the threading model first.
Note that this will also do the pth_init. */
gcry_threads_pth.init = fixed_gcry_pth_init;
rc = gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pth);
if (rc)
{
log_fatal ("can't register GNU Pth with Libgcrypt: %s\n",
gpg_strerror (rc));
}
gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
/* Check that the libraries are suitable. Do it here because
the option parsing may need services of the libraries. */
if (!gcry_check_version (NEED_LIBGCRYPT_VERSION) )
log_fatal (_("%s is too old (need %s, have %s)\n"), "libgcrypt",
NEED_LIBGCRYPT_VERSION, gcry_check_version (NULL) );
if (!ksba_check_version (NEED_KSBA_VERSION) )
log_fatal( _("%s is too old (need %s, have %s)\n"), "libksba",
NEED_KSBA_VERSION, ksba_check_version (NULL) );
ksba_set_malloc_hooks (gcry_malloc, gcry_realloc, gcry_free );
ksba_set_hash_buffer_function (my_ksba_hash_buffer, NULL);
/* Init Assuan. */
malloc_hooks.malloc = gcry_malloc;
malloc_hooks.realloc = gcry_realloc;
malloc_hooks.free = gcry_free;
assuan_set_malloc_hooks (&malloc_hooks);
assuan_set_assuan_log_prefix (log_get_prefix (NULL));
assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
assuan_set_system_hooks (ASSUAN_SYSTEM_PTH);
assuan_sock_init ();
setup_libassuan_logging (&opt.debug);
setup_libgcrypt_logging ();
/* Setup defaults. */
shell = getenv ("SHELL");
if (shell && strlen (shell) >= 3 && !strcmp (shell+strlen (shell)-3, "csh") )
csh_style = 1;
opt.homedir = default_homedir ();
/* Now with Pth running we can set the logging callback. Our
windows implementation does not yet feature the Pth TLS
functions. */
#ifndef HAVE_W32_SYSTEM
if (pth_key_create (&my_tlskey_current_fd, NULL))
if (pth_key_setdata (my_tlskey_current_fd, NULL))
log_set_pid_suffix_cb (pid_suffix_callback);
#endif /*!HAVE_W32_SYSTEM*/
/* Reset rereadable options to default values. */
parse_rereadable_options (NULL, 0);
/* LDAP defaults. */
opt.add_new_ldapservers = 0;
opt.ldaptimeout = DEFAULT_LDAP_TIMEOUT;
/* Other defaults. */
socket_name = dirmngr_socket_name ();
/* Check whether we have a config file given 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;
homedir_seen = 1;
}
else if (pargs.r_opt == aDaemon)
opt.system_daemon = 1;
else if (pargs.r_opt == aService)
{
/* Redundant. The main function takes care of it. */
opt.system_service = 1;
opt.system_daemon = 1;
}
#ifdef HAVE_W32_SYSTEM
else if (pargs.r_opt == aGPGConfList || pargs.r_opt == aGPGConfTest)
/* We set this so we switch to the system configuration
directory below. This is a crutch to solve the problem
that the user configuration is never used on Windows. Also
see below at aGPGConfList. */
opt.system_daemon = 1;
#endif
}
/* If --daemon has been given on the command line but not --homedir,
we switch to /etc/dirmngr as default home directory. Note, that
this also overrides the GNUPGHOME environment variable. */
if (opt.system_daemon && !homedir_seen)
{
opt.homedir = gnupg_sysconfdir ();
opt.homedir_data = gnupg_datadir ();
opt.homedir_cache = gnupg_cachedir ();
}
if (default_config)
configname = make_filename (opt.homedir, "dirmngr.conf", 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) );
exit(2);
}
xfree (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) )
{
if (parse_rereadable_options (&pargs, 0))
continue; /* Already handled */
switch (pargs.r_opt)
{
case aServer:
case aDaemon:
case aService:
case aShutdown:
case aFlush:
case aListCRLs:
case aLoadCRL:
case aFetchCRL:
case aGPGConfList:
case aGPGConfTest:
cmd = pargs.r_opt;
break;
case oQuiet: opt.quiet = 1; break;
case oVerbose: opt.verbose++; break;
case oBatch: opt.batch=1; break;
case oDebug: opt.debug |= pargs.r.ret_ulong; break;
case oDebugAll: opt.debug = ~0; break;
case oDebugLevel: debug_level = pargs.r.ret_str; break;
case oDebugWait: debug_wait = pargs.r.ret_int; break;
case oOptions:
/* Config files may not be nested (silently ignore them) */
if (!configfp)
{
xfree(configname);
configname = xstrdup(pargs.r.ret_str);
goto next_pass;
}
break;
case oNoGreeting: nogreeting = 1; break;
case oNoVerbose: opt.verbose = 0; break;
case oNoOptions: break; /* no-options */
case oHomedir: /* Ignore this option here. */; break;
case oNoDetach: nodetach = 1; break;
case oLogFile: logfile = pargs.r.ret_str; break;
case oCsh: csh_style = 1; break;
case oSh: csh_style = 0; break;
case oLDAPFile: ldapfile = pargs.r.ret_str; break;
case oLDAPAddServers: opt.add_new_ldapservers = 1; break;
case oLDAPTimeout:
opt.ldaptimeout = pargs.r.ret_int;
break;
case oFakedSystemTime:
gnupg_set_time ((time_t)pargs.r.ret_ulong, 0);
break;
case oForce: opt.force = 1; break;
case oSocketName: socket_name = pargs.r.ret_str; break;
default : pargs.err = configfp? 1:2; break;
}
}
if (configfp)
{
fclose (configfp);
configfp = NULL;
/* Keep a copy of the name so that it can be read on SIGHUP. */
opt.config_filename = configname;
configname = NULL;
goto next_pass;
}
xfree (configname);
configname = NULL;
if (log_get_errorcount(0))
exit(2);
if (nogreeting )
greeting = 0;
if (!opt.homedir_data)
opt.homedir_data = opt.homedir;
if (!opt.homedir_cache)
opt.homedir_cache = opt.homedir;
if (greeting)
{
es_fprintf (es_stderr, "%s %s; %s\n",
strusage(11), strusage(13), strusage(14) );
es_fprintf (es_stderr, "%s\n", strusage(15) );
}
#ifdef IS_DEVELOPMENT_VERSION
log_info ("NOTE: this is a development version!\n");
#endif
if (!access ("/etc/dirmngr", F_OK) && !strncmp (opt.homedir, "/etc/", 5))
log_info
("NOTE: DirMngr is now a proper part of GnuPG. The configuration and"
" other directory names changed. Please check that no other version"
" of dirmngr is still installed. To disable this warning, remove the"
" directory `/etc/dirmngr'.\n");
if (gnupg_faked_time_p ())
{
- gnupg_isotime_t tbuf;
+ log_info (_("WARNING: running with faked system time: "));
gnupg_get_isotime (tbuf);
- log_info (_("WARNING: running with faked system time %s\n"), tbuf);
+ dump_isotime (tbuf);
+ log_printf ("\n");
}
set_debug ();
/* Get LDAP server list from file. */
if (!ldapfile)
{
ldapfile = make_filename (opt.homedir,
opt.system_daemon?
"ldapservers.conf":"dirmngr_ldapservers.conf",
NULL);
opt.ldapservers = parse_ldapserver_file (ldapfile);
xfree (ldapfile);
}
else
opt.ldapservers = parse_ldapserver_file (ldapfile);
#ifndef HAVE_W32_SYSTEM
/* We need to ignore the PIPE signal because the we might log to a
socket and that code handles EPIPE properly. The ldap wrapper
also requires us to ignore this silly signal. Assuan would set
this signal to ignore anyway.*/
signal (SIGPIPE, SIG_IGN);
#endif
/* Ready. Now to our duties. */
if (!cmd && opt.system_service)
cmd = aDaemon;
else if (!cmd)
cmd = aServer;
rc = 0;
if (cmd == aServer)
{
/* Note that this server mode is maily useful for debugging. */
if (argc)
wrong_args ("--server");
if (logfile)
{
log_set_file (logfile);
log_set_prefix (NULL, 2|4);
}
if (debug_wait)
{
log_debug ("waiting for debugger - my pid is %u .....\n",
(unsigned int)getpid());
gnupg_sleep (debug_wait);
log_debug ("... okay\n");
}
ldap_wrapper_launch_thread ();
cert_cache_init ();
crl_cache_init ();
start_command_handler (ASSUAN_INVALID_FD);
shutdown_reaper ();
}
else if (cmd == aDaemon)
{
assuan_fd_t fd;
pid_t pid;
int len;
struct sockaddr_un serv_addr;
if (argc)
wrong_args ("--daemon");
/* Now start with logging to a file if this is desired. */
if (logfile)
{
log_set_file (logfile);
log_set_prefix (NULL, (JNLIB_LOG_WITH_PREFIX
|JNLIB_LOG_WITH_TIME
|JNLIB_LOG_WITH_PID));
current_logfile = xstrdup (logfile);
}
#ifndef HAVE_W32_SYSTEM
if (strchr (socket_name, ':'))
{
log_error (_("colons are not allowed in the socket name\n"));
dirmngr_exit (1);
}
#endif
if (strlen (socket_name)+1 >= sizeof serv_addr.sun_path )
{
log_error (_("name of socket too long\n"));
dirmngr_exit (1);
}
fd = assuan_sock_new (AF_UNIX, SOCK_STREAM, 0);
if (fd == ASSUAN_INVALID_FD)
{
log_error (_("can't create socket: %s\n"), strerror (errno));
cleanup ();
dirmngr_exit (1);
}
memset (&serv_addr, 0, sizeof serv_addr);
serv_addr.sun_family = AF_UNIX;
strcpy (serv_addr.sun_path, socket_name);
len = SUN_LEN (&serv_addr);
rc = assuan_sock_bind (fd, (struct sockaddr*) &serv_addr, len);
if (rc == -1
&& (errno == EADDRINUSE
#ifdef HAVE_W32_SYSTEM
|| errno == EEXIST
#endif
))
{
/* Fixme: We should test whether a dirmngr is already running. */
gnupg_remove (socket_name);
rc = assuan_sock_bind (fd, (struct sockaddr*) &serv_addr, len);
}
if (rc != -1
&& (rc = assuan_sock_get_nonce ((struct sockaddr*) &serv_addr, len, &socket_nonce)))
log_error (_("error getting nonce for the socket\n"));
if (rc == -1)
{
log_error (_("error binding socket to `%s': %s\n"),
serv_addr.sun_path, gpg_strerror (gpg_error_from_errno (errno)));
assuan_sock_close (fd);
dirmngr_exit (1);
}
cleanup_socket = 1;
if (listen (FD2INT (fd), 5) == -1)
{
log_error (_("listen() failed: %s\n"), strerror (errno));
assuan_sock_close (fd);
dirmngr_exit (1);
}
if (opt.verbose)
log_info (_("listening on socket `%s'\n"), socket_name );
es_fflush (NULL);
/* Note: We keep the dirmngr_info output only for the sake of
existing scripts which might use this to detect a successful
start of the dirmngr. */
#ifdef HAVE_W32_SYSTEM
pid = getpid ();
printf ("set DIRMNGR_INFO=%s;%lu;1\n", socket_name, (ulong) pid);
#else
pid = pth_fork ();
if (pid == (pid_t)-1)
{
- log_fatal (_("fork failed: %s\n"), strerror (errno) );
+ log_fatal (_("error forking process: %s\n"), strerror (errno));
dirmngr_exit (1);
}
if (pid)
{ /* We are the parent */
char *infostr;
/* Don't let cleanup() remove the socket - the child is
responsible for doing that. */
cleanup_socket = 0;
close (fd);
/* Create the info string: <name>:<pid>:<protocol_version> */
if (asprintf (&infostr, "DIRMNGR_INFO=%s:%lu:1",
socket_name, (ulong)pid ) < 0)
{
log_error (_("out of core\n"));
kill (pid, SIGTERM);
dirmngr_exit (1);
}
/* Print the environment string, so that the caller can use
shell's eval to set it. But see above. */
if (csh_style)
{
*strchr (infostr, '=') = ' ';
printf ( "setenv %s\n", infostr);
}
else
{
printf ( "%s; export DIRMNGR_INFO;\n", infostr);
}
free (infostr);
exit (0);
/*NEVER REACHED*/
} /* end parent */
/*
This is the child
*/
/* Detach from tty and put process into a new session */
if (!nodetach )
{
int i;
unsigned int oldflags;
/* Close stdin, stdout and stderr unless it is the log stream */
for (i=0; i <= 2; i++)
{
if (!log_test_fd (i) && i != fd )
close (i);
}
if (setsid() == -1)
{
- log_error (_("setsid() failed: %s\n"), strerror(errno) );
+ log_error ("setsid() failed: %s\n", strerror(errno) );
dirmngr_exit (1);
}
log_get_prefix (&oldflags);
log_set_prefix (NULL, oldflags | JNLIB_LOG_RUN_DETACHED);
opt.running_detached = 1;
if (chdir("/"))
{
- log_error (_("chdir to / failed: %s\n"), strerror (errno));
+ log_error ("chdir to / failed: %s\n", strerror (errno));
dirmngr_exit (1);
}
}
#endif
ldap_wrapper_launch_thread ();
cert_cache_init ();
crl_cache_init ();
#ifdef USE_W32_SERVICE
if (opt.system_service)
{
service_status.dwCurrentState = SERVICE_RUNNING;
SetServiceStatus (service_handle, &service_status);
}
#endif
handle_connections (fd);
assuan_sock_close (fd);
shutdown_reaper ();
#ifdef USE_W32_SERVICE
if (opt.system_service)
{
service_status.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus (service_handle, &service_status);
}
#endif
}
else if (cmd == aListCRLs)
{
/* Just list the CRL cache and exit. */
if (argc)
wrong_args ("--list-crls");
ldap_wrapper_launch_thread ();
crl_cache_init ();
crl_cache_list (es_stdout);
}
else if (cmd == aLoadCRL)
{
struct server_control_s ctrlbuf;
memset (&ctrlbuf, 0, sizeof ctrlbuf);
dirmngr_init_default_ctrl (&ctrlbuf);
ldap_wrapper_launch_thread ();
cert_cache_init ();
crl_cache_init ();
if (!argc)
rc = crl_cache_load (&ctrlbuf, NULL);
else
{
for (; !rc && argc; argc--, argv++)
rc = crl_cache_load (&ctrlbuf, *argv);
}
}
else if (cmd == aFetchCRL)
{
ksba_reader_t reader;
struct server_control_s ctrlbuf;
if (argc != 1)
wrong_args ("--fetch-crl URL");
memset (&ctrlbuf, 0, sizeof ctrlbuf);
dirmngr_init_default_ctrl (&ctrlbuf);
ldap_wrapper_launch_thread ();
cert_cache_init ();
crl_cache_init ();
rc = crl_fetch (&ctrlbuf, argv[0], &reader);
if (rc)
log_error (_("fetching CRL from `%s' failed: %s\n"),
argv[0], gpg_strerror (rc));
else
{
rc = crl_cache_insert (&ctrlbuf, argv[0], reader);
if (rc)
log_error (_("processing CRL from `%s' failed: %s\n"),
argv[0], gpg_strerror (rc));
crl_close_reader (reader);
}
}
else if (cmd == aFlush)
{
/* Delete cache and exit. */
if (argc)
wrong_args ("--flush");
rc = crl_cache_flush();
}
else if (cmd == aGPGConfTest)
dirmngr_exit (0);
else if (cmd == aGPGConfList)
{
unsigned long flags = 0;
char *filename;
char *filename_esc;
/* List options and default values in the GPG Conf format. */
/* The following list is taken from gnupg/tools/gpgconf-comp.c. */
/* Option flags. YOU MUST NOT CHANGE THE NUMBERS OF THE EXISTING
FLAGS, AS THEY ARE PART OF THE EXTERNAL INTERFACE. */
#define GC_OPT_FLAG_NONE 0UL
/* The DEFAULT flag for an option indicates that the option has a
default value. */
#define GC_OPT_FLAG_DEFAULT (1UL << 4)
/* The DEF_DESC flag for an option indicates that the option has a
default, which is described by the value of the default field. */
#define GC_OPT_FLAG_DEF_DESC (1UL << 5)
/* The NO_ARG_DESC flag for an option indicates that the argument has
a default, which is described by the value of the ARGDEF field. */
#define GC_OPT_FLAG_NO_ARG_DESC (1UL << 6)
#define GC_OPT_FLAG_NO_CHANGE (1UL <<7)
#ifdef HAVE_W32_SYSTEM
/* On Windows systems, dirmngr always runs as system daemon, and
the per-user configuration is never used. So we short-cut
everything to use the global system configuration of dirmngr
above, and here we set the no change flag to make these
read-only. */
flags |= GC_OPT_FLAG_NO_CHANGE;
#endif
/* First the configuration file. This is not an option, but it
is vital information for GPG Conf. */
if (!opt.config_filename)
opt.config_filename = make_filename (opt.homedir,
"dirmngr.conf", NULL );
filename = percent_escape (opt.config_filename, NULL);
printf ("gpgconf-dirmngr.conf:%lu:\"%s\n",
GC_OPT_FLAG_DEFAULT, filename);
xfree (filename);
printf ("verbose:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("quiet:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("debug-level:%lu:\"none\n", flags | GC_OPT_FLAG_DEFAULT);
printf ("log-file:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("force:%lu:\n", flags | GC_OPT_FLAG_NONE);
/* --csh and --sh are mutually exclusive, something we can not
express in GPG Conf. --options is only usable from the
command line, really. --debug-all interacts with --debug,
and having both of them is thus problematic. --no-detach is
also only usable on the command line. --batch is unused. */
filename = make_filename (opt.homedir,
opt.system_daemon?
"ldapservers.conf":"dirmngr_ldapservers.conf",
NULL);
filename_esc = percent_escape (filename, NULL);
printf ("ldapserverlist-file:%lu:\"%s\n", flags | GC_OPT_FLAG_DEFAULT,
filename_esc);
xfree (filename_esc);
xfree (filename);
printf ("ldaptimeout:%lu:%u\n",
flags | GC_OPT_FLAG_DEFAULT, DEFAULT_LDAP_TIMEOUT);
printf ("max-replies:%lu:%u\n",
flags | GC_OPT_FLAG_DEFAULT, DEFAULT_MAX_REPLIES);
printf ("allow-ocsp:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("ocsp-responder:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("ocsp-signer:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("faked-system-time:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("no-greeting:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("disable-http:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("disable-ldap:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("honor-http-proxy:%lu\n", flags | GC_OPT_FLAG_NONE);
printf ("http-proxy:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("ldap-proxy:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("only-ldap-proxy:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("ignore-ldap-dp:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("ignore-http-dp:%lu:\n", flags | GC_OPT_FLAG_NONE);
printf ("ignore-ocsp-service-url:%lu:\n", flags | GC_OPT_FLAG_NONE);
/* Note: The next one is to fix a typo in gpgconf - should be
removed eventually. */
printf ("ignore-ocsp-servic-url:%lu:\n", flags | GC_OPT_FLAG_NONE);
}
cleanup ();
return !!rc;
}
#ifdef USE_W32_SERVICE
int
main (int argc, char *argv[])
{
int i;
/* Find out if we run in daemon mode or on the command line. */
for (i = 1; i < argc; i++)
if (!strcmp (argv[i], "--service"))
{
opt.system_service = 1;
opt.system_daemon = 1;
break;
}
if (!opt.system_service)
return real_main (argc, argv);
else
{
SERVICE_TABLE_ENTRY DispatchTable [] =
{
/* Ignore warning. */
{ "DirMngr", &real_main },
{ NULL, NULL }
};
if (!StartServiceCtrlDispatcher (DispatchTable))
return 1;
return 0;
}
}
#endif /*USE_W32_SERVICE*/
static void
cleanup (void)
{
crl_cache_deinit ();
cert_cache_deinit (1);
ldapserver_list_free (opt.ldapservers);
opt.ldapservers = NULL;
if (cleanup_socket)
{
cleanup_socket = 0;
if (socket_name && *socket_name)
gnupg_remove (socket_name);
}
}
void
dirmngr_exit (int rc)
{
cleanup ();
exit (rc);
}
void
dirmngr_init_default_ctrl (ctrl_t ctrl)
{
(void)ctrl;
/* Nothing for now. */
}
/* Create a list of LDAP servers from the file FILENAME. Returns the
list or NULL in case of errors.
The format fo such a file is line oriented where empty lines and
lines starting with a hash mark are ignored. All other lines are
assumed to be colon seprated with these fields:
1. field: Hostname
2. field: Portnumber
3. field: Username
4. field: Password
5. field: Base DN
*/
static ldap_server_t
parse_ldapserver_file (const char* filename)
{
char buffer[1024];
char *p;
ldap_server_t server, serverstart, *serverend;
int c;
unsigned int lineno = 0;
estream_t fp;
fp = es_fopen (filename, "r");
if (!fp)
{
log_error (_("error opening `%s': %s\n"), filename, strerror (errno));
return NULL;
}
serverstart = NULL;
serverend = &serverstart;
while (es_fgets (buffer, sizeof buffer, fp))
{
lineno++;
if (!*buffer || buffer[strlen(buffer)-1] != '\n')
{
if (*buffer && es_feof (fp))
; /* Last line not terminated - continue. */
else
{
log_error (_("%s:%u: line too long - skipped\n"),
filename, lineno);
while ( (c=es_fgetc (fp)) != EOF && c != '\n')
; /* Skip until end of line. */
continue;
}
}
/* Skip empty and comment lines.*/
for (p=buffer; spacep (p); p++)
;
if (!*p || *p == '\n' || *p == '#')
continue;
/* Parse the colon separated fields. */
server = ldapserver_parse_one (buffer, filename, lineno);
if (server)
{
*serverend = server;
serverend = &server->next;
}
}
if (es_ferror (fp))
log_error (_("error reading `%s': %s\n"), filename, strerror (errno));
es_fclose (fp);
return serverstart;
}
static fingerprint_list_t
parse_ocsp_signer (const char *string)
{
gpg_error_t err;
char *fname;
estream_t fp;
char line[256];
char *p;
fingerprint_list_t list, *list_tail, item;
unsigned int lnr = 0;
int c, i, j;
int errflag = 0;
/* Check whether this is not a filename and treat it as a direct
fingerprint specification. */
if (!strpbrk (string, "/.~\\"))
{
item = xcalloc (1, sizeof *item);
for (i=j=0; (string[i] == ':' || hexdigitp (string+i)) && j < 40; i++)
if ( string[i] != ':' )
item->hexfpr[j++] = string[i] >= 'a'? (string[i] & 0xdf): string[i];
item->hexfpr[j] = 0;
if (j != 40 || !(spacep (string+i) || !string[i]))
{
log_error (_("%s:%u: invalid fingerprint detected\n"),
"--ocsp-signer", 0);
xfree (item);
return NULL;
}
return item;
}
/* Well, it is a filename. */
if (*string == '/' || (*string == '~' && string[1] == '/'))
fname = make_filename (string, NULL);
else
{
if (string[0] == '.' && string[1] == '/' )
string += 2;
fname = make_filename (opt.homedir, string, NULL);
}
fp = es_fopen (fname, "r");
if (!fp)
{
err = gpg_error_from_syserror ();
log_error (_("can't open `%s': %s\n"), fname, gpg_strerror (err));
xfree (fname);
return NULL;
}
list = NULL;
list_tail = &list;
for (;;)
{
if (!es_fgets (line, DIM(line)-1, fp) )
{
if (!es_feof (fp))
{
err = gpg_error_from_syserror ();
log_error (_("%s:%u: read error: %s\n"),
fname, lnr, gpg_strerror (err));
errflag = 1;
}
es_fclose (fp);
if (errflag)
{
while (list)
{
fingerprint_list_t tmp = list->next;
xfree (list);
list = tmp;
}
}
xfree (fname);
return list; /* Ready. */
}
lnr++;
if (!*line || line[strlen(line)-1] != '\n')
{
/* Eat until end of line. */
while ( (c=es_getc (fp)) != EOF && c != '\n')
;
err = gpg_error (*line? GPG_ERR_LINE_TOO_LONG
/* */: GPG_ERR_INCOMPLETE_LINE);
log_error (_("%s:%u: read error: %s\n"),
fname, lnr, gpg_strerror (err));
errflag = 1;
continue;
}
/* Allow for empty lines and spaces */
for (p=line; spacep (p); p++)
;
if (!*p || *p == '\n' || *p == '#')
continue;
item = xcalloc (1, sizeof *item);
*list_tail = item;
list_tail = &item->next;
for (i=j=0; (p[i] == ':' || hexdigitp (p+i)) && j < 40; i++)
if ( p[i] != ':' )
item->hexfpr[j++] = p[i] >= 'a'? (p[i] & 0xdf): p[i];
item->hexfpr[j] = 0;
if (j != 40 || !(spacep (p+i) || p[i] == '\n'))
{
log_error (_("%s:%u: invalid fingerprint detected\n"), fname, lnr);
errflag = 1;
}
i++;
while (spacep (p+i))
i++;
if (p[i] && p[i] != '\n')
log_info (_("%s:%u: garbage at end of line ignored\n"), fname, lnr);
}
/*NOTREACHED*/
}
/*
Stuff used in daemon mode.
*/
/* Reread parts of the configuration. Note, that this function is
obviously not thread-safe and should only be called from the PTH
signal handler.
Fixme: Due to the way the argument parsing works, we create a
memory leak here for all string type arguments. There is currently
no clean way to tell whether the memory for the argument has been
allocated or points into the process' original arguments. Unless
we have a mechanism to tell this, we need to live on with this. */
static void
reread_configuration (void)
{
ARGPARSE_ARGS pargs;
FILE *fp;
unsigned int configlineno = 0;
int dummy;
if (!opt.config_filename)
return; /* No config file. */
fp = fopen (opt.config_filename, "r");
if (!fp)
{
log_error (_("option file `%s': %s\n"),
opt.config_filename, strerror(errno) );
return;
}
parse_rereadable_options (NULL, 1); /* Start from the default values. */
memset (&pargs, 0, sizeof pargs);
dummy = 0;
pargs.argc = &dummy;
pargs.flags = 1; /* do not remove the args */
while (optfile_parse (fp, opt.config_filename, &configlineno, &pargs, opts) )
{
if (pargs.r_opt < -1)
pargs.err = 1; /* Print a warning. */
else /* Try to parse this option - ignore unchangeable ones. */
parse_rereadable_options (&pargs, 1);
}
fclose (fp);
set_debug ();
}
/* A global function which allows us to trigger the reload stuff from
other places. */
void
dirmngr_sighup_action (void)
{
log_info (_("SIGHUP received - "
"re-reading configuration and flushing caches\n"));
reread_configuration ();
cert_cache_deinit (0);
crl_cache_deinit ();
cert_cache_init ();
crl_cache_init ();
}
/* The signal handler. */
static void
handle_signal (int signo)
{
switch (signo)
{
#ifndef HAVE_W32_SYSTEM
case SIGHUP:
dirmngr_sighup_action ();
break;
case SIGUSR1:
cert_cache_print_stats ();
break;
case SIGUSR2:
log_info (_("SIGUSR2 received - no action defined\n"));
break;
case SIGTERM:
if (!shutdown_pending)
log_info (_("SIGTERM received - shutting down ...\n"));
else
log_info (_("SIGTERM received - still %d active connections\n"),
active_connections);
shutdown_pending++;
if (shutdown_pending > 2)
{
log_info (_("shutdown forced\n"));
log_info ("%s %s stopped\n", strusage(11), strusage(13) );
cleanup ();
dirmngr_exit (0);
}
break;
case SIGINT:
log_info (_("SIGINT received - immediate shutdown\n"));
log_info( "%s %s stopped\n", strusage(11), strusage(13));
cleanup ();
dirmngr_exit (0);
break;
#endif
default:
log_info (_("signal %d received - no action defined\n"), signo);
}
}
/* This is the worker for the ticker. It is called every few seconds
and may only do fast operations. */
static void
handle_tick (void)
{
/* Nothing real to do right now. Actually we need the timeout only
for W32 where we don't use signals and need a way for the loop to
check for the shutdown flag. */
#ifdef HAVE_W32_SYSTEM
if (shutdown_pending)
log_info (_("SIGTERM received - shutting down ...\n"));
if (shutdown_pending > 2)
{
log_info (_("shutdown forced\n"));
log_info ("%s %s stopped\n", strusage(11), strusage(13) );
cleanup ();
dirmngr_exit (0);
}
#endif /*HAVE_W32_SYSTEM*/
}
/* Check the nonce on a new connection. This is a NOP unless we we
are using our Unix domain socket emulation under Windows. */
static int
check_nonce (assuan_fd_t fd, assuan_sock_nonce_t *nonce)
{
if (assuan_sock_check_nonce (fd, nonce))
{
log_info (_("error reading nonce on fd %d: %s\n"),
FD2INT (fd), strerror (errno));
assuan_sock_close (fd);
return -1;
}
else
return 0;
}
/* Helper to call a connection's main fucntion. */
static void *
start_connection_thread (void *arg)
{
union int_and_ptr_u argval;
assuan_fd_t fd;
argval.aptr = arg;
fd = argval.afd;
if (check_nonce (fd, &socket_nonce))
return NULL;
#ifndef HAVE_W32_SYSTEM
pth_key_setdata (my_tlskey_current_fd, argval.aptr);
#endif
active_connections++;
if (opt.verbose)
log_info (_("handler for fd %d started\n"), FD2INT (fd));
start_command_handler (fd);
if (opt.verbose)
log_info (_("handler for fd %d terminated\n"), FD2INT (fd));
active_connections--;
#ifndef HAVE_W32_SYSTEM
argval.afd = ASSUAN_INVALID_FD;
pth_key_setdata (my_tlskey_current_fd, argval.aptr);
#endif
return NULL;
}
/* Main loop in daemon mode. */
static void
handle_connections (assuan_fd_t listen_fd)
{
pth_attr_t tattr;
pth_event_t ev, time_ev;
sigset_t sigs, oldsigs;
int signo;
struct sockaddr_un paddr;
socklen_t plen = sizeof( paddr );
assuan_fd_t fd;
tattr = pth_attr_new();
pth_attr_set (tattr, PTH_ATTR_JOINABLE, 0);
pth_attr_set (tattr, PTH_ATTR_STACK_SIZE, 1024*1024);
pth_attr_set (tattr, PTH_ATTR_NAME, "dirmngr");
#ifndef HAVE_W32_SYSTEM /* FIXME */
sigemptyset (&sigs );
sigaddset (&sigs, SIGHUP);
sigaddset (&sigs, SIGUSR1);
sigaddset (&sigs, SIGUSR2);
sigaddset (&sigs, SIGINT);
sigaddset (&sigs, SIGTERM);
ev = pth_event (PTH_EVENT_SIGS, &sigs, &signo);
#else
sigs = 0;
ev = pth_event (PTH_EVENT_SIGS, &sigs, &signo);
#endif
time_ev = NULL;
for (;;)
{
if (shutdown_pending)
{
if (!active_connections)
break; /* ready */
/* Do not accept anymore connections but wait for existing
connections to terminate. */
signo = 0;
pth_wait (ev);
if (pth_event_occurred (ev) && signo)
handle_signal (signo);
continue;
}
if (!time_ev)
time_ev = pth_event (PTH_EVENT_TIME,
pth_timeout (TIMERTICK_INTERVAL, 0));
if (time_ev)
pth_event_concat (ev, time_ev, NULL);
fd = (assuan_fd_t) pth_accept_ev (FD2INT (listen_fd), (struct sockaddr *)&paddr, &plen, ev);
if (time_ev)
pth_event_isolate (time_ev);
if (fd == ASSUAN_INVALID_FD)
{
if (pth_event_occurred (ev)
|| (time_ev && pth_event_occurred (time_ev)) )
{
if (pth_event_occurred (ev))
handle_signal (signo);
if (time_ev && pth_event_occurred (time_ev))
{
pth_event_free (time_ev, PTH_FREE_ALL);
time_ev = NULL;
handle_tick ();
}
continue;
}
log_error (_("accept failed: %s - waiting 1s\n"), strerror (errno));
pth_sleep (1);
continue;
}
if (pth_event_occurred (ev))
{
handle_signal (signo);
}
if (time_ev && pth_event_occurred (time_ev))
{
pth_event_free (time_ev, PTH_FREE_ALL);
time_ev = NULL;
handle_tick ();
}
/* We now might create a new thread and because we don't want
any signals (as we are handling them here) to be delivered to
a new thread we need to block those signals. */
pth_sigmask (SIG_BLOCK, &sigs, &oldsigs);
/* Create thread to handle this connection. */
{
union int_and_ptr_u argval;
argval.afd = fd;
if (!pth_spawn (tattr, start_connection_thread, argval.aptr))
{
log_error (_("error spawning connection handler: %s\n"),
strerror (errno) );
assuan_sock_close (fd);
}
}
/* Restore the signal mask. */
pth_sigmask (SIG_SETMASK, &oldsigs, NULL);
}
pth_event_free (ev, PTH_FREE_ALL);
if (time_ev)
pth_event_free (time_ev, PTH_FREE_ALL);
pth_attr_destroy (tattr);
cleanup ();
log_info ("%s %s stopped\n", strusage(11), strusage(13));
}
diff --git a/dirmngr/ldap-wrapper.c b/dirmngr/ldap-wrapper.c
index 9db8a9fbe..25ec15513 100644
--- a/dirmngr/ldap-wrapper.c
+++ b/dirmngr/ldap-wrapper.c
@@ -1,750 +1,750 @@
/* ldap-wrapper.c - LDAP access via a wrapper process
* Copyright (C) 2004, 2005, 2007, 2008 g10 Code GmbH
* Copyright (C) 2010 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 3 of the License, or
* (at your option) any later version.
*
* GnuPG is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
/*
We can't use LDAP directly for these reasons:
1. On some systems the LDAP library uses (indirectly) pthreads and
that is not compatible with PTh.
2. It is huge library in particular if TLS comes into play. So
problems with unfreed memory might turn up and we don't want
this in a long running daemon.
3. There is no easy way for timeouts. In particular the timeout
value does not work for DNS lookups (well, this is usual) and it
seems not to work while loading a large attribute like a
CRL. Having a separate process allows us to either tell the
process to commit suicide or have our own housekepping function
kill it after some time. The latter also allows proper
cancellation of a query at any point of time.
4. Given that we are going out to the network and usually get back
a long response, the fork/exec overhead is acceptable.
Note that under WindowsCE the number of processes is strongly
limited (32 processes including the kernel processes) and thus we
don't use the process approach but implement a different wrapper in
ldap-wrapper-ce.c.
*/
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
#include <pth.h>
#include "dirmngr.h"
#include "exechelp.h"
#include "misc.h"
#include "ldap-wrapper.h"
#ifdef HAVE_W32_SYSTEM
#define setenv(a,b,c) SetEnvironmentVariable ((a),(b))
#else
#define pth_close(fd) close(fd)
#endif
#ifndef USE_LDAPWRAPPER
# error This module is not expected to be build.
#endif
/* In case sysconf does not return a value we need to have a limit. */
#ifdef _POSIX_OPEN_MAX
#define MAX_OPEN_FDS _POSIX_OPEN_MAX
#else
#define MAX_OPEN_FDS 20
#endif
#define INACTIVITY_TIMEOUT (opt.ldaptimeout + 60*5) /* seconds */
/* To keep track of the LDAP wrapper state we use this structure. */
struct wrapper_context_s
{
struct wrapper_context_s *next;
pid_t pid; /* The pid of the wrapper process. */
int printable_pid; /* Helper to print diagnostics after the process has
been cleaned up. */
int fd; /* Connected with stdout of the ldap wrapper. */
gpg_error_t fd_error; /* Set to the gpg_error of the last read error
if any. */
int log_fd; /* Connected with stderr of the ldap wrapper. */
pth_event_t log_ev;
ctrl_t ctrl; /* Connection data. */
int ready; /* Internally used to mark to be removed contexts. */
ksba_reader_t reader; /* The ksba reader object or NULL. */
char *line; /* Used to print the log lines (malloced). */
size_t linesize;/* Allocated size of LINE. */
size_t linelen; /* Use size of LINE. */
time_t stamp; /* The last time we noticed ativity. */
};
/* We keep a global list of spawed wrapper process. A separate thread
makes use of this list to log error messages and to watch out for
finished processes. */
static struct wrapper_context_s *wrapper_list;
/* We need to know whether we are shutting down the process. */
static int shutting_down;
/* Close the pth file descriptor FD and set it to -1. */
#define SAFE_PTH_CLOSE(fd) \
do { int _fd = fd; if (_fd != -1) { pth_close (_fd); fd = -1;} } while (0)
/* Read a fixed amount of data from READER into BUFFER. */
static gpg_error_t
read_buffer (ksba_reader_t reader, unsigned char *buffer, size_t count)
{
gpg_error_t err;
size_t nread;
while (count)
{
err = ksba_reader_read (reader, buffer, count, &nread);
if (err)
return err;
buffer += nread;
count -= nread;
}
return 0;
}
/* Release the wrapper context and kill a running wrapper process. */
static void
destroy_wrapper (struct wrapper_context_s *ctx)
{
if (ctx->pid != (pid_t)(-1))
{
gnupg_kill_process (ctx->pid);
gnupg_release_process (ctx->pid);
}
ksba_reader_release (ctx->reader);
SAFE_PTH_CLOSE (ctx->fd);
SAFE_PTH_CLOSE (ctx->log_fd);
if (ctx->log_ev)
pth_event_free (ctx->log_ev, PTH_FREE_THIS);
xfree (ctx->line);
xfree (ctx);
}
/* Print the content of LINE to thye log stream but make sure to only
print complete lines. Using NULL for LINE will flush any pending
output. LINE may be modified by this fucntion. */
static void
print_log_line (struct wrapper_context_s *ctx, char *line)
{
char *s;
size_t n;
if (!line)
{
if (ctx->line && ctx->linelen)
{
log_info ("%s\n", ctx->line);
ctx->linelen = 0;
}
return;
}
while ((s = strchr (line, '\n')))
{
*s = 0;
if (ctx->line && ctx->linelen)
{
log_info ("%s", ctx->line);
ctx->linelen = 0;
log_printf ("%s\n", line);
}
else
log_info ("%s\n", line);
line = s + 1;
}
n = strlen (line);
if (n)
{
if (ctx->linelen + n + 1 >= ctx->linesize)
{
char *tmp;
size_t newsize;
newsize = ctx->linesize + ((n + 255) & ~255) + 1;
tmp = (ctx->line ? xtryrealloc (ctx->line, newsize)
: xtrymalloc (newsize));
if (!tmp)
{
log_error (_("error printing log line: %s\n"), strerror (errno));
return;
}
ctx->line = tmp;
ctx->linesize = newsize;
}
memcpy (ctx->line + ctx->linelen, line, n);
ctx->linelen += n;
ctx->line[ctx->linelen] = 0;
}
}
/* Read data from the log stream. Returns true if the log stream
indicated EOF or error. */
static int
read_log_data (struct wrapper_context_s *ctx)
{
int n;
char line[256];
/* We must use the pth_read function for pipes, always. */
do
n = pth_read (ctx->log_fd, line, sizeof line - 1);
while (n < 0 && errno == EINTR);
if (n <= 0) /* EOF or error. */
{
if (n < 0)
log_error (_("error reading log from ldap wrapper %d: %s\n"),
ctx->pid, strerror (errno));
print_log_line (ctx, NULL);
SAFE_PTH_CLOSE (ctx->log_fd);
pth_event_free (ctx->log_ev, PTH_FREE_THIS);
ctx->log_ev = NULL;
return 1;
}
line[n] = 0;
print_log_line (ctx, line);
if (ctx->stamp != (time_t)(-1))
ctx->stamp = time (NULL);
return 0;
}
/* This function is run by a separate thread to maintain the list of
wrappers and to log error messages from these wrappers. */
void *
ldap_wrapper_thread (void *dummy)
{
int nfds;
struct wrapper_context_s *ctx;
struct wrapper_context_s *ctx_prev;
time_t current_time;
(void)dummy;
for (;;)
{
pth_event_t timeout_ev;
int any_action = 0;
timeout_ev = pth_event (PTH_EVENT_TIME, pth_timeout (1, 0));
if (! timeout_ev)
{
log_error (_("pth_event failed: %s\n"), strerror (errno));
pth_sleep (10);
continue;
}
for (ctx = wrapper_list; ctx; ctx = ctx->next)
{
if (ctx->log_fd != -1)
{
pth_event_isolate (ctx->log_ev);
pth_event_concat (timeout_ev, ctx->log_ev, NULL);
}
}
/* Note that the read FDs are actually handles. Thus, we can
not use pth_select, but have to use pth_wait. */
nfds = pth_wait (timeout_ev);
if (nfds < 0)
{
pth_event_free (timeout_ev, PTH_FREE_THIS);
log_error (_("pth_wait failed: %s\n"), strerror (errno));
pth_sleep (10);
continue;
}
if (pth_event_status (timeout_ev) == PTH_STATUS_OCCURRED)
nfds--;
pth_event_free (timeout_ev, PTH_FREE_THIS);
current_time = time (NULL);
if (current_time > INACTIVITY_TIMEOUT)
current_time -= INACTIVITY_TIMEOUT;
/* Note that there is no need to lock the list because we always
add entries at the head (with a pending event status) and
thus traversing the list will even work if we have a context
switch in waitpid (which should anyway only happen with Pth's
hard system call mapping). */
for (ctx = wrapper_list; ctx; ctx = ctx->next)
{
/* Check whether there is any logging to be done. */
if (nfds && ctx->log_fd != -1
&& pth_event_status (ctx->log_ev) == PTH_STATUS_OCCURRED)
{
if (read_log_data (ctx))
any_action = 1;
}
/* Check whether the process is still running. */
if (ctx->pid != (pid_t)(-1))
{
gpg_error_t err;
int status;
err = gnupg_wait_process ("[dirmngr_ldap]", ctx->pid, 0,
&status);
if (!err)
{
log_info (_("ldap wrapper %d ready"), (int)ctx->pid);
ctx->ready = 1;
gnupg_release_process (ctx->pid);
ctx->pid = (pid_t)(-1);
any_action = 1;
}
else if (gpg_err_code (err) == GPG_ERR_GENERAL)
{
if (status == 10)
log_info (_("ldap wrapper %d ready: timeout\n"),
(int)ctx->pid);
else
log_info (_("ldap wrapper %d ready: exitcode=%d\n"),
(int)ctx->pid, status);
ctx->ready = 1;
gnupg_release_process (ctx->pid);
ctx->pid = (pid_t)(-1);
any_action = 1;
}
else if (gpg_err_code (err) != GPG_ERR_TIMEOUT)
{
log_error (_("waiting for ldap wrapper %d failed: %s\n"),
(int)ctx->pid, gpg_strerror (err));
any_action = 1;
}
}
/* Check whether we should terminate the process. */
if (ctx->pid != (pid_t)(-1)
&& ctx->stamp != (time_t)(-1) && ctx->stamp < current_time)
{
gnupg_kill_process (ctx->pid);
ctx->stamp = (time_t)(-1);
log_info (_("ldap wrapper %d stalled - killing\n"),
(int)ctx->pid);
/* We need to close the log fd because the cleanup loop
waits for it. */
SAFE_PTH_CLOSE (ctx->log_fd);
any_action = 1;
}
}
/* If something has been printed to the log file or we got an
EOF from a wrapper, we now print the list of active
wrappers. */
if (any_action && DBG_LOOKUP)
{
log_info ("ldap worker stati:\n");
for (ctx = wrapper_list; ctx; ctx = ctx->next)
log_info (" c=%p pid=%d/%d rdr=%p ctrl=%p/%d la=%lu rdy=%d\n",
ctx,
(int)ctx->pid, (int)ctx->printable_pid,
ctx->reader,
ctx->ctrl, ctx->ctrl? ctx->ctrl->refcount:0,
(unsigned long)ctx->stamp, ctx->ready);
}
/* Use a separate loop to check whether ready marked wrappers
may be removed. We may only do so if the ksba reader object
is not anymore in use or we are in shutdown state. */
again:
for (ctx_prev=NULL, ctx=wrapper_list; ctx; ctx_prev=ctx, ctx=ctx->next)
if (ctx->ready
&& ((ctx->log_fd == -1 && !ctx->reader) || shutting_down))
{
if (ctx_prev)
ctx_prev->next = ctx->next;
else
wrapper_list = ctx->next;
destroy_wrapper (ctx);
/* We need to restart because destroy_wrapper might have
done a context switch. */
goto again;
}
}
/*NOTREACHED*/
return NULL; /* Make the compiler happy. */
}
/* Start the reaper thread for the ldap wrapper. */
void
ldap_wrapper_launch_thread (void)
{
static int done;
pth_attr_t tattr;
if (done)
return;
done = 1;
tattr = pth_attr_new();
pth_attr_set (tattr, PTH_ATTR_JOINABLE, 0);
pth_attr_set (tattr, PTH_ATTR_STACK_SIZE, 256*1024);
pth_attr_set (tattr, PTH_ATTR_NAME, "ldap-reaper");
if (!pth_spawn (tattr, ldap_wrapper_thread, NULL))
{
log_error (_("error spawning ldap wrapper reaper thread: %s\n"),
strerror (errno) );
dirmngr_exit (1);
}
pth_attr_destroy (tattr);
}
/* Wait until all ldap wrappers have terminated. We assume that the
kill has already been sent to all of them. */
void
ldap_wrapper_wait_connections ()
{
shutting_down = 1;
while (wrapper_list)
pth_yield (NULL);
}
/* This function is to be used to release a context associated with the
given reader object. */
void
ldap_wrapper_release_context (ksba_reader_t reader)
{
struct wrapper_context_s *ctx;
if (!reader )
return;
for (ctx=wrapper_list; ctx; ctx=ctx->next)
if (ctx->reader == reader)
{
if (DBG_LOOKUP)
log_info ("releasing ldap worker c=%p pid=%d/%d rdr=%p ctrl=%p/%d\n",
ctx,
(int)ctx->pid, (int)ctx->printable_pid,
ctx->reader,
ctx->ctrl, ctx->ctrl? ctx->ctrl->refcount:0);
ctx->reader = NULL;
SAFE_PTH_CLOSE (ctx->fd);
if (ctx->ctrl)
{
ctx->ctrl->refcount--;
ctx->ctrl = NULL;
}
if (ctx->fd_error)
log_info (_("reading from ldap wrapper %d failed: %s\n"),
ctx->printable_pid, gpg_strerror (ctx->fd_error));
break;
}
}
/* Cleanup all resources held by the connection associated with
CTRL. This is used after a cancel to kill running wrappers. */
void
ldap_wrapper_connection_cleanup (ctrl_t ctrl)
{
struct wrapper_context_s *ctx;
for (ctx=wrapper_list; ctx; ctx=ctx->next)
if (ctx->ctrl && ctx->ctrl == ctrl)
{
ctx->ctrl->refcount--;
ctx->ctrl = NULL;
if (ctx->pid != (pid_t)(-1))
gnupg_kill_process (ctx->pid);
if (ctx->fd_error)
log_info (_("reading from ldap wrapper %d failed: %s\n"),
ctx->printable_pid, gpg_strerror (ctx->fd_error));
}
}
/* This is the callback used by the ldap wrapper to feed the ksba
reader with the wrappers stdout. See the description of
ksba_reader_set_cb for details. */
static int
reader_callback (void *cb_value, char *buffer, size_t count, size_t *nread)
{
struct wrapper_context_s *ctx = cb_value;
size_t nleft = count;
/* FIXME: We might want to add some internal buffering because the
ksba code does not do any buffering for itself (because a ksba
reader may be detached from another stream to read other data and
the it would be cumbersome to get back already buffered
stuff). */
if (!buffer && !count && !nread)
return -1; /* Rewind is not supported. */
/* If we ever encountered a read error don't allow to continue and
possible overwrite the last error cause. Bail out also if the
file descriptor has been closed. */
if (ctx->fd_error || ctx->fd == -1)
{
*nread = 0;
return -1;
}
while (nleft > 0)
{
int n;
pth_event_t evt;
gpg_error_t err;
evt = pth_event (PTH_EVENT_TIME, pth_timeout (1, 0));
n = pth_read_ev (ctx->fd, buffer, nleft, evt);
if (n < 0 && evt && pth_event_occurred (evt))
{
n = 0;
err = dirmngr_tick (ctx->ctrl);
if (err)
{
ctx->fd_error = err;
SAFE_PTH_CLOSE (ctx->fd);
if (evt)
pth_event_free (evt, PTH_FREE_THIS);
return -1;
}
}
else if (n < 0)
{
ctx->fd_error = gpg_error_from_errno (errno);
SAFE_PTH_CLOSE (ctx->fd);
if (evt)
pth_event_free (evt, PTH_FREE_THIS);
return -1;
}
else if (!n)
{
if (nleft == count)
{
if (evt)
pth_event_free (evt, PTH_FREE_THIS);
return -1; /* EOF. */
}
break;
}
nleft -= n;
buffer += n;
if (evt)
pth_event_free (evt, PTH_FREE_THIS);
if (n > 0 && ctx->stamp != (time_t)(-1))
ctx->stamp = time (NULL);
}
*nread = count - nleft;
return 0;
}
/* Fork and exec the LDAP wrapper and returns a new libksba reader
object at READER. ARGV is a NULL terminated list of arguments for
the wrapper. The function returns 0 on success or an error code.
Special hack to avoid passing a password through the command line
which is globally visible: If the first element of ARGV is "--pass"
it will be removed and instead the environment variable
DIRMNGR_LDAP_PASS will be set to the next value of ARGV. On modern
OSes the environment is not visible to other users. For those old
systems where it can't be avoided, we don't want to go into the
hassle of passing the password via stdin; it's just too complicated
and an LDAP password used for public directory lookups should not
be that confidential. */
gpg_error_t
ldap_wrapper (ctrl_t ctrl, ksba_reader_t *reader, const char *argv[])
{
gpg_error_t err;
pid_t pid;
struct wrapper_context_s *ctx;
int i;
int j;
const char **arg_list;
const char *pgmname;
int outpipe[2], errpipe[2];
/* It would be too simple to connect stderr just to our logging
stream. The problem is that if we are running multi-threaded
everything gets intermixed. Clearly we don't want this. So the
only viable solutions are either to have another thread
responsible for logging the messages or to add an option to the
wrapper module to do the logging on its own. Given that we anyway
need a way to rip the child process and this is best done using a
general ripping thread, that thread can do the logging too. */
*reader = NULL;
/* Files: We need to prepare stdin and stdout. We get stderr from
the function. */
if (!opt.ldap_wrapper_program || !*opt.ldap_wrapper_program)
pgmname = gnupg_module_name (GNUPG_MODULE_NAME_DIRMNGR_LDAP);
else
pgmname = opt.ldap_wrapper_program;
/* Create command line argument array. */
for (i = 0; argv[i]; i++)
;
arg_list = xtrycalloc (i + 2, sizeof *arg_list);
if (!arg_list)
{
err = gpg_error_from_syserror ();
log_error (_("error allocating memory: %s\n"), strerror (errno));
return err;
}
for (i = j = 0; argv[i]; i++, j++)
if (!i && argv[i + 1] && !strcmp (*argv, "--pass"))
{
arg_list[j] = "--env-pass";
setenv ("DIRMNGR_LDAP_PASS", argv[1], 1);
i++;
}
else
arg_list[j] = (char*) argv[i];
ctx = xtrycalloc (1, sizeof *ctx);
if (!ctx)
{
err = gpg_error_from_syserror ();
log_error (_("error allocating memory: %s\n"), strerror (errno));
xfree (arg_list);
return err;
}
err = gnupg_create_inbound_pipe (outpipe);
if (!err)
{
err = gnupg_create_inbound_pipe (errpipe);
if (err)
{
close (outpipe[0]);
close (outpipe[1]);
}
}
if (err)
{
- log_error (_("error creating pipe: %s\n"), gpg_strerror (err));
+ log_error (_("error creating a pipe: %s\n"), gpg_strerror (err));
xfree (arg_list);
xfree (ctx);
return err;
}
err = gnupg_spawn_process_fd (pgmname, arg_list,
-1, outpipe[1], errpipe[1], &pid);
xfree (arg_list);
close (outpipe[1]);
close (errpipe[1]);
if (err)
{
close (outpipe[0]);
close (errpipe[0]);
xfree (ctx);
return err;
}
ctx->pid = pid;
ctx->printable_pid = (int) pid;
ctx->fd = outpipe[0];
ctx->log_fd = errpipe[0];
ctx->log_ev = pth_event (PTH_EVENT_FD | PTH_UNTIL_FD_READABLE, ctx->log_fd);
if (! ctx->log_ev)
{
xfree (ctx);
return gpg_error_from_syserror ();
}
ctx->ctrl = ctrl;
ctrl->refcount++;
ctx->stamp = time (NULL);
err = ksba_reader_new (reader);
if (!err)
err = ksba_reader_set_cb (*reader, reader_callback, ctx);
if (err)
{
log_error (_("error initializing reader object: %s\n"),
gpg_strerror (err));
destroy_wrapper (ctx);
ksba_reader_release (*reader);
*reader = NULL;
return err;
}
/* Hook the context into our list of running wrappers. */
ctx->reader = *reader;
ctx->next = wrapper_list;
wrapper_list = ctx;
if (opt.verbose)
log_info ("ldap wrapper %d started (reader %p)\n",
(int)ctx->pid, ctx->reader);
/* Need to wait for the first byte so we are able to detect an empty
output and not let the consumer see an EOF without further error
indications. The CRL loading logic assumes that after return
from this function, a failed search (e.g. host not found ) is
indicated right away. */
{
unsigned char c;
err = read_buffer (*reader, &c, 1);
if (err)
{
ldap_wrapper_release_context (*reader);
ksba_reader_release (*reader);
*reader = NULL;
if (gpg_err_code (err) == GPG_ERR_EOF)
return gpg_error (GPG_ERR_NO_DATA);
else
return err;
}
ksba_reader_unread (*reader, &c, 1);
}
return 0;
}
diff --git a/po/ChangeLog b/po/ChangeLog
index 9072f598d..c0f6240f5 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,309 +1,314 @@
+2010-10-21 Werner Koch <wk@g10code.com>
+
+ * POTFILES.in: Add files in dirmngr/.
+ * de.po: Translate the dirmngr strings.
+
2010-10-18 Werner Koch <wk@g10code.com>
* de.po: Update.
* POTFILES.in: Add cvt-openpgp.c
* LINGUAS: Re-enable de.po.
2010-04-13 Marcus Brinkmann <marcus@g10code.de>
* POTFILES.in: Replace common/exechelp.c by
common/exechelp-posix.c, common/exechelp-w32.c and
common/exechelp-w32ce.c.
2009-10-16 Marcus Brinkmann <marcus@g10code.com>
* POTFILES.in: g10/encode.c was renamed to g10/encrypt.c, and
encr-data.c was renamed to decrypt-data.c
2009-09-03 Werner Koch <wk@g10code.com>
* de.po: Translate new strings.
2009-09-03 Jedi Lin <Jedi@Jedi.org> (wk)
* zh_TW.po: Update.
2009-07-14 Werner Koch <wk@g10code.com>
* de.po: s/nicht-exportfähig/unwiderrufbar/. Reported by Simon
Richter.
2009-07-09 Werner Koch <wk@g10code.com>
* zh_CN.po <g10/keyedit.c:1905>: Marked fuzzy. See bug#1078.
2009-06-30 Werner Koch <wk@g10code.com>
* es.po: Mark a bad translation fuzzy.
2009-06-30 Daiki Ueno <ueno@unixuser.org>
* ja.po: Typo fix. Fixes bug#1078.
2009-06-02 Werner Koch <wk@g10code.com>
* de.po: Applied a patch from Daniel Leidert to fix a bunch of
small typos. See also Debian bug report 314068. Fixes bug#1069.
2009-01-19 Werner Koch <wk@g10code.com>
* de.po: Translated a few new audit-log related strings.
2009-01-12 Maxim Britov <maxim.britov@gmail.com> (wk)
* ru.po: Update.
2009-01-07 Jaime Suárez <jsuarez@mundocripto.com> (wk)
* es.po: Update.
2009-01-05 Nilgün Belma Bugüner <nilgun@belgeler.gen.tr> (wk)
* tr.po: Update.
2009-01-05 Jedi <jedi@jedi.org> (wk)
* zh_TW.po: Update.
2008-12-08 Werner Koch <wk@g10code.com>
* de.po: Typo fixes. Reported by Daniel Leidert.
2008-11-13 Werner Koch <wk@g10code.com>
* de.po: Udpate.
2008-09-30 David Ammouial <da-debian-br@weeno.net> (wk)
* fr.po: Fix bug #922.
2008-07-21 Werner Koch <wk@g10code.com>
* sv.po: Adjust special size entry.
2008-07-21 Daniel Nylander <info@danielnylander.se> (wk)
* sv.po: Update.
2008-05-28 Jaime Suárez <jaime@mundocripto.com> (wk)
* es.po: Update. All strings for 2.0.9 are no translated.
2008-05-26 Werner Koch <wk@g10code.com>
* de.po: Minor fixes submitted by Jan Seidel. Fixes bug#916.
* it.po: Typo fix. Fixes bug#920.
2008-05-09 Werner Koch <wk@g10code.com>
* de.po: Update.
2008-05-01 Werner Koch <wk@g10code.com>
* de.po: Typo fix.
2008-03-26 Jedi Lin <Jedi@Jedi.org> (wk)
* zh_TW.po: Update.
2008-03-26 Werner Koch <wk@g10code.com>
* de.po: Translate two new strings.
2008-02-15 Werner Koch <wk@g10code.com>
* de.po: Translate 3 new strings.
2008-02-15 Jedi Lin <Jedi@Jedi.org> (wk)
* zh_TW.po: Update.
2008-02-15 gettextize <bug-gnu-gettext@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.17.
2008-01-22 Werner Koch <wk@g10code.com>
* de.po: Small typo fixes. Reported by Ludwig Reiter.
2007-12-14 Werner Koch <wk@g10code.com>
* de.po: Update.
2007-12-12 Werner Koch <wk@g10code.com>
* POTFILES.in: Add a couple of missing files.
2007-12-03 Jakub Bogusz <qboosh@pld-linux.org> (wk)
* pl.po: Updated. Received through entry bug#856.
2007-11-15 Werner Koch <wk@g10code.com>
* de.po: Type fix.
2007-11-12 Daniel Nylander <po@danielnylander.se> (wk)
* sv.po: Updated.
2007-09-14 Werner Koch <wk@g10code.com>
* de.po: Changed translation of --honor-http-proxy.
2007-08-29 Werner Koch <wk@g10code.com>
* de.po: Translated the argparse.c strings.
2007-08-28 Werner Koch <wk@g10code.com>
* de.po: Updated.
2007-08-16 Werner Koch <wk@g10code.com>
* pt_BR.po, es.po: Remove the "GNU" from the project ID. That
stupid msginit uses a script project-id to retrieve a new project
id. Instead of using what it founds out, it tries to put "GNU"
before the id if _any_ file in the current directory has a string
"GNU <package_name>". As en@bold.po is build automagically this
package name mangling breaks make distcheck as it tries to rebuild
the po file with the "correct" name. The upshot is never to use
GNU in you po directory.
* de.po: Fix a few fuzzy entries and translate new strings.
2007-07-04 Werner Koch <wk@g10code.com>
* de.po: Update a few strings.
2007-05-09 Werner Koch <wk@g10code.com>
* de.po: Update a few strings.
2007-05-07 gettextize <bug-gnu-gettext@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.16.1.
2007-02-26 Werner Koch <wk@g10code.com>
* sv.po: Update from Daniel.
2007-01-31 Werner Koch <wk@g10code.com>
* de.po: Fixed a few fuzzy entries.
2007-01-25 Werner Koch <wk@g10code.com>
* de.po: Add Plural-Forms.
2006-12-22 Werner Koch <wk@g10code.com>
* sv.po: Installed revised and updated translation by Daniel
Nylander.
2006-11-13 Werner Koch <wk@g10code.com>
* ru.po: Update from Maxim.
2006-11-10 Werner Koch <wk@g10code.com>
* de.po: Received complete update from Walter.
2006-11-06 Werner Koch <wk@g10code.com>
* tr.po: Updated.
2006-09-25 Werner Koch <wk@g10code.com>
* LINGUAS: Copied from gnupg 1.4.5.
* de.po: Merged with the version from 1.4.5.
* be.po, ca.po, cs.po, da.po, de.po, eo.po, el.po, es.po, et.po
* fi.po, fr.po, gl.po, hu.po, id.po, it.po, ja.po, nb.po, pl.po
* pt_BR.po, pt.po, ro.po, ru.po, sk.po, sv.po, tr.po, zh_TW.po
* zh_CN.po: Copied from gnupg 1.4.5.
2005-11-23 Werner Koch <wk@g10code.com>
* de.po: Updated.
2005-08-01 Werner Koch <wk@g10code.com>
* de.po: Converted to utf-8; fixed a few umlaut problems.
2005-04-21 Werner Koch <wk@g10code.com>
* de.po: Fixed all fuzzies and untranslated strings.
2005-01-04 Werner Koch <wk@g10code.com>
* de.po: Updated.
2004-10-22 Werner Koch <wk@g10code.com>
* POTFILES.in: Removed sc-investigate.c
2004-10-04 Werner Koch <wk@g10code.com>
* de.po: Typo fixes.
2004-09-30 gettextize <bug-gnu-gettext@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.14.1.
* Rules-quot: Upgrade to gettext-0.14.1.
2004-09-30 Werner Koch <wk@g10code.com>
* de.po: Updated.
* POTFILES.in: Add more files.
2004-07-22 Werner Koch <wk@g10code.de>
* de.po: Updated.
2004-04-06 Werner Koch <wk@gnupg.org>
* Makevars (DOMAIN): Init from PACKAGE_GT
2003-12-09 Werner Koch <wk@gnupg.org>
* Makevars (MSGID_BUGS_ADDRESS): New.
2003-04-29 Werner Koch <wk@gnupg.org>
* LINUGAS: NEW.
2003-04-29 gettextize <bug-gnu-gettext@gnu.org>
* Rules-quot: New file, from gettext-0.11.5.
* boldquot.sed: New file, from gettext-0.11.5.
* en@boldquot.header: New file, from gettext-0.11.5.
* en@quot.header: New file, from gettext-0.11.5.
* insert-header.sin: New file, from gettext-0.11.5.
* quot.sed: New file, from gettext-0.11.5.
* remove-potcdate.sin: New file, from gettext-0.11.5.
2002-08-21 Werner Koch <wk@gnupg.org>
* de.po: Updated the translation.
2002-08-10 Werner Koch <wk@gnupg.org>
* Makefile.in.in: Installed from gettext-0.10.40.
* POTFILES.in: New.
* de.po: New.
Copyright 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
This file is free software; as a special exception the author gives
unlimited permission to copy and/or distribute it, with or without
modifications, as long as this notice is preserved.
This file is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 8d5ce1b35..554b67cf1 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,113 +1,128 @@
# List of files with translatable strings
agent/call-pinentry.c
agent/command-ssh.c
agent/divert-scd.c
agent/genkey.c
agent/gpg-agent.c
agent/preset-passphrase.c
agent/protect-tool.c
agent/trustlist.c
agent/findkey.c
agent/pksign.c
agent/cvt-openpgp.c
common/exechelp-posix.c
common/exechelp-w32.c
common/exechelp-w32ce.c
common/http.c
common/simple-pwquery.c
common/sysutils.c
common/yesno.c
common/miscellaneous.c
common/asshelp.c
common/audit.c
common/helpfile.c
common/gettime.c
common/argparse.c
common/logging.c
common/utf8conv.c
common/dotlock.c
g10/armor.c
g10/build-packet.c
g10/call-agent.c
g10/card-util.c
g10/dearmor.c
g10/decrypt.c
g10/delkey.c
g10/encrypt.c
g10/decrypt-data.c
g10/exec.c
g10/export.c
g10/getkey.c
g10/gpg.c
g10/gpgv.c
g10/helptext.c
g10/import.c
g10/keydb.c
g10/keyedit.c
g10/keygen.c
g10/keyid.c
g10/keylist.c
g10/keyring.c
g10/keyserver.c
g10/mainproc.c
g10/misc.c
g10/openfile.c
g10/parse-packet.c
g10/passphrase.c
g10/photoid.c
g10/pkclist.c
g10/plaintext.c
g10/pubkey-enc.c
g10/revoke.c
g10/seckey-cert.c
g10/seskey.c
g10/sig-check.c
g10/sign.c
g10/skclist.c
g10/tdbdump.c
g10/tdbio.c
g10/textfilter.c
g10/trustdb.c
g10/verify.c
kbx/kbxutil.c
scd/app-nks.c
scd/app-openpgp.c
scd/app-dinsig.c
scd/scdaemon.c
sm/base64.c
sm/call-agent.c
sm/call-dirmngr.c
sm/certchain.c
sm/certcheck.c
sm/certdump.c
sm/certlist.c
sm/certreqgen.c
sm/certreqgen-ui.c
sm/decrypt.c
sm/delete.c
sm/encrypt.c
sm/export.c
sm/gpgsm.c
sm/import.c
sm/keydb.c
sm/keylist.c
sm/misc.c
sm/qualified.c
sm/sign.c
sm/verify.c
+dirmngr/certcache.c
+dirmngr/crlcache.c
+dirmngr/crlfetch.c
+dirmngr/dirmngr-client.c
+dirmngr/dirmngr.c
+dirmngr/dirmngr_ldap.c
+dirmngr/ldap-wrapper-ce.c
+dirmngr/ldap-wrapper.c
+dirmngr/ldap.c
+dirmngr/ldapserver.c
+dirmngr/misc.c
+dirmngr/ocsp.c
+dirmngr/server.c
+dirmngr/validate.c
+
tools/gpg-connect-agent.c
tools/gpgconf-comp.c
tools/gpgconf.c
tools/no-libgcrypt.c
tools/symcryptrun.c
tools/gpg-check-pattern.c
diff --git a/po/de.po b/po/de.po
index 35c4ae6cf..94d09e2ae 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,9045 +1,10614 @@
# GnuPG German translation
# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# Walter Koch <koch@u32.de>, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006
# Merged with the gnupg 1.9.23 translation by Werner Koch on 2006-09-25.
#
msgid ""
msgstr ""
"Project-Id-Version: gnupg-2.1.0\n"
"Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"POT-Creation-Date: 2010-10-18 16:25+0200\n"
-"PO-Revision-Date: 2010-10-18 16:27+0200\n"
+"POT-Creation-Date: 2010-10-21 10:11+0200\n"
+"PO-Revision-Date: 2010-10-21 10:10+0200\n"
"Last-Translator: Werner Koch <wk@gnupg.org>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: agent/call-pinentry.c:244
#, c-format
msgid "failed to acquire the pinentry lock: %s\n"
msgstr "Die Sperre für das Pinentry kann nicht gesetzt werden: %s\n"
#. TRANSLATORS: These are labels for buttons etc used in
#. Pinentries. An underscore indicates that the next letter
#. should be used as an accelerator. Double the underscore for
#. a literal one. The actual to be translated text starts after
#. the second vertical bar.
#: agent/call-pinentry.c:407
msgid "|pinentry-label|_OK"
msgstr "_OK"
#: agent/call-pinentry.c:408
msgid "|pinentry-label|_Cancel"
msgstr "_Abbrechen"
#: agent/call-pinentry.c:409
msgid "|pinentry-label|PIN:"
msgstr "PIN:"
#. TRANSLATORS: This string is displayed by Pinentry as the label
#. for the quality bar.
#: agent/call-pinentry.c:657
msgid "Quality:"
msgstr "Qualität:"
#. TRANSLATORS: This string is a tooltip, shown by pinentry when
#. hovering over the quality bar. Please use an appropriate
#. string to describe what this is about. The length of the
#. tooltip is limited to about 900 characters. If you do not
#. translate this entry, a default english text (see source)
#. will be used.
#: agent/call-pinentry.c:679
msgid "pinentry.qualitybar.tooltip"
msgstr ""
"Die Qualität der Passphrase, die Sie oben eingegeben haben.\n"
"Bitte fragen sie Ihren Systembeauftragten nach den\n"
"Kriterien für die Messung der Qualität."
#: agent/call-pinentry.c:748
msgid ""
"Please enter your PIN, so that the secret key can be unlocked for this "
"session"
msgstr ""
"Bitte geben Sie Ihre PIN ein, so daß der geheime Schlüssel benutzt werden "
"kann"
#: agent/call-pinentry.c:751
msgid ""
"Please enter your passphrase, so that the secret key can be unlocked for "
"this session"
msgstr ""
"Bitte geben Sie Ihre Passphrase ein, so daß der geheime Schlüssel benutzt "
"werden kann."
#: agent/call-pinentry.c:808
#, c-format
msgid "SETERROR %s (try %d of %d)"
msgstr "SETERROR %s (Versuch %d von %d)"
#: agent/call-pinentry.c:838 agent/call-pinentry.c:850
msgid "PIN too long"
msgstr "Die PIN ist zu lang"
#: agent/call-pinentry.c:839
msgid "Passphrase too long"
msgstr "Das Mantra (Passphrase) ist zu lang!"
#: agent/call-pinentry.c:847
msgid "Invalid characters in PIN"
msgstr "Ungültige Zeichen in der PIN!"
#: agent/call-pinentry.c:852
msgid "PIN too short"
msgstr "Die PIN ist zu kurz!"
#: agent/call-pinentry.c:864
msgid "Bad PIN"
msgstr "Falsche PIN!"
#: agent/call-pinentry.c:865
msgid "Bad Passphrase"
msgstr "Falsche Passphrase!"
#: agent/call-pinentry.c:903
msgid "Passphrase"
msgstr "Passphrase"
#: agent/command-ssh.c:528
#, c-format
msgid "ssh keys greater than %d bits are not supported\n"
msgstr "SSH Schlüssel von mehr als %d Bits werden nicht unterstützt\n"
#: agent/command-ssh.c:685 common/dotlock.c:326 g10/card-util.c:839
#: g10/exec.c:481 g10/gpg.c:1128 g10/keygen.c:3227 g10/keyring.c:1213
-#: g10/keyring.c:1521 g10/openfile.c:290 g10/openfile.c:383 g10/sign.c:831
-#: g10/sign.c:1142 g10/tdbio.c:548
+#: g10/keyring.c:1521 g10/openfile.c:290 g10/openfile.c:383 g10/sign.c:870
+#: g10/sign.c:1181 g10/tdbio.c:548
#, c-format
msgid "can't create `%s': %s\n"
msgstr "'%s' kann nicht erzeugt werden: %s\n"
#: agent/command-ssh.c:697 common/helpfile.c:47 g10/card-util.c:793
#: g10/dearmor.c:60 g10/dearmor.c:107 g10/decrypt.c:67 g10/decrypt.c:129
#: g10/decrypt.c:146 g10/encrypt.c:198 g10/encrypt.c:547 g10/gpg.c:1129
#: g10/import.c:197 g10/keygen.c:2724 g10/keyring.c:1547 g10/openfile.c:197
-#: g10/openfile.c:211 g10/openfile.c:368 g10/plaintext.c:569 g10/sign.c:813
-#: g10/sign.c:1008 g10/sign.c:1126 g10/sign.c:1284 g10/tdbdump.c:142
+#: g10/openfile.c:211 g10/openfile.c:368 g10/plaintext.c:569 g10/sign.c:852
+#: g10/sign.c:1047 g10/sign.c:1165 g10/sign.c:1323 g10/tdbdump.c:142
#: g10/tdbdump.c:150 g10/tdbio.c:552 g10/tdbio.c:616 g10/verify.c:98
#: g10/verify.c:161 sm/gpgsm.c:2054 sm/gpgsm.c:2084 sm/gpgsm.c:2122
-#: sm/qualified.c:66
+#: sm/qualified.c:66 dirmngr/certcache.c:359 dirmngr/crlcache.c:2380
+#: dirmngr/dirmngr.c:1456
#, c-format
msgid "can't open `%s': %s\n"
msgstr "'%s' kann nicht geöffnet werden: %s\n"
#: agent/command-ssh.c:1651 agent/command-ssh.c:1669
#, c-format
msgid "error getting serial number of card: %s\n"
msgstr "Fehler beim Holen der Karten-Seriennummer: %s\n"
#: agent/command-ssh.c:1655
#, c-format
msgid "detected card with S/N: %s\n"
msgstr "Erkannte Karte hat die Seriennummer: %s\n"
#: agent/command-ssh.c:1660
#, c-format
msgid "error getting default authentication keyID of card: %s\n"
msgstr "Fehler beim Holen der Authentisierungsschlüssel-ID der Karte: %s\n"
#: agent/command-ssh.c:1680
#, c-format
msgid "no suitable card key found: %s\n"
msgstr "keine passender Kartenschlüssel gefunden: %s\n"
#: agent/command-ssh.c:1730
#, c-format
msgid "shadowing the key failed: %s\n"
msgstr "\"Shadowing\" des Schlüssels schlug fehl: %s\n"
#: agent/command-ssh.c:1745
#, c-format
msgid "error writing key: %s\n"
msgstr "Fehler beim Schreiben des Schlüssels: %s\n"
#: agent/command-ssh.c:2053
#, c-format
msgid "Please enter the passphrase for the ssh key%0A %c"
msgstr "Bitte geben Sie die Passphrase für den SSH-Schlüssel %0A %c ein."
#: agent/command-ssh.c:2381 agent/genkey.c:300
msgid "Please re-enter this passphrase"
msgstr "Bitte geben Sie die Passphrase noch einmal ein:"
#: agent/command-ssh.c:2402
#, c-format
msgid ""
"Please enter a passphrase to protect the received secret key%%0A %s%%"
"0Awithin gpg-agent's key storage"
msgstr ""
"Bitte geben Sie eine Passphrase ein, um den empfangenen geheimen Schlüssel%%"
"0A %s%%0A im Schlüsselspeicher des gpg-agenten zu schützen."
#: agent/command-ssh.c:2440 agent/genkey.c:334 tools/symcryptrun.c:433
msgid "does not match - try again"
msgstr "Keine Übereinstimmung - bitte nochmal versuchen."
#: agent/command-ssh.c:2947
#, c-format
msgid "failed to create stream from socket: %s\n"
msgstr "Das Erzeugen eines Datenstroms aus dem Socket schlug fehl: %s\n"
#: agent/divert-scd.c:92 g10/call-agent.c:879
msgid "Please insert the card with serial number"
msgstr "Die legen Sie die Karte mit der folgenden Seriennummer ein:"
#: agent/divert-scd.c:93 g10/call-agent.c:880
msgid "Please remove the current card and insert the one with serial number"
msgstr ""
"Bitte entfernen Sie die vorhanden Karte und legen Sie die mit der folgenden "
"Seriennummer ein:"
#: agent/divert-scd.c:200
msgid "Admin PIN"
msgstr "Admin-PIN"
#. TRANSLATORS: A PUK is the Personal Unblocking Code
#. used to unblock a PIN.
#: agent/divert-scd.c:205
msgid "PUK"
msgstr "PUK"
#: agent/divert-scd.c:212
msgid "Reset Code"
msgstr "Rückstellcode"
#: agent/divert-scd.c:238
#, c-format
msgid "%s%%0A%%0AUse the reader's keypad for input."
msgstr "%s%%0A%%0AZur Eingabe die Tastatur des Kartenlesers verwenden."
#: agent/divert-scd.c:287
msgid "Repeat this Reset Code"
msgstr "Rückstellcode bitte wiederholen"
#: agent/divert-scd.c:289
msgid "Repeat this PUK"
msgstr "PUK bitte wiederholen"
#: agent/divert-scd.c:290
msgid "Repeat this PIN"
msgstr "PIN bitte wiederholen"
#: agent/divert-scd.c:295
msgid "Reset Code not correctly repeated; try again"
msgstr "Rückstellcode wurde nicht richtig wiederholt; noch einmal versuchen"
#: agent/divert-scd.c:297
msgid "PUK not correctly repeated; try again"
msgstr "PUK wurde nicht richtig wiederholt; noch einmal versuchen"
#: agent/divert-scd.c:298
msgid "PIN not correctly repeated; try again"
msgstr "PIN wurde nicht richtig wiederholt; noch einmal versuchen"
#: agent/divert-scd.c:310
#, c-format
msgid "Please enter the PIN%s%s%s to unlock the card"
msgstr "Bitte geben Sie die PIN%s%s%s ein, um die Karte zu entsperren"
#: agent/genkey.c:108 sm/certreqgen-ui.c:384
#, c-format
msgid "error creating temporary file: %s\n"
msgstr "Fehler beim Erstellen einer temporären Datei: %s\n"
#: agent/genkey.c:115
#, c-format
msgid "error writing to temporary file: %s\n"
msgstr "Fehler beim Schreiben auf eine temporäre Datei: %s\n"
#: agent/genkey.c:156 agent/genkey.c:162
msgid "Enter new passphrase"
msgstr "Neue Passphrase eingeben"
#: agent/genkey.c:170
msgid "Take this one anyway"
msgstr "Diese trotzdem benutzen"
#: agent/genkey.c:196
#, c-format
msgid ""
"Warning: You have entered an insecure passphrase.%%0AA passphrase should be "
"at least %u character long."
msgid_plural ""
"Warning: You have entered an insecure passphrase.%%0AA passphrase should be "
"at least %u characters long."
msgstr[0] ""
"WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. "
"Eine Passphrase sollte%%0Amindestens %u Zeichen lang sein."
msgstr[1] ""
"WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. "
"Eine Passphrase sollte%%0Amindestens %u Zeichen lang sein."
#: agent/genkey.c:217
#, c-format
msgid ""
"Warning: You have entered an insecure passphrase.%%0AA passphrase should "
"contain at least %u digit or%%0Aspecial character."
msgid_plural ""
"Warning: You have entered an insecure passphrase.%%0AA passphrase should "
"contain at least %u digits or%%0Aspecial characters."
msgstr[0] ""
"WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. "
"Eine Passphrase sollte%%0Amindestens %u Sonderzeichen oder eine Ziffer "
"enthalten."
msgstr[1] ""
"WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. "
"Eine Passphrase sollte%%0Amindestens %u Sonderzeichen oder Ziffern enthalten."
#: agent/genkey.c:240
#, c-format
msgid ""
"Warning: You have entered an insecure passphrase.%%0AA passphrase may not be "
"a known term or match%%0Acertain pattern."
msgstr ""
"WARNUNG: Sie haben eine offensichtlich unsichere%%0APassphrase eingegeben. "
"Eine Passphrase sollte kein%%0Abekanntes Wort sein oder nach bekannten "
"Regeln aufgebaut sein."
#: agent/genkey.c:256
#, c-format
msgid ""
"You have not entered a passphrase!%0AAn empty passphrase is not allowed."
msgstr ""
"Sie haben keine Passphrase eingegeben!%0AEine leere Passphrase ist nicht "
"erlaubt."
#: agent/genkey.c:258
#, c-format
msgid ""
"You have not entered a passphrase - this is in general a bad idea!%0APlease "
"confirm that you do not want to have any protection on your key."
msgstr ""
"Sie möchten keine Passphrase - Dies ist *nicht* zu empfehlen!%0ABitte\n"
"bestätigen Sie, daß sie auf jeden Schutz Ihres privaten Schlüssels\n"
"verzichten."
#: agent/genkey.c:267
msgid "Yes, protection is not needed"
msgstr "Ja, ein Schutz ist nicht notwendig"
#: agent/genkey.c:385
#, c-format
msgid "Please enter the passphrase to%0Ato protect your new key"
msgstr "Bitte geben Sie die Passphrase ein,%0Aum Ihren Schlüssel zu schützen."
#: agent/genkey.c:479
msgid "Please enter the new passphrase"
msgstr "Bitte geben Sie die Passphrase ein:"
#: agent/gpg-agent.c:122 agent/preset-passphrase.c:71 scd/scdaemon.c:104
#: tools/gpg-check-pattern.c:70
msgid ""
"@Options:\n"
" "
msgstr ""
"@Optionen:\n"
" "
-#: agent/gpg-agent.c:124 scd/scdaemon.c:106
+#: agent/gpg-agent.c:124 scd/scdaemon.c:106 dirmngr/dirmngr.c:134
msgid "run in server mode (foreground)"
msgstr "Im Server Modus ausführen"
-#: agent/gpg-agent.c:125 scd/scdaemon.c:109
+#: agent/gpg-agent.c:125 scd/scdaemon.c:109 dirmngr/dirmngr.c:135
msgid "run in daemon mode (background)"
msgstr "Im Daemon Modus ausführen"
#: agent/gpg-agent.c:126 g10/gpg.c:493 g10/gpgv.c:71 kbx/kbxutil.c:88
-#: scd/scdaemon.c:110 sm/gpgsm.c:281 tools/gpg-connect-agent.c:71
-#: tools/gpgconf.c:79 tools/symcryptrun.c:163
+#: scd/scdaemon.c:110 sm/gpgsm.c:281 dirmngr/dirmngr-client.c:68
+#: dirmngr/dirmngr.c:149 dirmngr/dirmngr_ldap.c:127
+#: tools/gpg-connect-agent.c:71 tools/gpgconf.c:79 tools/symcryptrun.c:163
msgid "verbose"
msgstr "Detaillierte Informationen"
#: agent/gpg-agent.c:127 g10/gpgv.c:72 kbx/kbxutil.c:89 scd/scdaemon.c:111
-#: sm/gpgsm.c:282
+#: sm/gpgsm.c:282 dirmngr/dirmngr-client.c:69 dirmngr/dirmngr.c:150
+#: dirmngr/dirmngr_ldap.c:128
msgid "be somewhat more quiet"
msgstr "Reduzierte Informationen"
-#: agent/gpg-agent.c:128 scd/scdaemon.c:112
+#: agent/gpg-agent.c:128 scd/scdaemon.c:112 dirmngr/dirmngr.c:151
msgid "sh-style command output"
msgstr "Ausgabe für /bin/sh"
-#: agent/gpg-agent.c:129 scd/scdaemon.c:113
+#: agent/gpg-agent.c:129 scd/scdaemon.c:113 dirmngr/dirmngr.c:152
msgid "csh-style command output"
msgstr "Ausgabe für /bin/csh"
#: agent/gpg-agent.c:130 scd/scdaemon.c:114 sm/gpgsm.c:312
-#: tools/symcryptrun.c:166
+#: dirmngr/dirmngr.c:153 tools/symcryptrun.c:166
msgid "|FILE|read options from FILE"
msgstr "|DATEI|Konfigurationsoptionen aus DATEI lesen"
-#: agent/gpg-agent.c:135 scd/scdaemon.c:124
+#: agent/gpg-agent.c:135 scd/scdaemon.c:124 dirmngr/dirmngr.c:156
msgid "do not detach from the console"
msgstr "Im Vordergrund laufen lassen"
#: agent/gpg-agent.c:136
msgid "do not grab keyboard and mouse"
msgstr "Tastatur und Maus nicht \"grabben\""
#: agent/gpg-agent.c:137 tools/symcryptrun.c:165
msgid "use a log file for the server"
msgstr "Logausgaben in eine Datei umlenken"
#: agent/gpg-agent.c:139
msgid "use a standard location for the socket"
msgstr "Benutze einen Standardnamen für den Socket"
#: agent/gpg-agent.c:142
msgid "|PGM|use PGM as the PIN-Entry program"
msgstr "|PGM|benutze PGM as PIN-Entry"
#: agent/gpg-agent.c:145
msgid "|PGM|use PGM as the SCdaemon program"
msgstr "|PGM|benutze PGM als SCdaemon"
#: agent/gpg-agent.c:146
msgid "do not use the SCdaemon"
msgstr "Den Scdaemon-basierten Kartenzugriff nicht nutzen"
#: agent/gpg-agent.c:158
msgid "ignore requests to change the TTY"
msgstr "Ignoriere Anfragen, das TTY zu wechseln"
#: agent/gpg-agent.c:160
msgid "ignore requests to change the X display"
msgstr "Ignoriere Anfragen, das X-Display zu wechseln"
#: agent/gpg-agent.c:163
msgid "|N|expire cached PINs after N seconds"
msgstr "|N|lasse PINs im Cache nach N Sekunden verfallen"
#: agent/gpg-agent.c:176
msgid "do not use the PIN cache when signing"
msgstr "benutze PINs im Cache nicht beim Signieren"
#: agent/gpg-agent.c:178
msgid "allow clients to mark keys as \"trusted\""
msgstr "erlaube Aufrufern Schlüssel als \"vertrauenswürdig\" zu markieren"
#: agent/gpg-agent.c:180
msgid "allow presetting passphrase"
msgstr "erlaube ein \"preset\" von Passphrases"
#: agent/gpg-agent.c:181
msgid "enable ssh-agent emulation"
msgstr "Die ssh-agent-Emulation anschalten"
#: agent/gpg-agent.c:183
msgid "|FILE|write environment settings also to FILE"
msgstr "|DATEI|Schreibe die Umgebungsvariablen auf DATEI"
#. TRANSLATORS: @EMAIL@ will get replaced by the actual bug
#. reporting address. This is so that we can change the
#. reporting address without breaking the translations.
#: agent/gpg-agent.c:334 agent/preset-passphrase.c:93 agent/protect-tool.c:148
#: g10/gpg.c:820 g10/gpgv.c:114 kbx/kbxutil.c:113 scd/scdaemon.c:247
-#: sm/gpgsm.c:529 tools/gpg-connect-agent.c:188 tools/gpgconf.c:101
-#: tools/symcryptrun.c:203 tools/gpg-check-pattern.c:141
+#: sm/gpgsm.c:529 dirmngr/dirmngr-client.c:147 dirmngr/dirmngr.c:298
+#: dirmngr/dirmngr_ldap.c:197 tools/gpg-connect-agent.c:188
+#: tools/gpgconf.c:101 tools/symcryptrun.c:203 tools/gpg-check-pattern.c:141
msgid "Please report bugs to <@EMAIL@>.\n"
msgstr ""
"Berichte über Programmfehler bitte in englisch an <@EMAIL@>.\n"
"Sinn- oder Schreibfehler in den deutschen Texten bitte an <de@li.org>.\n"
#: agent/gpg-agent.c:343
msgid "Usage: gpg-agent [options] (-h for help)"
msgstr "Aufruf: gpg-agent [Optionen] (-h für Hilfe)"
#: agent/gpg-agent.c:345
msgid ""
"Syntax: gpg-agent [options] [command [args]]\n"
"Secret key management for GnuPG\n"
msgstr ""
"Syntax: gpg-agent [Optionen] [Befehl [Argumente]]\n"
"Verwaltung von geheimen Schlüsseln für GnuPG\n"
#: agent/gpg-agent.c:391 g10/gpg.c:1013 scd/scdaemon.c:320 sm/gpgsm.c:679
+#: dirmngr/dirmngr.c:367
#, c-format
msgid "invalid debug-level `%s' given\n"
msgstr "ungültige Debugebene `%s' angegeben\n"
#: agent/gpg-agent.c:616 agent/protect-tool.c:561 kbx/kbxutil.c:428
-#: scd/scdaemon.c:427 sm/gpgsm.c:919 sm/gpgsm.c:922 tools/symcryptrun.c:995
-#: tools/gpg-check-pattern.c:177
+#: scd/scdaemon.c:427 sm/gpgsm.c:919 sm/gpgsm.c:922 dirmngr/dirmngr.c:625
+#: dirmngr/dirmngr.c:628 tools/symcryptrun.c:995 tools/gpg-check-pattern.c:177
#, c-format
msgid "%s is too old (need %s, have %s)\n"
msgstr "Die Bibliothek %s ist nicht aktuell (benötige %s, habe %s)\n"
#: agent/gpg-agent.c:730 g10/gpg.c:2121 scd/scdaemon.c:513 sm/gpgsm.c:1019
+#: dirmngr/dirmngr.c:743
#, c-format
msgid "NOTE: no default option file `%s'\n"
msgstr "Hinweis: Keine voreingestellte Optionendatei '%s' vorhanden\n"
#: agent/gpg-agent.c:741 agent/gpg-agent.c:1343 g10/gpg.c:2125
-#: scd/scdaemon.c:518 sm/gpgsm.c:1023 tools/symcryptrun.c:928
+#: scd/scdaemon.c:518 sm/gpgsm.c:1023 dirmngr/dirmngr.c:748
+#: dirmngr/dirmngr.c:1562 tools/symcryptrun.c:928
#, c-format
msgid "option file `%s': %s\n"
msgstr "Optionendatei '%s': %s\n"
#: agent/gpg-agent.c:749 g10/gpg.c:2132 scd/scdaemon.c:526 sm/gpgsm.c:1030
+#: dirmngr/dirmngr.c:756
#, c-format
msgid "reading options from `%s'\n"
msgstr "Optionen werden aus '%s' gelesen\n"
#: agent/gpg-agent.c:1118 g10/plaintext.c:154 g10/plaintext.c:163
#: g10/plaintext.c:169 g10/plaintext.c:188
#, c-format
msgid "error creating `%s': %s\n"
msgstr "Fehler beim Erstellen von `%s': %s\n"
#: agent/gpg-agent.c:1456 agent/gpg-agent.c:1583 agent/gpg-agent.c:1622
#: g10/exec.c:196 g10/openfile.c:444 scd/scdaemon.c:1029
#, c-format
msgid "can't create directory `%s': %s\n"
msgstr "Verzeichnis `%s' kann nicht erzeugt werden: %s\n"
-#: agent/gpg-agent.c:1470 scd/scdaemon.c:1043
+#: agent/gpg-agent.c:1470 scd/scdaemon.c:1043 dirmngr/dirmngr.c:954
msgid "name of socket too long\n"
msgstr "Der Name des Sockets ist zu lang\n"
-#: agent/gpg-agent.c:1493 scd/scdaemon.c:1066
+#: agent/gpg-agent.c:1493 scd/scdaemon.c:1066 dirmngr/dirmngr.c:961
#, c-format
msgid "can't create socket: %s\n"
msgstr "Socket kann nicht erzeugt werden: %s\n"
#: agent/gpg-agent.c:1502
#, c-format
msgid "socket name `%s' is too long\n"
msgstr "Der Name des Sockets `%s' ist zu lang\n"
#: agent/gpg-agent.c:1530
msgid "a gpg-agent is already running - not starting a new one\n"
msgstr "Ein gpg-agent läuft bereits - ein weiterer wird nicht gestartet\n"
-#: agent/gpg-agent.c:1541 scd/scdaemon.c:1085
+#: agent/gpg-agent.c:1541 scd/scdaemon.c:1085 dirmngr/dirmngr.c:985
msgid "error getting nonce for the socket\n"
msgstr "Fehler beim Ermitteln der \"Nonce\" dieses Sockets\n"
-#: agent/gpg-agent.c:1546 scd/scdaemon.c:1088
+#: agent/gpg-agent.c:1546 scd/scdaemon.c:1088 dirmngr/dirmngr.c:988
#, c-format
msgid "error binding socket to `%s': %s\n"
msgstr "Der Socket kann nicht an `%s' gebunden werden: %s\n"
-#: agent/gpg-agent.c:1558 scd/scdaemon.c:1097
+#: agent/gpg-agent.c:1558 scd/scdaemon.c:1097 dirmngr/dirmngr.c:997
#, c-format
msgid "listen() failed: %s\n"
msgstr "Der listen()-Aufruf ist fehlgeschlagen: %s\n"
-#: agent/gpg-agent.c:1564 scd/scdaemon.c:1104
+#: agent/gpg-agent.c:1564 scd/scdaemon.c:1104 dirmngr/dirmngr.c:1003
#, c-format
msgid "listening on socket `%s'\n"
msgstr "Es wird auf Socket `%s' gehört\n"
#: agent/gpg-agent.c:1586 agent/gpg-agent.c:1627 g10/openfile.c:447
#, c-format
msgid "directory `%s' created\n"
msgstr "Verzeichnis `%s' erzeugt\n"
#: agent/gpg-agent.c:1633
#, c-format
msgid "stat() failed for `%s': %s\n"
msgstr "stat()-Aufruf für `%s' fehlgeschlagen: %s\n"
#: agent/gpg-agent.c:1637
#, c-format
msgid "can't use `%s' as home directory\n"
msgstr "Die Datei `%s' kann nicht als Home-Verzeichnis benutzt werden\n"
-#: agent/gpg-agent.c:1769 scd/scdaemon.c:1120
+#: agent/gpg-agent.c:1769 scd/scdaemon.c:1120 dirmngr/dirmngr.c:1679
#, c-format
msgid "error reading nonce on fd %d: %s\n"
msgstr "Fehler beim Lesen der \"Nonce\" von FD %d: %s\n"
#: agent/gpg-agent.c:1791
#, c-format
msgid "handler 0x%lx for fd %d started\n"
msgstr "Handhabungsroutine 0x%lx für fd %d gestartet\n"
#: agent/gpg-agent.c:1796
#, c-format
msgid "handler 0x%lx for fd %d terminated\n"
msgstr "Handhabungsroutine 0x%lx für den fd %d beendet\n"
#: agent/gpg-agent.c:1816
#, c-format
msgid "ssh handler 0x%lx for fd %d started\n"
msgstr "SSH-Handhabungsroutine 0x%lx für fd %d gestartet\n"
#: agent/gpg-agent.c:1821
#, c-format
msgid "ssh handler 0x%lx for fd %d terminated\n"
msgstr "SSH-Handhabungsroutine 0x%lx für fd %d beendet\n"
#: agent/gpg-agent.c:1961 scd/scdaemon.c:1257
#, c-format
msgid "pth_select failed: %s - waiting 1s\n"
msgstr "pth_select()-Aufruf fehlgeschlagen: %s - warte 1s\n"
#: agent/gpg-agent.c:2084 scd/scdaemon.c:1324
#, c-format
msgid "%s %s stopped\n"
msgstr "%s %s angehalten\n"
#: agent/gpg-agent.c:2220
msgid "no gpg-agent running in this session\n"
msgstr "Der gpg-agent läuft nicht für diese Session\n"
#: agent/gpg-agent.c:2231 common/simple-pwquery.c:352 common/asshelp.c:484
msgid "malformed GPG_AGENT_INFO environment variable\n"
msgstr "fehlerhaft aufgebaute GPG_AGENT_INFO - Umgebungsvariable\n"
#: agent/gpg-agent.c:2244 common/simple-pwquery.c:364 common/asshelp.c:496
#, c-format
msgid "gpg-agent protocol version %d is not supported\n"
msgstr "GPG-Agent-Protokoll-Version %d wird nicht unterstützt\n"
#: agent/preset-passphrase.c:97
msgid "Usage: gpg-preset-passphrase [options] KEYGRIP (-h for help)\n"
msgstr "Aufruf: gpg-preset-passphrase [Optionen] KEYGRIP (-h für Hilfe)\n"
#: agent/preset-passphrase.c:100
msgid ""
"Syntax: gpg-preset-passphrase [options] KEYGRIP\n"
"Password cache maintenance\n"
msgstr ""
"Syntax: gpg-preset-passphrase [Optionen] KEYGRIP\n"
"Kennwortpuffer-Pflege\n"
#: agent/protect-tool.c:105 g10/gpg.c:376 kbx/kbxutil.c:71 sm/gpgsm.c:187
-#: tools/gpgconf.c:59
+#: dirmngr/dirmngr.c:132 tools/gpgconf.c:59
msgid ""
"@Commands:\n"
" "
msgstr ""
"@Befehle:\n"
" "
#: agent/protect-tool.c:114 g10/gpg.c:444 g10/gpgv.c:69 kbx/kbxutil.c:81
-#: sm/gpgsm.c:227 tools/gpg-connect-agent.c:69 tools/gpgconf.c:76
-#: tools/symcryptrun.c:156
+#: sm/gpgsm.c:227 dirmngr/dirmngr.c:147 tools/gpg-connect-agent.c:69
+#: tools/gpgconf.c:76 tools/symcryptrun.c:156
msgid ""
"@\n"
"Options:\n"
" "
msgstr ""
"@\n"
"Optionen:\n"
" "
#: agent/protect-tool.c:151
msgid "Usage: gpg-protect-tool [options] (-h for help)\n"
msgstr "Aufruf: gpg-protect-tool [Optionen] (-h für Hilfe)\n"
#: agent/protect-tool.c:153
msgid ""
"Syntax: gpg-protect-tool [options] [args]\n"
"Secret key maintenance tool\n"
msgstr ""
"Syntax: gpg-protect-tool [Optionen] [Argumente]\n"
"Werkzeug zum Bearbeiten von geheimen Schlüsseln\n"
#: agent/protect-tool.c:682
msgid "Please enter the passphrase to unprotect the PKCS#12 object."
msgstr "Bitte geben Sie die Passphrase zum Entsperren des PKCS#12 Objekts ein."
#: agent/protect-tool.c:687
msgid "Please enter the passphrase to protect the new PKCS#12 object."
msgstr ""
"Bitte geben Sie die Passphrase zum Schützen des neuen PKCS#12 Objekts ein."
#: agent/protect-tool.c:693
msgid ""
"Please enter the passphrase to protect the imported object within the GnuPG "
"system."
msgstr ""
"Bitte geben Sie die Passphrase ein, um das importierte Objekt im GnuPG "
"System zu schützen."
#: agent/protect-tool.c:698
msgid ""
"Please enter the passphrase or the PIN\n"
"needed to complete this operation."
msgstr ""
"Die Eingabe der Passphrase bzw. der PIN\n"
"wird benötigt, um diese Aktion auszuführen."
#: agent/protect-tool.c:703 tools/symcryptrun.c:434
msgid "Passphrase:"
msgstr "Passphrase:"
#: agent/protect-tool.c:709 tools/symcryptrun.c:445
msgid "cancelled\n"
msgstr "Vom Benutzer abgebrochen\n"
#: agent/protect-tool.c:711 tools/symcryptrun.c:441
#, c-format
msgid "error while asking for the passphrase: %s\n"
msgstr "Fehler bei der Abfrage der Passphrase: %s\n"
-#: agent/trustlist.c:135 agent/trustlist.c:332
+#: agent/trustlist.c:135 agent/trustlist.c:332 dirmngr/dirmngr.c:1364
#, c-format
msgid "error opening `%s': %s\n"
msgstr "Fehler beim Öffnen von `%s': %s\n"
#: agent/trustlist.c:150 common/helpfile.c:63 common/helpfile.c:79
#, c-format
msgid "file `%s', line %d: %s\n"
msgstr "Datei `%s', Zeile %d: %s\n"
#: agent/trustlist.c:170 agent/trustlist.c:178
#, c-format
msgid "statement \"%s\" ignored in `%s', line %d\n"
msgstr ""
"Anweisung \"%s\" in `%s', Zeile %d\n"
" ignoriert\n"
#: agent/trustlist.c:184
#, c-format
msgid "system trustlist `%s' not available\n"
msgstr ""
"Systemliste der vertrauenswürdigen Zertifikate '%s' ist nicht vorhanden\n"
#: agent/trustlist.c:228
#, c-format
msgid "bad fingerprint in `%s', line %d\n"
msgstr "fehlerhafter Fingerabdruck in `%s', Zeile %d\n"
#: agent/trustlist.c:253 agent/trustlist.c:260
#, c-format
msgid "invalid keyflag in `%s', line %d\n"
msgstr "Ungültiges Schlüsselflag in `%s', Zeile %d\n"
#: agent/trustlist.c:294 common/helpfile.c:126
#, c-format
msgid "error reading `%s', line %d: %s\n"
msgstr "Fehler beim Lesen von `%s', Zeile %d: %s\n"
#: agent/trustlist.c:398 agent/trustlist.c:448
msgid "error reading list of trusted root certificates\n"
msgstr "Fehler beim Lesen der Liste vertrauenswürdiger root-Zertifikate\n"
#. TRANSLATORS: This prompt is shown by the Pinentry
#. and has one special property: A "%%0A" is used by
#. Pinentry to insert a line break. The double
#. percent sign is actually needed because it is also
#. a printf format string. If you need to insert a
#. plain % sign, you need to encode it as "%%25". The
#. "%s" gets replaced by the name as stored in the
#. certificate.
#: agent/trustlist.c:609
#, c-format
msgid ""
"Do you ultimately trust%%0A \"%s\"%%0Ato correctly certify user "
"certificates?"
msgstr ""
"Wenn Sie vollständiges Vertrauen haben, daß%%0A \"%s\"%%"
"0ABenutzerzertifikate verläßlich zertifiziert, so antworten Sie mit \"Ja\"."
#: agent/trustlist.c:618 common/audit.c:467
msgid "Yes"
msgstr "Ja"
#: agent/trustlist.c:618 common/audit.c:469
msgid "No"
msgstr "Nein"
#. TRANSLATORS: This prompt is shown by the Pinentry and has
#. one special property: A "%%0A" is used by Pinentry to
#. insert a line break. The double percent sign is actually
#. needed because it is also a printf format string. If you
#. need to insert a plain % sign, you need to encode it as
#. "%%25". The second "%s" gets replaced by a hexdecimal
#. fingerprint string whereas the first one receives the name
#. as stored in the certificate.
#: agent/trustlist.c:652
#, c-format
msgid ""
"Please verify that the certificate identified as:%%0A \"%s\"%%0Ahas the "
"fingerprint:%%0A %s"
msgstr ""
"Bitte prüfen Sie, daß das Zertifikat mit dem Namen:%%0A \"%s\"%%0Afolgenden "
"Fingerabdruck hat:%%0A %s"
#. TRANSLATORS: "Correct" is the label of a button and intended
#. to be hit if the fingerprint matches the one of the CA. The
#. other button is "the default "Cancel" of the Pinentry.
#: agent/trustlist.c:666
msgid "Correct"
msgstr "Korrekt"
#: agent/trustlist.c:666
msgid "Wrong"
msgstr "Falsch"
#: agent/findkey.c:131
#, c-format
msgid "Note: This passphrase has never been changed.%0APlease change it now."
msgstr ""
"Hinweis: Diese Passphrase wurde noch nie geändert/%0ABitte ändern Sie sie "
"jetzt."
#: agent/findkey.c:147
#, c-format
msgid ""
"This passphrase has not been changed%%0Asince %.4s-%.2s-%.2s. Please change "
"it now."
msgstr ""
"Diese Passphrase wurde seit dem %.4s-%.2s-%.2s nicht%%0A\n"
"mehr geändert. Bitte ändern Sie sie jetzt."
#: agent/findkey.c:161 agent/findkey.c:168
msgid "Change passphrase"
msgstr "Die Passphrase ändern"
#: agent/findkey.c:169
msgid "I'll change it later"
msgstr "Ich werde sie später ändern"
#: agent/pksign.c:134 g10/seskey.c:226 sm/certcheck.c:85
msgid "DSA requires the hash length to be a multiple of 8 bits\n"
msgstr "Für DSA muß die Hashlänge ein Vielfaches von 8 Bit sein\n"
#: agent/pksign.c:145 sm/certcheck.c:97
#, c-format
msgid "%s key uses an unsafe (%u bit) hash\n"
msgstr "%s-Schlüssel verwendet ein unsicheres (%u-Bit) Hashverfahren\n"
#: agent/pksign.c:154
#, c-format
msgid "a %zu bit hash is not valid for a %u bit %s key\n"
msgstr ""
"Ein %zu-Bit Hashverfahren ist für einen %u-Bit %s Schlüssel nicht möglich\n"
#: agent/cvt-openpgp.c:216 g10/seckey-cert.c:56
msgid "secret key parts are not available\n"
msgstr "Teile des geheimen Schlüssels sind nicht vorhanden\n"
#: agent/cvt-openpgp.c:225
#, c-format
msgid "public key algorithm %d (%s) is not supported\n"
msgstr "Public-Key-Verfahren %d (%s) wird nicht unterstützt\n"
#: agent/cvt-openpgp.c:285
#, c-format
msgid "protection algorithm %d (%s) is not supported\n"
msgstr "Schutzverfahren %d (%s) wird nicht unterstützt\n"
#: agent/cvt-openpgp.c:292
#, c-format
msgid "protection hash algorithm %d (%s) is not supported\n"
msgstr "Schutzverfahrenshash %d (%s) wird nicht unterstützt\n"
#: common/exechelp-posix.c:312 common/exechelp-w32.c:405
-#: common/exechelp-w32.c:429
+#: common/exechelp-w32.c:429 dirmngr/ldap-wrapper.c:673
#, c-format
msgid "error creating a pipe: %s\n"
msgstr "Fehler beim Erzeugen einer \"Pipe\": %s\n"
#: common/exechelp-posix.c:322 common/exechelp-w32.c:415
#: common/exechelp-w32.c:439
#, c-format
msgid "error creating a stream for a pipe: %s\n"
msgstr "Fehler beim Erzeugen eines \"streams\" zu einer \"pipe\": %s\n"
#: common/exechelp-posix.c:399 common/exechelp-posix.c:465
-#: common/exechelp-posix.c:579
+#: common/exechelp-posix.c:579 dirmngr/dirmngr.c:1017
#, c-format
msgid "error forking process: %s\n"
msgstr "Fehler beim \"Forken\" des Prozess: %s\n"
#: common/exechelp-posix.c:508 common/exechelp-w32.c:670
#: common/exechelp-w32ce.c:741
#, c-format
msgid "waiting for process %d to terminate failed: %s\n"
msgstr "Das Warten auf die Beendigung des Prozesses %d schlug fehl: %s\n"
#: common/exechelp-posix.c:517
#, c-format
msgid "error running `%s': probably not installed\n"
msgstr "Fehler bei Ausführung von `%s': wahrscheinlich nicht installiert\n"
#: common/exechelp-posix.c:523 common/exechelp-w32.c:684
#: common/exechelp-w32ce.c:755
#, c-format
msgid "error running `%s': exit status %d\n"
msgstr "Fehler bei Ausführung von `%s': Endestatus %d\n"
#: common/exechelp-posix.c:531
#, c-format
msgid "error running `%s': terminated\n"
msgstr "Fehler bei Ausführung von `%s': beendet\n"
#: common/exechelp-w32.c:678 common/exechelp-w32ce.c:749
#, c-format
msgid "error getting exit code of process %d: %s\n"
msgstr "Fehler beim Holen des Exitwerte des Prozesses %d: %s\n"
#: common/http.c:1550
#, c-format
msgid "error creating socket: %s\n"
msgstr "Fehler beim Erstellen des Sockets: %s\n"
#: common/http.c:1594
msgid "host not found"
msgstr "Host nicht gefunden"
#: common/simple-pwquery.c:338
msgid "gpg-agent is not available in this session\n"
msgstr "GPG-Agent ist in dieser Sitzung nicht vorhanden\n"
#: common/simple-pwquery.c:395
#, c-format
msgid "can't connect to `%s': %s\n"
msgstr "Verbindung zu '%s' kann nicht aufgebaut werden: %s\n"
#: common/simple-pwquery.c:406
msgid "communication problem with gpg-agent\n"
msgstr "Kommunikationsproblem mit GPG-Agent\n"
#: common/simple-pwquery.c:416
msgid "problem setting the gpg-agent options\n"
msgstr "Beim Setzen der gpg-agent Optionen ist ein Problem aufgetreten\n"
#: common/simple-pwquery.c:579 common/simple-pwquery.c:675
msgid "canceled by user\n"
msgstr "Vom Benutzer abgebrochen\n"
#: common/simple-pwquery.c:594 common/simple-pwquery.c:681
msgid "problem with the agent\n"
msgstr "Problem mit dem Agenten\n"
#: common/sysutils.c:109
#, c-format
msgid "can't disable core dumps: %s\n"
msgstr "core-dump-Dateierzeugung kann nicht abgeschaltet werden: %s\n"
#: common/sysutils.c:193
#, c-format
msgid "Warning: unsafe ownership on %s \"%s\"\n"
msgstr "WARNUNG: Unsichere Besitzrechte für %s \"%s\"\n"
#: common/sysutils.c:225
#, c-format
msgid "Warning: unsafe permissions on %s \"%s\"\n"
msgstr "WARNUNG: Unsichere Zugriffsrechte für %s \"%s\"\n"
#. TRANSLATORS: See doc/TRANSLATE about this string.
#: common/yesno.c:35 common/yesno.c:72
msgid "yes"
msgstr "ja"
#: common/yesno.c:36 common/yesno.c:77
msgid "yY"
msgstr "jJyY"
#. TRANSLATORS: See doc/TRANSLATE about this string.
#: common/yesno.c:38 common/yesno.c:74
msgid "no"
msgstr "nein"
#: common/yesno.c:39 common/yesno.c:78
msgid "nN"
msgstr "nN"
#. TRANSLATORS: See doc/TRANSLATE about this string.
#: common/yesno.c:76
msgid "quit"
msgstr "quit"
#: common/yesno.c:79
msgid "qQ"
msgstr "qQ"
#. TRANSLATORS: See doc/TRANSLATE about this string.
#: common/yesno.c:113
msgid "okay|okay"
msgstr "okay|okay"
#. TRANSLATORS: See doc/TRANSLATE about this string.
#: common/yesno.c:115
msgid "cancel|cancel"
msgstr "abbrechen|abbrechen"
#: common/yesno.c:116
msgid "oO"
msgstr "oO"
#: common/yesno.c:117
msgid "cC"
msgstr "cC"
#: common/miscellaneous.c:76
#, c-format
msgid "out of core in secure memory while allocating %lu bytes"
msgstr ""
"Kein sicherer Speicher mehr vorhanden, als %lu Byte zugewiesen werden sollten"
#: common/miscellaneous.c:79
#, c-format
msgid "out of core while allocating %lu bytes"
msgstr "Kein Speicher mehr vorhanden, als %lu Byte zugewiesen werden sollten"
#: common/asshelp.c:369
#, c-format
msgid "no running gpg-agent - starting `%s'\n"
msgstr "Kein aktiver gpg-agent - `%s' wird gestartet\n"
#: common/asshelp.c:425
#, c-format
msgid "waiting %d seconds for the agent to come up\n"
msgstr "Warte %d Sekunden bis der gpg-agent bereit ist\n"
#: common/asshelp.c:434 common/asshelp.c:521
msgid "connection to agent established\n"
msgstr "Verbindung zum gpg-agent aufgebaut\n"
#: common/asshelp.c:507
msgid "can't connect to the agent - trying fall back\n"
msgstr "Verbindung zum gpg-agent nicht möglich - Ersatzmethode wird versucht\n"
#: common/asshelp.c:582
#, c-format
msgid "no running Dirmngr - starting `%s'\n"
msgstr "Kein aktiver Dirmngr - `%s' wird gestartet\n"
#: common/asshelp.c:614
#, c-format
msgid "waiting %d seconds for the dirmngr to come up\n"
msgstr "Warte %d Sekunden bis der Dirmngr bereit ist\n"
#: common/asshelp.c:623 common/asshelp.c:650
msgid "connection to the dirmngr established\n"
msgstr "Verbindung zum Dirmngr aufgebaut\n"
#. TRANSLATORS: Copy the prefix between the vertical bars
#. verbatim. It will not be printed.
#: common/audit.c:474
msgid "|audit-log-result|Good"
msgstr "|audit-log-result|Korrekt"
#: common/audit.c:477
msgid "|audit-log-result|Bad"
msgstr "|audit-log-result|Falsch"
#: common/audit.c:479
msgid "|audit-log-result|Not supported"
msgstr "|audit-log-result|Nicht unterstützt"
#: common/audit.c:481
msgid "|audit-log-result|No certificate"
msgstr "|audit-log-result|Zertifikat fehlt"
#: common/audit.c:483
msgid "|audit-log-result|Not enabled"
msgstr "|audit-log-result|Nicht eingeschaltet"
#: common/audit.c:485
msgid "|audit-log-result|Error"
msgstr "|audit-log-result|Fehler"
#: common/audit.c:487
msgid "|audit-log-result|Not used"
msgstr "|audit-log-result|Nicht benötigt"
#: common/audit.c:489
msgid "|audit-log-result|Okay"
msgstr "|audit-log-result|Okay"
#: common/audit.c:491
msgid "|audit-log-result|Skipped"
msgstr "|audit-log-result|Übergangen"
#: common/audit.c:493
msgid "|audit-log-result|Some"
msgstr "|audit-log-result|Einige"
#: common/audit.c:726
msgid "Certificate chain available"
msgstr "Zertifikatkette vorhanden"
#: common/audit.c:733
msgid "root certificate missing"
msgstr "Das Wurzelzertifikat fehlt"
#: common/audit.c:759
msgid "Data encryption succeeded"
msgstr "Verschlüsseln der Daten erfolgreich"
#: common/audit.c:764 common/audit.c:830 common/audit.c:906 common/audit.c:997
msgid "Data available"
msgstr "Daten vorhanden"
#: common/audit.c:767
msgid "Session key created"
msgstr "Sitzungsschlüssel erzeugt"
#: common/audit.c:772 common/audit.c:912 common/audit.c:919
#, c-format
msgid "algorithm: %s"
msgstr "Verfahren: %s"
#: common/audit.c:774 common/audit.c:776 common/audit.c:921 common/audit.c:923
#, c-format
msgid "unsupported algorithm: %s"
msgstr "Nicht unterstütztes Verfahren: %s"
#: common/audit.c:778 common/audit.c:925
msgid "seems to be not encrypted"
msgstr "dies is wahrscheinlich nicht verschlüsselt"
#: common/audit.c:784 common/audit.c:933
msgid "Number of recipients"
msgstr "Anzahl der Empfänger"
#: common/audit.c:792 common/audit.c:956
#, c-format
msgid "Recipient %d"
msgstr "Empfänger %d"
#: common/audit.c:825
msgid "Data signing succeeded"
msgstr "Signieren der Daten erfolgreich"
#: common/audit.c:839 common/audit.c:1033 common/audit.c:1060
#, c-format
msgid "data hash algorithm: %s"
msgstr "Hashverfahren für Daten: %s"
#: common/audit.c:862
#, c-format
msgid "Signer %d"
msgstr "Unterzeichner %d"
#: common/audit.c:866 common/audit.c:1065
#, c-format
msgid "attr hash algorithm: %s"
msgstr "Hashverfahren für Attribute: %s"
#: common/audit.c:901
msgid "Data decryption succeeded"
msgstr "Entschlüsselung der Daten erfolgreich"
#: common/audit.c:910
msgid "Encryption algorithm supported"
msgstr "Verschlüsselungsverfahren %d%s wird nicht unterstützt"
#: common/audit.c:993
msgid "Data verification succeeded"
msgstr "Prüfung der Signatur erfolgreich"
#: common/audit.c:1002
msgid "Signature available"
msgstr "Signatur vorhanden"
#: common/audit.c:1024
msgid "Parsing data succeeded"
msgstr "Syntaxanalyse der Daten erfolgreich"
#: common/audit.c:1036
#, c-format
msgid "bad data hash algorithm: %s"
msgstr "Ungültiges Hashverfahren für Daten: %s"
#: common/audit.c:1051
#, c-format
msgid "Signature %d"
msgstr "Signatur %d"
#: common/audit.c:1079
msgid "Certificate chain valid"
msgstr "Zertifikatkette gültig"
#: common/audit.c:1090
msgid "Root certificate trustworthy"
msgstr "Wurzelzertifikat vertrauenswürdig"
#: common/audit.c:1111 sm/certchain.c:935
msgid "no CRL found for certificate"
msgstr "Keine CRL für das Zertifikat gefunden"
#: common/audit.c:1114 sm/certchain.c:945
msgid "the available CRL is too old"
msgstr "Die vorhandene CRL ist zu alt"
#: common/audit.c:1119
msgid "CRL/OCSP check of certificates"
msgstr "CRL/OCSP Prüfung der Zertifikate"
#: common/audit.c:1139
msgid "Included certificates"
msgstr "Mitgesendete Zertifikate"
#: common/audit.c:1194
msgid "No audit log entries."
msgstr "Keine Einträge in der Audit-Datei"
#: common/audit.c:1243
msgid "Unknown operation"
msgstr "Unbekannte Operation"
#: common/audit.c:1261
msgid "Gpg-Agent usable"
msgstr "Gpg-Agent benutzbar"
#: common/audit.c:1271
msgid "Dirmngr usable"
msgstr "Dirmngr benutzbar"
#: common/audit.c:1307
#, c-format
msgid "No help available for `%s'."
msgstr "Keine Hilfe für '%s' vorhanden."
#: common/helpfile.c:80
msgid "ignoring garbage line"
msgstr "Zeile mit nicht identifizierten Zeichen wird ignoriert"
#: common/gettime.c:510
msgid "[none]"
msgstr "[keine]"
#: common/argparse.c:233
msgid "argument not expected"
msgstr "Argument nicht erwartet"
#: common/argparse.c:235
msgid "read error"
msgstr "Lesefehler"
#: common/argparse.c:237
msgid "keyword too long"
msgstr "Schlüsselwort ist zu lang"
#: common/argparse.c:239
msgid "missing argument"
msgstr "Fehlendes Argument"
#: common/argparse.c:241
msgid "invalid command"
msgstr "Ungültiger Befehl"
#: common/argparse.c:243
msgid "invalid alias definition"
msgstr "Ungültige Alias-Definition"
#: common/argparse.c:245
msgid "out of core"
msgstr "Nicht genügend Speicher"
#: common/argparse.c:247
msgid "invalid option"
msgstr "Ungültige Option"
#: common/argparse.c:255
#, c-format
msgid "missing argument for option \"%.50s\"\n"
msgstr "Fehlendes Argument für Option \"%.50s\"\n"
#: common/argparse.c:257
#, c-format
msgid "option \"%.50s\" does not expect an argument\n"
msgstr "Option \"%.50s\" erwartet kein Argument\n"
#: common/argparse.c:260
#, c-format
msgid "invalid command \"%.50s\"\n"
msgstr "Ungültiger Befehl \"%.50s\"\n"
#: common/argparse.c:262
#, c-format
msgid "option \"%.50s\" is ambiguous\n"
msgstr "Option \"%.50s\" ist mehrdeutig\n"
#: common/argparse.c:264
#, c-format
msgid "command \"%.50s\" is ambiguous\n"
msgstr "Befehl \"%.50s\" ist mehrdeutig\n"
-#: common/argparse.c:266
+#: common/argparse.c:266 dirmngr/dirmngr.c:1035
msgid "out of core\n"
msgstr "Nicht genügend Speicher\n"
#: common/argparse.c:268
#, c-format
msgid "invalid option \"%.50s\"\n"
msgstr "Ungültige Option \"%.50s\"\n"
#: common/logging.c:822
#, c-format
msgid "you found a bug ... (%s:%d)\n"
msgstr "Sie haben einen Bug (Programmfehler) gefunden ... (%s:%d)\n"
#: common/utf8conv.c:89
#, c-format
msgid "error loading `%s': %s\n"
msgstr "Fehler beim Laden von `%s': %s\n"
#: common/utf8conv.c:91 g10/misc.c:539 g10/sig-check.c:107
#, c-format
msgid "please see %s for more information\n"
msgstr "Siehe %s für weitere Infos\n"
#: common/utf8conv.c:128
#, c-format
msgid "conversion from `%s' to `%s' not available\n"
msgstr "Umwandlung von `%s' in `%s' ist nicht verfügbar\n"
#: common/utf8conv.c:136
#, c-format
msgid "iconv_open failed: %s\n"
msgstr "iconv_open fehlgeschlagen: %s\n"
#: common/utf8conv.c:395 common/utf8conv.c:661
#, c-format
msgid "conversion from `%s' to `%s' failed: %s\n"
msgstr "Umwandlung von `%s' in `%s' schlug fehl: %s\n"
#: common/dotlock.c:237
#, c-format
msgid "failed to create temporary file `%s': %s\n"
msgstr "Die temporäre Datei `%s' kann nicht erstellt werden: %s\n"
#: common/dotlock.c:272
#, c-format
msgid "error writing to `%s': %s\n"
msgstr "Fehler beim Schreiben von %s: %s\n"
#: common/dotlock.c:472
#, c-format
msgid "removing stale lockfile (created by %d)\n"
msgstr "eine übriggebliebene Sperrdatei wird entfernt (erzeugt von %d)\n"
#: common/dotlock.c:478
msgid " - probably dead - removing lock"
msgstr " - existiert wahrscheinlich nicht mehr - entferne Sperre"
#: common/dotlock.c:488
#, c-format
msgid "waiting for lock (held by %d%s) %s...\n"
msgstr "warte auf die Freigabe der Sperre (gehalten von %d%s) %s...\n"
#: common/dotlock.c:489
msgid "(deadlock?) "
msgstr "(Deadlock?) "
#: common/dotlock.c:516
#, c-format
msgid "lock `%s' not made: %s\n"
msgstr "Dateisperre %s konnte nicht eingerichtet werden: %s\n"
#: common/dotlock.c:524
#, c-format
msgid "waiting for lock %s...\n"
msgstr "Warten auf die Freigabe der Dateisperre `%s' ...\n"
#: g10/armor.c:379
#, c-format
msgid "armor: %s\n"
msgstr "ASCII-Hülle: %s\n"
#: g10/armor.c:418
msgid "invalid armor header: "
msgstr "Ungültige ASCII-Hülle"
#: g10/armor.c:429
msgid "armor header: "
msgstr "ASCII-Hülle: "
#: g10/armor.c:442
msgid "invalid clearsig header\n"
msgstr "Ungültige Klartextsignatur-Einleitung\n"
#: g10/armor.c:455
msgid "unknown armor header: "
msgstr "Unbekannter Header in der ASCII-Hülle: "
#: g10/armor.c:508
msgid "nested clear text signatures\n"
msgstr "verschachtelte Klartextsignatur\n"
#: g10/armor.c:643
msgid "unexpected armor: "
msgstr "Unerwartete ASCII-Hülle: "
#: g10/armor.c:656
msgid "invalid dash escaped line: "
msgstr "Ungültige mit Bindestrich \"escapte\" Zeile: "
#: g10/armor.c:811 g10/armor.c:1421
#, c-format
msgid "invalid radix64 character %02X skipped\n"
msgstr "Ungültiges \"radix64\" Zeichen %02x übersprungen\n"
#: g10/armor.c:854
msgid "premature eof (no CRC)\n"
msgstr "vorzeitiges Dateiende (keine Prüfsumme)\n"
#: g10/armor.c:888
msgid "premature eof (in CRC)\n"
msgstr "vorzeitiges Dateiende (innerhalb der Prüfsumme)\n"
#: g10/armor.c:896
msgid "malformed CRC\n"
msgstr "Falsch aufgebaute Prüfsumme\n"
#: g10/armor.c:900 g10/armor.c:1458
#, c-format
msgid "CRC error; %06lX - %06lX\n"
msgstr "Prüfsummenfehler; %06lx - %06lx\n"
#: g10/armor.c:920
msgid "premature eof (in trailer)\n"
msgstr "vorzeitiges Dateiende (im Nachsatz)\n"
#: g10/armor.c:924
msgid "error in trailer line\n"
msgstr "Fehler in der Nachsatzzeile\n"
#: g10/armor.c:1235
msgid "no valid OpenPGP data found.\n"
msgstr "Keine gültigen OpenPGP-Daten gefunden.\n"
#: g10/armor.c:1240
#, c-format
msgid "invalid armor: line longer than %d characters\n"
msgstr "ungültige ASCII-Hülle: Zeile ist länger als %d Zeichen\n"
#: g10/armor.c:1244
msgid ""
"quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr ""
"\"quoted printable\" Zeichen in der ASCII-Hülle gefunden - möglicherweise\n"
" war ein fehlerhafter Email-Transporter(\"MTA\") die Ursache\n"
#: g10/build-packet.c:945
msgid ""
"a notation name must have only printable characters or spaces, and end with "
"an '='\n"
msgstr ""
"Ein \"notation\"-Name darf nur Buchstaben, Zahlen, Punkte oder Unterstriche "
"enthalten und muß mit einem '=' enden\n"
#: g10/build-packet.c:957
msgid "a user notation name must contain the '@' character\n"
msgstr "Ein \"notation\"-Wert darf das '@'-Zeichen nicht verwenden\n"
#: g10/build-packet.c:963
msgid "a notation name must not contain more than one '@' character\n"
msgstr "Ein \"notation\"-Wert darf das '@'-Zeichen maximal einmal verwenden\n"
#: g10/build-packet.c:981
msgid "a notation value must not use any control characters\n"
msgstr "Ein \"notation\"-Wert darf keine Kontrollzeichen verwenden\n"
#: g10/build-packet.c:1015 g10/build-packet.c:1024
msgid "WARNING: invalid notation data found\n"
msgstr "WARNUNG: Ungültige \"Notation\"-Daten gefunden\n"
#: g10/build-packet.c:1046 g10/build-packet.c:1048
msgid "not human readable"
msgstr "nicht als Klartext darstellbar"
#: g10/card-util.c:86 g10/card-util.c:376
#, c-format
msgid "OpenPGP card not available: %s\n"
msgstr "OpenPGP Karte ist nicht vorhanden: %s\n"
#: g10/card-util.c:91
#, c-format
msgid "OpenPGP card no. %s detected\n"
msgstr "OpenPGP Karte Nr. %s erkannt\n"
#: g10/card-util.c:99 g10/card-util.c:1783 g10/delkey.c:114 g10/keyedit.c:1607
#: g10/keygen.c:2918 g10/revoke.c:216 g10/revoke.c:457
msgid "can't do this in batch mode\n"
msgstr "Dies kann im Batchmodus nicht durchgeführt werden.\n"
#: g10/card-util.c:107
msgid "This command is only available for version 2 cards\n"
msgstr "Dieser Befehl ist nur für Karten ab Version 2 möglich.\n"
#: g10/card-util.c:109 scd/app-openpgp.c:2020
msgid "Reset Code not or not anymore available\n"
msgstr "Der Rückstellcode ist nicht vorhanden\n"
#: g10/card-util.c:142 g10/card-util.c:1466 g10/keyedit.c:447
#: g10/keyedit.c:467 g10/keyedit.c:481 g10/keygen.c:1489 g10/keygen.c:1570
#: sm/certreqgen-ui.c:165 sm/certreqgen-ui.c:249 sm/certreqgen-ui.c:283
msgid "Your selection? "
msgstr "Ihre Auswahl? "
#: g10/card-util.c:273 g10/card-util.c:324
msgid "[not set]"
msgstr "[nicht gesetzt]"
#: g10/card-util.c:516
msgid "male"
msgstr "männlich"
#: g10/card-util.c:517
msgid "female"
msgstr "weiblich"
#: g10/card-util.c:517
msgid "unspecified"
msgstr "unbestimmt"
#: g10/card-util.c:544
msgid "not forced"
msgstr "nicht zwingend"
#: g10/card-util.c:544
msgid "forced"
msgstr "zwingend"
#: g10/card-util.c:637
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Fehler: Nur reines ASCII ist derzeit erlaubt.\n"
#: g10/card-util.c:639
msgid "Error: The \"<\" character may not be used.\n"
msgstr "Fehler: Das Zeichen \"<\" kann nicht benutzt werden.\n"
#: g10/card-util.c:641
msgid "Error: Double spaces are not allowed.\n"
msgstr "Fehler: Doppelte Leerzeichen sind nicht erlaubt.\n"
#: g10/card-util.c:658
msgid "Cardholder's surname: "
msgstr "Familienname des Kartenbesitzers:"
#: g10/card-util.c:660
msgid "Cardholder's given name: "
msgstr "Vorname des Kartenbesitzers:"
#: g10/card-util.c:678
#, c-format
msgid "Error: Combined name too long (limit is %d characters).\n"
msgstr ""
"Fehler: Der zusammengesetzte Name ist zu lang (Grenze beträgt %d Zeichen).\n"
#: g10/card-util.c:699
msgid "URL to retrieve public key: "
msgstr "URL um den öffentlichen Schlüssel zu holen: "
#: g10/card-util.c:707
#, c-format
msgid "Error: URL too long (limit is %d characters).\n"
msgstr "Fehler: URL ist zu lang (Grenze beträgt %d Zeichen).\n"
#: g10/card-util.c:800 tools/no-libgcrypt.c:30
#, c-format
msgid "error allocating enough memory: %s\n"
msgstr "Fehler beim Zuteilen genügenden Speichers: %s\n"
-#: g10/card-util.c:812 g10/import.c:291
+#: g10/card-util.c:812 g10/import.c:291 dirmngr/crlcache.c:649
+#: dirmngr/crlcache.c:654 dirmngr/crlcache.c:908 dirmngr/crlcache.c:914
+#: dirmngr/dirmngr.c:1402
#, c-format
msgid "error reading `%s': %s\n"
msgstr "Fehler beim Lesen von `%s': %s\n"
-#: g10/card-util.c:845
+#: g10/card-util.c:845 dirmngr/crlcache.c:919
#, c-format
msgid "error writing `%s': %s\n"
msgstr "Fehler beim Schreiben von %s: %s\n"
#: g10/card-util.c:872
msgid "Login data (account name): "
msgstr "Logindaten (Kontenname): "
#: g10/card-util.c:882
#, c-format
msgid "Error: Login data too long (limit is %d characters).\n"
msgstr "Fehler: Logindaten sind zu lang (Grenze beträgt %d Zeichen).\n"
#: g10/card-util.c:918
msgid "Private DO data: "
msgstr "Geheime DO-Daten: "
#: g10/card-util.c:928
#, c-format
msgid "Error: Private DO too long (limit is %d characters).\n"
msgstr "Fehler: Geheime DO-Daten sind zu lang (Grenze beträgt %d Zeichen).\n"
#: g10/card-util.c:1011
msgid "Language preferences: "
msgstr "Spracheinstellungen"
#: g10/card-util.c:1019
msgid "Error: invalid length of preference string.\n"
msgstr "Fehler: Ungültige Länge der Einstellungs-Zeichenfolge.\n"
#: g10/card-util.c:1028
msgid "Error: invalid characters in preference string.\n"
msgstr "Fehler: Ungültige Zeichen in der Einstellungs-Zeichenfolge\n"
#: g10/card-util.c:1050
msgid "Sex ((M)ale, (F)emale or space): "
msgstr "Geschlecht: (Männlich (M), Weiblich (F) oder Leerzeichen): "
#: g10/card-util.c:1064
msgid "Error: invalid response.\n"
msgstr "Fehler: ungültige Antwort.\n"
#: g10/card-util.c:1086
msgid "CA fingerprint: "
msgstr "CA-Fingerabdruck: "
#: g10/card-util.c:1109
msgid "Error: invalid formatted fingerprint.\n"
msgstr "Fehler: ungültig geformter Fingerabdruck.\n"
#: g10/card-util.c:1159
#, c-format
msgid "key operation not possible: %s\n"
msgstr "Schlüsseloperation nicht möglich: %s\n"
#: g10/card-util.c:1160
msgid "not an OpenPGP card"
msgstr "Keine gültige OpenPGP-Karte"
#: g10/card-util.c:1173
#, c-format
msgid "error getting current key info: %s\n"
msgstr "Fehler beim Holen der aktuellen Schlüsselinfo: %s\n"
#: g10/card-util.c:1260
msgid "Replace existing key? (y/N) "
msgstr "Vorhandenen Schlüssel ersetzen? (j/N) "
#: g10/card-util.c:1276
msgid ""
"NOTE: There is no guarantee that the card supports the requested size.\n"
" If the key generation does not succeed, please check the\n"
" documentation of your card to see what sizes are allowed.\n"
msgstr ""
"Hinweis: Es kann nicht sichergestellt werden, daß die Karte die "
"angeforderte\n"
" Schlüssellänge unterstützt. Sollte die Erzeugung des Schlüssels \n"
" fehlschlagen, so ziehen Sie bitte die Dokumentation Ihrer Karte\n"
" zu Rate.\n"
#: g10/card-util.c:1301
#, c-format
msgid "What keysize do you want for the Signature key? (%u) "
msgstr "Welche Schlüssellänge wünschen Sie für den Signatur-Schlüssel? (%u) "
#: g10/card-util.c:1303
#, c-format
msgid "What keysize do you want for the Encryption key? (%u) "
msgstr ""
"Welche Schlüssellänge wünschen Sie für den Verschlüsselungs-Schlüssel? (%u) "
#: g10/card-util.c:1304
#, c-format
msgid "What keysize do you want for the Authentication key? (%u) "
msgstr ""
"Welche Schlüssellänge wünschen Sie für den Authentisierungs-Schlüssel? (%u) "
#: g10/card-util.c:1315 g10/keygen.c:1703 g10/keygen.c:1709
#: sm/certreqgen-ui.c:194
#, c-format
msgid "rounded up to %u bits\n"
msgstr "aufgerundet auf %u Bit\n"
#: g10/card-util.c:1323 g10/keygen.c:1690 sm/certreqgen-ui.c:184
#, c-format
msgid "%s keysizes must be in the range %u-%u\n"
msgstr "%s-Schlüssellängen müssen im Bereich %u-%u sein\n"
#: g10/card-util.c:1328
#, c-format
msgid "The card will now be re-configured to generate a key of %u bits\n"
msgstr ""
"Die Karte wird nun rekonfiguriert um einen Schlüssel von %u Bit zu erzeugen\n"
#: g10/card-util.c:1348
#, c-format
msgid "error changing size of key %d to %u bits: %s\n"
msgstr "Fehler bem Ändern der Länge des Schlüssels %d auf %u Bit: %s\n"
#: g10/card-util.c:1372
msgid "Make off-card backup of encryption key? (Y/n) "
msgstr ""
"Sicherung des Verschlüsselungsschlüssel außerhalb der Karte erstellen? (J/n) "
#: g10/card-util.c:1386
msgid "NOTE: keys are already stored on the card!\n"
msgstr "ACHTUNG: Auf der Karte sind bereits Schlüssel gespeichert!\n"
#: g10/card-util.c:1389
msgid "Replace existing keys? (y/N) "
msgstr "Vorhandene Schlüssel ersetzen? (j/N) "
#: g10/card-util.c:1401
#, c-format
msgid ""
"Please note that the factory settings of the PINs are\n"
" PIN = `%s' Admin PIN = `%s'\n"
"You should change them using the command --change-pin\n"
msgstr ""
"Bitte beachten: Die Werkseinstellung der PINs sind\n"
" PIN = `%s' Admin-PIN = `%s'\n"
"Sie sollten sie mittels des Befehls --change-pin ändern\n"
#: g10/card-util.c:1457
msgid "Please select the type of key to generate:\n"
msgstr "Bitte wählen Sie die Art des Schlüssel, der erzeugt werden soll:\n"
#: g10/card-util.c:1459
msgid " (1) Signature key\n"
msgstr " (1) Signatur-Schlüssel\n"
#: g10/card-util.c:1460
msgid " (2) Encryption key\n"
msgstr " (2) Verschlüsselungs-Schlüssel\n"
#: g10/card-util.c:1461
msgid " (3) Authentication key\n"
msgstr " (3) Authentisierungs-Schlüssel\n"
#: g10/card-util.c:1477 g10/keyedit.c:975 g10/keygen.c:1493 g10/keygen.c:1521
#: g10/keygen.c:1623 g10/revoke.c:651
msgid "Invalid selection.\n"
msgstr "Ungültige Auswahl.\n"
#: g10/card-util.c:1692 g10/keyedit.c:1450
msgid "quit this menu"
msgstr "Menü verlassen"
#: g10/card-util.c:1694
msgid "show admin commands"
msgstr "Zeige Admin-Befehle"
#: g10/card-util.c:1695 g10/keyedit.c:1453
msgid "show this help"
msgstr "Diese Hilfe zeigen"
#: g10/card-util.c:1697
msgid "list all available data"
msgstr "Alle vorhandenen Daten auflisten"
#: g10/card-util.c:1700
msgid "change card holder's name"
msgstr "Kartenbesitzernamen ändern"
#: g10/card-util.c:1701
msgid "change URL to retrieve key"
msgstr "Schlüssel-holen-URL ändern"
#: g10/card-util.c:1702
msgid "fetch the key specified in the card URL"
msgstr "Holen des Schlüssels mittels der URL auf der Karte"
#: g10/card-util.c:1703
msgid "change the login name"
msgstr "Ändern der Logindaten"
#: g10/card-util.c:1704
msgid "change the language preferences"
msgstr "Ändern der Spracheinstellungen"
#: g10/card-util.c:1705
msgid "change card holder's sex"
msgstr "Ändern des Geschlechts des Kartenbesitzers"
#: g10/card-util.c:1706
msgid "change a CA fingerprint"
msgstr "Ändern des CA-Fingerabdrucks"
#: g10/card-util.c:1707
msgid "toggle the signature force PIN flag"
msgstr "Umschalten des \"Signature-force-PIN\"-Schalters"
#: g10/card-util.c:1708
msgid "generate new keys"
msgstr "neue Schlüssel erzeugen"
#: g10/card-util.c:1709
msgid "menu to change or unblock the PIN"
msgstr "Menü für Ändern oder Entsperren der PIN"
#: g10/card-util.c:1710
msgid "verify the PIN and list all data"
msgstr "überprüfe die PIN und liste alle Daten auf"
#: g10/card-util.c:1711
msgid "unblock the PIN using a Reset Code"
msgstr "die PIN mit dem Rückstellcode wieder freigeben"
#: g10/card-util.c:1833
msgid "gpg/card> "
msgstr "gpg/card> "
#: g10/card-util.c:1874
msgid "Admin-only command\n"
msgstr "nur-Admin Befehl\n"
#: g10/card-util.c:1905
msgid "Admin commands are allowed\n"
msgstr "Admin-Befehle sind erlaubt\n"
#: g10/card-util.c:1907
msgid "Admin commands are not allowed\n"
msgstr "Admin-Befehle sind nicht erlaubt\n"
#: g10/card-util.c:1998 g10/keyedit.c:2350
msgid "Invalid command (try \"help\")\n"
msgstr "Ungültiger Befehl (versuchen Sie's mal mit \"help\")\n"
#: g10/decrypt.c:184 g10/encrypt.c:948
msgid "--output doesn't work for this command\n"
msgstr "--output funktioniert nicht bei diesem Befehl\n"
#: g10/decrypt.c:240 g10/gpg.c:4049 g10/keyring.c:379 g10/keyring.c:690
#, c-format
msgid "can't open `%s'\n"
msgstr "'%s' kann nicht geöffnet werden\n"
#: g10/delkey.c:73 g10/export.c:637 g10/keyedit.c:3514 g10/keyserver.c:1749
#: g10/revoke.c:227
#, c-format
msgid "key \"%s\" not found: %s\n"
msgstr "Schlüssel \"%s\" nicht gefunden: %s\n"
-#: g10/delkey.c:81 g10/export.c:701 g10/getkey.c:2879 g10/keyserver.c:1763
+#: g10/delkey.c:81 g10/export.c:701 g10/getkey.c:2881 g10/keyserver.c:1763
#: g10/revoke.c:233 g10/revoke.c:479
#, c-format
msgid "error reading keyblock: %s\n"
msgstr "Fehler beim Lesen des Schlüsselblocks: %s\n"
#: g10/delkey.c:115 g10/delkey.c:122
msgid "(unless you specify the key by fingerprint)\n"
msgstr "(es sei denn, Sie geben den Schlüssel mittels Fingerprint an)\n"
#: g10/delkey.c:121
msgid "can't do this in batch mode without \"--yes\"\n"
msgstr "dies kann im Batchmodus ohne \"--yes\" nicht durchgeführt werden\n"
#: g10/delkey.c:133
msgid "Delete this key from the keyring? (y/N) "
msgstr "Diesen Schlüssel aus dem Schlüsselbund löschen? (j/N) "
#: g10/delkey.c:141
msgid "This is a secret key! - really delete? (y/N) "
msgstr "Dies ist ein privater Schlüssel! - Wirklich löschen? (j/N) "
#: g10/delkey.c:151
#, c-format
msgid "deleting keyblock failed: %s\n"
msgstr "löschen des Schlüsselblocks fehlgeschlagen: %s\n"
#: g10/delkey.c:161
msgid "ownertrust information cleared\n"
msgstr "Der \"Ownertrust\" wurde gelöscht\n"
#: g10/delkey.c:192
#, c-format
msgid "there is a secret key for public key \"%s\"!\n"
msgstr ""
"Es gibt einen privaten Schlüssel zu diesem öffentlichen Schlüssel \"%s\"!\n"
#: g10/delkey.c:194
msgid "use option \"--delete-secret-keys\" to delete it first.\n"
msgstr ""
"Verwenden Sie zunächst den Befehl \"--delete-secret-key\", um ihn zu "
"entfernen.\n"
-#: g10/encrypt.c:232 g10/sign.c:1303
+#: g10/encrypt.c:232 g10/sign.c:1342
#, c-format
msgid "error creating passphrase: %s\n"
msgstr "Fehler beim Erzeugen der Passphrase: %s\n"
#: g10/encrypt.c:239
msgid "can't use a symmetric ESK packet due to the S2K mode\n"
msgstr ""
"Aufgrund des S2K-Modus kann ein symmetrisches ESK Paket nicht benutzt "
"werden\n"
#: g10/encrypt.c:253
#, c-format
msgid "using cipher %s\n"
msgstr "benutze Cipher %s\n"
#: g10/encrypt.c:263 g10/encrypt.c:627
#, c-format
msgid "`%s' already compressed\n"
msgstr "`%s' ist bereits komprimiert\n"
-#: g10/encrypt.c:320 g10/encrypt.c:662 g10/sign.c:588
+#: g10/encrypt.c:320 g10/encrypt.c:662 g10/sign.c:627
#, c-format
msgid "WARNING: `%s' is an empty file\n"
msgstr "WARNUNG: '%s' ist eine leere Datei.\n"
#: g10/encrypt.c:519
msgid "you can only encrypt to RSA keys of 2048 bits or less in --pgp2 mode\n"
msgstr ""
"Im --pgp2-Modus kann nur für RSA-Schlüssel mit maximal 2048 Bit "
"verschlüsselt werden\n"
#: g10/encrypt.c:553
#, c-format
msgid "reading from `%s'\n"
msgstr "Lesen von '%s'\n"
#: g10/encrypt.c:588
msgid ""
"unable to use the IDEA cipher for all of the keys you are encrypting to.\n"
msgstr ""
"Die IDEA-Verschlüsselung kann nicht mit allen Zielschlüsseln verwendet "
"werden.\n"
#: g10/encrypt.c:608
#, c-format
msgid ""
"WARNING: forcing symmetric cipher %s (%d) violates recipient preferences\n"
msgstr ""
"WARNUNG: Erzwungene Verwendung des symmetrischen Verschlüsselungsverfahren %"
"s (%d) verletzt die Empfängervoreinstellungen\n"
-#: g10/encrypt.c:709 g10/sign.c:969
+#: g10/encrypt.c:709 g10/sign.c:1008
#, c-format
msgid ""
"WARNING: forcing compression algorithm %s (%d) violates recipient "
"preferences\n"
msgstr ""
"WARNUNG: Erzwungenes Kompressionsverfahren %s (%d) verletzt die "
"Empfängervoreinstellungen.\n"
#: g10/encrypt.c:819
#, c-format
msgid "forcing symmetric cipher %s (%d) violates recipient preferences\n"
msgstr ""
"Erzwungene Verwendung des symmetrischen Verschlüsselungsverfahren %s (%d) "
"verletzt die Empfängervoreinstellungen\n"
#: g10/encrypt.c:890 g10/pkclist.c:916 g10/pkclist.c:965
#, c-format
msgid "you may not use %s while in %s mode\n"
msgstr "Die Benutzung von %s ist im %s-Modus nicht erlaubt.\n"
#: g10/encrypt.c:918
#, c-format
msgid "%s/%s encrypted for: \"%s\"\n"
msgstr "%s/%s verschlüsselt für: %s\n"
#: g10/decrypt-data.c:94 g10/mainproc.c:286
#, c-format
msgid "%s encrypted data\n"
msgstr "%s verschlüsselte Daten\n"
#: g10/decrypt-data.c:97 g10/mainproc.c:290
#, c-format
msgid "encrypted with unknown algorithm %d\n"
msgstr "Mit unbekanntem Verfahren verschlüsselt %d\n"
#: g10/decrypt-data.c:135 sm/decrypt.c:127
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/decrypt-data.c:147
msgid "problem handling encrypted packet\n"
msgstr "Problem beim Bearbeiten des verschlüsselten Pakets\n"
#: g10/exec.c:57
msgid "no remote program execution supported\n"
msgstr "Ausführen von externen Programmen wird nicht unterstützt\n"
#: g10/exec.c:316
msgid ""
"external program calls are disabled due to unsafe options file permissions\n"
msgstr ""
"Ausführen von externen Programmen ist ausgeschaltet, da die Dateirechte "
"nicht sicher sind\n"
#: g10/exec.c:346
msgid "this platform requires temporary files when calling external programs\n"
msgstr ""
"Diese Plattform benötigt temporäre Dateien zur Ausführung von externen\n"
"Programmen\n"
#: g10/exec.c:424
#, c-format
msgid "unable to execute program `%s': %s\n"
msgstr "Ausführen des Programms `%s' nicht möglich: %s\n"
#: g10/exec.c:427
#, c-format
msgid "unable to execute shell `%s': %s\n"
msgstr "Ausführen der Shell `%s' nicht möglich: %s\n"
#: g10/exec.c:518
#, c-format
msgid "system error while calling external program: %s\n"
msgstr "Fehler beim Aufruf eines externen Programms: %s\n"
#: g10/exec.c:529 g10/exec.c:596
msgid "unnatural exit of external program\n"
msgstr "ungewöhnliches Ende eines externen Programms\n"
#: g10/exec.c:544
msgid "unable to execute external program\n"
msgstr "Externes Programm konnte nicht aufgerufen werden\n"
#: g10/exec.c:561
#, c-format
msgid "unable to read external program response: %s\n"
msgstr "Die Ausgabe des externen Programms konnte nicht gelesen werden: %s\n"
#: g10/exec.c:607 g10/exec.c:614
#, c-format
msgid "WARNING: unable to remove tempfile (%s) `%s': %s\n"
msgstr ""
"WARNUNG: die temporäre Datei (%s) `%s' konnte nicht entfernt werden: %s\n"
#: g10/exec.c:619
#, c-format
msgid "WARNING: unable to remove temp directory `%s': %s\n"
msgstr "WARNUNG: Temporäres Verzeichnis `%s' kann nicht entfernt werden: %s\n"
#: g10/export.c:63
msgid "export signatures that are marked as local-only"
msgstr "Exportiere auch Signaturen die als nicht exportfähig markiert sind"
#: g10/export.c:65
msgid "export attribute user IDs (generally photo IDs)"
msgstr "Exportiere Attribute von User-IDs (i.A. Foto-IDs)"
#: g10/export.c:67
msgid "export revocation keys marked as \"sensitive\""
msgstr "Exportiere Widerrufsschlüssel die als \"sensitiv\" markiert sind"
#: g10/export.c:69
msgid "remove unusable parts from key during export"
msgstr "Unbrauchbare Teile des Schlüssel während des Exports entfernen"
#: g10/export.c:71
msgid "remove as much as possible from key during export"
msgstr "Während des Exports soviel wie möglich vom Schlüssel entfernen"
#: g10/export.c:73
msgid "export keys in an S-expression based format"
msgstr "Exportiere Schlüssel in einem auf S-Ausdrücken basierenden Format"
#: g10/export.c:652
msgid "exporting secret keys not allowed\n"
msgstr "Exportieren geheimer Schlüssel ist nicht erlaubt\n"
#: g10/export.c:725
#, c-format
msgid "key %s: PGP 2.x style key - skipped\n"
msgstr "Schlüssel %s: PGP 2.x-artiger Schlüssel - übersprungen\n"
#: g10/export.c:909
#, c-format
msgid "key %s: key material on-card - skipped\n"
msgstr "Schlüssel %s: Schlüsselmaterial ist auf einer Karte - übersprungen\n"
#: g10/export.c:1008
msgid " - skipped"
msgstr " - übersprungen"
#: g10/export.c:1079
msgid "WARNING: nothing exported\n"
msgstr "WARNUNG: Nichts exportiert\n"
#: g10/getkey.c:161
msgid "too many entries in pk cache - disabled\n"
msgstr "zu viele Einträge im pk-Cache - abgeschaltet\n"
#: g10/getkey.c:184
msgid "[User ID not found]"
msgstr "[User-ID nicht gefunden]"
#: g10/getkey.c:872
#, c-format
msgid "automatically retrieved `%s' via %s\n"
msgstr "`%s' automatisch via %s geholt\n"
#: g10/getkey.c:877
#, c-format
msgid "error retrieving `%s' via %s: %s\n"
msgstr "Fehler beim automatischen holen von `%s' über `%s': %s\n"
#: g10/getkey.c:879
msgid "No fingerprint"
msgstr "Kein Fingerabdruck vorhanden"
-#: g10/getkey.c:1670
+#: g10/getkey.c:1672
#, c-format
msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n"
msgstr ""
"Ungültiger Schlüssel %s, gültig gemacht per --allow-non-selfsigned-uid\n"
-#: g10/getkey.c:2427
+#: g10/getkey.c:2429
#, c-format
msgid "using subkey %s instead of primary key %s\n"
msgstr "der Unterschlüssel %s wird anstelle des Hauptschlüssels %s verwendet\n"
-#: g10/getkey.c:3021
+#: g10/getkey.c:3023
#, c-format
msgid "no secret subkey for public subkey %s - ignoring\n"
msgstr ""
"Kein privater Unterschlüssel zum öffentlichen Unterschlüssel %s - ignoriert\n"
#: g10/gpg.c:378 sm/gpgsm.c:189
msgid "make a signature"
msgstr "Eine Signatur erzeugen"
#: g10/gpg.c:379 sm/gpgsm.c:190
msgid "make a clear text signature"
msgstr "Eine Klartextsignatur erzeugen"
#: g10/gpg.c:380 sm/gpgsm.c:191
msgid "make a detached signature"
msgstr "Eine abgetrennte Signatur erzeugen"
#: g10/gpg.c:381 sm/gpgsm.c:192
msgid "encrypt data"
msgstr "Daten verschlüsseln"
#: g10/gpg.c:383 sm/gpgsm.c:193
msgid "encryption only with symmetric cipher"
msgstr "Daten symmetrisch verschlüsseln"
#: g10/gpg.c:385 sm/gpgsm.c:194
msgid "decrypt data (default)"
msgstr "Daten entschlüsseln (Voreinstellung)"
#: g10/gpg.c:387 sm/gpgsm.c:195
msgid "verify a signature"
msgstr "Signatur prüfen"
#: g10/gpg.c:389 sm/gpgsm.c:196
msgid "list keys"
msgstr "Liste der Schlüssel"
#: g10/gpg.c:391
msgid "list keys and signatures"
msgstr "Liste der Schlüssel und ihrer Signaturen"
#: g10/gpg.c:392
msgid "list and check key signatures"
msgstr "Signaturen der Schlüssel auflisten und prüfen"
#: g10/gpg.c:393 sm/gpgsm.c:201
msgid "list keys and fingerprints"
msgstr "Liste der Schlüssel und ihrer \"Fingerabdrücke\""
#: g10/gpg.c:394 sm/gpgsm.c:199
msgid "list secret keys"
msgstr "Liste der geheimen Schlüssel"
#: g10/gpg.c:395 sm/gpgsm.c:202
msgid "generate a new key pair"
msgstr "Ein neues Schlüsselpaar erzeugen"
#: g10/gpg.c:396
msgid "generate a revocation certificate"
msgstr "Ein Schlüsselwiderruf-Zertifikat erzeugen"
#: g10/gpg.c:398 sm/gpgsm.c:204
msgid "remove keys from the public keyring"
msgstr "Schlüssel aus dem öff. Schlüsselbund entfernen"
#: g10/gpg.c:400
msgid "remove keys from the secret keyring"
msgstr "Schlüssel aus dem geh. Schlüsselbund entfernen"
#: g10/gpg.c:401
msgid "sign a key"
msgstr "Schlüssel signieren"
#: g10/gpg.c:402
msgid "sign a key locally"
msgstr "Schlüssel nur für diesen Rechner signieren"
#: g10/gpg.c:403
msgid "sign or edit a key"
msgstr "Signieren oder bearbeiten eines Schlüssels"
#: g10/gpg.c:405 sm/gpgsm.c:216
msgid "change a passphrase"
msgstr "Die Passphrase ändern"
#: g10/gpg.c:407
msgid "export keys"
msgstr "Schlüssel exportieren"
#: g10/gpg.c:408 sm/gpgsm.c:205
msgid "export keys to a key server"
msgstr "Schlüssel zu einem Schlü.server exportieren"
#: g10/gpg.c:409 sm/gpgsm.c:206
msgid "import keys from a key server"
msgstr "Schlüssel von einem Schlü.server importieren"
#: g10/gpg.c:411
msgid "search for keys on a key server"
msgstr "Schlüssel auf einem Schlü.server suchen"
#: g10/gpg.c:413
msgid "update all keys from a keyserver"
msgstr "alle Schlüssel per Schlü.server aktualisieren"
#: g10/gpg.c:418
msgid "import/merge keys"
msgstr "Schlüssel importieren/kombinieren"
#: g10/gpg.c:421
msgid "print the card status"
msgstr "den Karten-Status ausgeben"
#: g10/gpg.c:422
msgid "change data on a card"
msgstr "Daten auf einer Karte ändern"
#: g10/gpg.c:423
msgid "change a card's PIN"
msgstr "PIN einer Karte ändern"
#: g10/gpg.c:432
msgid "update the trust database"
msgstr "Ändern der \"Trust\"-Datenbank"
#: g10/gpg.c:439
msgid "print message digests"
msgstr "Hashwerte für die Dateien ausgeben"
#: g10/gpg.c:442 sm/gpgsm.c:211
msgid "run in server mode"
msgstr "Im Server Modus ausführen"
#: g10/gpg.c:446 sm/gpgsm.c:229
msgid "create ascii armored output"
msgstr "Ausgabe mit ASCII-Hülle versehen"
#: g10/gpg.c:449 sm/gpgsm.c:242
msgid "|USER-ID|encrypt for USER-ID"
msgstr "|USER-ID|Verschlüsseln für USER-ID"
#: g10/gpg.c:462 sm/gpgsm.c:278
msgid "|USER-ID|use USER-ID to sign or decrypt"
msgstr "|USER-ID|Mit USER-ID signieren bzw. entschlüsseln"
#: g10/gpg.c:467
msgid "|N|set compress level to N (0 disables)"
msgstr "|N|Kompressionsstufe auf N setzen (0=keine)"
#: g10/gpg.c:473
msgid "use canonical text mode"
msgstr "Textmodus benutzen"
#: g10/gpg.c:490 sm/gpgsm.c:280
msgid "|FILE|write output to FILE"
msgstr "|DATEI|Ausgabe auf DATEI schreiben"
#: g10/gpg.c:506 kbx/kbxutil.c:90 sm/gpgsm.c:292 tools/gpgconf.c:81
msgid "do not make any changes"
msgstr "Keine wirklichen Änderungen durchführen"
#: g10/gpg.c:507
msgid "prompt before overwriting"
msgstr "vor Überschreiben nachfragen"
#: g10/gpg.c:559
msgid "use strict OpenPGP behavior"
msgstr "OpenPGP-Verhalten strikt beachten"
#: g10/gpg.c:589 sm/gpgsm.c:336
msgid ""
"@\n"
"(See the man page for a complete listing of all commands and options)\n"
msgstr ""
"@\n"
"(Auf der \"man\"-Seite ist eine vollständige Liste aller Befehle und "
"Optionen)\n"
#: g10/gpg.c:592 sm/gpgsm.c:339
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/gpg.c:842
msgid "Usage: gpg [options] [files] (-h for help)"
msgstr "Aufruf: gpg [Optionen] [Dateien] (-h für Hilfe)"
#: g10/gpg.c:845
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/gpg.c:856 sm/gpgsm.c:553
msgid ""
"\n"
"Supported algorithms:\n"
msgstr ""
"\n"
"Unterstützte Verfahren:\n"
#: g10/gpg.c:859
msgid "Pubkey: "
msgstr "Öff. Schlüssel: "
#: g10/gpg.c:866 g10/keyedit.c:2484
msgid "Cipher: "
msgstr "Verschlü.: "
#: g10/gpg.c:873
msgid "Hash: "
msgstr "Hash: "
#: g10/gpg.c:880 g10/keyedit.c:2533
msgid "Compression: "
msgstr "Komprimierung: "
#: g10/gpg.c:950
msgid "usage: gpg [options] "
msgstr "Aufruf: gpg [Optionen] "
#: g10/gpg.c:1164 sm/gpgsm.c:726
msgid "conflicting commands\n"
msgstr "Widersprüchliche Befehle\n"
#: g10/gpg.c:1182
#, c-format
msgid "no = sign found in group definition `%s'\n"
msgstr "Kein '='-Zeichen in der Gruppendefinition gefunden `%s'\n"
#: g10/gpg.c:1379
#, c-format
msgid "WARNING: unsafe ownership on homedir `%s'\n"
msgstr "WARNUNG: Unsicheres Besitzverhältnis des Home-Verzeichnis `%s'\n"
#: g10/gpg.c:1382
#, c-format
msgid "WARNING: unsafe ownership on configuration file `%s'\n"
msgstr "WARNUNG: Unsicheres Besitzverhältnis der Konfigurationsdatei `%s'\n"
#: g10/gpg.c:1385
#, c-format
msgid "WARNING: unsafe ownership on extension `%s'\n"
msgstr "WARNUNG: Unsicheres Besitzverhältnis auf die Erweiterung `%s'\n"
#: g10/gpg.c:1391
#, c-format
msgid "WARNING: unsafe permissions on homedir `%s'\n"
msgstr "WARNUNG: Unsichere Zugriffsrechte des Home-Verzeichnis `%s'\n"
#: g10/gpg.c:1394
#, c-format
msgid "WARNING: unsafe permissions on configuration file `%s'\n"
msgstr "WARNUNG: Unsichere Zugriffsrechte der Konfigurationsdatei `%s'\n"
#: g10/gpg.c:1397
#, c-format
msgid "WARNING: unsafe permissions on extension `%s'\n"
msgstr "WARNUNG: Unsichere Zugriffsrechte auf die Erweiterung `%s'\n"
#: g10/gpg.c:1403
#, c-format
msgid "WARNING: unsafe enclosing directory ownership on homedir `%s'\n"
msgstr ""
"WARNUNG: Unsicheres Besitzverhältnis des umgebenden Verzeichnisses für Home-"
"Verzeichnis `%s'\n"
#: g10/gpg.c:1406
#, c-format
msgid ""
"WARNING: unsafe enclosing directory ownership on configuration file `%s'\n"
msgstr ""
"WARNUNG: Unsicheres Besitzverhältnis des umgebenden Verzeichnisses der "
"Konfigurationsdatei `%s'\n"
#: g10/gpg.c:1409
#, c-format
msgid "WARNING: unsafe enclosing directory ownership on extension `%s'\n"
msgstr ""
"WARNUNG: Unsicheres Besitzverhältnis des umgebenden Verzeichnisses `%s'\n"
#: g10/gpg.c:1415
#, c-format
msgid "WARNING: unsafe enclosing directory permissions on homedir `%s'\n"
msgstr ""
"WARNUNG: Unsichere Zugriffsrechte des umgebenden Verzeichnisses des Home-"
"Verzeichnisses `%s'\n"
#: g10/gpg.c:1418
#, c-format
msgid ""
"WARNING: unsafe enclosing directory permissions on configuration file `%s'\n"
msgstr ""
"WARNUNG: Unsichere Zugriffsrechte des umgebenden Verzeichnisses der "
"Konfigurationsdatei `%s'\n"
#: g10/gpg.c:1421
#, c-format
msgid "WARNING: unsafe enclosing directory permissions on extension `%s'\n"
msgstr ""
"WARNUNG: Unsichere Zugriffsrechte des umgebenden Verzeichnisses auf "
"Erweiterung `%s'\n"
#: g10/gpg.c:1604
#, c-format
msgid "unknown configuration item `%s'\n"
msgstr "Unbekanntes Konfigurationselement `%s'\n"
#: g10/gpg.c:1710
msgid "display photo IDs during key listings"
msgstr "Anzeigen der Foto-ID in den Schlüssellisten"
#: g10/gpg.c:1712
msgid "show policy URLs during signature listings"
msgstr "Zeige Richtlinien-URL während des listens der Signaturen"
#: g10/gpg.c:1714
msgid "show all notations during signature listings"
msgstr "Alle Notationen mit den Signaturen anlisten"
#: g10/gpg.c:1716
msgid "show IETF standard notations during signature listings"
msgstr "Zeige IETF-Standard"
#: g10/gpg.c:1720
msgid "show user-supplied notations during signature listings"
msgstr "Zeige Benutzer-Notationen während des listens der Signaturen"
#: g10/gpg.c:1722
msgid "show preferred keyserver URLs during signature listings"
msgstr "Der bevorzugten Schlüsselserver mit den Signaturen anlisten"
#: g10/gpg.c:1724
msgid "show user ID validity during key listings"
msgstr "Zeige Gültigkeit der User-ID in den Schlüssellisten"
#: g10/gpg.c:1726
msgid "show revoked and expired user IDs in key listings"
msgstr "Zeige widerrufene und verfallene User-ID in den Schlüssellisten"
#: g10/gpg.c:1728
msgid "show revoked and expired subkeys in key listings"
msgstr "Zeige widerrufene und verfallene Unterschlüssel in den Schlüssellisten"
#: g10/gpg.c:1730
msgid "show the keyring name in key listings"
msgstr "Anzeigen des Schlüsselbundes, in dem ein Schlüssel drin ist"
#: g10/gpg.c:1732
msgid "show expiration dates during signature listings"
msgstr "Das Ablaufdatum mit den Signaturen anlisten"
#: g10/gpg.c:1866
#, c-format
msgid "NOTE: old default options file `%s' ignored\n"
msgstr "Hinweis: Alte voreingestellte Optionendatei '%s' wurde ignoriert\n"
#: g10/gpg.c:1957
#, c-format
msgid "libgcrypt is too old (need %s, have %s)\n"
msgstr ""
"Die Bibliothek \"libgcrypt\" ist zu alt (benötigt wird %s, vorhanden ist %"
"s)\n"
#: g10/gpg.c:2359 g10/gpg.c:3065 g10/gpg.c:3077
#, c-format
msgid "NOTE: %s is not for normal use!\n"
msgstr "Hinweis: %s ist nicht für den üblichen Gebrauch gedacht!\n"
#: g10/gpg.c:2548 g10/gpg.c:2560
#, c-format
msgid "`%s' is not a valid signature expiration\n"
msgstr "`%s' ist kein gültiges Signaturablaufdatum\n"
#: g10/gpg.c:2642
#, c-format
msgid "`%s' is not a valid character set\n"
msgstr "`%s' ist kein gültiger Zeichensatz\n"
#: g10/gpg.c:2665 g10/gpg.c:2860 g10/keyedit.c:4110
msgid "could not parse keyserver URL\n"
msgstr "Schlüsselserver-URL konnte nicht analysiert werden\n"
#: g10/gpg.c:2677
#, c-format
msgid "%s:%d: invalid keyserver options\n"
msgstr "%s:%d: ungültige Schlüsselserver-Option\n"
#: g10/gpg.c:2680
msgid "invalid keyserver options\n"
msgstr "Ungültige Schlüsselserver-Option\n"
#: g10/gpg.c:2687
#, c-format
msgid "%s:%d: invalid import options\n"
msgstr "%s:%d: ungültige Import-Option\n"
#: g10/gpg.c:2690
msgid "invalid import options\n"
msgstr "Ungültige Import-Option\n"
#: g10/gpg.c:2697
#, c-format
msgid "%s:%d: invalid export options\n"
msgstr "%s:%d: ungültige Export-Option.\n"
#: g10/gpg.c:2700
msgid "invalid export options\n"
msgstr "Ungültige Export-Option\n"
#: g10/gpg.c:2707
#, c-format
msgid "%s:%d: invalid list options\n"
msgstr "%s:%d: ungültige Listen-Option.\n"
#: g10/gpg.c:2710
msgid "invalid list options\n"
msgstr "Ungültige Listen-Option\n"
#: g10/gpg.c:2718
msgid "display photo IDs during signature verification"
msgstr "Foto-ID während der Signaturprüfung anzeigen"
#: g10/gpg.c:2720
msgid "show policy URLs during signature verification"
msgstr "Richtlinien-URLs während der Signaturprüfung anzeigen"
#: g10/gpg.c:2722
msgid "show all notations during signature verification"
msgstr "Alle Notationen während der Signaturprüfung anzeigen"
#: g10/gpg.c:2724
msgid "show IETF standard notations during signature verification"
msgstr "Standard-Notationen während der Signaturprüfung anzeigen"
#: g10/gpg.c:2728
msgid "show user-supplied notations during signature verification"
msgstr "Benutzer-Notationen während der Signaturprüfung anzeigen"
#: g10/gpg.c:2730
msgid "show preferred keyserver URLs during signature verification"
msgstr ""
"Die URL für den bevorzugten Schlüsselserver während der Signaturprüfung "
"anzeigen"
#: g10/gpg.c:2732
msgid "show user ID validity during signature verification"
msgstr "Die Gültigkeit der User-ID während der Signaturprüfung anzeigen"
#: g10/gpg.c:2734
msgid "show revoked and expired user IDs in signature verification"
msgstr "Zeige widerrufene und verfallene User-IDs während der Signaturprüfung"
#: g10/gpg.c:2736
msgid "show only the primary user ID in signature verification"
msgstr "Zeige nur die Haupt-User-ID während der Signaturprüfung"
#: g10/gpg.c:2738
msgid "validate signatures with PKA data"
msgstr "Prüfe Signaturgültigkeit mittels PKA-Daten"
#: g10/gpg.c:2740
msgid "elevate the trust of signatures with valid PKA data"
msgstr "Werte das Vertrauen zu Signaturen durch gültige PKA-Daten auf"
#: g10/gpg.c:2747
#, c-format
msgid "%s:%d: invalid verify options\n"
msgstr "%s:%d: ungültige Überprüfungs-Option.\n"
#: g10/gpg.c:2750
msgid "invalid verify options\n"
msgstr "Ungültige Überprüfungs-Option\n"
#: g10/gpg.c:2757
#, c-format
msgid "unable to set exec-path to %s\n"
msgstr "Der Ausführungspfad konnte nicht auf %s gesetzt werden.\n"
#: g10/gpg.c:2943
#, c-format
msgid "%s:%d: invalid auto-key-locate list\n"
msgstr "%s:%d: ungültige \"auto-key-locate\"-Liste\n"
#: g10/gpg.c:2946
msgid "invalid auto-key-locate list\n"
msgstr "ungültige \"auto-key-locate\"-Liste\n"
#: g10/gpg.c:3054 sm/gpgsm.c:1452
msgid "WARNING: program may create a core file!\n"
msgstr "WARNUNG: Programm könnte eine core-dump-Datei schreiben!\n"
#: g10/gpg.c:3058
#, c-format
msgid "WARNING: %s overrides %s\n"
msgstr "WARNUNG: %s ersetzt %s\n"
#: g10/gpg.c:3067
#, c-format
msgid "%s not allowed with %s!\n"
msgstr "%s kann nicht zusammen mit %s verwendet werden!\n"
#: g10/gpg.c:3070
#, c-format
msgid "%s makes no sense with %s!\n"
msgstr "%s zusammen mit %s ist nicht sinnvoll!\n"
-#: g10/gpg.c:3085 sm/gpgsm.c:1469
+#: g10/gpg.c:3085 sm/gpgsm.c:1469 dirmngr/dirmngr.c:863
msgid "WARNING: running with faked system time: "
msgstr "WARNUNG: Ausführung mit gefälschter Systemzeit: "
#: g10/gpg.c:3096
#, c-format
msgid "will not run with insecure memory due to %s\n"
msgstr "Startet nicht mit unsicherem Speicher, wegen Option %s\n"
#: g10/gpg.c:3110
msgid "you can only make detached or clear signatures while in --pgp2 mode\n"
msgstr ""
"Im --pgp2-Modus können Sie nur abgetrennte oder Klartextsignaturen machen\n"
#: g10/gpg.c:3116
msgid "you can't sign and encrypt at the same time while in --pgp2 mode\n"
msgstr ""
"Im --pgp2-Modus können Sie nicht gleichzeitig signieren und verschlüsseln\n"
#: g10/gpg.c:3122
msgid "you must use files (and not a pipe) when working with --pgp2 enabled.\n"
msgstr ""
"Im --pgp2-Modus müssen Sie Dateien benutzen und können keine Pipes "
"verwenden.\n"
#: g10/gpg.c:3135
msgid "encrypting a message in --pgp2 mode requires the IDEA cipher\n"
msgstr ""
"Verschlüsseln einer Botschaft benötigt im --pgp2-Modus die IDEA-"
"Verschlüsselung\n"
#: g10/gpg.c:3202 g10/gpg.c:3226 sm/gpgsm.c:1524
msgid "selected cipher algorithm is invalid\n"
msgstr "Das ausgewählte Verschlüsselungsverfahren ist ungültig\n"
#: g10/gpg.c:3208 g10/gpg.c:3232 sm/gpgsm.c:1530 sm/gpgsm.c:1536
msgid "selected digest algorithm is invalid\n"
msgstr "Das ausgewählte Hashverfahren ist ungültig\n"
#: g10/gpg.c:3214
msgid "selected compression algorithm is invalid\n"
msgstr "Das ausgewählte Komprimierungsverfahren ist ungültig\n"
#: g10/gpg.c:3220
msgid "selected certification digest algorithm is invalid\n"
msgstr "Das ausgewählte Hashverfahren ist ungültig\n"
#: g10/gpg.c:3235
msgid "completes-needed must be greater than 0\n"
msgstr "completes-needed müssen größer als 0 sein\n"
#: g10/gpg.c:3237
msgid "marginals-needed must be greater than 1\n"
msgstr "marginals-needed müssen größer als 1 sein\n"
#: g10/gpg.c:3239
msgid "max-cert-depth must be in the range from 1 to 255\n"
msgstr "max-cert-depth muß im Bereich 1 bis 255 liegen\n"
#: g10/gpg.c:3241
msgid "invalid default-cert-level; must be 0, 1, 2, or 3\n"
msgstr "ungültiger \"default-cert-level\"; Wert muß 0, 1, 2 oder 3 sein\n"
#: g10/gpg.c:3243
msgid "invalid min-cert-level; must be 1, 2, or 3\n"
msgstr "ungültiger \"min-cert-level\"; Wert muß 0, 1, 2 oder 3 sein\n"
#: g10/gpg.c:3246
msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
msgstr "Hinweis: Vom \"simple S2K\"-Modus (0) ist strikt abzuraten\n"
#: g10/gpg.c:3250
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/gpg.c:3257
msgid "invalid default preferences\n"
msgstr "ungültige Standard-Voreinstellungen\n"
#: g10/gpg.c:3261
msgid "invalid personal cipher preferences\n"
msgstr "ungültige private Verschlüsselungsvoreinstellungen\n"
#: g10/gpg.c:3265
msgid "invalid personal digest preferences\n"
msgstr "ungültige private Hashvoreinstellungen\n"
#: g10/gpg.c:3269
msgid "invalid personal compress preferences\n"
msgstr "ungültige private Komprimierungsvoreinstellungen\n"
#: g10/gpg.c:3302
#, c-format
msgid "%s does not yet work with %s\n"
msgstr "%s arbeitet noch nicht mit %s zusammen\n"
#: g10/gpg.c:3349
#, c-format
msgid "you may not use cipher algorithm `%s' while in %s mode\n"
msgstr ""
"Die Benutzung des Verschlüsselungsverfahren %s ist im %s-Modus nicht "
"erlaubt.\n"
#: g10/gpg.c:3354
#, c-format
msgid "you may not use digest algorithm `%s' while in %s mode\n"
msgstr "Die Benutzung der Hashmethode %s ist im %s-Modus nicht erlaubt.\n"
#: g10/gpg.c:3359
#, c-format
msgid "you may not use compression algorithm `%s' while in %s mode\n"
msgstr ""
"Die Benutzung des Komprimierverfahren %s ist im %s-Modus nicht erlaubt.\n"
#: g10/gpg.c:3438
#, c-format
msgid "failed to initialize the TrustDB: %s\n"
msgstr "Die Trust-DB kann nicht initialisiert werden: %s\n"
#: g10/gpg.c:3449
msgid "WARNING: recipients (-r) given without using public key encryption\n"
msgstr ""
"WARNUNG: Empfänger (-r) angegeben ohne Verwendung von Public-Key-Verfahren\n"
#: g10/gpg.c:3464
msgid "--store [filename]"
msgstr "--store [Dateiname]"
#: g10/gpg.c:3471
msgid "--symmetric [filename]"
msgstr "--symmetric [Dateiname]"
#: g10/gpg.c:3473
#, c-format
msgid "symmetric encryption of `%s' failed: %s\n"
msgstr "Symmetrische Entschlüsselung von `%s' fehlgeschlagen: %s\n"
#: g10/gpg.c:3483
msgid "--encrypt [filename]"
msgstr "--encrypt [Dateiname]"
#: g10/gpg.c:3496
msgid "--symmetric --encrypt [filename]"
msgstr "--symmetric --encrypt [Dateiname]"
#: g10/gpg.c:3498
msgid "you cannot use --symmetric --encrypt with --s2k-mode 0\n"
msgstr ""
"--symmetric --encrypt kann nicht zusammen mit --s2k-mode 0 verwendet werden\n"
#: g10/gpg.c:3501
#, c-format
msgid "you cannot use --symmetric --encrypt while in %s mode\n"
msgstr "Im %s-Modus kann --symmetric --encrypt nicht verwendet werden.\n"
#: g10/gpg.c:3519
msgid "--sign [filename]"
msgstr "--sign [Dateiname]"
#: g10/gpg.c:3532
msgid "--sign --encrypt [filename]"
msgstr "--sign --encrypt [Dateiname]"
#: g10/gpg.c:3547
msgid "--symmetric --sign --encrypt [filename]"
msgstr "--symmetric --sign --encrypt [Dateiname]"
#: g10/gpg.c:3549
msgid "you cannot use --symmetric --sign --encrypt with --s2k-mode 0\n"
msgstr ""
"--symmetric --sign --encrypt kann nicht zusammen mit --s2k-mode 0 verwendet "
"werden\n"
#: g10/gpg.c:3552
#, c-format
msgid "you cannot use --symmetric --sign --encrypt while in %s mode\n"
msgstr ""
"Im %s-Modus kann --symmetric --sign --encrypt nicht verwendet werden.\n"
#: g10/gpg.c:3573
msgid "--sign --symmetric [filename]"
msgstr "--sign --symmetric [Dateiname]"
#: g10/gpg.c:3582
msgid "--clearsign [filename]"
msgstr "--clearsign [Dateiname]"
#: g10/gpg.c:3607
msgid "--decrypt [filename]"
msgstr "--decrypt [Dateiname]"
#: g10/gpg.c:3615
msgid "--sign-key user-id"
msgstr "--sign-key User-ID"
#: g10/gpg.c:3619
msgid "--lsign-key user-id"
msgstr "--lsign-key User-ID"
#: g10/gpg.c:3640
msgid "--edit-key user-id [commands]"
msgstr "--edit-key User-ID [Befehle]"
#: g10/gpg.c:3656
msgid "--passwd <user-id>"
msgstr "--passwd User-ID"
#: g10/gpg.c:3743
#, c-format
msgid "keyserver send failed: %s\n"
msgstr "Senden an Schlüsselserver fehlgeschlagen: %s\n"
#: g10/gpg.c:3745
#, c-format
msgid "keyserver receive failed: %s\n"
msgstr "Empfangen vom Schlüsselserver fehlgeschlagen: %s\n"
#: g10/gpg.c:3747
#, c-format
msgid "key export failed: %s\n"
msgstr "Schlüsselexport fehlgeschlagen: %s\n"
#: g10/gpg.c:3758
#, c-format
msgid "keyserver search failed: %s\n"
msgstr "Suche auf dem Schlüsselserver fehlgeschlagen: %s\n"
#: g10/gpg.c:3768
#, c-format
msgid "keyserver refresh failed: %s\n"
msgstr "Refresh vom Schlüsselserver fehlgeschlagen: %s\n"
#: g10/gpg.c:3819
#, c-format
msgid "dearmoring failed: %s\n"
msgstr "Entfernen der ASCII-Hülle ist fehlgeschlagen: %s\n"
#: g10/gpg.c:3827
#, c-format
msgid "enarmoring failed: %s\n"
msgstr "Anbringen der ASCII-Hülle ist fehlgeschlagen: %s\n"
#: g10/gpg.c:3918
#, c-format
msgid "invalid hash algorithm `%s'\n"
msgstr "Ungültiges Hashverfahren '%s'\n"
#: g10/gpg.c:4033
msgid "[filename]"
msgstr "[Dateiname]"
#: g10/gpg.c:4039
msgid "Go ahead and type your message ...\n"
msgstr "Auf geht's - Botschaft eintippen ...\n"
#: g10/gpg.c:4356
msgid "the given certification policy URL is invalid\n"
msgstr "Die angegebene Zertifikat-Richtlinien-URL ist ungültig\n"
#: g10/gpg.c:4358
msgid "the given signature policy URL is invalid\n"
msgstr "Die angegebene Signatur-Richtlinien-URL ist ungültig\n"
#: g10/gpg.c:4391
msgid "the given preferred keyserver URL is invalid\n"
msgstr "Die angegebene URL des bevorzugten Schlüsselserver ist ungültig\n"
#: g10/gpgv.c:74
msgid "|FILE|take the keys from the keyring FILE"
msgstr "|DATEI|Schlüssel aus der Schlüsselbund DATEI nehmen"
#: g10/gpgv.c:76
msgid "make timestamp conflicts only a warning"
msgstr "differierende Zeitangaben sind kein Fehler"
#: g10/gpgv.c:78 sm/gpgsm.c:326
msgid "|FD|write status info to this FD"
msgstr "|FD|Statusinfo auf FD (Dateihandle) ausgeben"
#: g10/gpgv.c:117
msgid "Usage: gpgv [options] [files] (-h for help)"
msgstr "Aufruf: gpgv [Optionen] [Dateien] (-h für Hilfe)"
#: g10/gpgv.c:119
msgid ""
"Syntax: gpgv [options] [files]\n"
"Check signatures against known trusted keys\n"
msgstr ""
"Aufruf: gpgv [Optionen] [Dateien] (-h Hilfe)\n"
"Prüfe Signaturen gegen eine Liste bekannter Schlüssel\n"
#: g10/helptext.c:72
msgid "No help available"
msgstr "Keine Hilfe vorhanden."
#: g10/helptext.c:82
#, c-format
msgid "No help available for `%s'"
msgstr "Keine Hilfe für '%s' vorhanden."
#: g10/import.c:98
msgid "import signatures that are marked as local-only"
msgstr "Importiere Signaturen, die als nicht exportfähig markiert sind"
#: g10/import.c:100
msgid "repair damage from the pks keyserver during import"
msgstr "Beseitige Beschädigung durch den Schlüsselserver während des Imports"
#: g10/import.c:102
msgid "do not update the trustdb after import"
msgstr "ändern Sie die \"Trust\"-Datenbank nach dem Import nicht"
#: g10/import.c:104
msgid "only accept updates to existing keys"
msgstr "Nur Änderungen bereits existierender Schlüssel vornehmen"
#: g10/import.c:106
msgid "remove unusable parts from key after import"
msgstr "entferne nach dem Import unbrauchbare Teile des Schlüssels"
#: g10/import.c:108
msgid "remove as much as possible from key after import"
msgstr "nach dem Import soviel wie möglich aus dem Schlüssel entfernen"
#: g10/import.c:277
#, c-format
msgid "skipping block of type %d\n"
msgstr "überspringe den Block vom Typ %d\n"
#: g10/import.c:286
#, c-format
msgid "%lu keys processed so far\n"
msgstr "%lu Schlüssel bislang bearbeitet\n"
#: g10/import.c:303
#, c-format
msgid "Total number processed: %lu\n"
msgstr "Anzahl insgesamt bearbeiteter Schlüssel: %lu\n"
#: g10/import.c:305
#, c-format
msgid " skipped new keys: %lu\n"
msgstr " ignorierte neue Schlüssel: %lu\n"
#: g10/import.c:308
#, c-format
msgid " w/o user IDs: %lu\n"
msgstr " ohne User-ID: %lu\n"
#: g10/import.c:310 sm/import.c:130
#, c-format
msgid " imported: %lu"
msgstr " importiert: %lu"
#: g10/import.c:316 sm/import.c:134
#, c-format
msgid " unchanged: %lu\n"
msgstr " unverändert: %lu\n"
#: g10/import.c:318
#, c-format
msgid " new user IDs: %lu\n"
msgstr " neue User-IDs: %lu\n"
#: g10/import.c:320
#, c-format
msgid " new subkeys: %lu\n"
msgstr " neue Unterschlüssel: %lu\n"
#: g10/import.c:322
#, c-format
msgid " new signatures: %lu\n"
msgstr " neue Signaturen: %lu\n"
#: g10/import.c:324
#, c-format
msgid " new key revocations: %lu\n"
msgstr " neue Schlüsselwiderrufe: %lu\n"
#: g10/import.c:326 sm/import.c:136
#, c-format
msgid " secret keys read: %lu\n"
msgstr " gelesene geheime Schlüssel: %lu\n"
#: g10/import.c:328 sm/import.c:138
#, c-format
msgid " secret keys imported: %lu\n"
msgstr " geheime Schlüssel importiert: %lu\n"
#: g10/import.c:330 sm/import.c:140
#, c-format
msgid " secret keys unchanged: %lu\n"
msgstr " unveränderte geh. Schl.: %lu\n"
#: g10/import.c:332 sm/import.c:142
#, c-format
msgid " not imported: %lu\n"
msgstr " nicht importiert: %lu\n"
#: g10/import.c:334
#, c-format
msgid " signatures cleaned: %lu\n"
msgstr " Signaturen bereinigt: %lu\n"
#: g10/import.c:336
#, c-format
msgid " user IDs cleaned: %lu\n"
msgstr " User-IDs bereinigt: %lu\n"
#: g10/import.c:614
#, c-format
msgid ""
"WARNING: key %s contains preferences for unavailable\n"
"algorithms on these user IDs:\n"
msgstr ""
"WARNUNG: Schlüssel %s hat Einstellungen zu nicht verfügbaren\n"
"Verfahren für folgende User-ID:\n"
#: g10/import.c:655
#, c-format
msgid " \"%s\": preference for cipher algorithm %s\n"
msgstr " \"%s\": Einstellungen des Verschlüsselungsverfahren %s\n"
#: g10/import.c:670
#, c-format
msgid " \"%s\": preference for digest algorithm %s\n"
msgstr " \"%s\": Einstellungen der Hashmethode %s\n"
#: g10/import.c:682
#, c-format
msgid " \"%s\": preference for compression algorithm %s\n"
msgstr " \"%s\": Einstellungen der Komprimierungsverfahren %s\n"
#: g10/import.c:695
msgid "it is strongly suggested that you update your preferences and\n"
msgstr "es ist extrem empfehlenswert Ihre Einstellungen zu ändern und\n"
#: g10/import.c:697
msgid "re-distribute this key to avoid potential algorithm mismatch problems\n"
msgstr ""
"diesen Schlüssel wieder zu verteilen, um mögliche Probleme durch unpassende "
"Verfahrenskombinationen zu vermeiden\n"
#: g10/import.c:721
#, c-format
msgid "you can update your preferences with: gpg --edit-key %s updpref save\n"
msgstr ""
"Sie können Ihren Einstellungen mittels \"gpg --edit-key %s updpref save\" "
"ändern\n"
#: g10/import.c:775 g10/import.c:1403
#, c-format
msgid "key %s: no user ID\n"
msgstr "Schlüssel %s: Keine User-ID\n"
#: g10/import.c:804
#, c-format
msgid "key %s: PKS subkey corruption repaired\n"
msgstr "Schlüssel %s: PKS Unterschlüsseldefekt repariert\n"
#: g10/import.c:819
#, c-format
msgid "key %s: accepted non self-signed user ID \"%s\"\n"
msgstr "Schlüssel %s: Nicht eigenbeglaubigte User-ID `%s' übernommen\n"
#: g10/import.c:825
#, c-format
msgid "key %s: no valid user IDs\n"
msgstr "Schlüssel %s: Keine gültigen User-IDs\n"
#: g10/import.c:827
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:837 g10/import.c:1523
#, c-format
msgid "key %s: public key not found: %s\n"
msgstr "Schlüssel %s: Öffentlicher Schlüssel nicht gefunden: %s\n"
#: g10/import.c:843
#, c-format
msgid "key %s: new key - skipped\n"
msgstr "Schlüssel %s: neuer Schlüssel - übersprungen\n"
#: g10/import.c:852
#, c-format
msgid "no writable keyring found: %s\n"
msgstr "kein schreibbarer Schlüsselbund gefunden: %s\n"
-#: g10/import.c:857 g10/openfile.c:202 g10/openfile.c:293 g10/sign.c:835
-#: g10/sign.c:1146
+#: g10/import.c:857 g10/openfile.c:202 g10/openfile.c:293 g10/sign.c:874
+#: g10/sign.c:1185
#, c-format
msgid "writing to `%s'\n"
msgstr "Schreiben nach '%s'\n"
#: g10/import.c:861 g10/import.c:961 g10/import.c:1584
#, c-format
msgid "error writing keyring `%s': %s\n"
msgstr "Fehler beim Schreiben des Schlüsselbundes `%s': %s\n"
#: g10/import.c:880
#, c-format
msgid "key %s: public key \"%s\" imported\n"
msgstr "Schlüssel %s: Öffentlicher Schlüssel \"%s\" importiert\n"
#: g10/import.c:904
#, c-format
msgid "key %s: doesn't match our copy\n"
msgstr "Schlüssel %s: Stimmt nicht mit unserer Kopie überein\n"
#: g10/import.c:921 g10/import.c:1541
#, c-format
msgid "key %s: can't locate original keyblock: %s\n"
msgstr "Schlüssel %s: der originale Schlüsselblock wurde nicht gefunden: %s\n"
#: g10/import.c:929 g10/import.c:1548
#, c-format
msgid "key %s: can't read original keyblock: %s\n"
msgstr "Schlüssel %s: Lesefehler im originalen Schlüsselblock: %s\n"
#: g10/import.c:971
#, c-format
msgid "key %s: \"%s\" 1 new user ID\n"
msgstr "Schlüssel %s: \"%s\" 1 neue User-ID\n"
#: g10/import.c:974
#, c-format
msgid "key %s: \"%s\" %d new user IDs\n"
msgstr "Schlüssel %s: \"%s\" %d neue User-IDs\n"
#: g10/import.c:977
#, c-format
msgid "key %s: \"%s\" 1 new signature\n"
msgstr "Schlüssel %s: \"%s\" 1 neue Signatur\n"
#: g10/import.c:980
#, c-format
msgid "key %s: \"%s\" %d new signatures\n"
msgstr "Schlüssel %s: \"%s\" %d neue Signaturen\n"
#: g10/import.c:983
#, c-format
msgid "key %s: \"%s\" 1 new subkey\n"
msgstr "Schlüssel %s: \"%s\" 1 neuer Unterschlüssel\n"
#: g10/import.c:986
#, c-format
msgid "key %s: \"%s\" %d new subkeys\n"
msgstr "Schlüssel %s: \"%s\" %d neue Unterschlüssel\n"
#: g10/import.c:989
#, c-format
msgid "key %s: \"%s\" %d signature cleaned\n"
msgstr "Schlüssel %s: \"%s\" %d Signaturen bereinigt\n"
#: g10/import.c:992
#, c-format
msgid "key %s: \"%s\" %d signatures cleaned\n"
msgstr "Schlüssel %s: \"%s\" %d Signaturen bereinigt\n"
#: g10/import.c:995
#, c-format
msgid "key %s: \"%s\" %d user ID cleaned\n"
msgstr "Schlüssel %s: \"%s\" %d User-ID bereinigt\n"
#: g10/import.c:998
#, c-format
msgid "key %s: \"%s\" %d user IDs cleaned\n"
msgstr "Schlüssel %s: \"%s\" %d User-IDs bereinigt\n"
#: g10/import.c:1021
#, c-format
msgid "key %s: \"%s\" not changed\n"
msgstr "Schlüssel %s: \"%s\" nicht geändert\n"
#: g10/import.c:1275 g10/import.c:1468
#, c-format
msgid "key %s: secret key imported\n"
msgstr "Schlüssel %s: geheimer Schlüssel importiert\n"
#: g10/import.c:1282
#, c-format
msgid "key %s: secret key already exists\n"
msgstr "Schlüssel %s: geheimer Schlüssel bereits vorhanden\n"
#: g10/import.c:1289
#, c-format
msgid "key %s: error sending to agent: %s\n"
msgstr "Schlüssel %s: Fehler beim Senden zum gpg-agent: %s\n"
#: g10/import.c:1419
#, c-format
msgid "key %s: secret key with invalid cipher %d - skipped\n"
msgstr ""
"Schlüssel %s: geheimer Schlüssel mit ungültiger Verschlüsselung %d - "
"übersprungen\n"
#: g10/import.c:1430
msgid "importing secret keys not allowed\n"
msgstr "Importieren geheimer Schlüssel ist nicht erlaubt\n"
#: g10/import.c:1481
#, c-format
msgid "key %s: secret key part already available\n"
msgstr "Schlüssel %s: Die geheimen Teile sind bereits vorhanden\n"
#: g10/import.c:1516
#, c-format
msgid "key %s: no public key - can't apply revocation certificate\n"
msgstr ""
"Schlüssel %s: Kein öffentlicher Schlüssel - der Schlüsselwiderruf kann nicht "
"angebracht werden\n"
#: g10/import.c:1559
#, c-format
msgid "key %s: invalid revocation certificate: %s - rejected\n"
msgstr "Schlüssel %s: Ungültiges Widerrufzertifikat: %s - zurückgewiesen\n"
#: g10/import.c:1591
#, c-format
msgid "key %s: \"%s\" revocation certificate imported\n"
msgstr "Schlüssel %s: \"%s\" Widerrufzertifikat importiert\n"
#: g10/import.c:1667
#, c-format
msgid "key %s: no user ID for signature\n"
msgstr "Schlüssel %s: Keine User-ID für Signatur\n"
#: g10/import.c:1684
#, c-format
msgid "key %s: unsupported public key algorithm on user ID \"%s\"\n"
msgstr ""
"Schlüssel %s: Nicht unterstütztes Public-Key-Verfahren für User-ID \"%s\"\n"
#: g10/import.c:1686
#, c-format
msgid "key %s: invalid self-signature on user ID \"%s\"\n"
msgstr "Schlüssel %s: Ungültige Eigenbeglaubigung für User-ID \"%s\"\n"
#: g10/import.c:1703 g10/import.c:1729 g10/import.c:1780
#, c-format
msgid "key %s: unsupported public key algorithm\n"
msgstr "Schlüssel %s: Nicht unterstütztes Public-Key-Verfahren\n"
#: g10/import.c:1704
#, c-format
msgid "key %s: invalid direct key signature\n"
msgstr "Schlüssel %s: Ungültige \"direct-key\"-Signatur\n"
#: g10/import.c:1718
#, c-format
msgid "key %s: no subkey for key binding\n"
msgstr "Schlüssel %s: Kein Unterschlüssel für die Unterschlüsselanbindung\n"
#: g10/import.c:1731
#, c-format
msgid "key %s: invalid subkey binding\n"
msgstr "Schlüssel %s: Ungültige Unterschlüssel-Anbindung\n"
#: g10/import.c:1747
#, c-format
msgid "key %s: removed multiple subkey binding\n"
msgstr "Schlüssel %s: Mehrfache Unterschlüssel-Anbindung entfernt\n"
#: g10/import.c:1769
#, c-format
msgid "key %s: no subkey for key revocation\n"
msgstr "Schlüssel %s: Kein Unterschlüssel für Schlüsselwiderruf\n"
#: g10/import.c:1782
#, c-format
msgid "key %s: invalid subkey revocation\n"
msgstr "Schlüssel %s: Ungültiger Unterschlüsselwiderruf\n"
#: g10/import.c:1797
#, c-format
msgid "key %s: removed multiple subkey revocation\n"
msgstr "Schlüssel %s: Mehrfacher Unterschlüsselwiderruf entfernt\n"
#: g10/import.c:1839
#, c-format
msgid "key %s: skipped user ID \"%s\"\n"
msgstr "Schlüssel %s: User-ID übersprungen \"%s\"\n"
#: g10/import.c:1860
#, c-format
msgid "key %s: skipped subkey\n"
msgstr "Schlüssel %s: Unterschlüssel übersprungen\n"
#: g10/import.c:1887
#, c-format
msgid "key %s: non exportable signature (class 0x%02X) - skipped\n"
msgstr ""
"Schlüssel %s: Nicht exportfähige Signatur (Klasse %02x) - übersprungen\n"
#: g10/import.c:1897
#, c-format
msgid "key %s: revocation certificate at wrong place - skipped\n"
msgstr "Schlüssel %s: Widerrufzertifikat an falschem Platz - übersprungen\n"
#: g10/import.c:1914
#, c-format
msgid "key %s: invalid revocation certificate: %s - skipped\n"
msgstr "Schlüssel %s: Ungültiges Widerrufzertifikat: %s - übersprungen\n"
#: g10/import.c:1928
#, c-format
msgid "key %s: subkey signature in wrong place - skipped\n"
msgstr ""
"Schlüssel %s: Unterschlüssel-Widerrufzertifikat an falschem Platz - "
"übersprungen\n"
#: g10/import.c:1936
#, c-format
msgid "key %s: unexpected signature class (0x%02X) - skipped\n"
msgstr "Schlüssel %s: unerwartete Signaturklasse (0x%02x) - übersprungen\n"
#: g10/import.c:2065
#, c-format
msgid "key %s: duplicated user ID detected - merged\n"
msgstr "Schlüssel %s: Doppelte User-ID entdeckt - zusammengeführt\n"
#: g10/import.c:2127
#, c-format
msgid "WARNING: key %s may be revoked: fetching revocation key %s\n"
msgstr "WARNUNG: Schlüssel %s ist u.U. widerrufen: hole Widerrufschlüssel %s\n"
#: g10/import.c:2142
#, c-format
msgid "WARNING: key %s may be revoked: revocation key %s not present.\n"
msgstr ""
"WARNUNG: Schlüssel %s ist u.U. widerrufen: Widerrufschlüssel %s ist nicht "
"vorhanden\n"
#: g10/import.c:2201
#, c-format
msgid "key %s: \"%s\" revocation certificate added\n"
msgstr "Schlüssel %s: \"%s\" Widerrufzertifikat hinzugefügt\n"
#: g10/import.c:2235
#, c-format
msgid "key %s: direct key signature added\n"
msgstr "Schlüssel %s: \"direct-key\"-Signaturen hinzugefügt\n"
#: g10/keydb.c:181
#, c-format
msgid "error creating keyring `%s': %s\n"
msgstr "Fehler beim Erzeugen des Schlüsselbundes `%s': %s\n"
#: g10/keydb.c:187
#, c-format
msgid "keyring `%s' created\n"
msgstr "Schlüsselbund `%s' erstellt\n"
#: g10/keydb.c:326
#, c-format
msgid "keyblock resource `%s': %s\n"
msgstr "Schlüsselblockhilfsmittel`%s': %s\n"
#: g10/keydb.c:700
#, c-format
msgid "failed to rebuild keyring cache: %s\n"
msgstr "Schlüsselbund-Cache konnte nicht neu erzeugt werden: %s\n"
#: g10/keyedit.c:275
msgid "[revocation]"
msgstr "[Widerruf]"
#: g10/keyedit.c:275
msgid "[self-signature]"
msgstr "[Eigenbeglaubigung]"
#: g10/keyedit.c:363 g10/keylist.c:403
msgid "1 bad signature\n"
msgstr "1 falsche Beglaubigung\n"
#: g10/keyedit.c:365 g10/keylist.c:405
#, c-format
msgid "%d bad signatures\n"
msgstr "%d falsche Beglaubigungen\n"
#: g10/keyedit.c:367 g10/keylist.c:407
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:369 g10/keylist.c:409
#, 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:371 g10/keylist.c:412
msgid "1 signature not checked due to an error\n"
msgstr "1 Beglaubigung aufgrund von Fehler nicht geprüft\n"
#: g10/keyedit.c:373 g10/keylist.c:414
#, c-format
msgid "%d signatures not checked due to errors\n"
msgstr "%d Beglaubigungen aufgrund von Fehlern nicht geprüft\n"
#: g10/keyedit.c:375
msgid "1 user ID without valid self-signature detected\n"
msgstr "Eine User-ID ohne gültige Eigenbeglaubigung entdeckt\n"
#: g10/keyedit.c:377
#, 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:437 g10/pkclist.c:273
msgid ""
"Please decide how far you trust this user to correctly verify other users' "
"keys\n"
"(by looking at passports, checking fingerprints from different sources, "
"etc.)\n"
msgstr ""
"Bitte entscheiden Sie, in wieweit Sie diesem User zutrauen,\n"
"Schlüssel anderer User korrekt zu prüfen (durch Vergleich\n"
"mit Lichtbildausweisen, Vergleich der Fingerabdrücke aus\n"
"unterschiedlichen Quellen ...)?\n"
"\n"
#: g10/keyedit.c:441 g10/pkclist.c:285
#, c-format
msgid " %d = I trust marginally\n"
msgstr " %d = Ich vertraue ihm marginal\n"
#: g10/keyedit.c:442 g10/pkclist.c:287
#, c-format
msgid " %d = I trust fully\n"
msgstr " %d = Ich vertraue ihm vollständig\n"
#: g10/keyedit.c:460
msgid ""
"Please enter the depth of this trust signature.\n"
"A depth greater than 1 allows the key you are signing to make\n"
"trust signatures on your behalf.\n"
msgstr ""
"Geben Sie bitte die Tiefe dieser \"Trust\"-Signatur ein.\n"
"Eine Tiefe größer 1 erlaubt dem zu signierenden Schlüssel\n"
"Trust-Signatures für Sie zu machen.\n"
#: g10/keyedit.c:476
msgid "Please enter a domain to restrict this signature, or enter for none.\n"
msgstr ""
"Geben Sie bitte eine Domain ein, um die Signatur einzuschränken\n"
"oder nur die Eingabetaste für keine Domain\n"
#: g10/keyedit.c:622
#, c-format
msgid "User ID \"%s\" is revoked."
msgstr "User-ID \"%s\" ist widerrufen."
#: g10/keyedit.c:631 g10/keyedit.c:659 g10/keyedit.c:686 g10/keyedit.c:859
#: g10/keyedit.c:924 g10/keyedit.c:1819
msgid "Are you sure you still want to sign it? (y/N) "
msgstr "Wollen Sie ihn immer noch beglaubigen? (j/N) "
#: g10/keyedit.c:645 g10/keyedit.c:673 g10/keyedit.c:700 g10/keyedit.c:865
#: g10/keyedit.c:1824
msgid " Unable to sign.\n"
msgstr " Beglaubigen ist nicht möglich.\n"
#: g10/keyedit.c:650
#, c-format
msgid "User ID \"%s\" is expired."
msgstr "User-ID \"%s\" ist abgelaufen."
#: g10/keyedit.c:678
#, c-format
msgid "User ID \"%s\" is not self-signed."
msgstr "User-ID \"%s\" ist nicht eigenbeglaubigt."
#: g10/keyedit.c:706
#, c-format
msgid "User ID \"%s\" is signable. "
msgstr "User-ID \"%s\" ist signierbar."
#: g10/keyedit.c:708
msgid "Sign it? (y/N) "
msgstr "Wirklich signieren? (j/N) "
#: g10/keyedit.c:733
#, c-format
msgid ""
"The self-signature on \"%s\"\n"
"is a PGP 2.x-style signature.\n"
msgstr ""
"Die Eigenbeglaubigung von \"%s\"\n"
"ist eine PGP 2.x artige Signatur.\n"
#: g10/keyedit.c:742
msgid "Do you want to promote it to an OpenPGP self-signature? (y/N) "
msgstr "Soll sie zu einer OpenPGP Eigenbeglaubigung geändert werden? (j/N) "
#: g10/keyedit.c:756
#, c-format
msgid ""
"Your current signature on \"%s\"\n"
"has expired.\n"
msgstr ""
"Ihre derzeitige Beglaubigung von \"%s\"\n"
"ist abgelaufen.\n"
#: g10/keyedit.c:761
msgid "Do you want to issue a new signature to replace the expired one? (y/N) "
msgstr ""
"Soll eine neue Beglaubigung als Ersatz für die abgelaufene erstellt werden? "
"(J/n) "
#: g10/keyedit.c:782
#, c-format
msgid ""
"Your current signature on \"%s\"\n"
"is a local signature.\n"
msgstr ""
"Die derzeitige Beglaubigung von \"%s\"\n"
"ist nur für diesen Rechner gültig.\n"
#: g10/keyedit.c:787
msgid "Do you want to promote it to a full exportable signature? (y/N) "
msgstr ""
"Soll sie zu einer voll exportierbaren Beglaubigung erhoben werden? (j/N) "
#: g10/keyedit.c:807
#, c-format
msgid "\"%s\" was already locally signed by key %s\n"
msgstr "\"%s\" wurde bereits durch Schlüssel %s lokal beglaubigt\n"
#: g10/keyedit.c:810
#, c-format
msgid "\"%s\" was already signed by key %s\n"
msgstr "\"%s\" wurde bereits durch Schlüssel %s beglaubigt\n"
#: g10/keyedit.c:815
msgid "Do you want to sign it again anyway? (y/N) "
msgstr "Wollen Sie ihn immer noch wieder beglaubigen? (j/N) "
#: g10/keyedit.c:837
#, c-format
msgid "Nothing to sign with key %s\n"
msgstr "Nichts zu beglaubigen für Schlüssel %s\n"
#: g10/keyedit.c:853
msgid "This key has expired!"
msgstr "Dieser Schlüssel ist verfallen!"
#: g10/keyedit.c:871
#, c-format
msgid "This key is due to expire on %s.\n"
msgstr "Dieser Schlüssel wird %s verfallen.\n"
#: g10/keyedit.c:877
msgid "Do you want your signature to expire at the same time? (Y/n) "
msgstr "Soll Ihre Beglaubigung zur selben Zeit verfallen? (J/n) "
#: g10/keyedit.c:917
msgid ""
"You may not make an OpenPGP signature on a PGP 2.x key while in --pgp2 "
"mode.\n"
msgstr ""
"Im --pgp2-Modus kann nur mit PGP-2.x-artigen Schlüsseln signiert werden\n"
#: g10/keyedit.c:919
msgid "This would make the key unusable in PGP 2.x.\n"
msgstr "Dies würde den Schlüssel für PGP 2.x unbrauchbar machen\n"
#: g10/keyedit.c:944
msgid ""
"How carefully have you verified the key you are about to sign actually "
"belongs\n"
"to the person named above? If you don't know what to answer, enter \"0\".\n"
msgstr ""
"Wie genau haben Sie überprüft, ob der Schlüssel, den Sie jetzt beglaubigen\n"
"wollen, wirklich der o.g. Person gehört?\n"
"Wenn Sie darauf keine Antwort wissen, geben Sie \"0\" ein.\n"
#: g10/keyedit.c:949
#, c-format
msgid " (0) I will not answer.%s\n"
msgstr " (0) Ich antworte nicht.%s\n"
#: g10/keyedit.c:951
#, c-format
msgid " (1) I have not checked at all.%s\n"
msgstr " (1) Ich habe es überhaupt nicht überprüft.%s\n"
#: g10/keyedit.c:953
#, c-format
msgid " (2) I have done casual checking.%s\n"
msgstr " (2) Ich habe es flüchtig überprüft.%s\n"
#: g10/keyedit.c:955
#, c-format
msgid " (3) I have done very careful checking.%s\n"
msgstr " (3) Ich habe es sehr sorgfältig überprüft.%s\n"
# translated by wk
#: g10/keyedit.c:962
msgid "Your selection? (enter `?' for more information): "
msgstr "Ihre Auswahl? ('?' für weitere Informationen): "
#: g10/keyedit.c:986
#, c-format
msgid ""
"Are you sure that you want to sign this key with your\n"
"key \"%s\" (%s)\n"
msgstr ""
"Sind Sie wirklich sicher, daß Sie vorstehenden Schlüssel mit Ihrem\n"
"Schlüssel \"%s\" (%s) beglaubigen wollen\n"
#: g10/keyedit.c:993
msgid "This will be a self-signature.\n"
msgstr "Dies wird eine Eigenbeglaubigung sein.\n"
#: g10/keyedit.c:998
msgid "WARNING: the signature will not be marked as non-exportable.\n"
msgstr ""
"WARNUNG: Die Signatur wird nicht als nicht-exportierbar markiert werden.\n"
#: g10/keyedit.c:1005
msgid "WARNING: the signature will not be marked as non-revocable.\n"
msgstr "WARNUNG: Die Signatur wird nicht als unwiderrufbar markiert werden.\n"
#: g10/keyedit.c:1015
msgid "The signature will be marked as non-exportable.\n"
msgstr "Die Signatur wird als nicht-exportfähig markiert werden.\n"
#: g10/keyedit.c:1022
msgid "The signature will be marked as non-revocable.\n"
msgstr "Die Signatur wird als unwiderrufbar markiert werden.\n"
#: g10/keyedit.c:1029
msgid "I have not checked this key at all.\n"
msgstr "Ich habe diesen Schlüssel überhaupt nicht überprüft.\n"
#: g10/keyedit.c:1034
msgid "I have checked this key casually.\n"
msgstr "Ich habe diesen Schlüssel flüchtig überprüft.\n"
#: g10/keyedit.c:1039
msgid "I have checked this key very carefully.\n"
msgstr "Ich habe diesen Schlüssel sehr sorgfältig überprüft.\n"
#: g10/keyedit.c:1049
msgid "Really sign? (y/N) "
msgstr "Wirklich signieren? (j/N) "
#: g10/keyedit.c:1099 g10/keyedit.c:4894 g10/keyedit.c:4985 g10/keyedit.c:5047
#: g10/keyedit.c:5108 g10/sign.c:334
#, c-format
msgid "signing failed: %s\n"
msgstr "Beglaubigung fehlgeschlagen: %s\n"
#: g10/keyedit.c:1167
msgid "Key has only stub or on-card key items - no passphrase to change.\n"
msgstr ""
"Der Schlüssel enthält nur \"stub\"- oder \"on-card\"-Schlüsselelemente- "
"keine Passphrase ist zu ändern.\n"
#: g10/keyedit.c:1231
#, c-format
msgid "Can't edit this key: %s\n"
msgstr "Dieser Schlüssel kann nicht editiert werden: %s\n"
#: g10/keyedit.c:1238
msgid ""
"Enter the new passphrase for this secret key.\n"
"\n"
msgstr ""
"Geben Sie die neue Passphrase für diesen geheimen Schlüssel ein.\n"
"\n"
#: g10/keyedit.c:1256 g10/keygen.c:2150
msgid "passphrase not correctly repeated; try again"
msgstr "Passphrase wurde nicht richtig wiederholt; noch einmal versuchen"
#: g10/keyedit.c:1262
msgid ""
"You don't want a passphrase - this is probably a *bad* idea!\n"
"\n"
msgstr ""
"Sie wollen keine Passphrase - dies ist *nicht* zu empfehlen!\n"
"\n"
#: g10/keyedit.c:1266
msgid "Do you really want to do this? (y/N) "
msgstr "Möchten Sie dies wirklich tun? (j/N) "
#: g10/keyedit.c:1362
msgid "moving a key signature to the correct place\n"
msgstr "schiebe eine Beglaubigung an die richtige Stelle\n"
#: g10/keyedit.c:1452
msgid "save and quit"
msgstr "speichern und Menü verlassen"
#: g10/keyedit.c:1455
msgid "show key fingerprint"
msgstr "Fingerabdruck des Schlüssels anzeigen"
#: g10/keyedit.c:1456
msgid "list key and user IDs"
msgstr "Schlüssel und User-IDs auflisten"
#: g10/keyedit.c:1458
msgid "select user ID N"
msgstr "User-ID N auswählen"
#: g10/keyedit.c:1459
msgid "select subkey N"
msgstr "Unterschlüssel N auswählen"
#: g10/keyedit.c:1460
msgid "check signatures"
msgstr "Signaturen prüfen"
#: g10/keyedit.c:1465
msgid "sign selected user IDs [* see below for related commands]"
msgstr "die ausgewählten User-IDs beglaubigen [* für verwandte Befehle s.u.]"
#: g10/keyedit.c:1470
msgid "sign selected user IDs locally"
msgstr "Die ausgewählte User-ID nur für diesen Rechner beglaubigen"
#: g10/keyedit.c:1471
msgid "sign selected user IDs with a trust signature"
msgstr "Die ausgewählte User-ID mit einer \"Trust\"-Signatur beglaubigen"
#: g10/keyedit.c:1473
msgid "sign selected user IDs with a non-revocable signature"
msgstr "die ausgewählten User-IDs unwiderrufbar beglaubigen"
#: g10/keyedit.c:1475
msgid "add a user ID"
msgstr "Eine User-ID hinzufügen"
#: g10/keyedit.c:1477
msgid "add a photo ID"
msgstr "Eine Foto-ID hinzufügen"
#: g10/keyedit.c:1478
msgid "delete selected user IDs"
msgstr "ausgewählte User-IDs entfernen"
#: g10/keyedit.c:1481
msgid "add a subkey"
msgstr "einen Unterschlüssel hinzufügen"
#: g10/keyedit.c:1484
msgid "add a key to a smartcard"
msgstr "der Smartcard einen Schlüssel hinzufügen"
#: g10/keyedit.c:1486
msgid "move a key to a smartcard"
msgstr "einen Schlüssel auf die Smartcard schieben"
#: g10/keyedit.c:1488
msgid "move a backup key to a smartcard"
msgstr "eine Sicherungskopie des Schlüssels auf die Smartcard schieben"
#: g10/keyedit.c:1491
msgid "delete selected subkeys"
msgstr "ausgewählte Unterschlüssel entfernen"
#: g10/keyedit.c:1493
msgid "add a revocation key"
msgstr "Einen Widerrufschlüssel hinzufügen"
#: g10/keyedit.c:1495
msgid "delete signatures from the selected user IDs"
msgstr "Beglaubigungen der ausgewählten User-IDs entfernen"
#: g10/keyedit.c:1497
msgid "change the expiration date for the key or selected subkeys"
msgstr ""
"das Verfallsdatum des Schlüssel oder ausgewählter Unterschlüssels ändern"
#: g10/keyedit.c:1499
msgid "flag the selected user ID as primary"
msgstr "User-ID als Haupt-User-ID kennzeichnen"
#: g10/keyedit.c:1501
msgid "toggle between the secret and public key listings"
msgstr "Umschalten zwischen dem Auflisten geheimer und öffentlicher Schlüssel"
#: g10/keyedit.c:1503
msgid "list preferences (expert)"
msgstr "Liste der Voreinstellungen (für Experten)"
#: g10/keyedit.c:1504
msgid "list preferences (verbose)"
msgstr "Liste der Voreinstellungen (ausführlich)"
#: g10/keyedit.c:1506
msgid "set preference list for the selected user IDs"
msgstr "ändern der Voreinstellungsliste der ausgewählten User-IDs"
#: g10/keyedit.c:1509
msgid "set the preferred keyserver URL for the selected user IDs"
msgstr ""
"Setze die URL des bevorzugten Schlüsselservers für die ausgewählten User-IDs"
#: g10/keyedit.c:1511
msgid "set a notation for the selected user IDs"
msgstr "Eine Notation für die ausgewählten User-IDs setzen"
#: g10/keyedit.c:1513
msgid "change the passphrase"
msgstr "Die Passphrase ändern"
#: g10/keyedit.c:1515
msgid "change the ownertrust"
msgstr "Den \"Owner trust\" ändern"
#: g10/keyedit.c:1517
msgid "revoke signatures on the selected user IDs"
msgstr "Beglaubigungen der ausgewählten User-IDs widerrufen"
#: g10/keyedit.c:1519
msgid "revoke selected user IDs"
msgstr "Ausgewählte User-ID widerrufen"
#: g10/keyedit.c:1522
msgid "revoke key or selected subkeys"
msgstr "Schlüssel oder ausgewählten Unterschlüssel widerrufen"
#: g10/keyedit.c:1523
msgid "enable key"
msgstr "Schlüssel anschalten"
#: g10/keyedit.c:1524
msgid "disable key"
msgstr "Schlüssel abschalten"
#: g10/keyedit.c:1525
msgid "show selected photo IDs"
msgstr "ausgewählte Foto-IDs anzeigen"
#: g10/keyedit.c:1527
msgid "compact unusable user IDs and remove unusable signatures from key"
msgstr ""
"unbrauchbare User-IDs verkleinern und unbrauchbare Signaturen aus dem "
"Schlüssel entfernen"
#: g10/keyedit.c:1529
msgid "compact unusable user IDs and remove all signatures from key"
msgstr ""
"unbrauchbare User-IDs verkleinern und alle Signaturen aus dem Schlüssel "
"entfernen"
#: g10/keyedit.c:1643
msgid "Secret key is available.\n"
msgstr "Geheimer Schlüssel ist vorhanden.\n"
#: g10/keyedit.c:1736
msgid "Need the secret key to do this.\n"
msgstr "Hierzu wird der geheime Schlüssel benötigt.\n"
#: g10/keyedit.c:1743
msgid "Please use the command \"toggle\" first.\n"
msgstr "Bitte verwenden sie zunächst den Befehl \"toggle\"\n"
#: g10/keyedit.c:1764
msgid ""
"* The `sign' command may be prefixed with an `l' for local signatures "
"(lsign),\n"
" a `t' for trust signatures (tsign), an `nr' for non-revocable signatures\n"
" (nrsign), or any combination thereof (ltsign, tnrsign, etc.).\n"
msgstr ""
"* Dem `sign'-Befehl darf ein `l' für nicht exportfähige Signaturen "
"vorangestellt werden (\"lsign\"),\n"
" ein `t' für 'Trust'-Signatur (\"tsign\"), ein `nr' für unwiderrufbare "
"Signaturen\n"
" (\"nrsign\"), oder jede Kombination davon (\"ltsign\", \"tnrsign\", etc.).\n"
#: g10/keyedit.c:1812
msgid "Key is revoked."
msgstr "Schlüssel wurde widerrufen."
#: g10/keyedit.c:1831
msgid "Really sign all user IDs? (y/N) "
msgstr "Wirklich alle User-IDs beglaubigen? (j/N) "
#: g10/keyedit.c:1838
msgid "Hint: Select the user IDs to sign\n"
msgstr "Tip: Wählen Sie die User-IDs, die beglaubigt werden sollen\n"
#: g10/keyedit.c:1848
#, c-format
msgid "Unknown signature type `%s'\n"
msgstr "Unbekannter Signaturtyp `%s'\n"
#: g10/keyedit.c:1873
#, c-format
msgid "This command is not allowed while in %s mode.\n"
msgstr "Dieser Befehl ist im %s-Modus nicht erlaubt.\n"
#: g10/keyedit.c:1894 g10/keyedit.c:1914 g10/keyedit.c:2111
msgid "You must select at least one user ID.\n"
msgstr "Zumindestens eine User-ID muß ausgewählt werden.\n"
#: g10/keyedit.c:1896
msgid "You can't delete the last user ID!\n"
msgstr "Die letzte User-ID kann nicht gelöscht werden!\n"
#: g10/keyedit.c:1899
msgid "Really remove all selected user IDs? (y/N) "
msgstr "Möchten Sie alle ausgewählten User-IDs wirklich entfernen? (j/N) "
#: g10/keyedit.c:1900
msgid "Really remove this user ID? (y/N) "
msgstr "Diese User-ID wirklich entfernen? (j/N) "
#. TRANSLATORS: Please take care: This is about
#. moving the key and not about removing it.
#: g10/keyedit.c:1953
msgid "Really move the primary key? (y/N) "
msgstr "Den Hauptschlüssel wirklich verschieben? (j/N) "
#: g10/keyedit.c:1965
msgid "You must select exactly one key.\n"
msgstr "Sie müssen genau einen Schlüssel auswählen.\n"
#: g10/keyedit.c:1996
msgid "Command expects a filename argument\n"
msgstr "Befehl benötigt einen Dateinamen als Argument\n"
#: g10/keyedit.c:2010
#, c-format
msgid "Can't open `%s': %s\n"
msgstr "'%s' kann nicht geöffnet werden: %s\n"
#: g10/keyedit.c:2026
#, c-format
msgid "Error reading backup key from `%s': %s\n"
msgstr "Fehler beim Lesen der Sicherungskopie des Schlüssels von `%s': %s\n"
#: g10/keyedit.c:2040
msgid "This key is not protected.\n"
msgstr "Dieser Schlüssel ist nicht geschützt.\n"
#: g10/keyedit.c:2043
msgid "unknown key protection algorithm\n"
msgstr "Unbekanntes Schlüssel-Schutzverfahren\n"
#: g10/keyedit.c:2047
msgid "Secret parts of key are not available.\n"
msgstr "Geheime Teile des Schlüssels sind nicht vorhanden\n"
#: g10/keyedit.c:2050
msgid "Secret parts of key are stored on-card.\n"
msgstr "Geheime Teile des Schlüssels sind auf einer Karte gespeichert.\n"
#: g10/keyedit.c:2075
msgid "You must select at least one key.\n"
msgstr "Zumindestens ein Schlüssel muß ausgewählt werden.\n"
#: g10/keyedit.c:2078
msgid "Do you really want to delete the selected keys? (y/N) "
msgstr "Möchten Sie die ausgewählten Schlüssel wirklich entfernen? (j/N) "
#: g10/keyedit.c:2080
msgid "Do you really want to delete this key? (y/N) "
msgstr "Möchten Sie diesen Schlüssel wirklich entfernen? (j/N) "
#: g10/keyedit.c:2114
msgid "Really revoke all selected user IDs? (y/N) "
msgstr "Möchten Sie wirklich alle ausgewählten User-IDs widerrufen? (j/N) "
#: g10/keyedit.c:2115
msgid "Really revoke this user ID? (y/N) "
msgstr "Diese User-ID wirklich widerrufen? (j/N) "
#: g10/keyedit.c:2133
msgid "Do you really want to revoke the entire key? (y/N) "
msgstr "Möchten Sie diesen Schlüssel wirklich vollständig widerrufen? (j/N) "
#: g10/keyedit.c:2144
msgid "Do you really want to revoke the selected subkeys? (y/N) "
msgstr ""
"Möchten Sie die ausgewählten Unterschlüssel wirklich widerrufen? (j/N) "
#: g10/keyedit.c:2146
msgid "Do you really want to revoke this subkey? (y/N) "
msgstr "Möchten Sie diesen Schlüssel wirklich widerrufen? (j/N) "
#: g10/keyedit.c:2193
msgid "Owner trust may not be set while using a user provided trust database\n"
msgstr ""
"\"Owner trust\" kann nicht gesetzt werden, wenn eine anwendereigene 'Trust'-"
"Datenbank benutzt wird\n"
#: g10/keyedit.c:2237
msgid "Set preference list to:\n"
msgstr "Setze die Liste der Voreinstellungen auf:\n"
#: g10/keyedit.c:2244
msgid "Really update the preferences for the selected user IDs? (y/N) "
msgstr ""
"Möchten Sie die Voreinstellungen der ausgewählten User-IDs wirklich ändern? "
"(j/N) "
#: g10/keyedit.c:2246
msgid "Really update the preferences? (y/N) "
msgstr "Die Voreinstellungen wirklich ändern? (j/N) "
#: g10/keyedit.c:2318
msgid "Save changes? (y/N) "
msgstr "Änderungen speichern? (j/N) "
#: g10/keyedit.c:2322
msgid "Quit without saving? (y/N) "
msgstr "Beenden ohne zu speichern? (j/N) "
#: g10/keyedit.c:2333
#, c-format
msgid "update failed: %s\n"
msgstr "Änderung fehlgeschlagen: %s\n"
#: g10/keyedit.c:2338
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:2410
#, c-format
msgid "update secret failed: %s\n"
msgstr "Änderung des Geheimnisses fehlgeschlagen: %s\n"
#: g10/keyedit.c:2509
msgid "Digest: "
msgstr "Digest: "
#: g10/keyedit.c:2566
msgid "Features: "
msgstr "Eigenschaften: "
#: g10/keyedit.c:2577
msgid "Keyserver no-modify"
msgstr "Keyserver no-modify"
#: g10/keyedit.c:2592 g10/keylist.c:321
msgid "Preferred keyserver: "
msgstr "Bevorzugter Schlüsselserver:"
#: g10/keyedit.c:2600 g10/keyedit.c:2601
msgid "Notations: "
msgstr "\"Notationen\": "
#: g10/keyedit.c:2825
msgid "There are no preferences on a PGP 2.x-style user ID.\n"
msgstr "PGP 2.x-artige Schlüssel haben keine Voreinstellungen.\n"
#: g10/keyedit.c:2888
#, c-format
msgid "The following key was revoked on %s by %s key %s\n"
msgstr "Der folgende Schlüssel wurde am %s von %s Schlüssel %s widerrufen\n"
#: g10/keyedit.c:2911
#, c-format
msgid "This key may be revoked by %s key %s"
msgstr ""
"Dieser Schlüssel könnte durch %s mit Schlüssel %s widerrufen worden sein"
#: g10/keyedit.c:2917
msgid "(sensitive)"
msgstr "(empfindlich)"
#: g10/keyedit.c:2934 g10/keyedit.c:3047 g10/keyserver.c:533
#, c-format
msgid "created: %s"
msgstr "erzeugt: %s"
#: g10/keyedit.c:2937 g10/keylist.c:811 g10/keylist.c:934 g10/mainproc.c:1008
#, c-format
msgid "revoked: %s"
msgstr "widerrufen: %s"
#: g10/keyedit.c:2939 g10/keylist.c:817 g10/keylist.c:940
#, c-format
msgid "expired: %s"
msgstr "verfallen: %s"
#: g10/keyedit.c:2941 g10/keyedit.c:3049 g10/keylist.c:823 g10/keylist.c:946
#: g10/keyserver.c:539 g10/mainproc.c:1014
#, c-format
msgid "expires: %s"
msgstr "verfällt: %s"
#: g10/keyedit.c:2943
#, c-format
msgid "usage: %s"
msgstr "Aufruf: %s"
#: g10/keyedit.c:2951
msgid "card-no: "
msgstr "Kartennummer:"
#: g10/keyedit.c:2987
#, c-format
msgid "trust: %s"
msgstr "Vertrauen: %s"
#: g10/keyedit.c:2991
#, c-format
msgid "validity: %s"
msgstr "Gültigkeit: %s"
#: g10/keyedit.c:2998
msgid "This key has been disabled"
msgstr "Hinweis: Dieser Schlüssel ist abgeschaltet"
#: g10/keyedit.c:3015
msgid ""
"Please note that the shown key validity is not necessarily correct\n"
"unless you restart the program.\n"
msgstr ""
"Bitte beachten Sie, daß ohne einen Programmneustart die angezeigte\n"
"Schlüsselgültigkeit nicht notwendigerweise korrekt ist.\n"
#: g10/keyedit.c:3066 g10/keyedit.c:3378 g10/keyserver.c:543
#: g10/mainproc.c:1874 g10/trustdb.c:1202 g10/trustdb.c:1731
+#: dirmngr/ocsp.c:699
msgid "revoked"
msgstr "widerrufen"
#: g10/keyedit.c:3068 g10/keyedit.c:3380 g10/keyserver.c:547
#: g10/mainproc.c:1876 g10/trustdb.c:549 g10/trustdb.c:1733
msgid "expired"
msgstr "verfallen"
# translated by wk
#: g10/keyedit.c:3133
msgid ""
"WARNING: no user ID has been marked as primary. This command may\n"
" cause a different user ID to become the assumed primary.\n"
msgstr ""
"WARNUNG: Keine User-ID ist als primär markiert. Dieser Befehl kann\n"
"dazu führen, daß eine andere User-ID als primär angesehen wird.\n"
#: g10/keyedit.c:3186
msgid ""
"WARNING: This is a PGP2-style key. Adding a photo ID may cause some "
"versions\n"
" of PGP to reject this key.\n"
msgstr ""
"WARNUNG: Dies ist ein PGP2-artiger Schlüssel. Hinzufügen einer Foto-ID "
"könnte\n"
" bei einigen PGP-Versionen zur Zurückweisung des Schlüssels führen.\n"
#: g10/keyedit.c:3191 g10/keyedit.c:3475
msgid "Are you sure you still want to add it? (y/N) "
msgstr "Wollen Sie ihn immer noch hinzufügen? (j/N) "
#: g10/keyedit.c:3197
msgid "You may not add a photo ID to a PGP2-style key.\n"
msgstr "Sie können einem PGP2-artigen Schlüssel keine Foto-ID hinzufügen.\n"
#: g10/keyedit.c:3306
msgid "Delete this good signature? (y/N/q)"
msgstr "Diese korrekte Beglaubigung entfernen? (j/N/q)"
#: g10/keyedit.c:3316
msgid "Delete this invalid signature? (y/N/q)"
msgstr "Diese ungültige Beglaubigung entfernen= (j/N/q)"
#: g10/keyedit.c:3320
msgid "Delete this unknown signature? (y/N/q)"
msgstr "Diese unbekannte Beglaubigung entfernen? (j/N/q)"
#: g10/keyedit.c:3327
msgid "Really delete this self-signature? (y/N)"
msgstr "Eigenbeglaubigung wirklich entfernen? (j/N)"
#: g10/keyedit.c:3343
#, c-format
msgid "Deleted %d signature.\n"
msgstr "%d Beglaubigungen entfernt.\n"
#: g10/keyedit.c:3344
#, c-format
msgid "Deleted %d signatures.\n"
msgstr "%d Beglaubigungen entfernt.\n"
#: g10/keyedit.c:3347
msgid "Nothing deleted.\n"
msgstr "Nichts entfernt.\n"
#: g10/keyedit.c:3382 g10/trustdb.c:1735
msgid "invalid"
msgstr "ungültig"
#: g10/keyedit.c:3384
#, c-format
msgid "User ID \"%s\" compacted: %s\n"
msgstr "User-ID \"%s\" bereits verkleinert: %s\n"
#: g10/keyedit.c:3391
#, c-format
msgid "User ID \"%s\": %d signature removed\n"
msgstr "User-ID \"%s\": %d Signatur entfernt\n"
#: g10/keyedit.c:3392
#, c-format
msgid "User ID \"%s\": %d signatures removed\n"
msgstr "User-ID \"%s\": %d Signaturen entfernt\n"
#: g10/keyedit.c:3400
#, c-format
msgid "User ID \"%s\": already minimized\n"
msgstr "User-ID \"%s\": bereits minimiert\n"
#: g10/keyedit.c:3401
#, c-format
msgid "User ID \"%s\": already clean\n"
msgstr "User-ID \"%s\": bereits sauber\n"
#: g10/keyedit.c:3470
msgid ""
"WARNING: This is a PGP 2.x-style key. Adding a designated revoker may "
"cause\n"
" some versions of PGP to reject this key.\n"
msgstr ""
"WARNUNG: Dies ist ein PGP2-artiger Schlüssel. Hinzufügen eines vorgesehenen\n"
" Widerrufers könnte bei einigen PGP-Versionen zur Zurückweisung\n"
" des Schlüssels führen.\n"
#: g10/keyedit.c:3481
msgid "You may not add a designated revoker to a PGP 2.x-style key.\n"
msgstr ""
"Sie können einem PGP2-artigen Schlüssel keine vorgesehenen Widerrufer "
"hinzufügen.\n"
#: g10/keyedit.c:3500
msgid "Enter the user ID of the designated revoker: "
msgstr "Geben sie die User-ID des designierten Widerrufers ein: "
#: g10/keyedit.c:3525
msgid "cannot appoint a PGP 2.x style key as a designated revoker\n"
msgstr ""
"Ein PGP 2.x-artiger Schlüssel kann nicht als vorgesehener Widerrufer "
"eingetragen werden\n"
#: g10/keyedit.c:3540
msgid "you cannot appoint a key as its own designated revoker\n"
msgstr "Ein Schlüssel kann nicht sein eigener vorgesehener Widerrufer werden\n"
#: g10/keyedit.c:3562
msgid "this key has already been designated as a revoker\n"
msgstr "Dieser Schlüssel wurde bereits als ein Widerrufer vorgesehen\n"
#: g10/keyedit.c:3581
msgid "WARNING: appointing a key as a designated revoker cannot be undone!\n"
msgstr ""
"WARNUNG: Einen Schlüssel als vorgesehenen Widerrufer zu deklarieren, kann "
"nicht rückgangig gemacht werden!\n"
#: g10/keyedit.c:3587
msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr ""
"Möchten Sie diesen Schlüssel wirklich als vorgesehenen Widerrufer festlegen? "
"(j/N): "
#: g10/keyedit.c:3638
msgid "Please select at most one subkey.\n"
msgstr "Bitte wählen Sie höchstens einen Unterschlüssel aus.\n"
#: g10/keyedit.c:3642
msgid "Changing expiration time for a subkey.\n"
msgstr "Ändern des Verfallsdatums des Unterschlüssels.\n"
#: g10/keyedit.c:3645
msgid "Changing expiration time for the primary key.\n"
msgstr "Ändern des Verfallsdatums des Hauptschlüssels.\n"
#: g10/keyedit.c:3692
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:3759
#, c-format
msgid "signing subkey %s is already cross-certified\n"
msgstr "Signaturunterschlüssel %s ist bereits rücksigniert\n"
#: g10/keyedit.c:3765
#, c-format
msgid "subkey %s does not sign and so does not need to be cross-certified\n"
msgstr ""
"Unterschlüssel %s ist des Signieren nicht mächtig und braucht deshalb keine "
"Rücksignatur\n"
#: g10/keyedit.c:3880
msgid "Please select exactly one user ID.\n"
msgstr "Bitte genau eine User-ID auswählen.\n"
#: g10/keyedit.c:3921 g10/keyedit.c:4035 g10/keyedit.c:4148 g10/keyedit.c:4285
#, c-format
msgid "skipping v3 self-signature on user ID \"%s\"\n"
msgstr "Überspringen der v3 Eigenbeglaubigung von User-ID \"%s\"\n"
#: g10/keyedit.c:4092
msgid "Enter your preferred keyserver URL: "
msgstr "Geben Sie die URL Ihres bevorzugten Schlüsselservers ein: "
#: g10/keyedit.c:4171
msgid "Are you sure you want to replace it? (y/N) "
msgstr "Wollen Sie ihn wirklich ersetzen? (j/N) "
#: g10/keyedit.c:4172
msgid "Are you sure you want to delete it? (y/N) "
msgstr "Wollen Sie ihn wirklich löschen? (j/N) "
#: g10/keyedit.c:4231
msgid "Enter the notation: "
msgstr "Geben Sie die \"Notation\" ein: "
#: g10/keyedit.c:4378
msgid "Proceed? (y/N) "
msgstr "Fortfahren (j/N)? "
#: g10/keyedit.c:4448
#, c-format
msgid "No user ID with index %d\n"
msgstr "Keine User-ID mit Index %d\n"
#: g10/keyedit.c:4510
#, c-format
msgid "No user ID with hash %s\n"
msgstr "Keine User-ID mit Hash %s\n"
#: g10/keyedit.c:4546
#, c-format
msgid "No subkey with index %d\n"
msgstr "Kein Unterschlüssel mit Index %d\n"
#: g10/keyedit.c:4687
#, c-format
msgid "user ID: \"%s\"\n"
msgstr "User-ID: \"%s\"\n"
#: g10/keyedit.c:4690 g10/keyedit.c:4792 g10/keyedit.c:4840
#, c-format
msgid "signed by your key %s on %s%s%s\n"
msgstr " beglaubigt durch Ihren Schlüssel %s am %s%s%s\n"
#: g10/keyedit.c:4692 g10/keyedit.c:4794 g10/keyedit.c:4842
msgid " (non-exportable)"
msgstr " (nicht-exportierbar)"
#: g10/keyedit.c:4696
#, c-format
msgid "This signature expired on %s.\n"
msgstr "Diese Signatur ist seit %s verfallen.\n"
#: g10/keyedit.c:4701
msgid "Are you sure you still want to revoke it? (y/N) "
msgstr "Wollen Sie ihn immer noch widerrufen? (j/N) "
#: g10/keyedit.c:4706
msgid "Create a revocation certificate for this signature? (y/N) "
msgstr "Ein Widerrufszertifikat für diese Signatur erzeugen (j/N)"
#: g10/keyedit.c:4760
msgid "Not signed by you.\n"
msgstr "Nicht von Ihnen signiert.\n"
#: g10/keyedit.c:4766
#, c-format
msgid "You have signed these user IDs on key %s:\n"
msgstr "Sie haben folgende User-IDs des Schlüssels %s beglaubigt:\n"
#: g10/keyedit.c:4795
msgid " (non-revocable)"
msgstr " (unwiderrufbar)"
#: g10/keyedit.c:4802
#, c-format
msgid "revoked by your key %s on %s\n"
msgstr "widerrufen durch Ihren Schlüssel %s um %s\n"
#: g10/keyedit.c:4827
msgid "You are about to revoke these signatures:\n"
msgstr "Es werden nun folgende Beglaubigungen entfernt:\n"
#: g10/keyedit.c:4850
msgid "Really create the revocation certificates? (y/N) "
msgstr "Wirklich ein Signatur-Widerrufszertifikat erzeugen? (j/N) "
#: g10/keyedit.c:4883
msgid "no secret key\n"
msgstr "Kein geheimer Schlüssel\n"
#: g10/keyedit.c:4951
#, c-format
msgid "user ID \"%s\" is already revoked\n"
msgstr "User-ID \"%s\" ist bereits widerrufen\n"
#: g10/keyedit.c:4968
#, c-format
msgid "WARNING: a user ID signature is dated %d seconds in the future\n"
msgstr ""
"WARNUNG: Eine User-ID-Signatur datiert mit %d Sekunden aus der Zukunft\n"
#: g10/keyedit.c:5033
#, c-format
msgid "Key %s is already revoked.\n"
msgstr "Schlüssel %s ist bereits widerrufen\n"
#: g10/keyedit.c:5094
#, c-format
msgid "Subkey %s is already revoked.\n"
msgstr "Unterschlüssel %s ist bereits widerrufen\n"
#: g10/keyedit.c:5188
#, c-format
msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n"
msgstr "Anzeigen einer %s Foto-ID (Größe %ld) für Schlüssel %s (User-ID %d)\n"
#: g10/keygen.c:279
#, c-format
msgid "preference `%s' duplicated\n"
msgstr "Voreinstellung `%s' ist doppelt\n"
#: g10/keygen.c:286
msgid "too many cipher preferences\n"
msgstr "zu viele Verschlüsselungeinstellungen\n"
#: g10/keygen.c:288
msgid "too many digest preferences\n"
msgstr "zu viele Hashvoreinstellungen\n"
#: g10/keygen.c:290
msgid "too many compression preferences\n"
msgstr "zu viele Komprimierungsvoreinstellungen\n"
#: g10/keygen.c:448
#, c-format
msgid "invalid item `%s' in preference string\n"
msgstr "Ungültiges Feld `%s' in der Voreinstellungszeichenkette\n"
#: g10/keygen.c:935
msgid "writing direct signature\n"
msgstr "Die \"Direct Key Signature\" wird geschrieben\n"
#: g10/keygen.c:981
msgid "writing self signature\n"
msgstr "Die Eigenbeglaubigung wird geschrieben\n"
#: g10/keygen.c:1037
msgid "writing key binding signature\n"
msgstr "Schreiben der \"key-binding\" Signatur\n"
#: g10/keygen.c:1216 g10/keygen.c:1266 g10/keygen.c:1271 g10/keygen.c:1356
#: g10/keygen.c:3100
#, c-format
msgid "keysize invalid; using %u bits\n"
msgstr "Ungültige Schlüssellänge; %u Bit werden verwendet\n"
#: g10/keygen.c:1222 g10/keygen.c:1277 g10/keygen.c:1285 g10/keygen.c:1362
#: g10/keygen.c:3106
#, c-format
msgid "keysize rounded up to %u bits\n"
msgstr "Schlüssellänge auf %u Bit aufgerundet\n"
#: g10/keygen.c:1311
msgid ""
"WARNING: some OpenPGP programs can't handle a DSA key with this digest size\n"
msgstr ""
"WARNUNG: Einige OpenPGP-Programme können einen DSA-Schlüssel dieser "
"Digestlänge nicht verwenden\n"
#: g10/keygen.c:1417
msgid "Sign"
msgstr "Signieren"
#: g10/keygen.c:1420
msgid "Certify"
msgstr "Zertif."
#: g10/keygen.c:1423
msgid "Encrypt"
msgstr "Verschl."
#: g10/keygen.c:1426
msgid "Authenticate"
msgstr "Authentisierung"
#. TRANSLATORS: Please use only plain ASCII characters for the
#. translation. If this is not possible use single digits. The
#. string needs to 8 bytes long. Here is a description of the
#. functions:
#.
#. s = Toggle signing capability
#. e = Toggle encryption capability
#. a = Toggle authentication capability
#. q = Finish
#.
#: g10/keygen.c:1444
msgid "SsEeAaQq"
msgstr "UuVvAaQq"
#: g10/keygen.c:1467
#, c-format
msgid "Possible actions for a %s key: "
msgstr "Mögliche Vorgänge eines %s-Schlüssels: "
#: g10/keygen.c:1471
msgid "Current allowed actions: "
msgstr "Derzeit erlaubte Vorgänge: "
#: g10/keygen.c:1476
#, c-format
msgid " (%c) Toggle the sign capability\n"
msgstr " (%c) Umschalten der Signaturfähigkeit\n"
#: g10/keygen.c:1479
#, c-format
msgid " (%c) Toggle the encrypt capability\n"
msgstr " (%c) Umschalten der Verschlüsselungsfähigkeit\n"
#: g10/keygen.c:1482
#, c-format
msgid " (%c) Toggle the authenticate capability\n"
msgstr " (%c) Umschalten der Authentisierungsfähigkeit\n"
#: g10/keygen.c:1485
#, c-format
msgid " (%c) Finished\n"
msgstr " (%c) Beenden\n"
#: g10/keygen.c:1545 sm/certreqgen-ui.c:157
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:1548
#, c-format
msgid " (%d) RSA and RSA (default)\n"
msgstr " (%d) RSA und RSA (voreingestellt)\n"
#: g10/keygen.c:1550
#, c-format
msgid " (%d) DSA and Elgamal\n"
msgstr " (%d) DSA und Elgamal\n"
#: g10/keygen.c:1552
#, c-format
msgid " (%d) DSA (sign only)\n"
msgstr " (%d) DSA (nur signieren/beglaubigen)\n"
#: g10/keygen.c:1553
#, c-format
msgid " (%d) RSA (sign only)\n"
msgstr " (%d) RSA (nur signieren/beglaubigen)\n"
#: g10/keygen.c:1557
#, c-format
msgid " (%d) Elgamal (encrypt only)\n"
msgstr " (%d) Elgamal (nur verschlüsseln)\n"
#: g10/keygen.c:1558
#, c-format
msgid " (%d) RSA (encrypt only)\n"
msgstr " (%d) RSA (nur verschlüsseln)\n"
#: g10/keygen.c:1562
#, c-format
msgid " (%d) DSA (set your own capabilities)\n"
msgstr " (%d) DSA (Leistungsfähigkeit selber einstellbar)\n"
#: g10/keygen.c:1563
#, c-format
msgid " (%d) RSA (set your own capabilities)\n"
msgstr " (%d) RSA (Leistungsfähigkeit selber einstellbar)\n"
#: g10/keygen.c:1671
#, c-format
msgid "%s keys may be between %u and %u bits long.\n"
msgstr "%s-Schlüssel können zwischen %u und %u Bit lang sein.\n"
#: g10/keygen.c:1679
#, c-format
msgid "What keysize do you want for the subkey? (%u) "
msgstr "Welche Schlüssellänge wünschen Sie für den Unterschlüssel? (%u) "
#: g10/keygen.c:1682 sm/certreqgen-ui.c:179
#, c-format
msgid "What keysize do you want? (%u) "
msgstr "Welche Schlüssellänge wünschen Sie? (%u) "
#: g10/keygen.c:1696 sm/certreqgen-ui.c:189
#, c-format
msgid "Requested keysize is %u bits\n"
msgstr "Die verlangte Schlüssellänge beträgt %u Bit\n"
#: g10/keygen.c:1784
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:1795
msgid ""
"Please specify how long the signature should be valid.\n"
" 0 = signature does not expire\n"
" <n> = signature expires in n days\n"
" <n>w = signature expires in n weeks\n"
" <n>m = signature expires in n months\n"
" <n>y = signature expires in n years\n"
msgstr ""
"Bitte wählen Sie, wie lange die Beglaubigung 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:1818
msgid "Key is valid for? (0) "
msgstr "Wie lange bleibt der Schlüssel gültig? (0) "
#: g10/keygen.c:1823
#, c-format
msgid "Signature is valid for? (%s) "
msgstr "Wie lange bleibt die Beglaubigung gültig? (%s) "
#: g10/keygen.c:1841 g10/keygen.c:1866
msgid "invalid value\n"
msgstr "Ungültiger Wert.\n"
#: g10/keygen.c:1848
msgid "Key does not expire at all\n"
msgstr "Schlüssel verfällt nie\n"
#: g10/keygen.c:1849
msgid "Signature does not expire at all\n"
msgstr "Signature verfällt nie\n"
#: g10/keygen.c:1854
#, c-format
msgid "Key expires at %s\n"
msgstr "Key verfällt am %s\n"
#: g10/keygen.c:1855
#, c-format
msgid "Signature expires at %s\n"
msgstr "Signatur verfällt am %s\n"
#: g10/keygen.c:1859
msgid ""
"Your system can't display dates beyond 2038.\n"
"However, it will be correctly handled up to 2106.\n"
msgstr ""
"Ihr Rechner kann Daten jenseits des Jahres 2038 nicht anzeigen.\n"
"Trotzdem werden Daten bis 2106 korrekt verarbeitet.\n"
#: g10/keygen.c:1872
msgid "Is this correct? (y/N) "
msgstr "Ist dies richtig? (j/N) "
#: g10/keygen.c:1922
msgid ""
"\n"
"GnuPG needs to construct a user ID to identify your key.\n"
"\n"
msgstr ""
"\n"
"GnuPG erstellt eine User-ID um Ihren Schlüssel identifizierbar zu machen.\n"
"\n"
#. TRANSLATORS: This string is in general not anymore used
#. but you should keep your existing translation. In case
#. the new string is not translated this old string will
#. be used.
#: g10/keygen.c:1937
msgid ""
"\n"
"You need a user ID to identify your key; the software constructs the user "
"ID\n"
"from the 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 Email-Adresse in dieser Form auf:\n"
" \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
"\n"
#: g10/keygen.c:1956
msgid "Real name: "
msgstr "Ihr Name (\"Vorname Nachname\"): "
#: g10/keygen.c:1964
msgid "Invalid character in name\n"
msgstr "Ungültiges Zeichen im Namen\n"
#: g10/keygen.c:1966
msgid "Name may not start with a digit\n"
msgstr "Der Name darf nicht mit einer Ziffer beginnen.\n"
#: g10/keygen.c:1968
msgid "Name must be at least 5 characters long\n"
msgstr "Der Name muß min. 5 Zeichen lang sein.\n"
#: g10/keygen.c:1976
msgid "Email address: "
msgstr "Email-Adresse: "
#: g10/keygen.c:1982
msgid "Not a valid email address\n"
msgstr "Diese Email-Adresse ist ungültig\n"
#: g10/keygen.c:1990
msgid "Comment: "
msgstr "Kommentar: "
#: g10/keygen.c:1996
msgid "Invalid character in comment\n"
msgstr "Ungültiges Zeichen im Kommentar.\n"
#: g10/keygen.c:2018
#, c-format
msgid "You are using the `%s' character set.\n"
msgstr "Sie benutzen den Zeichensatz `%s'\n"
#: g10/keygen.c:2024
#, 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:2029
msgid "Please don't put the email address into the real name or the comment\n"
msgstr "Bitte keine Emailadressen als Namen oder Kommentar verwenden\n"
#: g10/keygen.c:2044
msgid "Such a user ID already exists on this key!\n"
msgstr "Solch eine User-ID ist bereits für den Schlüssel vorhanden!\n"
#. TRANSLATORS: These are the allowed answers in
#. lower and uppercase. Below you will find the matching
#. string which should be translated accordingly and the
#. letter changed to match the one in the answer string.
#.
#. n = Change name
#. c = Change comment
#. e = Change email
#. o = Okay (ready, continue)
#. q = Quit
#.
#: g10/keygen.c:2060
msgid "NnCcEeOoQq"
msgstr "NnKkEeFfAa"
#: g10/keygen.c:2070
msgid "Change (N)ame, (C)omment, (E)mail or (Q)uit? "
msgstr "Ändern: (N)ame, (K)ommentar, (E)-Mail oder (A)bbrechen? "
#: g10/keygen.c:2071
msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
msgstr "Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(A)bbrechen? "
#: g10/keygen.c:2090
msgid "Please correct the error first\n"
msgstr "Bitte beseitigen Sie zuerst den Fehler\n"
#: g10/keygen.c:2132
msgid ""
"You need a Passphrase to protect your secret key.\n"
"\n"
msgstr ""
"Sie benötigen eine Passphrase, um den geheimen Schlüssel zu schützen.\n"
"\n"
#: g10/keygen.c:2135
msgid ""
"Please enter a passphrase to protect the off-card backup of the new "
"encryption key."
msgstr ""
"Bitte geben Sie die Passphrase ein, um die Sicherheitskopie des neuen "
"Verschlüsselungsschlüssel der Karte zu schützen."
#: g10/keygen.c:2151
#, c-format
msgid "%s.\n"
msgstr "%s.\n"
#: g10/keygen.c:2157
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 keine Passphrase - Dies ist *nicht* zu empfehlen!\n"
"Es ist trotzdem möglich. Sie können Ihre Passphrase jederzeit\n"
"ändern, indem sie dieses Programm mit dem Befehl \"--edit-key\"\n"
"aufrufen.\n"
"\n"
#: g10/keygen.c:2183
msgid ""
"We need to generate a lot of random bytes. It is a good idea to perform\n"
"some other action (type on the keyboard, move the mouse, utilize the\n"
"disks) during the prime generation; this gives the random number\n"
"generator a better chance to gain enough entropy.\n"
msgstr ""
"Wir müssen eine ganze Menge Zufallswerte erzeugen. Sie können dies\n"
"unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas\n"
"tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen.\n"
#: g10/keygen.c:3059
msgid "Key generation canceled.\n"
msgstr "Schlüsselerzeugung abgebrochen.\n"
#: g10/keygen.c:3239 g10/keygen.c:3378
#, c-format
msgid "writing public key to `%s'\n"
msgstr "schreiben des öffentlichen Schlüssels nach '%s'\n"
#: g10/keygen.c:3373
#, c-format
msgid "no writable public keyring found: %s\n"
msgstr "kein schreibbarer öffentlicher Schlüsselbund gefunden: %s\n"
#: g10/keygen.c:3386
#, c-format
msgid "error writing public keyring `%s': %s\n"
msgstr "Fehler beim Schreiben des öff. Schlüsselbundes `%s': %s\n"
#: g10/keygen.c:3413
msgid "public and secret key created and signed.\n"
msgstr "Öffentlichen und geheimen Schlüssel erzeugt und signiert.\n"
#: g10/keygen.c:3424
msgid ""
"Note that this key cannot be used for encryption. You may want to use\n"
"the command \"--edit-key\" to generate a subkey for this purpose.\n"
msgstr ""
"Bitte beachten Sie, daß dieser Schlüssel nicht zum Verschlüsseln benutzt\n"
"werden kann. Sie können aber mit dem Befehl \"--edit-key\" einen\n"
"Unterschlüssel für diesem Zweck erzeugen.\n"
#: g10/keygen.c:3437 g10/keygen.c:3547 g10/keygen.c:3659
#, c-format
msgid "Key generation failed: %s\n"
msgstr "Schlüsselerzeugung fehlgeschlagen: %s\n"
#: g10/keygen.c:3486 g10/keygen.c:3590 g10/sign.c:259
#, c-format
msgid ""
"key has been created %lu second in future (time warp or clock problem)\n"
msgstr ""
"Der Schlüssel wurde %lu Sekunde in der Zukunft erzeugt (Zeitreise oder Uhren "
"stimmen nicht überein)\n"
#: g10/keygen.c:3488 g10/keygen.c:3592 g10/sign.c:261
#, c-format
msgid ""
"key has been created %lu seconds in future (time warp or clock problem)\n"
msgstr ""
"Der Schlüssel wurde %lu Sekunden in der Zukunft erzeugt (Zeitreise oder "
"Uhren stimmen nicht überein)\n"
#: g10/keygen.c:3499 g10/keygen.c:3603
msgid "NOTE: creating subkeys for v3 keys is not OpenPGP compliant\n"
msgstr "HINWEIS: Unterschlüssel für v3-Schlüssel sind nicht OpenPGP-konform\n"
#: g10/keygen.c:3510
msgid "Secret parts of primary key are not available.\n"
msgstr "Geheime Teile des Hauptschlüssels sind nicht vorhanden.\n"
#: g10/keygen.c:3514
msgid "Secret parts of primary key are stored on-card.\n"
msgstr "Geheime Teile des Hauptschlüssels sind auf der Karte gespeichert.\n"
#: g10/keygen.c:3521 g10/keygen.c:3636
msgid "Really create? (y/N) "
msgstr "Wirklich erzeugen? (j/N) "
#: g10/keygen.c:3821
#, c-format
msgid "storing key onto card failed: %s\n"
msgstr "Speicher des Schlüssels auf der Karte schlug fehl: %s\n"
#: g10/keygen.c:3870
#, c-format
msgid "can't create backup file `%s': %s\n"
msgstr "Sicherungsdatei '%s' kann nicht erzeugt werden: %s\n"
#: g10/keygen.c:3896
#, c-format
msgid "NOTE: backup of card key saved to `%s'\n"
msgstr "Hinweis: Sicherung des Kartenschlüssels wurde auf `%s' gespeichert\n"
-#: g10/keyid.c:493 g10/keyid.c:506 g10/keyid.c:519
+#: g10/keyid.c:497 g10/keyid.c:510 g10/keyid.c:523
msgid "never "
msgstr "niemals "
#: g10/keylist.c:275
msgid "Critical signature policy: "
msgstr "Entscheidende Beglaubigungsrichtlinie: "
#: g10/keylist.c:277
msgid "Signature policy: "
msgstr "Beglaubigungsrichtlinie: "
#: g10/keylist.c:319
msgid "Critical preferred keyserver: "
msgstr "Entscheidender bevorzugter Schlüsselserver"
#: g10/keylist.c:372
msgid "Critical signature notation: "
msgstr "Entscheidender Beglaubigungs-\"Notation\": "
#: g10/keylist.c:374
msgid "Signature notation: "
msgstr "Beglaubigungs-\"Notation\": "
#: g10/keylist.c:494
msgid "Keyring"
msgstr "Schlüsselbund"
#: g10/keylist.c:1528
msgid "Primary key fingerprint:"
msgstr "Haupt-Fingerabdruck ="
#: g10/keylist.c:1530
msgid " Subkey fingerprint:"
msgstr "Unter-Fingerabdruck ="
#. TRANSLATORS: this should fit into 24 bytes to that the
#. * fingerprint data is properly aligned with the user ID
#: g10/keylist.c:1538
msgid " Primary key fingerprint:"
msgstr " Haupt-Fingerabdruck ="
#: g10/keylist.c:1540
msgid " Subkey fingerprint:"
msgstr " Unter-Fingerabdruck ="
#: g10/keylist.c:1545 g10/keylist.c:1550
msgid " Key fingerprint ="
msgstr " Schl.-Fingerabdruck ="
#: g10/keylist.c:1588
msgid " Card serial no. ="
msgstr " Kartenseriennr. ="
#: g10/keyring.c:1258
#, c-format
msgid "renaming `%s' to `%s' failed: %s\n"
msgstr "umbenennen von `%s' nach `%s' schlug fehl: %s\n"
#: g10/keyring.c:1382
#, c-format
msgid "caching keyring `%s'\n"
msgstr "Puffern des Schlüsselbundes `%s'\n"
#: g10/keyring.c:1441
#, c-format
msgid "%lu keys cached so far (%lu signatures)\n"
msgstr "%lu Schlüssel bislang gepuffert (%lu Beglaubigungen)\n"
#: g10/keyring.c:1453
#, c-format
msgid "%lu keys cached (%lu signatures)\n"
msgstr "%lu Schlüssel gepuffert (%lu Beglaubigungen)\n"
#: g10/keyring.c:1525
#, c-format
msgid "%s: keyring created\n"
msgstr "%s: Schlüsselbund erstellt\n"
#: g10/keyserver.c:75
msgid "include revoked keys in search results"
msgstr "Widerrufene Schlüssel in den Suchergebnissen aufführen"
#: g10/keyserver.c:76
msgid "include subkeys when searching by key ID"
msgstr "Unterschlüssel in der Suche über Schlüssel-IDs aufführen"
#: g10/keyserver.c:78
msgid "use temporary files to pass data to keyserver helpers"
msgstr ""
"verwende temporäre Dateien, um Daten an die Schlüsselserverhilfsprogramme zu "
"geben"
#: g10/keyserver.c:80
msgid "do not delete temporary files after using them"
msgstr "Temporäre Dateien nach Nutzung nicht löschen"
#: g10/keyserver.c:84
msgid "automatically retrieve keys when verifying signatures"
msgstr "Schlüssel für die Signaturprüfung automatisch holen"
#: g10/keyserver.c:86
msgid "honor the preferred keyserver URL set on the key"
msgstr ""
"Die im Schlüssel enthaltene bevorzugte URL für Schlüsselserver beachten"
#: g10/keyserver.c:88
msgid "honor the PKA record set on a key when retrieving keys"
msgstr "Die im Schlüssel enthaltenen PKA-Daten beim Schlüsselholen beachten"
#: g10/keyserver.c:154
#, c-format
msgid "WARNING: keyserver option `%s' is not used on this platform\n"
msgstr ""
"WARNUNG: Schlüsselserver-Option `%s' wird auf dieser Plattform nicht "
"verwendet\n"
#: g10/keyserver.c:545
msgid "disabled"
msgstr "abgeschaltet"
#: g10/keyserver.c:750
msgid "Enter number(s), N)ext, or Q)uit > "
msgstr "Eingabe von Nummern, Nächste (N) oder Abbrechen (Q) > "
#: g10/keyserver.c:834 g10/keyserver.c:1462
#, c-format
msgid "invalid keyserver protocol (us %d!=handler %d)\n"
msgstr "Ungültiges Schlüsselserverprotokoll (wir %d!=Handhabungsroutine %d)\n"
#: g10/keyserver.c:935
#, c-format
msgid "key \"%s\" not found on keyserver\n"
msgstr "Schlüssel \"%s\" wurde auf dem Schlüsselserver nicht gefunden\n"
#: g10/keyserver.c:937
msgid "key not found on keyserver\n"
msgstr "Schlüssel wurde auf dem Schlüsselserver nicht gefunden\n"
#: g10/keyserver.c:1181
#, c-format
msgid "requesting key %s from %s server %s\n"
msgstr "fordere Schlüssel %s von %s-Server %s an\n"
#: g10/keyserver.c:1185
#, c-format
msgid "requesting key %s from %s\n"
msgstr "fordere Schlüssel %s von %s an\n"
#: g10/keyserver.c:1209
#, c-format
msgid "searching for names from %s server %s\n"
msgstr "suche Namen auf %s-Server %s\n"
#: g10/keyserver.c:1212
#, c-format
msgid "searching for names from %s\n"
msgstr "suche Namen auf %s\n"
#: g10/keyserver.c:1365
#, c-format
msgid "sending key %s to %s server %s\n"
msgstr "sende Schlüssel %s auf den %s-Server %s\n"
#: g10/keyserver.c:1369
#, c-format
msgid "sending key %s to %s\n"
msgstr "sende Schlüssel %s auf %s\n"
#: g10/keyserver.c:1412
#, c-format
msgid "searching for \"%s\" from %s server %s\n"
msgstr "suche nach \"%s\" auf %s-Server %s\n"
#: g10/keyserver.c:1415
#, c-format
msgid "searching for \"%s\" from %s\n"
msgstr "suche nach \"%s\" auf %s\n"
#: g10/keyserver.c:1422 g10/keyserver.c:1519
msgid "no keyserver action!\n"
msgstr "Kein Schlüsselserver-Vorgang\n"
#: g10/keyserver.c:1470
#, c-format
msgid "WARNING: keyserver handler from a different version of GnuPG (%s)\n"
msgstr ""
"WARNUNG: Die Schlüsselserver-Handhabungsroutine stammt von einer anderen "
"GnuPG-Version (%s)\n"
#: g10/keyserver.c:1479
msgid "keyserver did not send VERSION\n"
msgstr "Schlüsselserver sendete VERSION nicht\n"
#: g10/keyserver.c:1543 g10/keyserver.c:2082
msgid "no keyserver known (use option --keyserver)\n"
msgstr "Kein Schlüsselserver bekannt (Option --keyserver verwenden)\n"
#: g10/keyserver.c:1549
msgid "external keyserver calls are not supported in this build\n"
msgstr ""
"Externe Schlüsselserveraufrufe werden in diesem \"Build\" nicht unterstützt\n"
#: g10/keyserver.c:1562
#, c-format
msgid "no handler for keyserver scheme `%s'\n"
msgstr "Keine Handhabungsroutine für Schlüsselserverschema `%s'\n"
#: g10/keyserver.c:1567
#, c-format
msgid "action `%s' not supported with keyserver scheme `%s'\n"
msgstr "Vorgang `%s' wird vom Schlüsselserverschema `%s' nicht unterstützt\n"
#: g10/keyserver.c:1575
#, c-format
msgid "%s does not support handler version %d\n"
msgstr "%s unterstützt Hilfsroutinenversion %d nicht\n"
#: g10/keyserver.c:1582
msgid "keyserver timed out\n"
msgstr "Schlüsselserver-Zeitüberschreitung\n"
#: g10/keyserver.c:1587
msgid "keyserver internal error\n"
msgstr "interner Fehler Schlüsselserver\n"
#: g10/keyserver.c:1596
#, c-format
msgid "keyserver communications error: %s\n"
msgstr "Schlüsselserver-Datenübertragunsfehler: %s\n"
#: g10/keyserver.c:1622 g10/keyserver.c:1657
#, c-format
msgid "\"%s\" not a key ID: skipping\n"
msgstr "\"%s\" ist keine Schlüssel-ID: überspringe\n"
#: g10/keyserver.c:1920
#, c-format
msgid "WARNING: unable to refresh key %s via %s: %s\n"
msgstr "WARNUNG: Schlüssel %s kann per %s nicht aktualisiert werden: %s\n"
#: g10/keyserver.c:1942
#, c-format
msgid "refreshing 1 key from %s\n"
msgstr "ein Schlüssel wird per %s aktualisiert\n"
#: g10/keyserver.c:1944
#, c-format
msgid "refreshing %d keys from %s\n"
msgstr "%d Schlüssel werden per %s aktualisiert\n"
#: g10/keyserver.c:2001
#, c-format
msgid "WARNING: unable to fetch URI %s: %s\n"
msgstr "WARNUNG: die URI %s kann nicht geholt werden: %s\n"
#: g10/keyserver.c:2007
#, c-format
msgid "WARNING: unable to parse URI %s\n"
msgstr "WARNUNG: die URI %s kann nicht analysiert werden\n"
#: g10/mainproc.c:231
#, c-format
msgid "weird size for an encrypted session key (%d)\n"
msgstr "Seltsame Länge für einen verschlüsselten Sitzungsschlüssel (%d)\n"
#: g10/mainproc.c:284
#, c-format
msgid "%s encrypted session key\n"
msgstr "%s verschlüsselter Sitzungsschlüssel\n"
#: g10/mainproc.c:294
#, c-format
msgid "passphrase generated with unknown digest algorithm %d\n"
msgstr "Passphrase wurde mit unbekanntem Hashverfahren %d erstellt\n"
#: g10/mainproc.c:360
#, c-format
msgid "public key is %s\n"
msgstr "Öffentlicher Schlüssel ist %s\n"
#: g10/mainproc.c:429
msgid "public key encrypted data: good DEK\n"
msgstr "Mit öffentlichem Schlüssel verschlüsselte Daten: Korrekte DEK\n"
#: g10/mainproc.c:462
#, c-format
msgid "encrypted with %u-bit %s key, ID %s, created %s\n"
msgstr "verschlüsselt mit %u-Bit %s Schlüssel, ID %s, erzeugt %s\n"
#: g10/mainproc.c:466 g10/pkclist.c:228
#, c-format
msgid " \"%s\"\n"
msgstr " \"%s\"\n"
# Scripte scannen lt. dl1bke auf "ID (0-9A-F)+" deswegen muß "ID" rein :-(
# [kw]
#: g10/mainproc.c:470
#, c-format
msgid "encrypted with %s key, ID %s\n"
msgstr "verschlüsselt mit %s Schlüssel, ID %s\n"
#: g10/mainproc.c:485
#, c-format
msgid "public key decryption failed: %s\n"
msgstr "Entschlüsselung mit Public-Key-Verfahren fehlgeschlagen: %s\n"
#: g10/mainproc.c:501
#, c-format
msgid "encrypted with %lu passphrases\n"
msgstr "Verschlüsselt mit %lu Passphrases\n"
#: g10/mainproc.c:503
msgid "encrypted with 1 passphrase\n"
msgstr "Verschlüsselt mit einer Passphrase\n"
#: g10/mainproc.c:535 g10/mainproc.c:557
#, c-format
msgid "assuming %s encrypted data\n"
msgstr "vermutlich %s-verschlüsselte Daten\n"
#: g10/mainproc.c:543
#, c-format
msgid "IDEA cipher unavailable, optimistically attempting to use %s instead\n"
msgstr "IDEA-Verschlüsselung nicht verfügbar; versucht wird stattdessen %s\n"
#: g10/mainproc.c:576
msgid "decryption okay\n"
msgstr "Entschlüsselung erfolgreich\n"
#: g10/mainproc.c:580
msgid "WARNING: message was not integrity protected\n"
msgstr ""
"WARNUNG: Botschaft wurde nicht integritätsgeschützt (integrity protected)\n"
#: g10/mainproc.c:594
msgid "WARNING: encrypted message has been manipulated!\n"
msgstr "Warnung: Verschlüsselte Botschaft ist manipuliert worden!\n"
#: g10/mainproc.c:602
#, c-format
msgid "cleared passphrase cached with ID: %s\n"
msgstr "Passphrase aus dem Cache gelöscht. Cache ID: %s\n"
#: g10/mainproc.c:608
#, c-format
msgid "decryption failed: %s\n"
msgstr "Entschlüsselung fehlgeschlagen: %s\n"
#: g10/mainproc.c:629
msgid "NOTE: sender requested \"for-your-eyes-only\"\n"
msgstr ""
"Hinweis: Der Absender verlangte Vertraulichkeit(\"for-your-eyes-only\")\n"
#: g10/mainproc.c:631
#, c-format
msgid "original file name='%.*s'\n"
msgstr "Ursprünglicher Dateiname='%.*s'\n"
#: g10/mainproc.c:719
msgid "WARNING: multiple plaintexts seen\n"
msgstr "WARNUNG: Mehr als ein Klartext erkannt\n"
#: g10/mainproc.c:861
msgid "standalone revocation - use \"gpg --import\" to apply\n"
msgstr ""
"Einzelner Widerruf - verwenden Sie \"gpg --import\", um ihn anzuwenden\n"
#: g10/mainproc.c:1219 g10/mainproc.c:1263
msgid "no signature found\n"
msgstr "Keine Signatur gefunden\n"
#: g10/mainproc.c:1502
msgid "signature verification suppressed\n"
msgstr "Signaturüberprüfung unterdrückt\n"
#: g10/mainproc.c:1611
msgid "can't handle this ambiguous signature data\n"
msgstr "diese mehrdeutige Signaturdaten können nicht bearbeitet werden\n"
#: g10/mainproc.c:1622
#, c-format
msgid "Signature made %s\n"
msgstr "Signatur vom %s\n"
#: g10/mainproc.c:1623
#, c-format
msgid " using %s key %s\n"
msgstr " mittels %s-Schlüssel %s\n"
# Scripte scannen lt. dl1bke auf "ID (0-9A-F)+" deswegen muß "ID" rein :-(
#: g10/mainproc.c:1627
#, c-format
msgid "Signature made %s using %s key ID %s\n"
msgstr "Signatur vom %s mittels %s-Schlüssel ID %s\n"
#: g10/mainproc.c:1647
msgid "Key available at: "
msgstr "Schlüssel erhältlich bei: "
#: g10/mainproc.c:1780 g10/mainproc.c:1828
#, c-format
msgid "BAD signature from \"%s\""
msgstr "FALSCHE Signatur von \"%s\""
#: g10/mainproc.c:1782 g10/mainproc.c:1830
#, c-format
msgid "Expired signature from \"%s\""
msgstr "Verfallene Signatur von \"%s\""
#: g10/mainproc.c:1784 g10/mainproc.c:1832
#, c-format
msgid "Good signature from \"%s\""
msgstr "Korrekte Signatur von \"%s\""
#: g10/mainproc.c:1834
msgid "[uncertain]"
msgstr "[ungewiß] "
#: g10/mainproc.c:1867
#, c-format
msgid " aka \"%s\""
msgstr " alias \"%s\""
#: g10/mainproc.c:1965
#, c-format
msgid "Signature expired %s\n"
msgstr "Diese Signatur ist seit %s verfallen.\n"
#: g10/mainproc.c:1970
#, c-format
msgid "Signature expires %s\n"
msgstr "Diese Signatur verfällt am %s.\n"
#: g10/mainproc.c:1973
#, c-format
msgid "%s signature, digest algorithm %s\n"
msgstr "%s Signatur, Hashmethode \"%s\"\n"
#: g10/mainproc.c:1974
msgid "binary"
msgstr "Binäre"
#: g10/mainproc.c:1975
msgid "textmode"
msgstr "Textmodus"
-#: g10/mainproc.c:1975 g10/trustdb.c:548
+#: g10/mainproc.c:1975 g10/trustdb.c:548 dirmngr/ocsp.c:700
msgid "unknown"
msgstr "unbekannt"
#: g10/mainproc.c:1995
#, c-format
msgid "Can't check signature: %s\n"
msgstr "Signatur kann nicht geprüft werden: %s\n"
#: g10/mainproc.c:2079 g10/mainproc.c:2095 g10/mainproc.c:2191
msgid "not a detached signature\n"
msgstr "keine abgetrennte Signatur\n"
#: g10/mainproc.c:2122
msgid ""
"WARNING: multiple signatures detected. Only the first will be checked.\n"
msgstr ""
"WARNUNG: Mehrfache Signaturen erkannt. Es wird nur die erste geprüft.\n"
#: g10/mainproc.c:2130
#, c-format
msgid "standalone signature of class 0x%02x\n"
msgstr "Einzelne Signatur der Klasse 0x%02x\n"
#: g10/mainproc.c:2195
msgid "old style (PGP 2.x) signature\n"
msgstr "Signatur nach alter (PGP 2.x) Art\n"
#: g10/mainproc.c:2205
msgid "invalid root packet detected in proc_tree()\n"
msgstr "ungültiges root-Paket in proc_tree() entdeckt\n"
#: g10/misc.c:109 g10/misc.c:139 g10/misc.c:215
#, c-format
msgid "fstat of `%s' failed in %s: %s\n"
msgstr "fstat von `%s' schlug fehl in %s: %s\n"
#: g10/misc.c:178
#, c-format
msgid "fstat(%d) failed in %s: %s\n"
msgstr "fstat(%d) schlug fehl in %s: %s\n"
#: g10/misc.c:296
#, c-format
msgid "WARNING: using experimental public key algorithm %s\n"
msgstr "WARNUNG: Verwendung des experimentellen Public-Key-Verfahrens %s\n"
#: g10/misc.c:302
msgid "WARNING: Elgamal sign+encrypt keys are deprecated\n"
msgstr ""
"WARNUNG: Die Verwendung von Elgamal sign+encrypt Schlüsseln ist nicht "
"ratsam\n"
#: g10/misc.c:315
#, c-format
msgid "WARNING: using experimental cipher algorithm %s\n"
msgstr "WARNING: Verwendung des experimentellen Verschlüsselungsverfahren %s\n"
#: g10/misc.c:330
#, c-format
msgid "WARNING: using experimental digest algorithm %s\n"
msgstr "WARNUNG: Verwendung des experimentellen Hashverfahrens %s\n"
#: g10/misc.c:335
#, c-format
msgid "WARNING: digest algorithm %s is deprecated\n"
msgstr "WARNUNG: Die Verwendung des Hashverfahrens %s ist nicht ratsam\n"
#: g10/misc.c:538
msgid "the IDEA cipher plugin is not present\n"
msgstr "das IDEA-Verschlüsselungs-Plugin ist nicht vorhanden\n"
#: g10/misc.c:799
#, c-format
msgid "%s:%d: deprecated option \"%s\"\n"
msgstr "%s:%d: mißbilligte Option \"%s\".\n"
#: g10/misc.c:803
#, c-format
msgid "WARNING: \"%s\" is a deprecated option\n"
msgstr "WARNUNG: \"%s\" ist eine mißbilligte Option.\n"
#: g10/misc.c:805
#, c-format
msgid "please use \"%s%s\" instead\n"
msgstr "Bitte benutzen Sie stattdessen \"%s%s\".\n"
#: g10/misc.c:812
#, c-format
msgid "WARNING: \"%s\" is a deprecated command - do not use it\n"
msgstr ""
"WARNUNG: \"%s\" ist ein nicht ratsamer Befehl - verwenden Sie ihn nicht.\n"
#: g10/misc.c:822
#, c-format
msgid "%s:%u: obsolete option \"%s\" - it has no effect\n"
msgstr "%s:%u: Die Option \"%s\" is veraltet - sie hat keine Wirkung\n"
#: g10/misc.c:825
#, c-format
msgid "WARNING: \"%s\" is an obsolete option - it has no effect\n"
msgstr "WARNUNG: \"%s\" ist eine veraltete Option - sie hat keine Wirkung.\n"
#: g10/misc.c:886
msgid "Uncompressed"
msgstr "nicht komprimiert"
#. TRANSLATORS: See doc/TRANSLATE about this string.
#: g10/misc.c:911
msgid "uncompressed|none"
msgstr "unkomprimiert|kein|keine"
#: g10/misc.c:1041
#, c-format
msgid "this message may not be usable by %s\n"
msgstr "Diese Botschaft könnte für %s unbrauchbar sein\n"
#: g10/misc.c:1216
#, c-format
msgid "ambiguous option `%s'\n"
msgstr "Mehrdeutige Option '%s'\n"
#: g10/misc.c:1241
#, c-format
msgid "unknown option `%s'\n"
msgstr "Unbekannte Option '%s'\n"
#: g10/openfile.c:85
#, c-format
msgid "File `%s' exists. "
msgstr "Datei '%s' existiert bereits. "
#: g10/openfile.c:89
msgid "Overwrite? (y/N) "
msgstr "Überschreiben (j/N)? "
#: g10/openfile.c:122
#, c-format
msgid "%s: unknown suffix\n"
msgstr "%s: unbekannte Dateinamenerweiterung\n"
#: g10/openfile.c:146
msgid "Enter new filename"
msgstr "Neuen Dateinamen eingeben"
#: g10/openfile.c:214
msgid "writing to stdout\n"
msgstr "Schreiben auf die Standardausgabe\n"
#: g10/openfile.c:331
#, c-format
msgid "assuming signed data in `%s'\n"
msgstr "die unterzeichneten Daten sind wohl in '%s'\n"
#: g10/openfile.c:410
#, c-format
msgid "new configuration file `%s' created\n"
msgstr "Neue Konfigurationsdatei `%s' erstellt\n"
#: g10/openfile.c:412
#, c-format
msgid "WARNING: options in `%s' are not yet active during this run\n"
msgstr ""
"WARNUNG: Optionen in `%s' sind während dieses Laufes noch nicht wirksam\n"
#: g10/parse-packet.c:201
#, 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:864
msgid "WARNING: potentially insecure symmetrically encrypted session key\n"
msgstr ""
"WARNUNG: Möglicherweise unsicherer symmetrisch verschlüsselter "
"Sitzungsschlüssel\n"
#: g10/parse-packet.c:1358
#, c-format
msgid "subpacket of type %d has critical bit set\n"
msgstr "Im Unterpaket des Typs %d ist das \"critical bit\" gesetzt\n"
#: g10/passphrase.c:75 g10/passphrase.c:408 g10/passphrase.c:471
#, c-format
msgid "problem with the agent: %s\n"
msgstr "Problem mit dem Agenten: %s\n"
#: g10/passphrase.c:333 g10/passphrase.c:603 g10/passphrase.c:702
#, c-format
msgid " (main key ID %s)"
msgstr " (Hauptschlüssel-ID %s)"
#: g10/passphrase.c:347
#, c-format
msgid ""
"Please enter the passphrase to unlock the secret key for the OpenPGP "
"certificate:\n"
"\"%.*s\"\n"
"%u-bit %s key, ID %s,\n"
"created %s%s.\n"
msgstr ""
"Sie benötigen eine Passphrase, um den geheimen OpenPGP Schlüssel zu "
"entsperren.\n"
"Benutzer: \"%.*s\"\n"
"%u-bit %s Schlüssel, ID %s, erzeugt %s%s\n"
#: g10/passphrase.c:373
msgid "Enter passphrase\n"
msgstr "Geben Sie die Passphrase ein\n"
#: g10/passphrase.c:402
msgid "cancelled by user\n"
msgstr "Abbruch durch Benutzer\n"
#: g10/passphrase.c:582
#, c-format
msgid ""
"You need a passphrase to unlock the secret key for\n"
"user: \"%s\"\n"
msgstr ""
"Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren.\n"
"Benutzer: \"%s\"\n"
#: g10/passphrase.c:590
#, c-format
msgid "%u-bit %s key, ID %s, created %s"
msgstr "%u-Bit %s Schlüssel, ID %s, erzeugt %s"
#: g10/passphrase.c:599
#, c-format
msgid " (subkey on main key ID %s)"
msgstr " (Unterschlüssel aus Hauptschlüssel-ID %s)"
#: g10/passphrase.c:709
msgid ""
"Please enter the passphrase to unlock the secret key for the OpenPGP "
"certificate:"
msgstr ""
"Sie benötigen eine Passphrase, um den geheimen OpenPGP Schlüssel zu "
"entsperren:"
#: g10/passphrase.c:713
msgid ""
"Please enter the passphrase to import the secret key for the OpenPGP "
"certificate:"
msgstr ""
"Sie benötigen eine Passphrase, um den geheimen OpenPGP Schlüssel zu "
"importieren:"
#: g10/passphrase.c:721
#, c-format
msgid ""
"%s\n"
"\"%.*s\"\n"
"%u-bit %s key, ID %s,\n"
"created %s%s.\n"
msgstr ""
"%s\n"
"\"%.*s\"\n"
"%u-Bit %s Schlüssel, ID %s,\n"
"erzeugt %s%s.\n"
# translated by wk
#: g10/photoid.c:74
msgid ""
"\n"
"Pick an image to use for your photo ID. The image must be a JPEG file.\n"
"Remember that the image is stored within your public key. If you use a\n"
"very large picture, your key will become very large as well!\n"
"Keeping the image close to 240x288 is a good size to use.\n"
msgstr ""
"\n"
"Wählen Sie ein Bild für Ihre Foto-ID aus. Das Bild muß eine JPEG-Datei\n"
"sein. Bitte beachten Sie, daß das Bild in Ihrem öffentlichen\n"
"Schlüssel gespeichert wird. Wenn Sie ein sehr großes Bild benutzen,\n"
"wir Ihr Schlüssel leider auch sehr groß werden. Ein Bild der Größe\n"
"240x288 Pixel ist eine gute Wahl.\n"
#: g10/photoid.c:96
msgid "Enter JPEG filename for photo ID: "
msgstr "Dateiname mit JPEG für die Foto-ID eingeben: "
#: g10/photoid.c:117
#, c-format
msgid "unable to open JPEG file `%s': %s\n"
msgstr "JPEG-Datei `%s' kann nicht geöffnet werden: %s\n"
#: g10/photoid.c:128
#, c-format
msgid "This JPEG is really large (%d bytes) !\n"
msgstr "Diese JPEG-Datei ist echt groß (%d Byte)!\n"
#: g10/photoid.c:130
msgid "Are you sure you want to use it? (y/N) "
msgstr "Wollen Sie es wirklich benutzen? (j/N) "
#: g10/photoid.c:147
#, c-format
msgid "`%s' is not a JPEG file\n"
msgstr "`%s' ist keine JPEG-Datei\n"
#: g10/photoid.c:166
msgid "Is this photo correct (y/N/q)? "
msgstr "Ist dieses Bild richtig? (j/N) "
#: g10/photoid.c:370
msgid "unable to display photo ID!\n"
msgstr "Die Foto-ID kann nicht angezeigt werden!\n"
#: g10/pkclist.c:72 g10/revoke.c:589
msgid "No reason specified"
msgstr "Kein Grund angegeben"
#: g10/pkclist.c:74 g10/revoke.c:591
msgid "Key is superseded"
msgstr "Schlüssel ist überholt"
#: g10/pkclist.c:76 g10/revoke.c:590
msgid "Key has been compromised"
msgstr "Hinweis: Dieser Schlüssel ist nicht mehr sicher"
#: g10/pkclist.c:78 g10/revoke.c:592
msgid "Key is no longer used"
msgstr "Schlüssel wird nicht mehr benutzt"
#: g10/pkclist.c:80 g10/revoke.c:593
msgid "User ID is no longer valid"
msgstr "User-ID ist nicht mehr gültig"
#: g10/pkclist.c:84
msgid "reason for revocation: "
msgstr "Grund für Widerruf: "
#: g10/pkclist.c:100
msgid "revocation comment: "
msgstr "Widerruf-Bemerkung: "
#: g10/pkclist.c:215
msgid "iImMqQsS"
msgstr "iImMqQsS"
#: g10/pkclist.c:223
msgid "No trust value assigned to:\n"
msgstr "Es ist kein \"trust value\" zugewiesen für:\n"
#: g10/pkclist.c:256
#, c-format
msgid " aka \"%s\"\n"
msgstr " \"%s\"\n"
#: g10/pkclist.c:266
msgid ""
"How much do you trust that this key actually belongs to the named user?\n"
msgstr ""
"Wie sicher sind Sie, daß dieser Schlüssel wirklich dem angegebenen Besitzer "
"gehört?\n"
#: g10/pkclist.c:281
#, c-format
msgid " %d = I don't know or won't say\n"
msgstr " %d = Weiß nicht so recht\n"
#: g10/pkclist.c:283
#, c-format
msgid " %d = I do NOT trust\n"
msgstr " %d = Nein, ihm traue ich NICHT\n"
#: g10/pkclist.c:289
#, c-format
msgid " %d = I trust ultimately\n"
msgstr " %d = Ich vertraue ihm absolut\n"
#: g10/pkclist.c:295
msgid " m = back to the main menu\n"
msgstr " m = Zurück zum Menü\n"
#: g10/pkclist.c:298
msgid " s = skip this key\n"
msgstr " s = diesen Schlüssel überspringen\n"
#: g10/pkclist.c:299
msgid " q = quit\n"
msgstr " q = verlassen\n"
#: g10/pkclist.c:303
#, c-format
msgid ""
"The minimum trust level for this key is: %s\n"
"\n"
msgstr "Die minimale Trust-Ebene für diesen Schlüssel beträgt: %s\n"
#: g10/pkclist.c:309 g10/revoke.c:618
msgid "Your decision? "
msgstr "Ihre Auswahl? "
#: g10/pkclist.c:330
msgid "Do you really want to set this key to ultimate trust? (y/N) "
msgstr "Wollen Sie diesem Schlüssel wirklich uneingeschränkt vertrauen? (j/N) "
#: g10/pkclist.c:344
msgid "Certificates leading to an ultimately trusted key:\n"
msgstr "Zertifikate führen zu einem letztlich vertrauenswürdigen Schlüssel:\n"
#: g10/pkclist.c:429
#, c-format
msgid "%s: There is no assurance this key belongs to the named user\n"
msgstr ""
"%s: Es gibt keine Garantie, daß dieser Schlüssel wirklich dem angegebenen "
"Besitzer gehört.\n"
#: g10/pkclist.c:434
#, c-format
msgid "%s: There is limited assurance this key belongs to the named user\n"
msgstr ""
"%s: Es gibt nur eine beschränkte Garantie, daß dieser Schlüssel wirklich dem "
"angegebenen Besitzer gehört.\n"
#: g10/pkclist.c:440
msgid "This key probably belongs to the named user\n"
msgstr "Dieser Schlüssel gehört wahrscheinlich dem angegebenen Besitzer\n"
#: g10/pkclist.c:445
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:471
msgid ""
"It is NOT certain that the key belongs to the person named\n"
"in the user ID. If you *really* know what you are doing,\n"
"you may answer the next question with yes.\n"
msgstr ""
"Es ist NICHT sicher, daß der Schlüssel zu dem in der User-ID\n"
"Genannten gehört. Wenn Sie *wirklich* wissen, was Sie tun,\n"
"können Sie die nächste Frage mit ja beantworten\n"
#: g10/pkclist.c:490
msgid "Use this key anyway? (y/N) "
msgstr "Diesen Schlüssel trotzdem benutzen? (j/N) "
#: g10/pkclist.c:524
msgid "WARNING: Using untrusted key!\n"
msgstr "WARNUNG: Ein Schlüssel ohne gesichertes Vertrauen wird benutzt!\n"
#: g10/pkclist.c:531
msgid "WARNING: this key might be revoked (revocation key not present)\n"
msgstr ""
"WARNUNG: Dieser Schlüssel ist u.U. widerrufen: Widerrufschlüssel ist nicht "
"vorhanden\n"
#: g10/pkclist.c:540
msgid "WARNING: This key has been revoked by its designated revoker!\n"
msgstr ""
"WARNUNG: Dieser Schlüssel wurde vom vorgesehen Widerrufer widerrufen!\n"
#: g10/pkclist.c:543
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:544
msgid " This could mean that the signature is forged.\n"
msgstr " Das könnte bedeuten, daß die Signatur gefälscht ist.\n"
#: g10/pkclist.c:550
msgid "WARNING: This subkey has been revoked by its owner!\n"
msgstr "WARNUNG: Dieser Unterschlüssel wurde von seinem Besitzer widerrufen!\n"
#: g10/pkclist.c:555
msgid "Note: This key has been disabled.\n"
msgstr "Hinweis: Dieser Schlüssel wurde abgeschaltet.\n"
#: g10/pkclist.c:575
#, c-format
msgid "Note: Verified signer's address is `%s'\n"
msgstr "Hinweis: Überprüfte Adresse des Unterzeichners ist `%s'\n"
#: g10/pkclist.c:582
#, c-format
msgid "Note: Signer's address `%s' does not match DNS entry\n"
msgstr ""
"Hinweise: Adresse des Unterzeichners `%s' passt nicht zum DNS-Eintrag\n"
#: g10/pkclist.c:594
msgid "trustlevel adjusted to FULL due to valid PKA info\n"
msgstr "\"Trust\"-Ebene auf VOLLSTÄNDIG geändert (wg. gültiger PKA-Info)\n"
#: g10/pkclist.c:602
msgid "trustlevel adjusted to NEVER due to bad PKA info\n"
msgstr "\"Trust\"-Ebene auf NIEMALS geändert (wg. falscher PKA-Info)\n"
#: g10/pkclist.c:613
msgid "Note: This key has expired!\n"
msgstr "Hinweis: Dieser Schlüssel ist verfallen!\n"
#: g10/pkclist.c:624
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:626
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:634
msgid "WARNING: We do NOT trust this key!\n"
msgstr "WARNUNG: Wir haben KEIN Vertrauen zu diesem Schlüssel!\n"
#: g10/pkclist.c:635
msgid " The signature is probably a FORGERY.\n"
msgstr " Die Signatur ist wahrscheinlich eine FÄLSCHUNG.\n"
#: g10/pkclist.c:643
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:645
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:800 g10/pkclist.c:811 g10/pkclist.c:937 g10/pkclist.c:978
#, c-format
msgid "%s: skipped: %s\n"
msgstr "%s: übersprungen: %s\n"
#: g10/pkclist.c:822
#, c-format
msgid "%s: skipped: public key is disabled\n"
msgstr "%s: übersprungen: öffentlicher Schlüssel ist abgeschaltet\n"
#: g10/pkclist.c:840 g10/pkclist.c:948
#, c-format
msgid "%s: skipped: public key already present\n"
msgstr "%s: übersprungen: öffentlicher Schlüssel bereits vorhanden\n"
#: g10/pkclist.c:998
msgid "You did not specify a user ID. (you may use \"-r\")\n"
msgstr ""
"Sie haben keine User-ID angegeben (Sie können die Option \"-r\" verwenden).\n"
#: g10/pkclist.c:1022
msgid "Current recipients:\n"
msgstr "Derzeitige Empfänger:\n"
#: g10/pkclist.c:1048
msgid ""
"\n"
"Enter the user ID. End with an empty line: "
msgstr ""
"\n"
"Geben Sie die User-ID ein. Beenden mit einer leeren Zeile: "
#: g10/pkclist.c:1073
msgid "No such user ID.\n"
msgstr "Keine solche User-ID vorhanden.\n"
#: g10/pkclist.c:1082 g10/pkclist.c:1156
msgid "skipped: public key already set as default recipient\n"
msgstr ""
"übersprungen: öffentlicher Schlüssel bereits als Standardempfänger gesetzt\n"
#: g10/pkclist.c:1103
msgid "Public key is disabled.\n"
msgstr "Öffentlicher Schlüssel ist abgeschaltet.\n"
#: g10/pkclist.c:1112
msgid "skipped: public key already set\n"
msgstr "übersprungen: öffentlicher Schlüssel bereits gesetzt\n"
#: g10/pkclist.c:1147
#, c-format
msgid "unknown default recipient \"%s\"\n"
msgstr "Unbekannter voreingestellter Empfänger \"%s\"\n"
#: g10/pkclist.c:1193
msgid "no valid addressees\n"
msgstr "Keine gültigen Adressaten\n"
#: g10/pkclist.c:1517
#, c-format
msgid "Note: key %s has no %s feature\n"
msgstr "Hinweis: Schlüssel %s besitzt nicht die %s Eigenschaft\n"
#: g10/pkclist.c:1542
#, c-format
msgid "Note: key %s has no preference for %s\n"
msgstr "Hinweis: Schlüssel %s hat keine Einstellung für %s\n"
#: g10/plaintext.c:99
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:535
msgid "Detached signature.\n"
msgstr "Abgetrennte Beglaubigungen.\n"
#: g10/plaintext.c:543
msgid "Please enter name of data file: "
msgstr "Bitte geben Sie den Namen der Datendatei ein: "
#: g10/plaintext.c:580
msgid "reading stdin ...\n"
msgstr "lese stdin ...\n"
#: g10/plaintext.c:620
msgid "no signed data\n"
msgstr "keine signierten Daten\n"
#: g10/plaintext.c:638
#, c-format
msgid "can't open signed data `%s'\n"
msgstr "kann signierte Datei '%s' nicht öffnen.\n"
#: g10/plaintext.c:673
#, c-format
msgid "can't open signed data fd=%d: %s\n"
msgstr "kann signierte Daten auf fd=%d nicht öffnen: %s\n"
#: g10/pubkey-enc.c:114
#, c-format
msgid "anonymous recipient; trying secret key %s ...\n"
msgstr "Ungenannter Empfänger; Versuch mit geheimen Schlüssel %s ...\n"
#: g10/pubkey-enc.c:120
msgid "okay, we are the anonymous recipient.\n"
msgstr "Alles klar, wir sind der ungenannte Empfänger.\n"
#: g10/pubkey-enc.c:214
msgid "old encoding of the DEK is not supported\n"
msgstr "alte Kodierung des DEK wird nicht unterstützt\n"
#: g10/pubkey-enc.c:243
#, c-format
msgid "cipher algorithm %d%s is unknown or disabled\n"
msgstr "Verschlüsselungsverfahren %d%s ist unbekannt oder abgeschaltet\n"
#: g10/pubkey-enc.c:286
#, c-format
msgid "WARNING: cipher algorithm %s not found in recipient preferences\n"
msgstr ""
"WARNUNG: Das Verschlüsselungsverfahren %s wurde nicht in den "
"Empfängereinstellungen gefunden\n"
#: g10/pubkey-enc.c:311
#, c-format
msgid "NOTE: secret key %s expired at %s\n"
msgstr "Hinweis: geheimer Schlüssel %s verfällt am %s\n"
#: g10/pubkey-enc.c:318
msgid "NOTE: key has been revoked"
msgstr "Hinweis: Schlüssel wurde widerrufen"
#: g10/revoke.c:102 g10/revoke.c:116 g10/revoke.c:128 g10/revoke.c:174
#: g10/revoke.c:186 g10/revoke.c:553
#, c-format
msgid "build_packet failed: %s\n"
msgstr "\"build_packet\" fehlgeschlagen: %s\n"
#: g10/revoke.c:145
#, c-format
msgid "key %s has no user IDs\n"
msgstr "Schlüssel %s hat keine User-IDs\n"
#: g10/revoke.c:308
msgid "To be revoked by:\n"
msgstr "Schlüssel soll widerrufen werden von:\n"
#: g10/revoke.c:312
msgid "(This is a sensitive revocation key)\n"
msgstr "(Dies ist ein \"sensitiver\" Widerrufsschlüssel)\n"
#: g10/revoke.c:316
msgid "Create a designated revocation certificate for this key? (y/N) "
msgstr ""
"Ein vorgesehenes Widerrufszertifikat für diesen Schlüssel erzeugen? (j/N) "
#: g10/revoke.c:329 g10/revoke.c:517
msgid "ASCII armored output forced.\n"
msgstr "Ausgabe mit ASCII Hülle erzwungen\n"
#: g10/revoke.c:345 g10/revoke.c:532
#, c-format
msgid "make_keysig_packet failed: %s\n"
msgstr "\"make_keysig_packet\" fehlgeschlagen: %s\n"
#: g10/revoke.c:408
msgid "Revocation certificate created.\n"
msgstr "Widerrufzertifikat erzeugt.\n"
#: g10/revoke.c:414
#, c-format
msgid "no revocation keys found for \"%s\"\n"
msgstr "keine Widerrufsschlüssel für \"%s\" gefunden\n"
#: g10/revoke.c:472
#, c-format
msgid "secret key \"%s\" not found: %s\n"
msgstr "Geheimer Schlüssel \"%s\" nicht gefunden: %s\n"
#: g10/revoke.c:498
msgid "Create a revocation certificate for this key? (y/N) "
msgstr "Ein Widerrufszertifikat für diesen Schlüssel erzeugen? (j/N) "
# translated by wk
#: g10/revoke.c:560
msgid ""
"Revocation certificate created.\n"
"\n"
"Please move it to a medium which you can hide away; if Mallory gets\n"
"access to this certificate he can use it to make your key unusable.\n"
"It is smart to print this certificate and store it away, just in case\n"
"your media become unreadable. But have some caution: The print system of\n"
"your machine might store the data and make it available to others!\n"
msgstr ""
"Widerrufszertifikat wurde erzeugt.\n"
"\n"
"Bitte speichern Sie es auf einem Medium welches Sie wegschließen\n"
"können; falls Mallory (ein Angreifer) Zugang zu diesem Zertifikat\n"
"erhält, kann er Ihren Schlüssel unbrauchbar machen. Es wäre klug,\n"
"dieses Widerrufszertifikat auch auszudrucken und sicher aufzubewahren,\n"
"falls das ursprüngliche Medium nicht mehr lesbar ist. Aber Obacht: Das\n"
"Drucksystem kann unter Umständen eine Kopie anderen Nutzern zugänglich\n"
"machen.\n"
#: g10/revoke.c:601
msgid "Please select the reason for the revocation:\n"
msgstr "Grund für den Widerruf:\n"
#: g10/revoke.c:611
msgid "Cancel"
msgstr "Abbruch"
#: g10/revoke.c:613
#, c-format
msgid "(Probably you want to select %d here)\n"
msgstr "(Wahrscheinlich möchten Sie hier %d auswählen)\n"
#: g10/revoke.c:654
msgid "Enter an optional description; end it with an empty line:\n"
msgstr ""
"Geben Sie eine optionale Beschreibung ein. Beenden mit einer leeren Zeile:\n"
#: g10/revoke.c:682
#, c-format
msgid "Reason for revocation: %s\n"
msgstr "Grund für Widerruf: %s\n"
#: g10/revoke.c:684
msgid "(No description given)\n"
msgstr "(Keine Beschreibung angegeben)\n"
#: g10/revoke.c:689
msgid "Is this okay? (y/N) "
msgstr "Ist das OK? (j/N) "
#: g10/seckey-cert.c:62
#, c-format
msgid "protection algorithm %d%s is not supported\n"
msgstr "Schutzverfahren %d%s wird nicht unterstützt\n"
#: g10/seckey-cert.c:73
#, c-format
msgid "protection digest %d is not supported\n"
msgstr "Hashschutzverfahren %d wird nicht unterstützt\n"
#: g10/seskey.c:61 sm/encrypt.c:123
msgid "weak key created - retrying\n"
msgstr "Unsicherer Schlüssel erzeugt - neuer Versuch\n"
#: g10/seskey.c:65
#, c-format
msgid "cannot avoid weak key for symmetric cipher; tried %d times!\n"
msgstr ""
"Trotz %d-fachen Versuches konnte die Erzeugung eines unsicheren Schlüssels "
"für sym. Verschlüsselung nicht vermieden werden!\n"
#: g10/seskey.c:239
#, c-format
msgid "DSA key %s uses an unsafe (%zu bit) hash\n"
msgstr "DSA-Schlüssel %s verwendet einen unsicheren (%zu Bit-) Hash\n"
#: g10/seskey.c:250
#, c-format
msgid "DSA key %s requires a %zu bit or larger hash\n"
msgstr "DSA-Schlüssel %s benötigt einen mindestens %zu Bit langen Hash\n"
#: g10/sig-check.c:80
msgid "WARNING: signature digest conflict in message\n"
msgstr "WARNUNG: Widersprechende Hashverfahren in der signierten Nachricht\n"
#: g10/sig-check.c:105
#, c-format
msgid "WARNING: signing subkey %s is not cross-certified\n"
msgstr "WARNUNG: Signaturunterschlüssel %s hat keine Rücksignatur\n"
#: g10/sig-check.c:117
#, c-format
msgid "WARNING: signing subkey %s has an invalid cross-certification\n"
msgstr "WARNUNG: Signaturunterschlüssel %s hat eine ungültige Rücksignatur\n"
#: g10/sig-check.c:211
#, c-format
msgid "public key %s is %lu second newer than the signature\n"
msgstr "Öffentlicher Schlüssel %s ist %lu Sekunden jünger als die Signatur\n"
#: g10/sig-check.c:212
#, c-format
msgid "public key %s is %lu seconds newer than the signature\n"
msgstr "Öffentlicher Schlüssel %s ist %lu Sekunden jünger als die Signatur\n"
#: g10/sig-check.c:223
#, c-format
msgid ""
"key %s was created %lu second in the future (time warp or clock problem)\n"
msgstr ""
"Schlüssel %s wurde %lu Sekunden in der Zukunft erzeugt (Zeitreise oder "
"Uhrenproblem)\n"
#: g10/sig-check.c:225
#, c-format
msgid ""
"key %s was created %lu seconds in the future (time warp or clock problem)\n"
msgstr ""
"Schlüssel %s wurde %lu Sekunden in der Zukunft erzeugt (Zeitreise oder "
"Uhrenproblem)\n"
#: g10/sig-check.c:239
#, c-format
msgid "NOTE: signature key %s expired %s\n"
msgstr "Hinweis: Signaturschlüssel %s ist am %s verfallen\n"
#: g10/sig-check.c:252
#, c-format
msgid "NOTE: signature key %s has been revoked\n"
msgstr "Hinweis: Signaturschlüssel %s wurde widerrufen\n"
#: g10/sig-check.c:328
#, c-format
msgid "assuming bad signature from key %s due to an unknown critical bit\n"
msgstr ""
"Vermutlich eine FALSCHE Signatur von Schlüssel %s, wegen unbekanntem "
"\"critical bit\"\n"
-#: g10/sig-check.c:594
+#: g10/sig-check.c:593
#, c-format
msgid "key %s: no subkey for subkey revocation signature\n"
msgstr ""
"Schlüssel %s: Kein Unterschlüssel für die Unterschlüsselwiderruf-"
"Beglaubigung\n"
-#: g10/sig-check.c:621
+#: g10/sig-check.c:620
#, c-format
msgid "key %s: no subkey for subkey binding signature\n"
msgstr ""
"Schlüssel %s: Kein Unterschlüssel für die Unterschlüsselanbindungs-"
"Beglaubigung\n"
#: g10/sign.c:89
#, c-format
msgid "WARNING: unable to %%-expand notation (too large). Using unexpanded.\n"
msgstr ""
"WARNUNG: \"Notation\" kann nicht %%-erweitert werden (zu groß). Verwende "
"\"unerweiterte\".\n"
#: g10/sign.c:115
#, c-format
msgid ""
"WARNING: unable to %%-expand policy URL (too large). Using unexpanded.\n"
msgstr ""
"WARNUNG: Richtlinien-URL kann nicht %%-erweitert werden (zu groß). Verwende "
"\"unerweiterte\".\n"
#: g10/sign.c:138
#, c-format
msgid ""
"WARNING: unable to %%-expand preferred keyserver URL (too large). Using "
"unexpanded.\n"
msgstr ""
"WARNUNG: URL für bevorzugten Schlüsselserver kann nicht %%-erweitert werden "
"(zu groß). Verwende \"unerweiterte\".\n"
#: g10/sign.c:328
#, c-format
msgid "checking created signature failed: %s\n"
msgstr "Prüfung der erstellten Signatur ist fehlgeschlagen: %s\n"
#: g10/sign.c:340
#, c-format
msgid "%s/%s signature from: \"%s\"\n"
msgstr "%s/%s Signatur von: \"%s\"\n"
-#: g10/sign.c:790
+#: g10/sign.c:829
msgid "you can only detach-sign with PGP 2.x style keys while in --pgp2 mode\n"
msgstr ""
"Im --pgp2-Modus kann nur mit PGP-2.x-artigen Schlüsseln eine abgetrennte "
"Signatur erzeugt werden\n"
-#: g10/sign.c:868
+#: g10/sign.c:907
#, c-format
msgid ""
"WARNING: forcing digest algorithm %s (%d) violates recipient preferences\n"
msgstr ""
"WARNUNG: Erzwingen des Hashverfahrens %s (%d) verstößt gegen die "
"Empfängervoreinstellungen\n"
-#: g10/sign.c:994
+#: g10/sign.c:1033
msgid "signing:"
msgstr "signiere:"
-#: g10/sign.c:1111
+#: g10/sign.c:1150
msgid "you can only clearsign with PGP 2.x style keys while in --pgp2 mode\n"
msgstr ""
"Im --pgp2-Modus können Sie Klartextsignaturen nur mit PGP-2.x-artigen "
"Schlüssel machen\n"
-#: g10/sign.c:1297
+#: g10/sign.c:1336
#, c-format
msgid "%s encryption will be used\n"
msgstr "%s Verschlüsselung wird verwendet\n"
#: g10/skclist.c:150 g10/skclist.c:231
msgid "key is not flagged as insecure - can't use it with the faked RNG!\n"
msgstr ""
"Schlüssel ist nicht als unsicher gekennzeichnet - er ist nur mit einem\n"
"echten Zufallsgenerator verwendbar\n"
#: g10/skclist.c:182
#, c-format
msgid "skipped \"%s\": duplicated\n"
msgstr "übersprungen \"%s\": doppelt\n"
#: g10/skclist.c:191 g10/skclist.c:219
#, c-format
msgid "skipped \"%s\": %s\n"
msgstr "übersprungen \"%s\": %s\n"
#: g10/skclist.c:201
msgid "skipped: secret key already present\n"
msgstr "übersprungen: geheimer Schlüssel bereits vorhanden\n"
#: g10/skclist.c:220
msgid "this is a PGP generated Elgamal key which is not secure for signatures!"
msgstr ""
"Dies ist ein durch PGP erzeugter Elgamal-Schlüssel. Das ist für Signaturen "
"NICHT sicher genug!"
#: g10/tdbdump.c:58 g10/trustdb.c:362
#, c-format
msgid "trust record %lu, type %d: write failed: %s\n"
msgstr "Vertrauenssatz %lu, Typ %d: Schreiben fehlgeschlagen: %s\n"
#: g10/tdbdump.c:106
#, c-format
msgid ""
"# List of assigned trustvalues, created %s\n"
"# (Use \"gpg --import-ownertrust\" to restore them)\n"
msgstr ""
"# Liste der zugewiesenen Trustwerte, erzeugt am %s\n"
"# (\"gpg --import-ownertrust\" um sie zu restaurieren)\n"
#: g10/tdbdump.c:161 g10/tdbdump.c:169 g10/tdbdump.c:174 g10/tdbdump.c:179
#, c-format
msgid "error in `%s': %s\n"
msgstr "Fehler in `%s': %s\n"
#: g10/tdbdump.c:161
msgid "line too long"
msgstr "Zeile ist zu lang"
#: g10/tdbdump.c:169
msgid "colon missing"
msgstr "Doppelpunkt fehlt"
#: g10/tdbdump.c:175
msgid "invalid fingerprint"
msgstr "ungültiger Fingerabdruck"
#: g10/tdbdump.c:180
msgid "ownertrust value missing"
msgstr "\"Owner trust\"-Wert fehlt"
#: g10/tdbdump.c:216
#, c-format
msgid "error finding trust record in `%s': %s\n"
msgstr "Fehler beim Suchen des \"Trust records\" in `%s': %s\n"
#: g10/tdbdump.c:220
#, c-format
msgid "read error in `%s': %s\n"
msgstr "Lesefehler in `%s': %s\n"
#: g10/tdbdump.c:229 g10/trustdb.c:377
#, c-format
msgid "trustdb: sync failed: %s\n"
msgstr "\"Trust-DB\": sync fehlgeschlagen: %s\n"
#: g10/tdbio.c:128 g10/tdbio.c:1450
#, c-format
msgid "trustdb rec %lu: lseek failed: %s\n"
msgstr "trustdb Satz %lu: lseek fehlgeschlagen: %s\n"
#: g10/tdbio.c:135 g10/tdbio.c:1457
#, 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:245
msgid "trustdb transaction too large\n"
msgstr "trustdb Transaktion zu groß\n"
#: g10/tdbio.c:498
#, c-format
msgid "can't access `%s': %s\n"
msgstr "kann aus `%s' nicht zugreifen: %s\n"
#: g10/tdbio.c:525
#, c-format
msgid "%s: directory does not exist!\n"
msgstr "%s: Verzeichnis existiert nicht!\n"
#: g10/tdbio.c:535 g10/tdbio.c:558 g10/tdbio.c:599 sm/keydb.c:221
#, c-format
msgid "can't create lock for `%s'\n"
msgstr "Datei `%s' konnte nicht gesperrt werden\n"
#: g10/tdbio.c:537 g10/tdbio.c:602
#, c-format
msgid "can't lock `%s'\n"
msgstr "'%s' kann nicht gesperrt werden\n"
#: g10/tdbio.c:563
#, c-format
msgid "%s: failed to create version record: %s"
msgstr "%s: Fehler beim Erzeugen des Versionsatzes: %s"
#: g10/tdbio.c:567
#, c-format
msgid "%s: invalid trustdb created\n"
msgstr "%s: ungültige trust-db erzeugt\n"
#: g10/tdbio.c:570
#, c-format
msgid "%s: trustdb created\n"
msgstr "%s: trust-db erzeugt\n"
#: g10/tdbio.c:613
msgid "NOTE: trustdb not writable\n"
msgstr "Notiz: Die \"trustdb\" ist nicht schreibbar\n"
#: g10/tdbio.c:621
#, c-format
msgid "%s: invalid trustdb\n"
msgstr "%s: ungültige 'Trust'-Datenbank\n"
#: g10/tdbio.c:653
#, c-format
msgid "%s: failed to create hashtable: %s\n"
msgstr "%s: hashtable kann nicht erzeugt werden: %s\n"
#: g10/tdbio.c:661
#, c-format
msgid "%s: error updating version record: %s\n"
msgstr "%s: Fehler beim Ändern des Versionsatzes: %s\n"
#: g10/tdbio.c:678 g10/tdbio.c:698 g10/tdbio.c:714 g10/tdbio.c:728
#: g10/tdbio.c:758 g10/tdbio.c:1382 g10/tdbio.c:1409
#, c-format
msgid "%s: error reading version record: %s\n"
msgstr "%s: Fehler beim Lesen des Versionsatzes: %s\n"
#: g10/tdbio.c:737
#, c-format
msgid "%s: error writing version record: %s\n"
msgstr "%s: Fehler beim Schreiben des Versionsatzes: %s\n"
#: g10/tdbio.c:1177
#, c-format
msgid "trustdb: lseek failed: %s\n"
msgstr "trustdb: lseek fehlgeschlagen: %s\n"
#: g10/tdbio.c:1186
#, c-format
msgid "trustdb: read failed (n=%d): %s\n"
msgstr "trustdb: read failed (n=%d): %s\n"
#: g10/tdbio.c:1207
#, c-format
msgid "%s: not a trustdb file\n"
msgstr "%s: keine trustdb Datei\n"
#: g10/tdbio.c:1225
#, c-format
msgid "%s: version record with recnum %lu\n"
msgstr "%s: version record with recnum %lu\n"
#: g10/tdbio.c:1230
#, c-format
msgid "%s: invalid file version %d\n"
msgstr "%s: invalid file version %d\n"
#: g10/tdbio.c:1415
#, c-format
msgid "%s: error reading free record: %s\n"
msgstr "%s: Fehler beim Lesen eines freien Satzes: %s\n"
#: g10/tdbio.c:1423
#, c-format
msgid "%s: error writing dir record: %s\n"
msgstr "%s: Fehler beim Schreiben eines Verzeichnis-Satzes: %s\n"
#: g10/tdbio.c:1433
#, c-format
msgid "%s: failed to zero a record: %s\n"
msgstr "%s: konnte einen Satz nicht Nullen: %s\n"
#: g10/tdbio.c:1463
#, c-format
msgid "%s: failed to append a record: %s\n"
msgstr "%s: konnte Satz nicht anhängen: %s\n"
#: g10/tdbio.c:1506
msgid "Error: The trustdb is corrupted.\n"
msgstr "Fehler: Die Vertrauensdatenbank ist fehlerhaft\n"
#: g10/textfilter.c:147
#, c-format
msgid "can't handle text lines longer than %d characters\n"
msgstr "Textzeilen länger als %d Zeichen können nicht benutzt werden\n"
#: g10/textfilter.c:247
#, c-format
msgid "input line longer than %d characters\n"
msgstr "Eingabezeile ist länger als %d Zeichen\n"
#: g10/trustdb.c:223
#, 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:254
#, c-format
msgid "key %s: accepted as trusted key\n"
msgstr "Schlüssel %s: Als vertrauenswürdiger Schlüssel akzeptiert\n"
#: g10/trustdb.c:292
#, c-format
msgid "key %s occurs more than once in the trustdb\n"
msgstr "Schlüssel %s tritt mehr als einmal in der \"trustdb\" auf\n"
#: g10/trustdb.c:307
#, c-format
msgid "key %s: no public key for trusted key - skipped\n"
msgstr ""
"Schlüssel %s: kein öffentlicher Schlüssel für den vertrauenswürdigen "
"Schlüssel - übersprungen\n"
#: g10/trustdb.c:317
#, c-format
msgid "key %s marked as ultimately trusted\n"
msgstr "Schlüssel %s ist als uneingeschränkt vertrauenswürdig gekennzeichnet\n"
#: g10/trustdb.c:341
#, 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:347
#, c-format
msgid "trust record %lu is not of requested type %d\n"
msgstr "Vertrauenssatz %lu ist nicht von der angeforderten Art %d\n"
#: g10/trustdb.c:420
msgid "You may try to re-create the trustdb using the commands:\n"
msgstr ""
"Sie können versuchen die Vertrauensdatenbank durch folgende Befehle\n"
"wiederherzustellen:\n"
#: g10/trustdb.c:429
msgid "If that does not work, please consult the manual\n"
msgstr "Falls dies nicht funktioniert, sehen Sie bitte im Handbuch nach\n"
#: g10/trustdb.c:464
#, c-format
msgid "unable to use unknown trust model (%d) - assuming %s trust model\n"
msgstr ""
"kann unbekanntes Vertrauensmodell nicht verwenden (%d) - verwende "
"Vertrauensmodell %s\n"
#: g10/trustdb.c:470
#, c-format
msgid "using %s trust model\n"
msgstr "verwende Vertrauensmodell %s\n"
#: g10/trustdb.c:522
msgid "10 translator see trustdb.c:uid_trust_string_fixed"
msgstr "10"
#: g10/trustdb.c:524
msgid "[ revoked]"
msgstr "[widerrufen]"
#: g10/trustdb.c:526 g10/trustdb.c:531
msgid "[ expired]"
msgstr "[verfall.]"
#: g10/trustdb.c:530
msgid "[ unknown]"
msgstr "[ unbek.]"
#: g10/trustdb.c:532
msgid "[ undef ]"
msgstr "[ undef.]"
#: g10/trustdb.c:533
msgid "[marginal]"
msgstr "[marginal]"
#: g10/trustdb.c:534
msgid "[ full ]"
msgstr "[ vollst.]"
#: g10/trustdb.c:535
msgid "[ultimate]"
msgstr "[ uneing.]"
#: g10/trustdb.c:550
msgid "undefined"
msgstr "unbestimmt"
#: g10/trustdb.c:551
msgid "never"
msgstr "niemals"
#: g10/trustdb.c:552
msgid "marginal"
msgstr "marginal"
#: g10/trustdb.c:553
msgid "full"
msgstr "vollständig"
#: g10/trustdb.c:554
msgid "ultimate"
msgstr "uneingeschränkt"
#: g10/trustdb.c:594
msgid "no need for a trustdb check\n"
msgstr "\"Trust-DB\"-Überprüfung nicht nötig\n"
#: g10/trustdb.c:600 g10/trustdb.c:2486
#, c-format
msgid "next trustdb check due at %s\n"
msgstr "nächste \"Trust-DB\"-Pflichtüberprüfung am %s\n"
#: g10/trustdb.c:609
#, c-format
msgid "no need for a trustdb check with `%s' trust model\n"
msgstr "\"Trust-DB\"-Überprüfung ist beim `%s'-Vertrauensmodell nicht nötig\n"
#: g10/trustdb.c:624
#, c-format
msgid "no need for a trustdb update with `%s' trust model\n"
msgstr "\"Trust-DB\"-Änderung ist beim `%s'-Vertrauensmodell nicht nötig\n"
#: g10/trustdb.c:856 g10/trustdb.c:1308
#, c-format
msgid "public key %s not found: %s\n"
msgstr "Öffentlicher Schlüssel %s nicht gefunden: %s\n"
-#: g10/trustdb.c:1051
+#: g10/trustdb.c:1050
msgid "please do a --check-trustdb\n"
msgstr "Bitte ein --check-trustdb durchführen\n"
-#: g10/trustdb.c:1055
+#: g10/trustdb.c:1054
msgid "checking the trustdb\n"
msgstr "\"Trust-DB\" wird überprüft\n"
# translated by wk
#: g10/trustdb.c:2229
#, c-format
msgid "%d keys processed (%d validity counts cleared)\n"
msgstr "%d Schlüssel verarbeitet (%d Validity Zähler gelöscht)\n"
#: g10/trustdb.c:2294
msgid "no ultimately trusted keys found\n"
msgstr "keine uneingeschränkt vertrauenswürdigen Schlüssel gefunden\n"
#: g10/trustdb.c:2308
#, c-format
msgid "public key of ultimately trusted key %s not found\n"
msgstr ""
"öff. Schlüssel des uneingeschränkt vertrautem Schlüssel %s nicht gefunden\n"
#: g10/trustdb.c:2331
#, c-format
msgid "%d marginal(s) needed, %d complete(s) needed, %s trust model\n"
msgstr "%d marginal-needed, %d complete-needed, %s Vertrauensmodell\n"
#: g10/trustdb.c:2417
#, c-format
msgid ""
"depth: %d valid: %3d signed: %3d trust: %d-, %dq, %dn, %dm, %df, %du\n"
msgstr ""
"Tiefe: %d gültig: %3d signiert: %3d Vertrauen: %d-, %dq, %dn, %dm, %df, %"
"du\n"
#: g10/trustdb.c:2492
#, c-format
msgid "unable to update trustdb version record: write failed: %s\n"
msgstr ""
"\"Trust-DB\"-Versions-Satz kann nicht geändert werden: Schreiben "
"fehlgeschlagen: %s\n"
#: g10/verify.c:117
msgid ""
"the signature could not be verified.\n"
"Please remember that the signature file (.sig or .asc)\n"
"should be the first file given on the command line.\n"
msgstr ""
"Die Signatur konnte nicht überprüft werden.\n"
"Denken Sie daran, daß die Datei mit der Signatur (.sig oder .asc)\n"
"als erste in der Kommandozeile stehen sollte.\n"
#: g10/verify.c:204
#, c-format
msgid "input line %u too long or missing LF\n"
msgstr "Eingabezeile %u ist zu lang oder es fehlt ein LF\n"
#: g10/verify.c:253
#, c-format
msgid "can't open fd %d: %s\n"
msgstr "fd=%d kann nicht geöffnet werden: %s\n"
#: kbx/kbxutil.c:92
msgid "set debugging flags"
msgstr "Debug Flags setzen"
#: kbx/kbxutil.c:93
msgid "enable full debugging"
msgstr "Alle Debug Flags setzen"
#: kbx/kbxutil.c:117
msgid "Usage: kbxutil [options] [files] (-h for help)"
msgstr "Aufruf: kbxutil [Optionen] [Dateien] (-h für Hilfe)"
#: kbx/kbxutil.c:120
msgid ""
"Syntax: kbxutil [options] [files]\n"
"list, export, import Keybox data\n"
msgstr ""
"Syntax: kbxutil [Optionen] [Dateien]\n"
"Anlisten exportieren und Importieren von KeyBox Dateien\n"
#: scd/app-nks.c:713 scd/app-openpgp.c:2638
#, c-format
msgid "RSA modulus missing or not of size %d bits\n"
msgstr "Der RSA Modulus fehlt oder ist nicht %d Bits lang\n"
#: scd/app-nks.c:721 scd/app-openpgp.c:2650
#, c-format
msgid "RSA public exponent missing or larger than %d bits\n"
msgstr "Der öffentliche Exponent fehlt oder ist zu groß (mehr als %d Bit)\n"
#: scd/app-nks.c:801 scd/app-openpgp.c:1540 scd/app-openpgp.c:1559
#: scd/app-openpgp.c:1720 scd/app-openpgp.c:1737 scd/app-openpgp.c:1985
#: scd/app-openpgp.c:2030 scd/app-dinsig.c:303
#, c-format
msgid "PIN callback returned error: %s\n"
msgstr "PIN-Callback meldete Fehler: %s\n"
#: scd/app-nks.c:834
msgid "the NullPIN has not yet been changed\n"
msgstr "Die Nullpin wurde noch nicht geändert\n"
#: scd/app-nks.c:1092
msgid "|N|Please enter a new PIN for the standard keys."
msgstr "|N|Bitte eine neue PIN für den Standard-Schlüssel eingeben."
#: scd/app-nks.c:1093
msgid "||Please enter the PIN for the standard keys."
msgstr "||Bitte die PIN für den Standard-Schlüssel eingeben."
#: scd/app-nks.c:1099
msgid "|NP|Please enter a new PIN Unblocking Code (PUK) for the standard keys."
msgstr ""
"|NP|Bitte geben Sie einen neuen PIN Entsperrcode (PUK) für den Standard-"
"Schlüssel ein."
#: scd/app-nks.c:1101
msgid "|P|Please enter the PIN Unblocking Code (PUK) for the standard keys."
msgstr ""
"|P|Bitte geben Sie den PIN Entsperrcode (PUK) für den Standard-Schlüssel ein."
#: scd/app-nks.c:1109
msgid "|N|Please enter a new PIN for the key to create qualified signatures."
msgstr ""
"|N|Bitte geben Sie eine neue PIN für den Schlüssel zur Erstellung "
"qualifizierter Signaturen ein."
#: scd/app-nks.c:1111
msgid "||Please enter the PIN for the key to create qualified signatures."
msgstr ""
"||Bitte geben Sie die PIN für den Schlüssel zur Erstellung qualifizierter "
"Signaturen ein."
#: scd/app-nks.c:1119
msgid ""
"|NP|Please enter a new PIN Unblocking Code (PUK) for the key to create "
"qualified signatures."
msgstr ""
"|NP|Bitte geben Sie einen neuen PIN Entsperrcode (PUK) für den Schlüssel zur "
"Erstellung qualifizierter Signaturen ein."
#: scd/app-nks.c:1121
msgid ""
"|P|Please enter the PIN Unblocking Code (PUK) for the key to create "
"qualified signatures."
msgstr ""
"|N|Bitte geben Sie den PIN Entsperrcode (PUK) für den Schlüssel zur "
"Erstellung qualifizierter Signaturen ein."
#: scd/app-nks.c:1222 scd/app-openpgp.c:2063 scd/app-dinsig.c:532
#, c-format
msgid "error getting new PIN: %s\n"
msgstr "Fehler beim Abfragen einer neuen PIN: %s\n"
#: scd/app-openpgp.c:695
#, c-format
msgid "failed to store the fingerprint: %s\n"
msgstr "Der Fingerabdruck kann nicht gespeichert werden: %s\n"
#: scd/app-openpgp.c:708
#, c-format
msgid "failed to store the creation date: %s\n"
msgstr "Das Erzeugungsdatum konnte nicht gespeichert werden: %s\n"
#: scd/app-openpgp.c:1147
#, c-format
msgid "reading public key failed: %s\n"
msgstr "Lesen des öffentlichen Schlüssels fehlgeschlagen: %s\n"
#: scd/app-openpgp.c:1155 scd/app-openpgp.c:2873
msgid "response does not contain the public key data\n"
msgstr "Die Antwort enthält keine öffentliche Schlüssel-Daten\n"
#: scd/app-openpgp.c:1163 scd/app-openpgp.c:2881
msgid "response does not contain the RSA modulus\n"
msgstr "Die Antwort enthält das RSA-Modulus nicht\n"
#: scd/app-openpgp.c:1172 scd/app-openpgp.c:2891
msgid "response does not contain the RSA public exponent\n"
msgstr "Antwort enthält den öffentlichen RSA-Exponenten nicht\n"
#: scd/app-openpgp.c:1492
#, c-format
msgid "using default PIN as %s\n"
msgstr "Die Standard PIN wird für %s benutzt\n"
#: scd/app-openpgp.c:1499
#, c-format
msgid "failed to use default PIN as %s: %s - disabling further default use\n"
msgstr ""
"Die Standard PIN für %s konnte nicht benutzt werden: %s - Die Standard PIN "
"wird nicht weiter benutzt\n"
#: scd/app-openpgp.c:1514
#, c-format
msgid "||Please enter the PIN%%0A[sigs done: %lu]"
msgstr "||Bitte die PIN eingeben%%0A[Sigs erzeugt: %lu]"
#: scd/app-openpgp.c:1525 scd/app-openpgp.c:1979
msgid "||Please enter the PIN"
msgstr "||Bitte die PIN eingeben"
#: scd/app-openpgp.c:1566 scd/app-openpgp.c:1744 scd/app-openpgp.c:1992
#, c-format
msgid "PIN for CHV%d is too short; minimum length is %d\n"
msgstr "PIN für CHV%d ist zu kurz; die Mindestlänge beträgt %d\n"
#: scd/app-openpgp.c:1579 scd/app-openpgp.c:1618 scd/app-openpgp.c:1756
#: scd/app-openpgp.c:3191
#, c-format
msgid "verify CHV%d failed: %s\n"
msgstr "Prüfung des CHV%d fehlgeschlagen: %s\n"
#: scd/app-openpgp.c:1647 scd/app-openpgp.c:2011 scd/app-openpgp.c:3487
msgid "error retrieving CHV status from card\n"
msgstr "Fehler beim Holen des CHV-Status' von der Karte\n"
#: scd/app-openpgp.c:1653 scd/app-openpgp.c:3496
msgid "card is permanently locked!\n"
msgstr "Karte ist dauerhaft gesperrt!\n"
#: scd/app-openpgp.c:1660
#, c-format
msgid "%d Admin PIN attempts remaining before card is permanently locked\n"
msgstr "Noch %d Admin-PIN-Versuche, bis die Karte dauerhaft gesperrt ist\n"
#. TRANSLATORS: Do not translate the "|A|" prefix but keep it at
#. the start of the string. Use %%0A to force a linefeed.
#: scd/app-openpgp.c:1667
#, c-format
msgid "|A|Please enter the Admin PIN%%0A[remaining attempts: %d]"
msgstr "|A|Bitte die Admin-PIN eingeben.%%0A[Verbliebene Versuche: %d]"
#: scd/app-openpgp.c:1671
msgid "|A|Please enter the Admin PIN"
msgstr "|A|Bitte die Admin-PIN eingeben."
#: scd/app-openpgp.c:1692
msgid "access to admin commands is not configured\n"
msgstr "Zugriff auf Admin-Befehle ist nicht eingerichtet\n"
#: scd/app-openpgp.c:2026
msgid "||Please enter the Reset Code for the card"
msgstr "Bitte geben Sie den Rückstellcode für diese Karte ein"
#: scd/app-openpgp.c:2036 scd/app-openpgp.c:2088
#, c-format
msgid "Reset Code is too short; minimum length is %d\n"
msgstr "Der Rückstellcode ist zu kurz; die Mindestlänge beträgt %d\n"
#: scd/app-openpgp.c:2058
msgid "|RN|New Reset Code"
msgstr "|RN|Neuer Rückstellcode"
#: scd/app-openpgp.c:2059
msgid "|AN|New Admin PIN"
msgstr "|AN|Neue Admin-PIN"
#: scd/app-openpgp.c:2059
msgid "|N|New PIN"
msgstr "|N|Neue PIN"
#: scd/app-openpgp.c:2169 scd/app-openpgp.c:2959
msgid "error reading application data\n"
msgstr "Fehler beim Lesen der Anwendungsdaten\n"
#: scd/app-openpgp.c:2175 scd/app-openpgp.c:2966
msgid "error reading fingerprint DO\n"
msgstr "Fehler beim Lesen des Fingerabdrucks DO\n"
#: scd/app-openpgp.c:2185
msgid "key already exists\n"
msgstr "Schlüssel existiert bereits\n"
#: scd/app-openpgp.c:2189
msgid "existing key will be replaced\n"
msgstr "Existierender Schlüssel wird ersetzt werden\n"
#: scd/app-openpgp.c:2191
msgid "generating new key\n"
msgstr "neue Schlüssel werden erzeugt\n"
#: scd/app-openpgp.c:2193
msgid "writing new key\n"
msgstr "der neue Schlüssel wird geschrieben\n"
#: scd/app-openpgp.c:2618
msgid "creation timestamp missing\n"
msgstr "Erzeugungsdatum fehlt\n"
#: scd/app-openpgp.c:2660 scd/app-openpgp.c:2668
#, c-format
msgid "RSA prime %s missing or not of size %d bits\n"
msgstr "Die RSA Primzahl %s fehlt oder ist nicht %d Bits lang\n"
#: scd/app-openpgp.c:2764
#, c-format
msgid "failed to store the key: %s\n"
msgstr "Speichern des Schlüssels fehlgeschlagen: %s\n"
#: scd/app-openpgp.c:2850
msgid "please wait while key is being generated ...\n"
msgstr "Bitte warten, der Schlüssel wird erzeugt ...\n"
#: scd/app-openpgp.c:2863
msgid "generating key failed\n"
msgstr "Schlüsselerzeugung fehlgeschlagen\n"
#: scd/app-openpgp.c:2866
#, c-format
msgid "key generation completed (%d seconds)\n"
msgstr "Schlüsselerzeugung abgeschlossen (%d Sekunden)\n"
#: scd/app-openpgp.c:2924
msgid "invalid structure of OpenPGP card (DO 0x93)\n"
msgstr "Ungültige Struktur der OpenPGP-Karte (DO 0x93)\n"
#: scd/app-openpgp.c:2974
msgid "fingerprint on card does not match requested one\n"
msgstr "Der Fingerabdruck auf der Karte entspricht nicht dem angeforderten.\n"
#: scd/app-openpgp.c:3090
#, c-format
msgid "card does not support digest algorithm %s\n"
msgstr "Die Hashmethode %s wird von der Karte nicht unterstützt\n"
#: scd/app-openpgp.c:3166
#, c-format
msgid "signatures created so far: %lu\n"
msgstr "Anzahl bereits erzeugter Signaturen: %lu\n"
#: scd/app-openpgp.c:3501
msgid ""
"verification of Admin PIN is currently prohibited through this command\n"
msgstr ""
"Die Überprüfung der Admin PIN ist momentan durch einen Befehl verboten "
"worden\n"
#: scd/app-openpgp.c:3726 scd/app-openpgp.c:3737
#, c-format
msgid "can't access %s - invalid OpenPGP card?\n"
msgstr "Kann auf %s nicht zugreifen - ungültige OpenPGP-Karte?\n"
#: scd/app-dinsig.c:299
msgid "||Please enter your PIN at the reader's keypad"
msgstr "||Bitte die PIN auf der Tastatur des Kartenlesers eingeben"
#. TRANSLATORS: Do not translate the "|*|" prefixes but
#. keep it at the start of the string. We need this elsewhere
#. to get some infos on the string.
#: scd/app-dinsig.c:529
msgid "|N|Initial New PIN"
msgstr "|N|Erstmalige neue PIN"
#: scd/scdaemon.c:108
msgid "run in multi server mode (foreground)"
msgstr "Im Multiserver Modus ausführen"
-#: scd/scdaemon.c:118 sm/gpgsm.c:316
+#: scd/scdaemon.c:118 sm/gpgsm.c:316 dirmngr/dirmngr.c:155
msgid "|LEVEL|set the debugging level to LEVEL"
msgstr "|NAME|Die Debugstufe auf NAME setzen"
#: scd/scdaemon.c:125 tools/gpgconf-comp.c:626
msgid "|FILE|write a log to FILE"
msgstr "|DATEI|Schreibe Logs auf DATEI"
#: scd/scdaemon.c:127
msgid "|N|connect to reader at port N"
msgstr "|N|Verbinde mit dem Leser auf Port N"
#: scd/scdaemon.c:129
msgid "|NAME|use NAME as ct-API driver"
msgstr "|NAME|Benutze NAME als CT-API Treiber"
#: scd/scdaemon.c:131
msgid "|NAME|use NAME as PC/SC driver"
msgstr "|NAME|Benutze NAME als PC/SC Treiber"
#: scd/scdaemon.c:134
msgid "do not use the internal CCID driver"
msgstr "Den internen CCID Treiber nicht benutzen"
#: scd/scdaemon.c:140
msgid "|N|disconnect the card after N seconds of inactivity"
msgstr "|N|Schalte die Karte nach N Sekunden Inaktivität ab"
#: scd/scdaemon.c:142
msgid "do not use a reader's keypad"
msgstr "Die Tastatur des Kartenlesers nicht benutzen"
#: scd/scdaemon.c:145
msgid "deny the use of admin card commands"
msgstr "Verweigere die Benutzung von \"Admin\"-Befehlen"
#: scd/scdaemon.c:260
msgid "Usage: scdaemon [options] (-h for help)"
msgstr "Aufruf: scdaemon [Optionen] (-h für Hilfe)"
#: scd/scdaemon.c:262
msgid ""
"Syntax: scdaemon [options] [command [args]]\n"
"Smartcard daemon for GnuPG\n"
msgstr ""
"Syntax: scdaemon [Optionen] [Befehl [Argumente]]\n"
"Smartcard Daemon für GnuPG\n"
#: scd/scdaemon.c:769
msgid "please use the option `--daemon' to run the program in the background\n"
msgstr ""
"Bitte die Option `--daemon' nutzen, um das Programm im Hintergund "
"auszuführen\n"
-#: scd/scdaemon.c:1129
+#: scd/scdaemon.c:1129 dirmngr/dirmngr.c:1708
#, c-format
msgid "handler for fd %d started\n"
msgstr "Handhabungsroutine für fd %d gestartet\n"
-#: scd/scdaemon.c:1141
+#: scd/scdaemon.c:1141 dirmngr/dirmngr.c:1713
#, c-format
msgid "handler for fd %d terminated\n"
msgstr "Handhabungsroutine für den fd %d beendet\n"
#: sm/base64.c:327
#, c-format
msgid "invalid radix64 character %02x skipped\n"
msgstr "Ungültiges Basis-64 Zeichen %02X wurde übersprungen\n"
#: sm/call-agent.c:145
#, c-format
msgid "failed to proxy %s inquiry to client\n"
msgstr "Die %s \"inquiry\" konnte nicht an den Client weitergeleitet werden\n"
#: sm/certchain.c:196
#, c-format
msgid "validation model requested by certificate: %s"
msgstr "Durch Zertifikat angefordertes Gültigkeitsmodell: %s"
#: sm/certchain.c:197 sm/certchain.c:1828
msgid "chain"
msgstr "Kette"
#: sm/certchain.c:198 sm/certchain.c:1828
msgid "shell"
msgstr "Schale"
-#: sm/certchain.c:258
+#: sm/certchain.c:258 dirmngr/validate.c:107
#, c-format
msgid "critical certificate extension %s is not supported"
msgstr "Die kritische Zertifikaterweiterung %s wird nicht unterstützt"
-#: sm/certchain.c:297
+#: sm/certchain.c:297 dirmngr/validate.c:205
msgid "issuer certificate is not marked as a CA"
msgstr "Das Herausgeberzertifikat ist nicht für eine CA gekennzeichnet"
#: sm/certchain.c:335
msgid "critical marked policy without configured policies"
msgstr "entscheidende Richtlinie ohne konfigurierte Richtlinien"
#: sm/certchain.c:345
#, c-format
msgid "failed to open `%s': %s\n"
msgstr "Datei `%s' kann nicht geöffnet werden: %s\n"
-#: sm/certchain.c:353 sm/certchain.c:382
+#: sm/certchain.c:353 sm/certchain.c:382 dirmngr/validate.c:167
msgid "note: non-critical certificate policy not allowed"
msgstr "Notiz: Die unkritische Zertifikatsrichtlinie ist nicht erlaubt"
-#: sm/certchain.c:357 sm/certchain.c:386
+#: sm/certchain.c:357 sm/certchain.c:386 dirmngr/validate.c:172
msgid "certificate policy not allowed"
msgstr "Die Zertifikatsrichtlinie ist nicht erlaubt"
#: sm/certchain.c:498
msgid "looking up issuer at external location\n"
msgstr "Der Herausgeber wird von einer externen Stelle gesucht\n"
#: sm/certchain.c:517
#, c-format
msgid "number of issuers matching: %d\n"
msgstr "Anzahl der übereinstimmenden Herausgeber: %d\n"
#: sm/certchain.c:561
msgid "looking up issuer from the Dirmngr cache\n"
msgstr "Der Herausgeber wird im Cache des Dirmngr gesucht\n"
#: sm/certchain.c:585
#, c-format
msgid "number of matching certificates: %d\n"
msgstr "Anzahl der übereinstimmenden Zertifikate: %d\n"
#: sm/certchain.c:587
#, c-format
msgid "dirmngr cache-only key lookup failed: %s\n"
msgstr "Schlüsselsuche im Cache des Dirmngr schlug fehl: %s\n"
#: sm/certchain.c:759 sm/certchain.c:1252 sm/certchain.c:1856 sm/decrypt.c:262
#: sm/encrypt.c:339 sm/sign.c:337 sm/verify.c:114
msgid "failed to allocated keyDB handle\n"
msgstr "Ein keyDB Handle konnte nicht bereitgestellt werden\n"
#: sm/certchain.c:925
msgid "certificate has been revoked"
msgstr "Das Zertifikat wurde widerrufen"
#: sm/certchain.c:940
msgid "the status of the certificate is unknown"
msgstr "Der Status des Zertifikats ist nicht bekannt"
#: sm/certchain.c:947
msgid "please make sure that the \"dirmngr\" is properly installed\n"
msgstr ""
"Bitte vergewissern Sie sich, daß der \"dirmngr\" richtig installiert ist\n"
#: sm/certchain.c:953
#, c-format
msgid "checking the CRL failed: %s"
msgstr "Die CRL konnte nicht geprüft werden: %s"
-#: sm/certchain.c:982 sm/certchain.c:1050
+#: sm/certchain.c:982 sm/certchain.c:1050 dirmngr/validate.c:473
#, c-format
msgid "certificate with invalid validity: %s"
msgstr "Zertifikat mit unzulässiger Gültigkeit: %s"
-#: sm/certchain.c:997 sm/certchain.c:1082
+#: sm/certchain.c:997 sm/certchain.c:1082 dirmngr/validate.c:491
msgid "certificate not yet valid"
msgstr "Das Zertifikat ist noch nicht gültig"
#: sm/certchain.c:998 sm/certchain.c:1083
msgid "root certificate not yet valid"
msgstr "Das Wurzelzertifikat ist noch nicht gültig"
#: sm/certchain.c:999 sm/certchain.c:1084
msgid "intermediate certificate not yet valid"
msgstr "Das Zwischenzertifikat ist noch nicht gültig"
-#: sm/certchain.c:1012
+#: sm/certchain.c:1012 dirmngr/validate.c:502
msgid "certificate has expired"
msgstr "Das Zertifikat ist abgelaufen"
#: sm/certchain.c:1013
msgid "root certificate has expired"
msgstr "Das Wurzelzertifikat ist abgelaufen"
#: sm/certchain.c:1014
msgid "intermediate certificate has expired"
msgstr "Das Zwischenzertifikat ist abgelaufen"
#: sm/certchain.c:1056
#, c-format
msgid "required certificate attributes missing: %s%s%s"
msgstr "Notwendige Zertifikatattribute fehlen: %s%s%s"
#: sm/certchain.c:1065
msgid "certificate with invalid validity"
msgstr "Zertifikat mit unzulässiger Gültigkeit"
#: sm/certchain.c:1102
msgid "signature not created during lifetime of certificate"
msgstr "Die Signatur wurde nicht in der Gültigkeitszeit des Zertifikat erzeugt"
#: sm/certchain.c:1104
msgid "certificate not created during lifetime of issuer"
msgstr ""
"Das Zertifikat wurde nicht während der Gültigkeitszeit des Herausgebers "
"erzeugt"
#: sm/certchain.c:1105
msgid "intermediate certificate not created during lifetime of issuer"
msgstr ""
"Das Zwischenzertifikat wurde nicht während der Gültigkeitszeit des "
"Herausgebers erzeugt"
#: sm/certchain.c:1109
msgid " ( signature created at "
msgstr " ( Signatur erzeugt am "
#: sm/certchain.c:1110
msgid " (certificate created at "
msgstr " ( Zertifikat erzeugt am "
#: sm/certchain.c:1113
msgid " (certificate valid from "
msgstr " ( Zertifikat gültig von "
#: sm/certchain.c:1114
msgid " ( issuer valid from "
msgstr " ( Herausgeber gültig von "
-#: sm/certchain.c:1144
+#: sm/certchain.c:1144 dirmngr/validate.c:552
#, c-format
msgid "fingerprint=%s\n"
msgstr "Fingerprint=%s\n"
#: sm/certchain.c:1153
msgid "root certificate has now been marked as trusted\n"
msgstr "Das Wurzelzertifikat wurde nun als vertrauenswürdig markiert\n"
#: sm/certchain.c:1166
msgid "interactive marking as trusted not enabled in gpg-agent\n"
msgstr ""
"Interaktives vertrauenswürdig-Markieren ist in gpg-agent ausgeschaltet\n"
#: sm/certchain.c:1172
msgid "interactive marking as trusted disabled for this session\n"
msgstr ""
"Interaktives vertrauenswürdig-Markieren ist in dieser Sitzung ausgeschaltet\n"
#: sm/certchain.c:1229
msgid "WARNING: creation time of signature not known - assuming current time"
msgstr ""
"WARNUNG: Der Erzeugungszeitpunkt der Signatur ist nicht bekannt - Nehme die "
"aktuelle Zeit an"
#: sm/certchain.c:1293
msgid "no issuer found in certificate"
msgstr "Im Zertifikat ist kein Herausgeber enthalten"
#: sm/certchain.c:1366
msgid "self-signed certificate has a BAD signature"
msgstr "Das eigenbeglaubigte Zertifikat hat eine FALSCHE Signatur"
-#: sm/certchain.c:1435
+#: sm/certchain.c:1435 dirmngr/validate.c:550
msgid "root certificate is not marked trusted"
msgstr "Das Wurzelzertifikat ist nicht als vertrauenswürdig markiert"
#: sm/certchain.c:1448
#, c-format
msgid "checking the trust list failed: %s\n"
msgstr "Fehler beim Prüfen der vertrauenswürdigen Zertifikate: %s\n"
-#: sm/certchain.c:1477 sm/import.c:176
+#: sm/certchain.c:1477 sm/import.c:176 dirmngr/validate.c:605
msgid "certificate chain too long\n"
msgstr "Der Zertifikatkette ist zu lang\n"
-#: sm/certchain.c:1489
+#: sm/certchain.c:1489 dirmngr/validate.c:617
msgid "issuer certificate not found"
msgstr "Herausgeberzertifikat nicht gefunden"
-#: sm/certchain.c:1522
+#: sm/certchain.c:1522 dirmngr/validate.c:643
msgid "certificate has a BAD signature"
msgstr "Das Zertifikat hat eine FALSCHE Signatur"
-#: sm/certchain.c:1553
+#: sm/certchain.c:1553 dirmngr/validate.c:667
msgid "found another possible matching CA certificate - trying again"
msgstr ""
"Eine anderes möglicherweise passendes CA-Zertifikat gefunden - versuche "
"nochmal"
-#: sm/certchain.c:1604
+#: sm/certchain.c:1604 dirmngr/validate.c:692
#, c-format
msgid "certificate chain longer than allowed by CA (%d)"
msgstr "Die Zertifikatkette ist länger als von der CA erlaubt (%d)"
-#: sm/certchain.c:1644 sm/certchain.c:1927
+#: sm/certchain.c:1644 sm/certchain.c:1927 dirmngr/validate.c:722
msgid "certificate is good\n"
msgstr "Das Zertifikat ist korrekt\n"
#: sm/certchain.c:1645
msgid "intermediate certificate is good\n"
msgstr "Das Zwischenzertifikat ist korrekt\n"
#: sm/certchain.c:1646
msgid "root certificate is good\n"
msgstr "Das Wurzelzertifikat ist korrekt\n"
#: sm/certchain.c:1817
msgid "switching to chain model"
msgstr "Umgeschaltet auf das Kettenmodell"
#: sm/certchain.c:1826
#, c-format
msgid "validation model used: %s"
msgstr "Benutztes Gültigkeitsmodell: %s"
#: sm/certcheck.c:107
#, c-format
msgid "a %u bit hash is not valid for a %u bit %s key\n"
msgstr ""
"Ein %u-Bit Hashverfahren ist für einen %u-Bit %s Schlüssel nicht möglich\n"
#: sm/certcheck.c:244 sm/verify.c:202
msgid "(this is the MD2 algorithm)\n"
msgstr "(Dies ist der MD2 Algorithmus)\n"
-#: sm/certdump.c:60 sm/certdump.c:143
+#: sm/certdump.c:60 sm/certdump.c:143 dirmngr/ocsp.c:701
msgid "none"
msgstr "keine"
#: sm/certdump.c:564 sm/certdump.c:609 sm/certdump.c:674 sm/certdump.c:732
msgid "[Error - invalid encoding]"
msgstr "[Fehler - Ungültige Kodierung]"
#: sm/certdump.c:572 sm/certdump.c:617
msgid "[Error - out of core]"
msgstr "[Fehler - Nicht genügend Speicher]"
#: sm/certdump.c:654 sm/certdump.c:710
msgid "[Error - No name]"
msgstr "[Fehler - Kein Name]"
#: sm/certdump.c:679 sm/certdump.c:738
msgid "[Error - invalid DN]"
msgstr "[Fehler - Ungültiger DN]"
#: sm/certdump.c:948
#, c-format
msgid ""
"Please enter the passphrase to unlock the secret key for the X.509 "
"certificate:\n"
"\"%s\"\n"
"S/N %s, ID 0x%08lX,\n"
"created %s, expires %s.\n"
msgstr ""
"Bitte geben Sie die Passphrase an, um den geheimen Schlüssel des X.509 "
"Zertifikats:\n"
"\"%s\"\n"
"S/N %s, ID 0x%08lX,\n"
"gültig von %s bis %s\n"
"zu entsperren.\n"
-#: sm/certlist.c:122
+#: sm/certlist.c:122 dirmngr/validate.c:1079
msgid "no key usage specified - assuming all usages\n"
msgstr ""
"Schlüsselverwendungszweck nicht vorhanden - für alle Zwecke akzeptiert\n"
-#: sm/certlist.c:132 sm/keylist.c:272
+#: sm/certlist.c:132 sm/keylist.c:272 dirmngr/validate.c:1089
#, c-format
msgid "error getting key usage information: %s\n"
msgstr "Fehler beim Holen der Schlüsselbenutzungsinformationen: %s\n"
-#: sm/certlist.c:142
+#: sm/certlist.c:142 dirmngr/validate.c:1099
msgid "certificate should have not been used for certification\n"
msgstr "Das Zertifikat hätte nicht zum Zertifizieren benutzt werden sollen\n"
-#: sm/certlist.c:154
+#: sm/certlist.c:154 dirmngr/validate.c:1111
msgid "certificate should have not been used for OCSP response signing\n"
msgstr ""
"Das Zertifikat hätte nicht zum Signieren von OCSP Antworten benutzt werden "
"sollen\n"
-#: sm/certlist.c:165
+#: sm/certlist.c:165 dirmngr/validate.c:1131
msgid "certificate should have not been used for encryption\n"
msgstr "Das Zertifikat hätte nicht zum Verschlüsseln benutzt werden sollen\n"
-#: sm/certlist.c:166
+#: sm/certlist.c:166 dirmngr/validate.c:1133
msgid "certificate should have not been used for signing\n"
msgstr "Das Zertifikat hätte nicht zum Signieren benutzt werden sollen\n"
-#: sm/certlist.c:167
+#: sm/certlist.c:167 dirmngr/validate.c:1134
msgid "certificate is not usable for encryption\n"
msgstr "Das Zertifikat kann nicht zum Verschlüsseln benutzt werden\n"
-#: sm/certlist.c:168
+#: sm/certlist.c:168 dirmngr/validate.c:1135
msgid "certificate is not usable for signing\n"
msgstr "Das Zertifikat kann nicht zum Signieren benutzt werden\n"
#: sm/certreqgen.c:475
#, c-format
msgid "line %d: invalid algorithm\n"
msgstr "Zeile %d: Ungültiges Verfahren\n"
#: sm/certreqgen.c:489
#, c-format
msgid "line %d: invalid key length %u (valid are %d to %d)\n"
msgstr "Zeile %d: Ungültige Schlüssellänge %u (gültig Werte: %d bis %d)\n"
#: sm/certreqgen.c:507
#, c-format
msgid "line %d: no subject name given\n"
msgstr "Zeile %d: Kein Subjekt-Name angegeben\n"
#: sm/certreqgen.c:516
#, c-format
msgid "line %d: invalid subject name label `%.*s'\n"
msgstr "Zeile %d: ungültiger Subjekt-Name-Label `%.*s'\n"
#: sm/certreqgen.c:519
#, c-format
msgid "line %d: invalid subject name `%s' at pos %d\n"
msgstr "Zeile %d: ungültige Betreffbezeichnung `%s' in Spalte %d\n"
#: sm/certreqgen.c:536
#, c-format
msgid "line %d: not a valid email address\n"
msgstr "Zeile %d: Keine gültige E-Mailadresse\n"
#: sm/certreqgen.c:548
#, c-format
msgid "line %d: error reading key `%s' from card: %s\n"
msgstr "Zeile %d: Fehler beim Lesen des Schlüssels `%s' von der Karte: %s\n"
#: sm/certreqgen.c:560
#, c-format
msgid "line %d: error getting key by keygrip `%s': %s\n"
msgstr "Zeile %d: Fehler beim Holen des Schlüssels per \"Keygrip\" `%s': %s\n"
#: sm/certreqgen.c:576
#, c-format
msgid "line %d: key generation failed: %s <%s>\n"
msgstr "Zeile %d: Schlüsselerzeugung schlug fehl: %s <%s>\n"
#: sm/certreqgen.c:808
msgid ""
"To complete this certificate request please enter the passphrase for the key "
"you just created once more.\n"
msgstr ""
"Um die Zertifikatsanforderung fertigzustellen, geben Sie nun bitte\n"
"noch einmal die Passphrase des soeben erzeugten Schlüssels ein.\n"
#: sm/certreqgen-ui.c:158
#, c-format
msgid " (%d) RSA\n"
msgstr " (%d) RSA\n"
#: sm/certreqgen-ui.c:159
#, c-format
msgid " (%d) Existing key\n"
msgstr " (%d) Vorhandener Schlüssel\n"
#: sm/certreqgen-ui.c:160
#, c-format
msgid " (%d) Existing key from card\n"
msgstr " (%d) Vorhandener Schlüssel auf der Karte\n"
#: sm/certreqgen-ui.c:202
msgid "Enter the keygrip: "
msgstr "Geben Sie den \"Keygrip\" ein: "
#: sm/certreqgen-ui.c:210
msgid "Not a valid keygrip (expecting 40 hex digits)\n"
msgstr "Kein gültiger \"Keygrip\" (40 Hex-Ziffern werden erwartet)\n"
#: sm/certreqgen-ui.c:212
msgid "No key with this keygrip\n"
msgstr "Kein Schlüssel mit diesem \"Keygrip\"\n"
#: sm/certreqgen-ui.c:230 sm/certreqgen-ui.c:239
#, c-format
msgid "error reading the card: %s\n"
msgstr "Fehler beim Lesen von der Karte: %s\n"
#: sm/certreqgen-ui.c:233
#, c-format
msgid "Serial number of the card: %s\n"
msgstr "Karten-Seriennummer: %s\n"
#: sm/certreqgen-ui.c:245
msgid "Available keys:\n"
msgstr "Vorhandene Schlüssel:\n"
#: sm/certreqgen-ui.c:276
#, c-format
msgid "Possible actions for a %s key:\n"
msgstr "Mögliche Vorgänge eines %s-Schlüssels:\n"
#: sm/certreqgen-ui.c:277
#, c-format
msgid " (%d) sign, encrypt\n"
msgstr " (%d) signieren, verschlüsseln\n"
#: sm/certreqgen-ui.c:278
#, c-format
msgid " (%d) sign\n"
msgstr " (%d) signieren\n"
#: sm/certreqgen-ui.c:279
#, c-format
msgid " (%d) encrypt\n"
msgstr " (%d) verschlüsseln\n"
#: sm/certreqgen-ui.c:303
msgid "Enter the X.509 subject name: "
msgstr "Bitte geben sie den Namen des X.509 Subjekts ein: "
#: sm/certreqgen-ui.c:307
msgid "No subject name given\n"
msgstr "Kein Subjekt-Name angegeben\n"
#: sm/certreqgen-ui.c:311
#, c-format
msgid "Invalid subject name label `%.*s'\n"
msgstr "Ungültiger Subjekt-Name-Label `%.*s'\n"
#. TRANSLATORS: The 22 in the second string is the
#. length of the first string up to the "%s". Please
#. adjust it do the length of your translation. The
#. second string is merely passed to atoi so you can
#. drop everything after the number.
#: sm/certreqgen-ui.c:320
#, c-format
msgid "Invalid subject name `%s'\n"
msgstr "Ungültiger Subjekt-Name `%s'\n"
#: sm/certreqgen-ui.c:322
msgid "22 translator: see certreg-ui.c:gpgsm_gencertreq_tty"
msgstr "25"
#: sm/certreqgen-ui.c:334
msgid "Enter email addresses"
msgstr "Email-Adresse eingeben"
#: sm/certreqgen-ui.c:335
msgid " (end with an empty line):\n"
msgstr " (Beenden mit einer leeren Zeile):\n"
#: sm/certreqgen-ui.c:339
msgid "Enter DNS names"
msgstr "DNS Namen eingeben"
#: sm/certreqgen-ui.c:340 sm/certreqgen-ui.c:345
msgid " (optional; end with an empty line):\n"
msgstr " (Optional. Beenden mit einer leeren Zeile):\n"
#: sm/certreqgen-ui.c:344
msgid "Enter URIs"
msgstr "Bitte geben Sie die URIs ein"
#: sm/certreqgen-ui.c:371
msgid "Parameters to be used for the certificate request:\n"
msgstr "Parameter die für die Zertifikatsanforderung benutzt werden sollen:\n"
#: sm/certreqgen-ui.c:389
msgid "Now creating certificate request. This may take a while ...\n"
msgstr ""
"Die Zertifikatsanforderung wird erzeugt. Dies kann einen Moment dauern ...\n"
#: sm/certreqgen-ui.c:398
msgid "Ready. You should now send this request to your CA.\n"
msgstr "Fertig. Sie sollten nun diese Anforderung an die CA senden.\n"
#: sm/certreqgen-ui.c:403
msgid "resource problem: out of core\n"
msgstr "Resourcenproblem: Nicht genügend Hauptspeicher\n"
#: sm/decrypt.c:330
msgid "(this is the RC2 algorithm)\n"
msgstr "(Dies ist der RC-2 Algorithmus)\n"
#: sm/decrypt.c:332
msgid "(this does not seem to be an encrypted message)\n"
msgstr "(dies ist wahrscheinlich keine verschlüsselte Nachricht)\n"
#: sm/delete.c:51 sm/delete.c:112
#, c-format
msgid "certificate `%s' not found: %s\n"
msgstr "Zertifikat `%s' nicht gefunden: %s\n"
#: sm/delete.c:122 sm/keydb.c:1121 sm/keydb.c:1223
#, c-format
msgid "error locking keybox: %s\n"
msgstr "Fehler beim Sperren der Keybox: %s\n"
#: sm/delete.c:143
#, c-format
msgid "duplicated certificate `%s' deleted\n"
msgstr "Doppeltes Zertifikat `%s' gelöscht\n"
#: sm/delete.c:145
#, c-format
msgid "certificate `%s' deleted\n"
msgstr "Zertifikat `%s' gelöscht\n"
#: sm/delete.c:175
#, c-format
msgid "deleting certificate \"%s\" failed: %s\n"
msgstr "Fehler beim Löschen des Zertifikats \"%s\": %s\n"
#: sm/encrypt.c:325
msgid "no valid recipients given\n"
msgstr "Keine gültigen Empfänger angegeben\n"
#: sm/gpgsm.c:198
msgid "list external keys"
msgstr "Externe Schlüssel anzeigen"
#: sm/gpgsm.c:200
msgid "list certificate chain"
msgstr "Schlüssel mit Zertifikatekette anzeigen"
#: sm/gpgsm.c:207
msgid "import certificates"
msgstr "Zertifikate importieren"
#: sm/gpgsm.c:208
msgid "export certificates"
msgstr "Zertifikate exportieren"
#: sm/gpgsm.c:210
msgid "register a smartcard"
msgstr "Smartcard registrieren"
#: sm/gpgsm.c:213
msgid "pass a command to the dirmngr"
msgstr "Das Kommando an den Dirmngr durchreichen"
#: sm/gpgsm.c:215
msgid "invoke gpg-protect-tool"
msgstr "Rufe das gpg-protect-tool auf"
#: sm/gpgsm.c:231
msgid "create base-64 encoded output"
msgstr "Ausgabe im Basis-64 Format erzeugen"
#: sm/gpgsm.c:236
msgid "assume input is in PEM format"
msgstr "Eingabedaten sind im PEM Format"
#: sm/gpgsm.c:238
msgid "assume input is in base-64 format"
msgstr "Eingabedaten sind im Basis-64 Format"
#: sm/gpgsm.c:240
msgid "assume input is in binary format"
msgstr "Eingabedaten sind im Binärformat"
#: sm/gpgsm.c:247
msgid "never consult a CRL"
msgstr "Niemals eine CRL konsultieren"
#: sm/gpgsm.c:257
msgid "check validity using OCSP"
msgstr "Die Gültigkeit mittels OCSP prüfen"
#: sm/gpgsm.c:262
msgid "|N|number of certificates to include"
msgstr "|N|Sende N Zertifikate mit"
#: sm/gpgsm.c:265
msgid "|FILE|take policy information from FILE"
msgstr "|DATEI|Richtlinieninformationen DATEI entnehmen"
#: sm/gpgsm.c:268
msgid "do not check certificate policies"
msgstr "Zertifikatsrichtlinien nicht überprüfen"
#: sm/gpgsm.c:272
msgid "fetch missing issuer certificates"
msgstr "Fehlende Zertifikate automatisch holen"
#: sm/gpgsm.c:283
msgid "don't use the terminal at all"
msgstr "das Terminal gar nicht benutzen"
#: sm/gpgsm.c:285
msgid "|FILE|write a server mode log to FILE"
msgstr "|DATEI|Schreibe im Servermodus Logs auf DATEI"
#: sm/gpgsm.c:290
msgid "|FILE|write an audit log to FILE"
msgstr "|DATEI|Schreibe ein Audit-Log auf DATEI"
#: sm/gpgsm.c:293
msgid "batch mode: never ask"
msgstr "Stapelmodus: Keine Abfragen"
#: sm/gpgsm.c:294
msgid "assume yes on most questions"
msgstr "\"Ja\" als Standardantwort annehmen"
#: sm/gpgsm.c:295
msgid "assume no on most questions"
msgstr "\"Nein\" als Standardantwort annehmen"
#: sm/gpgsm.c:298
msgid "|FILE|add keyring to the list of keyrings"
msgstr "|DATEI|DATEI als öffentlichen Schlüsselbund mitbenutzen"
#: sm/gpgsm.c:301
msgid "|USER-ID|use USER-ID as default secret key"
msgstr "|USER-ID|USER-ID als voreingestellten Schlüssel benutzen"
#: sm/gpgsm.c:311 tools/gpgconf-comp.c:758
msgid "|SPEC|use this keyserver to lookup keys"
msgstr "|SPEC|Schlüssel bei diesem Server nachschlagen"
#: sm/gpgsm.c:329
msgid "|NAME|use cipher algorithm NAME"
msgstr "|NAME|Verschlüsselungsverfahren NAME benutzen"
#: sm/gpgsm.c:331
msgid "|NAME|use message digest algorithm NAME"
msgstr "|NAME|Hashverfahren NAME benutzen"
#: sm/gpgsm.c:532
msgid "Usage: gpgsm [options] [files] (-h for help)"
msgstr "Aufruf: gpgsm [Optionen] [Dateien] (-h für Hilfe)"
#: sm/gpgsm.c:535
msgid ""
"Syntax: gpgsm [options] [files]\n"
"sign, check, encrypt or decrypt using the S/MIME protocol\n"
"default operation depends on the input data\n"
msgstr ""
"Syntax: gpgsm [Optionen] [Dateien]\n"
"Signieren, prüfen, ver- und entschlüsseln mittels S/MIME Protokoll\n"
#: sm/gpgsm.c:627
msgid "usage: gpgsm [options] "
msgstr "Aufruf: gpgsm [Optionen] "
#: sm/gpgsm.c:749
#, c-format
msgid "NOTE: won't be able to encrypt to `%s': %s\n"
msgstr "Hinweis: Verschlüsselung für `%s' wird nicht möglich sein: %s\n"
#: sm/gpgsm.c:760
#, c-format
msgid "unknown validation model `%s'\n"
msgstr "Unbekanntes Gültigkeitsmodell '%s'\n"
-#: sm/gpgsm.c:811
+#: sm/gpgsm.c:811 dirmngr/ldapserver.c:86
#, c-format
msgid "%s:%u: no hostname given\n"
msgstr "%s:%u: Kein Server-Name angegeben\n"
-#: sm/gpgsm.c:830
+#: sm/gpgsm.c:830 dirmngr/ldapserver.c:105
#, c-format
msgid "%s:%u: password given without user\n"
msgstr "%s:%u: Passwort ohne Benutzer\n"
-#: sm/gpgsm.c:851
+#: sm/gpgsm.c:851 dirmngr/ldapserver.c:126
#, c-format
msgid "%s:%u: skipping this line\n"
msgstr "%s:%u: Zeile wird übersprungen\n"
#: sm/gpgsm.c:1389
msgid "could not parse keyserver\n"
msgstr "Schlüsselserver-URL konnte nicht analysiert werden\n"
#: sm/gpgsm.c:1569
#, c-format
msgid "importing common certificates `%s'\n"
msgstr "Importiere allgemeine Zertifikate: %s\n"
#: sm/gpgsm.c:1610
#, c-format
msgid "can't sign using `%s': %s\n"
msgstr "Signieren mit `%s' nicht möglich: %s\n"
#: sm/gpgsm.c:1941
msgid "invalid command (there is no implicit command)\n"
msgstr "Ungültiger Befehl (Es gibt keinen implizierten Befehl)\n"
#: sm/import.c:127
#, c-format
msgid "total number processed: %lu\n"
msgstr "gesamte verarbeitete Anzahl: %lu\n"
#: sm/import.c:246
msgid "error storing certificate\n"
msgstr "Fehler beim Speichern des Zertifikats\n"
#: sm/import.c:254
msgid "basic certificate checks failed - not imported\n"
msgstr "Grundlegende Zertifikatprüfungen fehlgeschlagen - nicht importiert\n"
#: sm/import.c:410 sm/keydb.c:1043 sm/keydb.c:1111
msgid "failed to allocate keyDB handle\n"
msgstr "Kann keinen KeyDB Handler bereitstellen\n"
#: sm/import.c:467 sm/keydb.c:1141 sm/keydb.c:1235
#, c-format
msgid "error getting stored flags: %s\n"
msgstr "Fehler beim Holen der gespeicherten Flags: %s\n"
#: sm/import.c:526 sm/import.c:558
#, c-format
msgid "error importing certificate: %s\n"
msgstr "Fehler beim Importieren des Zertifikats: %s\n"
#: sm/import.c:746 tools/gpg-connect-agent.c:1404
#, c-format
msgid "error reading input: %s\n"
msgstr "Fehler beim Lesen der Eingabe: %s\n"
#: sm/keydb.c:188
#, c-format
msgid "error creating keybox `%s': %s\n"
msgstr "Die \"Keybox\" `%s' konnte nicht erstellt werden: %s\n"
#: sm/keydb.c:191
msgid "you may want to start the gpg-agent first\n"
msgstr "Sie sollten zuerst den gpg-agent starten\n"
#: sm/keydb.c:196
#, c-format
msgid "keybox `%s' created\n"
msgstr "Die \"Keybox\" `%s' wurde erstellt\n"
#: sm/keydb.c:1036 sm/keydb.c:1104
msgid "failed to get the fingerprint\n"
msgstr "Kann den Fingerprint nicht ermitteln\n"
#: sm/keydb.c:1064
#, c-format
msgid "problem looking for existing certificate: %s\n"
msgstr "Problem bei der Suche nach vorhandenem Zertifikat: %s\n"
#: sm/keydb.c:1072
#, c-format
msgid "error finding writable keyDB: %s\n"
msgstr "Fehler bei der Suche nach einer schreibbaren KeyDB: %s\n"
#: sm/keydb.c:1080
#, c-format
msgid "error storing certificate: %s\n"
msgstr "Fehler beim Speichern des Zertifikats: %s\n"
#: sm/keydb.c:1132
#, c-format
msgid "problem re-searching certificate: %s\n"
msgstr "Problem bei Wiederfinden des Zertifikats: %s\n"
#: sm/keydb.c:1153 sm/keydb.c:1246
#, c-format
msgid "error storing flags: %s\n"
msgstr "Fehler beim Speichern der Flags: %s\n"
#: sm/keylist.c:642
msgid "Error - "
msgstr "Fehler - "
#: sm/misc.c:55
msgid "GPG_TTY has not been set - using maybe bogus default\n"
msgstr ""
"GPG_TTY wurde nicht gesetzt - ein (möglicherweise falscher) Standardwert "
"wird deshalb verwendet\n"
#: sm/qualified.c:105
#, c-format
msgid "invalid formatted fingerprint in `%s', line %d\n"
msgstr "Der Fingerabdruck in `%s', Zeile %d is fehlerhaft formatiert\n"
#: sm/qualified.c:123
#, c-format
msgid "invalid country code in `%s', line %d\n"
msgstr "Ungültiger Landescode in `%s', Zeile %d\n"
#: sm/qualified.c:206
#, c-format
msgid ""
"You are about to create a signature using your certificate:\n"
"\"%s\"\n"
"This will create a qualified signature by law equated to a handwritten "
"signature.\n"
"\n"
"%s%sAre you really sure that you want to do this?"
msgstr ""
"Sie sind dabei, eine Signatur mit dem Zertifikat:\n"
"\"%s\"\n"
"zu erzeugen. Dies wird eine qualifizierte Signatur erzeugen, \n"
"die gesetzlich einer handgeschriebenen gleichgestellt ist.\n"
"\n"
"%s%sSind Sie wirklich sicher, daß Sie dies möchten?"
#: sm/qualified.c:215 sm/verify.c:617
msgid ""
"Note, that this software is not officially approved to create or verify such "
"signatures.\n"
msgstr ""
"Bitte beachten Sie, daß diese Software nicht offiziell zur Erzeugung\n"
"oder Prüfung von qualifizierten Signaturen zugelassen ist.\n"
#: sm/qualified.c:282
#, c-format
msgid ""
"You are about to create a signature using your certificate:\n"
"\"%s\"\n"
"Note, that this certificate will NOT create a qualified signature!"
msgstr ""
"Sie sind dabei, eine Signatur mit dem Zertifikat:\n"
"\"%s\n"
"zu erzeugen. Bitte beachten Sie, daß dies KEINE qualifizierte\n"
"Signatur erzeugen wird."
#: sm/sign.c:451
#, c-format
msgid "hash algorithm %d (%s) for signer %d not supported; using %s\n"
msgstr ""
"Hashverfahren %d (%s) wird für Unterzeichner %d nicht unterstützt; %s wird "
"benutzt\n"
#: sm/sign.c:465
#, c-format
msgid "hash algorithm used for signer %d: %s (%s)\n"
msgstr "Benutztes Hashverfahren für Unterzeichner %d: %s (%s)\n"
#: sm/sign.c:517
#, c-format
msgid "checking for qualified certificate failed: %s\n"
msgstr "Prüfung auf ein qualifiziertes Zertifikats fehlgeschlagen: %s\n"
#: sm/verify.c:450
msgid "Signature made "
msgstr "Signatur erzeugt am "
#: sm/verify.c:454
msgid "[date not given]"
msgstr "[Datum nicht vorhanden]"
#: sm/verify.c:455
#, c-format
msgid " using certificate ID 0x%08lX\n"
msgstr " mittels Zertifikat ID 0x%08lX\n"
#: sm/verify.c:474
msgid ""
"invalid signature: message digest attribute does not match computed one\n"
msgstr ""
"Ungültige Signatur: Nachricht entspricht nicht dem Prüfwert in der "
"Nachricht.\n"
#: sm/verify.c:595
msgid "Good signature from"
msgstr "Korrekte Signatur von"
#: sm/verify.c:596
msgid " aka"
msgstr " alias"
#: sm/verify.c:614
msgid "This is a qualified signature\n"
msgstr "Dies ist eine qualifizierte Signatur.\n"
+#: dirmngr/certcache.c:103
+#, c-format
+msgid "can't initialize certificate cache lock: %s\n"
+msgstr ""
+"Sperre für den Zertifikatzwischenspeicher kann nicht initialisiert werden: %"
+"s\n"
+
+#: dirmngr/certcache.c:111
+#, c-format
+msgid "can't acquire read lock on the certificate cache: %s\n"
+msgstr ""
+"Lesesperre für den Zertifikatzwischenspeicher kann nicht gesetzt werden: %s\n"
+
+#: dirmngr/certcache.c:119
+#, c-format
+msgid "can't acquire write lock on the certificate cache: %s\n"
+msgstr ""
+"Schreibsperre für den Zertifikatzwischenspeicher kann nicht gesetzt werden: %"
+"s\n"
+
+#: dirmngr/certcache.c:127
+#, c-format
+msgid "can't release lock on the certificate cache: %s\n"
+msgstr ""
+"Sperre für den Zertifikatzwischenspeicher kann nicht freigegeben werden: %s\n"
+
+#: dirmngr/certcache.c:255
+#, c-format
+msgid "dropping %u certificates from the cache\n"
+msgstr "%u Zertifikate werden aus dem Zertifikatzwischenspeicher entfernt\n"
+
+#: dirmngr/certcache.c:340
+#, c-format
+msgid "can't access directory `%s': %s\n"
+msgstr "Fehler beim Zugriff auf das Verzeichnis `%s': %s\n"
+
+#: dirmngr/certcache.c:378
+#, c-format
+msgid "can't parse certificate `%s': %s\n"
+msgstr "Zertifikat `%s' kann nicht zerlegt werden: %s\n"
+
+#: dirmngr/certcache.c:386
+#, c-format
+msgid "certificate `%s' already cached\n"
+msgstr "Zertifikat `%s' ist bereits im Zwischenspeicher\n"
+
+#: dirmngr/certcache.c:390
+#, c-format
+msgid "trusted certificate `%s' loaded\n"
+msgstr "Vertrauenswürdiges Zertifikat `%s' wurde geladen\n"
+
+#: dirmngr/certcache.c:392
+#, c-format
+msgid "certificate `%s' loaded\n"
+msgstr "Zertifikat `%s' wurde geladen\n"
+
+#: dirmngr/certcache.c:396
+#, c-format
+msgid " SHA1 fingerprint = %s\n"
+msgstr " SHA1 Fingerabdruck=%s\n"
+
+#: dirmngr/certcache.c:399
+msgid " issuer ="
+msgstr " Issuer ="
+
+#: dirmngr/certcache.c:400
+msgid " subject ="
+msgstr " Subjekt ="
+
+#: dirmngr/certcache.c:404
+#, c-format
+msgid "error loading certificate `%s': %s\n"
+msgstr "Fehler beim Laden des Zertifikats `%s': %s\n"
+
+#: dirmngr/certcache.c:480
+#, c-format
+msgid "permanently loaded certificates: %u\n"
+msgstr " dauerhaft geladene Zertifikate: %u\n"
+
+#: dirmngr/certcache.c:482
+#, c-format
+msgid " runtime cached certificates: %u\n"
+msgstr "zur Laufzeit zwischengespeicherte Zertifikate: %u\n"
+
+#: dirmngr/certcache.c:497 dirmngr/dirmngr-client.c:368
+msgid "certificate already cached\n"
+msgstr "Zertifikat ist bereits im Zwischenspeicher\n"
+
+#: dirmngr/certcache.c:499
+msgid "certificate cached\n"
+msgstr "Zertifikat wurde zwischengespeichert\n"
+
+#: dirmngr/certcache.c:501 dirmngr/certcache.c:521
+#: dirmngr/dirmngr-client.c:372
+#, c-format
+msgid "error caching certificate: %s\n"
+msgstr "Fehler beim Zwischenspeichern des Zertifikats: %s\n"
+
+#: dirmngr/certcache.c:584
+#, c-format
+msgid "invalid SHA1 fingerprint string `%s'\n"
+msgstr "ungültiger SHA1 Fingerabdruck `%s'\n"
+
+#: dirmngr/certcache.c:1028 dirmngr/certcache.c:1037
+#, c-format
+msgid "error fetching certificate by S/N: %s\n"
+msgstr "Fehler beim Holen des Zertifikats mittels Seriennummer: %s\n"
+
+#: dirmngr/certcache.c:1191 dirmngr/certcache.c:1200
+#, c-format
+msgid "error fetching certificate by subject: %s\n"
+msgstr "Fehler beim Holen des Zertifikats mittels Subject: %s\n"
+
+#: dirmngr/certcache.c:1304 dirmngr/validate.c:459
+msgid "no issuer found in certificate\n"
+msgstr "Im Zertifikat ist kein Herausgeber enthalten\n"
+
+#: dirmngr/certcache.c:1314
+#, c-format
+msgid "error getting authorityKeyIdentifier: %s\n"
+msgstr "Fehler beim Holen des \"authorityKeyIdentifier\": %s\n"
+
+#: dirmngr/crlcache.c:214
+#, c-format
+msgid "creating directory `%s'\n"
+msgstr "Das Verzeichnis `%s' wird erzeugt\n"
+
+#: dirmngr/crlcache.c:218
+#, c-format
+msgid "error creating directory `%s': %s\n"
+msgstr "Fehler beim Erzeugen des Verzeichnis '%s': %s\n"
+
+#: dirmngr/crlcache.c:246
+#, c-format
+msgid "ignoring database dir `%s'\n"
+msgstr "Das DB-Verzeichnis `%s' wird ignoriert\n"
+
+#: dirmngr/crlcache.c:255
+#, c-format
+msgid "error reading directory `%s': %s\n"
+msgstr "Fehler beim Lesen des Verzeichnis `%s': %s\n"
+
+#: dirmngr/crlcache.c:276
+#, c-format
+msgid "removing cache file `%s'\n"
+msgstr "Die Zwischenspeicherdatei `%s' wird entfernt\n"
+
+#: dirmngr/crlcache.c:285
+#, c-format
+msgid "not removing file `%s'\n"
+msgstr "Die Datei `%s' wird nicht gelöscht\n"
+
+#: dirmngr/crlcache.c:374 dirmngr/crlcache.c:1112
+#, c-format
+msgid "error closing cache file: %s\n"
+msgstr "Fehler beim Schließen der Zwischenspeicherdatei: %s\n"
+
+#: dirmngr/crlcache.c:412 dirmngr/crlcache.c:788
+#, c-format
+msgid "failed to open cache dir file `%s': %s\n"
+msgstr ""
+"Die Zwischenspeicherverzeichnisdatei `%s' konnte nicht geöffnet werden: %s\n"
+
+#: dirmngr/crlcache.c:422
+#, c-format
+msgid "error creating new cache dir file `%s': %s\n"
+msgstr ""
+"Fehler beim Erzeugen der neuen Zwischenspeicherverzeichnisdatei `%s': %s\n"
+
+#: dirmngr/crlcache.c:429
+#, c-format
+msgid "error writing new cache dir file `%s': %s\n"
+msgstr ""
+"Fehler beim Schreiben der neuen Zwischenspeicherverzeichnisdatei `%s': %s\n"
+
+#: dirmngr/crlcache.c:436
+#, c-format
+msgid "error closing new cache dir file `%s': %s\n"
+msgstr ""
+"Fehler beim Schließen der neuen Zwischenspeicherverzeichnisdatei `%s': %s\n"
+
+#: dirmngr/crlcache.c:441
+#, c-format
+msgid "new cache dir file `%s' created\n"
+msgstr "Neue Zwischenspeicherverzeichnisdatei `%s' wurde erzeugt\n"
+
+#: dirmngr/crlcache.c:446
+#, c-format
+msgid "failed to re-open cache dir file `%s': %s\n"
+msgstr ""
+"Fehler beim Wiederöffnen der Zwischenspeicherverzeichnisdatei `%s': %s\n"
+
+#: dirmngr/crlcache.c:474
+#, c-format
+msgid "first record of `%s' is not the version\n"
+msgstr "Der erste Datensatz von `%s' enthält nicht die Version\n"
+
+#: dirmngr/crlcache.c:487
+msgid "old version of cache directory - cleaning up\n"
+msgstr "Alte Version des Zwischenspeicherverzeichnisses - räume auf\n"
+
+#: dirmngr/crlcache.c:503
+msgid "old version of cache directory - giving up\n"
+msgstr "Alte Version des Zwischenspeicherverzeichnisses - gebe auf\n"
+
+#: dirmngr/crlcache.c:608
+#, c-format
+msgid "extra field detected in crl record of `%s' line %u\n"
+msgstr "Weiteres Feld im CRL Datensatz von `%s', Zeile %u festgestellt\n"
+
+#: dirmngr/crlcache.c:616
+#, c-format
+msgid "invalid line detected in `%s' line %u\n"
+msgstr "Ungültige Zeile in `%s', Zeile %u\n"
+
+#: dirmngr/crlcache.c:625
+#, c-format
+msgid "duplicate entry detected in `%s' line %u\n"
+msgstr "Doppelter Eintrag in `%s', Zeile %u festgestellt\n"
+
+#: dirmngr/crlcache.c:640
+#, c-format
+msgid "unsupported record type in `%s' line %u skipped\n"
+msgstr "Nicht unterstützter Datensatztyp in `%s', Zeile %u übergangen\n"
+
+#: dirmngr/crlcache.c:666
+#, c-format
+msgid "invalid issuer hash in `%s' line %u\n"
+msgstr "Ungültiger Issuer Hashwert in `%s', Zeile %u\n"
+
+#: dirmngr/crlcache.c:672
+#, c-format
+msgid "no issuer DN in `%s' line %u\n"
+msgstr "Kein Issuer DN in `%s', Zeile %u\n"
+
+#: dirmngr/crlcache.c:679
+#, c-format
+msgid "invalid timestamp in `%s' line %u\n"
+msgstr "Ungültiger Zeitstempel in `%s', Zeile %u\n"
+
+#: dirmngr/crlcache.c:685
+#, c-format
+msgid "WARNING: invalid cache file hash in `%s' line %u\n"
+msgstr "WARNUNG: Ungültiger Zwischenspeicherdatei Hashwert in `%s', Zeile %u\n"
+
+#: dirmngr/crlcache.c:691
+msgid "detected errors in cache dir file\n"
+msgstr "Id der Zwischenspeicherverzeichnisdatei wurden Fehler erkannt\n"
+
+#: dirmngr/crlcache.c:692
+msgid "please check the reason and manually delete that file\n"
+msgstr ""
+"Bitte ermitteln sie die Ursache und löschen sie die Datei dann manuell\n"
+
+#: dirmngr/crlcache.c:820 dirmngr/crlcache.c:834
+#, c-format
+msgid "failed to create temporary cache dir file `%s': %s\n"
+msgstr ""
+"Die temporäre Zwischenspeicherverzeichnisdatei `%s' konnte nicht erzeugt "
+"werden: %s\n"
+
+#: dirmngr/crlcache.c:930
+#, c-format
+msgid "error closing `%s': %s\n"
+msgstr "Fehler beim Schließen von `%s': %s\n"
+
+#: dirmngr/crlcache.c:942
+#, c-format
+msgid "error renaming `%s' to `%s': %s\n"
+msgstr "Fehler beim Umbenennen von `%s` nach `%s': %s\n"
+
+#: dirmngr/crlcache.c:996
+#, c-format
+msgid "can't hash `%s': %s\n"
+msgstr "Hashwert von `%s' kann nicht gebildet werden: %s\n"
+
+#: dirmngr/crlcache.c:1004
+#, c-format
+msgid "error setting up MD5 hash context: %s\n"
+msgstr "Fehler beim Vorbereiten des MD5 Hashkontext: %s\n"
+
+#: dirmngr/crlcache.c:1020
+#, c-format
+msgid "error hashing `%s': %s\n"
+msgstr "Fehler beim Hashen von `%s': %s\n"
+
+#: dirmngr/crlcache.c:1048
+#, c-format
+msgid "invalid formatted checksum for `%s'\n"
+msgstr "Ungültig formatierte Prüfsumme für `%s'\n"
+
+#: dirmngr/crlcache.c:1101
+msgid "too many open cache files; can't open anymore\n"
+msgstr ""
+"Zu viele geöffnete Zwischenspeicherdateien; weitere kann nicht geöffnet "
+"werden\n"
+
+#: dirmngr/crlcache.c:1119
+#, c-format
+msgid "opening cache file `%s'\n"
+msgstr "Die Zwischenspeicherdatei `%s' wird geöffnet\n"
+
+#: dirmngr/crlcache.c:1138
+#, c-format
+msgid "error opening cache file `%s': %s\n"
+msgstr "Fehler beim Öffnen der Zwischenspeicherdatei `%s': %s\n"
+
+#: dirmngr/crlcache.c:1147
+#, c-format
+msgid "error initializing cache file `%s' for reading: %s\n"
+msgstr ""
+"Fehler beim Initialisieren der Zwischenspeicherdatei `%s' zum Lesen: %s\n"
+
+#: dirmngr/crlcache.c:1168
+msgid "calling unlock_db_file on a closed file\n"
+msgstr "unlock_db_file wird für eine geschlossene Datei aufgerufen\n"
+
+#: dirmngr/crlcache.c:1170
+msgid "calling unlock_db_file on an unlocked file\n"
+msgstr "unlock_db_file wird für eine nicht gesperrte Datei aufgerufen\n"
+
+#: dirmngr/crlcache.c:1224
+#, c-format
+msgid "failed to create a new cache object: %s\n"
+msgstr "Ein neues Zwischenspeicherobjekt konnte nicht erzeugt werden: %s\n"
+
+#: dirmngr/crlcache.c:1279
+#, c-format
+msgid "no CRL available for issuer id %s\n"
+msgstr "Es ist keine CRL für den Issuer mit der ID %s vorhanden\n"
+
+#: dirmngr/crlcache.c:1286
+#, c-format
+msgid "cached CRL for issuer id %s too old; update required\n"
+msgstr ""
+"Die zwischengespeicherte CRL für den Issuer mit der ID %s ist zu alt; ein "
+"Update wird benötigt\n"
+
+#: dirmngr/crlcache.c:1300
+#, c-format
+msgid ""
+"force-crl-refresh active and %d minutes passed for issuer id %s; update "
+"required\n"
+msgstr ""
+"\"force-crl-refresh\" ist aktiviert und %d Minuten für den Issuer mit Id %s "
+"sind vorbei; Update wird benötigt\n"
+
+#: dirmngr/crlcache.c:1308
+#, c-format
+msgid "force-crl-refresh active for issuer id %s; update required\n"
+msgstr ""
+"\"force-crl-refresh\" ist für den Issuer mit der Id %s aktiviert; Update "
+"wird benötigt\n"
+
+#: dirmngr/crlcache.c:1317
+#, c-format
+msgid "available CRL for issuer ID %s can't be used\n"
+msgstr ""
+"Die vorhandene CRL für den Issuer mit der ID %s kann nicht benutzt werden\n"
+
+#: dirmngr/crlcache.c:1328
+#, c-format
+msgid "cached CRL for issuer id %s tampered; we need to update\n"
+msgstr ""
+"Die zwischengespeicherte CRL für den Issuer mit der ID %s wurde verändert; "
+"eine Update wird benötigt\n"
+
+#: dirmngr/crlcache.c:1340
+msgid "WARNING: invalid cache record length for S/N "
+msgstr "WARNUNG: Ungültige Länge des Zwischenspeicherdateisatzes für S/N "
+
+#: dirmngr/crlcache.c:1349
+#, c-format
+msgid "problem reading cache record for S/N %s: %s\n"
+msgstr "Problem beim Lesen des Zwischenspeicherdatensatzes für S/N %s: %s\n"
+
+#: dirmngr/crlcache.c:1352
+#, c-format
+msgid "S/N %s is not valid; reason=%02X date=%.15s\n"
+msgstr "S/N %s ist nicht gültig; Grund=%02X Datum=%.15s\n"
+
+#: dirmngr/crlcache.c:1363
+#, c-format
+msgid "S/N %s is valid, it is not listed in the CRL\n"
+msgstr "S/N %s ist gültig; sie ist nicht in der CRL enthalten\n"
+
+#: dirmngr/crlcache.c:1371
+#, c-format
+msgid "error getting data from cache file: %s\n"
+msgstr "Fehler beim Holen der Daten aus der Zwischenspeicherdatei: %s\n"
+
+#: dirmngr/crlcache.c:1533 dirmngr/validate.c:882
+#, c-format
+msgid "unknown hash algorithm `%s'\n"
+msgstr "Ungültige Hashmethode `%s'\n"
+
+#: dirmngr/crlcache.c:1540
+#, c-format
+msgid "gcry_md_open for algorithm %d failed: %s\n"
+msgstr "gcry_md_open für Methode %d fehlgeschlagen: %s\n"
+
+#: dirmngr/crlcache.c:1577 dirmngr/crlcache.c:1596
+msgid "got an invalid S-expression from libksba\n"
+msgstr "Ungültige S-Expression von Libksba erhalten\n"
+
+#: dirmngr/crlcache.c:1584 dirmngr/crlcache.c:1603 dirmngr/misc.c:168
+#, c-format
+msgid "converting S-expression failed: %s\n"
+msgstr "Konvertierung der S-Expression fehlgeschlagen: %s\n"
+
+#: dirmngr/crlcache.c:1618 dirmngr/ocsp.c:417
+#, c-format
+msgid "creating S-expression failed: %s\n"
+msgstr "Erzeugen der S-Expression fehlgeschlagen: %s\n"
+
+#: dirmngr/crlcache.c:1690
+#, c-format
+msgid "ksba_crl_parse failed: %s\n"
+msgstr "ksba_crl_parse fehlgeschlagen: %s\n"
+
+#: dirmngr/crlcache.c:1704
+#, c-format
+msgid "error getting update times of CRL: %s\n"
+msgstr "Die \"Update Times\" konnte nicht aus der CRL bestimmt werden: %s\n"
+
+#: dirmngr/crlcache.c:1711
+#, c-format
+msgid "update times of this CRL: this=%s next=%s\n"
+msgstr "Die \"Update Times\" dieser CRL sind: this=%s next=%s\n"
+
+#: dirmngr/crlcache.c:1715
+msgid "nextUpdate not given; assuming a validity period of one day\n"
+msgstr "\"nextUpdate\" fehlt; wir nehmen eine Gültigkeit von einem Tag an\n"
+
+#: dirmngr/crlcache.c:1735
+#, c-format
+msgid "error getting CRL item: %s\n"
+msgstr "Fehler beim Holen eines CRL Items: %s\n"
+
+#: dirmngr/crlcache.c:1750
+#, c-format
+msgid "error inserting item into temporary cache file: %s\n"
+msgstr ""
+"Fehler beim Einfügen eines Items in die temporäre Zwischenspeicherdatei: %s\n"
+
+#: dirmngr/crlcache.c:1777
+#, c-format
+msgid "no CRL issuer found in CRL: %s\n"
+msgstr "In der CRL wurde kein CRL Herausgeber gefunden: %s\n"
+
+#: dirmngr/crlcache.c:1792
+msgid "locating CRL issuer certificate by authorityKeyIdentifier\n"
+msgstr ""
+"CRL Herausgeberzertifikat wird über \"authorityKeyIdentifier\" geholt\n"
+
+#: dirmngr/crlcache.c:1837
+#, c-format
+msgid "CRL signature verification failed: %s\n"
+msgstr "Signaturprüfung der CRL ist fehlgeschlagen: %s\n"
+
+#: dirmngr/crlcache.c:1848
+#, c-format
+msgid "error checking validity of CRL issuer certificate: %s\n"
+msgstr "Fehler beim Püfen des CRL Herausgeberzertifikats: %s\n"
+
+#: dirmngr/crlcache.c:1991
+#, c-format
+msgid "ksba_crl_new failed: %s\n"
+msgstr "ksba_crl_new fehlgeschlagen: %s\n"
+
+#: dirmngr/crlcache.c:1998
+#, c-format
+msgid "ksba_crl_set_reader failed: %s\n"
+msgstr "ksba_crl_set_reader fehlgeschlagen: %s\n"
+
+#: dirmngr/crlcache.c:2032
+#, c-format
+msgid "removed stale temporary cache file `%s'\n"
+msgstr "Die alte temporäre Zwischenspeicherdatei `%s' wurde entfernt\n"
+
+#: dirmngr/crlcache.c:2036
+#, c-format
+msgid "problem removing stale temporary cache file `%s': %s\n"
+msgstr ""
+"Problem beim Löschen der alten temporären Zwischenspeicherdatei `%s': %s\n"
+
+#: dirmngr/crlcache.c:2046
+#, c-format
+msgid "error creating temporary cache file `%s': %s\n"
+msgstr "Fehler beim Erzeugen der temporären Zwischenspeicherdatei `%s': %s\n"
+
+#: dirmngr/crlcache.c:2056
+#, c-format
+msgid "crl_parse_insert failed: %s\n"
+msgstr "crl_parse_insert fehlgeschlagen: %s\n"
+
+#: dirmngr/crlcache.c:2066
+#, c-format
+msgid "error finishing temporary cache file `%s': %s\n"
+msgstr ""
+"Fehler beim Fertigstellen der temporären Zwischenspeicherdatei `%s': %s\n"
+
+#: dirmngr/crlcache.c:2073
+#, c-format
+msgid "error closing temporary cache file `%s': %s\n"
+msgstr "Fehler beim Schließen der temporären Zwischenspeicherdatei `%s': %s\n"
+
+#: dirmngr/crlcache.c:2098
+#, c-format
+msgid "WARNING: new CRL still too old; it expired on %s - loading anyway\n"
+msgstr ""
+"WARNUNG: Neue CRL ist immer noch zu alt; sie verfiel am %s - wird trotzdem "
+"geladen\n"
+
+#: dirmngr/crlcache.c:2102
+#, c-format
+msgid "new CRL still too old; it expired on %s\n"
+msgstr "Neue CRL ist immer noch zu alt; sie verviel am %s\n"
+
+#: dirmngr/crlcache.c:2118
+#, c-format
+msgid "unknown critical CRL extension %s\n"
+msgstr "Unbekannte kritische CRL Erweiterung %s\n"
+
+#: dirmngr/crlcache.c:2128
+#, c-format
+msgid "error reading CRL extensions: %s\n"
+msgstr "Fehler beim Lesen einer CRL Erweiterung: %s\n"
+
+#: dirmngr/crlcache.c:2179
+#, c-format
+msgid "creating cache file `%s'\n"
+msgstr "Zwischenspeicherdatei `%s' wird erzeugt\n"
+
+#: dirmngr/crlcache.c:2186
+#, c-format
+msgid "problem renaming `%s' to `%s': %s\n"
+msgstr "Problem beim Umbenennen von `%s' nach `%s': %s\n"
+
+#: dirmngr/crlcache.c:2200
+msgid ""
+"updating the DIR file failed - cache entry will get lost with the next "
+"program start\n"
+msgstr ""
+"Update der Zwischenspeicherverzeichnisdatei fehlgeschlagen - "
+"Zwischenspeichereintrag wird mit dem nächste Programmstart verloren gehen\n"
+
+#: dirmngr/crlcache.c:2237
+#, c-format
+msgid "Begin CRL dump (retrieved via %s)\n"
+msgstr "Anfang CRL Ausgabe (geholt via %s)\n"
+
+#: dirmngr/crlcache.c:2260
+msgid ""
+" ERROR: The CRL will not be used because it was still too old after an "
+"update!\n"
+msgstr ""
+" FEHLER: Die CRL wird nicht benutzt, da sie trotz eines Updates zu alt war!\n"
+
+#: dirmngr/crlcache.c:2263
+msgid ""
+" ERROR: The CRL will not be used due to an unknown critical extension!\n"
+msgstr ""
+" FEHLER: Die CRL wird nicht benutzt, da sie eine unbekannte kritische CRL "
+"Erweiterung trägt!\n"
+
+#: dirmngr/crlcache.c:2266
+msgid " ERROR: The CRL will not be used\n"
+msgstr " FEHLER: Die CRL wird nicht benutzt\n"
+
+#: dirmngr/crlcache.c:2273
+msgid " ERROR: This cached CRL may has been tampered with!\n"
+msgstr ""
+" FEHLER: Diese zwischengespeicherte CRL ist möglicherweise abgeändert "
+"worden!\n"
+
+#: dirmngr/crlcache.c:2291
+msgid " WARNING: invalid cache record length\n"
+msgstr " WARNUNG: Ungültige Länge eines Zwischenspeicherdatensatzes\n"
+
+#: dirmngr/crlcache.c:2298
+#, c-format
+msgid "problem reading cache record: %s\n"
+msgstr "Problem beim Lesen eines Zwischenspeicherdatensatzes: %s\n"
+
+#: dirmngr/crlcache.c:2309
+#, c-format
+msgid "problem reading cache key: %s\n"
+msgstr "Problem beim Lesen eines Zwischenspeicherschlüssels: %s\n"
+
+#: dirmngr/crlcache.c:2340
+#, c-format
+msgid "error reading cache entry from db: %s\n"
+msgstr "Fehler beim Lesen eine Zwischenspeichereintrags aus der DB: %s\n"
+
+#: dirmngr/crlcache.c:2343
+msgid "End CRL dump\n"
+msgstr "Ende CRL Ausgabe\n"
+
+#: dirmngr/crlcache.c:2464
+#, c-format
+msgid "crl_fetch via DP failed: %s\n"
+msgstr "crl_fetch über den DP fehlgeschlagen: %s\n"
+
+#: dirmngr/crlcache.c:2475
+#, c-format
+msgid "crl_cache_insert via DP failed: %s\n"
+msgstr "crl_cache_insert über den DP fehlgeschlagen: %s\n"
+
+#: dirmngr/crlcache.c:2535
+#, c-format
+msgid "crl_cache_insert via issuer failed: %s\n"
+msgstr "crl_cache_insert über den Issuer fehlgeschlagen: %s\n"
+
+#: dirmngr/crlfetch.c:74
+msgid "reader to file mapping table full - waiting\n"
+msgstr "\"reader to file\" Zuordnungstabelle ist voll - warte\n"
+
+#: dirmngr/crlfetch.c:179
+msgid "using \"http\" instead of \"https\"\n"
+msgstr "Es wird \"HTTP\" anstatt \"HTTPS\" verwendet\n"
+
+#: dirmngr/crlfetch.c:190 dirmngr/crlfetch.c:285 dirmngr/crlfetch.c:305
+#: dirmngr/crlfetch.c:323
+#, c-format
+msgid "CRL access not possible due to disabled %s\n"
+msgstr "CRL Zugriff nicht möglich da %s abgeschaltet ist\n"
+
+#: dirmngr/crlfetch.c:219 dirmngr/ldap-wrapper-ce.c:394
+#: dirmngr/ldap-wrapper.c:711 dirmngr/misc.c:524
+#, c-format
+msgid "error initializing reader object: %s\n"
+msgstr "Fehler beim Initialisieren des \"reader\" Objekts: %s\n"
+
+#: dirmngr/crlfetch.c:245 dirmngr/ocsp.c:210
+#, c-format
+msgid "URL `%s' redirected to `%s' (%u)\n"
+msgstr "URL `%s' nach `%s' umgeleitet (%u)\n"
+
+#: dirmngr/crlfetch.c:264 dirmngr/ocsp.c:227
+msgid "too many redirections\n"
+msgstr "zu viele verschachtelte Umleitungen\n"
+
+#: dirmngr/crlfetch.c:270
+#, c-format
+msgid "error retrieving `%s': %s\n"
+msgstr "Fehler beim Holen von `%s': %s\n"
+
+#: dirmngr/crlfetch.c:275
+#, c-format
+msgid "error retrieving `%s': http status %u\n"
+msgstr "Fehler beim Holen von `%s': HTTP Status %u\n"
+
+#: dirmngr/crlfetch.c:337
+#, c-format
+msgid "certificate search not possible due to disabled %s\n"
+msgstr "Zertifikatsuche ist nicht möglich da %s abgeschaltet ist\n"
+
+#: dirmngr/dirmngr-client.c:70
+msgid "use OCSP instead of CRLs"
+msgstr "OCSP anstatt CRL benutzen"
+
+#: dirmngr/dirmngr-client.c:71
+msgid "check whether a dirmngr is running"
+msgstr "Teste ob der dirmngr noch läuft"
+
+#: dirmngr/dirmngr-client.c:72
+msgid "add a certificate to the cache"
+msgstr "Ein Zertifikat dem Zwischenspeicher zufügen"
+
+#: dirmngr/dirmngr-client.c:73
+msgid "validate a certificate"
+msgstr "Zertifikat prüfen"
+
+#: dirmngr/dirmngr-client.c:74
+msgid "lookup a certificate"
+msgstr "Zertifikat auffinden"
+
+#: dirmngr/dirmngr-client.c:75
+msgid "lookup only locally stored certificates"
+msgstr "Nur lokal gespeicherte Zertifikate auffinden"
+
+#: dirmngr/dirmngr-client.c:76
+msgid "expect an URL for --lookup"
+msgstr "Eine URL wird für --lookup erwartet"
+
+#: dirmngr/dirmngr-client.c:77
+msgid "load a CRL into the dirmngr"
+msgstr "CRL in den Dirmngr laden"
+
+#: dirmngr/dirmngr-client.c:78
+msgid "special mode for use by Squid"
+msgstr "Sondermodus für Squid"
+
+#: dirmngr/dirmngr-client.c:79
+msgid "certificates are expected in PEM format"
+msgstr "Zertifikate werden im PEM Format erwartet"
+
+#: dirmngr/dirmngr-client.c:81
+msgid "force the use of the default OCSP responder"
+msgstr "Die Nutzung des voreingestellten OCSP Responder erzwingen"
+
+#: dirmngr/dirmngr-client.c:151
+msgid "Usage: dirmngr-client [options] [certfile|pattern] (-h for help)\n"
+msgstr ""
+"Gebrauch: dirmngr-client [Optionen] [Zertdatei|Muster] (-h für Hilfe)\n"
+
+#: dirmngr/dirmngr-client.c:155
+msgid ""
+"Syntax: dirmngr-client [options] [certfile|pattern]\n"
+"Test an X.509 certificate against a CRL or do an OCSP check\n"
+"The process returns 0 if the certificate is valid, 1 if it is\n"
+"not valid and other error codes for general failures\n"
+msgstr ""
+"Gebrauch: dirmngr-client [Optionen] [Zertdatei|Muster]\n"
+"Teste ein X.509 Zertifikat gegen eine CRL oder führe eine OCSP Prüfung "
+"durch\n"
+"The Prozess gibt 0 zurück wenn das Zertifikat gültig ist, 1 wenn es nicht\n"
+"gültig ist und weitere Werte bei anderen Fehlern.\n"
+
+#: dirmngr/dirmngr-client.c:268 dirmngr/dirmngr-client.c:997
+#, c-format
+msgid "error reading certificate from stdin: %s\n"
+msgstr "Fehler beim Lesen des Zertifikats von der Standardeingabe: %s\n"
+
+#: dirmngr/dirmngr-client.c:275
+#, c-format
+msgid "error reading certificate from `%s': %s\n"
+msgstr "Fehler beim Lesen des Zertifikats von `%s': %s\n"
+
+#: dirmngr/dirmngr-client.c:289
+msgid "certificate too large to make any sense\n"
+msgstr "Zertifikat ist zu groß um Sinnvoll zu sein\n"
+
+#: dirmngr/dirmngr-client.c:315
+#, c-format
+msgid "lookup failed: %s\n"
+msgstr "Aufsuchen fehlgeschlagen: %s\n"
+
+#: dirmngr/dirmngr-client.c:330
+#, c-format
+msgid "loading CRL `%s' failed: %s\n"
+msgstr "Laden der CRL von `%s' fehlgeschlagen: %s\n"
+
+#: dirmngr/dirmngr-client.c:358
+msgid "a dirmngr daemon is up and running\n"
+msgstr "Ein dirmngr ist vorhanden und aktiv\n"
+
+#: dirmngr/dirmngr-client.c:380
+#, c-format
+msgid "validation of certificate failed: %s\n"
+msgstr "Prüfung des Zertifikats fehlgeschlagen: %s\n"
+
+#: dirmngr/dirmngr-client.c:387 dirmngr/dirmngr-client.c:1008
+msgid "certificate is valid\n"
+msgstr "Zertifikat ist gültig\n"
+
+#: dirmngr/dirmngr-client.c:393 dirmngr/dirmngr-client.c:1016
+msgid "certificate has been revoked\n"
+msgstr "Zertifikat wurde widerrufen\n"
+
+#: dirmngr/dirmngr-client.c:398 dirmngr/dirmngr-client.c:1018
+#, c-format
+msgid "certificate check failed: %s\n"
+msgstr "Zertifikatprüfung fehlgeschlagen: %s\n"
+
+#: dirmngr/dirmngr-client.c:411
+#, c-format
+msgid "got status: `%s'\n"
+msgstr "Erhielt Status: `%s'\n"
+
+#: dirmngr/dirmngr-client.c:426
+#, c-format
+msgid "error writing base64 encoding: %s\n"
+msgstr "Fehler beim Schreiben der Base-64 Darstellung: %s\n"
+
+#: dirmngr/dirmngr-client.c:453 dirmngr/server.c:1529
+#, c-format
+msgid "failed to allocate assuan context: %s\n"
+msgstr "Fehler beim Bereitstellen eines Assuan Kontext: %s\n"
+
+#: dirmngr/dirmngr-client.c:467
+msgid "apparently no running dirmngr\n"
+msgstr "Offensichtlich ist kein Dirmngr vorhanden\n"
+
+#: dirmngr/dirmngr-client.c:472
+msgid "no running dirmngr - starting one\n"
+msgstr "Dirmngr läuft nicht - ein neuer wird gestartet\n"
+
+#: dirmngr/dirmngr-client.c:505
+msgid "malformed DIRMNGR_INFO environment variable\n"
+msgstr "Fehlerhafte DIRMNGR_INFO Variable\n"
+
+#: dirmngr/dirmngr-client.c:520
+#, c-format
+msgid "dirmngr protocol version %d is not supported\n"
+msgstr "Dirmngr Protocol Version %d wird nicht unterstützt\n"
+
+#: dirmngr/dirmngr-client.c:536
+msgid "can't connect to the dirmngr - trying fall back\n"
+msgstr "Verbindung zum Dirmngr nicht möglich - Rückfallmethode wird versucht\n"
+
+#: dirmngr/dirmngr-client.c:545
+#, c-format
+msgid "can't connect to the dirmngr: %s\n"
+msgstr "Verbindung zum Dirmngr nicht möglich: %s\n"
+
+#: dirmngr/dirmngr-client.c:794
+#, c-format
+msgid "unsupported inquiry `%s'\n"
+msgstr "Nicht unterstützte INQUIRY `%s'\n"
+
+#: dirmngr/dirmngr-client.c:896
+msgid "absolute file name expected\n"
+msgstr "Absoluter Dateiname erwartet\n"
+
+#: dirmngr/dirmngr-client.c:941
+#, c-format
+msgid "looking up `%s'\n"
+msgstr "Auffinden von `%s'\n"
+
+#: dirmngr/dirmngr.c:137
+msgid "run as windows service (background)"
+msgstr "Als Windows-Service ausführen (Hintergrund)"
+
+#: dirmngr/dirmngr.c:139
+msgid "list the contents of the CRL cache"
+msgstr "Den Inhalt des CRL Zwischenspeichers anzeigen"
+
+#: dirmngr/dirmngr.c:140
+msgid "|FILE|load CRL from FILE into cache"
+msgstr "|DATEI|Lade die CRL aus der DATEI in den Zwischenspeicher"
+
+#: dirmngr/dirmngr.c:141
+msgid "|URL|fetch a CRL from URL"
+msgstr "|URL|Hole eine CRL von dieser URL"
+
+#: dirmngr/dirmngr.c:142
+msgid "shutdown the dirmngr"
+msgstr "Den Dirmngr herunterfahren"
+
+#: dirmngr/dirmngr.c:143
+msgid "flush the cache"
+msgstr "Den Zwischenspeicher löschen"
+
+#: dirmngr/dirmngr.c:158 tools/gpgconf-comp.c:507 tools/gpgconf-comp.c:689
+#: tools/gpgconf-comp.c:772 tools/gpgconf-comp.c:854
+msgid "|FILE|write server mode logs to FILE"
+msgstr "|DATEI|Schreibe im Servermodus Logs auf DATEI"
+
+#: dirmngr/dirmngr.c:159
+msgid "run without asking a user"
+msgstr "Ausführung ohne Benutzernachfrage"
+
+#: dirmngr/dirmngr.c:160
+msgid "force loading of outdated CRLs"
+msgstr "Laden von abgelaufenen CRLs erzwingen"
+
+#: dirmngr/dirmngr.c:161
+msgid "allow sending OCSP requests"
+msgstr "OCSP Anfragen erlauben"
+
+#: dirmngr/dirmngr.c:162
+msgid "inhibit the use of HTTP"
+msgstr "Sperre die Benutzung von HTTP"
+
+#: dirmngr/dirmngr.c:163
+msgid "inhibit the use of LDAP"
+msgstr "Sperre die Benutzung von LDAP"
+
+#: dirmngr/dirmngr.c:165
+msgid "ignore HTTP CRL distribution points"
+msgstr "Übergehe HTTP CRL Distribution Points"
+
+#: dirmngr/dirmngr.c:167
+msgid "ignore LDAP CRL distribution points"
+msgstr "Übergehe LDAP CRL Distribution Points"
+
+#: dirmngr/dirmngr.c:169
+msgid "ignore certificate contained OCSP service URLs"
+msgstr "Übergehe im Zertifikat enthaltene OCSP Service URLs"
+
+#: dirmngr/dirmngr.c:172
+msgid "|URL|redirect all HTTP requests to URL"
+msgstr "|URL|Leite alle HTTP Anfragen über URL"
+
+#: dirmngr/dirmngr.c:174
+msgid "|HOST|use HOST for LDAP queries"
+msgstr "|HOST|Benutze HOST für LDAP Anfragen"
+
+#: dirmngr/dirmngr.c:176
+msgid "do not use fallback hosts with --ldap-proxy"
+msgstr "Keine Benutzung der Rückgriffshosts mit --ldap-proxy"
+
+#: dirmngr/dirmngr.c:179
+msgid "|FILE|read LDAP server list from FILE"
+msgstr "|DATEI|Lese die LDAP Serverliste aus DATEI"
+
+#: dirmngr/dirmngr.c:181
+msgid "add new servers discovered in CRL distribution points to serverlist"
+msgstr "Füge neue Server aus den CRL Distribution Points der Serverliste hinzu"
+
+#: dirmngr/dirmngr.c:184 dirmngr/dirmngr_ldap.c:129
+msgid "|N|set LDAP timeout to N seconds"
+msgstr "|N|Setze das LDAP Timeout auf N Sekunden"
+
+#: dirmngr/dirmngr.c:187
+msgid "|URL|use OCSP responder at URL"
+msgstr "|URL|Benutze den OCSP Responder mit dieser URL"
+
+#: dirmngr/dirmngr.c:189
+msgid "|FPR|OCSP response signed by FPR"
+msgstr "|FPR|OCSP Antwort ist durch FPR signiert"
+
+#: dirmngr/dirmngr.c:195
+msgid "|N|do not return more than N items in one query"
+msgstr "|N|Nicht mehr als N Angaben in einer Anfrage zurückgeben"
+
+#: dirmngr/dirmngr.c:210
+msgid ""
+"@\n"
+"(See the \"info\" manual for a complete listing of all commands and "
+"options)\n"
+msgstr ""
+"@\n"
+"(Im \"info\"-Handbuch findet sich eine vollständige Liste aller Kommandos "
+"und Optionen)\n"
+
+#: dirmngr/dirmngr.c:301
+msgid "Usage: dirmngr [options] (-h for help)"
+msgstr "Gebrauch: dirmnr [Optionen] [Kommando [Argumente]]"
+
+#: dirmngr/dirmngr.c:303
+msgid ""
+"Syntax: dirmngr [options] [command [args]]\n"
+"LDAP and OCSP access for GnuPG\n"
+msgstr ""
+"Syntax: dirmngr [Optionen] [Kommando [Argumente]]\n"
+"LDAP und OCSP Zugriff für GnuPG\n"
+
+#: dirmngr/dirmngr.c:368
+#, c-format
+msgid "valid debug levels are: %s\n"
+msgstr "Gültige Debugebenen sind: %s\n"
+
+#: dirmngr/dirmngr.c:391
+msgid "usage: dirmngr [options] "
+msgstr "Gebrauch: dirmngr [Optionen] "
+
+#: dirmngr/dirmngr.c:948
+msgid "colons are not allowed in the socket name\n"
+msgstr "Doppelpunkte sind im Namen des Sockets nicht erlaubt\n"
+
+#: dirmngr/dirmngr.c:1154 dirmngr/server.c:1163
+#, c-format
+msgid "fetching CRL from `%s' failed: %s\n"
+msgstr "Holen der CRL von `%s' fehlgeschlagen: %s\n"
+
+#: dirmngr/dirmngr.c:1160 dirmngr/server.c:1169
+#, c-format
+msgid "processing CRL from `%s' failed: %s\n"
+msgstr "Verarbeitung der CRL von `%s' fehlgeschlagen: %s\n"
+
+#: dirmngr/dirmngr.c:1379
+#, c-format
+msgid "%s:%u: line too long - skipped\n"
+msgstr "%s:%u: Zeile ist zu lang - übergangen\n"
+
+#: dirmngr/dirmngr.c:1434 dirmngr/dirmngr.c:1518
+#, c-format
+msgid "%s:%u: invalid fingerprint detected\n"
+msgstr "%s:%u: ungültiger Fingerabdruck erkannt\n"
+
+#: dirmngr/dirmngr.c:1470 dirmngr/dirmngr.c:1496
+#, c-format
+msgid "%s:%u: read error: %s\n"
+msgstr "%s:%u: Lesefehler: %s\n"
+
+#: dirmngr/dirmngr.c:1525
+#, c-format
+msgid "%s:%u: garbage at end of line ignored\n"
+msgstr "%s:%u: Müll am Ende der Zeile wird ignoriert\n"
+
+#: dirmngr/dirmngr.c:1591
+msgid "SIGHUP received - re-reading configuration and flushing caches\n"
+msgstr ""
+"SIGHUP empfangen - lese die Konfiguration erneut und lösche die "
+"Zwischenspeicher\n"
+
+#: dirmngr/dirmngr.c:1618
+msgid "SIGUSR2 received - no action defined\n"
+msgstr "SIGUSR2 empfangen - keine Aktion definiert\n"
+
+#: dirmngr/dirmngr.c:1623 dirmngr/dirmngr.c:1660
+msgid "SIGTERM received - shutting down ...\n"
+msgstr "SIGTERM empfangen - wird heruntergefahren ...\n"
+
+#: dirmngr/dirmngr.c:1625
+#, c-format
+msgid "SIGTERM received - still %d active connections\n"
+msgstr "SIGTERM empfangen - immer noch %d Verbindungen aktiv\n"
+
+#: dirmngr/dirmngr.c:1630 dirmngr/dirmngr.c:1663
+msgid "shutdown forced\n"
+msgstr "Herunterfahren wurde erzwungen\n"
+
+#: dirmngr/dirmngr.c:1638
+msgid "SIGINT received - immediate shutdown\n"
+msgstr "SIGINT empfangen - wird sofort heruntergefahren\n"
+
+#: dirmngr/dirmngr.c:1645
+#, c-format
+msgid "signal %d received - no action defined\n"
+msgstr "Signal %d empfangen - keine Aktion definiert\n"
+
+#: dirmngr/dirmngr.c:1797
+#, c-format
+msgid "accept failed: %s - waiting 1s\n"
+msgstr "accept() fehlgeschlagen: %s - warte 1s\n"
+
+#: dirmngr/dirmngr.c:1827
+#, c-format
+msgid "error spawning connection handler: %s\n"
+msgstr "Fehler beim Starten des Verbindungshandler: %s\n"
+
+#: dirmngr/dirmngr_ldap.c:130
+msgid "return all values in a record oriented format"
+msgstr "Alle Werte in einem Record Format zurückgeben"
+
+#: dirmngr/dirmngr_ldap.c:133
+msgid "|NAME|ignore host part and connect through NAME"
+msgstr "|NAME|Host Teil ignorieren und über NAME verbinden"
+
+#: dirmngr/dirmngr_ldap.c:134
+msgid "|NAME|connect to host NAME"
+msgstr "|NAME|Verbinde mit dem Host NAME"
+
+#: dirmngr/dirmngr_ldap.c:135
+msgid "|N|connect to port N"
+msgstr "|N|Verbinde mit dem Port N"
+
+#: dirmngr/dirmngr_ldap.c:136
+msgid "|NAME|use user NAME for authentication"
+msgstr "|NAME|Benutze NAME zur Authentifizierung"
+
+#: dirmngr/dirmngr_ldap.c:137
+msgid "|PASS|use password PASS for authentication"
+msgstr "Benutze Passwort PASS zur Authentifizierung"
+
+#: dirmngr/dirmngr_ldap.c:139
+msgid "take password from $DIRMNGR_LDAP_PASS"
+msgstr "Nimm das Passwort von $DIRMNGR_LDAP_PASS"
+
+#: dirmngr/dirmngr_ldap.c:140
+msgid "|STRING|query DN STRING"
+msgstr "|STRING|Frage den DN STRING ab"
+
+#: dirmngr/dirmngr_ldap.c:141
+msgid "|STRING|use STRING as filter expression"
+msgstr "|STRING|Benutze STRING als Filterausdruck"
+
+#: dirmngr/dirmngr_ldap.c:142
+msgid "|STRING|return the attribute STRING"
+msgstr "|STRING|Gib das Attribut STRING zurück"
+
+#: dirmngr/dirmngr_ldap.c:201
+msgid "Usage: dirmngr_ldap [options] [URL] (-h for help)\n"
+msgstr "Gebrauch: dirmngr_ldap [Optionen] [URL] (-h für Hilfe)\n"
+
+#: dirmngr/dirmngr_ldap.c:204
+msgid ""
+"Syntax: dirmngr_ldap [options] [URL]\n"
+"Internal LDAP helper for Dirmngr.\n"
+"Interface and options may change without notice.\n"
+msgstr ""
+"Gebrauch: dirmngr_ldap [Optionen] [URL] (-h für Hilfe)\n"
+"Internes LDAP-Hilfsprogramm für Dirmngr.\n"
+"Interface und Optionen können sich mit jedem Release ändern.\n"
+
+#: dirmngr/dirmngr_ldap.c:327
+#, c-format
+msgid "invalid port number %d\n"
+msgstr "Ungültige Portnummer %d\n"
+
+#: dirmngr/dirmngr_ldap.c:403
+#, c-format
+msgid "scanning result for attribute `%s'\n"
+msgstr "Absuchen des Ergebnisses nach Attribut `%s'\n"
+
+#: dirmngr/dirmngr_ldap.c:410 dirmngr/dirmngr_ldap.c:493
+#: dirmngr/dirmngr_ldap.c:517 dirmngr/dirmngr_ldap.c:529
+#: dirmngr/dirmngr_ldap.c:654
+#, c-format
+msgid "error writing to stdout: %s\n"
+msgstr "Fehler beim Schreiben auf Standardausgabe: %s\n"
+
+#: dirmngr/dirmngr_ldap.c:427
+#, c-format
+msgid " available attribute `%s'\n"
+msgstr " verfügbare Attribute `%s'\n"
+
+#: dirmngr/dirmngr_ldap.c:465
+#, c-format
+msgid "attribute `%s' not found\n"
+msgstr "Attribut `%s' nicht gefunden\n"
+
+#: dirmngr/dirmngr_ldap.c:472
+#, c-format
+msgid "found attribute `%s'\n"
+msgstr "Attribut `%s' gefunden\n"
+
+#: dirmngr/dirmngr_ldap.c:581
+#, c-format
+msgid "processing url `%s'\n"
+msgstr "Verarbeiten der URL `%s'\n"
+
+#: dirmngr/dirmngr_ldap.c:583
+#, c-format
+msgid " user `%s'\n"
+msgstr " Benutzer `%s'\n"
+
+#: dirmngr/dirmngr_ldap.c:585
+#, c-format
+msgid " pass `%s'\n"
+msgstr " Passwort `%s'\n"
+
+#: dirmngr/dirmngr_ldap.c:587
+#, c-format
+msgid " host `%s'\n"
+msgstr " Host `%s'\n"
+
+#: dirmngr/dirmngr_ldap.c:588
+#, c-format
+msgid " port %d\n"
+msgstr " Port %d\n"
+
+#: dirmngr/dirmngr_ldap.c:590
+#, c-format
+msgid " DN `%s'\n"
+msgstr " DN `%s'\n"
+
+#: dirmngr/dirmngr_ldap.c:592
+#, c-format
+msgid " filter `%s'\n"
+msgstr " Filter `%s'\n"
+
+#: dirmngr/dirmngr_ldap.c:597 dirmngr/dirmngr_ldap.c:600
+#, c-format
+msgid " attr `%s'\n"
+msgstr " Attribut `%s'\n"
+
+#: dirmngr/dirmngr_ldap.c:606
+#, c-format
+msgid "no host name in `%s'\n"
+msgstr "Kein Hostname in `%s'\n"
+
+#: dirmngr/dirmngr_ldap.c:611
+#, c-format
+msgid "no attribute given for query `%s'\n"
+msgstr "Kein Attribut für Abfrage `%s' angegeben\n"
+
+#: dirmngr/dirmngr_ldap.c:617
+msgid "WARNING: using first attribute only\n"
+msgstr "WARNUNG: Es wird nur das erste Attribut benutzt\n"
+
+#: dirmngr/dirmngr_ldap.c:626
+#, c-format
+msgid "LDAP init to `%s:%d' failed: %s\n"
+msgstr "LDAP Initialisierung von `%s:%d' fehlgeschlagen: %s\n"
+
+#: dirmngr/dirmngr_ldap.c:636
+#, c-format
+msgid "binding to `%s:%d' failed: %s\n"
+msgstr "Anbindung an `%s:%d' fehlgeschlagen: %s\n"
+
+#: dirmngr/dirmngr_ldap.c:663
+#, c-format
+msgid "searching `%s' failed: %s\n"
+msgstr "Suche mit `%s' fehlgeschlagen: %s\n"
+
+#: dirmngr/dirmngr_ldap.c:695
+#, c-format
+msgid "`%s' is not an LDAP URL\n"
+msgstr "`%s' ist kein LDAP URL\n"
+
+#: dirmngr/dirmngr_ldap.c:701
+#, c-format
+msgid "`%s' is an invalid LDAP URL\n"
+msgstr "`%s' ist ein ungültiger LDAP URL\n"
+
+#: dirmngr/ldap-wrapper-ce.c:313 dirmngr/ldap-wrapper.c:639
+#: dirmngr/ldap-wrapper.c:656
+#, c-format
+msgid "error allocating memory: %s\n"
+msgstr "Fehler beim Allozieren von Speicher: %s\n"
+
+#: dirmngr/ldap-wrapper.c:210
+#, c-format
+msgid "error printing log line: %s\n"
+msgstr "Fehler beim Schreiben einer Logzeile: %s\n"
+
+#: dirmngr/ldap-wrapper.c:239
+#, c-format
+msgid "error reading log from ldap wrapper %d: %s\n"
+msgstr "Fehler beim Lesen des Logs vom LDAP Wrapper %d: %s\n"
+
+#: dirmngr/ldap-wrapper.c:276
+#, c-format
+msgid "pth_event failed: %s\n"
+msgstr "pth_event() fehlgeschlagen: %s\n"
+
+#: dirmngr/ldap-wrapper.c:296
+#, c-format
+msgid "pth_wait failed: %s\n"
+msgstr "pth_wait() fehlgeschlagen: %s\n"
+
+#: dirmngr/ldap-wrapper.c:333
+#, c-format
+msgid "ldap wrapper %d ready"
+msgstr "LDAP Wrapper %d fertig"
+
+#: dirmngr/ldap-wrapper.c:342
+#, c-format
+msgid "ldap wrapper %d ready: timeout\n"
+msgstr "LDAP Wrapper %d fertig: Zeitüberschreitung\n"
+
+#: dirmngr/ldap-wrapper.c:345
+#, c-format
+msgid "ldap wrapper %d ready: exitcode=%d\n"
+msgstr "LDAP Wrapper %d fertig: Exitcode=%d\n"
+
+#: dirmngr/ldap-wrapper.c:354
+#, c-format
+msgid "waiting for ldap wrapper %d failed: %s\n"
+msgstr "Warten auf den LDAP Wrapper %d fehlgeschlagen: %s\n"
+
+#: dirmngr/ldap-wrapper.c:366
+#, c-format
+msgid "ldap wrapper %d stalled - killing\n"
+msgstr "LDAP Wrapper %d versackt - abgeschossen\n"
+
+#: dirmngr/ldap-wrapper.c:433
+#, c-format
+msgid "error spawning ldap wrapper reaper thread: %s\n"
+msgstr "Fehler beim Starten des LDAP Wrapper Kontrollthreads: %s\n"
+
+#: dirmngr/ldap-wrapper.c:483 dirmngr/ldap-wrapper.c:504
+#, c-format
+msgid "reading from ldap wrapper %d failed: %s\n"
+msgstr "Lesen vom LDAP Wrapper %d fehlgeschlagen: %s\n"
+
+#: dirmngr/ldap.c:90
+#, c-format
+msgid "invalid char 0x%02x in host name - not added\n"
+msgstr "Ungültiges Zeichen 0x%02X im Hostnamen - nicht hinzugefügt\n"
+
+#: dirmngr/ldap.c:94
+#, c-format
+msgid "adding `%s:%d' to the ldap server list\n"
+msgstr "`%s:%d' wird der LDAP Serverliste hinzugefügt\n"
+
+#: dirmngr/ldap.c:97 dirmngr/misc.c:463
+#, c-format
+msgid "malloc failed: %s\n"
+msgstr "malloc() fehlgeschlagen: %s\n"
+
+#: dirmngr/ldap.c:602
+#, c-format
+msgid "start_cert_fetch: invalid pattern `%s'\n"
+msgstr "start_cert_fetch: Ungültiges Muster `%s'\n"
+
+#: dirmngr/ldap.c:808
+msgid "ldap_search hit the size limit of the server\n"
+msgstr "ldap_search erreichte die Größengrenze des Servers\n"
+
+#: dirmngr/misc.c:164
+msgid "invalid canonical S-expression found\n"
+msgstr "Ungültige kanonische S-Expression gefunden\n"
+
+#: dirmngr/misc.c:188 dirmngr/misc.c:222
+#, c-format
+msgid "gcry_md_open failed: %s\n"
+msgstr "gcry_md_open fehlgeschlagen: %s\n"
+
+#: dirmngr/misc.c:193 dirmngr/misc.c:227
+#, c-format
+msgid "oops: ksba_cert_hash failed: %s\n"
+msgstr "Nanu: ksba_cert_hash fehlgeschlagen: %s\n"
+
+#: dirmngr/misc.c:479
+msgid "bad URL encoding detected\n"
+msgstr "Fehlerhafte URL Kodierung erkannt\n"
+
+#: dirmngr/ocsp.c:81
+#, c-format
+msgid "error reading from responder: %s\n"
+msgstr "Fehler beim Lesen vom Responder: %s\n"
+
+#: dirmngr/ocsp.c:99
+#, c-format
+msgid "response from server too large; limit is %d bytes\n"
+msgstr "Antwort vom Server zu lang; die Grenze sind %d Bytes\n"
+
+#: dirmngr/ocsp.c:138
+msgid "OCSP request not possible due to disabled HTTP\n"
+msgstr "OCSP Anfrage nicht möglich da HTTP abgeschaltet ist\n"
+
+#: dirmngr/ocsp.c:145
+#, c-format
+msgid "error setting OCSP target: %s\n"
+msgstr "Fehler beim Setzen des OCSP Ziels: %s\n"
+
+#: dirmngr/ocsp.c:163
+#, c-format
+msgid "error building OCSP request: %s\n"
+msgstr "Fehler beim Aufbauen der OCSP Anfrage: %s\n"
+
+#: dirmngr/ocsp.c:173
+#, c-format
+msgid "error connecting to `%s': %s\n"
+msgstr "Fehler beim Verbinden mit '%s': %s\n"
+
+#: dirmngr/ocsp.c:199 dirmngr/ocsp.c:247
+#, c-format
+msgid "error reading HTTP response for `%s': %s\n"
+msgstr "Fehler beim Lesen der HTTP Antwort von `%s': %s\n"
+
+#: dirmngr/ocsp.c:232
+#, c-format
+msgid "error accessing `%s': http status %u\n"
+msgstr "Fehler beim Zugreifen auf `%s': HTTP Status %u\n"
+
+#: dirmngr/ocsp.c:257
+#, c-format
+msgid "error parsing OCSP response for `%s': %s\n"
+msgstr "Fehler beim Zerlegen der OCSP Antwort für `%s': %s\n"
+
+#: dirmngr/ocsp.c:280 dirmngr/ocsp.c:290
+#, c-format
+msgid "OCSP responder at `%s' status: %s\n"
+msgstr "OCSP Responder `%s' Status: %s\n"
+
+#: dirmngr/ocsp.c:285
+#, c-format
+msgid "hashing the OCSP response for `%s' failed: %s\n"
+msgstr "Hashen der OCSP Antwort für `%s' fehlgeschlagen: %s\n"
+
+#: dirmngr/ocsp.c:320
+msgid "not signed by a default OCSP signer's certificate"
+msgstr "Nicht durch voreingestelltes OCSP \"Signer-Zertifikat\" signiert"
+
+#: dirmngr/ocsp.c:409
+msgid "only SHA-1 is supported for OCSP responses\n"
+msgstr "Lediglich SHA-1 wird bei OCSP Antworten unterstützt\n"
+
+#: dirmngr/ocsp.c:460
+#, c-format
+msgid "allocating list item failed: %s\n"
+msgstr "malloc() fehlgeschlagen: %s\n"
+
+#: dirmngr/ocsp.c:475
+#, c-format
+msgid "error getting responder ID: %s\n"
+msgstr "Fehler beim Holen der Responder-ID: %s\n"
+
+#: dirmngr/ocsp.c:510
+msgid "no suitable certificate found to verify the OCSP response\n"
+msgstr ""
+"Kein benutzbares Zertifikat zur Überprüfung der OCSP Antwort gefunden\n"
+
+#: dirmngr/ocsp.c:549 dirmngr/validate.c:623
+#, c-format
+msgid "issuer certificate not found: %s\n"
+msgstr "Herausgeberzertifikat nicht gefunden: %s\n"
+
+#: dirmngr/ocsp.c:559
+msgid "caller did not return the target certificate\n"
+msgstr "Aufrufer gab das Ziel Zertifikat nicht zurück\n"
+
+#: dirmngr/ocsp.c:566
+msgid "caller did not return the issuing certificate\n"
+msgstr "Aufrufer gab das Issuer Zertifikat nicht zurück\n"
+
+#: dirmngr/ocsp.c:576
+#, c-format
+msgid "failed to allocate OCSP context: %s\n"
+msgstr "Fehler beim Bereitstellen eines OCSP Kontext: %s\n"
+
+#: dirmngr/ocsp.c:610
+#, c-format
+msgid "can't get authorityInfoAccess: %s\n"
+msgstr "authorityInfoAccess kann nicht geholt werden: %s\n"
+
+#: dirmngr/ocsp.c:617
+msgid "no default OCSP responder defined\n"
+msgstr "Kein voreingestellter OCSP Responder definiert\n"
+
+#: dirmngr/ocsp.c:623
+msgid "no default OCSP signer defined\n"
+msgstr "Kein voreingestellter OCSP \"Signer\" definiert\n"
+
+#: dirmngr/ocsp.c:630
+#, c-format
+msgid "using default OCSP responder `%s'\n"
+msgstr "Der voreingestellte OCSP Responder `%s' wird benutzt\n"
+
+#: dirmngr/ocsp.c:635
+#, c-format
+msgid "using OCSP responder `%s'\n"
+msgstr "Der OCSP Responder `%s' wird benutzt\n"
+
+#: dirmngr/ocsp.c:642
+#, c-format
+msgid "failed to establish a hashing context for OCSP: %s\n"
+msgstr "Kontext zum Hashen von OCSP kann nicht erzeugt werden: %s\n"
+
+#: dirmngr/ocsp.c:672
+#, c-format
+msgid "error getting OCSP status for target certificate: %s\n"
+msgstr "Fehler beim Holen des OCSP Status für das Zielzertifikat: %s\n"
+
+#: dirmngr/ocsp.c:697
+#, c-format
+msgid "certificate status is: %s (this=%s next=%s)\n"
+msgstr "Zertifikatstatus ist: %s (this=%s next=%s)\n"
+
+#: dirmngr/ocsp.c:698
+msgid "good"
+msgstr "Gut"
+
+#: dirmngr/ocsp.c:704
+#, c-format
+msgid "certificate has been revoked at: %s due to: %s\n"
+msgstr "Zertifikat wurde widerrufen am: %s wegen: %s\n"
+
+#: dirmngr/ocsp.c:739
+msgid "OCSP responder returned a status in the future\n"
+msgstr "OCSP Responder gab einen Status in der Zukunft zurück\n"
+
+#: dirmngr/ocsp.c:751
+msgid "OCSP responder returned a non-current status\n"
+msgstr "OCSP Responder gab einen nicht aktuellen Status zurück\n"
+
+#: dirmngr/ocsp.c:766
+msgid "OCSP responder returned an too old status\n"
+msgstr "OCSP Responder gab einen zu alten Status zurück\n"
+
+#: dirmngr/server.c:269 dirmngr/server.c:381 dirmngr/server.c:427
+#, c-format
+msgid "assuan_inquire(%s) failed: %s\n"
+msgstr "assuan_inquire(%s) fehlgeschlagen: %s\n"
+
+#: dirmngr/server.c:524
+msgid "ldapserver missing"
+msgstr "LDAP Server fehlt"
+
+#: dirmngr/server.c:594
+msgid "serialno missing in cert ID"
+msgstr "Seriennummer fehlt in der Cert-ID"
+
+#: dirmngr/server.c:730 dirmngr/server.c:816 dirmngr/server.c:1248
+#: dirmngr/server.c:1299
+#, c-format
+msgid "assuan_inquire failed: %s\n"
+msgstr "assuan_inquire fehlgeschlagen: %s\n"
+
+#: dirmngr/server.c:859
+#, c-format
+msgid "fetch_cert_by_url failed: %s\n"
+msgstr "fetch_cert_by_url() fehlgeschlagen: %s\n"
+
+#: dirmngr/server.c:871 dirmngr/server.c:902 dirmngr/server.c:1058
+#, c-format
+msgid "error sending data: %s\n"
+msgstr "Fehler beim Senden der Daten: %s\n"
+
+#: dirmngr/server.c:1006
+#, c-format
+msgid "start_cert_fetch failed: %s\n"
+msgstr "start_cert_fetch fehlgeschlagen: %s\n"
+
+#: dirmngr/server.c:1039
+#, c-format
+msgid "fetch_next_cert failed: %s\n"
+msgstr "fetch_next_cert fehlgeschlagen: %s\n"
+
+#: dirmngr/server.c:1066
+#, c-format
+msgid "max_replies %d exceeded\n"
+msgstr "max_replies %d überschritten\n"
+
+#: dirmngr/server.c:1518
+#, c-format
+msgid "can't allocate control structure: %s\n"
+msgstr "Fehler beim Erzeugen der Kontrollstruktur: %s\n"
+
+#: dirmngr/server.c:1550
+#, c-format
+msgid "failed to initialize the server: %s\n"
+msgstr "Fehler beim Initialisieren des Servers: %s\n"
+
+#: dirmngr/server.c:1558
+#, c-format
+msgid "failed to the register commands with Assuan: %s\n"
+msgstr "Fehler beim Registrieren der Kommandos gegen Assuan: %s\n"
+
+#: dirmngr/server.c:1598
+#, c-format
+msgid "Assuan accept problem: %s\n"
+msgstr "Assuan accept Problem: %s\n"
+
+#: dirmngr/server.c:1617
+#, c-format
+msgid "Assuan processing failed: %s\n"
+msgstr "Assuan Verarbeitung fehlgeschlagen: %s\n"
+
+#: dirmngr/validate.c:201
+msgid "accepting root CA not marked as a CA"
+msgstr ""
+"Herausgeberzertifikat akzeptiert obgleich nicht für eine CA gekennzeichnet"
+
+#: dirmngr/validate.c:227
+msgid "CRL checking too deeply nested\n"
+msgstr "CRL Überprüfung ist zu tief geschachtelt\n"
+
+#: dirmngr/validate.c:245
+msgid "not checking CRL for"
+msgstr "keine Prüfung der CRL für"
+
+#: dirmngr/validate.c:250
+msgid "checking CRL for"
+msgstr "Prüfen der CRL für"
+
+#: dirmngr/validate.c:388
+msgid "running in compatibility mode - certificate chain not checked!\n"
+msgstr "Kompatibilitätsmodus - Zertifikatkette nicht geprüft!\n"
+
+#: dirmngr/validate.c:532
+msgid "selfsigned certificate has a BAD signature"
+msgstr "Das eigenbeglaubigte Zertifikat hat eine FALSCHE Signatur"
+
+#: dirmngr/validate.c:565
+#, c-format
+msgid "checking trustworthiness of root certificate failed: %s\n"
+msgstr ""
+"Prüfung der Vertrauenswürdigkeit des Wurzelzertifikats fehlgeschlagen: %s\n"
+
+#: dirmngr/validate.c:742
+msgid "certificate chain is good\n"
+msgstr "Der Zertifikatkette ist gültig\n"
+
+#: dirmngr/validate.c:972
+msgid "DSA requires the use of a 160 bit hash algorithm\n"
+msgstr "DSA benötigt eine 160 Bit Hashmethode\n"
+
+#: dirmngr/validate.c:1120
+msgid "certificate should have not been used for CRL signing\n"
+msgstr ""
+"Das Zertifikat hätte nicht zum Signieren einer CRL benutzt werden sollen\n"
+
#: tools/gpg-connect-agent.c:72 tools/gpgconf.c:80 tools/symcryptrun.c:164
msgid "quiet"
msgstr "Reduzierte Informationen"
#: tools/gpg-connect-agent.c:73
msgid "print data out hex encoded"
msgstr "Druckdaten hexkodiert ausgeben"
#: tools/gpg-connect-agent.c:74
msgid "decode received data lines"
msgstr "Dekodiere empfangene Datenzeilen"
#: tools/gpg-connect-agent.c:76
msgid "|NAME|connect to Assuan socket NAME"
msgstr "|NAME|Verbinde mit dem Assuan-Socket NAME"
#: tools/gpg-connect-agent.c:78
msgid "|ADDR|connect to Assuan server at ADDR"
msgstr "|ADDR|Verbinde mit dem Assuan-Server an Adresse ADDR"
#: tools/gpg-connect-agent.c:80
msgid "run the Assuan server given on the command line"
msgstr "Starten des auf der Kommandozeile angegebenen Assuan-Server"
#: tools/gpg-connect-agent.c:82
msgid "do not use extended connect mode"
msgstr "Den \"extended connect\"-Modus nicht nutzen"
#: tools/gpg-connect-agent.c:84
msgid "|FILE|run commands from FILE on startup"
msgstr "|DATEI|Beim Starten Kommandos aus DATEI lesen"
#: tools/gpg-connect-agent.c:85
msgid "run /subst on startup"
msgstr "Nach dem Starten \"/subst\" ausführen"
#: tools/gpg-connect-agent.c:191
msgid "Usage: gpg-connect-agent [options] (-h for help)"
msgstr "Aufruf: gpg-connect-agent [Optionen] (-h für Hilfe)"
#: tools/gpg-connect-agent.c:194
msgid ""
"Syntax: gpg-connect-agent [options]\n"
"Connect to a running agent and send commands\n"
msgstr ""
"Syntax: gpg-connect-agent [Optionen]\n"
"Mit einem laufenden Agenten verbinden und Befehle senden\n"
#: tools/gpg-connect-agent.c:1218
#, c-format
msgid "option \"%s\" requires a program and optional arguments\n"
msgstr "Option \"%s\" erfordert ein Programm und evtl. Argumente\n"
#: tools/gpg-connect-agent.c:1229 tools/gpg-connect-agent.c:1235
#: tools/gpg-connect-agent.c:1241
#, c-format
msgid "option \"%s\" ignored due to \"%s\"\n"
msgstr "Option \"%s\" wird wegen \"%s\" nicht beachtet\n"
#: tools/gpg-connect-agent.c:1339 tools/gpg-connect-agent.c:1829
#, c-format
msgid "receiving line failed: %s\n"
msgstr "Empfangen der Zeile schlug fehl: %s\n"
#: tools/gpg-connect-agent.c:1429
msgid "line too long - skipped\n"
msgstr "Zeile zu lang - übersprungen\n"
#: tools/gpg-connect-agent.c:1433
msgid "line shortened due to embedded Nul character\n"
msgstr "Zeile wegen enthaltenem Nul-Zeichen gekürzt\n"
#: tools/gpg-connect-agent.c:1801
#, c-format
msgid "unknown command `%s'\n"
msgstr "unbekannter Befehl `%s'\n"
#: tools/gpg-connect-agent.c:1819
#, c-format
msgid "sending line failed: %s\n"
msgstr "Senden der Zeile schlug fehl: %s\n"
#: tools/gpg-connect-agent.c:2184
#, c-format
msgid "error sending standard options: %s\n"
msgstr "Fehler beim Senden der Standardoptionen: %s\n"
#: tools/gpgconf-comp.c:479 tools/gpgconf-comp.c:583 tools/gpgconf-comp.c:650
#: tools/gpgconf-comp.c:725 tools/gpgconf-comp.c:816
msgid "Options controlling the diagnostic output"
msgstr "Optionen zur Einstellung der Diagnoseausgaben"
#: tools/gpgconf-comp.c:492 tools/gpgconf-comp.c:596 tools/gpgconf-comp.c:663
#: tools/gpgconf-comp.c:738 tools/gpgconf-comp.c:839
msgid "Options controlling the configuration"
msgstr "Optionen zur Einstellung der Konfiguration"
#: tools/gpgconf-comp.c:502 tools/gpgconf-comp.c:621 tools/gpgconf-comp.c:684
#: tools/gpgconf-comp.c:767 tools/gpgconf-comp.c:846
msgid "Options useful for debugging"
msgstr "Nützliche Optionen zur Fehlersuche"
-#: tools/gpgconf-comp.c:507 tools/gpgconf-comp.c:689 tools/gpgconf-comp.c:772
-#: tools/gpgconf-comp.c:854
-msgid "|FILE|write server mode logs to FILE"
-msgstr "|DATEI|Schreibe im Servermodus Logs auf DATEI"
-
#: tools/gpgconf-comp.c:515 tools/gpgconf-comp.c:631 tools/gpgconf-comp.c:780
msgid "Options controlling the security"
msgstr "Optionen zur Einstellung der Sicherheit"
#: tools/gpgconf-comp.c:522
msgid "|N|expire SSH keys after N seconds"
msgstr "|N|lasse SSH Schlüssel im Cache nach N Sekunden verfallen"
#: tools/gpgconf-comp.c:526
msgid "|N|set maximum PIN cache lifetime to N seconds"
msgstr "|N|setze die maximale Lebensdauer von PINs im Cache auf N Sekunden"
#: tools/gpgconf-comp.c:530
msgid "|N|set maximum SSH key lifetime to N seconds"
msgstr "|N|setze die maximale Lebenszeit von SSH Schlüsseln auf N Sekunden"
#: tools/gpgconf-comp.c:544
msgid "Options enforcing a passphrase policy"
msgstr "Optionen für eine Passphrase-Policy"
#: tools/gpgconf-comp.c:547
msgid "do not allow to bypass the passphrase policy"
msgstr "Einhaltung der Passphrase-Policy erzwingen"
#: tools/gpgconf-comp.c:551
msgid "|N|set minimal required length for new passphrases to N"
msgstr "|N|setze die kleinste erlaubte Länge von Passphrasen auf N"
#: tools/gpgconf-comp.c:555
msgid "|N|require at least N non-alpha characters for a new passphrase"
msgstr "|N|Verlange mindestens N Nicht-Buchstaben für eine neue Passphrase"
#: tools/gpgconf-comp.c:559
msgid "|FILE|check new passphrases against pattern in FILE"
msgstr "|DATEI|Prüfe neue Passphrases gegen die Regelen in DATEI"
#: tools/gpgconf-comp.c:563
msgid "|N|expire the passphrase after N days"
msgstr "|N|Lasse die Passphrase nach N Tagen verfallen"
#: tools/gpgconf-comp.c:567
msgid "do not allow the reuse of old passphrases"
msgstr "Verbiete die Wiedernutzung alter Passphrases."
#: tools/gpgconf-comp.c:665 tools/gpgconf-comp.c:740
msgid "|NAME|use NAME as default secret key"
msgstr "|NAME|NAME als voreingestellten Schlüssel benutzen"
#: tools/gpgconf-comp.c:668 tools/gpgconf-comp.c:743
msgid "|NAME|encrypt to user ID NAME as well"
msgstr "|NAME|Auch an NAME verschlüsseln"
#: tools/gpgconf-comp.c:671
msgid "|SPEC|set up email aliases"
msgstr "|SPEC|Email Alias festlegen"
#: tools/gpgconf-comp.c:697
msgid "Configuration for Keyservers"
msgstr "Konfiguration der Schlüsselserver"
#: tools/gpgconf-comp.c:699
msgid "|URL|use keyserver at URL"
msgstr "Benutze Schlüsselserver unter der URL"
#: tools/gpgconf-comp.c:702
msgid "allow PKA lookups (DNS requests)"
msgstr "Erlaube PKA Zugriffe (DNS Anfragen)"
#: tools/gpgconf-comp.c:705
msgid "|MECHANISMS|use MECHANISMS to locate keys by mail address"
msgstr ""
"|MECHANISMEN|Benutze MECHANISMEN um Schlüssel über die Mailadresse "
"aufzufinden."
#: tools/gpgconf-comp.c:752
msgid "disable all access to the dirmngr"
msgstr "Jeglichen Zugriff auf den Dirmngr verhindern"
#: tools/gpgconf-comp.c:755
msgid "|NAME|use encoding NAME for PKCS#12 passphrases"
msgstr "|NAME|Benutze die Kodierung NAME für PKCS#12 Passphrasen"
#: tools/gpgconf-comp.c:785
msgid "do not check CRLs for root certificates"
msgstr "CRL bei Wurzelzertifikaten nicht überprüfen"
#: tools/gpgconf-comp.c:829
msgid "Options controlling the format of the output"
msgstr "Optionen zum Einstellen der Ausgabeformate"
#: tools/gpgconf-comp.c:865
msgid "Options controlling the interactivity and enforcement"
msgstr "Optionen zur Einstellung der Interaktivität und Geltendmachung"
#: tools/gpgconf-comp.c:875
msgid "Configuration for HTTP servers"
msgstr "Konfiguration für HTTP Server"
#: tools/gpgconf-comp.c:886
msgid "use system's HTTP proxy setting"
msgstr "Benutze die HTTP Proxy Einstellung des Systems"
#: tools/gpgconf-comp.c:891
msgid "Configuration of LDAP servers to use"
msgstr "Konfiguration der zu nutzenden LDAP-Server"
#: tools/gpgconf-comp.c:920
msgid "LDAP server list"
msgstr "Liste der LDAP Server"
#: tools/gpgconf-comp.c:928
msgid "Configuration for OCSP"
msgstr "Konfiguration zu OCSP"
#: tools/gpgconf-comp.c:3074
#, c-format
msgid "External verification of component %s failed"
msgstr "Die externe Überprüfung der Komponente %s war nicht erfolgreich"
#: tools/gpgconf-comp.c:3224
msgid "Note that group specifications are ignored\n"
msgstr "Beachten Sie, daß Gruppenspezifiaktionen ignoriert werden\n"
#: tools/gpgconf.c:61
msgid "list all components"
msgstr "Liste aller Komponenten"
#: tools/gpgconf.c:62
msgid "check all programs"
msgstr "Prüfe alle Programme"
#: tools/gpgconf.c:63
msgid "|COMPONENT|list options"
msgstr "|KOMPONENTE|Zeige die Optionen an"
#: tools/gpgconf.c:64
msgid "|COMPONENT|change options"
msgstr "|KOMPONENTE|Ändere die Optionen"
#: tools/gpgconf.c:65
msgid "|COMPONENT|check options"
msgstr "|KOMPONENTE|Prüfe die Optionen"
#: tools/gpgconf.c:67
msgid "apply global default values"
msgstr "Wende die gobalen Voreinstellungen an"
#: tools/gpgconf.c:69
msgid "get the configuration directories for gpgconf"
msgstr "Hole die Einstelungsverzeichnisse von gpgconf"
#: tools/gpgconf.c:71
msgid "list global configuration file"
msgstr "Zeige die globale Konfigurationsdatei an"
#: tools/gpgconf.c:73
msgid "check global configuration file"
msgstr "Prüfe die globale Konfigurationsdatei"
#: tools/gpgconf.c:74
msgid "reload all or a given component"
msgstr "\"reload\" an alle oder eine Komponente senden"
#: tools/gpgconf.c:78
msgid "use as output file"
msgstr "Als Ausgabedatei benutzen"
#: tools/gpgconf.c:82
msgid "activate changes at runtime, if possible"
msgstr "Aktiviere Änderungen zur Laufzeit; falls möglich"
#: tools/gpgconf.c:104
msgid "Usage: gpgconf [options] (-h for help)"
msgstr "Aufruf: gpgconf [Optionen] (-h für Hilfe)"
#: tools/gpgconf.c:107
msgid ""
"Syntax: gpgconf [options]\n"
"Manage configuration options for tools of the GnuPG system\n"
msgstr ""
"Syntax: gpgconf {Optionen]\n"
"Verwalte Konfigurationsoptionen für Programme des GnuPG Systems\n"
-#: tools/gpgconf.c:213 tools/gpgconf.c:281
+#: tools/gpgconf.c:216 tools/gpgconf.c:284
msgid "usage: gpgconf [options] "
msgstr "Aufruf: gpgconf [Optionen] "
-#: tools/gpgconf.c:215
+#: tools/gpgconf.c:218
msgid "Need one component argument"
msgstr "Benötige ein Komponentenargument"
-#: tools/gpgconf.c:224 tools/gpgconf.c:257
+#: tools/gpgconf.c:227 tools/gpgconf.c:260
msgid "Component not found"
msgstr "Komponente nicht gefunden"
-#: tools/gpgconf.c:283
+#: tools/gpgconf.c:286
msgid "No argument allowed"
msgstr "Argumente sind nicht erlaubt"
#: tools/symcryptrun.c:151
msgid ""
"@\n"
"Commands:\n"
" "
msgstr ""
"@\n"
"@KBefehle:\n"
" "
#: tools/symcryptrun.c:153
msgid "decryption modus"
msgstr "Entschlüsselungsmodus"
#: tools/symcryptrun.c:154
msgid "encryption modus"
msgstr "Verschlüsselungsmodus"
#: tools/symcryptrun.c:158
msgid "tool class (confucius)"
msgstr "Toolklasse (Konfuzius)"
#: tools/symcryptrun.c:159
msgid "program filename"
msgstr "Programmdateiname"
#: tools/symcryptrun.c:161
msgid "secret key file (required)"
msgstr "Dateiname des geheimen Schlüssels (erforderlich)"
#: tools/symcryptrun.c:162
msgid "input file name (default stdin)"
msgstr "Eingabedateiname (Standardeingabe ist voreingestellt)"
#: tools/symcryptrun.c:206
msgid "Usage: symcryptrun [options] (-h for help)"
msgstr "Aufruf: symcryptrun [Optionen] (-h für Hilfe)"
#: tools/symcryptrun.c:209
msgid ""
"Syntax: symcryptrun --class CLASS --program PROGRAM --keyfile KEYFILE "
"[options...] COMMAND [inputfile]\n"
"Call a simple symmetric encryption tool\n"
msgstr ""
"Syntax: symcryptrun --class KLASSE --program PROGRAMM --keyfile "
"SCHLUESSELDATEI [Optionen...] KOMMANDO [Eingabedatei]\n"
"Aufruf eines einfachen symmetrischen Verschlüsselungstool\n"
#: tools/symcryptrun.c:278
#, c-format
msgid "%s on %s aborted with status %i\n"
msgstr "%s auf %s brach mit Status %i ab\n"
#: tools/symcryptrun.c:285
#, c-format
msgid "%s on %s failed with status %i\n"
msgstr "%s auf %s schlug mit Status %i fehl\n"
#: tools/symcryptrun.c:311
#, c-format
msgid "can't create temporary directory `%s': %s\n"
msgstr "Das temporäre Verzeichnis `%s' kann nicht erstellt werden: %s\n"
#: tools/symcryptrun.c:351 tools/symcryptrun.c:368
#, c-format
msgid "could not open %s for writing: %s\n"
msgstr "%s kann nicht zum Schreiben geöffnet werden: %s\n"
#: tools/symcryptrun.c:379
#, c-format
msgid "error writing to %s: %s\n"
msgstr "Fehler beim Schreiben von %s: %s\n"
#: tools/symcryptrun.c:386
#, c-format
msgid "error reading from %s: %s\n"
msgstr "Fehler beim Lesen von %s: %s\n"
#: tools/symcryptrun.c:393 tools/symcryptrun.c:400
#, c-format
msgid "error closing %s: %s\n"
msgstr "Fehler beim Schließen von %s: %s\n"
#: tools/symcryptrun.c:485
msgid "no --program option provided\n"
msgstr "Option --program nicht angegeben\n"
#: tools/symcryptrun.c:491
msgid "only --decrypt and --encrypt are supported\n"
msgstr "nur --decrypt und --encrypt sind vorhanden\n"
#: tools/symcryptrun.c:497
msgid "no --keyfile option provided\n"
msgstr "keine --keyfile -Option angegeben\n"
#: tools/symcryptrun.c:508
msgid "cannot allocate args vector\n"
msgstr "Kann \"args-vector\" nicht zuteilen\n"
#: tools/symcryptrun.c:526
#, c-format
msgid "could not create pipe: %s\n"
msgstr "Pipe kann nicht erzeugt werden: %s\n"
#: tools/symcryptrun.c:533
#, c-format
msgid "could not create pty: %s\n"
msgstr "Pty kann nicht erzeugt werden: %s\n"
#: tools/symcryptrun.c:549
#, c-format
msgid "could not fork: %s\n"
msgstr "Kann nicht fork()en: %s\n"
#: tools/symcryptrun.c:577
#, c-format
msgid "execv failed: %s\n"
msgstr "Der execv()-Aufruf ist fehlgeschlagen: %s\n"
#: tools/symcryptrun.c:606
#, c-format
msgid "select failed: %s\n"
msgstr "Der select()-Aufruf ist fehlgeschlagen: %s\n"
#: tools/symcryptrun.c:623
#, c-format
msgid "read failed: %s\n"
msgstr "Lesen schlug fehl: %s\n"
#: tools/symcryptrun.c:675
#, c-format
msgid "pty read failed: %s\n"
msgstr "\"pty read\"-Aufruf ist fehlgeschlagen: %s\n"
#: tools/symcryptrun.c:727
#, c-format
msgid "waitpid failed: %s\n"
msgstr "Der waitpid()-Aufruf ist fehlgeschlagen: %s\n"
#: tools/symcryptrun.c:741
#, c-format
msgid "child aborted with status %i\n"
msgstr "Kind brach mit Status %i ab\n"
#: tools/symcryptrun.c:796
#, c-format
msgid "cannot allocate infile string: %s\n"
msgstr "Kann In-Datei-Zeichenkette keinen Speicher zuteilen: %s\n"
#: tools/symcryptrun.c:809
#, c-format
msgid "cannot allocate outfile string: %s\n"
msgstr "Kann Out-Datei-Zeichenkette keinen Speicher zuteilen: %s\n"
#: tools/symcryptrun.c:983
#, c-format
msgid "either %s or %s must be given\n"
msgstr "entweder %s oder %s muß angegeben sein\n"
#: tools/symcryptrun.c:1010
msgid "no class provided\n"
msgstr "keine Klasse angegeben\n"
#: tools/symcryptrun.c:1019
#, c-format
msgid "class %s is not supported\n"
msgstr "Klasse %s wird nicht unterstützt\n"
#: tools/gpg-check-pattern.c:145
msgid "Usage: gpg-check-pattern [options] patternfile (-h for help)\n"
msgstr "Aufruf: gpg-check-pattern [Optionen] Musterdatei (-h für Hilfe)\n"
#: tools/gpg-check-pattern.c:148
msgid ""
"Syntax: gpg-check-pattern [options] patternfile\n"
"Check a passphrase given on stdin against the patternfile\n"
msgstr ""
"Syntax: gpg-check-pattern [optionen] Musterdatei\n"
"Die von stdin gelesene Passphrase gegen die Musterdatei prüfen\n"
+#~ msgid "can't setup KSBA reader: %s\n"
+#~ msgstr "KSAB Reader Objekt kann nicht erstellt werden: %s\n"
+
+#~ msgid "|FILE|listen on socket FILE"
+#~ msgstr "|DATEI|Anfragen auf Socket DATEI annehmen"
+
+#~ msgid "command %s failed: %s\n"
+#~ msgstr "Kommando %s fehlgeschlagen: %s\n"
+
+#~ msgid "no data stream"
+#~ msgstr "Kein Datenstrom"
+
#~ msgid "can't fdopen pipe for reading: %s\n"
#~ msgstr "Pipe kann nicht zum Lesen \"fdopen\"t werden: %s\n"
#~ msgid "Please select where to store the key:\n"
#~ msgstr "Wählen Sie den Speicherort für den Schlüssel:\n"
#~ msgid "secret key already stored on a card\n"
#~ msgstr "Geheimer Schlüssel ist bereits auf einer Karte gespeichert\n"
#~ msgid "error writing key to card: %s\n"
#~ msgstr "Fehler beim Schreiben des Schlüssels auf die Karte: %s\n"
#~ msgid "remove the passphrase from exported subkeys"
#~ msgstr "Die Passphrase von exportierten Unterschlüssel entfernen"
#~ msgid "key %s: not protected - skipped\n"
#~ msgstr "Schlüssel %s: ungeschützt - übersprungen\n"
#~ msgid "about to export an unprotected subkey\n"
#~ msgstr "Ein ungeschützter Unterschlüssel wird exportiert werden\n"
#~ msgid "failed to unprotect the subkey: %s\n"
#~ msgstr "Entfernen des Schutzes für des Unterschlüssel fehlgeschlagen: %s\n"
# translated by wk
#~ msgid "WARNING: secret key %s does not have a simple SK checksum\n"
#~ msgstr "WARNUNG: Der geheime Schlüssel %s hat keine einfache SK-Prüfsumme\n"
#~ msgid "key %s: secret key without public key - skipped\n"
#~ msgstr ""
#~ "Schlüssel %s: geheimer Schlüssel ohne öffentlichen Schlüssel - "
#~ "übersprungen\n"
#~ msgid "create a public key when importing a secret key"
#~ msgstr ""
#~ "beim Import eines geheimen Schlüssels einen öffentliche Schlüssel erzeugen"
#~ msgid "no default secret keyring: %s\n"
#~ msgstr "Kein voreingestellter geheimer Schlüsselbund: %s\n"
#~ msgid "key %s: already in secret keyring\n"
#~ msgstr "Schlüssel %s: Ist bereits im geheimen Schlüsselbund\n"
#~ msgid "key %s: secret key not found: %s\n"
#~ msgstr "Schlüssel %s: geheimer Schlüssel nicht gefunden: %s\n"
#~ msgid "NOTE: a key's S/N does not match the card's one\n"
#~ msgstr ""
#~ "Hinweis: Eine Schlüsselseriennr stimmt nicht mit derjenigen der Karte "
#~ "überein\n"
#~ msgid "NOTE: primary key is online and stored on card\n"
#~ msgstr "Hinweis: Hauptschlüssel ist online und auf der Karte gespeichert\n"
#~ msgid "NOTE: secondary key is online and stored on card\n"
#~ msgstr "Hinweis: Zweitschlüssel ist online und auf der Karte gespeichert\n"
#~ msgid "Key is protected.\n"
#~ msgstr "Schlüssel ist geschützt.\n"
#~ msgid "error reading secret keyblock \"%s\": %s\n"
#~ msgstr "Fehler beim Lesen des geheimen Schlüsselblocks \"%s\": %s\n"
#~ msgid "Please remove selections from the secret keys.\n"
#~ msgstr "Bitte entfernen Sie die Auswahl von den geheimen Schlüsseln.\n"
#~ msgid "No corresponding signature in secret ring\n"
#~ msgstr "Keine entsprechende Signatur im geheimen Schlüsselbund\n"
#~ msgid "writing secret key stub to `%s'\n"
#~ msgstr "schreiben des geheimen Schlüssel-\"stub\"s nach `%s'\n"
#~ msgid "writing secret key to `%s'\n"
#~ msgstr "schreiben des geheimen Schlüssels nach '%s'\n"
#~ msgid "no writable secret keyring found: %s\n"
#~ msgstr "kein schreibbarer geheimer Schlüsselbund gefunden: %s\n"
#~ msgid "error writing secret keyring `%s': %s\n"
#~ msgstr "Fehler beim Schreiben des geheimen Schlüsselbundes `%s': %s\n"
#~ msgid "WARNING: 2 files with confidential information exists.\n"
#~ msgstr "Warnung: Zwei Dateien mit vertraulichem Inhalt vorhanden.\n"
#~ msgid "%s is the unchanged one\n"
#~ msgstr "%s ist der Unveränderte\n"
#~ msgid "%s is the new one\n"
#~ msgstr "%s ist der Neue\n"
#~ msgid "Please fix this possible security flaw\n"
#~ msgstr "Bitte diesen potentiellen Sicherheitsmangel beseitigen\n"
#~ msgid "no corresponding public key: %s\n"
#~ msgstr "kein zugehöriger öffentlicher Schlüssel: %s\n"
#~ msgid "public key does not match secret key!\n"
#~ msgstr "Öffentlicher Schlüssel paßt nicht zum geheimen Schlüssel!\n"
#~ msgid "unknown protection algorithm\n"
#~ msgstr "Unbekanntes Schutzverfahren\n"
#~ msgid "NOTE: This key is not protected!\n"
#~ msgstr "Dieser Schlüssel ist nicht geschützt.\n"
#~ msgid "Invalid passphrase; please try again"
#~ msgstr "Ungültige Passphrase; versuchen Sie es bitte noch einmal"
#~ msgid "%s ...\n"
#~ msgstr "%s ...\n"
#~ msgid "WARNING: Weak key detected - please change passphrase again.\n"
#~ msgstr ""
#~ "WARNUNG: Unsicherer Schlüssel entdeckt -\n"
#~ " bitte Passphrase nochmals wechseln.\n"
#~ msgid ""
#~ "generating the deprecated 16-bit checksum for secret key protection\n"
#~ msgstr ""
#~ "Die mißbilligte 16-bit Prüfsumme wird zum Schutz des geheimen Schlüssels "
#~ "benutzt\n"
-#~ msgid "malformed DIRMNGR_INFO environment variable\n"
-#~ msgstr "Die Variable DIRMNGR_INFO ist fehlerhaft\n"
-
-#~ msgid "dirmngr protocol version %d is not supported\n"
-#~ msgstr "Die Dirmngr Protokollversion %d wird nicht unterstützt\n"
-
#~ msgid "use system's dirmngr if available"
#~ msgstr "Benutze den System Dirmngr falls verfügbar"
#~ msgid "Command> "
#~ msgstr "Befehl> "
#~ msgid "the trustdb is corrupted; please run \"gpg --fix-trustdb\".\n"
#~ msgstr ""
#~ "Die \"Trust\"-Datenbank ist beschädigt; verwenden Sie \"gpg --fix-trustdb"
#~ "\".\n"
#~ msgid "Please report bugs to <"
#~ msgstr "Fehlerberichte bitte an <"
#~ msgid "Please report bugs to "
#~ msgstr "Bitte richten Sie Berichte über Bugs (Softwarefehler) an "
#~ msgid "DSA keypair will have %u bits.\n"
#~ msgstr "Das DSA-Schlüsselpaar wird %u Bit haben.\n"
#~ msgid "this command has not yet been implemented\n"
#~ msgstr "Dieser Befehl wurde noch nicht implementiert\n"
#~ msgid "Repeat passphrase\n"
#~ msgstr "Geben Sie die Passphrase nochmal ein\n"
#~ msgid "||Please enter your PIN at the reader's keypad%%0A[sigs done: %lu]"
#~ msgstr ""
#~ "||Bitte die PIN auf der Tastatur des Kartenleser eingeben%%0A[Sigs "
#~ "erzeugt: %lu]"
#~ msgid "|A|Admin PIN"
#~ msgstr "|A|Admin-PIN"
#~ msgid "read options from file"
#~ msgstr "Konfigurationsoptionen aus Datei lesen"
#~ msgid "Used libraries:"
#~ msgstr "Verwendete Bibliotheken:"
#~ msgid "generate PGP 2.x compatible messages"
#~ msgstr "PGP 2.x-kompatibele Botschaften erzeugen"
#~ msgid "|[FILE]|make a signature"
#~ msgstr "|[DATEI]|Erzeuge eine Signatur"
#~ msgid "|[FILE]|make a clear text signature"
#~ msgstr "|[DATEI]|Erzeuge eine Klartextsignatur"
#~ msgid "|NAME|use NAME as default recipient"
#~ msgstr "|NAME|NAME als voreingestellten Empfänger benutzen"
#~ msgid "use the default key as default recipient"
#~ msgstr ""
#~ "Den Standardschlüssel als voreingestellten\n"
#~ "Empfänger benutzen"
#~ msgid "force v3 signatures"
#~ msgstr "v3 Signaturen erzwingen"
#~ msgid "always use a MDC for encryption"
#~ msgstr "Beim Verschlüsseln ein Siegel (MDC) verwenden"
#~ msgid "add this secret keyring to the list"
#~ msgstr "Als geheimen Schlüsselbund mitbenutzen"
#~ msgid "|NAME|set terminal charset to NAME"
#~ msgstr "|NAME|Terminalzeichensatz NAME benutzen"
#~ msgid "|FILE|load extension module FILE"
#~ msgstr "|DATEI|Erweiterungsmodul DATEI laden"
#~ msgid "|N|use compress algorithm N"
#~ msgstr "|N|Komprimierverfahren N benutzen"
#~ msgid "remove key from the public keyring"
#~ msgstr "Schlüssel aus dem öffentlichen Schlüsselbund löschen"
#~ msgid ""
#~ "It's up to you to assign a value here; this value will never be exported\n"
#~ "to any 3rd party. We need it to implement the web-of-trust; it has "
#~ "nothing\n"
#~ "to do with the (implicitly created) web-of-certificates."
#~ msgstr ""
#~ "Sie müssen selbst 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\n"
#~ "(implizit erzeugten) \"Netz der Zertifikate\" zu tun."
#~ msgid ""
#~ "To build the Web-of-Trust, GnuPG needs to know which keys are\n"
#~ "ultimately trusted - those are usually the keys for which you have\n"
#~ "access to the secret key. Answer \"yes\" to set this key to\n"
#~ "ultimately trusted\n"
#~ msgstr ""
#~ "Um das Web-of-Trust aufzubauen muß GnuPG wissen, welchen Schlüsseln\n"
#~ "uneingeschränkt vertraut wird. Das sind üblicherweise die Schlüssel\n"
#~ "auf deren geheimen Schlüssel Sie Zugruff haben.\n"
#~ "Antworten Sie mit \"yes\" um diesen Schlüssel uneingeschränkt zu "
#~ "vertrauen\n"
#~ msgid "If you want to use this untrusted key anyway, answer \"yes\"."
#~ msgstr ""
#~ "Wenn Sie diesen nicht vertrauenswürdigen Schlüssel trotzdem benutzen "
#~ "wollen,\n"
#~ "so antworten Sie mit \"ja\"."
#~ msgid ""
#~ "Enter the user ID of the addressee to whom you want to send the message."
#~ msgstr ""
#~ "Geben Sie die User-ID dessen ein, dem Sie die Botschaft senden wollen."
#~ msgid ""
#~ "Select the algorithm to use.\n"
#~ "\n"
#~ "DSA (aka DSS) is the Digital Signature Algorithm and can only be used\n"
#~ "for signatures.\n"
#~ "\n"
#~ "Elgamal is an encrypt-only algorithm.\n"
#~ "\n"
#~ "RSA may be used for signatures or encryption.\n"
#~ "\n"
#~ "The first (primary) key must always be a key which is capable of signing."
#~ msgstr ""
#~ "Wählen Sie das zu verwendene Verfahren.\n"
#~ "\n"
#~ "DSA (alias DSS) ist der \"Digital Signature Algorithm\" und kann nur für\n"
#~ "Signaturen genutzt werden.\n"
#~ "\n"
#~ "Elgamal ist ein Verfahren nur für Verschlüsselung.\n"
#~ "\n"
#~ "RSA kann sowohl für Signaturen als auch für Verschlüsselung genutzt\n"
#~ "werden.\n"
#~ "\n"
#~ "Der erste Schlüssel (Hauptschlüssel) muß immer ein Schlüssel sein, mit "
#~ "dem\n"
#~ "unterschrieben werden kann."
#~ msgid ""
#~ "In general it is not a good idea to use the same key for signing and\n"
#~ "encryption. This algorithm should only be used in certain domains.\n"
#~ "Please consult your security expert first."
#~ msgstr ""
#~ "Normalerweise ist es nicht gut, denselben Schlüssel zum unterschreiben\n"
#~ "und verschlüsseln zu nutzen. Dieses Verfahren sollte in speziellen\n"
#~ "Anwendungsgebiten benutzt werden. Bitte lassen Sie sich zuerst von \n"
#~ "einem Sicherheistexperten beraten."
#~ msgid "Enter the size of the key"
#~ msgstr "Wählen Sie die gewünschte Schlüssellänge"
#~ msgid "Answer \"yes\" or \"no\""
#~ msgstr "Geben Sie \"ja\" oder \"nein\" ein"
#~ msgid ""
#~ "Enter the required value as shown in the prompt.\n"
#~ "It is possible to enter a ISO date (YYYY-MM-DD) but you won't\n"
#~ "get a good error response - instead the system tries to interpret\n"
#~ "the given value as an interval."
#~ msgstr ""
#~ "Geben Sie den benötigten Wert so an, wie er im Prompt erscheint.\n"
#~ "Es ist zwar möglich ein \"ISO\"-Datum (JJJJ-MM-DD) einzugeben, aber man\n"
#~ "erhält dann ggfs. keine brauchbaren Fehlermeldungen - stattdessen "
#~ "versucht\n"
#~ "der Rechner den Wert als Intervall (von-bis) zu deuten."
#~ msgid "Enter the name of the key holder"
#~ msgstr "Geben Sie den Namen des Schlüsselinhabers ein"
#~ msgid "please enter an optional but highly suggested email address"
#~ msgstr ""
#~ "Geben Sie eine Email-Adresse ein. Dies ist zwar nicht unbedingt "
#~ "notwendig,\n"
#~ "aber sehr empfehlenswert."
#~ msgid "Please enter an optional comment"
#~ msgstr "Geben Sie - bei Bedarf - einen Kommentar ein"
#~ msgid ""
#~ "N to change the name.\n"
#~ "C to change the comment.\n"
#~ "E to change the email address.\n"
#~ "O to continue with key generation.\n"
#~ "Q to to quit the key generation."
#~ msgstr ""
#~ "N um den Namen zu ändern.\n"
#~ "K um den Kommentar zu ändern.\n"
#~ "E um die Email-Adresse zu ändern.\n"
#~ "F um mit der Schlüsselerzeugung fortzusetzen.\n"
#~ "B um die Schlüsselerzeugung abbrechen."
#~ msgid ""
#~ "Answer \"yes\" (or just \"y\") if it is okay to generate the sub key."
#~ msgstr ""
#~ "Geben Sie \"ja\" (oder nur \"j\") ein, um den Unterschlüssel zu erzeugen."
#~ msgid ""
#~ "When you sign a user ID on a key, you should first verify that the key\n"
#~ "belongs to the person named in the user ID. It is useful for others to\n"
#~ "know how carefully you verified this.\n"
#~ "\n"
#~ "\"0\" means you make no particular claim as to how carefully you verified "
#~ "the\n"
#~ " key.\n"
#~ "\n"
#~ "\"1\" means you believe the key is owned by the person who claims to own "
#~ "it\n"
#~ " but you could not, or did not verify the key at all. This is useful "
#~ "for\n"
#~ " a \"persona\" verification, where you sign the key of a pseudonymous "
#~ "user.\n"
#~ "\n"
#~ "\"2\" means you did casual verification of the key. For example, this "
#~ "could\n"
#~ " mean that you verified the key fingerprint and checked the user ID on "
#~ "the\n"
#~ " key against a photo ID.\n"
#~ "\n"
#~ "\"3\" means you did extensive verification of the key. For example, this "
#~ "could\n"
#~ " mean that you verified the key fingerprint with the owner of the key "
#~ "in\n"
#~ " person, and that you checked, by means of a hard to forge document "
#~ "with a\n"
#~ " photo ID (such as a passport) that the name of the key owner matches "
#~ "the\n"
#~ " name in the user ID on the key, and finally that you verified (by "
#~ "exchange\n"
#~ " of email) that the email address on the key belongs to the key "
#~ "owner.\n"
#~ "\n"
#~ "Note that the examples given above for levels 2 and 3 are *only* "
#~ "examples.\n"
#~ "In the end, it is up to you to decide just what \"casual\" and \"extensive"
#~ "\"\n"
#~ "mean to you when you sign other keys.\n"
#~ "\n"
#~ "If you don't know what the right answer is, answer \"0\"."
#~ msgstr ""
#~ "Wenn Sie die User-ID eines Schlüssels beglaubigen wollen, sollten Sie "
#~ "zunächst\n"
#~ "sicherstellen, daß der Schlüssel demjenigen gehört, der in der User-ID "
#~ "genannt\n"
#~ "ist. Für Dritte ist es hilfreich zu wissen, wie gut diese Zuordnung "
#~ "überprüft\n"
#~ "wurde.\n"
#~ "\n"
#~ "\"0\" zeigt, daß Sie keine bestimmte Aussage über die Sorgfalt der \n"
#~ " Schlüsselzuordnung machen.\n"
#~ "\n"
#~ "\"1\" Sie glauben, daß der Schlüssel der benannten Person gehört,\n"
#~ " aber Sie konnten oder nahmen die Überpüfung überhaupt nicht vor.\n"
#~ " Dies ist hilfreich für eine \"persona\"-Überprüfung, wobei man den\n"
#~ " Schlüssel eines Pseudonym-Trägers beglaubigt\n"
#~ "\n"
#~ "\"2\" Sie nahmen eine flüchtige Überprüfung vor. Das heißt Sie haben z."
#~ "B.\n"
#~ " den Schlüsselfingerabdruck kontrolliert und die User-ID des "
#~ "Schlüssels\n"
#~ " anhand des Fotos geprüft.\n"
#~ "\n"
#~ "\"3\" Sie haben eine ausführlich Kontrolle des Schlüssels vorgenommen.\n"
#~ " Das kann z.B. die Kontrolle des Schlüsselfingerabdrucks mit dem\n"
#~ " Schlüsselinhaber persönlich vorgenommen haben; daß Sie die User-ID "
#~ "des\n"
#~ " Schlüssel anhand einer schwer zu fälschenden Urkunde mit Foto (wie z."
#~ "B.\n"
#~ " einem Paß) abgeglichen haben und schließlich per Email-Verkehr die\n"
#~ " Email-Adresse als zum Schlüsselbesitzer gehörig erkannt haben.\n"
#~ "\n"
#~ "Beachten Sie, daß diese Beispiele für die Antworten 2 und 3 *nur* "
#~ "Beispiele\n"
#~ "sind. Schlußendlich ist es Ihre Sache, was Sie unter \"flüchtig\" oder\n"
#~ " \"ausführlich\" verstehen, wenn Sie Schlüssel Dritter beglaubigen.\n"
#~ "\n"
#~ "Wenn Sie nicht wissen, wie Sie antworten sollen, wählen Sie \"0\"."
#~ msgid "Answer \"yes\" if you want to sign ALL the user IDs"
#~ msgstr ""
#~ "Geben Sie \"ja\" (oder nur \"j\") ein, um alle User-IDs zu beglaubigen"
#~ msgid ""
#~ "Answer \"yes\" if you really want to delete this user ID.\n"
#~ "All certificates are then also lost!"
#~ msgstr ""
#~ "Geben Sie \"ja\" (oder nur \"j\") ein, um diese User-ID zu LÖSCHEN.\n"
#~ "Alle Zertifikate werden dann auch weg sein!"
#~ msgid "Answer \"yes\" if it is okay to delete the subkey"
#~ msgstr ""
#~ "Geben Sie \"ja\" (oder nur \"j\") ein, um diesen Unterschlüssel zu löschen"
#~ msgid ""
#~ "This is a valid signature on the key; you normally don't want\n"
#~ "to delete this signature because it may be important to establish a\n"
#~ "trust connection to the key or another key certified by this key."
#~ msgstr ""
#~ "Dies ist eine gültige Beglaubigung für den Schlüssel. Es ist "
#~ "normalerweise\n"
#~ "unnötig sie zu löschen. Sie ist möglicherweise sogar notwendig, um einen\n"
#~ "Trust-Weg zu diesem oder einem durch diesen Schlüssel beglaubigten "
#~ "Schlüssel\n"
#~ "herzustellen."
#~ msgid ""
#~ "This signature can't be checked because you don't have the\n"
#~ "corresponding key. You should postpone its deletion until you\n"
#~ "know which key was used because this signing key might establish\n"
#~ "a trust connection through another already certified key."
#~ msgstr ""
#~ "Diese Beglaubigung kann nicht geprüft werden, da Sie den passenden "
#~ "Schlüssel\n"
#~ "nicht besitzen. Sie sollten die Löschung der Beglaubigung verschieben, "
#~ "bis\n"
#~ "sie wissen, welcher Schlüssel verwendet wurde. Denn vielleicht würde "
#~ "genau\n"
#~ "diese Beglaubigung den \"Trust\"-Weg komplettieren."
#~ msgid ""
#~ "The signature is not valid. It does make sense to remove it from\n"
#~ "your keyring."
#~ msgstr ""
#~ "Diese Beglaubigung ist ungültig. Es ist sinnvoll sie aus Ihrem\n"
#~ "Schlüsselbund zu entfernen."
#~ msgid ""
#~ "This is a signature which binds the user ID to the key. It is\n"
#~ "usually not a good idea to remove such a signature. Actually\n"
#~ "GnuPG might not be able to use this key anymore. So do this\n"
#~ "only if this self-signature is for some reason not valid and\n"
#~ "a second one is available."
#~ msgstr ""
#~ "Diese Beglaubigung bindet die User-ID an den Schlüssel. Normalerweise "
#~ "ist\n"
#~ "es nicht gut, solche Beglaubigungen zu entfernen. Um ehrlich zu sein:\n"
#~ "Es könnte dann sein, daß GnuPG diesen Schlüssel gar nicht mehr benutzen "
#~ "kann.\n"
#~ "Sie sollten diese Eigenbeglaubigung also nur dann entfernen, wenn sie "
#~ "aus\n"
#~ "irgendeinem Grund nicht gültig ist und eine zweite Beglaubigung verfügbar "
#~ "ist."
#~ msgid ""
#~ "Change the preferences of all user IDs (or just of the selected ones)\n"
#~ "to the current list of preferences. The timestamp of all affected\n"
#~ "self-signatures will be advanced by one second.\n"
#~ msgstr ""
#~ "Ändern der Voreinstellung aller User-IDs (oder nur der ausgewählten)\n"
#~ "auf die aktuelle Liste der Voreinstellung. Die Zeitangaben aller "
#~ "betroffenen\n"
#~ "Eigenbeglaubigungen werden um eine Sekunde vorgestellt.\n"
#~ msgid "Please enter the passhrase; this is a secret sentence \n"
#~ msgstr "Bitte geben Sie die Passphrase ein. Dies ist ein geheimer Satz \n"
#~ msgid ""
#~ "Please repeat the last passphrase, so you are sure what you typed in."
#~ 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."
#~ msgid "Give the name of the file to which the signature applies"
#~ msgstr ""
#~ "Geben Sie den Namen der Datei an, zu dem die abgetrennte Signatur gehört"
#~ msgid "Answer \"yes\" if it is okay to overwrite the file"
#~ msgstr "Geben Sie \"ja\" ein, wenn Sie die Datei überschreiben möchten"
#~ msgid ""
#~ "Please enter a new filename. If you just hit RETURN the default\n"
#~ "file (which is shown in brackets) will be used."
#~ msgstr ""
#~ "Geben Sie bitte einen neuen Dateinamen ein. Falls Sie nur die\n"
#~ "Eingabetaste betätigen, wird der (in Klammern angezeigte) "
#~ "Standarddateiname\n"
#~ "verwendet."
#~ msgid ""
#~ "You should specify a reason for the certification. Depending on the\n"
#~ "context you have the ability to choose from this list:\n"
#~ " \"Key has been compromised\"\n"
#~ " Use this if you have a reason to believe that unauthorized persons\n"
#~ " got access to your secret key.\n"
#~ " \"Key is superseded\"\n"
#~ " Use this if you have replaced this key with a newer one.\n"
#~ " \"Key is no longer used\"\n"
#~ " Use this if you have retired this key.\n"
#~ " \"User ID is no longer valid\"\n"
#~ " Use this to state that the user ID should not longer be used;\n"
#~ " this is normally used to mark an email address invalid.\n"
#~ msgstr ""
#~ "Sie sollten einen Grund für die Zertifizierung angeben. Je nach\n"
#~ "Zusammenhang können Sie aus dieser Liste auswählen:\n"
#~ " \"Schlüssel wurde kompromitiert\"\n"
#~ " Falls Sie Grund zu der Annahme haben, daß nicht berechtigte "
#~ "Personen\n"
#~ " Zugriff zu Ihrem geheimen Schlüssel hatten\n"
#~ " \"Schlüssel ist überholt\"\n"
#~ " Falls Sie diesen Schlüssel durch einem neuen ersetzt haben.\n"
#~ " \"Schlüssel wird nicht mehr benutzt\"\n"
#~ " Falls Sie diesen Schlüssel zurückgezogen haben.\n"
#~ " \"User-ID ist nicht mehr gültig\"\n"
#~ " Um bekanntzugeben, daß die User-ID nicht mehr benutzt werden soll.\n"
#~ " So weist man normalerweise auf eine ungültige Emailadresse hin.\n"
#~ msgid ""
#~ "If you like, you can enter a text describing why you issue this\n"
#~ "revocation certificate. Please keep this text concise.\n"
#~ "An empty line ends the text.\n"
#~ msgstr ""
#~ "Wenn Sie möchten, können Sie hier einen Text eingeben, der darlegt, "
#~ "warum\n"
#~ "Sie diesen Widerruf herausgeben. Der Text sollte möglichst knapp sein.\n"
#~ "Eine Leerzeile beendet die Eingabe.\n"
#~ msgid "can't put notation data into v3 (PGP 2.x style) signatures\n"
#~ msgstr ""
#~ "Notationen können in einen v3- (PGP 2.x-artigen-) Schlüssel nicht "
#~ "eingetragen werden\n"
#~ msgid "can't put notation data into v3 (PGP 2.x style) key signatures\n"
#~ msgstr ""
#~ "Notationen können in eine v3 (PGP 2.x-artige) Schlüsselunterschrift nicht "
#~ "eingetragen werden\n"
#~ msgid "can't put a policy URL into v3 (PGP 2.x style) signatures\n"
#~ msgstr ""
#~ "Eine Policy URL kann in einen v3 (PGP 2.x-artigen) Schlüssel nicht "
#~ "eingetragen werden\n"
# translated by wk
#~ msgid "can't put a policy URL into v3 key (PGP 2.x style) signatures\n"
#~ msgstr ""
#~ "Eine Policy URL kann in einem v3 Schlüssel(PGP 2.x artig) nicht "
#~ "gespeichert werden\n"
#~ msgid "key generation is not available from the commandline\n"
#~ msgstr "Die Schlüsselerzeugung ist über die Kommandozeile nicht möglich\n"
#~ msgid "please use the script \"%s\" to generate a new key\n"
#~ msgstr ""
#~ "Bitte verwenden Sie das Skript \"%s\" zur Erzeugung eines neuen "
#~ "Schlüssels.\n"
#~ msgid "cipher extension `%s' not loaded due to unsafe permissions\n"
#~ msgstr ""
#~ "Verschlüsselungserweiterung `%s' wurde wegen unsicherer Zugriffsrechte "
#~ "nicht geladen\n"
-
-#~ msgid "DSA requires the use of a 160 bit hash algorithm\n"
-#~ msgstr "DSA benötigt einen 160-bit Hash Algorithmus\n"

File Metadata

Mime Type
text/x-diff
Expires
Sun, Feb 8, 3:01 PM (6 h, 56 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
7a/d8/a3e85238fd6d7a9d362fcd19be8c

Event Timeline