<?xml version='1.0'?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
  ns="http://www.iana.org/assignments">

  <include href="../_support/iana-registry.rng"/>

  <start>
    <element name="registry">
      <ref name="registryMeta"/>
      
      <!-- C509 Certificate Types -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="description"><text/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- C509 Certification Request Types -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="description"><text/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>

      <!-- C509 Private Key Types -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="comments"><ref name="richText"/></element>
            <element name="privatekey"><text/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>

      <!-- C509 Certification Request Templates Types -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="description"><text/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- C509 RDN Attributes -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="name"><text/></element>
            <element name="id"><text/></element>
            <element name="oid"><text/></element>
            <element name="der"><text/></element>
            <element name="comments"><ref name="richText"/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>

      <!-- C509 CR Attributes -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="name"><text/></element>
            <element name="id"><text/></element>
            <element name="oid"><text/></element>
            <element name="der"><text/></element>
            <element name="comments"><ref name="richText"/></element>
            <element name="attr"><ref name="richText"/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>

      <!-- C509 Extensions -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="name"><text/></element>
            <element name="id"><text/></element>
            <element name="oid"><text/></element>
            <element name="der"><text/></element>
            <element name="comments"><ref name="richText"/></element>
            <element name="ext"><ref name="richText"/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- C509 Certificate Policies -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="name"><text/></element>
            <element name="id"><text/></element>
            <element name="oid"><text/></element>
            <element name="der"><text/></element>
            <element name="comments"><ref name="richText"/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>

      <!-- C509 Policies Qualifiers -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="name"><text/></element>
            <element name="id"><text/></element>
            <element name="oid"><text/></element>
            <element name="der"><text/></element>
            <element name="comments"><ref name="richText"/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>

      <!-- C509 Information Access -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="name"><text/></element>
            <element name="id"><text/></element>
            <element name="oid"><text/></element>
            <element name="der"><text/></element>
            <element name="comments"><ref name="richText"/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>

      <!-- C509 Extended Key Usages -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="name"><text/></element>
            <element name="id"><text/></element>
            <element name="oid"><text/></element>
            <element name="der"><text/></element>
            <element name="comments"><ref name="richText"/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>

      <!-- C509 Extended Key Usages -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="name"><text/></element>
            <element name="comments"><ref name="richText"/></element>
            <element name="genname"><text/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>

       <!-- C509 Signature Algorithms -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="name"><text/></element>
            <element name="id"><text/></element>
            <element name="oid"><text/></element>
            <element name="parameters"><text/></element>
            <element name="der"><ref name="richText"/></element>
            <element name="comments"><ref name="richText"/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>

      <!-- C509 Public Key Algorithms -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="name"><text/></element>
            <element name="id"><text/></element>
            <element name="oid"><text/></element>
            <element name="parameters"><text/></element>
            <element name="der"><ref name="richText"/></element>
            <element name="comments"><ref name="richText"/></element>
            <element name="reference"><ref name="richText"/></element>
          </element>
        </zeroOrMore>
      </element>

      <ref name="people"/>
    </element>
  </start>

</grammar>
