6 years agoscd: PC/SC cleanup.
NIIBE Yutaka [Fri, 22 Mar 2013 01:41:59 +0000 (10:41 +0900)]
scd: PC/SC cleanup.

* scd/apdu.c (pcsc_dword_t): New.  It was named as DWORD (double-word)
when a word was 16-bit.
(struct reader_table_s): Fixes for types.
(struct pcsc_readerstate_s) [__APPLE__]: Enable #pragma pack(1).
Throughout: Fixes for types.

* scd/pcsc-wrapper.c: Likewise.


Problem reported for 1.4.x by the issue 1358.

6 years agoscd: change default value of pinpad maxlen.
NIIBE Yutaka [Thu, 21 Mar 2013 00:04:13 +0000 (09:04 +0900)]
scd: change default value of pinpad maxlen.

* scd/apdu.c (pcsc_pinpad_verify, pcsc_pinpad_modify): Default value
of maxlen for pinpad input is now 15 (was: 25).

* scd/ccid-driver.c (ccid_transceive_secure): Likewise.


For newer PC/SC, it is better to use FEATURE_GET_TLV_PROPERTIES to get

6 years agoscd: ccid-driver supporting larger APDU.
NIIBE Yutaka [Thu, 14 Mar 2013 23:34:32 +0000 (08:34 +0900)]
scd: ccid-driver supporting larger APDU.

* scd/ccid-driver.c (ccid_transceive_apdu_level): Support larger

This is still ad hoc change, but it's OK.  Supporting full extended
APDU exchange level is not worth yet.

6 years agoDifferentiate between success (full or partial), not-found, and failure.
David Shaw [Sun, 3 Mar 2013 01:39:48 +0000 (20:39 -0500)]
Differentiate between success (full or partial), not-found, and failure.

* keyserver/gpgkeys_hkp.c (get_key): Use curl_easy_setinfo to get the
  HTTP status code so we can tell the difference between a successful
  retrieval, a partial retrieval, a not-found, or a server failed.

6 years agoEmulate curl_easy_getinfo and CURLINFO_RESPONSE_CODE in curl-shim.
David Shaw [Sun, 3 Mar 2013 01:07:27 +0000 (20:07 -0500)]
Emulate curl_easy_getinfo and CURLINFO_RESPONSE_CODE in curl-shim.

* keyserver/curl-shim.h, keyserver/curl-shim.c (curl_easy_getinfo):
  New. Return the HTTP status code for the last transfer.

6 years agoBring the fix for bug 739 on 1.4 over to 2.0 (bug 1479)
David Shaw [Thu, 28 Feb 2013 18:48:58 +0000 (13:48 -0500)]
Bring the fix for bug 739 on 1.4 over to 2.0 (bug 1479)

* http.h, http.c (http_wait_response, main): Remove

6 years agoJapanese: minor doc update.
NIIBE Yutaka [Tue, 12 Feb 2013 05:17:38 +0000 (14:17 +0900)]
Japanese: minor doc update.

* doc/help.ja.txt: Update.

6 years agoJapanese: updated po and doc.
NIIBE Yutaka [Tue, 12 Feb 2013 03:56:12 +0000 (12:56 +0900)]
Japanese: updated po and doc.

* doc/help.ja.txt, po/ja.po: Updated.

6 years agoscd: Rename 'keypad' to 'pinpad'.
NIIBE Yutaka [Thu, 7 Feb 2013 01:07:51 +0000 (10:07 +0900)]
scd: Rename 'keypad' to 'pinpad'.

* NEWS: Mention scd changes.

* agent/divert-scd.c (getpin_cb): Change message.

* agent/call-scd.c (inq_needpin): Change the protocol to
* scd/command.c (pin_cb): Likewise.

* scd/apdu.c (struct reader_table_s): Rename member functions.
(check_pcsc_pinpad, pcsc_pinpad_verify, pcsc_pinpad_modify,
check_ccid_pinpad, ccid_pinpad_operation, apdu_check_pinpad
apdu_pinpad_verify, apdu_pinpad_modify): Rename.

* scd/apdu.h (SW_HOST_NO_PINPAD, apdu_check_pinpad)
(apdu_pinpad_verify, apdu_pinpad_modify): Rename.

* scd/iso7816.h (iso7816_check_pinpad): Rename.

* scd/iso7816.c (map_sw): Use SW_HOST_NO_PINPAD.
(iso7816_check_pinpad): Rename.
(iso7816_verify_kp, iso7816_change_reference_data_kp): Follow
the change.

* scd/ccid-driver.h (CCID_DRIVER_ERR_NO_PINPAD): Rename.
* scd/ccid-driver.c (ccid_transceive_secure): Use it.

* scd/app-dinsig.c (verify_pin): Follow the change.
* scd/app-nks.c (verify_pin): Follow the change.

* scd/app-openpgp.c (check_pinpad_request): Rename.
(parse_login_data, verify_a_chv, verify_chv3, do_change_pin): Follow
the change.

* scd/scdaemon.c (oDisablePinpad, oEnablePinpadVarlen): Rename.

* scd/scdaemon.h (opt): Rename to disable_pinpad,

* tools/gpgconf-comp.c (gc_options_scdaemon): Rename to

6 years agoscd: Fix check_keypad_request.
NIIBE Yutaka [Tue, 5 Feb 2013 05:59:29 +0000 (14:59 +0900)]
scd: Fix check_keypad_request.

* scd/app-openpgp.c (check_keypad_request): 0 means not to use pinpad.

6 years agoscd: Clean up.
NIIBE Yutaka [Tue, 5 Feb 2013 05:37:14 +0000 (14:37 +0900)]
scd: Clean up.

* apdu.h (apdu_send_simple_kp): Remove.
* apdu.c (apdu_send_simple_kp): Remove.

