<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.18 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-kaliski-asn1-layman-guide-00" category="info" submissionType="independent" tocInclude="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Layman's Guide to ASN.1">A Layman's Guide to a Subset of ASN.1, BER, and DER</title>
    <seriesInfo name="Internet-Draft" value="draft-kaliski-asn1-layman-guide-00"/>
    <author initials="B." surname="Kaliski" fullname="Burton S. Kaliski Jr.">
      <organization abbrev="Verisign, Inc.">Verisign, Inc.</organization>
      <address>
        <postal>
          <country>US</country>
        </postal>
        <email>bkaliski@verisign.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="03"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 145?>

<t>This note gives a layman's introduction to a
subset of the Abstract Syntax Notation One (ASN.1), Basic
Encoding Rules (BER), and Distinguished Encoding Rules
(DER). The particular purpose of this note is to provide
background material sufficient for understanding and
implementing the RSA Data Security, Inc. Public Key
Cryptography Standards (PKCS) family of standards.</t>

<t>This document represents a republication of A Layman's Guide to a Subset of ASN.1, 
BER, and DER, originally authored and published by RSA Security USA LLC. This document 
is submitted with permission from, and on behalf of RSA Security USA LLC. By publishing 
this document, change control is transferred to the IETF and the Internet technical community in 
full conformance with the provisions of BCP 78 and BCP 79.
</t>
    </abstract>
  </front>

  <middle>
    <?line 155?>
<section anchor="intro">
      <name>Introduction</name>
      <t>It is a generally accepted design principle that abstraction
is a key to managing software development. With abstraction,
a designer can specify a part of a system without concern
for how the part is actually implemented or represented.
Such a practice leaves the implementation open; it
simplifies the specification; and it makes it possible to
state "axioms" about the part that can be proved when the
part is implemented, and assumed when the part is employed
in another, higher-level part. Abstraction is the hallmark
of most modern software specifications.
      </t>
      <t>One of the most complex systems today, and one that also
involves a great deal of abstraction, is Open Systems
Interconnection (OSI, described in X.200 <xref target="X.200"/>). OSI is an
internationally standardized architecture that governs the
interconnection of computers from the physical layer up to
the user application layer. Objects at higher layers are
defined abstractly and intended to be implemented with
objects at lower layers. For instance, a service at one
layer may require transfer of certain abstract objects
between computers; a lower layer may provide transfer
services for strings of ones and zeroes, using encoding
rules to transform the abstract objects into such strings.
OSI is called an open system because it supports many
different implementations of the services at each layer.
      </t>
      <t>OSI's method of specifying abstract objects is called ASN.1
(Abstract Syntax Notation One, defined in X.208 <xref target="X.208"/>), and one
set of rules for representing such objects as strings of
ones and zeros is called the BER (Basic Encoding Rules,
defined in X.209 <xref target="X.209"/>). ASN.1 is a flexible notation that allows
one to define a variety data types, from simple types such
as integers and bit strings to structured types such as sets
and sequences, as well as complex types defined in terms of
others. BER describes how to represent or encode values of
each ASN.1 type as a string of eight-bit octets. There is
generally more than one way to BER-encode a given value.
Another set of rules, called the Distinguished Encoding
Rules (DER), which is a subset of BER, gives a unique
encoding to each ASN.1 value. DER is defined in Section 8.7 of X.509 <xref target="X.509"/>
      </t>
      <t>The purpose of this note is to describe a subset of ASN.1,
BER and DER sufficient to understand and implement one OSI-based
application, RSA Data Security, Inc.'s Public Key
Cryptography Standards. The features described include an
overview of ASN.1, BER, and DER and an abridged list of
ASN.1 types and their BER and DER encodings. Sections 3-5
give an overview of ASN.1, BER, and DER, in that order.
Section 6 lists some ASN.1 types, giving their notation,
specific encoding rules, examples, and comments about their
application to PKCS. Section 7 concludes with an example,
X.500 <xref target="X.500"/>distinguished names.
      </t>
      <t>Advanced features of ASN.1, such as macros, are not
described in this note, as they are not needed to implement
PKCS. For information on the other features, and for more
detail generally, the reader is referred to CCITT
Recommendations X.208 and X.209, which define ASN.1 and BER.
      </t>
    </section>

    <!--
    <section anchor="rfc2119">
    -->
    <section anchor="_section-2">
      <name>Conventions used in this document</name>
      <t>Terminology and notation. In this note, an octet is an eight-bit unsigned integer. Bit 8 of the octet is the most significant and bit 1 is the least significant.
      </t>
      <t>The following meta-syntax is used in describing ASN.1 notation:
      </t>
      <artwork><![CDATA[
     _n1_ underscore bounds denote a variable

     []   square brackets indicate that a term is
          optional

     {}   braces group related terms

     |    vertical bar delimits alternatives with a
          group

     ...  ellipsis indicates repeated occurrences

     =    equals sign expresses terms as sub-terms
      ]]></artwork>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.
      </t>
      <t> Note that the word "OPTIONAL" in this document is used in the context of an ASN.1 reference as defined by ASN.1 specification.
      </t>
    </section>

    <section anchor="_section-3">
      <name>Abstract Syntax Notation One</name>
      <t>Abstract Syntax Notation One, abbreviated ASN.1, is a
notation for describing abstract types and values.</t>
      <t>In ASN.1, a type is a set of values. For some types, there
are a finite number of values, and for other types there are
an infinite number. A value of a given ASN.1 type is an
element of the type's set. ASN.1 has four kinds of type:
simple types, which are "atomic" and have no components;
structured types, which have components; tagged types, which
are derived from other types; and other types, which include
the CHOICE type and the ANY type. Types and values can be
given names with the ASN.1 assignment operator (::=) , and
those names can be used in defining other types and values.</t>
      <t>Every ASN.1 type other than CHOICE and ANY has a tag, which
consists of a class and a nonnegative tag number. ASN.1
types are abstractly the same if and only if their tag
numbers are the same. In other words, the name of an ASN.1
type does not affect its abstract meaning, only the tag
does. There are four classes of tag:</t>
      <dl newline="true">
        <dt>Universal:</dt>
        <dd>
          <t>for types whose meaning is the same in all applications; 
          these types are only defined in X.208.
         </t>
        </dd>
        <dt>Application:</dt>
        <dd>
          <t>for types whose meaning is specific to an application, such as X.500
directory services; types in two different applications may have the same
application-specific tag and different meanings.</t>
        </dd>
        <dt>Private:</dt>
        <dd>
          <t>for types whose meaning is specific to a given enterprise.</t>
        </dd>
        <dt>Context-specific:</dt>
        <dd>
          <t>for types whose meaning is specific to a given structured type;
context-specific tags are used to distinguish between component types
with the same underlying tag within the context of a given structured
type, and component types in two different structured types may have the
same tag and different meanings.</t>
        </dd>
      </dl>
      <t>The types with universal tags are defined in X.208, which
also gives the types' universal tag numbers. Types with
other tags are defined in many places, and are always
obtained by implicit or explicit tagging (see <xref target="_section-3-3"/>).
Table 1 lists some ASN.1 types and their universal-class
tags.</t>
      <table>
        <name>Some types and their universal-class tags.</name>
        <thead>
          <tr>
            <th align="left">Type</th>
            <th align="left">Decimal Tag Number</th>
            <th align="left">Hexadecimal Tag Number</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">INTEGER</td>
            <td align="left">2</td>
            <td align="left">02</td>
          </tr>
          <tr>
            <td align="left">BIT STRING</td>
            <td align="left">3</td>
            <td align="left">03</td>
          </tr>
          <tr>
            <td align="left">OCTET STRING</td>
            <td align="left">4</td>
            <td align="left">04</td>
          </tr>
          <tr>
            <td align="left">NULL</td>
            <td align="left">5</td>
            <td align="left">05</td>
          </tr>
          <tr>
            <td align="left">OBJECT IDENTIFIER</td>
            <td align="left">6</td>
            <td align="left">06</td>
          </tr>
          <tr>
            <td align="left">UTF8String</td>
            <td align="left">12</td>
            <td align="left">0c</td>
          </tr>
          <tr>
            <td align="left">SEQUENCE and SEQUENCE OF</td>
            <td align="left">16</td>
            <td align="left">10</td>
          </tr>
          <tr>
            <td align="left">SET and SET OF</td>
            <td align="left">17</td>
            <td align="left">11</td>
          </tr>
          <tr>
            <td align="left">PrintableString</td>
            <td align="left">19</td>
            <td align="left">13</td>
          </tr>
          <tr>
            <td align="left">T61String</td>
            <td align="left">20</td>
            <td align="left">14</td>
          </tr>
          <tr>
            <td align="left">IA5String</td>
            <td align="left">22</td>
            <td align="left">16</td>
          </tr>
          <tr>
            <td align="left">UTCTime</td>
            <td align="left">23</td>
            <td align="left">17</td>
          </tr>
          <tr>
            <td align="left">GeneralizedTime</td>
            <td align="left">24</td>
            <td align="left">18</td>
          </tr>
        </tbody>
      </table>
      <t>ASN.1 types and values are expressed in a flexible,
programming-language-like notation, with the following
special rules:</t>
      <ul spacing="normal">
        <li>
          <t>Layout is not significant; multiple spaces and line breaks can be considered as a single space.</t>
        </li>
        <li>
          <t>Comments are delimited by pairs of hyphens '--', or a pair of hyphens and a line break.</t>
        </li>
        <li>
          <t>Identifiers (names of values and fields) and type references (names of types) consist of upper- and
lower-case letters, digits, hyphens, and spaces;
identifiers begin with lower-case letters; type
references begin with upper-case letters.</t>
        </li>
      </ul>
      <t>The following four subsections give an overview of simple
