5 years agoSilence more warnings about unused vars and args.
Werner Koch [Fri, 7 Mar 2014 08:46:44 +0000 (09:46 +0100)]
Silence more warnings about unused vars and args.

* dirmngr/cdblib.c (cdb_init) [W32]: Remove unused var.
* dirmngr/dirmngr-client.c (start_dirmngr): s/int/assuan_fd_t/.
* dirmngr/dirmngr.c (w32_service_control): Mark unused args.
(call_real_main): New.
(main) [W32]: Use new function to match prototype.
(real_main) [W32]: Mark unused vars.
(handle_signal) [W32]: Do not build the function at all.
(handle_connections) [W32]: Do not define signo.
* dirmngr/ldap-wrapper-ce.c (outstream_reader_cb): Remove used vars.
* g10/tdbio.c (ftruncate) [DOSISH]: Define only if not yet defined.

5 years agodirmngr: Simplify strtok macro.
Werner Koch [Fri, 7 Mar 2014 08:46:44 +0000 (09:46 +0100)]
dirmngr: Simplify strtok macro.

* dirmngr/ldap-url.c (ldap_utf8_strtok): Remove unused r3d arg.
(ldap_str2charray): Remove lasts.

I have no clue why an utf8 version was planned to be used.  Do the
LDAP folks really assume that eventually non-ascii delimiters might be
used?  Simplified it to silence the warning about an used helper var.

5 years agoUse attribute __gnu_printf__ also in estream header files.
Werner Koch [Fri, 7 Mar 2014 08:46:44 +0000 (09:46 +0100)]
Use attribute __gnu_printf__ also in estream header files.

* common/estream-printf.h: Use attribute gnu_printf.
* common/estream.h: Ditto.

5 years agoUse attribute __gnu_printf__ with our estream-printf functions.
Werner Koch [Fri, 7 Mar 2014 08:46:44 +0000 (09:46 +0100)]
Use attribute __gnu_printf__ with our estream-printf functions.

* common/mischelp.h (JNLIB_GCC_A_PRINTF): Use __gnu_printf__

Our printf supports most of the GNU features and thus we can silence
the warnings from mingw.

5 years agow32: Silence warnings about unused vars.
Werner Koch [Fri, 7 Mar 2014 08:46:44 +0000 (09:46 +0100)]
w32: Silence warnings about unused vars.

* agent/gpg-agent.c (main) [W32]: Mark unused vars.
* sm/gpgsm.c (run_protect_tool) [W32]: Ditto.
* g10/trustdb.c (check_regexp) [DISABLE_REGEX]: Ditto.
* scd/scdaemon.c (main) [W32]: Ditto.
(handle_connections) [W32]: Ditto.
(handle_signal) [W32]: Do not build the function at all.
* scd/apdu.c (pcsc_send_apdu_direct): Ditto.
(connect_pcsc_card): s/long/pcsc_dword_t/.
(open_pcsc_reader_direct): Remove var listlen.

5 years agow32: Fix a potential problem in gpgconf's gettext.
Werner Koch [Fri, 7 Mar 2014 08:46:44 +0000 (09:46 +0100)]
w32: Fix a potential problem in gpgconf's gettext.

* tools/gpgconf-comp.c (my_dgettext) [USE_SIMPLE_GETTEXT]: Make sure
to return something even DOMAIN is not given.

5 years agoSilence several warnings when building under Windows.
Werner Koch [Fri, 7 Mar 2014 08:46:44 +0000 (09:46 +0100)]
Silence several warnings when building under Windows.

* agent/call-scd.c (start_scd): Replace int by assuan_fd_t.
(start_pinentry): Ditto.
* common/asshelp.c (start_new_gpg_agent): Replace int by assuan_fd_t.
* common/dotlock.c (GNUPG_MAJOR_VERSION): Include stringhelp.h for
prototypes on Windows and some other platforms.
* common/logging.c (fun_writer): Declare addrbuf only if needed.
* g10/decrypt.c (decrypt_message_fd) [W32]: Return not_implemented.
* g10/encrypt.c (encrypt_crypt) [W32]: Return error if used in server
* g10/dearmor.c (dearmor_file, enarmor_file): Replace GNUPG_INVALID_FD
by -1 as temporary hack for Windows.
* g10/export.c (do_export): Ditto.
* g10/revoke.c (gen_desig_revoke, gen_revoke): Ditto.
* g10/sign.c (sign_file, clearsign_file, sign_symencrypt_file): Ditto.
* g10/server.c (cmd_verify, gpg_server) [W32]: Return an error.

The gpg server mode is not actual working and thus we can avoid the
warnings by explicitly disabling the mode.  We keep it working under
Unix, though.

5 years agow32: Include winsock2.h to silence warnings.
Werner Koch [Fri, 7 Mar 2014 08:46:44 +0000 (09:46 +0100)]
w32: Include winsock2.h to silence warnings.

5 years agogl: Avoid warning about shadowing an arg.
Werner Koch [Fri, 7 Mar 2014 08:46:44 +0000 (09:46 +0100)]
gl: Avoid warning about shadowing an arg.

* gl/setenv.c (KNOWN_VALUE): s/value/_v/.

5 years agocommon: Fix build problem with Sun Studio compiler.
Werner Koch [Fri, 15 Nov 2013 08:08:58 +0000 (09:08 +0100)]
common: Fix build problem with Sun Studio compiler.

* common/estream.c (ESTREAM_MUTEX_UNLOCK): Use int dummy dummy

GnuPG-bug-id: 1566
Signed-off-by: Werner Koch <>
(cherry picked from commit 571bcd4662a351cfa55bbf1a79ed1bc26da5780f)

Reolved conflicts:

Warning: estream.c still uses pth_mutex_* which is definitely wrong.
         Needs to be investigated.

5 years agogpg: Do not require a trustdb with --always-trust.
Werner Koch [Fri, 11 Oct 2013 07:25:58 +0000 (09:25 +0200)]
gpg: Do not require a trustdb with --always-trust.

* g10/tdbio.c (tdbio_set_dbname): Add arg R_NOFILE.
* g10/trustdb.c (trustdb_args): Add field no_trustdb.
(init_trustdb): Set that field.
(revalidation_mark):  Take care of a nonexistent trustdb file.
(read_trust_options): Ditto.
(tdb_get_ownertrust): Ditto.
(tdb_get_min_ownertrust): Ditto.
(tdb_update_ownertrust): Ditto.
(update_min_ownertrust): Ditto.
(tdb_clear_ownertrusts): Ditto.
(tdb_cache_disabled_value): Ditto.
(tdb_check_trustdb_stale): Ditto.
(tdb_get_validity_core): Ditto.
* g10/gpg.c (main): Do not create a trustdb with most commands for
trust-model always.

This slightly changes the semantics of most commands in that they
won't create a trustdb if --trust-model=always is used.  It just does
not make sense to create a trustdb if there is no need for it.

Signed-off-by: Werner Koch <>
(cherry picked from commit 1a0eeaacd1bf09fe5125dbc3f56016bc20f3512e)

Resolved conflicts:
g10/trustdb.c: Manually apply changes due to changed
                       function names.

Note that this also includes the fix for clear_ownertrust, see
GnuPG-bug-id: 1622.