6 years agoSCD: Add vendor specific initalization.
NIIBE Yutaka [Mon, 28 Jan 2013 02:46:40 +0000 (11:46 +0900)]
SCD: Add vendor specific initalization.

* scd/ccid-driver.c (ccid_vendor_specific_init): New.
(ccid_open_reader): Call ccid_vendor_specific_init.

6 years agoSCD: Support P=N format for login data.
NIIBE Yutaka [Sun, 13 Jan 2013 03:12:10 +0000 (12:12 +0900)]
SCD: Support P=N format for login data.

* scd/app-openpgp.c (parse_login_data): Support P=N format.

6 years agoSCD: Better interoperability.
NIIBE Yutaka [Fri, 11 Jan 2013 04:19:17 +0000 (13:19 +0900)]
SCD: Better interoperability.

* scd/apdu.c: Fill bTeoPrologue[2] field.
ccid-1.4.5 or older requires this field is filled by application.

6 years agoSCD: Defaults to use pinpad if the reader has the capability.
NIIBE Yutaka [Fri, 11 Jan 2013 01:41:38 +0000 (10:41 +0900)]
SCD: Defaults to use pinpad if the reader has the capability.

* scd/app-openpgp.c (struct app_local_s): Remove VARLEN.
(parse_login_data): "P=0" means to disable pinpad.
(check_keypad_request): Default is to use pinpad if available.

6 years agoSCD: handle keypad request on the card.
NIIBE Yutaka [Thu, 10 Jan 2013 06:58:43 +0000 (15:58 +0900)]
SCD: handle keypad request on the card.

* scd/app-openpgp.c: Add 2013.
(struct app_local_s): Add keypad structure.
(parse_login_data): Add parsing keypad request on the card.
(check_keypad_request): New.
(verify_a_chv, verify_chv3, do_change_pin): Call check_keypad_request
to determine use of keypad.

6 years agoSCD: Minor fix of ccid-driver.
NIIBE Yutaka [Thu, 10 Jan 2013 06:52:24 +0000 (15:52 +0900)]
SCD: Minor fix of ccid-driver.

* scd/ccid-driver.c (VENDOR_VEGA): Fix typo.

6 years agoSCD: Add support of Covadis VEGA_ALPHA reader.
NIIBE Yutaka [Thu, 10 Jan 2013 01:49:27 +0000 (10:49 +0900)]
SCD: Add support of Covadis VEGA_ALPHA reader.

* scd/ccid-driver.c: Add 2013.
(ccid_transceive_secure): VEGA_ALPHA is same firmware as GEMPC_PINPAD.
Change bNumberMessage to 0x01, as it works better (was: 0xff).

6 years agoSCD: Support fixed length PIN input for keypad (PC/SC).
NIIBE Yutaka [Wed, 9 Jan 2013 07:40:41 +0000 (16:40 +0900)]
SCD: Support fixed length PIN input for keypad (PC/SC).

* scd/apdu.c (pcsc_keypad_verify): SUpport fixed length PIN input for
(pcsc_keypad_modify): Likewise.
* scd/ccid-driver.c (ccid_transceive_secure): Clean up.

6 years agoSCD: Support fixed length PIN input for keypad.
NIIBE Yutaka [Wed, 9 Jan 2013 07:23:55 +0000 (16:23 +0900)]
SCD: Support fixed length PIN input for keypad.

* scd/iso7816.h (struct pininfo_s): Remove MODE and add FIXEDLEN.
* scd/app-dinsig.c (verify_pin): Initialize FIXEDLEN to unknown.
* scd/app-nks.c (verify_pin): Likewise.
* scd/app-openpgp.c (verify_a_chv, verify_chv3, do_change_pin):
* scd/apdu.c (check_pcsc_keypad): Add comment.
(pcsc_keypad_verify, pcsc_keypad_modify): PC/SC driver only support
readers with the feature of variable length input (yet).
(apdu_check_keypad): Set FIXEDLEN.
* scd/ccid-driver.c (ccid_transceive_secure): Add GEMPC_PINPAD
specific settings.
Support fixed length PIN input for keypad.

6 years agoSCD: API cleanup for keypad handling.
NIIBE Yutaka [Wed, 9 Jan 2013 05:10:08 +0000 (14:10 +0900)]
SCD: API cleanup for keypad handling.

* scd/iso7816.h (struct pininfo_s): Rename from iso7816_pininfo_s.
Change meaning of MODE.
(pininfo_t): Rename from iso7816_pininfo_t.
* scd/sc-copykeys.c: Include "iso7816.h".
* scd/scdaemon.c, scd/command.c: Likewise.
* scd/ccid-driver.c: Include "scdaemon.h" and "iso7816.h".
(ccid_transceive_secure): Follow the change of PININFO_T.
* scd/app.c: Include "apdu.h" after "iso7816.h".
* scd/iso7816.c (iso7816_check_keypad, iso7816_verify_kp)
(iso7816_change_reference_data_kp): Follow the change of API.
* scd/apdu.c (struct reader_table_s): Change API of CHECK_KEYPAD,
(check_pcsc_keypad, check_ccid_keypad): Likewise.
(apdu_check_keypad, apdu_keypad_verify, apdu_keypad_modify): Likewise.
(pcsc_keypad_verify, pcsc_keypad_modify, ct_send_apdu)
(pcsc_send_apdu_direct,  pcsc_send_apdu_wrapped, pcsc_send_apdu)
(send_apdu_ccid, ccid_keypad_operation, my_rapdu_send_apdu, send_apdu)
(send_le): Follow the change of API.
* scd/apdu.h (apdu_check_keypad, apdu_keypad_verify)
(apdu_keypad_modify): Change the API.
* scd/app-dinsig.c, scd/app-nks.c, scd/app-openpgp.c: Follow the

6 years agoSCD: Clean up. Remove PADLEN for keypad input.
NIIBE Yutaka [Mon, 7 Jan 2013 05:20:55 +0000 (14:20 +0900)]
SCD: Clean up.  Remove PADLEN for keypad input.