types, structured types, implicitly and explicitly tagged
types, and other types. Section 6 describes specific types
in more detail.</t>
      <section anchor="_section-3-1">
        <name>Simple types</name>
        <t>Simple types are those not consisting of components; they
are the "atomic" types. ASN.1 defines several; the types
that are relevant to the PKCS standards are the following:</t>
        <ul empty="true">
          <li>
            <dl>
              <dt>BIT STRING, an arbitrary string of bits (ones and zeroes).</dt>
              <dd>
          <!--      <t>an arbitrary string of bits (ones and zeroes).</t> -->
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>IA5String,</dt>
              <dd>
                <t>an arbitrary string of IA5 (ASCII) characters.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>INTEGER,</dt>
              <dd>
                <t>an arbitrary integer.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>NULL,</dt>
              <dd>
                <t>a null value.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>OBJECT IDENTIFIER,</dt>
              <dd>
                <t>an object identifier, which is a
sequence of integer components that identify an
object such as an algorithm or attribute type.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>OCTET STRING,</dt>
              <dd>
                <t>an arbitrary string of octets (eight-bit values).</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>PrintableString,</dt>
              <dd>
                <t>an arbitrary string of printable characters.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>T61String,</dt>
              <dd>
                <t>an arbitrary string of T.61 (eight-bit) characters.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>UTCTime,</dt>
              <dd>
                <t>a "coordinated universal time" or Greenwich Mean Time (GMT) value.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>Simple types fall into two categories: string types and non-
string types. BIT STRING, IA5String, OCTET STRING,
PrintableString, T61String, and UTCTime are string types.</t>
        <t>String types can be viewed, for the purposes of encoding, as
consisting of components, where the components are
substrings. This view allows one to encode a value whose
length is not known in advance (e.g., an octet string value
input from a file stream) with a constructed, indefinite-
length encoding (see <xref target="_section-4"/>).</t>
        <t>The string types can be given size constraints limiting the
length of values.</t>
      </section>
      <section anchor="_section-3-2">
        <name>Structured types</name>
        <t>Structured types are those consisting of components. ASN.1
defines four, all of which are relevant to the PKCS
standards:</t>
        <ul empty="true">
          <li>
            <dl>
              <dt>SEQUENCE,</dt>
              <dd>
                <t>an ordered collection of one or more types.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>SEQUENCE OF,</dt>
              <dd>
                <t>an ordered collection of zero or more occurrences of a given type.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>SET,</dt>
              <dd>
                <t>an unordered collection of one or more types.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>SET OF,</dt>
              <dd>
                <t>an unordered collection of zero or more occurrences of a given type.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>The structured types can have optional components, possibly
with default values.</t>
      </section>
      <section anchor="_section-3-3">
        <name>Implicitly and explicitly tagged types</name>
        <t>Tagging is useful to distinguish types within an
application; it is also commonly used to distinguish
component types within a structured type. For instance,
optional components of a SET or SEQUENCE type are typically
given distinct context-specific tags to avoid ambiguity.</t>
        <t>There are two ways to tag a type: implicitly and explicitly.</t>
        <t>Implicitly tagged types are derived from other types by
changing the tag of the underlying type. Implicit tagging is
denoted by the ASN.1 keywords [_class_ _number_] IMPLICIT (see
<xref target="_section-6-1"/>).</t>
        <t>Explicitly tagged types are derived from other types by
adding an outer tag to the underlying type. In effect,
explicitly tagged types are structured types consisting of
one component, the underlying type. Explicit tagging is
denoted by the ASN.1 keywords [_class_ _number_] EXPLICIT (see
<xref target="_section-6-2"/>).</t>
        <t>The keyword [_class_ _number_] alone is the same as explicit
tagging, except when the "module" in which the ASN.1 type is
defined has implicit tagging by default. ("Modules" are
among the advanced features not described in this note.)</t>
        <t>For purposes of encoding, an implicitly tagged type is
considered the same as the underlying type, except that the
tag is different. An explicitly tagged type is considered
like a structured type with one component, the underlying
type. Implicit tags result in shorter encodings, but
explicit tags may be necessary to avoid ambiguity if the tag
of the underlying type is indeterminate (e.g., the
underlying type is CHOICE or ANY).</t>
      </section>
      <section anchor="_section-3-4">
        <name>Other types</name>
        <t>Other types in ASN.1 include the CHOICE and ANY types. The
CHOICE type denotes a union of one or more alternatives; the
ANY type denotes an arbitrary value of an arbitrary type,
where the arbitrary type is possibly defined in the
registration of an object identifier or integer value.</t>
      </section>
    </section>
    <section anchor="_section-4">
      <name>Basic Encoding Rules</name>
      <t>The Basic Encoding Rules for ASN.1, abbreviated BER, give
one or more ways to represent any ASN.1 value as an octet
string. (There are certainly other ways to represent ASN.1
values, but BER is the standard for interchanging such
values in OSI.)</t>
      <t>There are three methods to encode an ASN.1 value under BER,
the choice of which depends on the type of value and whether
the length of the value is known. The three methods are
primitive, definite-length encoding; constructed, definite-
length encoding; and constructed, indefinite-length
encoding. Simple non-string types employ the primitive,
definite-length method; structured types employ either of
the constructed methods; and simple string types employ any
of the methods, depending on whether the length of the value
is known. Types derived by implicit tagging employ the
method of the underlying type and types derived by explicit
tagging employ the constructed methods.</t>
      <t>In each method, the BER encoding has three or four parts:</t>
      <ul empty="true">
        <li>
          <dl>
            <dt>Identifier octets.</dt>
            <dd>
              <t>These identify the class and tag number of the ASN.1
value, and indicate whether the method is primitive or constructed.</t>
            </dd>
          </dl>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <dl>
            <dt>Length octets.</dt>
            <dd>
              <t>For the definite-length methods, these give the number
of contents octets. For the constructed, indefinite-length method, these
indicate that the length is indefinite.</t>
            </dd>
          </dl>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <dl>
            <dt>Contents octets.</dt>
            <dd>
              <t>For the primitive, definite-length
method, these give a concrete representation of
the  value. For the constructed methods, these
give the concatenation of the BER encodings of the
components of the value.</t>
            </dd>
          </dl>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <dl>
            <dt>End-of-contents octets.</dt>
            <dd>
              <t>For the constructed, indefinite-length method, these denote the end of the
contents. For the other methods, these are absent.</t>
            </dd>
          </dl>
        </li>
      </ul>
      <t>The three methods of encoding are described in the following
sections.</t>
      <section anchor="_section-4-1">
        <name>Primitive, definite-length method</name>
        <t>This method applies to simple types and types derived from
simple types by implicit tagging. It requires that the
length of the value be known in advance. The parts of the
BER encoding are as follows:</t>
        <dl>
          <dt>Identifier octets.</dt>
          <dd>
            <t>There are two forms: low tag number (for
tag numbers between 0 and 30) and high tag number (for tag
numbers 31 and greater).</t>
          </dd>
        </dl>
        <ul empty="true">
          <li>
            <dl>
              <dt>Low-tag-number form.</dt>
              <dd>
                <t>One octet. Bits 8 and 7 specify
the class (see Table 2), bit 6 has value "0",
indicating that the encoding is primitive, and
bits 5-1 give the tag number.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <table>
          <name>Class encoding in identifier octets.</name>
          <thead>
            <tr>
              <th align="left">Class</th>
              <th align="left">Bit 8</th>
              <th align="left">Bit 7</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">universal</td>
              <td align="left">0</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">application</td>
              <td align="left">0</td>
              <td align="left">1</td>
            </tr>
            <tr>
              <td align="left">context-specific</td>
              <td align="left">1</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">private</td>
              <td align="left">1</td>
              <td align="left">1</td>
            </tr>
          </tbody>
        </table>
        <ul empty="true">
          <li>
            <dl>
              <dt>High-tag-number form.</dt>
              <dd>
                <t>Two or more octets. First octet
is as in low-tag-number form, except that bits 5-1
all have value "1". Second and following octets
give the tag number, base 128, most significant
digit first, with as few digits as possible, and
with the bit 8 of each octet except the last set
to "1".</t>
              </dd>
            </dl>
          </li>
        </ul>
        <dl>
          <dt>Length octets.</dt>
          <dd>
            <t>There are two forms: short (for lengths
between 0 and 127), and long definite (for lengths between 0
and 2^1008 -1).</t>
          </dd>
        </dl>
        <ul empty="true">
          <li>
            <dl>
              <dt>Short form.</dt>
              <dd>
                <t>One octet. Bit 8 has value "0" and bits 7-1
give the length.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>Long form.</dt>
              <dd>
                <t>Two to 127 octets. Bit 8 of first octet has
value "1" and bits 7-1 give the number of
additional length octets. Second and following
octets give the length, base 256, most significant
digit first.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <dl>
          <dt>Contents octets.</dt>
          <dd>
            <t>These give a concrete representation of the
value (or the value of the underlying type, if the type is
derived by implicit tagging). Details for particular types
are given in <xref target="_section-6"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="_section-4-2">
        <name>Constructed, definite-length method</name>
        <t>This method applies to simple string types, structured
types, types derived simple string types and structured
types by implicit tagging, and types derived from anything
by explicit tagging. It requires that the length of the
value be known in advance. The parts of the BER encoding are
as follows:</t>
        <dl>
          <dt>Identifier octets.</dt>
          <dd>
            <t>As described in <xref target="_section-4-1"/>, except that bit 6 has value "1",
indicating that the encoding is constructed.</t>
          </dd>
          <dt>Length octets.</dt>
          <dd>
            <t>As described in <xref target="_section-4-1"/>.</t>
          </dd>
          <dt>Contents octets.</dt>
          <dd>
            <t>The concatenation of the BER encodings of the components of the value:</t>
          </dd>
        </dl>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>For simple string types and types derived from