5 years agogpg: Print a "not found" message for an unknown key in --key-edit.
Werner Koch [Fri, 4 Oct 2013 16:34:56 +0000 (18:34 +0200)]
gpg: Print a "not found" message for an unknown key in --key-edit.

* g10/keyedit.c (keyedit_menu): Print message.

GnuPG-bug-id: 1420
Signed-off-by: Werner Koch <>
(cherry picked from commit 0bf54e60d31389812d05c3fd29bece876204561d)

Resolved conflicts:
g10/keyedit.c: Fix white spaces

5 years agogpg: Protect against rogue keyservers sending secret keys.
Werner Koch [Fri, 4 Oct 2013 11:44:39 +0000 (13:44 +0200)]
gpg: Protect against rogue keyservers sending secret keys.

* g10/options.h (IMPORT_NO_SECKEY): New.
* g10/keyserver.c (keyserver_spawn, keyserver_import_cert): Set new
* g10/import.c (import_secret_one): Deny import if flag is set.

By modifying a keyserver or a DNS record to send a secret key, an
attacker could trick a user into signing using a different key and
user id.  The trust model should protect against such rogue keys but
we better make sure that secret keys are never received from remote

Suggested-by: Stefan Tomanek
Signed-off-by: Werner Koch <>
(cherry picked from commit e7abed3448c1c1a4e756c12f95b665b517d22ebe)

Resolved conflicts:

5 years agoagent: Fix UPDATESTARTUPTTY for ssh.
Werner Koch [Mon, 19 Aug 2013 09:44:59 +0000 (11:44 +0200)]
agent: Fix UPDATESTARTUPTTY for ssh.

* agent/command-ssh.c (setup_ssh_env): Fix env setting.

gniibe reported this to gnupg-devel on 2012-07-04:

  (2) UPDATESTARTUPTTY doesn't work to switch TTY for pinentry for


  Current implementation:

      In the function start_command_handler_ssh, the logic puts
      priority on ctrl->session_env which is initialized by
      agent_init_default_ctrl.  There are always GPG_TTY and TERM
      defined, because lines around 968 in gpg-agent.c, it says:

   /* Make sure that we have a default ttyname. */

      While UPDATESTARTUPTTY updates opt.startup_env, it doesn't
      affect at all.

  Here is a patch to point the issue.  Tested and works for me.

Signed-off-by: Werner Koch <>
(cherry picked from commit 9f5578c29adba6d4f7d3650121d07322c2f8d254)

5 years agogpgv: Init Libgcrypt to avoid syslog warning.
Werner Koch [Mon, 19 Aug 2013 09:22:11 +0000 (11:22 +0200)]
gpgv: Init Libgcrypt to avoid syslog warning.

* g10/gpgv.c (main): Check libgcrypt version and disable secure

GnuPG-bug-id: 1376
Signed-off-by: Werner Koch <>
(cherry picked from commit 3966eb244518d5612385d35a5149f7164a9fb707)

Resolved conflicts:

5 years agoImprove libcurl detection.
Werner Koch [Tue, 6 Aug 2013 08:31:54 +0000 (10:31 +0200)]
Improve libcurl detection.

* m4/libcurl.m4: Do not use AC_PATH_PROG if --with-libcurl as been
given.  Suggested by John Marshall.

GnuPG-bug-id: 1510
(cherry picked from commit 110b52fffa77b339e6d59eba939408f7e87e7138)

5 years agogpg: Remove legacy keyserver examples from the template conf file.
Werner Koch [Tue, 6 Aug 2013 08:04:12 +0000 (10:04 +0200)]
gpg: Remove legacy keyserver examples from the template conf file.

* g10/options.skel: Update.

(cherry picked from commit f3c5cc8bcd37e38b5d65db6a50466e22d03d1f0c)

5 years agow32: Define WINVER only if needed.
Werner Koch [Fri, 7 Mar 2014 08:46:44 +0000 (09:46 +0100)]
w32: Define WINVER only if needed.

* common/sysutils.c (WINVER): Define only if less that 5.0.

5 years agow32: Remove unused code.
Werner Koch [Thu, 1 Aug 2013 12:02:50 +0000 (14:02 +0200)]
w32: Remove unused code.

* jnlib/w32-reg.c (write_w32_registry_string): Remove.

5 years agoagent: Make --allow-mark-trusted the default.
Werner Koch [Wed, 3 Jul 2013 13:20:25 +0000 (15:20 +0200)]
agent: Make --allow-mark-trusted the default.

* agent/gpg-agent.c (opts, main): Add option --no-allow-mark-trusted.
Put this option into the gpgconf-list.
(main): Enable opt.allow_mark_trusted by default.
* tools/gpgconf-comp.c (gc_options_gpg_agent): Replace
allow-mark-trusted by no-allow-mark-trusted.

* agent/trustlist.c (agent_marktrusted): Always set the "relax" flag.


These changes have been in effect for the Gpg4win Windows version
since 2011-01-24 and thus first released with Gpg4win 2.1.0.  Given
the current state of PKIX it does not make any sense to lure the Unix
user into false security by making it harder to trust self-signed or
CAcert certificates.

Signed-off-by: Werner Koch <>
(cherry picked from commit 90b419f3e9d05e509348d047e05fcc79e87be6cf)

Resolved conflicts:

5 years agossh: Add support for Putty.
Werner Koch [Fri, 7 Mar 2014 08:46:44 +0000 (09:46 +0100)]
ssh: Add support for Putty.

* agent/gpg-agent.c [W32]: Include Several Windows header.
(opts): Change help text for enable-ssh-support.
(opts, main): Add option --enable-putty-support
(putty_support, PUTTY_IPC_MAGIC, PUTTY_IPC_MAXLEN): New for W32.
(agent_init_default_ctrl): Add and asssert call.
(putty_message_proc, putty_message_thread): New.
(handle_connections) [W32]: Start putty message thread.
* common/sysutils.c (w32_get_user_sid): New for W32 only
* tools/gpgconf-comp.c (gc_options_gpg_agent): Add
--enable-ssh-support and --enable-putty-support.  Make the
configuration group visible at basic level.
* agent/command-ssh.c (serve_mmapped_ssh_request): New for W32 only.

This patch enables support for Putty.  It has been tested with Putty
0.62 using an Unix created ssh key copied to the private-keys-v1.d
directory on Windows and with a manually crafted sshcontrol file.  It
also works with a smartcard key.

May thanks to gniibe who implemented a proxy in Python to test the
putty/gpg-agent communication.

Signed-off-by: Werner Koch <>
(cherry picked from commit 9f32499f99a0817f63f7a73b09bdcebe60d4775d)

Resolved conflicts:
agent/gpg-agent.c: Convert from pth to npth.

5 years agoagent: Fix binary vs. text mode problem in ssh.
Werner Koch [Wed, 3 Jul 2013 11:10:29 +0000 (13:10 +0200)]
agent: Fix binary vs. text mode problem in ssh.

* agent/command-ssh.c (file_to_buffer)
(ssh_handler_request_identities): Open streams in binary mode.
(start_command_handler_ssh): Factor some code out to ..
(setup_ssh_env): new function.

This is for now a theoretical fix because there is no ssh client yet
which uses the GnuPG style IPC.  OpenSSL for Cygwin uses only a quite
similar one.  gniibe suggested to implement that IPC style in
Libassuan so that a Cygwin version of OpenSSL may be used with GnuPG.