* scd/apdu.c (struct pininfo_s): Use iso7816_pininfo_s.
(struct reader_table_s): Remove last arg from check_keypad method.
(check_pcsc_keypad, check_pcsc_keypad): Remove PIN_PADLEN.
(pcsc_keypad_verify, pcsc_keypad_modify): Don't check PIN_PADLEN.
(send_apdu_ccid, ccid_keypad_operation): Remove PIN_PADLEN.
(apdu_check_keypad, apdu_keypad_verify, apdu_keypad_modify):

* scd/apdu.h (apdu_check_keypad, apdu_keypad_verify)
(apdu_keypad_modify): Remove PIN_PADLEN.

* scd/ccid-driver.c (ccid_transceive_secure): Remove PIN_PADLEN.

* scd/ccid-driver.h (ccid_transceive_secure): Remove PIN_PADLEN.

* scd/iso7816.c (iso7816_check_keypad, iso7816_verify_kp)
(iso7816_change_reference_data_kp): Remove PADLEN.

* scd/iso7816.h (struct iso7816_pininfo_s): Remove PADLEN, PADCHAR.
In the OpenPGPcard specification, password comes with no padding.  In
GnuPG, we support keypad input for OpenPGPcard only.  Thus, it is
useless to try to support padding for keypad input.

6 years agoSCD: Add option enable-keypad-varlen and support for GEMPC_PINPAD.
NIIBE Yutaka [Wed, 9 Jan 2013 04:24:57 +0000 (13:24 +0900)]
SCD: Add option enable-keypad-varlen and support for GEMPC_PINPAD.

* scd/scdaemon.h (opt): Add enable_keypad_varlen.
* scd/scdaemon.c (cmd_and_opt_values): Add oEnableKeypadVarlen.
(opts, main): Add oEnableKeypadVarlen.
* scd/ccid-driver.c (GEMPC_PINPAD): New.
(ccid_transceive_secure): Add enable_varlen handling.
Note that GEMPC_PINPAD doesn't support variable length keypad input.
The feature of fixed length keypad input will be added soon.

6 years agoSCD: Support not-so-smart card readers.
NIIBE Yutaka [Tue, 8 Jan 2013 06:22:31 +0000 (15:22 +0900)]
SCD: Support not-so-smart card readers.

* scd/ccid-driver.c (struct ccid_driver_s): Add auto_voltage,
auto_param, and auto_pps.
(parse_ccid_descriptor): Set auto_voltage, auto_param, and auto_pps.
Support non-autoconf readers.
(update_param_by_atr): New.
(ccid_get_atr): Use 5V for PowerOn when auto_voltage is not supported.
Use 0x10 when nonnull_nad for SetParameters.
Call update_param_by_atr for parsing ATR, and use param for
Send PPS if reader requires it and card is negotiable.
When bNadValue in the return values of SetParameters == 0,
clear handle->nonnull_nad flag.
This change is to support more card readers by the internal driver.
Tested with 08e6:3478 Gemplus PinPad Smart Card Reader.

6 years agoSCD: Hold lock for pinpad input.
NIIBE Yutaka [Fri, 11 Jan 2013 02:18:39 +0000 (11:18 +0900)]
SCD: Hold lock for pinpad input.

* scd/apdu.c (apdu_check_keypad, apdu_keypad_verify)
(apdu_keypad_modify): Hold lock to serialize communication.

6 years agoagent: kill pinentry by SIGINT, fixing a bug to be killed by SIGINT.
NIIBE Yutaka [Mon, 4 Feb 2013 00:07:22 +0000 (09:07 +0900)]
agent: kill pinentry by SIGINT, fixing a bug to be killed by SIGINT.

* agent/call-pinentry.c (atfork_cb): Reset signal mask and signal
handler for child process.
(agent_popup_message_stop): Send SIGINT (was: SIGKILL).
pinentry-curses should be killed by SIGINT, so that it can reset
terminal settings, but it didn't work.

6 years agogpg: Fix honoring --cert-digest-algo when recreating a cert
Christian Aistleitner [Sun, 14 Oct 2012 18:31:41 +0000 (20:31 +0200)]
gpg: Fix honoring --cert-digest-algo when recreating a cert

* g10/sign.c (update_keysig_packet): Override original signature's
digest algo in hashed data and for hash computation.

6 years agoUpdate Japanese Translation.
NIIBE Yutaka [Mon, 7 Jan 2013 01:41:21 +0000 (10:41 +0900)]
Update Japanese Translation.

* po/ja.po: Fix wrong translations for designated revocation.
Reported by Hideki Saito.

6 years agogpg: Detect Keybox files and print a diagnostic.
Werner Koch [Thu, 3 Jan 2013 19:19:23 +0000 (20:19 +0100)]
gpg: Detect Keybox files and print a diagnostic.

* g10/keydb.c (KEYDB_RESOURCE_TYPE_KEYBOX): New.
(keydb_add_resource): Handle scheme "gnupg-kbx:".  Detect Keybox
magic.  Print wanrning note for Keybox.
(keydb_new, keydb_release, keydb_get_resource_name)
(lock_all, unlock_all, keydb_get_keyblock)
(keydb_update_keyblock, keydb_insert_keyblock, keydb_delete_keyblock)
(keydb_locate_writable, keydb_rebuild_caches, keydb_search_reset)
(keydb_search2): Ignore Keybox type in switches.
* g10/gpg.h (G10ERR_UNSUPPORTED): Map to correct gpg-error value.

GnuPG 2.1 will support Keybox files in GPG and thus users might see
weird error messages if they accidentally use a keybox file with 2.0.
Better print a note here.

6 years agoRemove trailing white space from some files.
Werner Koch [Thu, 3 Jan 2013 19:11:54 +0000 (20:11 +0100)]
Remove trailing white space from some files.


