jglobus/JGlobus — pull request #90 by gbehrmann (2013-05-03 07:08:23+00:00)
Title: ssl-proxies: Improve RFC 3820 compliance of key usage check

Each certificate in a certificate chain can have a key usage field.
The existing JGlobus code checks that each proxy certificate does not
have more key usages than the issuing certificate. This seems like
a sensible check, however it conflicts with the algorithm described
in RFC 3820.

The RFC states that all key usage (and extended key usage) extensions
of all proxy certificates and the EEC must be collected in a list and
the effective key usage computed by the intersection of all extensions:

* If a certificate is a proxy certificate with a policy other than
id-ppl-independent, the effective key usage and extended key usage
functionality of the proxy certificate is the intersection of the
functionality of those extensions in the proxy certificate and the
effective key usage functionality of the proxy issuer.

We have observed real-world proxy certificates that failed with the
existing check in JGlobus 2, even though they are valid proxies
according to the RFC. These proxies also work with JGlobus 1.