them by implicit tagging, the concatenation of the
BER encodings of consecutive substrings of the
value (underlying value for implicit tagging).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>For structured types and types derived from them
by implicit tagging, the concatenation of the BER
encodings of components of the value (underlying
value for implicit tagging).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>For types derived from anything by explicit
tagging, the BER encoding of the underlying value.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Details for particular types are given in <xref target="_section-6"/>.</t>
      </section>
      <section anchor="_section-4-3">
        <name>Constructed, indefinite-length method</name>
        <t>This method applies to simple string types, structured
types, types derived simple string types and structured
types by implicit tagging, and types derived from anything
by explicit tagging. It does not require that the length of
the value be known in advance. The parts of the BER encoding
are as follows:</t>
        <dl>
          <dt>Identifier octets.</dt>
          <dd>
            <t>As described in <xref target="_section-4-2"/>.</t>
          </dd>
          <dt>Length octets.</dt>
          <dd>
            <t>One octet, 80.</t>
          </dd>
          <dt>Contents octets.</dt>
          <dd>
            <t>As described in <xref target="_section-4-2"/>.</t>
          </dd>
          <dt>End-of-contents octets.</dt>
          <dd>
            <t>Two octets, 00 00.</t>
          </dd>
        </dl>
        <t>Since the end-of-contents octets appear where an ordinary
BER encoding might be expected (e.g., in the contents octets
of a sequence value), the 00 and 00 appear as identifier and
length octets, respectively. Thus the end-of-contents octets
is really the primitive, definite-length encoding of a value
with universal class, tag number 0, and length 0.</t>
      </section>
    </section>
    <section anchor="_section-5">
      <name>Distinguished Encoding Rules</name>
      <t>The Distinguished Encoding Rules for ASN.1, abbreviated DER,
are a subset of BER, and give exactly one way to represent
any ASN.1 value as an octet string. DER is intended for
applications in which a unique octet string encoding is
needed, as is the case when a digital signature is computed
on an ASN.1 value. DER is defined in Section 8.7 of X.509 <xref target="X.509"/>.</t>
      <t>DER adds the following restrictions to the rules given in <xref target="_section-4"/>:
      </t>
      <ol spacing="normal" type="1"><li>
          <t>When the length is between 0 and 127, the short
form of length must be used.</t>
        </li>
        <li>
          <t>When the length is 128 or greater, the long form
of length must be used, and the length must be
encoded in the minimum number of octets.</t>
        </li>
        <li>
          <t>For simple string types and implicitly tagged
types derived from simple string types, the
primitive, definite-length method must be
employed.</t>
        </li>
        <li>
          <t>For structured types, implicitly tagged types
derived from structured types, and explicitly
tagged types derived from anything, the
constructed, definite-length method must be
employed.</t>
        </li>
      </ol>
      <t>Other restrictions are defined for particular types (such as
BIT STRING, SEQUENCE, SET, and SET OF), and can be found in
<xref target="_section-6"/>.</t>
    </section>
    <section anchor="_section-6">
      <name>Notation and encodings for some types</name>
      <t>This section gives the notation for some ASN.1 types and
describes how to encode values of those types under both BER
and DER.</t>
      <t>The types described are those presented in <xref target="_section-3"/>. They
are listed alphabetically here.</t>
      <t>Each description includes ASN.1 notation, BER encoding, and
DER encoding. The focus of the encodings is primarily on the
contents octets; the tag and length octets follow Sections 4
and 5. The descriptions also explain where each type is used
in PKCS and related standards. ASN.1 notation is generally
only for types, although for the type OBJECT IDENTIFIER,
value notation is given as well.</t>
      <section anchor="_section-6-1">
        <name>Implicitly tagged types</name>
        <t>An implicitly tagged type is a type derived from another
type by changing the tag of the underlying type.</t>
        <t>Implicit tagging is used for optional SEQUENCE components
with underlying type other than ANY throughout PKCS, and for
the extendedCertificate alternative of PKCS #7's <xref target="PKCS_7"/>
ExtendedCertificateOrCertificate type.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
[[_class_] _number_] IMPLICIT _Type_

_class_ = UNIVERSAL  |  APPLICATION  |  PRIVATE
]]></artwork>
        <t>where _Type_ is a type, _class_ is an optional class name, and
        _number_ is the tag number within the class, a nonnegative
        integer.
        </t>
        <t>In ASN.1 "modules" whose default tagging method is implicit
        tagging, the notation [[_class_] _number_] _Type_ is also
        acceptable, and the keyword IMPLICIT is implied. (See
        <xref target="_section-3-3"/>.) For definitions stated outside a module, the
        explicit inclusion of the keyword IMPLICIT is preferable to
        prevent ambiguity.
        </t>
        <t>If the class name is absent, then the tag is context-specific. 
        Context-specific tags can only appear in a component of a structured or CHOICE type.
        </t>
        <t>Example: PKCS #8's <xref target="PKCS_8"/>PrivateKeyInfo type has an optional
attributes component with an implicit, context-specific tag:</t>
        <sourcecode type="asn.1">
        <![CDATA[
          PrivateKeyInfo ::= SEQUENCE {
            version Version,
            privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,
            privateKey PrivateKey,
            attributes [0] IMPLICIT Attributes OPTIONAL }
        ]]>
        </sourcecode>

        <t>Here the underlying type is Attributes, the class is absent (i.e., context-specific), 
        and the tag number within the class is 0.
        </t>

        <t>BER encoding. Primitive or constructed, depending on the underlying 
           type. Contents octets are as for the BER encoding of the underlying 
           value.
        </t>
        <t>Example: The BER encoding of the attributes component of a PrivateKeyInfo 
        value is as follows:
        </t>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>the identifier octets are 80 if the underlying
Attributes value has a primitive BER encoding and
a0 if the underlying Attributes value has a
constructed BER encoding</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>the length and contents octets are the same as the
length and contents octets of the BER encoding of
the underlying Attributes value</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>DER encoding. Primitive or constructed, depending on the
underlying type. Content octets are of the DER encoding
of the underlying value.</t>
      </section>
      <section anchor="_section-6-2">
        <name>Explicitly tagged types</name>
        <t>Explicit tagging denotes a type derived from another type by
adding an outer tag to the underlying type.</t>
        <t>Explicit tagging is used for optional SEQUENCE components
with underlying type ANY throughout PKCS, and for the
version component of X.509's Certificate type.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
[[_class_] _number_] EXPLICIT _Type_

_class_ = UNIVERSAL  |  APPLICATION  |  PRIVATE
]]></artwork>
        <t>where _Type_ is a type, _class_ is an optional class name, and
_number_ is the tag number within the class, a nonnegative
integer.</t>
        <t>If the class name is absent, then the tag is context-specific. Context-specific tags can only appear in a component of a SEQUENCE, SET or CHOICE type.
        </t>
        <t>In ASN.1 "modules" whose default tagging method is explicit tagging, the notation [[_class_] _number_] _Type_ is also
acceptable, and the keyword EXPLICIT is implied. (See <xref target="_section-3-3"/>.) For definitions stated outside a module, the explicit inclusion of the keyword 
EXPLICIT is preferable to prevent ambiguity.
        </t>
        <t>Example 1: PKCS #7's ContentInfo type has an optional
content component with an explicit, context-specific tag:</t>
        <sourcecode type="asn.1"><![CDATA[
ContentInfo ::= SEQUENCE {
  contentType ContentType,
  content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
]]></sourcecode>
        <t>Here the underlying type is ANY DEFINED BY contentType, the
class is absent (i.e., context-specific), and the tag number
within the class is 0.</t>
        <t>Example 2: X.509's Certificate type has a version component
with an explicit, context-specific tag, where the EXPLICIT
keyword is omitted:</t>
        <sourcecode type="asn.1"><![CDATA[
Certificate ::= ...
  version [0] Version DEFAULT v1988,
   ...
]]></sourcecode>
        <t>The tag is explicit because the default tagging method for
the ASN.1 "module" in X.509 that defines the Certificate
type is explicit tagging.</t>
        <t>BER encoding. Constructed. Contents octets are the BER
encoding of the underlying value.</t>
        <t>Example: the BER encoding of the content component of a
ContentInfo value is as follows:</t>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>identifier octets are a0</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>length octets represent the length of the BER
encoding of the underlying ANY DEFINED BY
contentType value</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>contents octets are the BER encoding of the
underlying ANY DEFINED BY contentType value</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>DER encoding. Constructed. Contents octets are the DER
encoding of the underlying value.</t>
      </section>
      <section anchor="_section-6-3">
        <name>ANY</name>
        <t>The ANY type denotes an arbitrary value of an arbitrary
type, where the arbitrary type is possibly defined in the
registration of an object identifier or associated with an
integer index.</t>
        <t>The ANY type is used for content of a particular content
type in PKCS #7's ContentInfo type, for parameters of a
particular algorithm in X.509's AlgorithmIdentifier type,
and for attribute values in X.501's <xref target="X.501"/>Attribute and
AttributeValueAssertion types. The Attribute type is used by
PKCS #6 <xref target="PKCS_6"/>, #7, #8 <xref target="PKCS_8"/>, #9 <xref target="PKCS_9"/>and #10<xref target="PKCS_10"/>, and the AttributeValueAssertion
type is used in X.501 distinguished names.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
ANY [DEFINED BY _identifier_]
]]></artwork>
        <t>where _identifier_ is an optional identifier.</t>
        <t>In the ANY form, the actual type is indeterminate.</t>
        <t>The ANY DEFINED BY identifier form can only appear in a
component of a SEQUENCE or SET type for which identifier
identifies some other component, and that other component
has type INTEGER or OBJECT IDENTIFIER (or a type derived
from either of those by tagging). In that form, the actual
type is determined by the value of the other component,
either in the registration of the object identifier value,
or in a table of integer values.</t>
        <t>Example: X.509's AlgorithmIdentifier type has a component of