6 years agoUpdate Japanese Translation
NIIBE Yutaka [Sat, 29 Dec 2012 15:24:20 +0000 (00:24 +0900)]
Update Japanese Translation

* po/ja.po: Fix terms and expressions.

6 years agoUpdate Japanese Translation
NIIBE Yutaka [Sat, 29 Dec 2012 11:52:38 +0000 (20:52 +0900)]
Update Japanese Translation

* po/ja.po: Translate all untranslated messages.

6 years agoUpdate Japanese Translation
NIIBE Yutaka [Thu, 27 Dec 2012 07:06:52 +0000 (16:06 +0900)]
Update Japanese Translation

* po/ja.po: Fix all fuzzy translations.  Fill some of unstanslated

6 years agoUpdate Japanese Translation
NIIBE Yutaka [Thu, 27 Dec 2012 07:02:28 +0000 (16:02 +0900)]
Update Japanese Translation

* po/ja.po: Remove old entries.

6 years agoUpdate Japanese Translation
NIIBE Yutaka [Thu, 27 Dec 2012 06:57:44 +0000 (15:57 +0900)]
Update Japanese Translation

* po/ja.po: Fix headers.  Update by msgmerge -U ja.po gnupg2.pot.

6 years agoUpdate Japanese tranlation
NIIBE Yutaka [Thu, 27 Dec 2012 06:45:53 +0000 (15:45 +0900)]
Update Japanese tranlation

* po/ja.po: Change the encoding to UTF-8 (was: EUC-JP).

6 years agoMake sure srvcount is initialized.
David Shaw [Thu, 20 Dec 2012 23:12:29 +0000 (18:12 -0500)]
Make sure srvcount is initialized.

* keyserver/gpgkeys_hkp.c (srv_replace): Initialize srvcount.

6 years agogpg: Import only packets which are allowed in a keyblock.
Werner Koch [Thu, 20 Dec 2012 08:43:41 +0000 (09:43 +0100)]
gpg: Import only packets which are allowed in a keyblock.

* g10/import.c (valid_keyblock_packet): New.
(read_block): Store only valid packets.

A corrupted key, which for example included a mangled public key
encrypted packet, used to corrupt the keyring.  This change skips all
packets which are not allowed in a keyblock.

GnuPG-bug-id: 1455

(cherry-picked from commit 3a4b96e665fa639772854058737ee3d54ba0694e)

6 years agoFixed indentation and indented cpp directives
Werner Koch [Wed, 19 Dec 2012 14:30:17 +0000 (15:30 +0100)]
Fixed indentation and indented cpp directives


6 years agogpg: Make commit 258192d4 actually work
Werner Koch [Wed, 19 Dec 2012 10:47:23 +0000 (11:47 +0100)]
gpg: Make commit 258192d4 actually work

* g10/sign.c (update_keysig_packet): Use digest_algo.

6 years agogpg: Suppress "public key already present" in quiet mode.
Werner Koch [Wed, 19 Dec 2012 10:21:26 +0000 (11:21 +0100)]
gpg: Suppress "public key already present" in quiet mode.

* g10/pkclist.c (build_pk_list): Print two diagnostics only in
non-quiet mode.

(back-ported from commit 8325d616593187ff227853de0295e3269b96edcb)

6 years agoRemove trailing white space from a file
Werner Koch [Wed, 19 Dec 2012 10:21:26 +0000 (11:21 +0100)]
Remove trailing white space from a file


6 years agoState that disclaimers are not anymore needed for translations.
Werner Koch [Tue, 18 Dec 2012 18:54:23 +0000 (19:54 +0100)]
State that disclaimers are not anymore needed for translations.


6 years agojnlib: Add meta option ignore-invalid-option.
Werner Koch [Tue, 18 Dec 2012 17:06:41 +0000 (18:06 +0100)]
jnlib: Add meta option ignore-invalid-option.

* jnlib/argparse.c (iio_item_def_s, IIO_ITEM_DEF): New.
(initialize): Init field IIO_LIST.
(ignore_invalid_option_p): New.
(ignore_invalid_option_add): New.
(ignore_invalid_option_clear): New.
(optfile_parse): Implement meta option.

This option is currently of no use.  However, as soon as it has been
deployed in all stable versions of GnuPG, it will allow the use of the
same configuration file with an old and a new version of GnuPG.  For
example: If a new version implements the option "foobar", and a user
uses it in gpg.conf, an old version of gpg would bail out with the
error "invalid option".  To avoid that the following line can be put
above that option in gpg.conf

  ignore-invalid-option foobar

This meta option may be given several times or several option names
may be given as arguments (space delimited).  Note that this option is
not available on the command line.

(cherry-picked from commit 41d564333d35c923f473aa90625d91f8fe18cd0b)

6 years agoNo point in defaulting try-dns-srv to on if we don't have SRV support.
David Shaw [Tue, 18 Dec 2012 05:08:51 +0000 (00:08 -0500)]
No point in defaulting try-dns-srv to on if we don't have SRV support.

* keyserver/gpgkeys_hkp.c (main): Only default try-dns-srv to on if we
  have SRV support in the first place.

6 years agoIssue 1447: Pass proper Host header and SNI when SRV is used with curl.
David Shaw [Tue, 18 Dec 2012 04:52:15 +0000 (23:52 -0500)]
Issue 1447: Pass proper Host header and SNI when SRV is used with curl.

* Check for inet_ntop.

* m4/libcurl.m4: Provide a #define for the version of the curl

* keyserver/gpgkeys_hkp.c (main, srv_replace): Call getaddrinfo() on
  each target.  Once we find one that resolves to an address (whether
  IPv4 or IPv6), pass it into libcurl via CURLOPT_RESOLVE using the
  SRV name as the "host".  Force the HTTP Host header to be the same.

