|
Dan, I believe that I did mark the policyMappings extension as critical whenever it appeared in a certificate. It is true that RFC 3280 mandates that the extension be marked critical. Although, I am going to recommend that son-of-RFC 3280 allow the extension to be marked either critical or non-critical. [X.509 4th edition, clause 8.2.2.7] "This [policyMappings] extension may, at the option of the certificate issuer, be either critical or non-critical. It is recommended that it be critical, otherwise a certificate user may not correctly interpret the stipulation of the issuing CA." Aside from the fact that relying parties
should be prepared for the possibility that this extension may be set
as critical because that is legal in X.509, setting the criticality bit
should not cause problems for relying parties. The criticality bit
should only be used by clients as follows. If the client can not
process the extension and the extension is marked critical, then the
client should reject the certificate. If the client can not process the
extension and the extension is marked non-critical, then the client
should ignore the extension. If the client can process the extension,
then the criticality bit may be ignored. There is no need for RFC 3280 or PKITS
to define semantics for a critical policyMappings extension because the
semantics of the policyMappings extension are not changed by the value
of the criticality bit. Marking the extension as critical just
indicates that clients that can not process the extension must reject
the certificate. Dave Dan Proietti wrote: A number (if not all) of the certificates in the test suite that include a PolicyMappings extension also mark it CRITICAL. This seems to be a violation of the specification, according to RFC 3280 Section 4.2.1.6 which states: This extension MAY be supported by CAs and/or applications, and it MUST be non-critical. I'm concerned that this could cause otherwise conforming path validation routines to fail the suite because the criticality indicator is not expected to be set and no semantics are defined for it, in either 3280 or the PKITS documentation. Dan Proietti |