type ANY:</t>
        <sourcecode type="asn.1"><![CDATA[
AlgorithmIdentifier ::= SEQUENCE {
  algorithm OBJECT IDENTIFIER,
  parameters ANY DEFINED BY algorithm OPTIONAL }
]]></sourcecode>
        <t>Here the actual type of the parameter component depends on
the value of the algorithm component. The actual type would
be defined in the registration of object identifier values
for the algorithm component.</t>
        <t>BER encoding. Same as the BER encoding of the actual value.</t>
        <t>Example: The BER encoding of the value of the parameter
component is the BER encoding of the value of the actual
type as defined in the registration of object identifier
values for the algorithm component.</t>
        <t>DER encoding. Same as the DER encoding of the actual value.</t>
      </section>
      <section anchor="_section-6-4">
        <name>BIT STRING</name>
        <t>The BIT STRING type denotes an arbitrary string of bits
(ones and zeroes). A BIT STRING value can have any length,
including zero. This type is a string type.</t>
        <t>The BIT STRING type is used for digital signatures on
extended certificates in PKCS #6's ExtendedCertificate type,
for digital signatures on certificates in X.509's
Certificate type, and for public keys in certificates in
X.509's SubjectPublicKeyInfo type.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
BIT STRING
]]></artwork>
        <t>Example: X.509's SubjectPublicKeyInfo type has a component
of type BIT STRING:</t>
        <sourcecode type="asn.1"><![CDATA[
SubjectPublicKeyInfo ::= SEQUENCE {
  algorithm AlgorithmIdentifier,
  publicKey BIT STRING }
]]></sourcecode>
        <t>BER encoding. Primitive or constructed. In a primitive
encoding, the first contents octet gives the number of bits
by which the length of the bit string is less than the next
multiple of eight (this is called the "number of unused
bits"). The second and following contents octets give the
value of the bit string, converted to an octet string. The
conversion process is as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>The bit string is padded after the last bit with
zero to seven bits of any value to make the length
of the bit string a multiple of eight. If the
length of the bit string is a multiple of eight
already, no padding is done.</t>
          </li>
          <li>
            <t>The padded bit string is divided into octets. The
first eight bits of the padded bit string become
the first octet, bit 8 to bit 1, and so on through
the last eight bits of the padded bit string.</t>
          </li>
        </ol>
        <t>In a constructed encoding, the contents octets give the
concatenation of the BER encodings of consecutive substrings
of the bit string, where each substring except the last has
a length that is a multiple of eight bits.</t>
        <t>Example: The BER encoding of the BIT STRING value "011011100101110111" can be any of the following, among
others, depending on the choice of padding bits, the form of length octets, and whether the encoding is primitive or constructed:
        </t>
        
        <artwork><![CDATA[
03 04 06 6e 5d c0                                       DER encoding

03 04 06 6e 5d e0                               padded with "100000"

03 81 04 06 6e 5d c0                      long form of length octets

23 09                constructed encoding: "0110111001011101" + "11"
 03 03 00 6e 5d
 03 02 06 c0
]]></artwork>

        <t>DER encoding. Primitive. The contents octets are as for a
primitive BER encoding, except that the bit string is padded
with zero-valued bits.</t>
        <t>Example: The DER encoding of the BIT STRING value "011011100101110111" is:
        </t>
        <artwork><![CDATA[
03 04 06 6e 5d c0
]]></artwork>
      </section>
      <section anchor="_section-6-5">
        <name>CHOICE</name>
        <t>The CHOICE type denotes a union of one or more alternatives.</t>
        <t>The CHOICE type is used to represent the union of an
extended certificate and an X.509 certificate in PKCS #7's
ExtendedCertificateOrCertificate type.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
CHOICE {
  [_identifier1_] _Type1_,
  ...,
  [_identifierN_] _TypeN_ }
]]></artwork>
        <t>where _identifier1_ , ..., _identifierN_ are optional, distinct
identifiers for the alternatives, and _Type1_, ..., _TypeN_ are
the types of the alternatives. The identifiers are primarily
for documentation; they do not affect values of the type or
their encodings in any way.</t>
        <t>The types must have distinct tags. This requirement is
typically satisfied with explicit or implicit tagging on
some of the alternatives.</t>
        <t>Example: PKCS #7's ExtendedCertificateOrCertificate type is
a CHOICE type:</t>
        <sourcecode type="asn.1"><![CDATA[
ExtendedCertificateOrCertificate ::= CHOICE {
  certificate Certificate, '--' X.509
  extendedCertificate [0] IMPLICIT ExtendedCertificate }
]]></sourcecode>
        <t>Here the identifiers for the alternatives are certificate
and extendedCertificate, and the types of the alternatives
are Certificate and [0] IMPLICIT ExtendedCertificate.</t>
        <t>BER encoding. Same as the BER encoding of the chosen
alternative. The fact that the alternatives have distinct
tags makes it possible to distinguish between their BER
encodings.</t>
        <t>Example: The identifier octets for the BER encoding are 30 if the chosen alternative 
           is certificate, and a0 if the chosen alternative is extendedCertificate.</t>
        <t>DER encoding. Same as the DER encoding of the chosen alternative.</t>
      </section>
      <section anchor="_section-6-6">
        <name>IA5String</name>
        <t>The IA5String type denotes an arbitrary string of IA5 characters. IA5 stands for 
           International Alphabet 5, which is the same as ASCII. The character set includes 
           non-printing control characters. An IA5String value can have any length, including zero. 
           This type is a string type.</t>
        <t>The IA5String type is used in PKCS #9's electronic-mail address, unstructured-name, 
           and unstructured-address attributes.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[IA5String]]></artwork>
        <t>BER encoding. Primitive or constructed. In a primitive encoding, the contents octets 
           give the characters in the IA5 string, encoded in ASCII. In a constructed encoding, 
           the contents octets give the concatenation of the BER encodings of consecutive substrings 
           of the IA5 string.</t>
        <t>Example: The BER encoding of the IA5String value "test1@rsa.com" can be any of the following, 
           among others, depending on the form of length octets and whether the encoding is primitive or 
           constructed </t>

        <artwork><![CDATA[
16 0d 74 65 73 74 31 40 72 73 61 2e 63 6f 6d     DER encoding

16 81 0d                           long form of length octets
 74 65 73 74 31 40 72 73 61 2e 63 6f 6d

36 13         constructed encoding: "test1" + "@" + "rsa.com"
 16 05 74 65 73 74 31
 16 01 40 
 16 07 72 73 61 2e 63 6f 6d
]]></artwork>

        <t>DER encoding. Primitive. Contents octets are as for a
primitive BER encoding.</t>
        <t>Example: The DER encoding of the IA5String value
"test1@rsa.com" is</t>
        <artwork><![CDATA[
16 0d 74 65 73 74 31 40 72 73 61 2e 63 6f 6d
]]></artwork>
      </section>
      <section anchor="_section-6-7">
        <name>INTEGER</name>
        <t>The INTEGER type denotes an arbitrary integer. INTEGER
values can be positive, negative, or zero, and can have any
magnitude.</t>
        <t>The INTEGER type is used for version numbers throughout
PKCS, cryptographic values such as modulus, exponent, and
primes in PKCS #1's <xref target="PKCS_1"/>RSAPublicKey and RSAPrivateKey types and
PKCS #3's <xref target="PKCS_3"/> DHParameter type, a message-digest iteration count
in PKCS #5's<xref target="PKCS_5"/> PBEParameter type, and version numbers and
serial numbers in X.509's Certificate type.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
INTEGER [{ _identifier1_(_value1_) ... _identifierN_(_valueN_) }]
]]></artwork>
        <t>where _identifier1_, ..., _identifierN_ are optional distinct
identifiers and _value1_, ..., _valueN_ are optional integer
values. The identifiers, when present, are associated with
values of the type.</t>
        <t>Example: X.509's Version type is an INTEGER type with
identified values:</t>
        <artwork><![CDATA[
Version ::= INTEGER { v1988(0) }
]]></artwork>
        <t>The identifier v1988 is associated with the value 0. X.509's
Certificate type uses the identifier v1988 to give a default
value of 0 for the version component:</t>
        <sourcecode type="asn.1"><![CDATA[
Certificate ::= ...
  version Version DEFAULT v1988,
  ...
]]></sourcecode>
        <t>BER encoding. Primitive. Contents octets give the value of
the integer, base 256, in two's complement form, most
significant digit first, with the minimum number of octets.
The value 0 is encoded as a single 00 octet.</t>
        <t>Some example BER encodings (which also happen to be DER
encodings) are given in Table 3.</t>
        <table>
          <name>Example BER encodings of INTEGER values.</name>
          <thead>
            <tr>
              <th align="left">Integer value</th>
              <th align="left">BER encoding</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">02 01 00</td>
            </tr>
            <tr>
              <td align="left">127</td>
              <td align="left">02 01 7F</td>
            </tr>
            <tr>
              <td align="left">128</td>
              <td align="left">02 02 00 80</td>
            </tr>
            <tr>
              <td align="left">256</td>
              <td align="left">02 02 01 00</td>
            </tr>
            <tr>
              <td align="left">-128</td>
              <td align="left">02 01 80</td>
            </tr>
            <tr>
              <td align="left">-129</td>
              <td align="left">02 02 FF 7F</td>
            </tr>
          </tbody>
        </table>
        <t>DER encoding. Primitive. Contents octets are as for a
primitive BER encoding.</t>
      </section>
      <section anchor="_section-6-8">
        <name>NULL</name>
        <t>The NULL type denotes a null value.</t>
        <t>The NULL type is used for algorithm parameters in several
places in PKCS.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
NULL
]]></artwork>
        <t>BER encoding. Primitive. Contents octets are empty.</t>
        <t>Example: The BER encoding of a NULL value can be either of