Signed-off-by: Werner Koch <>
(cherry picked from commit ed056d67c7c93306b68829f83a2565e978dcfd9b)

Also fixed one typo.

5 years agoFix syntax error for building on APPLE.
Werner Koch [Thu, 25 Apr 2013 11:00:16 +0000 (12:00 +0100)]
Fix syntax error for building on APPLE.

* scd/pcsc-wrapper.c [__APPLE__]: Fix syntax error.

For W32 and probably for Cygwin we don't need the wrapper, thus the
problems does not exhibit itself.

(cherry picked from commit 8ddf604659b93754ffa6dea295678a8adc293f90)

5 years agoIgnore obsolete option --disable-keypad.
Werner Koch [Thu, 18 Apr 2013 12:40:43 +0000 (14:40 +0200)]
Ignore obsolete option --disable-keypad.

* scd/scdaemon.c (opts): Ignore --disable-keypad.

The renaming of --disable-keypad to --disable-pinpad might mess up
configuration files managed with a GUI.  The GUI does not not anymore
know about the old option and would allow the user to switch
"disable-pinpad" on.  However, a "disable-keypad" might still linger
in the conf file with gpgconf not knowing about it.  Thus the conf
file would always be rejected and manual intervention would be
required.  Ignoring the old option nicely solves the problem.

(cherry picked from commit e24e92d7e244edd578c0c1f0fba6e0070cb5f104)

5 years agoAllow marking options as ignored.
Werner Koch [Thu, 18 Apr 2013 12:40:43 +0000 (14:40 +0200)]
Allow marking options as ignored.

* jnlib/argparse.h (ARGPARSE_OPT_IGNORE): New.
(ARGPARSE_TYPE_MASK): New, for internal use.
(ARGPARSE_ignore): New.
* jnlib/argparse.c (optfile_parse, arg_parse): Replace remaining
constants by macros.
(optfile_parse): Implement ARGPARSE_OPT_IGNORE.
(arg_parse): Exclide ignore options from --dump-options.

In addition to the ignore-invalid-option (commit 41d56433) it is often
useful to mark options in a configuration which as NOP.  For example
options which have no more function at all but can be expected to be
found in existing conf files.  Such an option (or command) may now be
given as

  ARGPARSE_ignore (300, "obsolete-option")

The 300 is merely used as a non-valid single option name much like
group names or the 500+n values used for long options.

Signed-off-by: Werner Koch <>
(cherry picked from commit 54c54e2824aab5716a187bbbf6dff8860d6a6056)

Resolved conflicts:
common/argparse.c: Fixed.

5 years agocommon: Fix recent commit 55656208.
Werner Koch [Thu, 6 Mar 2014 14:28:42 +0000 (15:28 +0100)]
common: Fix recent commit 55656208.

* common/membuf.c (get_membuf_shrink): Fix use of LEN.

Oops, what a stupid bug.

5 years agoFix g10/trust.c.
NIIBE Yutaka [Thu, 6 Mar 2014 07:23:10 +0000 (16:23 +0900)]
Fix g10/trust.c.

* g10/trust.c (register_trusted_keyid, register_trusted_key)
(update_ownertrust): Call functions with tdb_.

Signed-off-by: NIIBE Yutaka <>
5 years agocommon: Replace all macros in strusage() returned strings.
Werner Koch [Wed, 26 Feb 2014 15:50:59 +0000 (16:50 +0100)]
common: Replace all macros in strusage() returned strings.

* common/argparse.c (writechar): Remove.
(writestrings): Simplify.
(strusage): Use map_static_macro_string.

5 years agocommon: New function map_static_macro_string.
Werner Koch [Wed, 26 Feb 2014 15:18:45 +0000 (16:18 +0100)]
common: New function map_static_macro_string.

* common/mapstrings.c: New.
* common/t-mapstrings.c: New.
* common/t-support.h (DIM, DIMof): Define if not defined.
* common/ Add new files.

5 years agocommon: New function get_membuf_shrink.
Werner Koch [Wed, 26 Feb 2014 15:16:30 +0000 (16:16 +0100)]
common: New function get_membuf_shrink.

* common/membuf.c (get_membuf_shrink): New.

5 years agoagent: Fixed unresolved symbol under Windows.
Werner Koch [Wed, 19 Feb 2014 10:03:31 +0000 (11:03 +0100)]
agent: Fixed unresolved symbol under Windows.

* agent/gpg-agent.c (main): s/ttyname/gnupg_ttyname/.

This was not triggered by the latest mingw runtime but that has other
problems and thus I reverted to the same we used for gpg4win 2.1 which
is Debian Wheezy.

5 years agocommon: Require an installed libiconv.
Werner Koch [Tue, 18 Feb 2014 14:20:49 +0000 (15:20 +0100)]
common: Require an installed libiconv.

* common/utf8conv.c: Remove dynload.h.
(load_libiconv): Remove.  Remove all calls to it.

The iconv functions are standard feature on most systems and in any
case libiconv can be used to provide the functions.  The old code used
to dlopen iconv.dll on Windows.  This goes back to GnuPG-1 which was
designed as a one-binary program without any hard dependencies.
GnuPG2 however demands a lot of libraries anyway and thus there is no
more need for the fragile code to load a possible wrong version of
iconv.dll at runtime.

5 years agogpg: Silent more compiler warnings due to some configure options.
Werner Koch [Mon, 10 Feb 2014 22:12:28 +0000 (23:12 +0100)]
gpg: Silent more compiler warnings due to some configure options.

* g10/keygen.c (generate_keypair, gen_card_key)
(gen_card_key_with_backup) [!ENABLE_CARD_SUPPORT]: Mark unused args.

5 years agotests: Avoid segv if dns cert lookup is not configured.
Werner Koch [Mon, 10 Feb 2014 19:14:14 +0000 (20:14 +0100)]
tests: Avoid segv if dns cert lookup is not configured.

* common/dns-cert.c (get_dns_cert) [!USE_DNS_CERT]: Reset return args.

5 years agogpg: Cleanup compiler warnings due to some configure options.
Werner Koch [Mon, 10 Feb 2014 18:48:42 +0000 (19:48 +0100)]
gpg: Cleanup compiler warnings due to some configure options.

* g10/photoid.c (show_photos) [DISABLE_PHOTO_VIEWER]: Mark args as
* tools/gpgconf-comp.c (my_dgettext): Mark DOMAIN as unused if NLS is
not configured.

5 years agogpg: Allow building without any trust model support.
Werner Koch [Mon, 10 Feb 2014 16:05:54 +0000 (17:05 +0100)]
gpg: Allow building without any trust model support.

* Add option --disable-trust-models
(NO_TRUST_MODELS): New ac_define and am_conditional.
* g10/ (trust_source): New.
(gpg2_SOURCES): Factor some files out to above.  Add trust.c.
* g10/gpg.c [NO_TRUST_MODELS]: Disable options --export-ownertrust,
--import-ownertrust, --update-trustdb, --check-trustdb, --fix-trustdb,
--list-trustdb, --trustdb-name, --auto-check-trustdb,
--no-auto-check-trustdb, and --force-ownertrust.
(parse_trust_model) [NO_TRUST_MODELS]: Do not build.
(main) [NO_TRUST_MODELS]: Set trust_model to always and exclude all
trustdb related option code.
* g10/keyedit.c (cmds) [NO_TRUST_MODELS]: Remove menu items "trust",
"enable", and "disable".
* g10/keylist.c (public_key_list) [NO_TRUST_MODELS]: Do not print
"tru" record.

