Re: Critical certificate policies extension
Niklas Matthies <[email protected]> Tue, 19 Jul 2022 21:28:08 +0200
| Newsgroups | gmane.ietf.x509 |
|---|---|
| Message-ID | <[email protected]> |
On Thu 2022-07-14 at 08:31h, Peter Gutmann wrote on pkix: >Niklas Matthies <[email protected]> writes: > >>Yes, but the flag is set by default, and the documentation [2] notes that if >>it is not set, then the implementation is not PKIX compliant by itself. > >That seems incorrect, I'd expect it to be off by default. It is on by default. From the documentation I linked: When a PKIXParameters object is created, this flag is set to true. This setting reflects the most common (and simplest) strategy for processing policy qualifiers. Applications that want to use a more sophisticated policy must set this flag to false. >>Right. So I gather that rejecting all certificates containing a >>critical certificate policies extension with an unknown policy OID >>would be a valid interpretation of the RFC requirements I cited. > >Uhh... pass. Technically it's OK if it's in the initial policy set, >but then you get into the rathole of what it means to "regcognise" an >extension. Which was also debated endlessly on the list, see e.g. >the PKIX thread "What is meant by recognizing critical extensions?" Right. At the very least, it makes sense to me to apply the principle that the critical flag should not make a difference for elements where the applicable requirements are fully supported. That is, the critical flag would only ever used along the lines of: if (I_do_not_know_this_extension || I_do_not_comply_with_some_applicable_requirement_for_this_extension) { if (extension_is_critical) { reject_certificate(); } } And never along the lines of: if (I_know_this_extension_and_comply_with_all_applicable_requirements) { if (extension_is_critical) { do_something(); } else { do_something_different(); } } The set of "applicable requirements" can of course still be unclear. But you don't have different sets of applicable extension-specific requirements depending on whether the extension is critical or not. Niklas