the following, as well as others, depending on the form of
the length octets:</t>
        <artwork><![CDATA[
05 00

05 81 00
]]></artwork>
        <t>DER encoding. Primitive. Contents octets are empty; the DER
encoding of a NULL value is always 05 00.</t>
      </section>
      <section anchor="_section-6-9">
        <name>OBJECT IDENTIFIER</name>
        <t>The OBJECT IDENTIFIER type denotes an object identifier, a
sequence of integer components that identifies an object
such as an algorithm, an attribute type, or perhaps a
registration authority that defines other object
identifiers. An OBJECT IDENTIFIER value can have any number
of components, and components can generally have any
nonnegative value. This type is a non-string type.</t>
        <t>OBJECT IDENTIFIER values are given meanings by registration
authorities. Each registration authority is responsible for
all sequences of components beginning with a given sequence.
A registration authority typically delegates responsibility
for subsets of the sequences in its domain to other
registration authorities, or for particular types of object.
There are always at least two components.</t>
        <t>The OBJECT IDENTIFIER type is used to identify content in
PKCS #7's ContentInfo type, to identify algorithms in
X.509's AlgorithmIdentifier type, and to identify attributes
in X.501's Attribute and AttributeValueAssertion types. The
Attribute type is used by PKCS #6, #7, #8, #9, and #10, and
the AttributeValueAssertion type is used in X.501
distinguished names. OBJECT IDENTIFIER values are defined
throughout PKCS.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
OBJECT IDENTIFIER
]]></artwork>
        <t>The ASN.1 notation for values of the OBJECT IDENTIFIER type is</t>
        <artwork><![CDATA[
{ [_identifier_] _component1_ ... _componentN_ }

_componentI_ = _identifierI_ | _identifierI_ (_valueI_) | _valueI_
]]></artwork>
        <t>where _identifier_, _identifier1_, ..., _identifierN_ are
identifiers, and _value1_, ..., _valueN_ are optional integer
values.</t>
        <t>The form without identifier is the "complete" value with all
its components; the form with identifier abbreviates the
beginning components with another object identifier value.
The identifiers _identifier1_, ..., _identifierN_ are intended
primarily for documentation, but they must correspond to the
integer value when both are present. These identifiers can
appear without integer values only if they are among a small
set of identifiers defined in X.208.</t>
        <t>Example: The following values both refer to the object
identifier assigned to RSA Data Security, Inc.:</t>
        <artwork><![CDATA[
{ iso(1) member-body(2) 840 113549 }
{ 1 2 840 113549 }
]]></artwork>
        <t>(In this example, which gives ASN.1 value notation, the
object identifier values are decimal, not hexadecimal.)
Table 4 gives some other object identifier values and their
meanings.</t>
        <table>
          <name>Some object identifier values and their meanings.</name>
          <thead>
            <tr>
              <th align="left">Object identifier value</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">{ 1 2 }</td>
              <td align="left">ISO member bodies</td>
            </tr>
            <tr>
              <td align="left">{ 1 2 840 }</td>
              <td align="left">US (ANSI)</td>
            </tr>
            <tr>
              <td align="left">{ 1 2 840 113549 }</td>
              <td align="left">RSA Data Security, Inc.</td>
            </tr>
            <tr>
              <td align="left">{ 1 2 840 113549 1}</td>
              <td align="left">RSA Data Security, Inc. PKCS</td>
            </tr>
            <tr>
              <td align="left">{ 2 5 }</td>
              <td align="left">directory services (X.500)</td>
            </tr>
            <tr>
              <td align="left">{ 2 5 8 }</td>
              <td align="left">directory services-algorithms</td>
            </tr>
          </tbody>
        </table>
        <t>BER encoding. Primitive. Contents octets are as follows,
where value1, ..., valueN denote the integer values of the
components in the complete object identifier:</t>
        <ol spacing="normal" type="1">
          <li>
            <t>The first octet has value 40 * value1 + value2.
(This is unambiguous, since value1 is limited to
values 0, 1, and 2; value2 is limited to the range
0 to 39 when value1 is 0 or 1; and, according to
X.208, n is always at least 2.)</t>
          </li>
          <li>
            <t>The following octets, if any, encode value3, ...,
valueN. Each value is encoded base 128, most
significant digit first, with as few digits as
possible, and the most significant bit of each
octet except the last in the value's encoding set to "1."</t>
          </li>
        </ol>
        <t>Example: The first octet of the BER encoding of RSA Data
Security, Inc.'s object identifier is 40 * 1 + 2 = 42 = (2a base 16).
The encoding of 840 = 6 * 128 + (48 base 16) is 86 48 and the
encoding of 113549 = 6 * 128^2 + (77 base 16) * 128 + (d base 16) is 86 f7
0d. This leads to the following BER encoding:</t>
        <artwork><![CDATA[
06 06 2a 86 48 86 f7 0d
]]></artwork>
        <t>DER encoding. Primitive. Contents octets are as for a
primitive BER encoding.</t>
      </section>
      <section anchor="_section-6-10">
        <name>OCTET STRING</name>
        <t>The OCTET STRING type denotes an arbitrary string of octets
(eight-bit values). An OCTET STRING value can have any
length, including zero. This type is a string type.</t>
        <t>The OCTET STRING type is used for salt values in PKCS #5's
PBEParameter type, for message digests, encrypted message
digests, and encrypted content in PKCS #7, and for private
keys and encrypted private keys in PKCS #8.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
OCTET STRING [SIZE ({_size_ | _size1_ ... _size2_})]
]]></artwork>
        <t>where _size_, _size1_, and _size2_ are optional size constraints.
In the OCTET STRING SIZE (_size_) form, the octet string must
have size octets. In the OCTET STRING SIZE (_size1_ ... _size2_)
form, the octet string must have between _size1_ and _size2_
octets. In the OCTET STRING form, the octet string can have
any size.</t>
        <t>Example: PKCS #5's PBEParameter type has a component of type
OCTET STRING:</t>
        <sourcecode type="asn.1"><![CDATA[
PBEParameter ::= SEQUENCE {
  salt OCTET STRING SIZE(8),
  iterationCount INTEGER }
]]></sourcecode>
        <t>Here the size of the salt component is always eight octets.</t>
        <t>BER encoding. Primitive or constructed. In a primitive
encoding, the contents octets give the value of the octet
string, first octet to last octet. In a constructed
encoding, the contents octets give the concatenation of the
BER encodings of substrings of the OCTET STRING value.</t>
        <t>Example: The BER encoding of the OCTET STRING value 01 23 45
67 89 ab cd ef can be any of the following, among others,
depending on the form of length octets and whether the
encoding is primitive or constructed:</t>

        <artwork><![CDATA[
04 08 01 23 45 67 89 ab cd ef                       DER encoding
   
04 81 08 01 23 45 67 89 ab cd ef      long form of length octets

24 0c                constructed encoding: 01 ... 67 + 89 ... ef
 04 04 01 23 45 67 
 04 04 89 ab cd ef
]]></artwork>

        <t>DER encoding. Primitive. Contents octets are as for a
primitive BER encoding.</t>
        <t>Example: The BER encoding of the OCTET STRING value 01 23 45
67 89 ab cd ef is</t>
        <artwork><![CDATA[
04 08 01 23 45 67 89 ab cd ef
]]></artwork>
      </section>
      <section anchor="_section-6-11">
        <name>PrintableString</name>
        <t>The PrintableString type denotes an arbitrary string of
printable characters from the following character set:</t>
        <artwork><![CDATA[
        A, B, ..., Z
        a, b, ..., z
        0, 1, ..., 9
    (space) ' ( ) + , - . / : = ?
]]></artwork>
        <t>This type is a string type.</t>
        <t>The PrintableString type is used in PKCS #9's challenge-
password and unstructured-address attributes, and in several
X.521 distinguished names attributes.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
PrintableString
]]></artwork>
        <t>BER encoding. Primitive or constructed. In a primitive
encoding, the contents octets give the characters in the
printable string, encoded in ASCII. In a constructed
encoding, the contents octets give the concatenation of the
BER encodings of consecutive substrings of the string.</t>
        <t>Example: The BER encoding of the PrintableString value "Test
User 1" can be any of the following, among others, depending
on the form of length octets and whether the encoding is
primitive or constructed:</t>
        <artwork><![CDATA[
13 0b 54 65 73 74 20 55 73 65 72 20 31              DER encoding 

13 81 0b 54 65 73 74 20 55 73 65 72 20 31
                                      long form of length octets

33 0f                   constructed encoding: "Test " + "User 1"
   13 05 54 65 73 74 20
   13 06 55 73 65 72 20 31
]]></artwork>
        <t>DER encoding. Primitive. Contents octets are as for a
primitive BER encoding.</t>
        <t>Example: The DER encoding of the PrintableString value "Test User 1" is</t>
        <artwork><![CDATA[
13 0b 54 65 73 74 20 55 73 65 72 20 31
]]></artwork>
      </section>
      <section anchor="_section-6-12">
        <name>SEQUENCE</name>
        <t>The SEQUENCE type denotes an ordered collection of one or
more types.</t>
        <t>The SEQUENCE type is used throughout PKCS and related
standards.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
SEQUENCE {
  _[identifier1]_ _Type1_ [{OPTIONAL | DEFAULT _value1_}],
  ...,
  _[identifierN]_ _TypeN_ [{OPTIONAL | DEFAULT _valueN_}] }
]]></artwork>
        <t>where _identifier1_ , ..., _identifierN_ are optional, distinct
identifiers for the components, _Type1_, ..., _TypeN_ are the
types of the components, and _value1_, ..., _valueN_ are optional
default values for the components. The identifiers are
primarily for documentation; they do not affect values of
the type or their encodings in any way.</t>
        <t>The OPTIONAL qualifier indicates that the value of a