* g10/trust.c: New.
* g10/trustdb.c (struct key_item): Move to trustdb.h.
(register_trusted_keyid): Rename to tdb_register_trusted_keyid.
(register_trusted_key): Rename to tdb_register_trusted_key.
(trust_letter, uid_trust_string_fixed, trust_value_to_string)
(string_to_trust_value, get_ownertrust_with_min, get_ownertrust_info)
(get_ownertrust_string, get_validity_info, get_validity_string)
(clean_sigs_from_uid, clean_uid_from_key, clean_key): Move to trust.c.
(mark_usable_uid_certs): Move to trust.c and make global.
(is_in_klist): Move as inline to trustdb.h.
(trustdb_check_or_update): Rename to tdb_check_or_update
(revalidation_mark): Rename to tdb_revalidation_mark.
(get_ownertrust): Rename to tdb_get_ownertrust.
(get_min_ownertrust): Rename to tdb_get_min_ownertrust.
(update_ownertrust): Rename to tdb_update_ownertrust.
(clear_ownertrusts): Rename to tdb_clear_ownertrusts.
(cache_disabled_value): Rename to tdb_cache_disabled_value.
(check_trustdb_stale): Rename to tdb_check_trustdb_stale.
(get_validity): Rename to tdb_get_validity_core, add arg MAIN_PK and
factor some code out to ...
* trust.c (get_validity):
(check_or_update_trustdb): New wrapper.
(revalidation_mark): New wrapper.
(get_ownertrust): New wrapper.
(get_ownertrust_with_min): New wrapper.
(update_ownertrust): New wrapper.
(clear_ownertrusts): New wrapper.
(cache_disabled_value): New wrapper.
(check_trustdb_stale): New wrapper.

* tests/openpgp/ (opt_always): New.  Use in all tests instead
of --always-trust.

5 years agotests: Handle disabled algorithms.
Werner Koch [Mon, 10 Feb 2014 09:41:48 +0000 (10:41 +0100)]
tests: Handle disabled algorithms.

* tests/openpgp/mds.test: Skip disabled algorithms.
* tests/openpgp/signencrypt-dsa.test: Ditto.
* tests/openpgp/sigs-dsa.test: Ditto.

5 years agoSilence annoying ABI change warning.
Werner Koch [Wed, 27 Nov 2013 17:38:20 +0000 (18:38 +0100)]
Silence annoying ABI change warning.

* [GCC]: Pass -Wno-psabi for gcc >= 4.6.  Avoid some gcc
option tests for gcc >= 4.6
Signed-off-by: Werner Koch <>
(cherry picked from commit d04399a6a8b36a7fea92c304aa7309956a2e352b)

Resolved Conflicts: merged.

5 years agoAllow disabling of card support.
Werner Koch [Fri, 7 Feb 2014 12:46:36 +0000 (13:46 +0100)]
Allow disabling of card support.

* Add option --disable-card-support.  Also add
am_conditional and do not build scd if card support is enabled.

5 years agogpg: List only available algos in --gen-key.
Werner Koch [Fri, 7 Feb 2014 12:45:11 +0000 (13:45 +0100)]
gpg: List only available algos in --gen-key.

* g10/keygen.c (ask_algo, ask_curve): Take care of GPG_USE_<algo>.

5 years agogpg: Change --print-mds to output enabled OpenPGP algos.
Werner Koch [Fri, 7 Feb 2014 12:43:39 +0000 (13:43 +0100)]
gpg: Change --print-mds to output enabled OpenPGP algos.

* g10/gpg.c (print_mds): Use opengpg_md_test_algo.  Test also for MD5

5 years agogpg: Avoid compiler warnings for disabled algos.
Werner Koch [Fri, 7 Feb 2014 08:24:52 +0000 (09:24 +0100)]
gpg: Avoid compiler warnings for disabled algos.

* g10/misc.c (map_cipher_openpgp_to_gcry): Add case for disabled algo.
(openpgp_pk_test_algo2): Ditto.
(map_md_openpgp_to_gcry): Ditto.

5 years agogpg: Change format for the key size in --list-key and --edit-key.
Werner Koch [Wed, 5 Feb 2014 09:37:59 +0000 (10:37 +0100)]
gpg: Change format for the key size in --list-key and --edit-key.

* g10/gpg.c (oLegacyListMode, opts, main): Add --legacy-list-mode.
* g10/options.h (struct opt): Add field legacy_list_mode.
* g10/keydb.h (PUBKEY_STRING_SIZE): New.
* g10/keyid.c (pubkey_string): New.
* g10/import.c (import_one, import_secret_one): Use pubkey_string.
* g10/keylist.c (print_seckey_info): Ditto.
(print_pubkey_info, print_card_key_info): Ditto.
(list_keyblock_print): Ditto.
* g10/mainproc.c (list_node): Ditto.
* g10/pkclist.c (do_edit_ownertrust, build_pk_list): Ditto.
* g10/keyedit.c (show_key_with_all_names): Ditto.  Also change the
(show_basic_key_info): Ditto.
* common/openpgp-oid.c (openpgp_curve_to_oid): Also allow "ed25519".
(openpgp_oid_to_curve): Downcase "ed25519"

For ECC it seems to be better to show the name of the curve and not
just the size of the prime field.  The curve name does not anymore fit
into the "<size><letter>" descriptor (e.g. "2048R") and a fixed length
format does not work either.  Thus the new format uses

   "rsa2048"    - RSA with 2048 bit
   "elg1024"    - Elgamal with 1024 bit
   "ed25519"    - ECC using the curve Ed25519.
   "E_1.2.3.4"  - ECC using the unsupported curve with OID "".

unless --legacy-list-mode is given.  In does not anymore line up
nicely in columns thus I expect further changes to this new format.

Signed-off-by: Werner Koch <>
5 years agogpg: Add configure options to disable algorithms
Werner Koch [Fri, 31 Jan 2014 21:47:11 +0000 (22:47 +0100)]
gpg: Add configure options to disable algorithms

* acinclude.m4 (GNUPG_GPG_DISABLE_ALGO): New.
* Add --enable-gpg-* options to disable non MUS
* g10/misc.c (map_cipher_openpgp_to_gcry): Implement these options.
(openpgp_pk_test_algo2): Ditto.
(map_md_openpgp_to_gcry): Ditto.
(openpgp_cipher_test_algo, openpgp_md_test_algo): Simplify.

We have a similar feature in GnuPG-1.  Although we don't shrink the
size of the gpg binary by disabling algorithms (they are implemented
in Libgcrypt), this feature may still be useful for inerop testing.

5 years agogpg: Improve --version algo info output.
Werner Koch [Fri, 31 Jan 2014 14:55:04 +0000 (15:55 +0100)]
gpg: Improve --version algo info output.

* g10/misc.c (openpgp_pk_algo_name): Return a different string for
each ECC algorithm.
* g10/gpg.c (build_list_pk_test_algo): New wrapper to cope with the
different algo type enums.
(build_list_pk_algo_name): Ditto.
(build_list_cipher_test_algo): Ditto.
(build_list_cipher_algo_name): Ditto.
(build_list_md_test_algo): Ditto.
(build_list_md_algo_name): Ditto.
(my_strusage): Use them.
(list_config): Ditto. Add "pubkeyname".
(build_list): Add letter==1 hack.

