Support GeneralSubtrees with minimum = 0
authorFraser Tweedale <ftweedal@redhat.com>
Sat, 27 Oct 2018 04:11:41 +0000 (12:11 +0800)
committerPaul Yang <yang.yang@baishancloud.com>
Sat, 27 Oct 2018 04:11:41 +0000 (12:11 +0800)
commitc23e497da7815bf6ef84461f92339442d3702eda
tree07e53d6eef5728016279d70a789dd098af06da41
parenta83dc59afa2e0207180d7218efed19b20d48de95
Support GeneralSubtrees with minimum = 0

The Name Constraints extension contains GeneralSubtree values
indicating included or excluded subtrees.  It is defined as:

  GeneralSubtree ::= SEQUENCE {
    base                    GeneralName,
    minimum         [0]     BaseDistance DEFAULT 0,
    maximum         [1]     BaseDistance OPTIONAL }

RFC 5280 further specifies:

  Within this profile, the minimum and maximum fields are not used with
  any name forms, thus, the minimum MUST be zero, and maximum MUST be
  absent.

Because the minimum fields has DEFAULT 0, and certificates should be
encoded using DER, the situation where minimum = 0 occurs in a
certificate should not arise.  Nevertheless, it does arise.  For
example, I have seen certificates issued by Microsoft programs that
contain GeneralSubtree values encoded thus.

Enhance the Name Constraints matching routine to handle the case
where minimum is specified.  If present, it must be zero.  The
maximum field remains prohibited.

Reviewed-by: Paul Yang <yang.yang@baishancloud.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/7039)
crypto/x509v3/v3_ncons.c