component is optional and need not be present in the
sequence. The DEFAULT qualifier also indicates that the
value of a component is optional, and assigns a default
value to the component when the component is absent.</t>
        <t>The types of any consecutive series of components with the
OPTIONAL or DEFAULT qualifier, as well as of any component
immediately following that series, must have distinct tags.
This requirement is typically satisfied with explicit or
implicit tagging on some of the components.</t>
        <t>Example: X.509's Validity type is a SEQUENCE type with two
components:</t>
        <sourcecode type="asn.1"><![CDATA[
Validity ::= SEQUENCE {
  start UTCTime,
  end UTCTime }
]]></sourcecode>
        <t>Here the identifiers for the components are start and end,
and the types of the components are both UTCTime.</t>
        <t>BER encoding. Constructed. Contents octets are the
concatenation of the BER encodings of the values of the
components of the sequence, in order of definition, with the
following rules for components with the OPTIONAL and DEFAULT
qualifiers:</t>
        <ul spacing="normal">
          <li>
            <t>if the value of a component with the OPTIONAL or
DEFAULT qualifier is absent from the sequence,
then the encoding of that component is not
included in the contents octets</t>
          </li>
          <li>
            <t>if the value of a component with the DEFAULT
qualifier is the default value, then the encoding
of that component may or may not be included in
the contents octets</t>
          </li>
        </ul>
        <t>DER encoding. Constructed. Contents octets are the same as
the BER encoding, except that if the value of a component
with the DEFAULT qualifier is the default value, the
encoding of that component is not included in the contents
octets.</t>
      </section>
      <section anchor="_section-6-13">
        <name>SEQUENCE OF</name>
        <t>The SEQUENCE OF type denotes an ordered collection of zero
or more occurrences of a given type.</t>
        <t>The SEQUENCE OF type is used in X.501 distinguished names.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
SEQUENCE OF _Type_
]]></artwork>
        <t>where _Type_ is a type.</t>
        <t>Example: X.501's RDNSequence type consists of zero or more
occurrences of the RelativeDistinguishedName type, most
significant occurrence first:</t>
        <t>RDNSequence ::= SEQUENCE OF RelativeDistinguishedName</t>
        <t>BER encoding. Constructed. Contents octets are the
concatenation of the BER encodings of the values of the
occurrences in the collection, in order of occurrence.</t>
        <t>DER encoding. Constructed. Contents octets are the
concatenation of the DER encodings of the values of the
occurrences in the collection, in order of occurrence.</t>
      </section>
      <section anchor="_section-6-14">
        <name>SET</name>
        <t>The SET type denotes an unordered collection of one or more
types.</t>
        <t>The SET type is not used in PKCS.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
SET {
  _[identifier1]_ _Type1_ [{OPTIONAL | DEFAULT _value1_}],
  ...,
  _[identifierN]_ _TypeN_ [{OPTIONAL | DEFAULT _valueN_}] }
]]></artwork>
        <t>where _identifier1_, ..., _identifierN_ are optional, distinct
identifiers for the components, _Type1_, ..., _TypeN_ are the
types of the components, and _value1_, ..., _valueN_ are
optional default values for the components. The identifiers
are primarily for documentation; they do not affect values
of the type or their encodings in any way.</t>
        <t>The OPTIONAL qualifier indicates that the value of a
component is optional and need not be present in the set.
The DEFAULT qualifier also indicates that the value of a
component is optional, and assigns a default value to the
component when the component is absent.</t>
        <t>The types must have distinct tags. This requirement is
typically satisfied with explicit or implicit tagging on
some of the components.</t>
        <t>BER encoding. Constructed. Contents octets are the
concatenation of the BER encodings of the values of the
components of the set, in any order, with the following
rules for components with the OPTIONAL and DEFAULT
qualifiers:</t>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>if the value of a component with the OPTIONAL or
DEFAULT qualifier is absent from the set, then the
encoding of that component is not included in the
contents octets</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>if the value of a component with the DEFAULT
qualifier is the default value, then the encoding
of that component may or may not be included in
the contents octets</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>DER encoding. Constructed. Contents octets are the same as
for the BER encoding, except that:</t>
        <ul empty="true">
          <li>
            <ol spacing="normal" type="1">
              <li>
                <t>If the value of a component with the DEFAULT
qualifier is the default value, the encoding of
that component is not included.</t>
              </li>
              <li>
                <t>There is an order to the components, namely ascending order by tag.</t>
              </li>
            </ol>
          </li>
        </ul>
      </section>
      <section anchor="_section-6-15">
        <name>SET OF</name>
        <t>The SET OF type denotes an unordered collection of zero or
more occurrences of a given type.</t>
        <t>The SET OF type is used for sets of attributes in PKCS #6,
#7, #8, #9 and #10, for sets of message-digest algorithm
identifiers, signer information, and recipient information
in PKCS #7, and in X.501 distinguished names.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
SET OF Type
]]></artwork>
        <t>where Type is a type.</t>
        <t>Example: X.501's RelativeDistinguishedName type consists of
zero or more occurrences of the AttributeValueAssertion
type, where the order is unimportant:</t>
        <sourcecode type="asn.1"><![CDATA[
RelativeDistinguishedName ::=
  SET OF AttributeValueAssertion
]]></sourcecode>
        <t>BER encoding. Constructed. Contents octets are the
concatenation of the BER encodings of the values of the
occurrences in the collection, in any order.</t>
        <t>DER encoding. Constructed. Contents octets are the same as
for the BER encoding, except that there is an order, namely
ascending lexicographic order of BER encoding. Lexicographic
comparison of two different BER encodings is done as
follows: Logically pad the shorter BER encoding after the
last octet with dummy octets that are smaller in value than
any normal octet. Scan the BER encodings from left to right
until a difference is found. The smaller-valued BER encoding
is the one with the smaller-valued octet at the point of
difference.</t>
      </section>
      <section anchor="_section-6-16">
        <name>T61String</name>
        <t>The T61String type denotes an arbitrary string of T.61
characters. T.61 is an eight-bit extension to the ASCII
character set. Special "escape" sequences specify the
interpretation of subsequent character values as, for
example, Japanese; the initial interpretation is Latin. The
character set includes non-printing control characters. The
T61String type allows only the Latin and Japanese character
interpretations, and implementors' agreements for directory
names exclude control characters <xref target="NIST92"/>. A T61String value
can have any length, including zero. This type is a string
type.</t>
        <t>The T61String type is used in PKCS #9's unstructured-address
and challenge-password attributes, and in several X.521
attributes.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
T61String
]]></artwork>
        <t>BER encoding. Primitive or constructed. In a primitive
encoding, the contents octets give the characters in the
T.61 string, encoded in ASCII. In a constructed encoding,
the contents octets give the concatenation of the BER
encodings of consecutive substrings of the T.61 string.</t>
        <t>Example: The BER encoding of the T61String value "cl'es
publiques" (French for "public keys") can be any of the
following, among others, depending on the form of length
octets and whether the encoding is primitive or constructed:</t>

        <artwork><![CDATA[
14 0f                                              DER encoding
 63 6c c2 65 73 20 70 75 62 6c 69 71 75 65 73

14 81 0f                             long form of length octets
 63 6c c2 65 73 20 70 75 62 6c 69 71 75 65 73

34 15          constructed encoding: "clés" + " " + "publiques"
 14 05 63 6c c2 65 73
 14 01 20
 14 09 70 75 62 6c 69 71 75 65 73
]]></artwork>

        <t>The eight-bit character c2 is a T.61 prefix that adds an