5 years agogpg: Start using OpenPGP digest algo ids.
Werner Koch [Fri, 31 Jan 2014 14:33:03 +0000 (15:33 +0100)]
gpg: Start using OpenPGP digest algo ids.

* g10/misc.c (print_pubkey_algo_note): Use enum typedef for the arg.
(print_cipher_algo_note): Ditto.
(print_digest_algo_note): Ditto.
(map_md_openpgp_to_gcry): New.
(openpgp_md_test_algo): Rewrite.
(openpgp_md_algo_name): Rewrite to do without Libgcrypt.
* g10/cpr.c (write_status_begin_signing): Remove hardwired list of
algo ranges.

5 years agogpg: Use only OpenPGP cipher algo ids.
Werner Koch [Fri, 31 Jan 2014 13:35:49 +0000 (14:35 +0100)]
gpg: Use only OpenPGP cipher algo ids.

* g10/misc.c (map_cipher_openpgp_to_gcry): Use explicit mapping and
use enums for the arg and return value.
(map_cipher_gcry_to_openpgp): Ditto.
(openpgp_cipher_blocklen): Use constant macros.
(openpgp_cipher_test_algo): Use mapping function and prepare to
disable algorithms.
(openpgp_cipher_algo_name): Do not use Libgcrypt.

* g10/ecdh.c (pk_ecdh_encrypt_with_shared_point): Replace

* common/openpgpdefs.h (cipher_algo_t): Remove unused

Signed-off-by: Werner Koch <>
5 years agogpg: Use only OpenPGP public key algo ids and add the EdDSA algo id.
Werner Koch [Thu, 30 Jan 2014 17:48:37 +0000 (18:48 +0100)]
gpg: Use only OpenPGP public key algo ids and add the EdDSA algo id.

* common/sexputil.c (get_pk_algo_from_canon_sexp): Change to return a
* g10/keygen.c (check_keygrip): Adjust for change.
* sm/certreqgen-ui.c (check_keygrip): Likewise.

* agent/pksign.c (do_encode_dsa): Remove bogus map_pk_openpgp_to_gcry.

* g10/misc.c (map_pk_openpgp_to_gcry): Remove.
(openpgp_pk_test_algo): Change to a wrapper for openpgp_pk_test_algo2.
(openpgp_pk_test_algo2): Rewrite.
(openpgp_pk_algo_usage, pubkey_nbits): Add support for EdDSA.
(openpgp_pk_algo_name): Rewrite to remove need for gcry calls.
(pubkey_get_npkey, pubkey_get_nskey): Ditto.
(pubkey_get_nsig, pubkey_get_nenc): Ditto.
* g10/keygen.c(do_create_from_keygrip):  Support EdDSA.
(common_gen, gen_ecc, ask_keysize, generate_keypair): Ditto.
* g10/build-packet.c (do_key): Ditto.
* g10/export.c (transfer_format_to_openpgp): Ditto.
* g10/getkey.c (cache_public_key): Ditto.
* g10/import.c (transfer_secret_keys): Ditto.
* g10/keylist.c (list_keyblock_print, list_keyblock_colon): Ditto.
* g10/mainproc.c (proc_pubkey_enc): Ditto.
* g10/parse-packet.c (parse_key): Ditto,
* g10/sign.c (hash_for, sign_file, make_keysig_packet): Ditto.
* g10/keyserver.c (print_keyrec): Use openpgp_pk_algo_name.
* g10/pkglue.c (pk_verify, pk_encrypt, pk_check_secret_key): Use only
OpenPGP algo ids and support EdDSA.
* g10/pubkey-enc.c (get_it): Use only OpenPGP algo ids.
* g10/seskey.c (encode_md_value): Ditto.

This patch separates Libgcrypt and OpenPGP public key algorithms ids
and in most cases completely removes the Libgcrypt ones.  This is
useful because for Libgcrypt we specify the algorithm in the
S-expressions and the public key ids are not anymore needed.

This patch also adds some support for PUBKEY_ALGO_EDDSA which will
eventually be used instead of merging EdDSA with ECDSA.  As of now an
experimental algorithm id is used but the plan is to write an I-D so
that we can get a new id from the IETF.  Note that EdDSA (Ed25519)
does not yet work and that more changes are required.

The ECC support is still broken right now.  Needs to be fixed.

Signed-off-by: Werner Koch <>
5 years agogpg: Remove cipher.h and put algo ids into a common file.
Werner Koch [Wed, 29 Jan 2014 19:35:05 +0000 (20:35 +0100)]
gpg: Remove cipher.h and put algo ids into a common file.

* common/openpgpdefs.h (cipher_algo_t, pubkey_algo_t, digest_algo_t)
(compress_algo_t): New.
* agent/gpg-agent.c: Remove ../g10/cipher.h. Add openpgpdefs.h.
* g10/cipher.h (DEK): Move to ...
* g10/dek.h: new file.
* g10/cipher.h (is_RSA, is_ELGAMAL, is_DSA)
* g10/packet.h: here.
* g10/cipher.h: Remove.  Remove from all files.
* g10/filter.h, g10/packet.h:  Include dek.h.
* g10/ (common_source): Remove cipher.h.  Add dek.h.

Signed-off-by: Werner Koch <>
5 years agoinclude: Remove this directory.
Werner Koch [Wed, 29 Jan 2014 16:39:22 +0000 (17:39 +0100)]
include: Remove this directory.

* include/cipher.h: Move to ...
* g10/cipher.h: here.
* agent/gpg-agent.c: Adjust header file name.

* include/host2net.h: Move to ...
* common/host2net.h: here.  Change license to LGPLv3/GPLv2.  Adjust
notices to reflect that only me worked on that file.

* include/types.h: Remove.
* common/types.h: Include inttypes.h.  Add byte typedef and comments
for __riscos__.
* common/iobuf.h: Adjust header file name.

* include/_regex.h: Remove this unused file.

* include/ Remove.
* (SUBDIRS): Remove "include".
* (AC_CONFIG_FILES): Remove include/Makefile.
* include/ChangeLog-2011: Move to ...
* common/ChangeLog-2011.include: here.
* common/ (EXTRA_DIST): Add file.

* include/zlib-riscos.h: Move this repo only file to ...
* g10/zlib-riscos.h: here.

* include/: Remove.

include/ was a leftover from GnuPG 1.x times.

Signed-off-by: Werner Koch <>
5 years agogpg: Add another card vendor id.
Werner Koch [Wed, 29 Jan 2014 14:19:20 +0000 (15:19 +0100)]
gpg: Add another card vendor id.


5 years agoRemove unused u64 type definitions.
Werner Koch [Thu, 9 Jan 2014 18:14:09 +0000 (19:14 +0100)]
Remove unused u64 type definitions.

* Remove check for uint64 and UINT64_C.
* include/types.h: Remove u64 stuff.
* common/types.h: Ditto.

There have been relicts from GnuPG-1.

Signed-off-by: Werner Koch <>
5 years agoagent: Not remove SSH socket when already running.
NIIBE Yutaka [Thu, 16 Jan 2014 01:00:17 +0000 (10:00 +0900)]
agent: Not remove SSH socket when already running.