6 years agoPart of issue 1447: Pass proper Host header when SRV is used.
David Shaw [Sat, 15 Dec 2012 15:35:19 +0000 (10:35 -0500)]
Part of issue 1447: Pass proper Host header when SRV is used.

* common/http.c (send_request, connect_server): Set proper Host header
  (no :port, host is that of the SRV) when SRV is used in the

6 years agoFix issue 1446: honor ports given in SRV responses.
David Shaw [Sat, 15 Dec 2012 15:11:11 +0000 (10:11 -0500)]
Fix issue 1446: honor ports given in SRV responses.

* common/http.c (send_request, connect_server, http_open): Use a
  struct srv instead of a single srvtag so we can pass the chosen host
  and port back to the caller.
  (connect_server): Use the proper port in the HAVE_GETADDRINFO case.

* keyserver/curl-shim.c (curl_easy_perform): Use struct srv and log
  chosen host and port.

* keyserver/gpgkeys_hkp.c (main): Properly take the port given by SRV.

6 years agoSCD: Fix the process of writing key or generating key.
NIIBE Yutaka [Thu, 13 Dec 2012 04:36:23 +0000 (13:36 +0900)]
SCD: Fix the process of writing key or generating key.

* scd/app-openpgp.c (store_fpr): Flush KEY-FPR and KEY-TIME.

6 years agoRevert SCD changes of 2010-05-03 (scd/ChangeLog 2010-03-17).
NIIBE Yutaka [Fri, 7 Dec 2012 01:31:37 +0000 (10:31 +0900)]
Revert SCD changes of 2010-05-03 (scd/ChangeLog 2010-03-17).

* scd/apdu.c (pcsc_no_service): Remove.
(open_pcsc_reader_direct, open_pcsc_reader_wrapped): Remove
pcsc_no_service support.
(apdu_open_reader): Remove R_NO_SERVICE.
* scd/apdu.h (apdu_open_reader): Remove R_NO_SERVICE.
* scd/command.c (reader_disabled): Remove.
(get_reader_slot): Follow the change of R_NO_SERVICE.
(open_card, cmd_serialno, scd_command_handler): Remove reader_disabled
* scd/sc-copykeys.c (main): Follow the change of R_NO_SERVICE.
Daemon should handle all possible cases.  Even if such a difficult
case like reader_disabled, it should not exit.

6 years agoDon't keep opening unavailable card reader.
NIIBE Yutaka [Thu, 22 Nov 2012 07:04:51 +0000 (16:04 +0900)]
Don't keep opening unavailable card reader.

* scd/command.c (update_reader_status_file): Don't call

This fix has a impact that the insertion of a card reader will not be
detected upon the insertion, but will be deferred until user tries to
access his card.

6 years agoUpdate sample keys
David Shaw [Fri, 30 Nov 2012 18:14:09 +0000 (13:14 -0500)]
Update sample keys

6 years agoThe keyserver search menu should honor --keyid-format
David Shaw [Thu, 29 Nov 2012 17:00:46 +0000 (12:00 -0500)]
The keyserver search menu should honor --keyid-format

* keyserver.c (print_keyrec): Honor --keyid-format when getting back
  full fingerprints from the keyserver (the comment in the code was
  correct, the code was not).

6 years agoFix printing of ECC algo names in hkp keyserver listings.
Werner Koch [Tue, 27 Nov 2012 16:35:16 +0000 (17:35 +0100)]
Fix printing of ECC algo names in hkp keyserver listings.

* g10/misc.c (map_pk_openpgp_to_gcry): New.
* g10/keyserver.c (print_keyrec): Map OpenPGP algorithm ids.

Although we don't have support for ECC, we want to print a proper
algorithm name in keyserver listings.  This will only work while using
a ECC enabled Libgcrypt.  Problem reported by Kristian Fiskerstrand.

6 years agoAllow decryption with card keys > 3072 bit
Werner Koch [Tue, 6 Nov 2012 13:39:22 +0000 (14:39 +0100)]
Allow decryption with card keys > 3072 bit

* scd/command.c (MAXLEN_SETDATA): New.
(cmd_setdata): Add option --append.
* g10/call-agent.c (agent_scd_pkdecrypt): Use new option for long data

* scd/app-openpgp.c (struct app_local_s): Add field manufacturer.
(app_select_openpgp): Store manufacturer.
(do_decipher): Print a note for broken cards.


Please note that I was not able to run a full test because I only have
broken cards (S/N < 346) available.

6 years agoRemove trailing white space from some files
Werner Koch [Tue, 6 Nov 2012 13:34:32 +0000 (14:34 +0100)]
Remove trailing white space from some files


6 years agoagent: Fix wrong use of gcry_sexp_build_array
NIIBE Yutaka [Wed, 31 Oct 2012 07:09:06 +0000 (16:09 +0900)]
agent: Fix wrong use of gcry_sexp_build_array

* findkey.c (agent_public_key_from_file): Fix use of

A test case leading to a segv in Libgcrypt is

  gpg-connect-agent \
    "READKEY 9277C5875C8AFFCB727661C18BE4E0A0DEED9260" /bye

The keygrip was created by "monkeysphere s", which has a comment.

gcry_sexp_build_array expects pointers to the arguments which is quite
surprising.  Probably ARG_NEXT was accidentally implemented wrongly.
Anyway, we can't do anything about it and thus need to fix the check
the users of this function.

Some-comments-by: Werner Koch <>
6 years agoSCD: Upon error, open_pcsc_reader_wrapped does same as _direct.
NIIBE Yutaka [Wed, 31 Oct 2012 02:02:58 +0000 (11:02 +0900)]
SCD: Upon error, open_pcsc_reader_wrapped does same as _direct.

* scd/apdu.c (PCSC_E_NO_SERVICE): New.
(open_pcsc_reader_direct): Use PCSC_E_NO_SERVICE.
(open_pcsc_reader_wrapped): Set pcsc_no_service.