acute accent (') to the next character.</t>
        <t>DER encoding. Primitive. Contents octets are as for a
primitive BER encoding.</t>
        <t>Example: The DER encoding of the T61String value "clés publiques" is
        </t>
        <artwork><![CDATA[
14 0f 63 6c c2 65 73 20 70 75 62 6c 69 71 75 65 73
        ]]></artwork>
      </section>
      <section anchor="_section-6-17">
        <name>UTCTime</name>
        <t>The UTCTime type denotes a "coordinated universal time" or
Greenwich Mean Time (GMT) value. A UTCTime value includes
the local time precise to either minutes or seconds, and an
offset from GMT in hours and minutes. It takes any of the
following forms:</t>
        <artwork><![CDATA[
YYMMDDhhmmZ
YYMMDDhhmm+hh'mm'
YYMMDDhhmm-hh'mm'
YYMMDDhhmmssZ
YYMMDDhhmmss+hh'mm'
YYMMDDhhmmss-hh'mm'
]]></artwork>
        <t>where:</t>
        <ul empty="true">
          <li>
            <t>YY is the least significant two digits of the year (00 to 99)</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>MM is the month (01 to 12)</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>DD is the day (01 to 31)</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>hh is the hour (00 to 23)</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>mm are the minutes (00 to 59)</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>ss are the seconds (00 to 59)</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Z indicates that local time is GMT,
+ indicates that local time is later than GMT, and
- indicates that local time is earlier than GMT</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>hh' is the absolute value of the offset from GMT in hours</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>mm' is the absolute value of the offset from GMT in minutes</t>
          </li>
        </ul>
        <t>This type is a string type.</t>
        <t>The UTCTime type is used for signing times in PKCS #9's
signing-time attribute and for certificate validity periods
in X.509's Validity type.</t>
        <t>ASN.1 notation:</t>
        <artwork><![CDATA[
UTCTime
]]></artwork>
        <t>BER encoding. Primitive or constructed. In a primitive
encoding, the contents octets give the characters in the
string, encoded in ASCII. In a constructed encoding, the
contents octets give the concatenation of the BER encodings
of consecutive substrings of the string. (The constructed
encoding is not particularly interesting, since UTCTime
values are so short, but the constructed encoding is
permitted.)</t>
        <t>Example: The time this sentence was originally written was
4:45:40 p.m. Pacific Daylight Time on May 6, 1991, which can
be represented with either of the following UTCTime values,
among others:</t>
        <artwork><![CDATA[
"910506164540-0700"

"910506234540Z"
]]></artwork>
        <t>These values have the following BER encodings, among others:</t>
        <artwork><![CDATA[
17 0d 39 31 30 35 30 36 32 33 34 35 34 30 5a

17 11 39 31 30 35 30 36 31 36 34 35 34 30 2d 30 37 30 
   30
]]></artwork>
        <t>DER encoding. Primitive. Contents octets are as for a
primitive BER encoding.</t>
      </section>
    </section>
    <section anchor="_section-7">
      <name>An example</name>
      <t>This section gives an example of ASN.1 notation and DER
encoding: the X.501 type Name.</t>
      <section anchor="_section-7-1">
        <name>Abstract notation</name>
        <t>This section gives the ASN.1 notation for the X.501 type
Name.</t>
        <sourcecode type="asn.1"><![CDATA[
Name ::= CHOICE {
  RDNSequence }

RDNSequence ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::=
  SET OF AttributeValueAssertion

AttributeValueAssertion ::= SEQUENCE {
   AttributeType,
   AttributeValue }

AttributeType ::= OBJECT IDENTIFIER

AttributeValue ::= ANY
]]></sourcecode>
        <t>The Name type identifies an object in an X.500 directory.
Name is a CHOICE type consisting of one alternative:
RDNSequence. (Future revisions of X.500 may have other
alternatives.)</t>
        <t>The RDNSequence type gives a path through an X.500 directory
tree starting at the root. RDNSequence is a SEQUENCE OF type
consisting of zero or more occurrences of
RelativeDistinguishedName.</t>
        <t>The RelativeDistinguishedName type gives a unique name to an
object relative to the object superior to it in the
directory tree. RelativeDistinguishedName is a SET OF type
consisting of zero or more occurrences of
AttributeValueAssertion.</t>
        <t>The AttributeValueAssertion type assigns a value to some
attribute of a relative distinguished name, such as country
name or common name. AttributeValueAssertion is a SEQUENCE
type consisting of two components, an AttributeType type and
an AttributeValue type.</t>
        <t>The AttributeType type identifies an attribute by object
identifier. The AttributeValue type gives an arbitrary
attribute value. The actual type of the attribute value is
determined by the attribute type.</t>
      </section>
      <section anchor="_section-7-2">
        <name>DER encoding</name>
        <t>This section gives an example of a DER encoding of a value
of type Name, working from the bottom up.</t>
        <t>The name is that of the Test User 1 from the PKCS examples
<xref target="Kal93"/>. The name is represented by the following path:</t>
        <artwork><![CDATA[
                       (root)
                          |
                   countryName = "US"
                          |
     organizationName = "Example Organization"
                          |
             commonName = "Test User 1"
]]></artwork>
        <t>Each level corresponds to one RelativeDistinguishedName
value, each of which happens for this name to consist of one
AttributeValueAssertion value. The AttributeType value is
before the equals sign, and the AttributeValue value (a
printable string for the given attribute types) is after the
equals sign.</t>
        <t>The countryName, organizationName, and commonUnitName are
attribute types defined in X.520 <xref target="X.520"/>as:</t>
        <sourcecode type="asn.1"><![CDATA[
attributeType OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 4 }

countryName OBJECT IDENTIFIER ::= { attributeType 6 }

organizationName OBJECT IDENTIFIER ::= { attributeType 10 }
  
commonUnitName OBJECT IDENTIFIER ::= { attributeType 3 }
]]></sourcecode>
        <t>Note: joint-iso-ccitt and joint-iso-itu-t are interchangeable for (2).</t>
        <section anchor="_section-7-2-1">
          <name>AttributeType</name>
          <t>The three AttributeType values are OCTET STRING values, so
their DER encoding follows the primitive, definite-length
method:</t>
          <artwork><![CDATA[
06 03 55 04 06       countryName

06 03 55 04 0a  organizationName

06 03 55 04 03        commonName
]]></artwork>
          <t>The identifier octets follow the low-tag form, since the tag
is 6 for OBJECT IDENTIFIER. Bits 8 and 7 have value "0,"
indicating universal class, and bit 6 has value "0,"
indicating that the encoding is primitive. The length octets
follow the short form. The contents octets are the
concatenation of three octet strings derived from
sub-identifiers (in decimal): 40 * 2 + 5 = 85 = (55 base 16); 4; and
6, 10, or 3.</t>
        </section>
        <section anchor="_section-7-2-2">
          <name>AttributeValue</name>
          <t>The three AttributeValue values are PrintableString values,
so their encodings follow the primitive, definite-length
method:</t>
          <artwork><![CDATA[
   13 02 55 53                                 "US"

   13 14                     "Example Organization"
    45 78 61 6d 70 6c 65 20 4f 72 67 61 6e 69 7a 61
    74 69 6f 6e

   13 0b                              "Test User 1"
    54 65 73 74 20 55 73 65 72 20 31
]]></artwork>
          <t>The identifier octets follow the low-tag-number form, since
the tag for PrintableString, 19 (decimal), is between 0 and 30.
Bits 8 and 7 have value "0" since PrintableString is in
the universal class. Bit 6 has value "0" since the encoding
is primitive. The length octets follow the short form, and
the contents octets are the ASCII representation of the
attribute value.</t>
        </section>
        <section anchor="_section-7-2-3">
          <name>AttributeValueAssertion</name>
          <t>The three AttributeValueAssertion values are SEQUENCE
values, so their DER encodings follow the constructed,
definite-length method:</t>
          <artwork><![CDATA[
   30 09                                     countryName = "US"
    06 03 55 04 06
    13 02 55 53

   30 1b              organizationName = "Example Organization"
    06 03 55 04 0a
    13 14 ... 6f 6e

   30 12                             commonName = "Test User 1"
    06 03 55 04 0b
    13 0b ... 20 31
]]></artwork>
          <t>The identifier octets follow the low-tag-number form, since
the tag for SEQUENCE, 16 (decimal), is between 0 and 30.
Bits 8 and 7 have value "0" since SEQUENCE is in the
universal class. Bit 6 has value "1" since the encoding is
constructed. The length octets follow the short form, and
the contents octets are the concatenation of the DER
encodings of the attributeType and attributeValue
components.</t>
        </section>
        <section anchor="_section-7-2-4">
          <name>RelativeDistinguishedName</name>
          <t>The three RelativeDistinguishedName values are SET OF
values, so their DER encodings follow the constructed,
definite-length method:</t>
          <artwork><![CDATA[
   31 0b
    30 09 ... 55 53

   31 1d
    30 1b ... 6f 6e

   31 14
    30 12 ... 20 31
]]></artwork>
          <t>The identifier octets follow the low-tag-number form, since
the tag for SET OF, 17 (decimal), is between 0 and 30. Bits
8 and 7 have value "0" since SET OF is in the universal
class Bit 6 has value "1" since the encoding is constructed.
The lengths octets follow the short form, and the contents
octets are the DER encodings of the respective
AttributeValueAssertion values, since there is only one
value in each set.</t>
        </section>
        <section anchor="_section-7-2-5">
          <name>RDNSequence</name>
          <t>The RDNSequence value is a SEQUENCE OF value, so its DER
encoding follows the constructed, definite-length method:</t>
          <artwork><![CDATA[
   30 42
    31 0b ... 55 53
    31 1d ... 6f 6e
    31 14 ... 20 31
]]></artwork>
          <t>The identifier octets follow the low-tag-number form, since
the tag for SEQUENCE OF, 16 (decimal), is between 0 and 30.
Bits 8 and 7 have value "0" since SEQUENCE OF is in the
universal class. Bit 6 has value "1" since the encoding is
constructed. The lengths octets follow the short form, and
the contents octets are the concatenation of the DER
encodings of the three RelativeDistinguishedName values, in
order of occurrence.</t>
        </section>
        <section anchor="_section-7-2-6">
          <name>Name</name>
          <t>The Name value is a CHOICE value, so its DER encoding is the