* agent/gpg-agent.c (main): Defer setting of socket_name_ssh to avoid
removal of the socket when it will die in create_server_socket for

Signed-off-by: NIIBE Yutaka <>
5 years agoagent: Fix agent_is_eddsa_key.
NIIBE Yutaka [Thu, 16 Jan 2014 00:07:11 +0000 (09:07 +0900)]
agent: Fix agent_is_eddsa_key.

* agent/findkey.c (agent_is_eddsa_key): Implemented.

Signed-off-by: NIIBE Yutaka <>
5 years agoAdd secp256k1.
NIIBE Yutaka [Wed, 15 Jan 2014 06:00:24 +0000 (15:00 +0900)]
Add secp256k1.

* common/openpgp-oid.c (openpgp_curve_to_oid): Add secp256k1.
(openpgp_oid_to_curve): Likewise.

* g10/keygen.c (ask_curve): Add secp256k1.

Signed-off-by: NIIBE Yutaka <>
5 years agospeedo: Add support for gpgex.
Werner Koch [Thu, 9 Jan 2014 18:14:09 +0000 (19:14 +0100)]
speedo: Add support for gpgex.

Speedo is now able to build gpgex for Windows.  Building gpa for
Windows does not yet work due to a bunch of other dependencies.

5 years agospeedo: Minor improvements.
Werner Koch [Thu, 9 Jan 2014 18:14:09 +0000 (19:14 +0100)]
speedo: Minor improvements.


5 years Add rule for 64 bit windows.
Werner Koch [Thu, 9 Jan 2014 18:14:09 +0000 (19:14 +0100)] Add rule for 64 bit windows.

5 years agoTurn into a generic script.
Werner Koch [Thu, 9 Jan 2014 18:14:09 +0000 (19:14 +0100)]
Turn into a generic script.

* Revamp.
* autogen.rc: New.
* (EXTRA_DIST): Add autogen.rc.

Signed-off-by: Werner Koch <>
5 years agoRename scripts/ to build-aux/
Werner Koch [Thu, 9 Jan 2014 18:14:09 +0000 (19:14 +0100)]
Rename scripts/ to build-aux/

* scripts/: Rename to build-aux/
* Adjust accordingly.
* (AC_CONFIG_AUX_DIR): Change to build-aux.

5 years agoImprove the speedo make script.
Werner Koch [Thu, 9 Jan 2014 18:14:09 +0000 (19:14 +0100)]
Improve the speedo make script.

* scripts/gpg-w32-dev/README: Remove
* scripts/gpg-w32-dev/GNUmakefile, scripts/gpg-w32-dev/
Merge into ..
* scripts/ this.

Speedo may now be used to build from GIT or tarballs and has a couple
of other improvements as well.  For best results the files
of all source package should be updated to the one used in gnupg.

Signed-off-by: Werner Koch <>
5 years Add envvar AUTOGEN_SH_SILENT
Werner Koch [Thu, 9 Jan 2014 18:14:09 +0000 (19:14 +0100)] Add envvar AUTOGEN_SH_SILENT


5 years agogpgsplit: Allow building without zlib support.
Werner Koch [Thu, 9 Jan 2014 18:05:07 +0000 (19:05 +0100)]
gpgsplit: Allow building without zlib support.

* tools/gpgsplit.c [!HAVE_ZLIB]: Do not include zlib.h.
(handle_zlib): Build only if HAVE_ZLIB is defined.
(write_part): Support zlib and zip only if HAVE_ZLIB is defined.

Signed-off-by: Werner Koch <>
5 years agow32: Fix backslash quoting in registry name.
Werner Koch [Thu, 9 Jan 2014 16:51:46 +0000 (17:51 +0100)]
w32: Fix backslash quoting in registry name.

* (GNUPG_REGISTRY_DIR): Double backslashes.

5 years agoFix test for zlib.
Werner Koch [Thu, 9 Jan 2014 14:36:35 +0000 (15:36 +0100)]
Fix test for zlib.

* (HAVE_ZLIB): Define only if found.

5 years agoAdd --enable-silent-rules stuff.
Werner Koch [Wed, 8 Jan 2014 15:47:46 +0000 (16:47 +0100)]
Add --enable-silent-rules stuff.


5 years agoAdd i686-w64-mingw32 as w32 toolchain to
Werner Koch [Wed, 8 Jan 2014 16:03:21 +0000 (17:03 +0100)]
Add i686-w64-mingw32 as w32 toolchain to


5 years agow32: Add macro for the registry key.
Werner Koch [Wed, 8 Jan 2014 10:47:07 +0000 (11:47 +0100)]
w32: Add macro for the registry key.

* (GNUPG_REGISTRY_DIR) [W32]: New ac-define.
* common/homedir.c (default_homedir): Use it.
* common/logging.c (do_logv): Use it.

5 years agogpg: Change --show-session-key to print the session key earlier.
Werner Koch [Wed, 11 Dec 2013 09:20:15 +0000 (10:20 +0100)]
gpg: Change --show-session-key to print the session key earlier.

* g10/cpr.c (write_status_strings): New.
(write_status_text): Replace code by a call to write_status_strings.
* g10/mainproc.c (proc_encrypted): Remove show_session_key code.
* g10/decrypt-data.c (decrypt_data): Add new show_session_key code.

This feature can be used to return the session key for just a part of
a file.  For example to downloading just the first 32k of a huge file,
decrypting that incomplete part and while ignoring all the errors
break out the session key.  The session key may then be used on the
server to decrypt the entire file without the need to have the private
key on the server.

GnuPG-bug-id: 1389
Signed-off-by: Werner Koch <>
5 years agogpg: Change OID of Ed25519 and add Brainpool oids.
Werner Koch [Tue, 22 Oct 2013 12:26:53 +0000 (14:26 +0200)]
gpg: Change OID of Ed25519 and add Brainpool oids.

* common/openpgp-oid.c (openpgp_curve_to_oid): Change OID for
Ed25519.  Add brainpool OIDs.
(openpgp_oid_to_curve): Ditto.

This change is required to the change in Libgcrypt.  Note that we will
likely use a different OpenPGP algorithm ID for EdDSA and thus the
current Ed25519 implementation will not stay with us.

Signed-off-by: Werner Koch <>
5 years agocommon: Add put_membuf_printf.
Werner Koch [Fri, 29 Nov 2013 14:37:23 +0000 (15:37 +0100)]
common: Add put_membuf_printf.

* common/membuf.c (put_membuf_printf): New.

This is just a convenience function for easier code readability.

Signed-off-by: Werner Koch <>
5 years agoAdd rendered versions of the gnupg logo to artwork.
Werner Koch [Fri, 29 Nov 2013 12:37:40 +0000 (13:37 +0100)]
Add rendered versions of the gnupg logo to artwork.


5 years agogpg: Change armor Version header to emit only the major version.
Werner Koch [Wed, 27 Nov 2013 08:20:02 +0000 (09:20 +0100)]
gpg: Change armor Version header to emit only the major version.

* g10/options.h (opt): Rename field no_version to emit_version.
* g10/gpg.c (main): Init opt.emit_vesion to 1.  Change --emit-version
to bump up opt.emit_version.
* g10/armor.c (armor_filter): Implement different --emit-version

