gnupg/sm
Rainer Perske 1067403c8a
sm: Do not expect X.509 keyids to be unique
* sm/certlist.c (gpgsm_find_cert): Add arg allow_ambiguous and use it.
* sm/call-dirmngr.c (inq_certificate): Pass true to ALLOW_AMBIGUOUS
(run_command_inq_cb): Ditto.
* sm/gpgsm.c (main): Pass false.
* sm/server.c (cmd_passwd): Pass false.

--

As described in my report T1644, it is possible that multiple
certificates exist with the same Distinguished Name and the same key.
In this case, verifying S/MIME signatures and other actions fail with
"certificate not found: Ambiguous name". For details see the bug
report.

To circumvent the problem, I am patching GnuPG since 2014 so that in
this case the newest of the ambiguous certificates is used.

This is not an ultimate solution of the problem: You should try every
certificate with the same DN until verification succeeds or until all
certificates fail, and if multiple certificates of a chain are
ambiguous you even have to check every combination. You may even
consider checking the keyUsage attributes of the ambiguous certificates
to reduce the number of combinations.

But in the existing case of the certificates in the German Research
Network (DFN) PKI where the newest one is the valid one and all
ambiguous certificates have the same keyUsage attributes, this patch
has proven to be sufficient over the last three years.

With every GnuPG update, I have adapted the patch, luckily I never
needed to change anything except line numbers.

GnuPG-bug-id: 1644

ChangeLog log written by wk, comment taken from mail.  Signed-off line
was missing in the plain diff.  However the mail with the patch and
the DCO posted as reply to that mail were both signed.

Signed-off-by: Werner Koch <wk@gnupg.org>
2017-10-24 17:29:04 +02:00
..
ChangeLog-2011 Generate the ChangeLog from commit logs. 2011-12-01 11:09:02 +01:00
Makefile.am Remove -I option to common. 2017-03-07 20:25:54 +09:00
call-agent.c Explain the "server is older than xxx warning". 2017-07-31 11:20:47 +02:00
call-dirmngr.c sm: Do not expect X.509 keyids to be unique 2017-10-24 17:29:04 +02:00
certchain.c Remove -I option to common. 2017-03-07 20:25:54 +09:00
certcheck.c Remove -I option to common. 2017-03-07 20:25:54 +09:00
certdump.c Remove -I option to common. 2017-03-07 20:25:54 +09:00
certlist.c sm: Do not expect X.509 keyids to be unique 2017-10-24 17:29:04 +02:00
certreqgen-ui.c Remove -I option to common. 2017-03-07 20:25:54 +09:00
certreqgen.c Remove -I option to common. 2017-03-07 20:25:54 +09:00
decrypt.c gpg,sm: Error out on compliance mismatch while decrypting. 2017-08-01 08:41:47 +02:00
delete.c Remove -I option to common. 2017-03-07 20:25:54 +09:00
encrypt.c gpg,sm: String changes for compliance diagnostics. 2017-07-28 17:46:43 +02:00
export.c Remove -I option to common. 2017-03-07 20:25:54 +09:00
fingerprint.c Remove -I option to common. 2017-03-07 20:25:54 +09:00
gpgsm-w32info.rc w32: Add icons and version information. 2013-05-07 21:35:48 +02:00
gpgsm.c sm: Do not expect X.509 keyids to be unique 2017-10-24 17:29:04 +02:00
gpgsm.h sm: Do not expect X.509 keyids to be unique 2017-10-24 17:29:04 +02:00
import.c Spelling fixes in docs and comments. 2017-04-28 10:06:33 +09:00
keydb.c Remove -I option to common. 2017-03-07 20:25:54 +09:00
keydb.h gpg,sm: Add STATUS_ERROR keydb_search and keydb_add-resource. 2016-11-10 17:07:28 +01:00
keylist.c sm: Fix colon listing of fields > 12 in crt records. 2017-10-19 14:59:34 +02:00
minip12.c Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
minip12.h Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
misc.c Spelling fixes in docs and comments. 2017-04-28 10:06:33 +09:00
passphrase.c Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
passphrase.h Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
qualified.c Spelling fixes in docs and comments. 2017-04-28 10:06:33 +09:00
server.c sm: Do not expect X.509 keyids to be unique 2017-10-24 17:29:04 +02:00
sign.c gpg,sm: String changes for compliance diagnostics. 2017-07-28 17:46:43 +02:00
verify.c gpg,sm: String changes for compliance diagnostics. 2017-07-28 17:46:43 +02:00