6 years agoUpdate French translation
Werner Koch [Fri, 24 Aug 2012 15:36:55 +0000 (17:36 +0200)]
Update French translation

* po/fr.po: Update.

6 years agoFix German translation and msgmerge other po files
Werner Koch [Fri, 24 Aug 2012 09:30:41 +0000 (11:30 +0200)]
Fix German translation and msgmerge other po files


6 years agoFix typos spotted during translations
David Prévot [Wed, 22 Aug 2012 16:53:57 +0000 (12:53 -0400)]
Fix typos spotted during translations

agent/genkey.c: s/to to/to/
sm/*.c: s/failed to allocated/failed to allocate/
sm/certlist.c: s/should have not/should not have/

Consistency fix:

* g10/gpg.c, kbx/kbxutil.c, sm/gpgsm.c: uppercase after Syntax

6 years agoActually show translators comments in PO files
David Prévot [Wed, 22 Aug 2012 16:53:56 +0000 (12:53 -0400)]
Actually show translators comments in PO files

6 years agoKeep previous msgids of translated messages
David Prévot [Wed, 22 Aug 2012 16:53:55 +0000 (12:53 -0400)]
Keep previous msgids of translated messages

* po/ Use --previous with msgmerge.

6 years agoscd: Add forgotten VENDOR_FSIJ to ccid-driver.
NIIBE Yutaka [Fri, 20 Jul 2012 07:34:07 +0000 (16:34 +0900)]
scd: Add forgotten VENDOR_FSIJ to ccid-driver.

* scd/ccid-driver.c (ccid_transceive_secure): Handle VENDOR_FSIJ.

7 years agoscd: handle reader/token removal.
NIIBE Yutaka [Sun, 24 Jun 2012 01:45:49 +0000 (10:45 +0900)]
scd: handle reader/token removal.
* scd/apdu.c (pcsc_error_to_sw): PCSC_E_UNKNOWN_READER means

7 years agoscd: Fix updating slot status.
NIIBE Yutaka [Fri, 22 Jun 2012 01:51:12 +0000 (10:51 +0900)]
scd: Fix updating slot status.
* scd/comman.c (do_reset): Let clear card_removed flag.

7 years agoscd: acquire lock in new_reader_slot.
NIIBE Yutaka [Mon, 18 Jun 2012 06:08:01 +0000 (15:08 +0900)]
scd: acquire lock in new_reader_slot.

* scd/apdu.c (new_reader_slot): Acquire lock.
  (open_ct_reader, open_pcsc_reader_direct, open_pcsc_reader_wrapped)
  (open_ccid_reader, open_rapdu_reader): Release lock.

Fixes a test case of:
   No libpcsclite1 installed.
   Run gpg-agent
   Run command "gpg-connect-agent learn /bye" with no card/token
   Sometimes it fails: ERR 100663356 Not supported <SCD>
   While it should be always: ERR 100663404 Card error <SCD>

7 years agoscd: move lock_slot, trylock_slot, unlock_slot functions.
NIIBE Yutaka [Mon, 18 Jun 2012 05:52:53 +0000 (14:52 +0900)]
scd: move lock_slot, trylock_slot, unlock_slot functions.

* scd/apdu.c (lock_slot, trylock_slot, unlock_slot): Move.

This is for upcoming changes.

7 years agoscd: Fix merge mistake.
NIIBE Yutaka [Fri, 15 Jun 2012 07:46:59 +0000 (16:46 +0900)]
scd: Fix merge mistake.
* scd/iso7816.c (iso7816_reset_retry_counter): Implement.

7 years agoscd: Prefer application Geldkarte over DINSIG.
Werner Koch [Thu, 15 Dec 2011 20:45:35 +0000 (21:45 +0100)]
scd: Prefer application Geldkarte over DINSIG.

* scd/app.c (select_application): Reorder application tests.

Although the DINSIG application is available on most German cards, it
is in reality not used.  Thus showing the Geldkarte application is
more desirable for a good user experience.



7 years agoscd: Fix for card change returning GPG_ERR_CARD_RESET.
Werner Koch [Mon, 19 Dec 2011 17:26:47 +0000 (18:26 +0100)]
scd: Fix for card change returning GPG_ERR_CARD_RESET.

* scd/apdu.c (apdu_connect): Do not test for zero atrlen.
When gpg-agent prompts for insertion of a card this error would be

Co-authored-by: Ben Kibbey <>
7 years agoMerge ccid_driver_improvement branch. (backport)
NIIBE Yutaka [Fri, 6 Jan 2012 04:50:21 +0000 (13:50 +0900)]
Merge ccid_driver_improvement branch. (backport)

* scd/apdu.c (ccid_keypad_operation): Rename from ccid_keypad_verify.
(open_ccid_reader): Use ccid_keypad_operation for verify and modify.

* scd/ccid-driver.c (VENDOR_VASCO, VASCO_920): New.
(ccid_transceive_apdu_level): Permit sending packet where
apdulen <= 289.  Support receiving packets in a chain.
(ccid_transceive_secure): Maximum is 15 for VASCO DIGIPASS 920.
Support keypad_modify method such as CHANGE_REFERENCE_DATA: 0x24.

7 years agoAdd error log and debug log for pcsc_keypad_verify and pcsc_keypad_modify.
NIIBE Yutaka [Tue, 20 Dec 2011 04:34:27 +0000 (13:34 +0900)]
Add error log and debug log for pcsc_keypad_verify and pcsc_keypad_modify.

* scd/apdu.c (pcsc_keypad_verify): Add debug log and error log.
(pcsc_keypad_modify): Likewise.

7 years agoFix pinpad input support for passphrase modification. (backport)
NIIBE Yutaka [Fri, 2 Dec 2011 04:57:12 +0000 (13:57 +0900)]
Fix pinpad input support for passphrase modification. (backport)

* apdu.c (pcsc_keypad_verify): Have dummy Lc field with value 0.
(pcsc_keypad_modify): Likewise.
(pcsc_keypad_modify): It's only for ISO7816_CHANGE_REFERENCE_DATA.
bConfirmPIN value is determined by the parameter p0.

* app-openpgp.c (do_change_pin): The flag use_keypad should be 0 when
reset_mode is on, or resetcode is on.  use_keypad only makes sense for

* iso7816.h (iso7816_put_data_kp): Remove.
(iso7816_reset_retry_counter_kp): Remove.
(iso7816_reset_retry_counter_with_rc_kp): Remove.
(iso7816_change_reference_data_kp): Add an argument: IS_EXCHANGE.

* iso7816.c (iso7816_put_data_kp): Remove.
(iso7816_reset_retry_counter_kp): Remove.
(iso7816_reset_retry_counter_with_rc_kp): Remove.
(iso7816_change_reference_data_kp): Add an argument: IS_EXCHANGE.

7 years agoscd: Fix pinpad input support (backport from master)
NIIBE Yutaka [Thu, 1 Dec 2011 02:09:51 +0000 (11:09 +0900)]
scd: Fix pinpad input support (backport from master)

* app-openpgp.c (do_change_pin): Fix pincb messages when
use_keypad == 1.

7 years agoscd: PC/SC pinpad support (pinpad input for modify pass phrase). (backport)
NIIBE Yutaka [Tue, 29 Nov 2011 02:59:32 +0000 (11:59 +0900)]
scd: PC/SC pinpad support (pinpad input for modify pass phrase). (backport)

* iso7816.h (iso7816_change_reference_data_kp): Remove arguments

* iso7816.c (iso7816_change_reference_data_kp): Call
(iso7816_change_reference_data): Don't call

* apdu.h (apdu_keypad_modify): New.

* apdu.c (pcsc_keypad_modify, apdu_keypad_modify): New.
(struct reader_table_s): New memeber function keypad_modify.
(new_reader_slot, open_ct_reader, open_ccid_reader)
(open_rapdu_reader): Initialize keypad_modify.

* app-openpgp.c (do_change_pin): Handle keypad and call
iso7816_change_reference_data_kp if it is the case.

7 years agoscd: PC/SC pinpad support. (Backported from master.)
NIIBE Yutaka [Mon, 28 Nov 2011 07:16:38 +0000 (16:16 +0900)]
scd: PC/SC pinpad support.  (Backported from )

* iso7816.h (iso7816_verify_kp): Remove arguments of CHV and CHVLEN.

* iso7816.c (iso7816_verify_kp): Call apdu_keypad_verify. Only
handle thecase with PININFO.
(iso7816_verify): Call apdu_send_simple.

* app-openpgp.c (verify_a_chv, verify_chv3): Follow the change of

* app-nks.c (verify_pin): Likewise.

* app-dinsig.c (verify_pin): Likewise.

* apdu.c: Include "iso7816.h".
(struct reader_table_s): New memeber function keypad_verify.
Add fields verify_ioctl and modify_ioctl in pcsc.
(pcsc_control): New.
(control_pcsc_direct, control_pcsc_wrapped, control_pcsc)
(check_pcsc_keypad, pcsc_keypad_verify): New.
(ccid_keypad_verify, apdu_keypad_verify): New.
(new_reader_slot): Initialize with check_pcsc_keypad,
pcsc_keypad_verify, verify_ioctl and modify_ioctl.
(open_ct_reader): Initialize keypad_verify with NULL.
(open_ccid_reader): Initialize keypad_verify.
(open_rapdu_reader): Initialize keypad_verify with NULL.
(apdu_open_reader): Initialize pcsc_control.

* pcsc-wrapper.c (load_pcsc_driver): Initialize pcsc_control.
(handle_control): New.
(main): Handle the case 6 of handle_control.

7 years agoFix generated ChangeLog entry.
Werner Koch [Wed, 13 Jun 2012 07:35:41 +0000 (09:35 +0200)]
Fix generated ChangeLog entry.

Finally Jim's git-fix-log thingy comes handy.

7 years agoscd fixes on error.
NIIBE Yutaka [Tue, 12 Jun 2012 05:51:52 +0000 (14:51 +0900)]
scd fixes on error.

* scd/apdu.c (open_pcsc_reader_wrapped): Show error number.

* scd/command.c (get_reader_slot): Return -1 on error.

7 years agoscd: Fix the changes of scd/command.c
NIIBE Yutaka [Fri, 8 Jun 2012 04:18:06 +0000 (13:18 +0900)]
scd: Fix the changes of scd/command.c

* scd/command.c (do_reset): Assign slot after setting slot_table.

7 years agoscd: Fix resetting and closing of the reader. (Backported by gniibe)
Werner Koch [Wed, 14 Dec 2011 09:30:01 +0000 (10:30 +0100)]
scd: Fix resetting and closing of the reader.  (Backported by gniibe)

* scd/command.c (update_card_removed): Do no act on an invalid VRDR.
(do_reset): Ignore apdu_reset error codes for no and inactive card.
Close the reader before setting the slot to -1.
(update_reader_status_file): Notify the application before closing the

With this change the scd now works as it did in the past.  In
particular there is no more endless loop trying to open the reader by
the update_reader_status_file ticker function.  That bug basically
blocked all card operations until the scdaemon was killed.

7 years agoscd: Retry command SERIALNO for an inactive card.
Werner Koch [Mon, 12 Dec 2011 20:02:54 +0000 (21:02 +0100)]
scd: Retry command SERIALNO for an inactive card.

* scd/command.c (cmd_serialno): Retry once for an inactive card.

7 years agoFix detection of card removal and insertion.
Werner Koch [Mon, 12 Dec 2011 19:34:12 +0000 (20:34 +0100)]
Fix detection of card removal and insertion.

* scd/apdu.c (apdu_connect): Return status codes for no card available
and inactive card.
* scd/command.c (TEST_CARD_REMOVAL): Also test for GPG_ERR_CARD_RESET.
(open_card): Map apdu_connect status to GPG_ERR_CARD_RESET.

7 years agoSupport the Cherry ST-2000 card reader.
Werner Koch [Fri, 2 Dec 2011 17:09:58 +0000 (18:09 +0100)]
Support the Cherry ST-2000 card reader.

* scd/ccid-driver.c (SCM_SCR331, SCM_SCR331DI, SCM_SCR335)
(SCM_SCR3320, SCM_SPR532, CHERRY_ST2000): New constants.
(parse_ccid_descriptor): Use them.
(scan_or_find_usb_device, ccid_transceive_secure): Handle Cherry
ST-2000.  Suggested by Matthias-Christian Ott.



7 years agofix wLangId in ccid-driver.c
NIIBE Yutaka [Thu, 13 Jan 2011 07:38:31 +0000 (16:38 +0900)]
fix wLangId in ccid-driver.c

This is not a part of pin pad support series of mine.

As I found the bug while I am preparing the patches, I report this.

As CCID protocol is little endian, wLangId of US English = 0x0409
is represented as two bytes of 0x09 then 0x04.

It is really confusing that the code like following is floating
pin_verify -> wLangId = HOST_TO_CCID_16(0x0904);

But, it is 0x0409 (not 0x0904).  It is defined in the documentation:

and origin of this table is Microsoft.  We can see it at:

Yes, it would be better not to hard-code 0x0409.  It would be better
to try current locale of the user, or to use the first entry of string
descriptor.  I don't have time to implement such a thing...

7 years agoAdd provisions to build with Libgcrypt 1.6.
Werner Koch [Thu, 24 May 2012 08:55:11 +0000 (10:55 +0200)]
Add provisions to build with Libgcrypt 1.6.

Replace gcry_md_start_debug by gcry_md_debug in all files.

* agent/gpg-agent.c (fixed_gcry_pth_init): Use only if
* scd/scdaemon.c (fixed_gcry_pth_init): Ditto.

Libgcrypt 1.6 will have some minor API changes.  In particular some
deprecated macros and functions will be removed.  PTH will also be
dropped in favor of a thread model neutral locking method.

7 years agoPrint the hash algorithm in colon mode key listing.
Werner Koch [Thu, 24 May 2012 08:13:39 +0000 (10:13 +0200)]
Print the hash algorithm in colon mode key listing.

* g10/keylist.c (list_keyblock_colon): Print digest_algo.

7 years agocommon: Remove generated files only during maintainer-clean.
Werner Koch [Tue, 8 May 2012 13:14:58 +0000 (15:14 +0200)]
common: Remove generated files only during maintainer-clean.


In general this is not required because automake does this for files
in BUILT_SOURCES anyway.  However, having them in CLEANFILES is wrong.
This is bug#1398.

7 years agoFix copyright years.
Werner Koch [Tue, 8 May 2012 13:57:18 +0000 (15:57 +0200)]
Fix copyright years.

* scripts/git-log-footer: Add more years; we actually published the
first code in 1997.

7 years agoCast second value of a ?: to void in estream.c.
Werner Koch [Fri, 30 Mar 2012 13:29:35 +0000 (15:29 +0200)]
Cast second value of a ?: to void in estream.c.

* common/estream.c (ESTREAM_MUTEX_LOCK): Cast pth_mutex_acquire result
to void.  Some compilers choke on mixing void and int in an
conditional operator.  Reported by Nelson H. F. Beebe.

7 years agoFix --with-pth-prefix help string.
Werner Koch [Fri, 30 Mar 2012 13:21:30 +0000 (15:21 +0200)]
Fix --with-pth-prefix help string.


7 years agoWrite the announce message.
Werner Koch [Tue, 27 Mar 2012 09:19:32 +0000 (11:19 +0200)]
Write the announce message.


7 years agoPost release updates
Werner Koch [Tue, 27 Mar 2012 09:13:50 +0000 (11:13 +0200)]
Post release updates


7 years agoRelease 2.0.19. gnupg-2.0.19
Werner Koch [Tue, 27 Mar 2012 08:19:40 +0000 (10:19 +0200)]
Release 2.0.19.

7 years agoUpdate zh_TW translation.
Werner Koch [Tue, 27 Mar 2012 08:15:11 +0000 (10:15 +0200)]
Update zh_TW translation.

7 years agoUpdate config.{sub,guess} to version 2012-02-10.
Werner Koch [Tue, 27 Mar 2012 08:10:54 +0000 (10:10 +0200)]
Update config.{sub,guess} to version 2012-02-10.

* scripts/config.guess, scripts/config.sub: Update.

7 years agoUpdate texinfo source from master.
Werner Koch [Tue, 27 Mar 2012 08:05:28 +0000 (10:05 +0200)]
Update texinfo source from master.

* doc/gpg-agent.texi, doc/gpg.texi, doc/gpgsm.texi
* doc/scdaemon.texi,  doc/tools.texi: Update.
* doc/yat2m.c: Update.

7 years agoAdd target to update the texinfo files from master.
Werner Koch [Tue, 27 Mar 2012 07:34:37 +0000 (09:34 +0200)]
Add target to update the texinfo files from 

* doc/ (update-source): New.

7 years agoGettext triggered update of uk.po.
Werner Koch [Tue, 27 Mar 2012 07:33:56 +0000 (09:33 +0200)]
Gettext triggered update of uk.po.


7 years agoFix make rules for audit-events.h et al.
Werner Koch [Mon, 26 Mar 2012 18:31:46 +0000 (20:31 +0200)]
Fix make rules for audit-events.h et al.

* common/ (audit-events.h, status-codes.h): Fix target file