GnuPG-bug-id: 1572
Signed-off-by: Werner Koch <>
5 years agoMake use of the *_NAME etc macros.
Werner Koch [Mon, 18 Nov 2013 13:09:47 +0000 (14:09 +0100)]
Make use of the *_NAME etc macros.

Replace hardwired strings at many places with new macros from config.h
and use the new strusage macro replacement feature.

* common/asshelp.c (lock_spawning) [W32]: Change the names of the spawn
* agent/command.c (cmd_import_key): Use asprintf to create the prompt.

5 years agoAdd strusage macro replacement feature.
Werner Koch [Mon, 18 Nov 2013 12:46:52 +0000 (13:46 +0100)]
Add strusage macro replacement feature.

* common/argparse.c (writechar): New.
(writestrings): Add macro replacement feature.
(show_help): Remove specialized @EMAIL@ replacement.

Signed-off-by: Werner Koch <>
5 years agokbx: Implement update operation for OpenPGP keyblocks.
Werner Koch [Fri, 15 Nov 2013 14:54:31 +0000 (15:54 +0100)]
kbx: Implement update operation for OpenPGP keyblocks.

* kbx/keybox-update.c (keybox_update_keyblock): Implement.
* kbx/keybox-search.c (get_blob_flags): Move to ...
* kbx/keybox-defs.h (blob_get_type): here.
* kbx/keybox-file.c (_keybox_read_blob2): Fix calling without R_BLOB.
* g10/keydb.c (build_keyblock_image): Allow calling without
(keydb_update_keyblock): Implement for keybox.

* kbx/keybox-dump.c (_keybox_dump_blob): Fix printing of the unhashed
size.  Print "does not expire" also on 64 bit platforms.

Signed-off-by: Werner Koch <>
5 years agoFix minor compiler warnings.
Werner Koch [Fri, 15 Nov 2013 08:23:40 +0000 (09:23 +0100)]
Fix minor compiler warnings.


5 years agogpg: Rework ECC support and add experimental support for Ed25519.
Werner Koch [Fri, 15 Nov 2013 07:59:45 +0000 (08:59 +0100)]
gpg: Rework ECC support and add experimental support for Ed25519.

* agent/findkey.c (key_parms_from_sexp): Add algo name "ecc".
(agent_is_dsa_key): Ditto.
(agent_is_eddsa_key): New.  Not finished, though.
* agent/pksign.c (do_encode_eddsa): New.
(agent_pksign_do): Use gcry_log_debug functions.
* agent/protect.c (agent_protect): Parse a flags parameter.
* g10/keygen.c (gpg_curve_to_oid): Move to ...
* common/openpgp-oid.c (openpgp_curve_to_oid): here and rename.
(oid_ed25519): New.
(openpgp_oid_is_ed25519): New.
(openpgp_oid_to_curve): New.
* common/t-openpgp-oid.c (test_openpgp_oid_is_ed25519): New.
* g10/build-packet.c (gpg_mpi_write): Write the length header also for
opaque MPIs.
(gpg_mpi_write_nohdr): New.
(do_key): Use gpg_mpi_write_nohdr depending on algorithm.
(do_pubkey_enc): Ditto.
* g10/ecdh.c (pk_ecdh_encrypt_with_shared_point): Use
* g10/export.c (transfer_format_to_openpgp):
* g10/keygen.c (ecckey_from_sexp): Return the error.
(gen_ecc): Repalce arg NBITS by CURVE.
(read_parameter_file): Add keywords "Key-Curve" and "Subkey-Curve".
(ask_curve): New.
(generate_keypair, generate_subkeypair): Use ask_curve.
(do_generate_keypair): Also pass curve name.
* g10/keylist.c (list_keyblock_print, list_keyblock_colon): Print
curve name.
* g10/parse-packet.c (mpi_read): Remove workaround for
Libcgrypt < 1.5.
(parse_key): Fix ECC case.  Print the curve name.
* g10/pkglue.c (mpi_from_sexp): Rename to get_mpi_from_sexp.
(pk_verify, pk_check_secret_key): Add special case for Ed25519.
* g10/seskey.c (encode_md_value): Ditto.
* g10/sign.c (do_sign, hash_for, sign_file): Ditto.

Be warned that this code is subject to further changes and that the
format will very likely change before a release.  There are also known
bugs and missing code.

Signed-off-by: Werner Koch <>
5 years agokbx: Fix possible segv in kbxdump.
Werner Koch [Fri, 15 Nov 2013 07:36:39 +0000 (08:36 +0100)]
kbx: Fix possible segv in kbxdump.

* kbx/keybox-dump.c (_keybox_dump_blob): Check length before get32.

Signed-off-by: Werner Koch <>
5 years agoRequire Libgcrypt 1.6
Werner Koch [Mon, 11 Nov 2013 10:33:14 +0000 (11:33 +0100)]
Require Libgcrypt 1.6

* agent/pksign.c (do_encode_dsa): Remove Libgcrypt version check

Now that we have decided on a release plan for Libgcrypt 1.6 and given
all the improvements it makes more sense to make use of these
improvements than to clutter the GnuPG code with workarounds for older
Libgcrypt versions.

5 years agoscd: more pinpad input fix for PC/SC.
NIIBE Yutaka [Wed, 13 Nov 2013 07:43:26 +0000 (16:43 +0900)]
scd: more pinpad input fix for PC/SC.

* scd/apdu.c (check_pcsc_pinpad): Set default values here.
(pcsc_pinpad_verify, pcsc_pinpad_modify): Remove setting default
values, as it's too late.


GnuPG-bug-id: 1549

5 years agoscd: more pinpad fix.
NIIBE Yutaka [Mon, 11 Nov 2013 07:41:43 +0000 (16:41 +0900)]
scd: more pinpad fix.

* scd/apdu.c (check_pcsc_pinpad): Set ->minlen and ->maxlen only when
those are specified.
(pcsc_pinpad_modify): Remove old check code.


GnuPG-bug-id: 1549

5 years agoscd: pinpad fix for PC/SC on Windows.
NIIBE Yutaka [Tue, 29 Oct 2013 00:07:05 +0000 (09:07 +0900)]
scd: pinpad fix for PC/SC on Windows.

* scd/apdu.c (SCARD_CTL_CODE): Fix for Windows.

5 years agodoc: Change yat2m to allow arbitrary condition names.
Werner Koch [Mon, 28 Oct 2013 06:05:41 +0000 (07:05 +0100)]
doc: Change yat2m to allow arbitrary condition names.

* doc/yat2m.c (MAX_CONDITION_NESTING): New.
(gpgone_defined): Remove.
(condition_s, condition_stack, condition_stack_idx): New.
(cond_is_active, cond_in_verbatim): New.
(add_predefined_macro, set_macro, macro_set_p): New.
(evaluate_conditions, push_condition, pop_condition): New.
(parse_file): Rewrite to use the condition stack.
(top_parse_file): Set prefined macros.
(main): Change -D to define arbitrary macros.

This change allows the use of other conditionals than "gpgone" and
thus make "gpgtwoone" et al. actually work.  It does now also track
conditionals over included files.

Signed-off-by: Werner Koch <>
6 years agoscd: fix pinpad input on Windows.
NIIBE Yutaka [Fri, 25 Oct 2013 00:57:31 +0000 (09:57 +0900)]
scd: fix pinpad input on Windows.