same as that of the RDNSequence value:</t>
          <artwork><![CDATA[
   30 42
    31 0b
     30 09
       06 03 55 04 06                attributeType = countryName
       13 02 55 53                         attributeValue = "US"
   31 1d
   30 1b                  
     06 03 55 04 0a             attributeType = organizationName
   13 14                 attributeValue = "Example Organization"                                     
     45 78 61 6d 70 6c 65 20 4f 72 67 61 6e 69 7a 61
     74 69 6f 6e

   31 14
     30 12                      
       06 03 55 04 03             attributeType = commonName 
       13 0b                  attributeValue = "Test User 1"
         54 65 73 74 20 55 73 65 72 20 31
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>No action by IANA is necessary for this document at this time. 
      </t>
    </section>

    <section anchor="security-cons">
      <name>Security Considerations</name>
      <t>Security issues are discussed throughout this memo.
      </t>
    </section>

  </middle>
  <back>

  <!-- <references anchor="sec-normative-references"> -->
  <references>
      <name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
       <front>
        <title>Key words for use in RFCs to Indicate Requirement Levels</title>
        <author fullname="S. Bradner" initials="S." surname="Bradner"/>
        <date month="March" year="1997"/>
        <abstract>
          <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
        </abstract>
       </front>
       <seriesInfo name="BCP" value="14"/>
       <seriesInfo name="RFC" value="2119"/>
       <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
       <front>
        <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
        <author fullname="B. Leiba" initials="B." surname="Leiba"/>
        <date month="May" year="2017"/>
        <abstract>
          <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
        </abstract>
       </front>
       <seriesInfo name="BCP" value="14"/>
       <seriesInfo name="RFC" value="8174"/> 
       <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
  </references>

  <!-- <references anchor="sec-informative-references"> -->
  <references>
      <name>Informative References</name>
      <reference anchor="PKCS_1">
        <front>
          <title>PKCS #1: RSA Encryption Standard.</title>
          <author>
            <organization>RSA Laboratories</organization>
          </author>
          <date year="1993" month="November"/>
        </front>
        <seriesInfo name="Version" value="1.5"/>
      </reference>
      <reference anchor="PKCS_3">
        <front>
          <title>PKCS #3: Diffie-Hellman Key-Agreement Standard</title>
          <author>
            <organization>RSA Laboratories</organization>
          </author>
          <date year="1993" month="November"/>
        </front>
        <seriesInfo name="Version" value="1.4"/>
      </reference>
      <reference anchor="PKCS_5">
        <front>
          <title>PKCS #5: Password-Based Encryption Standard</title>
          <author>
            <organization>RSA Laboratories</organization>
          </author>
          <date year="1993" month="November"/>
        </front>
        <seriesInfo name="Version" value="1.5"/>
      </reference>
      <reference anchor="PKCS_6">
        <front>
          <title>PKCS #6: Extended-Certificate Syntax Standard</title>
          <author>
            <organization>RSA Laboratories</organization>
          </author>
          <date year="1993" month="November"/>
        </front>
        <seriesInfo name="Version" value="1.5"/>
      </reference>
      <reference anchor="PKCS_7">
        <front>
          <title>PKCS #7: Cryptographic Message Syntax Standard</title>
          <author>
            <organization>RSA Laboratories</organization>
          </author>
          <date year="1993" month="November"/>
        </front>
        <seriesInfo name="Version" value="1.5"/>
      </reference>
      <reference anchor="PKCS_8">
        <front>
          <title>PKCS #8: Private-Key Information Syntax Standard</title>
          <author>
            <organization>RSA Laboratories</organization>
          </author>
          <date year="1993" month="November"/>
        </front>
        <seriesInfo name="Version" value="1.2"/>
      </reference>
      <reference anchor="PKCS_9">
        <front>
          <title>PKCS #9: Selected Attribute Types</title>
          <author>
            <organization>RSA Laboratories</organization>
          </author>
          <date year="1993" month="November"/>
        </front>
        <seriesInfo name="Version" value="1.1"/>
      </reference>
      <reference anchor="PKCS_10">
        <front>
          <title>PKCS #10: Certification Request Syntax Standard</title>
          <author>
            <organization>RSA Laboratories</organization>
          </author>
          <date year="1993" month="November"/>
        </front>
        <seriesInfo name="Version" value="1.0"/>
      </reference>
      <reference anchor="X.200">
        <front>
          <title>Reference Model of Open Systems Interconnection for CCITT Applications</title>
          <author>
            <organization>CCITT</organization>
          </author>
          <date year="1984"/>
        </front>
        <seriesInfo name="CCITT Recommendation" value="X.200"/>
      </reference>
      <reference anchor="X.208">
        <front>
          <title>Specification of Abstract Syntax Notation One (ASN.1)</title>
          <author>
            <organization>CCITT</organization>
          </author>
          <date year="1988"/>
        </front>
        <seriesInfo name="CCITT Recommendation" value="X.208"/>
      </reference>
      <reference anchor="X.209">
        <front>
          <title>Specification of Basic Encoding Rules for Abstract Syntax Notation One (ASN.1)</title>
          <author>
            <organization>CCITT</organization>
          </author>
          <date year="1988"/>
        </front>
        <seriesInfo name="CCITT Recommendation" value="X.209"/>
      </reference>
      <reference anchor="X.500">
        <front>
          <title>The Directory: Overview of Concepts, Models and Services</title>
          <author>
            <organization>CCITT</organization>
          </author>
          <date year="1988"/>
        </front>
        <seriesInfo name="CCITT Recommendation" value="X.500"/>
      </reference>
      <reference anchor="X.501">
        <front>
          <title>The Directory - Models</title>
          <author>
            <organization>CCITT</organization>
          </author>
          <date year="1988"/>
        </front>
        <seriesInfo name="CCITT Recommendation" value="X.501"/>
      </reference>
      <reference anchor="X.509">
        <front>
          <title>The Directory - Authentication Framework</title>
          <author>
            <organization>CCITT</organization>
          </author>
          <date year="1988"/>
        </front>
        <seriesInfo name="CCITT Recommendation" value="X.509"/>
      </reference>
      <reference anchor="X.520">
        <front>
          <title>The Directory - Selected Attribute Types</title>
          <author>
            <organization>CCITT</organization>
          </author>
          <date year="1988"/>
        </front>
        <seriesInfo name="CCITT Recommendation" value="X.520"/>
      </reference>
      <reference anchor="Kal93">
        <front>
          <title>Some Examples of the PKCS Standards</title>
          <author initials="B. S." surname="Kaliski Jr." fullname="Burton S. Kaliski Jr.">
            <organization/>
          </author>
          <author>
            <organization>RSA Laboratories</organization>
          </author>
          <date year="1993" month="November"/>
        </front>
      </reference>
      <reference anchor="NIST92">
        <front>
          <title>Stable Implementation Agreements for Open Systems Interconnection Protocols. Part 11 (Directory Services Protocols)</title>
          <author>
            <organization>NIST</organization>
          </author>
          <date year="1992" month="December"/>
        </front>
        <seriesInfo name="NIST SP" value="500-202"/>
      </reference>
  </references>
 
  <?line 1991?>

<section numbered="false" anchor="revisionhisotory">
      <name>Revision History</name>
        <t>June 3, 1991 version</t>
        <ul empty="true">
          <li>
            <t>The June 3, 1991 version is part of the initial public release of PKCS. 
               It was published as NIST/OSI Implementors' Workshop document SEC-SIG-91-17.
            </t>
          </li>
        </ul>
        <t>November 1, 1993 version</t>
        <t>The November 1, 1993 version incorporates several editorial changes, including the addition of a revision history. 
        It is updated to be consistent with the following versions of the PKCS documents:
        </t>
        <ul empty="true">
          <li>
            <t> PKCS #1: RSA Encryption Standard. Version 1.5, November 1993.</t>
            <t> PKCS #3: Diffie-Hellman Key-Agreement Standard. Version 1.4, November 1993.</t>
            <t> PKCS #5: Password-Based Encryption Standard. Version 1.5, November 1993.</t>
            <t> PKCS #6: Extended-Certificate Syntax Standard. Version 1.5, November 1993.</t>
            <t> PKCS #7: Cryptographic Message Syntax Standard. Version 1.5, November 1993.</t>
            <t> PKCS #8: Private-Key Information Syntax Standard. Version 1.2, November 1993.</t>
            <t> PKCS #9: Selected Attribute Types. Version 1.1, November 1993.</t>
            <t> PKCS #10: Certification Request Syntax Standard. Version 1.0, November 1993.</t>
          </li>
        </ul>
            <t> The following substantive changes were made:</t>
        <ul empty="true">
          <li>
            <t> Section 5: Description of T61String type is added.</t>
            <t> Section 6: Names are changed, consistent with other PKCS examples.</t>
          </li>
        </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
zR2bqeRyClJyKW8Y8oaFs25uXaQjDRWLxA0z2KlbIr1SEKUZjNUWfbUvVuzT
FVESNnu5drYLcW7iKxA61w0W0hFJKvjFlwNwcVYuoMrrJ068CB1uKv2VnPa3
JS4j5jfg3rhsaZZvM6k+rIsPK+8/wi0FgJ9WGHjU+Pp1qZu6SYVb7esW/MjB
Nz81Y52GFP8P+Es21C/Mdxfnf3vx5vL0G8rLP/0WPzsdnr++oN+/fXP+t9Ph
C5f5zig5DPaoI3ZuLvfgI9Y4+iedWjOkMDARKJRwpnMbWXIL0oK5wpaNIbf5
7TYuqNqStE0bGmi317sGLZLVtD+HyY3FcvOjQmRc7i619lRqa2Oc3LLaYYB5
mO1LHRs16O32dogdCvuhg05V38YYH4bhOTBhno1wLadMET2rlCIdG3hO2Ryp
LSgHv76jAIkgoO/8WvlcKec5r8SpRYPO3K6w+YXs9b5US8/Uc2c5qGdEhYUw
BpAVA9TcdLwj6xSen2NdYB8gI2F2VAbjRE7AEZbTYWfAX7N7rCvN5+02DfAL
9sVG6Vcq09UWfbF73omGPdqDklYz9DLXhjs5+cLTgfdYLeIdl0i2pZI7+Gzu
Gp263IFvm8+8MlprpT6mN2o6P/bVgT31z19/iwcTjupHdyC/tjE/kcgn37Kj
9t5t++bGdt7Les0V2vF4Hj2llnhAT6xJfRlw0m9bPPG1OIlFJF5LsEzrula9
LyO6/yqTjcOqYYuhJ4o+iK4NfHCBMzU7A1mfsKuG94nAPupbk7g2aant5H65
WIIPXwiNskg400hHJt5PIPDWVksBLPKJBOc0FnwRRiU63T72fcyUbK06K8C1
qt5vgzZna6PNkydtUb+BAMMehUY8rY/3axVejMguj4oSjg72C+WXVUKL2JKF
6gXHgzR1ING/TBxxccT/68WR35GtBnpljLN+gqzUYin/HLKS2/PfWlbSA68l
KwnvMMmJl8otiVkhkAhpjEgjFsa1pBE9UFMUkUFo2Z/7f3fUO5If3KTxnJ+9
eHl+8eLMfPl90P6x8kRrT52aWMAHwDxGvmAqpc+dly/sfgxOWsmPsNEGyRLi
9+Ae6Gw9u3Tu0iSEpADmBFhY3ysFBu5Vr9fT8iJuhMiMuHKn330zNO+wpj1t
F38tCz/0ZMJhtK04u7htPbJOwwwO+hZXW4GlYo+LzXLDDxXIokjrIa33pinW
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

-->

</rfc>