* scd/apdu.c (open_pcsc_reader_direct): Don't call
pcsc_vendor_specific_init here, but...
(connect_pcsc_card): Call it here.


Thanks to Martin Wolters for the bug report.

6 years agopo: Update Japanese translation.
NIIBE Yutaka [Wed, 23 Oct 2013 05:44:27 +0000 (14:44 +0900)]
po: Update Japanese translation.

6 years agoscd: add pinpad readers information for PC/SC service.
NIIBE Yutaka [Wed, 16 Oct 2013 00:52:18 +0000 (09:52 +0900)]
scd: add pinpad readers information for PC/SC service.

* scd/apdu.c (pcsc_vendor_specific_init): Add information for Cherry
ST-2xxx, Reiner cyberJack, Vasco DIGIPASS, FSIJ Gnuk Token, and KAAN


6 years agoscd: remove pin length check.
NIIBE Yutaka [Tue, 15 Oct 2013 01:44:51 +0000 (10:44 +0900)]
scd: remove pin length check.

* scd/apdu.c (pcsc_pinpad_verify): Remove old check code for pin

GnuPG-bug-id: 1549

6 years agodoc: Some gpg and gpgv clarifications.
Werner Koch [Fri, 4 Oct 2013 12:31:35 +0000 (14:31 +0200)]
doc: Some gpg and gpgv clarifications.

GnuPG-bug-id: 1486, 1537

6 years agogpg: Limit the nesting level of I/O filters.
Werner Koch [Fri, 4 Oct 2013 06:20:49 +0000 (08:20 +0200)]
gpg: Limit the nesting level of I/O filters.

* common/iobuf.c (MAX_NESTING_FILTER): New.
(iobuf_push_filter2): Limit the nesting level.

* g10/mainproc.c (mainproc_context): New field ANY.  Change HAVE_DATA
and ANY_SIG_SIGN to bit fields of ANY.  Add bit field
(proc_compressed): Avoid printing multiple Bad Data messages.
(check_nesting): Return GPG_ERR_BAD_DATA instead of UNEXPECTED_DATA.

This is a more general fix for the nested compression packet bug.  In
particular this helps g10/import.c:read_block to stop pushing
compression filters onto an iobuf stream.  This patch also reduces the
number of error messages for the non-import case.

Signed-off-by: Werner Koch <>
(cherry picked from commit 35e40e2d514223c950c2f6d1214e02e92d87e997)

Resolved conflicts:

6 years agogpg: Fix bug with deeply nested compressed packets.
Werner Koch [Wed, 2 Oct 2013 07:11:43 +0000 (09:11 +0200)]
gpg: Fix bug with deeply nested compressed packets.

* g10/mainproc.c (MAX_NESTING_DEPTH): New.
(proc_compressed): Return an error code.
(check_nesting): New.
(do_proc_packets): Check packet nesting depth.  Handle errors from

Signed-off-by: Werner Koch <>
6 years agoRegister DCO for Kyle Butt.
Werner Koch [Tue, 1 Oct 2013 12:40:46 +0000 (14:40 +0200)]
Register DCO for Kyle Butt.


6 years agoSwitch to deterministic DSA.
Werner Koch [Sat, 7 Sep 2013 08:06:46 +0000 (10:06 +0200)]
Switch to deterministic DSA.

* agent/pksign.c (rfc6979_hash_algo_string): New.
(do_encode_dsa) [Libgcrypt >= 1.6]: Make use of RFC-6979.

Now that we have a good (and not NSA/NIST demanded ;-) specification
on how to use DSA without a random nonce, we take advantage of it and
thus avoid pitfalls related to a misbehaving RNG during signature

Note that OpenPGP has the option of using a longer hash algorithm but
truncated to what is suitable for the used DSA key size.  The hash
used as input to RFC-6979 will also be one with an appropriate digest
length but not a truncated one.  This is allowed by RFC-6979.

Signed-off-by: Werner Koch <>
6 years agoscd: Suppress gcc warning about possible uninitialized use.
Werner Koch [Fri, 30 Aug 2013 08:28:26 +0000 (10:28 +0200)]
scd: Suppress gcc warning about possible uninitialized use.

* scd/app-nks.c (parse_pwidstr): Always init r_pwid.

Signed-off-by: Werner Koch <>
6 years agogpg: Use 2048 as the default keysize in batch mode.
Werner Koch [Fri, 30 Aug 2013 08:27:21 +0000 (10:27 +0200)]
gpg: Use 2048 as the default keysize in batch mode.

* g10/keygen.c (gen_elg, gen_dsa, gen_rsa): Set default keysize to

Signed-off-by: Werner Koch <>
6 years agogpgtar: Fix building for systems with a separate libintl.
Werner Koch [Fri, 30 Aug 2013 08:05:08 +0000 (10:05 +0200)]
gpgtar: Fix building for systems with a separate libintl.

* tools/ (gpgtar_LDADD): Add LIBINTL and LIBICONV.

Signed-off-by: Werner Koch <>
6 years agoscd: Use vendor and product id macros also in apdu.c
Werner Koch [Fri, 30 Aug 2013 07:28:17 +0000 (09:28 +0200)]
scd: Use vendor and product id macros also in apdu.c

* scd/ccid-driver.c: Move vendor and product ids to ...
* scd/ccid-driver.h: here.
* scd/apdu.c (CCID_DRIVER_INCLUDE_USB_IDS): Define to include ids.
(pcsc_vendor_specific_init): Use vendor and product id macros.

Signed-off-by: Werner Koch <>
6 years agoscd: PC/SC pinpad input improvement.
NIIBE Yutaka [Fri, 30 Aug 2013 02:06:50 +0000 (11:06 +0900)]
scd: PC/SC pinpad input improvement.

* scd/apdu.c (struct reader_table_s): Add members: PINMIN, PINMAX, and
(new_reader_slot): Initialize pinpad_varlen_supported, pinmin, pinmax.
(pcsc_vendor_specific_init): New.
(open_pcsc_reader_direct, open_pcsc_reader_wrapped): Call
(check_pcsc_pinpad): Not detect here but use the result of
(pcsc_pinpad_verify, pcsc_pinpad_modify): Specify bNumberMessage.


Signed-off-by: NIIBE Yutaka

6 years agoscd: add support for RSA_CRT and RSA_CRT_N key import.
Jonas Borgström [Wed, 28 Aug 2013 09:21:10 +0000 (11:21 +0200)]
scd: add support for RSA_CRT and RSA_CRT_N key import.

* scd/app-openpgp.c (do_writekey): Added RSA_CRT and RSA_CRT_N support.


Updates of original patch by wk:

  -      unsigned char *rsa_u, *rsa_dp, rsa_dq;
  +      unsigned char *rsa_u, *rsa_dp, *rsa_dq;

and AUTHORS.  Missing signed-off-by assumed due to DCO send the other

6 years agokbx: Add a few macros for easier readability.
Werner Koch [Thu, 29 Aug 2013 15:39:35 +0000 (17:39 +0200)]
kbx: Add a few macros for easier readability.

* kbx/keybox-update.c (FILECOPY_INSERT)
(FILECOPY_DELETE, FILECOPY_UPDATE): New macros.  Replace numbers by

Signed-off-by: Werner Koch <>