home *** CD-ROM | disk | FTP | other *** search
/ Internet Core Protocols / Oreilly-InternetCoreProtocols.iso / RFCs / rfc2459.txt < prev    next >
Encoding:
Text File  |  1999-10-14  |  279.0 KB  |  7,228 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                         R. Housley
  8. Request for Comments: 2459                                        SPYRUS
  9. Category: Standards Track                                        W. Ford
  10.                                                                 VeriSign
  11.                                                                  W. Polk
  12.                                                                     NIST
  13.                                                                  D. Solo
  14.                                                                 Citicorp
  15.                                                             January 1999
  16.  
  17.  
  18.                 Internet X.509 Public Key Infrastructure
  19.                       Certificate and CRL Profile
  20.  
  21. Status of this Memo
  22.  
  23.    This document specifies an Internet standards track protocol for the
  24.    Internet community, and requests discussion and suggestions for
  25.    improvements.  Please refer to the current edition of the "Internet
  26.    Official Protocol Standards" (STD 1) for the standardization state
  27.    and status of this protocol.  Distribution of this memo is unlimited.
  28.  
  29. Copyright Notice
  30.  
  31.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  32.  
  33. Abstract
  34.  
  35.    This memo profiles the X.509 v3 certificate and X.509 v2 CRL for use
  36.    in the Internet.  An overview of the approach and model are provided
  37.    as an introduction.  The X.509 v3 certificate format is described in
  38.    detail, with additional information regarding the format and
  39.    semantics of Internet name forms (e.g., IP addresses).  Standard
  40.    certificate extensions are described and one new Internet-specific
  41.    extension is defined.  A required set of certificate extensions is
  42.    specified.  The X.509 v2 CRL format is described and a required
  43.    extension set is defined as well.  An algorithm for X.509 certificate
  44.    path validation is described. Supplemental information is provided
  45.    describing the format of public keys and digital signatures in X.509
  46.    certificates for common Internet public key encryption algorithms
  47.    (i.e., RSA, DSA, and Diffie-Hellman).  ASN.1 modules and examples are
  48.    provided in the appendices.
  49.  
  50.    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  51.    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
  52.    document are to be interpreted as described in RFC 2119.
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Housley, et. al.            Standards Track                     [Page 1]
  59.  
  60. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  61.  
  62.  
  63.    Please send comments on this document to the ietf-pkix@imc.org mail
  64.    list.
  65.  
  66.  
  67.  
  68.                            TTTTaaaabbbblllleeee ooooffff CCCCoooonnnntttteeeennnnttttssss
  69.  
  70.  
  71.  
  72.    1  Introduction ................................................    5
  73.    2  Requirements and Assumptions ................................    6
  74.    2.1  Communication and Topology ................................    6
  75.    2.2  Acceptability Criteria ....................................    7
  76.    2.3  User Expectations .........................................    7
  77.    2.4  Administrator Expectations ................................    7
  78.    3  Overview of Approach ........................................    7
  79.    3.1  X.509 Version 3 Certificate ...............................    9
  80.    3.2  Certification Paths and Trust .............................   10
  81.    3.3  Revocation ................................................   12
  82.    3.4  Operational Protocols .....................................   13
  83.    3.5  Management Protocols ......................................   13
  84.    4  Certificate and Certificate Extensions Profile ..............   15
  85.    4.1  Basic Certificate Fields ..................................   15
  86.    4.1.1  Certificate Fields ......................................   16
  87.    4.1.1.1  tbsCertificate ........................................   16
  88.    4.1.1.2  signatureAlgorithm ....................................   16
  89.    4.1.1.3  signatureValue ........................................   17
  90.    4.1.2  TBSCertificate ..........................................   17
  91.    4.1.2.1  Version ...............................................   17
  92.    4.1.2.2  Serial number .........................................   18
  93.    4.1.2.3  Signature .............................................   18
  94.    4.1.2.4  Issuer ................................................   18
  95.    4.1.2.5  Validity ..............................................   21
  96.    4.1.2.5.1  UTCTime .............................................   22
  97.    4.1.2.5.2  GeneralizedTime .....................................   22
  98.    4.1.2.6  Subject ...............................................   22
  99.    4.1.2.7  Subject Public Key Info ...............................   23
  100.    4.1.2.8  Unique Identifiers ....................................   24
  101.    4.1.2.9 Extensions .............................................   24
  102.    4.2  Certificate Extensions ....................................   24
  103.    4.2.1  Standard Extensions .....................................   25
  104.    4.2.1.1  Authority Key Identifier ..............................   25
  105.    4.2.1.2  Subject Key Identifier ................................   26
  106.    4.2.1.3  Key Usage .............................................   27
  107.    4.2.1.4  Private Key Usage Period ..............................   29
  108.    4.2.1.5  Certificate Policies ..................................   29
  109.    4.2.1.6  Policy Mappings .......................................   31
  110.    4.2.1.7  Subject Alternative Name ..............................   32
  111.  
  112.  
  113.  
  114. Housley, et. al.            Standards Track                     [Page 2]
  115.  
  116. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  117.  
  118.  
  119.    4.2.1.8  Issuer Alternative Name ...............................   34
  120.    4.2.1.9  Subject Directory Attributes ..........................   34
  121.    4.2.1.10  Basic Constraints ....................................   35
  122.    4.2.1.11  Name Constraints .....................................   35
  123.    4.2.1.12  Policy Constraints ...................................   37
  124.    4.2.1.13  Extended key usage field .............................   38
  125.    4.2.1.14  CRL Distribution Points ..............................   39
  126.    4.2.2  Private Internet Extensions .............................   40
  127.    4.2.2.1  Authority Information Access ..........................   41
  128.    5  CRL and CRL Extensions Profile ..............................   42
  129.    5.1  CRL Fields ................................................   43
  130.    5.1.1  CertificateList Fields ..................................   43
  131.    5.1.1.1  tbsCertList ...........................................   44
  132.    5.1.1.2  signatureAlgorithm ....................................   44
  133.    5.1.1.3  signatureValue ........................................   44
  134.    5.1.2  Certificate List "To Be Signed" .........................   44
  135.    5.1.2.1  Version ...............................................   45
  136.    5.1.2.2  Signature .............................................   45
  137.    5.1.2.3  Issuer Name ...........................................   45
  138.    5.1.2.4  This Update ...........................................   45
  139.    5.1.2.5  Next Update ...........................................   45
  140.    5.1.2.6  Revoked Certificates ..................................   46
  141.    5.1.2.7  Extensions ............................................   46
  142.    5.2  CRL Extensions ............................................   46
  143.    5.2.1  Authority Key Identifier ................................   47
  144.    5.2.2  Issuer Alternative Name .................................   47
  145.    5.2.3  CRL Number ..............................................   47
  146.    5.2.4  Delta CRL Indicator .....................................   48
  147.    5.2.5  Issuing Distribution Point ..............................   48
  148.    5.3  CRL Entry Extensions ......................................   49
  149.    5.3.1  Reason Code .............................................   50
  150.    5.3.2  Hold Instruction Code ...................................   50
  151.    5.3.3  Invalidity Date .........................................   51
  152.    5.3.4  Certificate Issuer ......................................   51
  153.    6  Certificate Path Validation .................................   52
  154.    6.1  Basic Path Validation .....................................   52
  155.    6.2  Extending Path Validation .................................   56
  156.    7  Algorithm Support ...........................................   57
  157.    7.1  One-way Hash Functions ....................................   57
  158.    7.1.1  MD2 One-way Hash Function ...............................   57
  159.    7.1.2  MD5 One-way Hash Function ...............................   58
  160.    7.1.3  SHA-1 One-way Hash Function .............................   58
  161.    7.2  Signature Algorithms ......................................   58
  162.    7.2.1  RSA Signature Algorithm .................................   59
  163.    7.2.2  DSA Signature Algorithm .................................   60
  164.    7.3  Subject Public Key Algorithms .............................   60
  165.    7.3.1  RSA Keys ................................................   61
  166.    7.3.2  Diffie-Hellman Key Exchange Key .........................   61
  167.  
  168.  
  169.  
  170. Housley, et. al.            Standards Track                     [Page 3]
  171.  
  172. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  173.  
  174.  
  175.    7.3.3  DSA Signature Keys ......................................   63
  176.    8  References ..................................................   64
  177.    9  Intellectual Property Rights ................................   66
  178.    10  Security Considerations ....................................   67
  179.    Appendix A.  ASN.1 Structures and OIDs .........................   70
  180.    A.1 Explicitly Tagged Module, 1988 Syntax ......................   70
  181.    A.2 Implicitly Tagged Module, 1988 Syntax ......................   84
  182.    Appendix B.  1993 ASN.1 Structures and OIDs ....................   91
  183.    B.1 Explicitly Tagged Module, 1993 Syntax ......................   91
  184.    B.2 Implicitly Tagged Module, 1993 Syntax ......................  108
  185.    Appendix C.  ASN.1 Notes .......................................  116
  186.    Appendix D.  Examples ..........................................  117
  187.    D.1  Certificate ...............................................  117
  188.    D.2  Certificate ...............................................  120
  189.    D.3  End-Entity Certificate Using RSA ..........................  123
  190.    D.4  Certificate Revocation List ...............................  126
  191.    Appendix E.  Authors' Addresses ................................  128
  192.    Appendix F.  Full Copyright Statement ..........................  129
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Housley, et. al.            Standards Track                     [Page 4]
  227.  
  228. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  229.  
  230.  
  231. 1  Introduction
  232.  
  233.    This specification is one part of a family of standards for the X.509
  234.    Public Key Infrastructure (PKI) for the Internet.  This specification
  235.    is a standalone document; implementations of this standard may
  236.    proceed independent from the other parts.
  237.  
  238.    This specification profiles the format and semantics of certificates
  239.    and certificate revocation lists for the Internet PKI.  Procedures
  240.    are described for processing of certification paths in the Internet
  241.    environment.  Encoding rules are provided for popular cryptographic
  242.    algorithms.  Finally, ASN.1 modules are provided in the appendices
  243.    for all data structures defined or referenced.
  244.  
  245.    The specification describes the requirements which inspire the
  246.    creation of this document and the assumptions which affect its scope
  247.    in Section 2.  Section 3 presents an architectural model and
  248.    describes its relationship to previous IETF and ISO/IEC/ITU
  249.    standards.  In particular, this document's relationship with the IETF
  250.    PEM specifications and the ISO/IEC/ITU X.509 documents are described.
  251.  
  252.    The specification profiles the X.509 version 3 certificate in Section
  253.    4, and the X.509 version 2 certificate revocation list (CRL) in
  254.    Section 5. The profiles include the identification of ISO/IEC/ITU and
  255.    ANSI extensions which may be useful in the Internet PKI. The profiles
  256.    are presented in the 1988 Abstract Syntax Notation One (ASN.1) rather
  257.    than the 1994 syntax used in the ISO/IEC/ITU standards.
  258.  
  259.    This specification also includes path validation procedures in
  260.    Section 6.  These procedures are based upon the ISO/IEC/ITU
  261.    definition, but the presentation assumes one or more self-signed
  262.    trusted CA certificates.  Implementations are required to derive the
  263.    same results but are not required to use the specified procedures.
  264.  
  265.    Section 7 of the specification describes procedures for
  266.    identification and encoding of public key materials and digital
  267.    signatures.  Implementations are not required to use any particular
  268.    cryptographic algorithms.  However, conforming implementations which
  269.    use the identified algorithms are required to identify and encode the
  270.    public key materials and digital signatures as described.
  271.  
  272.    Finally, four appendices are provided to aid implementers.  Appendix
  273.    A contains all ASN.1 structures defined or referenced within this
  274.    specification.  As above, the material is presented in the 1988
  275.    Abstract Syntax Notation One (ASN.1) rather than the 1994 syntax.
  276.    Appendix B contains the same information in the 1994 ASN.1 notation
  277.    as a service to implementers using updated toolsets.  However,
  278.    Appendix A takes precedence in case of conflict.  Appendix C contains
  279.  
  280.  
  281.  
  282. Housley, et. al.            Standards Track                     [Page 5]
  283.  
  284. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  285.  
  286.  
  287.    notes on less familiar features of the ASN.1 notation used within
  288.    this specification.  Appendix D contains examples of a conforming
  289.    certificate and a conforming CRL.
  290.  
  291. 2  Requirements and Assumptions
  292.  
  293.    The goal of this specification is to develop a profile to facilitate
  294.    the use of X.509 certificates within Internet applications for those
  295.    communities wishing to make use of X.509 technology. Such
  296.    applications may include WWW, electronic mail, user authentication,
  297.    and IPsec.  In order to relieve some of the obstacles to using X.509
  298.    certificates, this document defines a profile to promote the
  299.    development of certificate management systems; development of
  300.    application tools; and interoperability determined by policy.
  301.  
  302.    Some communities will need to supplement, or possibly replace, this
  303.    profile in order to meet the requirements of specialized application
  304.    domains or environments with additional authorization, assurance, or
  305.    operational requirements.  However, for basic applications, common
  306.    representations of frequently used attributes are defined so that
  307.    application developers can obtain necessary information without
  308.    regard to the issuer of a particular certificate or certificate
  309.    revocation list (CRL).
  310.  
  311.    A certificate user should review the certificate policy generated by
  312.    the certification authority (CA) before relying on the authentication
  313.    or non-repudiation services associated with the public key in a
  314.    particular certificate.  To this end, this standard does not
  315.    prescribe legally binding rules or duties.
  316.  
  317.    As supplemental authorization and attribute management tools emerge,
  318.    such as attribute certificates, it may be appropriate to limit the
  319.    authenticated attributes that are included in a certificate.  These
  320.    other management tools may provide more appropriate methods of
  321.    conveying many authenticated attributes.
  322.  
  323. 2.1  Communication and Topology
  324.  
  325.    The users of certificates will operate in a wide range of
  326.    environments with respect to their communication topology, especially
  327.    users of secure electronic mail.  This profile supports users without
  328.    high bandwidth, real-time IP connectivity, or high connection
  329.    availability.  In addition, the profile allows for the presence of
  330.    firewall or other filtered communication.
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Housley, et. al.            Standards Track                     [Page 6]
  339.  
  340. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  341.  
  342.  
  343.    This profile does not assume the deployment of an X.500 Directory
  344.    system.  The profile does not prohibit the use of an X.500 Directory,
  345.    but other means of distributing certificates and certificate
  346.    revocation lists (CRLs) may be used.
  347.  
  348. 2.2  Acceptability Criteria
  349.  
  350.    The goal of the Internet Public Key Infrastructure (PKI) is to meet
  351.    the needs of deterministic, automated identification, authentication,
  352.    access control, and authorization functions. Support for these
  353.    services determines the attributes contained in the certificate as
  354.    well as the ancillary control information in the certificate such as
  355.    policy data and certification path constraints.
  356.  
  357. 2.3  User Expectations
  358.  
  359.    Users of the Internet PKI are people and processes who use client
  360.    software and are the subjects named in certificates.  These uses
  361.    include readers and writers of electronic mail, the clients for WWW
  362.    browsers, WWW servers, and the key manager for IPsec within a router.
  363.    This profile recognizes the limitations of the platforms these users
  364.    employ and the limitations in sophistication and attentiveness of the
  365.    users themselves.  This manifests itself in minimal user
  366.    configuration responsibility (e.g., trusted CA keys, rules), explicit
  367.    platform usage constraints within the certificate, certification path
  368.    constraints which shield the user from many malicious actions, and
  369.    applications which sensibly automate validation functions.
  370.  
  371. 2.4  Administrator Expectations
  372.  
  373.    As with user expectations, the Internet PKI profile is structured to
  374.    support the individuals who generally operate CAs.  Providing
  375.    administrators with unbounded choices increases the chances that a
  376.    subtle CA administrator mistake will result in broad compromise.
  377.    Also, unbounded choices greatly complicate the software that shall
  378.    process and validate the certificates created by the CA.
  379.  
  380. 3  Overview of Approach
  381.  
  382.    Following is a simplified view of the architectural model assumed by
  383.    the PKIX specifications.
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Housley, et. al.            Standards Track                     [Page 7]
  395.  
  396. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  397.  
  398.  
  399.        +---+
  400.        | C |                       +------------+
  401.        | e | <-------------------->| End entity |
  402.        | r |       Operational     +------------+
  403.        | t |       transactions          ^
  404.        |   |      and management         |  Management
  405.        | / |       transactions          |  transactions
  406.        |   |                             |                PKI users
  407.        | C |                             v
  408.        | R |       -------------------+--+-----------+----------------
  409.        | L |                          ^              ^
  410.        |   |                          |              |  PKI management
  411.        |   |                          v              |      entities
  412.        | R |                       +------+          |
  413.        | e | <---------------------| RA   | <---+    |
  414.        | p |  Publish certificate  +------+     |    |
  415.        | o |                                    |    |
  416.        | s |                                    |    |
  417.        | I |                                    v    v
  418.        | t |                                +------------+
  419.        | o | <------------------------------|     CA     |
  420.        | r |   Publish certificate          +------------+
  421.        | y |   Publish CRL                         ^
  422.        |   |                                       |
  423.        +---+                        Management     |
  424.                                     transactions   |
  425.                                                    v
  426.                                                +------+
  427.                                                |  CA  |
  428.                                                +------+
  429.  
  430.                           Figure 1 - PKI Entities
  431.  
  432.    The components in this model are:
  433.  
  434.    end entity:  user of PKI certificates and/or end user system that
  435.                 is the subject of a certificate;
  436.    CA:          certification authority;
  437.    RA:          registration authority, i.e., an optional system to
  438.                 which a CA delegates certain management functions;
  439.    repository:  a system or collection of distributed systems that
  440.                 store certificates and CRLs and serves as a means of
  441.                 distributing these certificates and CRLs to end
  442.                 entities.
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450. Housley, et. al.            Standards Track                     [Page 8]
  451.  
  452. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  453.  
  454.  
  455. 3.1  X.509 Version 3 Certificate
  456.  
  457.    Users of a public key shall be confident that the associated private
  458.    key is owned by the correct remote subject (person or system) with
  459.    which an encryption or digital signature mechanism will be used.
  460.    This confidence is obtained through the use of public key
  461.    certificates, which are data structures that bind public key values
  462.    to subjects.  The binding is asserted by having a trusted CA
  463.    digitally sign each certificate. The CA may base this assertion upon
  464.    technical means (a.k.a., proof of posession through a challenge-
  465.    response protocol), presentation of the private key, or on an
  466.    assertion by the subject.  A certificate has a limited valid lifetime
  467.    which is indicated in its signed contents.  Because a certificate's
  468.    signature and timeliness can be independently checked by a
  469.    certificate-using client, certificates can be distributed via
  470.    untrusted communications and server systems, and can be cached in
  471.    unsecured storage in certificate-using systems.
  472.  
  473.    ITU-T X.509 (formerly CCITT X.509) or ISO/IEC/ITU 9594-8, which was
  474.    first published in 1988 as part of the X.500 Directory
  475.    recommendations, defines a standard certificate format [X.509]. The
  476.    certificate format in the 1988 standard is called the version 1 (v1)
  477.    format.  When X.500 was revised in 1993, two more fields were added,
  478.    resulting in the version 2 (v2) format. These two fields may be used
  479.    to support directory access control.
  480.  
  481.    The Internet Privacy Enhanced Mail (PEM) RFCs, published in 1993,
  482.    include specifications for a public key infrastructure based on X.509
  483.    v1 certificates [RFC 1422].  The experience gained in attempts to
  484.    deploy RFC 1422 made it clear that the v1 and v2 certificate formats
  485.    are deficient in several respects.  Most importantly, more fields
  486.    were needed to carry information which PEM design and implementation
  487.    experience has proven necessary.  In response to these new
  488.    requirements, ISO/IEC/ITU and ANSI X9 developed the X.509 version 3
  489.    (v3) certificate format.  The v3 format extends the v2 format by
  490.    adding provision for additional extension fields.  Particular
  491.    extension field types may be specified in standards or may be defined
  492.    and registered by any organization or community. In June 1996,
  493.    standardization of the basic v3 format was completed [X.509].
  494.  
  495.    ISO/IEC/ITU and ANSI X9 have also developed standard extensions for
  496.    use in the v3 extensions field [X.509][X9.55].  These extensions can
  497.    convey such data as additional subject identification information,
  498.    key attribute information, policy information, and certification path
  499.    constraints.
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Housley, et. al.            Standards Track                     [Page 9]
  507.  
  508. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  509.  
  510.  
  511.    However, the ISO/IEC/ITU and ANSI X9 standard extensions are very
  512.    broad in their applicability.  In order to develop interoperable
  513.    implementations of X.509 v3 systems for Internet use, it is necessary
  514.    to specify a profile for use of the X.509 v3 extensions tailored for
  515.    the Internet.  It is one goal of this document to specify a profile
  516.    for Internet WWW, electronic mail, and IPsec applications.
  517.    Environments with additional requirements may build on this profile
  518.    or may replace it.
  519.  
  520. 3.2  Certification Paths and Trust
  521.  
  522.    A user of a security service requiring knowledge of a public key
  523.    generally needs to obtain and validate a certificate containing the
  524.    required public key. If the public-key user does not already hold an
  525.    assured copy of the public key of the CA that signed the certificate,
  526.    the CA's name, and related information (such as the validity period
  527.    or name constraints), then it might need an additional certificate to
  528.    obtain that public key.  In general, a chain of multiple certificates
  529.    may be needed, comprising a certificate of the public key owner (the
  530.    end entity) signed by one CA, and zero or more additional
  531.    certificates of CAs signed by other CAs.  Such chains, called
  532.    certification paths, are required because a public key user is only
  533.    initialized with a limited number of assured CA public keys.
  534.  
  535.    There are different ways in which CAs might be configured in order
  536.    for public key users to be able to find certification paths.  For
  537.    PEM, RFC 1422 defined a rigid hierarchical structure of CAs.  There
  538.    are three types of PEM certification authority:
  539.  
  540.       (a)  Internet Policy Registration Authority (IPRA):  This
  541.       authority, operated under the auspices of the Internet Society,
  542.       acts as the root of the PEM certification hierarchy at level 1.
  543.       It issues certificates only for the next level of authorities,
  544.       PCAs.  All certification paths start with the IPRA.
  545.  
  546.       (b)  Policy Certification Authorities (PCAs):  PCAs are at level 2
  547.       of the hierarchy, each PCA being certified by the IPRA.  A PCA
  548.       shall establish and publish a statement of its policy with respect
  549.       to certifying users or subordinate certification authorities.
  550.       Distinct PCAs aim to satisfy different user needs. For example,
  551.       one PCA (an organizational PCA) might support the general
  552.       electronic mail needs of commercial organizations, and another PCA
  553.       (a high-assurance PCA) might have a more stringent policy designed
  554.       for satisfying legally binding digital signature requirements.
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Housley, et. al.            Standards Track                    [Page 10]
  563.  
  564. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  565.  
  566.  
  567.       (c)  Certification Authorities (CAs):  CAs are at level 3 of the
  568.       hierarchy and can also be at lower levels. Those at level 3 are
  569.       certified by PCAs.  CAs represent, for example, particular
  570.       organizations, particular organizational units (e.g., departments,
  571.       groups, sections), or particular geographical areas.
  572.  
  573.    RFC 1422 furthermore has a name subordination rule which requires
  574.    that a CA can only issue certificates for entities whose names are
  575.    subordinate (in the X.500 naming tree) to the name of the CA itself.
  576.    The trust associated with a PEM certification path is implied by the
  577.    PCA name. The name subordination rule ensures that CAs below the PCA
  578.    are sensibly constrained as to the set of subordinate entities they
  579.    can certify (e.g., a CA for an organization can only certify entities
  580.    in that organization's name tree). Certificate user systems are able
  581.    to mechanically check that the name subordination rule has been
  582.    followed.
  583.  
  584.    The RFC 1422 uses the X.509 v1 certificate formats. The limitations
  585.    of X.509 v1 required imposition of several structural restrictions to
  586.    clearly associate policy information or restrict the utility of
  587.    certificates.  These restrictions included:
  588.  
  589.       (a) a pure top-down hierarchy, with all certification paths
  590.       starting from IPRA;
  591.  
  592.       (b) a naming subordination rule restricting the names of a CA's
  593.       subjects; and
  594.  
  595.       (c) use of the PCA concept, which requires knowledge of individual
  596.       PCAs to be built into certificate chain verification logic.
  597.       Knowledge of individual PCAs was required to determine if a chain
  598.       could be accepted.
  599.  
  600.    With X.509 v3, most of the requirements addressed by RFC 1422 can be
  601.    addressed using certificate extensions, without a need to restrict
  602.    the CA structures used.  In particular, the certificate extensions
  603.    relating to certificate policies obviate the need for PCAs and the
  604.    constraint extensions obviate the need for the name subordination
  605.    rule.  As a result, this document supports a more flexible
  606.    architecture, including:
  607.  
  608.       (a) Certification paths may start with a public key of a CA in a
  609.       user's own domain, or with the public key of the top of a
  610.       hierarchy.  Starting with the public key of a CA in a user's own
  611.       domain has certain advantages.  In some environments, the local
  612.       domain is the most trusted.
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Housley, et. al.            Standards Track                    [Page 11]
  619.  
  620. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  621.  
  622.  
  623.       (b)  Name constraints may be imposed through explicit inclusion of
  624.       a name constraints extension in a certificate, but are not
  625.       required.
  626.  
  627.       (c)  Policy extensions and policy mappings replace the PCA
  628.       concept, which permits a greater degree of automation.  The
  629.       application can determine if the certification path is acceptable
  630.       based on the contents of the certificates instead of a priori
  631.       knowledge of PCAs. This permits automation of certificate chain
  632.       processing.
  633.  
  634. 3.3  Revocation
  635.  
  636.    When a certificate is issued, it is expected to be in use for its
  637.    entire validity period.  However, various circumstances may cause a
  638.    certificate to become invalid prior to the expiration of the validity
  639.    period. Such circumstances include change of name, change of
  640.    association between subject and CA (e.g., an employee terminates
  641.    employment with an organization), and compromise or suspected
  642.    compromise of the corresponding private key.  Under such
  643.    circumstances, the CA needs to revoke the certificate.
  644.  
  645.    X.509 defines one method of certificate revocation.  This method
  646.    involves each CA periodically issuing a signed data structure called
  647.    a certificate revocation list (CRL).  A CRL is a time stamped list
  648.    identifying revoked certificates which is signed by a CA and made
  649.    freely available in a public repository.  Each revoked certificate is
  650.    identified in a CRL by its certificate serial number. When a
  651.    certificate-using system uses a certificate (e.g., for verifying a
  652.    remote user's digital signature), that system not only checks the
  653.    certificate signature and validity but also acquires a suitably-
  654.    recent CRL and checks that the certificate serial number is not on
  655.    that CRL.  The meaning of "suitably-recent" may vary with local
  656.    policy, but it usually means the most recently-issued CRL.  A CA
  657.    issues a new CRL on a regular periodic basis (e.g., hourly, daily, or
  658.    weekly).  An entry is added to the CRL as part of the next update
  659.    following notification of revocation. An entry may be removed from
  660.    the CRL after appearing on one regularly scheduled CRL issued beyond
  661.    the revoked certificate's validity period.
  662.  
  663.    An advantage of this revocation method is that CRLs may be
  664.    distributed by exactly the same means as certificates themselves,
  665.    namely, via untrusted communications and server systems.
  666.  
  667.    One limitation of the CRL revocation method, using untrusted
  668.    communications and servers, is that the time granularity of
  669.    revocation is limited to the CRL issue period.  For example, if a
  670.    revocation is reported now, that revocation will not be reliably
  671.  
  672.  
  673.  
  674. Housley, et. al.            Standards Track                    [Page 12]
  675.  
  676. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  677.  
  678.  
  679.    notified to certificate-using systems until the next periodic CRL is
  680.    issued -- this may be up to one hour, one day, or one week depending
  681.    on the frequency that the CA issues CRLs.
  682.  
  683.    As with the X.509 v3 certificate format, in order to facilitate
  684.    interoperable implementations from multiple vendors, the X.509 v2 CRL
  685.    format needs to be profiled for Internet use.  It is one goal of this
  686.    document to specify that profile.  However, this profile does not
  687.    require CAs to issue CRLs. Message formats and protocols supporting
  688.    on-line revocation notification may be defined in other PKIX
  689.    specifications.  On-line methods of revocation notification may be
  690.    applicable in some environments as an alternative to the X.509 CRL.
  691.    On-line revocation checking may significantly reduce the latency
  692.    between a revocation report and the distribution of the information
  693.    to relying parties.  Once the CA accepts the report as authentic and
  694.    valid, any query to the on-line service will correctly reflect the
  695.    certificate validation impacts of the revocation.  However, these
  696.    methods impose new security requirements; the certificate validator
  697.    shall trust the on-line validation service while the repository does
  698.    not need to be trusted.
  699.  
  700. 3.4  Operational Protocols
  701.  
  702.    Operational protocols are required to deliver certificates and CRLs
  703.    (or status information) to certificate using client systems.
  704.    Provision is needed for a variety of different means of certificate
  705.    and CRL delivery, including distribution procedures based on LDAP,
  706.    HTTP, FTP, and X.500.  Operational protocols supporting these
  707.    functions are defined in other PKIX specifications.  These
  708.    specifications may include definitions of message formats and
  709.    procedures for supporting all of the above operational environments,
  710.    including definitions of or references to appropriate MIME content
  711.    types.
  712.  
  713. 3.5  Management Protocols
  714.  
  715.    Management protocols are required to support on-line interactions
  716.    between PKI user and management entities.  For example, a management
  717.    protocol might be used between a CA and a client system with which a
  718.    key pair is associated, or between two CAs which cross-certify each
  719.    other.  The set of functions which potentially need to be supported
  720.    by management protocols include:
  721.  
  722.       (a)  registration:  This is the process whereby a user first makes
  723.       itself known to a CA (directly, or through an RA), prior to that
  724.       CA issuing  a certificate or certificates for that user.
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Housley, et. al.            Standards Track                    [Page 13]
  731.  
  732. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  733.  
  734.  
  735.       (b)  initialization:  Before a client system can operate securely
  736.       it is necessary to install key materials which have the
  737.       appropriate relationship with keys stored elsewhere in the
  738.       infrastructure.  For example, the client needs to be securely
  739.       initialized with the public key and other assured information of
  740.       the trusted CA(s), to be used in validating certificate paths.
  741.       Furthermore, a client typically needs to be initialized with its
  742.       own key pair(s).
  743.  
  744.       (c)  certification:  This  is the process in which a CA issues a
  745.       certificate for a user's public key, and returns that certificate
  746.       to the user's client system and/or posts that certificate in a
  747.       repository.
  748.  
  749.       (d)  key pair recovery:  As an option, user client key materials
  750.       (e.g., a user's private key used for encryption purposes) may be
  751.       backed up by a CA or a key backup system.  If a user needs to
  752.       recover these backed up key materials (e.g., as a result of a
  753.       forgotten password or a lost key chain file), an on-line protocol
  754.       exchange may be needed to support such recovery.
  755.  
  756.       (e)  key pair update:  All key pairs need to be updated regularly,
  757.       i.e., replaced with a new key pair, and new certificates issued.
  758.  
  759.       (f)  revocation request:  An authorized person advises a CA of an
  760.       abnormal situation requiring certificate revocation.
  761.  
  762.       (g)  cross-certification:  Two CAs exchange information used in
  763.       establishing a cross-certificate. A cross-certificate is a
  764.       certificate issued by one CA to another CA which contains a CA
  765.       signature key used for issuing certificates.
  766.  
  767.    Note that on-line protocols are not the only way of implementing the
  768.    above functions.  For all functions there are off-line methods of
  769.    achieving the same result, and this specification does not mandate
  770.    use of on-line protocols.  For example, when hardware tokens are
  771.    used, many of the functions may be achieved as part of the physical
  772.    token delivery.  Furthermore, some of the above functions may be
  773.    combined into one protocol exchange.  In particular, two or more of
  774.    the registration, initialization, and certification functions can be
  775.    combined into one protocol exchange.
  776.  
  777.    The PKIX series of specifications may define a set of standard
  778.    message formats supporting the above functions in future
  779.    specifications.  In that case, the protocols for conveying these
  780.    messages in different environments (e.g., on-line, file transfer, e-
  781.    mail, and WWW) will also be described in those specifications.
  782.  
  783.  
  784.  
  785.  
  786. Housley, et. al.            Standards Track                    [Page 14]
  787.  
  788. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  789.  
  790.  
  791. 4  Certificate and Certificate Extensions Profile
  792.  
  793.    This section presents a profile for public key certificates that will
  794.    foster interoperability and a reusable PKI.  This section is based
  795.    upon the X.509 v3 certificate format and the standard certificate
  796.    extensions defined in [X.509].  The ISO/IEC/ITU documents use the
  797.    1993 version of ASN.1; while this document uses the 1988 ASN.1
  798.    syntax, the encoded certificate and standard extensions are
  799.    equivalent.  This section also defines private extensions required to
  800.    support a PKI for the Internet community.
  801.  
  802.    Certificates may be used in a wide range of applications and
  803.    environments covering a broad spectrum of interoperability goals and
  804.    a broader spectrum of operational and assurance requirements.  The
  805.    goal of this document is to establish a common baseline for generic
  806.    applications requiring broad interoperability and limited special
  807.    purpose requirements.  In particular, the emphasis will be on
  808.    supporting the use of X.509 v3 certificates for informal Internet
  809.    electronic mail, IPsec, and WWW applications.
  810.  
  811. 4.1  Basic Certificate Fields
  812.  
  813.    The X.509 v3 certificate basic syntax is as follows.  For signature
  814.    calculation, the certificate is encoded using the ASN.1 distinguished
  815.    encoding rules (DER) [X.208].  ASN.1 DER encoding is a tag, length,
  816.    value encoding system for each element.
  817.  
  818.    Certificate  ::=  SEQUENCE  {
  819.         tbsCertificate       TBSCertificate,
  820.         signatureAlgorithm   AlgorithmIdentifier,
  821.         signatureValue       BIT STRING  }
  822.  
  823.    TBSCertificate  ::=  SEQUENCE  {
  824.         version         [0]  EXPLICIT Version DEFAULT v1,
  825.         serialNumber         CertificateSerialNumber,
  826.         signature            AlgorithmIdentifier,
  827.         issuer               Name,
  828.         validity             Validity,
  829.         subject              Name,
  830.         subjectPublicKeyInfo SubjectPublicKeyInfo,
  831.         issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
  832.                              -- If present, version shall be v2 or v3
  833.         subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
  834.                              -- If present, version shall be v2 or v3
  835.         extensions      [3]  EXPLICIT Extensions OPTIONAL
  836.                              -- If present, version shall be v3
  837.         }
  838.  
  839.  
  840.  
  841.  
  842. Housley, et. al.            Standards Track                    [Page 15]
  843.  
  844. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  845.  
  846.  
  847.    Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }
  848.  
  849.    CertificateSerialNumber  ::=  INTEGER
  850.  
  851.    Validity ::= SEQUENCE {
  852.         notBefore      Time,
  853.         notAfter       Time }
  854.  
  855.    Time ::= CHOICE {
  856.         utcTime        UTCTime,
  857.         generalTime    GeneralizedTime }
  858.  
  859.    UniqueIdentifier  ::=  BIT STRING
  860.  
  861.    SubjectPublicKeyInfo  ::=  SEQUENCE  {
  862.         algorithm            AlgorithmIdentifier,
  863.         subjectPublicKey     BIT STRING  }
  864.  
  865.    Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension
  866.  
  867.    Extension  ::=  SEQUENCE  {
  868.         extnID      OBJECT IDENTIFIER,
  869.         critical    BOOLEAN DEFAULT FALSE,
  870.         extnValue   OCTET STRING  }
  871.  
  872.    The following items describe the X.509 v3 certificate for use in the
  873.    Internet.
  874.  
  875. 4.1.1  Certificate Fields
  876.  
  877.    The Certificate is a SEQUENCE of three required fields. The fields
  878.    are described in detail in the following subsections.
  879.  
  880. 4.1.1.1  tbsCertificate
  881.  
  882.    The field contains the names of the subject and issuer, a public key
  883.    associated with the subject, a validity period, and other associated
  884.    information.  The fields are described in detail in section 4.1.2;
  885.    the tbscertificate may also include extensions which are described in
  886.    section 4.2.
  887.  
  888. 4.1.1.2  signatureAlgorithm
  889.  
  890.    The signatureAlgorithm field contains the identifier for the
  891.    cryptographic algorithm used by the CA to sign this certificate.
  892.    Section 7.2 lists the supported signature algorithms.
  893.  
  894.    An algorithm identifier is defined by the following ASN.1 structure:
  895.  
  896.  
  897.  
  898. Housley, et. al.            Standards Track                    [Page 16]
  899.  
  900. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  901.  
  902.  
  903.    AlgorithmIdentifier  ::=  SEQUENCE  {
  904.         algorithm               OBJECT IDENTIFIER,
  905.         parameters              ANY DEFINED BY algorithm OPTIONAL  }
  906.  
  907.    The algorithm identifier is used to identify a cryptographic
  908.    algorithm.  The OBJECT IDENTIFIER component identifies the algorithm
  909.    (such as DSA with SHA-1).  The contents of the optional parameters
  910.    field will vary according to the algorithm identified. Section 7.2
  911.    lists the supported algorithms for this specification.
  912.  
  913.    This field MUST contain the same algorithm identifier as the
  914.    signature field in the sequence tbsCertificate (see sec. 4.1.2.3).
  915.  
  916. 4.1.1.3  signatureValue
  917.  
  918.    The signatureValue field contains a digital signature computed upon
  919.    the ASN.1 DER encoded tbsCertificate.  The ASN.1 DER encoded
  920.    tbsCertificate is used as the input to the signature function. This
  921.    signature value is then ASN.1 encoded as a BIT STRING and included in
  922.    the Certificate's signature field. The details of this process are
  923.    specified for each of the supported algorithms in Section 7.2.
  924.  
  925.    By generating this signature, a CA certifies the validity of the
  926.    information in the tbsCertificate field.  In particular, the CA
  927.    certifies the binding between the public key material and the subject
  928.    of the certificate.
  929.  
  930. 4.1.2  TBSCertificate
  931.  
  932.    The sequence TBSCertificate contains information associated with the
  933.    subject of the certificate and the CA who issued it.  Every
  934.    TBSCertificate contains the names of the subject and issuer, a public
  935.    key associated with the subject, a validity period, a version number,
  936.    and a serial number; some may contain optional unique identifier
  937.    fields.  The remainder of this section describes the syntax and
  938.    semantics of these fields.  A TBSCertificate may also include
  939.    extensions.  Extensions for the Internet PKI are described in Section
  940.    4.2.
  941.  
  942. 4.1.2.1  Version
  943.  
  944.    This field describes the version of the encoded certificate.  When
  945.    extensions are used, as expected in this profile, use X.509 version 3
  946.    (value is 2).  If no extensions are present, but a UniqueIdentifier
  947.    is present, use version 2 (value is 1).  If only basic fields are
  948.    present, use version 1 (the value is omitted from the certificate as
  949.    the default value).
  950.  
  951.  
  952.  
  953.  
  954. Housley, et. al.            Standards Track                    [Page 17]
  955.  
  956. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  957.  
  958.  
  959.    Implementations SHOULD be prepared to accept any version certificate.
  960.    At a minimum, conforming implementations MUST recognize version 3
  961.    certificates.
  962.  
  963.    Generation of version 2 certificates is not expected by
  964.    implementations based on this profile.
  965.  
  966. 4.1.2.2  Serial number
  967.  
  968.    The serial number is an integer assigned by the CA to each
  969.    certificate.  It MUST be unique for each certificate issued by a
  970.    given CA (i.e., the issuer name and serial number identify a unique
  971.    certificate).
  972.  
  973. 4.1.2.3  Signature
  974.  
  975.    This field contains the algorithm identifier for the algorithm used
  976.    by the CA to sign the certificate.
  977.  
  978.    This field MUST contain the same algorithm identifier as the
  979.    signatureAlgorithm field in the sequence Certificate (see sec.
  980.    4.1.1.2).  The contents of the optional parameters field will vary
  981.    according to the algorithm identified.  Section 7.2 lists the
  982.    supported signature algorithms.
  983.  
  984. 4.1.2.4  Issuer
  985.  
  986.    The issuer field identifies the entity who has signed and issued the
  987.    certificate.  The issuer field MUST contain a non-empty distinguished
  988.    name (DN).  The issuer field is defined as the X.501 type Name.
  989.    [X.501] Name is defined by the following ASN.1 structures:
  990.  
  991.    Name ::= CHOICE {
  992.      RDNSequence }
  993.  
  994.    RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
  995.  
  996.    RelativeDistinguishedName ::=
  997.      SET OF AttributeTypeAndValue
  998.  
  999.    AttributeTypeAndValue ::= SEQUENCE {
  1000.      type     AttributeType,
  1001.      value    AttributeValue }
  1002.  
  1003.    AttributeType ::= OBJECT IDENTIFIER
  1004.  
  1005.    AttributeValue ::= ANY DEFINED BY AttributeType
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Housley, et. al.            Standards Track                    [Page 18]
  1011.  
  1012. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1013.  
  1014.  
  1015.    DirectoryString ::= CHOICE {
  1016.          teletexString           TeletexString (SIZE (1..MAX)),
  1017.          printableString         PrintableString (SIZE (1..MAX)),
  1018.          universalString         UniversalString (SIZE (1..MAX)),
  1019.          utf8String              UTF8String (SIZE (1.. MAX)),
  1020.          bmpString               BMPString (SIZE (1..MAX)) }
  1021.  
  1022.    The Name describes a hierarchical name composed of attributes, such
  1023.    as country name, and corresponding values, such as US.  The type of
  1024.    the component AttributeValue is determined by the AttributeType; in
  1025.    general it will be a DirectoryString.
  1026.  
  1027.    The DirectoryString type is defined as a choice of PrintableString,
  1028.    TeletexString, BMPString, UTF8String, and UniversalString.  The
  1029.    UTF8String encoding is the preferred encoding, and all certificates
  1030.    issued after December 31, 2003 MUST use the UTF8String encoding of
  1031.    DirectoryString (except as noted below).  Until that date, conforming
  1032.    CAs MUST choose from the following options when creating a
  1033.    distinguished name, including their own:
  1034.  
  1035.       (a) if the character set is sufficient, the string MAY be
  1036.       represented as a PrintableString;
  1037.  
  1038.       (b) failing (a), if the BMPString character set is sufficient the
  1039.       string MAY be represented as a BMPString; and
  1040.  
  1041.       (c) failing (a) and (b), the string MUST be represented as a
  1042.       UTF8String.  If (a) or (b) is satisfied, the CA MAY still choose
  1043.       to represent the string as a UTF8String.
  1044.  
  1045.    Exceptions to the December 31, 2003 UTF8 encoding requirements are as
  1046.    follows:
  1047.  
  1048.       (a) CAs MAY issue "name rollover" certificates to support an
  1049.       orderly migration to UTF8String encoding.  Such certificates would
  1050.       include the CA's UTF8String encoded name as issuer and and the old
  1051.       name encoding as subject, or vice-versa.
  1052.  
  1053.       (b) As stated in section 4.1.2.6, the subject field MUST be
  1054.       populated with a non-empty distinguished name matching the
  1055.       contents of the issuer field in all certificates issued by the
  1056.       subject CA regardless of encoding.
  1057.  
  1058.    The TeletexString and UniversalString are included for backward
  1059.    compatibility, and should not be used for certificates for new
  1060.    subjects.  However, these types may be used in certificates where the
  1061.    name was previously established.  Certificate users SHOULD be
  1062.    prepared to receive certificates with these types.
  1063.  
  1064.  
  1065.  
  1066. Housley, et. al.            Standards Track                    [Page 19]
  1067.  
  1068. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1069.  
  1070.  
  1071.    In addition, many legacy implementations support names encoded in the
  1072.    ISO 8859-1 character set (Latin1String) but tag them as
  1073.    TeletexString.  The Latin1String includes characters used in Western
  1074.    European countries which are not part of the TeletexString charcter
  1075.    set.  Implementations that process TeletexString SHOULD be prepared
  1076.    to handle the entire ISO 8859-1 character set.[ISO 8859-1]
  1077.  
  1078.    As noted above, distinguished names are composed of attributes.  This
  1079.    specification does not restrict the set of attribute types that may
  1080.    appear in names.  However, conforming implementations MUST be
  1081.    prepared to receive certificates with issuer names containing the set
  1082.    of attribute types defined below.  This specification also recommends
  1083.    support for additional attribute types.
  1084.  
  1085.    Standard sets of attributes have been defined in the X.500 series of
  1086.    specifications.[X.520]  Implementations of this specification MUST be
  1087.    prepared to receive the following standard attribute types in issuer
  1088.    names: country, organization, organizational-unit, distinguished name
  1089.    qualifier, state or province name,  and common name (e.g., "Susan
  1090.    Housley").  In addition, implementations of this specification SHOULD
  1091.    be prepared to receive the following standard attribute types in
  1092.    issuer names: locality, title,  surname, given name, initials, and
  1093.    generation qualifier (e.g., "Jr.", "3rd", or "IV").  The syntax and
  1094.    associated object identifiers (OIDs) for these attribute types are
  1095.    provided in the ASN.1 modules in Appendices A and B.
  1096.  
  1097.    In addition, implementations of this specification MUST be prepared
  1098.    to receive the domainComponent attribute, as defined in [RFC 2247].
  1099.    The Domain (Nameserver) System (DNS) provides a hierarchical resource
  1100.    labeling system.  This attribute provides is a convenient mechanism
  1101.    for organizations that wish to use DNs that parallel their DNS names.
  1102.    This is not a replacement for the dNSName component of the
  1103.    alternative name field. Implementations are not required to convert
  1104.    such names into DNS names. The syntax and associated OID for this
  1105.    attribute type is provided in the ASN.1 modules in Appendices A and
  1106.    B.
  1107.  
  1108.    Certificate users MUST be prepared to process the issuer
  1109.    distinguished name and subject distinguished name (see sec. 4.1.2.6)
  1110.    fields to perform name chaining for certification path validation
  1111.    (see section 6). Name chaining is performed by matching the issuer
  1112.    distinguished name in one certificate with the subject name in a CA
  1113.    certificate.
  1114.  
  1115.    This specification requires only a subset of the name comparison
  1116.    functionality specified in the X.500 series of specifications.  The
  1117.    requirements for conforming implementations are as follows:
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Housley, et. al.            Standards Track                    [Page 20]
  1123.  
  1124. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1125.  
  1126.  
  1127.       (a) attribute values encoded in different types (e.g.,
  1128.       PrintableString and BMPString) may be assumed to represent
  1129.       different strings;
  1130.  
  1131.       (b) attribute values in types other than PrintableString are case
  1132.       sensitive (this permits matching of attribute values as binary
  1133.       objects);
  1134.  
  1135.       (c) attribute values in PrintableString are not case sensitive
  1136.       (e.g., "Marianne Swanson" is the same as "MARIANNE SWANSON"); and
  1137.  
  1138.       (d) attribute values in PrintableString are compared after
  1139.       removing leading and trailing white space and converting internal
  1140.       substrings of one or more consecutive white space characters to a
  1141.       single space.
  1142.  
  1143.    These name comparison rules permit a certificate user to validate
  1144.    certificates issued using languages or encodings unfamiliar to the
  1145.    certificate user.
  1146.  
  1147.    In addition, implementations of this specification MAY use these
  1148.    comparison rules to process unfamiliar attribute types for name
  1149.    chaining. This allows implementations to process certificates with
  1150.    unfamiliar attributes in the issuer name.
  1151.  
  1152.    Note that the comparison rules defined in the X.500 series of
  1153.    specifications indicate that the character sets used to encode data
  1154.    in distinguished names are irrelevant.  The characters themselves are
  1155.    compared without regard to encoding. Implementations of the profile
  1156.    are permitted to use the comparison algorithm defined in the X.500
  1157.    series.  Such an implementation will recognize a superset of name
  1158.    matches recognized by the algorithm specified above.
  1159.  
  1160. 4.1.2.5  Validity
  1161.  
  1162.    The certificate validity period is the time interval during which the
  1163.    CA warrants that it will maintain information about the status of the
  1164.    certificate. The field is represented as a SEQUENCE of two dates:
  1165.    the date on which the certificate validity period begins (notBefore)
  1166.    and the date on which the certificate validity period ends
  1167.    (notAfter).  Both notBefore and notAfter may be encoded as UTCTime or
  1168.    GeneralizedTime.
  1169.  
  1170.    CAs conforming to this profile MUST always encode certificate
  1171.    validity dates through the year 2049 as UTCTime; certificate validity
  1172.    dates in 2050 or later MUST be encoded as GeneralizedTime.
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Housley, et. al.            Standards Track                    [Page 21]
  1179.  
  1180. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1181.  
  1182.  
  1183. 4.1.2.5.1  UTCTime
  1184.  
  1185.    The universal time type, UTCTime, is a standard ASN.1 type intended
  1186.    for international applications where local time alone is not
  1187.    adequate.  UTCTime specifies the year through the two low order
  1188.    digits and time is specified to the precision of one minute or one
  1189.    second.  UTCTime includes either Z (for Zulu, or Greenwich Mean Time)
  1190.    or a time differential.
  1191.  
  1192.    For the purposes of this profile, UTCTime values MUST be expressed
  1193.    Greenwich Mean Time (Zulu) and MUST include seconds (i.e., times are
  1194.    YYMMDDHHMMSSZ), even where the number of seconds is zero.  Conforming
  1195.    systems MUST interpret the year field (YY) as follows:
  1196.  
  1197.       Where YY is greater than or equal to 50, the year shall be
  1198.       interpreted as 19YY; and
  1199.  
  1200.       Where YY is less than 50, the year shall be interpreted as 20YY.
  1201.  
  1202. 4.1.2.5.2  GeneralizedTime
  1203.  
  1204.    The generalized time type, GeneralizedTime, is a standard ASN.1 type
  1205.    for variable precision representation of time.  Optionally, the
  1206.    GeneralizedTime field can include a representation of the time
  1207.    differential between local and Greenwich Mean Time.
  1208.  
  1209.    For the purposes of this profile, GeneralizedTime values MUST be
  1210.    expressed Greenwich Mean Time (Zulu) and MUST include seconds (i.e.,
  1211.    times are YYYYMMDDHHMMSSZ), even where the number of seconds is zero.
  1212.    GeneralizedTime values MUST NOT include fractional seconds.
  1213.  
  1214. 4.1.2.6  Subject
  1215.  
  1216.    The subject field identifies the entity associated with the public
  1217.    key stored in the subject public key field.  The subject name may be
  1218.    carried in the subject field and/or the subjectAltName extension.  If
  1219.    the subject is a CA (e.g., the basic constraints extension, as
  1220.    discussed in 4.2.1.10, is present and the value of cA is TRUE,) then
  1221.    the subject field MUST be populated with a non-empty distinguished
  1222.    name matching the contents of the issuer field (see sec. 4.1.2.4) in
  1223.    all certificates issued by the subject CA.  If subject naming
  1224.    information is present only in the subjectAltName extension (e.g., a
  1225.    key bound only to an email address or URI), then the subject name
  1226.    MUST be an empty sequence and the subjectAltName extension MUST be
  1227.    critical.
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Housley, et. al.            Standards Track                    [Page 22]
  1235.  
  1236. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1237.  
  1238.  
  1239.    Where it is non-empty, the subject field MUST contain an X.500
  1240.    distinguished name (DN). The DN MUST be unique for each subject
  1241.    entity certified by the one CA as defined by the issuer name field. A
  1242.    CA may issue more than one certificate with the same DN to the same
  1243.    subject entity.
  1244.  
  1245.    The subject name field is defined as the X.501 type Name.
  1246.    Implementation requirements for this field are those defined for the
  1247.    issuer field (see sec.  4.1.2.4).  When encoding attribute values of
  1248.    type DirectoryString, the encoding rules for the issuer field MUST be
  1249.    implemented.  Implementations of this specification MUST be prepared
  1250.    to receive subject names containing the attribute types required for
  1251.    the issuer field.  Implementations of this specification SHOULD be
  1252.    prepared to receive subject names containing the recommended
  1253.    attribute types for the issuer field.  The syntax and associated
  1254.    object identifiers (OIDs) for these attribute types are provided in
  1255.    the ASN.1 modules in Appendices A and B.  Implementations of this
  1256.    specification MAY use these comparison rules to process unfamiliar
  1257.    attribute types (i.e., for name chaining). This allows
  1258.    implementations to process certificates with unfamiliar attributes in
  1259.    the subject name.
  1260.  
  1261.    In addition, legacy implementations exist where an RFC 822 name is
  1262.    embedded in the subject distinguished name as an EmailAddress
  1263.    attribute.  The attribute value for EmailAddress is of type IA5String
  1264.    to permit inclusion of the character '@', which is not part of the
  1265.    PrintableString character set.  EmailAddress attribute values are not
  1266.    case sensitive (e.g., "fanfeedback@redsox.com" is the same as
  1267.    "FANFEEDBACK@REDSOX.COM").
  1268.  
  1269.    Conforming implementations generating new certificates with
  1270.    electronic mail addresses MUST use the rfc822Name in the subject
  1271.    alternative name field (see sec. 4.2.1.7) to describe such
  1272.    identities.  Simultaneous inclusion of the EmailAddress attribute in
  1273.    the subject distinguished name to support legacy implementations is
  1274.    deprecated but permitted.
  1275.  
  1276. 4.1.2.7  Subject Public Key Info
  1277.  
  1278.    This field is used to carry the public key and identify the algorithm
  1279.    with which the key is used. The algorithm is identified using the
  1280.    AlgorithmIdentifier structure specified in section 4.1.1.2. The
  1281.    object identifiers for the supported algorithms and the methods for
  1282.    encoding the public key materials (public key and parameters) are
  1283.    specified in section 7.3.
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Housley, et. al.            Standards Track                    [Page 23]
  1291.  
  1292. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1293.  
  1294.  
  1295. 4.1.2.8  Unique Identifiers
  1296.  
  1297.    These fields may only appear if the version is 2 or 3 (see sec.
  1298.    4.1.2.1).  The subject and issuer unique identifiers are present in
  1299.    the certificate to handle the possibility of reuse of subject and/or
  1300.    issuer names over time.  This profile recommends that names not be
  1301.    reused for different entities and that Internet certificates not make
  1302.    use of unique identifiers.  CAs conforming to this profile SHOULD NOT
  1303.    generate certificates with unique identifiers.  Applications
  1304.    conforming to this profile SHOULD be capable of parsing unique
  1305.    identifiers and making comparisons.
  1306.  
  1307. 4.1.2.9  Extensions
  1308.  
  1309.    This field may only appear if the version is 3 (see sec. 4.1.2.1).
  1310.    If present, this field is a SEQUENCE of one or more certificate
  1311.    extensions. The format and content of certificate extensions in the
  1312.    Internet PKI is defined in section 4.2.
  1313.  
  1314. 4.2  Standard Certificate Extensions
  1315.  
  1316.    The extensions defined for X.509 v3 certificates provide methods for
  1317.    associating additional attributes with users or public keys and for
  1318.    managing the certification hierarchy.  The X.509 v3 certificate
  1319.    format also allows communities to define private extensions to carry
  1320.    information unique to those communities.  Each extension in a
  1321.    certificate may be designated as critical or non-critical.  A
  1322.    certificate using system MUST reject the certificate if it encounters
  1323.    a critical extension it does not recognize; however, a non-critical
  1324.    extension may be ignored if it is not recognized.  The following
  1325.    sections present recommended extensions used within Internet
  1326.    certificates and standard locations for information.  Communities may
  1327.    elect to use additional extensions; however, caution should be
  1328.    exercised in adopting any critical extensions in certificates which
  1329.    might prevent use in a general context.
  1330.  
  1331.    Each extension includes an OID and an ASN.1 structure.  When an
  1332.    extension appears in a certificate, the OID appears as the field
  1333.    extnID and the corresponding ASN.1 encoded structure is the value of
  1334.    the octet string extnValue.  Only one instance of a particular
  1335.    extension may appear in a particular certificate. For example, a
  1336.    certificate may contain only one authority key identifier extension
  1337.    (see sec. 4.2.1.1).  An extension includes the boolean critical, with
  1338.    a default value of FALSE.  The text for each extension specifies the
  1339.    acceptable values for the critical field.
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346. Housley, et. al.            Standards Track                    [Page 24]
  1347.  
  1348. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1349.  
  1350.  
  1351.    Conforming CAs MUST support key identifiers (see sec. 4.2.1.1 and
  1352.    4.2.1.2), basic constraints (see sec. 4.2.1.10), key usage (see sec.
  1353.    4.2.1.3), and certificate policies (see sec. 4.2.1.5) extensions. If
  1354.    the CA issues certificates with an empty sequence for the subject
  1355.    field, the CA MUST support the subject alternative name extension
  1356.    (see sec. 4.2.1.7).  Support for the remaining extensions is
  1357.    OPTIONAL. Conforming CAs may support extensions that are not
  1358.    identified within this specification; certificate issuers are
  1359.    cautioned that marking such extensions as critical may inhibit
  1360.    interoperability.
  1361.  
  1362.    At a minimum, applications conforming to this profile MUST recognize
  1363.    the extensions which must or may be critical in this specification.
  1364.    These extensions are:  key usage (see sec. 4.2.1.3), certificate
  1365.    policies (see sec. 4.2.1.5), the subject alternative name (see sec.
  1366.    4.2.1.7), basic constraints (see sec. 4.2.1.10), name constraints
  1367.    (see sec. 4.2.1.11), policy constraints (see sec. 4.2.1.12), and
  1368.    extended key usage (see sec. 4.2.1.13).
  1369.  
  1370.    In addition, this profile RECOMMENDS application support for the
  1371.    authority and subject key identifier (see sec. 4.2.1.1 and 4.2.1.2)
  1372.    extensions.
  1373.  
  1374. 4.2.1  Standard Extensions
  1375.  
  1376.    This section identifies standard certificate extensions defined in
  1377.    [X.509] for use in the Internet PKI.  Each extension is associated
  1378.    with an OID defined in [X.509].  These OIDs are members of the id-ce
  1379.    arc, which is defined by the following:
  1380.  
  1381.    id-ce   OBJECT IDENTIFIER ::=  {joint-iso-ccitt(2) ds(5) 29}
  1382.  
  1383. 4.2.1.1  Authority Key Identifier
  1384.  
  1385.    The authority key identifier extension provides a means of
  1386.    identifying the public key corresponding to the private key used to
  1387.    sign a certificate. This extension is used where an issuer has
  1388.    multiple signing keys (either due to multiple concurrent key pairs or
  1389.    due to changeover).  The identification may be based on either the
  1390.    key identifier (the subject key identifier in the issuer's
  1391.    certificate) or on the issuer name and serial number.
  1392.  
  1393.    The keyIdentifier field of the authorityKeyIdentifier extension MUST
  1394.    be included in all certificates generated by conforming CAs to
  1395.    facilitate chain building.  There is one exception; where a CA
  1396.    distributes its public key in the form of a "self-signed"
  1397.    certificate, the authority key identifier may be omitted.  In this
  1398.    case, the subject and authority key identifiers would be identical.
  1399.  
  1400.  
  1401.  
  1402. Housley, et. al.            Standards Track                    [Page 25]
  1403.  
  1404. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1405.  
  1406.  
  1407.    The value of the keyIdentifier field SHOULD be derived from the
  1408.    public key used to verify the certificate's signature or a method
  1409.    that generates unique values.  Two common methods for generating key
  1410.    identifiers from the public key are described in (sec. 4.2.1.2). One
  1411.    common method for generating unique values isdescribed in (sec.
  1412.    4.2.1.2).  Where a key identifier has not been previously
  1413.    established, this specification recommends use of one of these
  1414.    methods for generating keyIdentifiers.
  1415.  
  1416.    This profile recommends support for the key identifier method by all
  1417.    certificate users.
  1418.  
  1419.    This extension MUST NOT be marked critical.
  1420.  
  1421.    id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 35 }
  1422.  
  1423.    AuthorityKeyIdentifier ::= SEQUENCE {
  1424.       keyIdentifier             [0] KeyIdentifier           OPTIONAL,
  1425.       authorityCertIssuer       [1] GeneralNames            OPTIONAL,
  1426.       authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL  }
  1427.  
  1428.    KeyIdentifier ::= OCTET STRING
  1429.  
  1430. 4.2.1.2  Subject Key Identifier
  1431.  
  1432.    The subject key identifier extension provides a means of identifying
  1433.    certificates that contain a particular public key.
  1434.  
  1435.    To facilitate chain building, this extension MUST appear in all con-
  1436.    forming CA certificates, that is, all certificates including the
  1437.    basic constraints extension (see sec. 4.2.1.10) where the value of cA
  1438.    is TRUE.  The value of the subject key identifier MUST be the value
  1439.    placed in the key identifier field of the Authority Key Identifier
  1440.    extension (see sec. 4.2.1.1) of certificates issued by the subject of
  1441.    this certificate.
  1442.  
  1443.    For CA certificates, subject key identifiers SHOULD be derived from
  1444.    the public key or a method that generates unique values.  Two common
  1445.    methods for generating key identifiers from the public key are:
  1446.  
  1447.       (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the
  1448.       value of the BIT STRING subjectPublicKey (excluding the tag,
  1449.       length, and number of unused bits).
  1450.  
  1451.       (2) The keyIdentifier is composed of a four bit type field with
  1452.       the value 0100 followed by the least significant 60 bits of the
  1453.       SHA-1 hash of the value of the BIT STRING subjectPublicKey.
  1454.  
  1455.  
  1456.  
  1457.  
  1458. Housley, et. al.            Standards Track                    [Page 26]
  1459.  
  1460. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1461.  
  1462.  
  1463.    One common method for generating unique values is a monotomically
  1464.    increasing sequence of integers.
  1465.  
  1466.    For end entity certificates, the subject key identifier extension
  1467.    provides a means for identifying certificates containing the
  1468.    particular public key used in an application. Where an end entity has
  1469.    obtained multiple certificates, especially from multiple CAs, the
  1470.    subject key identifier provides a means to quickly identify the set
  1471.    of certificates containing a particular public key. To assist
  1472.    applications in identificiation the appropriate end entity
  1473.    certificate, this extension SHOULD be included in all end entity
  1474.    certificates.
  1475.  
  1476.    For end entity certificates, subject key identifiers SHOULD be
  1477.    derived from the public key.  Two common methods for generating key
  1478.    identifiers from the public key are identifed above.
  1479.  
  1480.    Where a key identifier has not been previously established, this
  1481.    specification recommends use of one of these methods for generating
  1482.    keyIdentifiers.
  1483.  
  1484.    This extension MUST NOT be marked critical.
  1485.  
  1486.    id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 14 }
  1487.  
  1488.    SubjectKeyIdentifier ::= KeyIdentifier
  1489.  
  1490. 4.2.1.3  Key Usage
  1491.  
  1492.    The key usage extension defines the purpose (e.g., encipherment,
  1493.    signature, certificate signing) of the key contained in the
  1494.    certificate.  The usage restriction might be employed when a key that
  1495.    could be used for more than one operation is to be restricted.  For
  1496.    example, when an RSA key should be used only for signing, the
  1497.    digitalSignature and/or nonRepudiation bits would be asserted.
  1498.    Likewise, when an RSA key should be used only for key management, the
  1499.    keyEncipherment bit would be asserted. When used, this extension
  1500.    SHOULD be marked critical.
  1501.  
  1502.       id-ce-keyUsage OBJECT IDENTIFIER ::=  { id-ce 15 }
  1503.  
  1504.       KeyUsage ::= BIT STRING {
  1505.            digitalSignature        (0),
  1506.            nonRepudiation          (1),
  1507.            keyEncipherment         (2),
  1508.            dataEncipherment        (3),
  1509.            keyAgreement            (4),
  1510.            keyCertSign             (5),
  1511.  
  1512.  
  1513.  
  1514. Housley, et. al.            Standards Track                    [Page 27]
  1515.  
  1516. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1517.  
  1518.  
  1519.            cRLSign                 (6),
  1520.            encipherOnly            (7),
  1521.            decipherOnly            (8) }
  1522.  
  1523.  
  1524.    Bits in the KeyUsage type are used as follows:
  1525.  
  1526.       The digitalSignature bit is asserted when the subject public key
  1527.       is used with a digital signature mechanism to support security
  1528.       services other than non-repudiation (bit 1), certificate signing
  1529.       (bit 5), or revocation information signing (bit 6). Digital
  1530.       signature mechanisms are often used for entity authentication and
  1531.       data origin authentication with integrity.
  1532.  
  1533.       The nonRepudiation bit is asserted when the subject public key is
  1534.       used to verify digital signatures used to provide a non-
  1535.       repudiation service which protects against the signing entity
  1536.       falsely denying some action, excluding certificate or CRL signing.
  1537.  
  1538.       The keyEncipherment bit is asserted when the subject public key is
  1539.       used for key transport.  For example, when an RSA key is to be
  1540.       used for key management, then this bit shall asserted.
  1541.  
  1542.       The dataEncipherment bit is asserted when the subject public key
  1543.       is used for enciphering user data, other than cryptographic keys.
  1544.  
  1545.       The keyAgreement bit is asserted when the subject public key is
  1546.       used for key agreement.  For example, when a Diffie-Hellman key is
  1547.       to be used for key management, then this bit shall asserted.
  1548.  
  1549.       The keyCertSign bit is asserted when the subject public key is
  1550.       used for verifying a signature on certificates.  This bit may only
  1551.       be asserted in CA certificates.
  1552.  
  1553.       The cRLSign bit is asserted when the subject public key is used
  1554.       for verifying a signature on revocation information (e.g., a CRL).
  1555.  
  1556.       The meaning of the encipherOnly bit is undefined in the absence of
  1557.       the keyAgreement bit.  When the encipherOnly bit is asserted and
  1558.       the keyAgreement bit is also set, the subject public key may be
  1559.       used only for enciphering data while performing key agreement.
  1560.  
  1561.       The meaning of the decipherOnly bit is undefined in the absence of
  1562.       the keyAgreement bit.  When the decipherOnly bit is asserted and
  1563.       the keyAgreement bit is also set, the subject public key may be
  1564.       used only for deciphering data while performing key agreement.
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570. Housley, et. al.            Standards Track                    [Page 28]
  1571.  
  1572. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1573.  
  1574.  
  1575.    This profile does not restrict the combinations of bits that may be
  1576.    set in an instantiation of the keyUsage extension.  However,
  1577.    appropriate values for keyUsage extensions for particular algorithms
  1578.    are specified in section 7.3.
  1579.  
  1580. 4.2.1.4  Private Key Usage Period
  1581.  
  1582.    This profile recommends against the use of this extension.  CAs
  1583.    conforming to this profile MUST NOT generate certificates with
  1584.    critical private key usage period extensions.
  1585.  
  1586.    The private key usage period extension allows the certificate issuer
  1587.    to specify a different validity period for the private key than the
  1588.    certificate. This extension is intended for use with digital
  1589.    signature keys.  This extension consists of two optional components,
  1590.    notBefore and notAfter.  The private key associated with the
  1591.    certificate should not be used to sign objects before or after the
  1592.    times specified by the two components, respectively. CAs conforming
  1593.    to this profile MUST NOT generate certificates with private key usage
  1594.    period extensions unless at least one of the two components is
  1595.    present.
  1596.  
  1597.    Where used, notBefore and notAfter are represented as GeneralizedTime
  1598.    and MUST be specified and interpreted as defined in section
  1599.    4.1.2.5.2.
  1600.  
  1601.    id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::=  { id-ce 16 }
  1602.  
  1603.    PrivateKeyUsagePeriod ::= SEQUENCE {
  1604.         notBefore       [0]     GeneralizedTime OPTIONAL,
  1605.         notAfter        [1]     GeneralizedTime OPTIONAL }
  1606.  
  1607. 4.2.1.5  Certificate Policies
  1608.  
  1609.    The certificate policies extension contains a sequence of one or more
  1610.    policy information terms, each of which consists of an object
  1611.    identifier (OID) and optional qualifiers.  These policy information
  1612.    terms indicate the policy under which the certificate has been issued
  1613.    and the purposes for which the certificate may be used.  Optional
  1614.    qualifiers, which may be present, are not expected to change the
  1615.    definition of the policy.
  1616.  
  1617.    Applications with specific policy requirements are expected to have a
  1618.    list of those policies which they will accept and to compare the
  1619.    policy OIDs in the certificate to that list.  If this extension is
  1620.    critical, the path validation software MUST be able to interpret this
  1621.    extension (including the optional qualifier), or MUST reject the
  1622.    certificate.
  1623.  
  1624.  
  1625.  
  1626. Housley, et. al.            Standards Track                    [Page 29]
  1627.  
  1628. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1629.  
  1630.  
  1631.    To promote interoperability, this profile RECOMMENDS that policy
  1632.    information terms consist of only an OID.  Where an OID alone is
  1633.    insufficient, this profile strongly recommends that use of qualifiers
  1634.    be limited to those identified in this section.
  1635.  
  1636.    This specification defines two policy qualifier types for use by
  1637.    certificate policy writers and certificate issuers. The qualifier
  1638.    types are the CPS Pointer and User Notice qualifiers.
  1639.  
  1640.    The CPS Pointer qualifier contains a pointer to a Certification
  1641.    Practice Statement (CPS) published by the CA.  The pointer is in the
  1642.    form of a URI.
  1643.  
  1644.    User notice is intended for display to a relying party when a
  1645.    certificate is used.  The application software SHOULD display all
  1646.    user notices in all certificates of the certification path used,
  1647.    except that if a notice is duplicated only one copy need be
  1648.    displayed.  To prevent such duplication, this qualifier SHOULD only
  1649.    be present in end-entity certificates and CA certificates issued to
  1650.    other organizations.
  1651.  
  1652.    The user notice has two optional fields: the noticeRef field and the
  1653.    explicitText field.
  1654.  
  1655.       The noticeRef field, if used, names an organization and
  1656.       identifies, by number, a particular textual statement prepared by
  1657.       that organization.  For example, it might identify the
  1658.       organization "CertsRUs" and notice number 1.  In a typical
  1659.       implementation, the application software will have a notice file
  1660.       containing the current set of notices for CertsRUs; the
  1661.       application will extract the notice text from the file and display
  1662.       it.  Messages may be multilingual, allowing the software to select
  1663.       the particular language message for its own environment.
  1664.  
  1665.       An explicitText field includes the textual statement directly in
  1666.       the certificate.  The explicitText field is a string with a
  1667.       maximum size of 200 characters.
  1668.  
  1669.    If both the noticeRef and explicitText options are included in the
  1670.    one qualifier and if the application software can locate the notice
  1671.    text indicated by the noticeRef option then that text should be
  1672.    displayed; otherwise, the explicitText string should be displayed.
  1673.  
  1674.    id-ce-certificatePolicies OBJECT IDENTIFIER ::=  { id-ce 32 }
  1675.  
  1676.    certificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682. Housley, et. al.            Standards Track                    [Page 30]
  1683.  
  1684. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1685.  
  1686.  
  1687.    PolicyInformation ::= SEQUENCE {
  1688.         policyIdentifier   CertPolicyId,
  1689.         policyQualifiers   SEQUENCE SIZE (1..MAX) OF
  1690.                                 PolicyQualifierInfo OPTIONAL }
  1691.  
  1692.    CertPolicyId ::= OBJECT IDENTIFIER
  1693.  
  1694.    PolicyQualifierInfo ::= SEQUENCE {
  1695.         policyQualifierId  PolicyQualifierId,
  1696.         qualifier          ANY DEFINED BY policyQualifierId }
  1697.  
  1698.    -- policyQualifierIds for Internet policy qualifiers
  1699.  
  1700.    id-qt          OBJECT IDENTIFIER ::=  { id-pkix 2 }
  1701.    id-qt-cps      OBJECT IDENTIFIER ::=  { id-qt 1 }
  1702.    id-qt-unotice  OBJECT IDENTIFIER ::=  { id-qt 2 }
  1703.  
  1704.    PolicyQualifierId ::=
  1705.         OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
  1706.  
  1707.    Qualifier ::= CHOICE {
  1708.         cPSuri           CPSuri,
  1709.         userNotice       UserNotice }
  1710.  
  1711.    CPSuri ::= IA5String
  1712.  
  1713.    UserNotice ::= SEQUENCE {
  1714.         noticeRef        NoticeReference OPTIONAL,
  1715.         explicitText     DisplayText OPTIONAL}
  1716.  
  1717.    NoticeReference ::= SEQUENCE {
  1718.         organization     DisplayText,
  1719.         noticeNumbers    SEQUENCE OF INTEGER }
  1720.  
  1721.    DisplayText ::= CHOICE {
  1722.         visibleString    VisibleString  (SIZE (1..200)),
  1723.         bmpString        BMPString      (SIZE (1..200)),
  1724.         utf8String       UTF8String     (SIZE (1..200)) }
  1725.  
  1726. 4.2.1.6  Policy Mappings
  1727.  
  1728.    This extension is used in CA certificates.  It lists one or more
  1729.    pairs of OIDs; each pair includes an issuerDomainPolicy and a
  1730.    subjectDomainPolicy. The pairing indicates the issuing CA considers
  1731.    its issuerDomainPolicy equivalent to the subject CA's
  1732.    subjectDomainPolicy.
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738. Housley, et. al.            Standards Track                    [Page 31]
  1739.  
  1740. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1741.  
  1742.  
  1743.    The issuing CA's users may accept an issuerDomainPolicy for certain
  1744.    applications. The policy mapping tells the issuing CA's users which
  1745.    policies associated with the subject CA are comparable to the policy
  1746.    they accept.
  1747.  
  1748.    This extension may be supported by CAs and/or applications, and it
  1749.    MUST be non-critical.
  1750.  
  1751.    id-ce-policyMappings OBJECT IDENTIFIER ::=  { id-ce 33 }
  1752.  
  1753.    PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
  1754.         issuerDomainPolicy      CertPolicyId,
  1755.         subjectDomainPolicy     CertPolicyId }
  1756.  
  1757. 4.2.1.7  Subject Alternative Name
  1758.  
  1759.    The subject alternative names extension allows additional identities
  1760.    to be bound to the subject of the certificate.  Defined options
  1761.    include an Internet electronic mail address, a DNS name, an IP
  1762.    address, and a uniform resource identifier (URI).  Other options
  1763.    exist, including completely local definitions.  Multiple name forms,
  1764.    and multiple instances of each name form, may be included.  Whenever
  1765.    such identities are to be bound into a certificate, the subject
  1766.    alternative name (or issuer alternative name) extension MUST be used.
  1767.  
  1768.    Because the subject alternative name is considered to be
  1769.    definitiviely bound to the public key, all parts of the subject
  1770.    alternative name MUST be verified by the CA.
  1771.  
  1772.    Further, if the only subject identity included in the certificate is
  1773.    an alternative name form (e.g., an electronic mail address), then the
  1774.    subject distinguished name MUST be empty (an empty sequence), and the
  1775.    subjectAltName extension MUST be present. If the subject field
  1776.    contains an empty sequence, the subjectAltName extension MUST be
  1777.    marked critical.
  1778.  
  1779.    When the subjectAltName extension contains an Internet mail address,
  1780.    the address MUST be included as an rfc822Name. The format of an
  1781.    rfc822Name is an "addr-spec" as defined in RFC 822 [RFC 822]. An
  1782.    addr-spec has the form "local-part@domain". Note that an addr-spec
  1783.    has no phrase (such as a common name) before it, has no comment (text
  1784.    surrounded in parentheses) after it, and is not surrounded by "<" and
  1785.    ">". Note that while upper and lower case letters are allowed in an
  1786.    RFC 822 addr-spec, no significance is attached to the case.
  1787.  
  1788.    When the subjectAltName extension contains a iPAddress, the address
  1789.    MUST be stored in the octet string in "network byte order," as
  1790.    specified in RFC 791 [RFC 791]. The least significant bit (LSB) of
  1791.  
  1792.  
  1793.  
  1794. Housley, et. al.            Standards Track                    [Page 32]
  1795.  
  1796. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1797.  
  1798.  
  1799.    each octet is the LSB of the corresponding byte in the network
  1800.    address. For IP Version 4, as specified in RFC 791, the octet string
  1801.    MUST contain exactly four octets.  For IP Version 6, as specified in
  1802.    RFC 1883, the octet string MUST contain exactly sixteen octets [RFC
  1803.    1883].
  1804.  
  1805.    When the subjectAltName extension contains a domain name service
  1806.    label, the domain name MUST be stored in the dNSName (an IA5String).
  1807.    The name MUST be in the "preferred name syntax," as specified by RFC
  1808.    1034 [RFC 1034]. Note that while upper and lower case letters are
  1809.    allowed in domain names, no signifigance is attached to the case.  In
  1810.    addition, while the string " " is a legal domain name, subjectAltName
  1811.    extensions with a dNSName " " are not permitted.  Finally, the use of
  1812.    the DNS representation for Internet mail addresses (wpolk.nist.gov
  1813.    instead of wpolk@nist.gov) is not permitted; such identities are to
  1814.    be encoded as rfc822Name.
  1815.  
  1816.    When the subjectAltName extension contains a URI, the name MUST be
  1817.    stored in the uniformResourceIdentifier (an IA5String). The name MUST
  1818.    be a non-relative URL, and MUST follow the URL syntax and encoding
  1819.    rules specified in [RFC 1738].  The name must include both a scheme
  1820.    (e.g., "http" or "ftp") and a scheme-specific-part.  The scheme-
  1821.    specific-part must include a fully qualified domain name or IP
  1822.    address as the host.
  1823.  
  1824.    As specified in [RFC 1738], the scheme name is not case-sensitive
  1825.    (e.g., "http" is equivalent to "HTTP").  The host part is also not
  1826.    case-sensitive, but other components of the scheme-specific-part may
  1827.    be case-sensitive. When comparing URIs, conforming implementations
  1828.    MUST compare the scheme and host without regard to case, but assume
  1829.    the remainder of the scheme-specific-part is case sensitive.
  1830.  
  1831.    Subject alternative names may be constrained in the same manner as
  1832.    subject distinguished names using the name constraints extension as
  1833.    described in section 4.2.1.11.
  1834.  
  1835.    If the subjectAltName extension is present, the sequence MUST contain
  1836.    at least one entry.  Unlike the subject field, conforming CAs MUST
  1837.    NOT issue certificates with subjectAltNames containing empty
  1838.    GeneralName fields. For example, an rfc822Name is represented as an
  1839.    IA5String. While an empty string is a valid IA5String, such an
  1840.    rfc822Name is not permitted by this profile.  The behavior of clients
  1841.    that encounter such a certificate when processing a certificication
  1842.    path is not defined by this profile.
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850. Housley, et. al.            Standards Track                    [Page 33]
  1851.  
  1852. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1853.  
  1854.  
  1855.    Finally, the semantics of subject alternative names that include
  1856.    wildcard characters (e.g., as a placeholder for a set of names) are
  1857.    not addressed by this specification.  Applications with specific
  1858.    requirements may use such names but shall define the semantics.
  1859.  
  1860.  
  1861.       id-ce-subjectAltName OBJECT IDENTIFIER ::=  { id-ce 17 }
  1862.  
  1863.       SubjectAltName ::= GeneralNames
  1864.  
  1865.       GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
  1866.  
  1867.       GeneralName ::= CHOICE {
  1868.            otherName                       [0]     OtherName,
  1869.            rfc822Name                      [1]     IA5String,
  1870.            dNSName                         [2]     IA5String,
  1871.            x400Address                     [3]     ORAddress,
  1872.            directoryName                   [4]     Name,
  1873.            ediPartyName                    [5]     EDIPartyName,
  1874.            uniformResourceIdentifier       [6]     IA5String,
  1875.            iPAddress                       [7]     OCTET STRING,
  1876.            registeredID                    [8]     OBJECT IDENTIFIER}
  1877.  
  1878.       OtherName ::= SEQUENCE {
  1879.            type-id    OBJECT IDENTIFIER,
  1880.            value      [0] EXPLICIT ANY DEFINED BY type-id }
  1881.  
  1882.       EDIPartyName ::= SEQUENCE {
  1883.            nameAssigner            [0]     DirectoryString OPTIONAL,
  1884.            partyName               [1]     DirectoryString }
  1885.  
  1886. 4.2.1.8  Issuer Alternative Names
  1887.  
  1888.    As with 4.2.1.7, this extension is used to associate Internet style
  1889.    identities with the certificate issuer. Issuer alternative names MUST
  1890.    be encoded as in 4.2.1.7.
  1891.  
  1892.    Where present, this extension SHOULD NOT be marked critical.
  1893.  
  1894.       id-ce-issuerAltName OBJECT IDENTIFIER ::=  { id-ce 18 }
  1895.  
  1896.       IssuerAltName ::= GeneralNames
  1897.  
  1898. 4.2.1.9  Subject Directory Attributes
  1899.  
  1900.    The subject directory attributes extension is not recommended as an
  1901.    essential part of this profile, but it may be used in local
  1902.    environments.  This extension MUST be non-critical.
  1903.  
  1904.  
  1905.  
  1906. Housley, et. al.            Standards Track                    [Page 34]
  1907.  
  1908. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1909.  
  1910.  
  1911.    id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::=  { id-ce 9 }
  1912.  
  1913.    SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
  1914.  
  1915. 4.2.1.10  Basic Constraints
  1916.  
  1917.    The basic constraints extension identifies whether the subject of the
  1918.    certificate is a CA and how deep a certification path may exist
  1919.    through that CA.
  1920.  
  1921.    The pathLenConstraint field is meaningful only if cA is set to TRUE.
  1922.    In this case, it gives the maximum number of CA certificates that may
  1923.    follow this certificate in a certification path. A value of zero
  1924.    indicates that only an end-entity certificate may follow in the path.
  1925.    Where it appears, the pathLenConstraint field MUST be greater than or
  1926.    equal to zero. Where pathLenConstraint does not appear, there is no
  1927.    limit to the allowed length of the certification path.
  1928.  
  1929.    This extension MUST appear as a critical extension in all CA
  1930.    certificates.  This extension SHOULD NOT appear in end entity
  1931.    certificates.
  1932.  
  1933.    id-ce-basicConstraints OBJECT IDENTIFIER ::=  { id-ce 19 }
  1934.  
  1935.    BasicConstraints ::= SEQUENCE {
  1936.         cA                      BOOLEAN DEFAULT FALSE,
  1937.         pathLenConstraint       INTEGER (0..MAX) OPTIONAL }
  1938.  
  1939. 4.2.1.11  Name Constraints
  1940.  
  1941.    The name constraints extension, which MUST be used only in a CA
  1942.    certificate, indicates a name space within which all subject names in
  1943.    subsequent certificates in a certification path shall be located.
  1944.    Restrictions may apply to the subject distinguished name or subject
  1945.    alternative names.  Restrictions apply only when the specified name
  1946.    form is present. If no name of the type is in the certificate, the
  1947.    certificate is acceptable.
  1948.  
  1949.    Restrictions are defined in terms of permitted or excluded name
  1950.    subtrees.  Any name matching a restriction in the excludedSubtrees
  1951.    field is invalid regardless of information appearing in the
  1952.    permittedSubtrees.  This extension MUST be critical.
  1953.  
  1954.    Within this profile, the minimum and maximum fields are not used with
  1955.    any name forms, thus minimum is always zero, and maximum is always
  1956.    absent.
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962. Housley, et. al.            Standards Track                    [Page 35]
  1963.  
  1964. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  1965.  
  1966.  
  1967.    For URIs, the constraint applies to the host part of the name. The
  1968.    constraint may specify a host or a domain.  Examples would be
  1969.    "foo.bar.com";  and ".xyz.com".  When the the constraint begins with
  1970.    a period, it may be expanded with one or more subdomains.  That is,
  1971.    the constraint ".xyz.com" is satisfied by both abc.xyz.com and
  1972.    abc.def.xyz.com.  However, the constraint ".xyz.com" is not satisfied
  1973.    by "xyz.com".  When the constraint does not begin with a period, it
  1974.    specifies a host.
  1975.  
  1976.    A name constraint for Internat mail addresses may specify a
  1977.    particular mailbox, all addresses at a particular host, or all
  1978.    mailboxes in a domain.  To indicate a particular mailbox, the
  1979.    constraint is the complete mail address.  For example, "root@xyz.com"
  1980.    indicates the root mailbox on the host "xyz.com". To indicate all
  1981.    Internet mail addresses on a particular host, the constraint is
  1982.    specified as the host name.  For example, the constraint "xyz.com" is
  1983.    satisfied by any mail address at the host "xyz.com". To specify any
  1984.    address within a domain, the constraint is specified with a leading
  1985.    period (as with URIs).  For example, ".xyz.com" indicates all the
  1986.    Internet mail addresses in the domain "xyz.com", but Internet mail
  1987.    addresses on the host "xyz.com".
  1988.  
  1989.    DNS name restrictions are expressed as foo.bar.com. Any subdomain
  1990.    satisfies the name constraint. For example, www.foo.bar.com would
  1991.    satisfy the constraint but bigfoo.bar.com would not.
  1992.  
  1993.    Legacy implementations exist where an RFC 822 name is embedded in the
  1994.    subject distinguished name in an attribute of type EmailAddress (see
  1995.    sec. 4.1.2.6). When rfc822 names are constrained, but the certificate
  1996.    does not include a subject alternative name, the rfc822 name
  1997.    constraint MUST be applied to the attribute of type EmailAddress in
  1998.    the subject distinguished name.  The ASN.1 syntax for EmailAddress
  1999.    and the corresponding OID are supplied in Appendix A and B.
  2000.  
  2001.    Restrictions of the form directoryName MUST be applied to the subject
  2002.    field in the certificate and to the subjectAltName extensions of type
  2003.    directoryName. Restrictions of the form x400Address MUST be applied
  2004.    to subjectAltName extensions of type x400Address.
  2005.  
  2006.    When applying restrictions of the form directoryName, an
  2007.    implementation MUST compare DN attributes.  At a minimum,
  2008.    implementations MUST perform the DN comparison rules specified in
  2009.    Section 4.1.2.4.  CAs issuing certificates with a restriction of the
  2010.    form directoryName SHOULD NOT rely on implementation of the full ISO
  2011.    DN name comparison algorithm.  This implies name restrictions shall
  2012.    be stated identically to the encoding used in the subject field or
  2013.    subjectAltName extension.
  2014.  
  2015.  
  2016.  
  2017.  
  2018. Housley, et. al.            Standards Track                    [Page 36]
  2019.  
  2020. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2021.  
  2022.  
  2023.    The syntax of iPAddress MUST be as described in section 4.2.1.7 with
  2024.    the following additions specifically for Name Constraints.  For IPv4
  2025.    addresses, the ipAddress field of generalName MUST contain eight (8)
  2026.    octets, encoded in the style of RFC 1519 (CIDR) to represent an
  2027.    address range.[RFC 1519]  For IPv6 addresses, the ipAddress field
  2028.    MUST contain 32 octets similarly encoded.  For example, a name
  2029.    constraint for "class C" subnet 10.9.8.0 shall be represented as the
  2030.    octets 0A 09 08 00 FF FF FF 00, representing the CIDR notation
  2031.    10.9.8.0/255.255.255.0.
  2032.  
  2033.    The syntax and semantics for name constraints for otherName,
  2034.    ediPartyName, and registeredID are not defined by this specification.
  2035.  
  2036.       id-ce-nameConstraints OBJECT IDENTIFIER ::=  { id-ce 30 }
  2037.  
  2038.       NameConstraints ::= SEQUENCE {
  2039.            permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
  2040.            excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }
  2041.  
  2042.       GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
  2043.  
  2044.       GeneralSubtree ::= SEQUENCE {
  2045.            base                    GeneralName,
  2046.            minimum         [0]     BaseDistance DEFAULT 0,
  2047.            maximum         [1]     BaseDistance OPTIONAL }
  2048.  
  2049.       BaseDistance ::= INTEGER (0..MAX)
  2050.  
  2051. 4.2.1.12  Policy Constraints
  2052.  
  2053.    The policy constraints extension can be used in certificates issued
  2054.    to CAs. The policy constraints extension constrains path validation
  2055.    in two ways. It can be used to prohibit policy mapping or require
  2056.    that each certificate in a path contain an acceptable policy
  2057.    identifier.
  2058.  
  2059.    If the inhibitPolicyMapping field is present, the value indicates the
  2060.    number of additional certificates that may appear in the path before
  2061.    policy mapping is no longer permitted.  For example, a value of one
  2062.    indicates that policy mapping may be processed in certificates issued
  2063.    by the subject of this certificate, but not in additional
  2064.    certificates in the path.
  2065.  
  2066.    If the requireExplicitPolicy field is present, subsequent
  2067.    certificates shall include an acceptable policy identifier. The value
  2068.    of requireExplicitPolicy indicates the number of additional
  2069.    certificates that may appear in the path before an explicit policy is
  2070.    required.  An acceptable policy identifier is the identifier of a
  2071.  
  2072.  
  2073.  
  2074. Housley, et. al.            Standards Track                    [Page 37]
  2075.  
  2076. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2077.  
  2078.  
  2079.    policy required by the user of the certification path or the
  2080.    identifier of a policy which has been declared equivalent through
  2081.    policy mapping.
  2082.  
  2083.    Conforming CAs MUST NOT issue certificates where policy constraints
  2084.    is a null sequence. That is, at least one of the inhibitPolicyMapping
  2085.    field or the requireExplicitPolicy field MUST be present. The
  2086.    behavior of clients that encounter a null policy constraints field is
  2087.    not addressed in this profile.
  2088.  
  2089.    This extension may be critical or non-critical.
  2090.  
  2091.    id-ce-policyConstraints OBJECT IDENTIFIER ::=  { id-ce 36 }
  2092.  
  2093.    PolicyConstraints ::= SEQUENCE {
  2094.         requireExplicitPolicy           [0] SkipCerts OPTIONAL,
  2095.         inhibitPolicyMapping            [1] SkipCerts OPTIONAL }
  2096.  
  2097.    SkipCerts ::= INTEGER (0..MAX)
  2098.  
  2099. 4.2.1.13  Extended key usage field
  2100.  
  2101.    This field indicates one or more purposes for which the certified
  2102.    public key may be used, in addition to or in place of the basic
  2103.    purposes indicated in the key usage extension field.  This field is
  2104.    defined as follows:
  2105.  
  2106.    id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37}
  2107.  
  2108.    ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
  2109.  
  2110.    KeyPurposeId ::= OBJECT IDENTIFIER
  2111.  
  2112.    Key purposes may be defined by any organization with a need. Object
  2113.    identifiers used to identify key purposes shall be assigned in
  2114.    accordance with IANA or ITU-T Rec. X.660 | ISO/IEC/ITU 9834-1.
  2115.  
  2116.    This extension may, at the option of the certificate issuer, be
  2117.    either critical or non-critical.
  2118.  
  2119.    If the extension is flagged critical, then the certificate MUST be
  2120.    used only for one of the purposes indicated.
  2121.  
  2122.    If the extension is flagged non-critical, then it indicates the
  2123.    intended purpose or purposes of the key, and may be used in finding
  2124.    the correct key/certificate of an entity that has multiple
  2125.    keys/certificates. It is an advisory field and does not imply that
  2126.    usage of the key is restricted by the certification authority to the
  2127.  
  2128.  
  2129.  
  2130. Housley, et. al.            Standards Track                    [Page 38]
  2131.  
  2132. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2133.  
  2134.  
  2135.    purpose indicated. Certificate using applications may nevertheless
  2136.    require that a particular purpose be indicated in order for the
  2137.    certificate to be acceptable to that application.
  2138.  
  2139.    If a certificate contains both a critical key usage field and a
  2140.    critical extended key usage field, then both fields MUST be processed
  2141.    independently and the certificate MUST only be used for a purpose
  2142.    consistent with both fields.  If there is no purpose consistent with
  2143.    both fields, then the certificate MUST NOT be used for any purpose.
  2144.  
  2145.    The following key usage purposes are defined by this profile:
  2146.  
  2147.    id-kp OBJECT IDENTIFIER ::= { id-pkix 3 }
  2148.  
  2149.    id-kp-serverAuth              OBJECT IDENTIFIER ::=   {id-kp 1}
  2150.    -- TLS Web server authentication
  2151.    -- Key usage bits that may be consistent: digitalSignature,
  2152.    --                         keyEncipherment or keyAgreement
  2153.    --
  2154.    id-kp-clientAuth              OBJECT IDENTIFIER ::=   {id-kp 2}
  2155.    -- TLS Web client authentication
  2156.    -- Key usage bits that may be consistent: digitalSignature and/or
  2157.    --                            keyAgreement
  2158.    --
  2159.    id-kp-codeSigning             OBJECT IDENTIFIER ::=   {id-kp 3}
  2160.    -- Signing of downloadable executable code
  2161.    -- Key usage bits that may be consistent: digitalSignature
  2162.    --
  2163.    id-kp-emailProtection         OBJECT IDENTIFIER ::=   {id-kp 4}
  2164.    -- E-mail protection
  2165.    -- Key usage bits that may be consistent: digitalSignature,
  2166.    --                         nonRepudiation, and/or (keyEncipherment
  2167.    --                         or keyAgreement)
  2168.    --
  2169.    id-kp-timeStamping    OBJECT IDENTIFIER ::= { id-kp 8 }
  2170.    -- Binding the hash of an object to a time from an agreed-upon time
  2171.    -- source. Key usage bits that may be consistent: digitalSignature,
  2172.    --                         nonRepudiation
  2173.  
  2174. 4.2.1.14  CRL Distribution Points
  2175.  
  2176.    The CRL distribution points extension identifies how CRL information
  2177.    is obtained.  The extension SHOULD be non-critical, but this profile
  2178.    recommends support for this extension by CAs and applications.
  2179.    Further discussion of CRL management is contained in section 5.
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186. Housley, et. al.            Standards Track                    [Page 39]
  2187.  
  2188. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2189.  
  2190.  
  2191.    If the cRLDistributionPoints extension contains a
  2192.    DistributionPointName of type URI, the following semantics MUST be
  2193.    assumed: the URI is a pointer to the current CRL for the associated
  2194.    reasons and will be issued by the associated cRLIssuer.  The expected
  2195.    values for the URI are those defined in 4.2.1.7. Processing rules for
  2196.    other values are not defined by this specification.  If the
  2197.    distributionPoint omits reasons, the CRL MUST include revocations for
  2198.    all reasons. If the distributionPoint omits cRLIssuer, the CRL MUST
  2199.    be issued by the CA that issued the certificate.
  2200.  
  2201.    id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::=  { id-ce 31 }
  2202.  
  2203.    cRLDistributionPoints ::= {
  2204.         CRLDistPointsSyntax }
  2205.  
  2206.    CRLDistPointsSyntax ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
  2207.  
  2208.    DistributionPoint ::= SEQUENCE {
  2209.         distributionPoint       [0]     DistributionPointName OPTIONAL,
  2210.         reasons                 [1]     ReasonFlags OPTIONAL,
  2211.         cRLIssuer               [2]     GeneralNames OPTIONAL }
  2212.  
  2213.    DistributionPointName ::= CHOICE {
  2214.         fullName                [0]     GeneralNames,
  2215.         nameRelativeToCRLIssuer [1]     RelativeDistinguishedName }
  2216.  
  2217.    ReasonFlags ::= BIT STRING {
  2218.         unused                  (0),
  2219.         keyCompromise           (1),
  2220.         cACompromise            (2),
  2221.         affiliationChanged      (3),
  2222.         superseded              (4),
  2223.         cessationOfOperation    (5),
  2224.         certificateHold         (6) }
  2225.  
  2226. 4.2.2  Private Internet Extensions
  2227.  
  2228.    This section defines one new extension for use in the Internet Public
  2229.    Key Infrastructure.  This extension may be used to direct
  2230.    applications to identify an on-line validation service supporting the
  2231.    issuing CA.  As the information may be available in multiple forms,
  2232.    each extension is a sequence of IA5String values, each of which
  2233.    represents a URI.  The URI implicitly specifies the location and
  2234.    format of the information and the method for obtaining the
  2235.    information.
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242. Housley, et. al.            Standards Track                    [Page 40]
  2243.  
  2244. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2245.  
  2246.  
  2247.    An object identifier is defined for the private extension.  The
  2248.    object identifier associated with the private extension is defined
  2249.    under the arc id-pe within the id-pkix name space.  Any future
  2250.    extensions defined for the Internet PKI will also be defined under
  2251.    the arc id-pe.
  2252.  
  2253.       id-pkix  OBJECT IDENTIFIER  ::=
  2254.                { iso(1) identified-organization(3) dod(6) internet(1)
  2255.                        security(5) mechanisms(5) pkix(7) }
  2256.  
  2257.       id-pe  OBJECT IDENTIFIER  ::=  { id-pkix 1 }
  2258.  
  2259. 4.2.2.1  Authority Information Access
  2260.  
  2261.    The authority information access extension indicates how to access CA
  2262.    information and services for the issuer of the certificate in which
  2263.    the extension appears. Information and services may include on-line
  2264.    validation services and CA policy data.  (The location of CRLs is not
  2265.    specified in this extension; that information is provided by the
  2266.    cRLDistributionPoints extension.)  This extension may be included in
  2267.    subject or CA certificates, and it MUST be non-critical.
  2268.  
  2269.    id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
  2270.  
  2271.    AuthorityInfoAccessSyntax  ::=
  2272.            SEQUENCE SIZE (1..MAX) OF AccessDescription
  2273.  
  2274.    AccessDescription  ::=  SEQUENCE {
  2275.            accessMethod          OBJECT IDENTIFIER,
  2276.            accessLocation        GeneralName  }
  2277.  
  2278.    id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
  2279.  
  2280.    id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
  2281.  
  2282.    Each entry in the sequence AuthorityInfoAccessSyntax describes the
  2283.    format and location of additional information about the CA who issued
  2284.    the certificate in which this extension appears.  The type and format
  2285.    of the information is specified by the accessMethod field; the
  2286.    accessLocation field specifies the location of the information.  The
  2287.    retrieval mechanism may be implied by the accessMethod or specified
  2288.    by accessLocation.
  2289.  
  2290.    This profile defines one OID for accessMethod. The id-ad-caIssuers
  2291.    OID is used when the additional information lists CAs that have
  2292.    issued certificates superior to the CA that issued the certificate
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298. Housley, et. al.            Standards Track                    [Page 41]
  2299.  
  2300. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2301.  
  2302.  
  2303.    containing this extension.  The referenced CA Issuers description is
  2304.    intended to aid certificate users in the selection of a certification
  2305.    path that terminates at a point trusted by the certificate user.
  2306.  
  2307.    When id-ad-caIssuers appears as accessInfoType, the accessLocation
  2308.    field describes the referenced description server and the access
  2309.    protocol to obtain the referenced description.  The accessLocation
  2310.    field is defined as a GeneralName, which can take several forms.
  2311.    Where the information is available via http, ftp, or ldap,
  2312.    accessLocation MUST be a uniformResourceIdentifier.  Where the
  2313.    information is available via the directory access protocol (dap),
  2314.    accessLocation MUST be a directoryName. When the information is
  2315.    available via electronic mail, accessLocation MUST be an rfc822Name.
  2316.    The semantics of other name forms of accessLocation (when
  2317.    accessMethod is id-ad-caIssuers) are not defined by this
  2318.    specification.
  2319.  
  2320.    Additional access descriptors may be defined in other PKIX
  2321.    specifications.
  2322.  
  2323. 5  CRL and CRL Extensions Profile
  2324.  
  2325.    As described above, one goal of this X.509 v2 CRL profile is to
  2326.    foster the creation of an interoperable and reusable Internet PKI.
  2327.    To achieve this goal, guidelines for the use of extensions are
  2328.    specified, and some assumptions are made about the nature of
  2329.    information included in the CRL.
  2330.  
  2331.    CRLs may be used in a wide range of applications and environments
  2332.    covering a broad spectrum of interoperability goals and an even
  2333.    broader spectrum of operational and assurance requirements.  This
  2334.    profile establishes a common baseline for generic applications
  2335.    requiring broad interoperability.  The profile defines a baseline set
  2336.    of information that can be expected in every CRL.  Also, the profile
  2337.    defines common locations within the CRL for frequently used
  2338.    attributes as well as common representations for these attributes.
  2339.  
  2340.    This profile does not define any private Internet CRL extensions or
  2341.    CRL entry extensions.
  2342.  
  2343.    Environments with additional or special purpose requirements may
  2344.    build on this profile or may replace it.
  2345.  
  2346.    Conforming CAs are not required to issue CRLs if other revocation or
  2347.    certificate status mechanisms are provided.  Conforming CAs that
  2348.    issue CRLs MUST issue version 2 CRLs, and CAs MUST include the date
  2349.    by which the next CRL will be issued in the nextUpdate field (see
  2350.  
  2351.  
  2352.  
  2353.  
  2354. Housley, et. al.            Standards Track                    [Page 42]
  2355.  
  2356. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2357.  
  2358.  
  2359.    sec. 5.1.2.5), the CRL number extension (see sec. 5.2.3) and the
  2360.    authority key identifier extension (see sec. 5.2.1).  Conforming
  2361.    applications are required to process version 1 and 2 CRLs.
  2362.  
  2363. 5.1  CRL Fields
  2364.  
  2365.    The X.509 v2 CRL syntax is as follows.  For signature calculation,
  2366.    the data that is to be signed is ASN.1 DER encoded.  ASN.1 DER
  2367.    encoding is a tag, length, value encoding system for each element.
  2368.  
  2369.    CertificateList  ::=  SEQUENCE  {
  2370.         tbsCertList          TBSCertList,
  2371.         signatureAlgorithm   AlgorithmIdentifier,
  2372.         signatureValue       BIT STRING  }
  2373.  
  2374.    TBSCertList  ::=  SEQUENCE  {
  2375.         version                 Version OPTIONAL,
  2376.                                      -- if present, shall be v2
  2377.         signature               AlgorithmIdentifier,
  2378.         issuer                  Name,
  2379.         thisUpdate              Time,
  2380.         nextUpdate              Time OPTIONAL,
  2381.         revokedCertificates     SEQUENCE OF SEQUENCE  {
  2382.              userCertificate         CertificateSerialNumber,
  2383.              revocationDate          Time,
  2384.              crlEntryExtensions      Extensions OPTIONAL
  2385.                                            -- if present, shall be v2
  2386.                                   }  OPTIONAL,
  2387.         crlExtensions           [0]  EXPLICIT Extensions OPTIONAL
  2388.                                            -- if present, shall be v2
  2389.                                   }
  2390.  
  2391.    -- Version, Time, CertificateSerialNumber, and Extensions
  2392.    -- are all defined in the ASN.1 in section 4.1
  2393.  
  2394.    -- AlgorithmIdentifier is defined in section 4.1.1.2
  2395.  
  2396.    The following items describe the use of the X.509 v2 CRL in the
  2397.    Internet PKI.
  2398.  
  2399. 5.1.1  CertificateList Fields
  2400.  
  2401.    The CertificateList is a SEQUENCE of three required fields. The
  2402.    fields are described in detail in the following subsections.
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410. Housley, et. al.            Standards Track                    [Page 43]
  2411.  
  2412. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2413.  
  2414.  
  2415. 5.1.1.1  tbsCertList
  2416.  
  2417.    The first field in the sequence is the tbsCertList.  This field is
  2418.    itself a sequence containing the name of the issuer, issue date,
  2419.    issue date of the next list, the list of revoked certificates, and
  2420.    optional CRL extensions.  Further, each entry on the revoked
  2421.    certificate list is defined by a sequence of user certificate serial
  2422.    number, revocation date, and optional CRL entry extensions.
  2423.  
  2424. 5.1.1.2  signatureAlgorithm
  2425.  
  2426.    The signatureAlgorithm field contains the algorithm identifier for
  2427.    the algorithm used by the CA to sign the CertificateList.  The field
  2428.    is of type AlgorithmIdentifier, which is defined in section 4.1.1.2.
  2429.    Section 7.2 lists the supported algorithms for this specification.
  2430.    Conforming CAs MUST use the algorithm identifiers presented in
  2431.    section 7.2 when signing with a supported signature algorithm.
  2432.  
  2433.    This field MUST contain the same algorithm identifier as the
  2434.    signature field in the sequence tbsCertList (see sec. 5.1.2.2).
  2435.  
  2436. 5.1.1.3  signatureValue
  2437.  
  2438.    The signatureValue field contains a digital signature computed upon
  2439.    the ASN.1 DER encoded tbsCertList.  The ASN.1 DER encoded tbsCertList
  2440.    is used as the input to the signature function. This signature value
  2441.    is then ASN.1 encoded as a BIT STRING and included in the CRL's
  2442.    signatureValue field. The details of this process are specified for
  2443.    each of the supported algorithms in section 7.2.
  2444.  
  2445. 5.1.2  Certificate List "To Be Signed"
  2446.  
  2447.    The certificate list to be signed, or TBSCertList, is a SEQUENCE of
  2448.    required and optional fields.  The required fields identify the CRL
  2449.    issuer, the algorithm used to sign the CRL, the date and time the CRL
  2450.    was issued, and the date and time by which the CA will issue the next
  2451.    CRL.
  2452.  
  2453.    Optional fields include lists of revoked certificates and CRL
  2454.    extensions.  The revoked certificate list is optional to support the
  2455.    case where a CA has not revoked any unexpired certificates that it
  2456.    has issued.  The profile requires conforming CAs to use the CRL
  2457.    extension cRLNumber in all CRLs issued.
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466. Housley, et. al.            Standards Track                    [Page 44]
  2467.  
  2468. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2469.  
  2470.  
  2471. 5.1.2.1  Version
  2472.  
  2473.    This optional field describes the version of the encoded CRL.  When
  2474.    extensions are used, as required by this profile, this field MUST be
  2475.    present and MUST specify version 2 (the integer value is 1).
  2476.  
  2477. 5.1.2.2  Signature
  2478.  
  2479.    This field contains the algorithm identifier for the algorithm used
  2480.    to sign the CRL.  Section 7.2 lists OIDs for the most popular
  2481.    signature algorithms used in the Internet PKI.
  2482.  
  2483.    This field MUST contain the same algorithm identifier as the
  2484.    signatureAlgorithm field in the sequence CertificateList (see section
  2485.    5.1.1.2).
  2486.  
  2487. 5.1.2.3  Issuer Name
  2488.  
  2489.    The issuer name identifies the entity who has signed and issued the
  2490.    CRL.  The issuer identity is carried in the issuer name field.
  2491.    Alternative name forms may also appear in the issuerAltName extension
  2492.    (see sec. 5.2.2).  The issuer name field MUST contain an X.500
  2493.    distinguished name (DN).  The issuer name field is defined as the
  2494.    X.501 type Name, and MUST follow the encoding rules for the issuer
  2495.    name field in the certificate (see sec. 4.1.2.4).
  2496.  
  2497. 5.1.2.4  This Update
  2498.  
  2499.    This field indicates the issue date of this CRL. ThisUpdate may be
  2500.    encoded as UTCTime or GeneralizedTime.
  2501.  
  2502.    CAs conforming to this profile that issue CRLs MUST encode thisUpdate
  2503.    as UTCTime for dates through the year 2049. CAs conforming to this
  2504.    profile that issue CRLs MUST encode thisUpdate as GeneralizedTime for
  2505.    dates in the year 2050 or later.
  2506.  
  2507.    Where encoded as UTCTime, thisUpdate MUST be specified and
  2508.    interpreted as defined in section 4.1.2.5.1.  Where encoded as
  2509.    GeneralizedTime, thisUpdate MUST be specified and interpreted as
  2510.    defined in section 4.1.2.5.2.
  2511.  
  2512. 5.1.2.5  Next Update
  2513.  
  2514.    This field indicates the date by which the next CRL will be issued.
  2515.    The next CRL could be issued before the indicated date, but it will
  2516.    not be issued any later than the indicated date. CAs SHOULD issue
  2517.    CRLs with a nextUpdate time equal to or later than all previous CRLs.
  2518.    nextUpdate may be encoded as UTCTime or GeneralizedTime.
  2519.  
  2520.  
  2521.  
  2522. Housley, et. al.            Standards Track                    [Page 45]
  2523.  
  2524. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2525.  
  2526.  
  2527.    This profile requires inclusion of nextUpdate in all CRLs issued by
  2528.    conforming CAs. Note that the ASN.1 syntax of TBSCertList describes
  2529.    this field as OPTIONAL, which is consistent with the ASN.1 structure
  2530.    defined in [X.509]. The behavior of clients processing CRLs which
  2531.    omit nextUpdate is not specified by this profile.
  2532.  
  2533.    CAs conforming to this profile that issue CRLs MUST encode nextUpdate
  2534.    as UTCTime for dates through the year 2049. CAs conforming to this
  2535.    profile that issue CRLs MUST encode nextUpdate as GeneralizedTime for
  2536.    dates in the year 2050 or later.
  2537.  
  2538.    Where encoded as UTCTime, nextUpdate MUST be specified and
  2539.    interpreted as defined in section 4.1.2.5.1.  Where encoded as
  2540.    GeneralizedTime, nextUpdate MUST be specified and interpreted as
  2541.    defined in section 4.1.2.5.2.
  2542.  
  2543. 5.1.2.6  Revoked Certificates
  2544.  
  2545.    Revoked certificates are listed.  The revoked certificates are named
  2546.    by their serial numbers.  Certificates revoked by the CA are uniquely
  2547.    identified by the certificate serial number.  The date on which the
  2548.    revocation occurred is specified.  The time for revocationDate MUST
  2549.    be expressed as described in section 5.1.2.4. Additional information
  2550.    may be supplied in CRL entry extensions; CRL entry extensions are
  2551.    discussed in section 5.3.
  2552.  
  2553. 5.1.2.7  Extensions
  2554.  
  2555.    This field may only appear if the version is 2 (see sec. 5.1.2.1).
  2556.    If present, this field is a SEQUENCE of one or more CRL extensions.
  2557.    CRL extensions are discussed in section 5.2.
  2558.  
  2559. 5.2  CRL Extensions
  2560.  
  2561.    The extensions defined by ANSI X9 and ISO/IEC/ITU for X.509 v2 CRLs
  2562.    [X.509] [X9.55] provide methods for associating additional attributes
  2563.    with CRLs.  The X.509 v2 CRL format also allows communities to define
  2564.    private extensions to carry information unique to those communities.
  2565.    Each extension in a CRL may be designated as critical or non-
  2566.    critical.  A CRL validation MUST fail if it encounters a critical
  2567.    extension which it does not know how to process.  However, an
  2568.    unrecognized non-critical extension may be ignored.  The following
  2569.    subsections present those extensions used within Internet CRLs.
  2570.    Communities may elect to include extensions in CRLs which are not
  2571.    defined in this specification. However, caution should be exercised
  2572.    in adopting any critical extensions in CRLs which might be used in a
  2573.    general context.
  2574.  
  2575.  
  2576.  
  2577.  
  2578. Housley, et. al.            Standards Track                    [Page 46]
  2579.  
  2580. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2581.  
  2582.  
  2583.    Conforming CAs that issue CRLs are required to include the authority
  2584.    key identifier (see sec. 5.2.1) and the CRL number (see sec. 5.2.3)
  2585.    extensions in all CRLs issued.
  2586.  
  2587. 5.2.1  Authority Key Identifier
  2588.  
  2589.    The authority key identifier extension provides a means of
  2590.    identifying the public key corresponding to the private key used to
  2591.    sign a CRL.  The identification can be based on either the key
  2592.    identifier (the subject key identifier in the CRL signer's
  2593.    certificate) or on the issuer name and serial number. This extension
  2594.    is especially useful where an issuer has more than one signing key,
  2595.    either due to multiple concurrent key pairs or due to changeover.
  2596.  
  2597.    Conforming CAs MUST use the key identifier method, and MUST include
  2598.    this extension in all CRLs issued.
  2599.  
  2600.    The syntax for this CRL extension is defined in section 4.2.1.1.
  2601.  
  2602. 5.2.2  Issuer Alternative Name
  2603.  
  2604.    The issuer alternative names extension allows additional identities
  2605.    to be associated with the issuer of the CRL.  Defined options include
  2606.    an rfc822 name (electronic mail address), a DNS name, an IP address,
  2607.    and a URI.  Multiple instances of a name and multiple name forms may
  2608.    be included.  Whenever such identities are used, the issuer
  2609.    alternative name extension MUST be used.
  2610.  
  2611.    The issuerAltName extension SHOULD NOT be marked critical.
  2612.  
  2613.    The OID and syntax for this CRL extension are defined in section
  2614.    4.2.1.8.
  2615.  
  2616. 5.2.3  CRL Number
  2617.  
  2618.    The CRL number is a non-critical CRL extension which conveys a
  2619.    monotonically increasing sequence number for each CRL issued by a CA.
  2620.    This extension allows users to easily determine when a particular CRL
  2621.    supersedes another CRL.  CAs conforming to this profile MUST include
  2622.    this extension in all CRLs.
  2623.  
  2624.    id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 }
  2625.  
  2626.    cRLNumber ::= INTEGER (0..MAX)
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634. Housley, et. al.            Standards Track                    [Page 47]
  2635.  
  2636. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2637.  
  2638.  
  2639. 5.2.4  Delta CRL Indicator
  2640.  
  2641.    The delta CRL indicator is a critical CRL extension that identifies a
  2642.    delta-CRL.  The use of delta-CRLs can significantly improve
  2643.    processing time for applications which store revocation information
  2644.    in a format other than the CRL structure.  This allows changes to be
  2645.    added to the local database while ignoring unchanged information that
  2646.    is already in the local database.
  2647.  
  2648.    When a delta-CRL is issued, the CAs MUST also issue a complete CRL.
  2649.  
  2650.    The value of BaseCRLNumber identifies the CRL number of the base CRL
  2651.    that was used as the starting point in the generation of this delta-
  2652.    CRL.  The delta-CRL contains the changes between the base CRL and the
  2653.    current CRL issued along with the delta-CRL.  It is the decision of a
  2654.    CA as to whether to provide delta-CRLs.  Again, a delta-CRL MUST NOT
  2655.    be issued without a corresponding complete CRL.  The value of
  2656.    CRLNumber for both the delta-CRL and the corresponding complete CRL
  2657.    MUST be identical.
  2658.  
  2659.    A CRL user constructing a locally held CRL from delta-CRLs MUST
  2660.    consider the constructed CRL incomplete and unusable if the CRLNumber
  2661.    of the received delta-CRL is more than one greater than the CRLnumber
  2662.    of the delta-CRL last processed.
  2663.  
  2664.    id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 }
  2665.  
  2666.    deltaCRLIndicator ::= BaseCRLNumber
  2667.  
  2668.    BaseCRLNumber ::= CRLNumber
  2669.  
  2670. 5.2.5  Issuing Distribution Point
  2671.  
  2672.    The issuing distribution point is a critical CRL extension that
  2673.    identifies the CRL distribution point for a particular CRL, and it
  2674.    indicates whether the CRL covers revocation for end entity
  2675.    certificates only, CA  certificates only, or a limitied set of reason
  2676.    codes.  Although the extension is critical, conforming
  2677.    implementations are not required to support this extension.
  2678.  
  2679.    The CRL is signed using the CA's private key.  CRL Distribution
  2680.    Points do not have their own key pairs.  If the CRL is stored in the
  2681.    X.500 Directory, it is stored in the Directory entry corresponding to
  2682.    the CRL distribution point, which may be different than the Directory
  2683.    entry of the CA.
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690. Housley, et. al.            Standards Track                    [Page 48]
  2691.  
  2692. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2693.  
  2694.  
  2695.    The reason codes associated with a distribution point shall be
  2696.    specified in onlySomeReasons. If onlySomeReasons does not appear, the
  2697.    distribution point shall contain revocations for all reason codes.
  2698.    CAs may use CRL distribution points to partition the CRL on the basis
  2699.    of compromise and routine revocation.  In this case, the revocations
  2700.    with reason code keyCompromise (1) and cACompromise (2) appear in one
  2701.    distribution point, and the revocations with other reason codes
  2702.    appear in another distribution point.
  2703.  
  2704.    Where the issuingDistributionPoint extension contains a URL, the
  2705.    following semantics MUST be assumed: the object is a pointer to the
  2706.    most current CRL issued by this CA.  The URI schemes ftp, http,
  2707.    mailto [RFC1738] and ldap [RFC1778] are defined for this purpose.
  2708.    The URI MUST be an absolute, not relative, pathname and MUST specify
  2709.    the host.
  2710.  
  2711.    id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 }
  2712.  
  2713.    issuingDistributionPoint ::= SEQUENCE {
  2714.         distributionPoint       [0] DistributionPointName OPTIONAL,
  2715.         onlyContainsUserCerts   [1] BOOLEAN DEFAULT FALSE,
  2716.         onlyContainsCACerts     [2] BOOLEAN DEFAULT FALSE,
  2717.         onlySomeReasons         [3] ReasonFlags OPTIONAL,
  2718.         indirectCRL             [4] BOOLEAN DEFAULT FALSE }
  2719.  
  2720. 5.3  CRL Entry Extensions
  2721.  
  2722.    The CRL entry extensions already defined by ANSI X9 and ISO/IEC/ITU
  2723.    for X.509 v2 CRLs provide methods for associating additional
  2724.    attributes with CRL entries [X.509] [X9.55].  The X.509 v2 CRL format
  2725.    also allows communities to define private CRL entry extensions to
  2726.    carry information unique to those communities.  Each extension in a
  2727.    CRL entry may be designated as critical or non-critical.  A CRL
  2728.    validation MUST fail if it encounters a critical CRL entry extension
  2729.    which it does not know how to process.  However, an unrecognized
  2730.    non-critical CRL entry extension may be ignored.  The following
  2731.    subsections present recommended extensions used within Internet CRL
  2732.    entries and standard locations for information.  Communities may
  2733.    elect to use additional CRL entry extensions; however, caution should
  2734.    be exercised in adopting any critical extensions in CRL entries which
  2735.    might be used in a general context.
  2736.  
  2737.    All CRL entry extensions used in this specification are non-critical.
  2738.    Support for these extensions is optional for conforming CAs and
  2739.    applications.  However, CAs that issue CRLs SHOULD include reason
  2740.    codes (see sec. 5.3.1) and invalidity dates (see sec. 5.3.3) whenever
  2741.    this information is available.
  2742.  
  2743.  
  2744.  
  2745.  
  2746. Housley, et. al.            Standards Track                    [Page 49]
  2747.  
  2748. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2749.  
  2750.  
  2751. 5.3.1  Reason Code
  2752.  
  2753.    The reasonCode is a non-critical CRL entry extension that identifies
  2754.    the reason for the certificate revocation. CAs are strongly
  2755.    encouraged to include meaningful reason codes in CRL entries;
  2756.    however, the reason code CRL entry extension SHOULD be absent instead
  2757.    of using the unspecified (0) reasonCode value.
  2758.  
  2759.    id-ce-cRLReason OBJECT IDENTIFIER ::= { id-ce 21 }
  2760.  
  2761.    -- reasonCode ::= { CRLReason }
  2762.  
  2763.    CRLReason ::= ENUMERATED {
  2764.         unspecified             (0),
  2765.         keyCompromise           (1),
  2766.         cACompromise            (2),
  2767.         affiliationChanged      (3),
  2768.         superseded              (4),
  2769.         cessationOfOperation    (5),
  2770.         certificateHold         (6),
  2771.         removeFromCRL           (8) }
  2772.  
  2773. 5.3.2  Hold Instruction Code
  2774.  
  2775.    The hold instruction code is a non-critical CRL entry extension that
  2776.    provides a registered instruction identifier which indicates the
  2777.    action to be taken after encountering a certificate that has been
  2778.    placed on hold.
  2779.  
  2780.    id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 }
  2781.  
  2782.    holdInstructionCode ::= OBJECT IDENTIFIER
  2783.  
  2784.    The following instruction codes have been defined.  Conforming
  2785.    applications that process this extension MUST recognize the following
  2786.    instruction codes.
  2787.  
  2788.    holdInstruction    OBJECT IDENTIFIER ::=
  2789.                     { iso(1) member-body(2) us(840) x9-57(10040) 2 }
  2790.  
  2791.    id-holdinstruction-none   OBJECT IDENTIFIER ::= {holdInstruction 1}
  2792.    id-holdinstruction-callissuer
  2793.                              OBJECT IDENTIFIER ::= {holdInstruction 2}
  2794.    id-holdinstruction-reject OBJECT IDENTIFIER ::= {holdInstruction 3}
  2795.  
  2796.    Conforming applications which encounter an id-holdinstruction-
  2797.    callissuer MUST call the certificate issuer or reject the
  2798.    certificate.  Conforming applications which encounter an id-
  2799.  
  2800.  
  2801.  
  2802. Housley, et. al.            Standards Track                    [Page 50]
  2803.  
  2804. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2805.  
  2806.  
  2807.    holdinstruction-reject MUST reject the certificate. The hold
  2808.    instruction id-holdinstruction-none is semantically equivalent to the
  2809.    absence of a holdInstructionCode, and its use is strongly deprecated
  2810.    for the Internet PKI.
  2811.  
  2812. 5.3.3  Invalidity Date
  2813.  
  2814.    The invalidity date is a non-critical CRL entry extension that
  2815.    provides the date on which it is known or suspected that the private
  2816.    key was compromised or that the certificate otherwise became invalid.
  2817.    This date may be earlier than the revocation date in the CRL entry,
  2818.    which is the date at which the CA processed the revocation. When a
  2819.    revocation is first posted by a CA in a CRL, the invalidity date may
  2820.    precede the date of issue of earlier CRLs, but the revocation date
  2821.    SHOULD NOT precede the date of issue of earlier CRLs.  Whenever this
  2822.    information is available, CAs are strongly encouraged to share it
  2823.    with CRL users.
  2824.  
  2825.    The GeneralizedTime values included in this field MUST be expressed
  2826.    in Greenwich Mean Time (Zulu), and MUST be specified and interpreted
  2827.    as defined in section 4.1.2.5.2.
  2828.  
  2829.    id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 }
  2830.  
  2831.    invalidityDate ::=  GeneralizedTime
  2832.  
  2833. 5.3.4  Certificate Issuer
  2834.  
  2835.    This CRL entry extension identifies the certificate issuer associated
  2836.    with an entry in an indirect CRL, i.e. a CRL that has the indirectCRL
  2837.    indicator set in its issuing distribution point extension. If this
  2838.    extension is not present on the first entry in an indirect CRL, the
  2839.    certificate issuer defaults to the CRL issuer. On subsequent entries
  2840.    in an indirect CRL, if this extension is not present, the certificate
  2841.    issuer for the entry is the same as that for the preceding entry.
  2842.    This field is defined as follows:
  2843.  
  2844.    id-ce-certificateIssuer   OBJECT IDENTIFIER ::= { id-ce 29 }
  2845.  
  2846.    certificateIssuer ::=     GeneralNames
  2847.  
  2848.    If used by conforming CAs that issue CRLs, this extension is always
  2849.    critical.  If an implementation ignored this extension it could not
  2850.    correctly attribute CRL entries to certificates.  This specification
  2851.    RECOMMENDS that implementations recognize this extension.
  2852.  
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858. Housley, et. al.            Standards Track                    [Page 51]
  2859.  
  2860. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2861.  
  2862.  
  2863. 6  Certification Path Validation
  2864.  
  2865.    Certification path validation procedures for the Internet PKI are
  2866.    based on section 12.4.3 of [X.509].  Certification path processing
  2867.    verifies the binding between the subject distinguished name and/or
  2868.    subject alternative name and subject public key.  The binding is
  2869.    limited by constraints which are specified in the certificates which
  2870.    comprise the path. The basic constraints and policy constraints
  2871.    extensions allow the certification path processing logic to automate
  2872.    the decision making process.
  2873.  
  2874.    This section describes an algorithm for validating certification
  2875.    paths.  Conforming implementations of this specification are not
  2876.    required to implement this algorithm, but MUST be functionally
  2877.    equivalent to the external behavior resulting from this procedure.
  2878.    Any algorithm may be used by a particular implementation so long as
  2879.    it derives the correct result.
  2880.  
  2881.    In section 6.1, the text describes basic path validation. This text
  2882.    assumes that all valid paths begin with certificates issued by a
  2883.    single "most-trusted CA". The algorithm requires the public key of
  2884.    the CA, the CA's name, the validity period of the public key, and any
  2885.    constraints upon the set of paths which may be validated using this
  2886.    key.
  2887.  
  2888.    The "most-trusted CA" is a matter of policy: it could be a root CA in
  2889.    a hierarchical PKI; the CA that issued the verifier's own
  2890.    certificate(s); or any other CA in a network PKI.  The path
  2891.    validation procedure is the same regardless of the choice of "most-
  2892.    trusted CA."
  2893.  
  2894.    section 6.2 describes extensions to the basic path validation
  2895.    algorithm. Two specific cases are discussed: the case where paths may
  2896.    begin with one of several trusted CAs; and where compatibility with
  2897.    the PEM architecture is required.
  2898.  
  2899. 6.1 Basic Path Validation
  2900.  
  2901.    The text assumes that the trusted public key (and related
  2902.    information) is contained in a "self-signed" certificate. This
  2903.    simplifies the description of the path processing procedure.  Note
  2904.    that the signature on the self-signed certificate does not provide
  2905.    any security services.  The trusted public key (and related
  2906.    information) may be obtained in other formats; the information is
  2907.    trusted because of other procedures used to obtain and protect it.
  2908.  
  2909.  
  2910.  
  2911.  
  2912.  
  2913.  
  2914. Housley, et. al.            Standards Track                    [Page 52]
  2915.  
  2916. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2917.  
  2918.  
  2919.    The goal of path validation is to verify the binding between a
  2920.    subject distinguished name or subject alternative name and subject
  2921.    public key, as represented in the "end entity" certificate, based on
  2922.    the public key of the "most-trusted CA".  This requires obtaining a
  2923.    sequence of certificates that support that binding.  The procedures
  2924.    performed to obtain this sequence is outside the scope of this
  2925.    section.
  2926.  
  2927.    The following text also assumes that certificates do not use subject
  2928.    or unique identifier fields or private critical extensions, as
  2929.    recommended within this profile.  However, if these components appear
  2930.    in certificates, they MUST be processed.  Finally, policy qualifiers
  2931.    are also neglected for the sake of clarity.
  2932.  
  2933.    A certification path is a sequence of n certificates where:
  2934.  
  2935.       * for all x in {1,(n-1)}, the subject of certificate x is the
  2936.       issuer of certificate x+1.
  2937.       * certificate x=1 is the the self-signed certificate, and
  2938.       * certificate x=n is the end entity certificate.
  2939.  
  2940.    This section assumes the following inputs are provided to the path
  2941.    processing logic:
  2942.  
  2943.       (a)  a certification path of length n;
  2944.  
  2945.       (b)  a set of initial policy identifiers (each comprising a
  2946.       sequence of policy element identifiers), which identifies one or
  2947.       more certificate policies, any one of which would be acceptable
  2948.       for the purposes of certification path processing, or the special
  2949.       value "any-policy";
  2950.  
  2951.       (c)  the current date/time (if not available internally to the
  2952.       certification path processing module); and
  2953.  
  2954.       (d)  the time, T, for which the validity of the path should be
  2955.       determined.  (This may be the current date/time, or some point in
  2956.       the past.)
  2957.  
  2958.    From the inputs, the procedure intializes five state variables:
  2959.  
  2960.       (a)  acceptable policy set:  A set of certificate policy
  2961.       identifiers comprising the policy or policies recognized by the
  2962.       public key user together with policies deemed equivalent through
  2963.       policy mapping. The initial value of the acceptable policy set is
  2964.       the special value "any-policy".
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970. Housley, et. al.            Standards Track                    [Page 53]
  2971.  
  2972. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  2973.  
  2974.  
  2975.       (b)  constrained subtrees:  A set of root names defining a set of
  2976.       subtrees within which all subject names in subsequent certificates
  2977.       in the certification path shall fall. The initial value is
  2978.       "unbounded".
  2979.  
  2980.       (c)  excluded subtrees:  A set of root names defining a set of
  2981.       subtrees within which no subject name in subsequent certificates
  2982.       in the certification path may fall. The initial value is "empty".
  2983.  
  2984.       (d)  explicit policy: an integer which indicates if an explicit
  2985.       policy identifier is required. The integer indicates the first
  2986.       certificate in the path where this requirement is imposed. Once
  2987.       set, this variable may be decreased, but may not be increased.
  2988.       (That is, if a certificate in the path requires explicit policy
  2989.       identifiers, a later certificate can not remove this requirement.)
  2990.       The initial value is n+1.
  2991.  
  2992.       (e)  policy mapping: an integer which indicates if policy mapping
  2993.       is permitted.  The integer indicates the last certificate on which
  2994.       policy mapping may be applied.  Once set, this variable may be
  2995.       decreased, but may not be increased. (That is, if a certificate in
  2996.       the path specifies policy mapping is not permitted, it can not be
  2997.       overriden by a later certificate.) The initial value is n+1.
  2998.  
  2999.    The actions performed by the path processing software for each
  3000.    certificate i=1 through n are described below.  The self-signed
  3001.    certificate is certificate i=1, the end entity certificate is i=n.
  3002.    The processing is performed sequentially, so that processing
  3003.    certificate i affects the state variables for processing certificate
  3004.    (i+1). Note that actions (h) through (m) are not applied to the end
  3005.    entity certificate (certificate n).
  3006.  
  3007.    The path processing actions to be performed are:
  3008.  
  3009.       (a)  Verify the basic certificate information, including:
  3010.  
  3011.          (1) the certificate was signed using the subject public key
  3012.          from certificate i-1 (in the special case i=1, this step may be
  3013.          omitted; if not, use the subject public key from the same
  3014.          certificate),
  3015.  
  3016.          (2) the certificate validity period includes time T,
  3017.  
  3018.          (3) the certificate had not been revoked at time T and is not
  3019.          currently on hold status that commenced before time T, (this
  3020.          may be determined by obtaining the appropriate CRL or status
  3021.          information, or by out-of-band mechanisms), and
  3022.  
  3023.  
  3024.  
  3025.  
  3026. Housley, et. al.            Standards Track                    [Page 54]
  3027.  
  3028. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3029.  
  3030.  
  3031.          (4) the subject and issuer names chain correctly (that is, the
  3032.          issuer of this certificate was the subject of the previous
  3033.          certificate.)
  3034.  
  3035.       (b)  Verify that the subject name and subjectAltName extension
  3036.       (critical or noncritical) is consistent with the constrained
  3037.       subtrees state variables.
  3038.  
  3039.       (c)  Verify that the subject name and subjectAltName extension
  3040.       (critical or noncritical) is consistent with the excluded subtrees
  3041.       state variables.
  3042.  
  3043.       (d)  Verify that policy information is consistent with the initial
  3044.       policy set:
  3045.  
  3046.          (1) if the explicit policy state variable is less than or equal
  3047.          to i, a policy identifier in the certificate shall be in the
  3048.          initial policy set; and
  3049.  
  3050.          (2) if the policy mapping variable is less than or equal to i,
  3051.          the policy identifier may not be mapped.
  3052.  
  3053.       (e)  Verify that policy information is consistent with the
  3054.       acceptable policy set:
  3055.  
  3056.          (1) if the certificate policies extension is marked critical,
  3057.          the intersection of the policies extension and the acceptable
  3058.          policy set shall be non-null;
  3059.  
  3060.          (2) the acceptable policy set is assigned the resulting
  3061.          intersection as its new value.
  3062.  
  3063.       (g) Verify that the intersection of the acceptable policy set and
  3064.       the initial policy set is non-null.
  3065.  
  3066.       (h)  Recognize and process any other critical extension present in
  3067.       the certificate.
  3068.  
  3069.       (i) Verify that the certificate is a CA certificate (as specified
  3070.       in a basicConstraints extension or as verified out-of-band).
  3071.  
  3072.       (j)  If permittedSubtrees is present in the certificate, set the
  3073.       constrained subtrees state variable to the intersection of its
  3074.       previous value and the value indicated in the extension field.
  3075.  
  3076.       (k)  If excludedSubtrees is present in the certificate, set the
  3077.       excluded subtrees state variable to the union of its previous
  3078.       value and the value indicated in the extension field.
  3079.  
  3080.  
  3081.  
  3082. Housley, et. al.            Standards Track                    [Page 55]
  3083.  
  3084. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3085.  
  3086.  
  3087.       (l)  If a policy constraints extension is included in the
  3088.       certificate, modify the explicit policy and policy mapping state
  3089.       variables as follows:
  3090.  
  3091.          (1) If requireExplicitPolicy is present and has value r, the
  3092.          explicit policy state variable is set to the minimum of its
  3093.          current value and the sum of r and i (the current certificate
  3094.          in the sequence).
  3095.  
  3096.          (2) If inhibitPolicyMapping is present and has value q, the
  3097.          policy mapping state variable is set to the minimum of its
  3098.          current value and the sum of q and i (the current certificate
  3099.          in the sequence).
  3100.  
  3101.       (m) If a key usage extension is marked critical, ensure the
  3102.       keyCertSign bit is set.
  3103.  
  3104.    If any one of the above checks fail, the procedure terminates,
  3105.    returning a failure indication and an appropriate reason.  If none of
  3106.    the above checks fail on the end-entity certificate, the procedure
  3107.    terminates, returning a success indication together with the set of
  3108.    all policy qualifier values encountered in the set of certificates.
  3109.  
  3110. 6.2 Extending Path Validation
  3111.  
  3112.    The path validation algorithm presented in 6.1 is based on several
  3113.    simplifying assumptions (e.g., a single trusted CA that starts all
  3114.    valid paths). This algorithm may be extended for cases where the
  3115.    assumptions do not hold.
  3116.  
  3117.    This procedure may be extended for multiple trusted CAs by providing
  3118.    a set of self-signed certificates to the validation module.  In this
  3119.    case, a valid path could begin with any one of the self-signed
  3120.    certificates.  Limitations in the trust paths for any particular key
  3121.    may be incorporated into the self-signed certificate's extensions. In
  3122.    this way, the self-signed certificates permit the path validation
  3123.    module to automatically incorporate local security policy and
  3124.    requirements.
  3125.  
  3126.    It is also possible to specify an extended version of the above
  3127.    certification path processing procedure which results in default
  3128.    behavior identical to the rules of PEM [RFC 1422].  In this extended
  3129.    version, additional inputs to the procedure are a list of one or more
  3130.    Policy Certification Authorities (PCAs) names and an indicator of the
  3131.    position in the certification path where the PCA is expected.  At the
  3132.    nominated PCA position, the CA name is compared against this list.
  3133.    If a recognized PCA name is found, then a constraint of
  3134.    SubordinateToCA is implicitly assumed for the remainder of the
  3135.  
  3136.  
  3137.  
  3138. Housley, et. al.            Standards Track                    [Page 56]
  3139.  
  3140. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3141.  
  3142.  
  3143.    certification path and processing continues.  If no valid PCA name is
  3144.    found, and if the certification path cannot be validated on the basis
  3145.    of identified policies, then the certification path is considered
  3146.    invalid.
  3147.  
  3148. 7  Algorithm Support
  3149.  
  3150.    This section describes cryptographic algorithms which may be used
  3151.    with this profile.  The section describes one-way hash functions and
  3152.    digital signature algorithms which may be used to sign certificates
  3153.    and CRLs, and identifies OIDs for public keys contained in a
  3154.    certificate.
  3155.  
  3156.    Conforming CAs and applications are not required to support the
  3157.    algorithms or algorithm identifiers described in this section.
  3158.    However, conforming CAs and applications that use the algorithms
  3159.    identified here MUST support them as specified.
  3160.  
  3161. 7.1  One-way Hash Functions
  3162.  
  3163.    This section identifies one-way hash functions for use in the
  3164.    Internet PKI.  One-way hash functions are also called message digest
  3165.    algorithms. SHA-1 is the preferred one-way hash function for the
  3166.    Internet PKI.  However, PEM uses MD2 for certificates [RFC 1422] [RFC
  3167.    1423] and MD5 is used in other legacy applications.  For this reason,
  3168.    MD2 and MD5 are included in this profile.
  3169.  
  3170. 7.1.1  MD2 One-way Hash Function
  3171.  
  3172.    MD2 was developed by Ron Rivest for RSA Data Security. RSA Data
  3173.    Security has not placed the MD2 algorithm in the public domain.
  3174.    Rather, RSA Data Security has granted license to use MD2 for non-
  3175.    commercial Internet Privacy-Enhanced Mail.  For this reason, MD2 may
  3176.    continue to be used with PEM certificates, but SHA-1 is preferred.
  3177.    MD2 produces a 128-bit "hash" of the input.  MD2 is fully described
  3178.    in RFC 1319 [RFC 1319].
  3179.  
  3180.    At the Selected Areas in Cryptography '95 conference in May 1995,
  3181.    Rogier and Chauvaud presented an attack on MD2 that can nearly find
  3182.    collisions [RC95].  Collisions occur when one can find two different
  3183.    messages that generate the same message digest.  A checksum operation
  3184.    in MD2 is the only remaining obstacle to the success of the attack.
  3185.    For this reason, the use of MD2 for new applications is discouraged.
  3186.    It is still reasonable to use MD2 to verify existing signatures, as
  3187.    the ability to find collisions in MD2 does not enable an attacker to
  3188.    find new messages having a previously computed hash value.
  3189.  
  3190.  
  3191.  
  3192.  
  3193.  
  3194. Housley, et. al.            Standards Track                    [Page 57]
  3195.  
  3196. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3197.  
  3198.  
  3199. 7.1.2  MD5 One-way Hash Function
  3200.  
  3201.    MD5 was developed by Ron Rivest for RSA Data Security. RSA Data
  3202.    Security has placed the MD5 algorithm in the public domain.  MD5
  3203.    produces a 128-bit "hash" of the input.  MD5 is fully described in
  3204.    RFC 1321 [RFC 1321].
  3205.  
  3206.    Den Boer and Bosselaers [DB94] have found pseudo-collisions for MD5,
  3207.    but there are no other known cryptanalytic results.  The use of MD5
  3208.    for new applications is discouraged.  It is still reasonable to use
  3209.    MD5 to verify existing signatures.
  3210.  
  3211. 7.1.3  SHA-1 One-way Hash Function
  3212.  
  3213.    SHA-1 was developed by the U.S. Government.  SHA-1 produces a 160-bit
  3214.    "hash" of the input. SHA-1 is fully described in FIPS 180-1 [FIPS
  3215.    180-1].
  3216.  
  3217.    SHA-1 is the one-way hash function of choice for use with both the
  3218.    RSA and DSA signature algorithms (see sec. 7.2).
  3219.  
  3220. 7.2  Signature Algorithms
  3221.  
  3222.    Certificates and CRLs described by this standard may be signed with
  3223.    any public key signature algorithm.  The certificate or CRL indicates
  3224.    the algorithm through an algorithm identifier which appears in the
  3225.    signatureAlgorithm field in a Certificate or CertificateList.  This
  3226.    algorithm identifier is an OID and has optionally associated
  3227.    parameters.  This section identifies algorithm identifiers and
  3228.    parameters that shall be used in the signatureAlgorithm field in a
  3229.    Certificate or CertificateList.
  3230.  
  3231.    RSA and DSA are the most popular signature algorithms used in the
  3232.    Internet.  Signature algorithms are always used in conjunction with a
  3233.    one-way hash function identified in section 7.1.
  3234.  
  3235.    The signature algorithm and one-way hash function used to sign a
  3236.    certificate or CRL is indicated by use of an algorithm identifier.
  3237.    An algorithm identifier is an OID, and may include associated
  3238.    parameters.  This section identifies OIDS for RSA and DSA.  The
  3239.    contents of the parameters component for each algorithm vary; details
  3240.    are provided for each algorithm.
  3241.  
  3242.    The data to be signed (e.g., the one-way hash function output value)
  3243.    is formatted for the signature algorithm to be used.  Then, a private
  3244.    key operation (e.g., RSA encryption) is performed to generate the
  3245.  
  3246.  
  3247.  
  3248.  
  3249.  
  3250. Housley, et. al.            Standards Track                    [Page 58]
  3251.  
  3252. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3253.  
  3254.  
  3255.    signature value.  This signature value is then ASN.1 encoded as a BIT
  3256.    STRING and included in the Certificate or CertificateList in the
  3257.    signature field.
  3258.  
  3259. 7.2.1  RSA Signature Algorithm
  3260.  
  3261.    A patent statement regarding the RSA algorithm can be found at the
  3262.    end of this profile.
  3263.  
  3264.    The RSA algorithm is named for its inventors: Rivest, Shamir, and
  3265.    Adleman.  This profile includes three signature algorithms based on
  3266.    the RSA asymmetric encryption algorithm. The signature algorithms
  3267.    combine RSA with either the MD2, MD5, or the SHA-1 one-way hash
  3268.    functions.
  3269.  
  3270.    The signature algorithm with MD2 and the RSA encryption algorithm is
  3271.    defined in PKCS #1 [RFC 2313].  As defined in RFC 2313, the ASN.1 OID
  3272.    used to identify this signature algorithm is:
  3273.  
  3274.         md2WithRSAEncryption OBJECT IDENTIFIER  ::=  {
  3275.             iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
  3276.             pkcs-1(1) 2  }
  3277.  
  3278.    The signature algorithm with MD5 and the RSA encryption algorithm is
  3279.    defined in PKCS #1 [RFC 2313].  As defined in RFC 2313, the ASN.1 OID
  3280.    used to identify this signature algorithm is:
  3281.  
  3282.         md5WithRSAEncryption OBJECT IDENTIFIER  ::=  {
  3283.             iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
  3284.             pkcs-1(1) 4  }
  3285.  
  3286.    The signature algorithm with SHA-1 and the RSA encryption algorithm
  3287.    is implemented using the padding and encoding conventions described
  3288.    in PKCS #1 [RFC 2313]. The message digest is computed using the SHA-1
  3289.    hash algorithm.  The ASN.1 object identifier used to identify this
  3290.    signature algorithm is:
  3291.  
  3292.         sha-1WithRSAEncryption OBJECT IDENTIFIER  ::=  {
  3293.             iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
  3294.             pkcs-1(1) 5  }
  3295.  
  3296.    When any of these three OIDs appears within the ASN.1 type
  3297.    AlgorithmIdentifier, the parameters component of that type shall be
  3298.    the ASN.1 type NULL.
  3299.  
  3300.    The RSA signature generation process and the encoding of the result
  3301.    is described in detail in RFC 2313.
  3302.  
  3303.  
  3304.  
  3305.  
  3306. Housley, et. al.            Standards Track                    [Page 59]
  3307.  
  3308. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3309.  
  3310.  
  3311. 7.2.2  DSA Signature Algorithm
  3312.  
  3313.    A patent statement regarding the DSA can be found at the end of this
  3314.    profile.
  3315.  
  3316.    The Digital Signature Algorithm (DSA) is also called the Digital
  3317.    Signature Standard (DSS).  DSA was developed by the U.S. Government,
  3318.    and DSA is used in conjunction with the the SHA-1 one-way hash
  3319.    function.  DSA is fully described in FIPS 186 [FIPS 186].  The ASN.1
  3320.    OIDs used to identify this signature algorithm are:
  3321.  
  3322.            id-dsa-with-sha1 ID  ::=  {
  3323.                    iso(1) member-body(2) us(840) x9-57 (10040)
  3324.                    x9cm(4) 3 }
  3325.  
  3326.    Where the id-dsa-with-sha1 algorithm identifier appears as the
  3327.    algorithm field in an AlgorithmIdentifier, the encoding shall omit
  3328.    the parameters field.  That is, the AlgorithmIdentifier shall be a
  3329.    SEQUENCE of one component - the OBJECT IDENTIFIER id-dsa-with-sha1.
  3330.  
  3331.    The DSA parameters in the subjectPublicKeyInfo field of the
  3332.    certificate of the issuer shall apply to the verification of the
  3333.    signature.
  3334.  
  3335.    When signing, the DSA algorithm generates two values.  These values
  3336.    are commonly referred to as r and s.  To easily transfer these two
  3337.    values as one signature, they shall be ASN.1 encoded using the
  3338.    following ASN.1 structure:
  3339.  
  3340.            Dss-Sig-Value  ::=  SEQUENCE  {
  3341.                    r       INTEGER,
  3342.                    s       INTEGER  }
  3343.  
  3344. 7.3  Subject Public Key Algorithms
  3345.  
  3346.    Certificates described by this profile may convey a public key for
  3347.    any public key algorithm. The certificate indicates the algorithm
  3348.    through an algorithm identifier.  This algorithm identifier is an OID
  3349.    and optionally associated parameters.
  3350.  
  3351.    This section identifies preferred OIDs and parameters for the RSA,
  3352.    DSA, and Diffie-Hellman algorithms.  Conforming CAs shall use the
  3353.    identified OIDs when issuing certificates containing public keys for
  3354.    these algorithms. Conforming applications supporting any of these
  3355.    algorithms shall, at a minimum, recognize the OID identified in this
  3356.    section.
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362. Housley, et. al.            Standards Track                    [Page 60]
  3363.  
  3364. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3365.  
  3366.  
  3367. 7.3.1  RSA Keys
  3368.  
  3369.    The OID rsaEncryption identifies RSA public keys.
  3370.  
  3371.         pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840)
  3372.                        rsadsi(113549) pkcs(1) 1 }
  3373.  
  3374.         rsaEncryption OBJECT IDENTIFIER ::=  { pkcs-1 1}
  3375.  
  3376.    The rsaEncryption OID is intended to be used in the algorithm field
  3377.    of a value of type AlgorithmIdentifier. The parameters field shall
  3378.    have ASN.1 type NULL for this algorithm identifier.
  3379.  
  3380.    The RSA public key shall be encoded using the ASN.1 type
  3381.    RSAPublicKey:
  3382.  
  3383.       RSAPublicKey ::= SEQUENCE {
  3384.          modulus            INTEGER, -- n
  3385.          publicExponent     INTEGER  -- e -- }
  3386.  
  3387.    where modulus is the modulus n, and publicExponent is the public
  3388.    exponent e.  The DER encoded RSAPublicKey is the value of the BIT
  3389.    STRING subjectPublicKey.
  3390.  
  3391.    This OID is used in public key certificates for both RSA signature
  3392.    keys and RSA encryption keys. The intended application for the key
  3393.    may be indicated in the key usage field (see sec. 4.2.1.3).  The use
  3394.    of a single key for both signature and encryption purposes is not
  3395.    recommended, but is not forbidden.
  3396.  
  3397.    If the keyUsage extension is present in an end entity certificate
  3398.    which conveys an RSA public key, any combination of the following
  3399.    values may be present:  digitalSignature; nonRepudiation;
  3400.    keyEncipherment; and dataEncipherment.  If the keyUsage extension is
  3401.    present in a CA certificate which conveys an RSA public key, any
  3402.    combination of the following values may be present:
  3403.    digitalSignature; nonRepudiation; keyEncipherment; dataEncipherment;
  3404.    keyCertSign; and cRLSign.  However, this specification RECOMMENDS
  3405.    that if keyCertSign or cRLSign is present, both keyEncipherment and
  3406.    dataEncipherment should not be present.
  3407.  
  3408. 7.3.2  Diffie-Hellman Key Exchange Key
  3409.  
  3410.    The Diffie-Hellman OID supported by this profile is defined by ANSI
  3411.    X9.42 [X9.42].
  3412.  
  3413.         dhpublicnumber OBJECT IDENTIFIER ::= { iso(1) member-body(2)
  3414.                   us(840) ansi-x942(10046) number-type(2) 1 }
  3415.  
  3416.  
  3417.  
  3418. Housley, et. al.            Standards Track                    [Page 61]
  3419.  
  3420. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3421.  
  3422.  
  3423.    The dhpublicnumber OID is intended to be used in the algorithm field
  3424.    of a value of type AlgorithmIdentifier. The parameters field of that
  3425.    type, which has the algorithm-specific syntax ANY DEFINED BY
  3426.    algorithm, have the ASN.1 type DomainParameters for this algorithm.
  3427.  
  3428.         DomainParameters ::= SEQUENCE {
  3429.               p       INTEGER, -- odd prime, p=jq +1
  3430.               g       INTEGER, -- generator, g
  3431.               q       INTEGER, -- factor of p-1
  3432.               j       INTEGER OPTIONAL, -- subgroup factor
  3433.               validationParms  ValidationParms OPTIONAL }
  3434.  
  3435.         ValidationParms ::= SEQUENCE {
  3436.               seed             BIT STRING,
  3437.               pgenCounter      INTEGER }
  3438.  
  3439.    The fields of type DomainParameters have the following meanings:
  3440.  
  3441.       p identifies the prime p defining the Galois field;
  3442.  
  3443.       g specifies the generator of the multiplicative subgroup of order
  3444.       g;
  3445.  
  3446.       q specifies the prime factor of p-1;
  3447.  
  3448.       j optionally specifies the value that satisfies the equation
  3449.       p=jq+1 to support the optional verification of group parameters;
  3450.  
  3451.       seed optionally specifies the bit string parameter used as the
  3452.       seed for the system parameter generation process; and
  3453.  
  3454.       pgenCounter optionally specifies the integer value output as part
  3455.       of the of the system parameter prime generation process.
  3456.  
  3457.    If either of the parameter generation components (pgencounter or
  3458.    seed) is provided, the other shall be present as well.
  3459.  
  3460.    The Diffie-Hellman public key shall be ASN.1 encoded as an INTEGER;
  3461.    this encoding shall be used as the contents (i.e., the value) of the
  3462.    subjectPublicKey component (a BIT STRING) of the subjectPublicKeyInfo
  3463.    data element.
  3464.  
  3465.       DHPublicKey ::= INTEGER -- public key, y = g^x mod p
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474. Housley, et. al.            Standards Track                    [Page 62]
  3475.  
  3476. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3477.  
  3478.  
  3479.    If the keyUsage extension is present in a certificate which conveys a
  3480.    DH public key, the following values may be present:  keyAgreement;
  3481.    encipherOnly; and decipherOnly.  At most one of encipherOnly and
  3482.    decipherOnly shall be asserted in keyUsage extension.
  3483.  
  3484. 7.3.3  DSA Signature Keys
  3485.  
  3486.    The Digital Signature Algorithm (DSA) is also known as the Digital
  3487.    Signature Standard (DSS). The DSA OID supported by this profile is
  3488.  
  3489.         id-dsa ID ::= { iso(1) member-body(2) us(840) x9-57(10040)
  3490.                   x9cm(4) 1 }
  3491.  
  3492.    The id-dsa algorithm syntax includes optional parameters.  These
  3493.    parameters are commonly referred to as p, q, and g.  When omitted,
  3494.    the parameters component shall be omitted entirely. That is, the
  3495.    AlgorithmIdentifier shall be a SEQUENCE of one component - the OBJECT
  3496.    IDENTIFIER id-dsa.
  3497.  
  3498.    If the DSA algorithm parameters are present in the
  3499.    subjectPublicKeyInfo AlgorithmIdentifier, the parameters are included
  3500.    using the following ASN.1 structure:
  3501.  
  3502.         Dss-Parms  ::=  SEQUENCE  {
  3503.             p             INTEGER,
  3504.             q             INTEGER,
  3505.             g             INTEGER  }
  3506.  
  3507.  
  3508.    If the DSA algorithm parameters are absent from the
  3509.    subjectPublicKeyInfo AlgorithmIdentifier and the CA signed the
  3510.    subject certificate using DSA, then the certificate issuer's DSA
  3511.    parameters apply to the subject's DSA key.  If the DSA algorithm
  3512.    parameters are absent from the subjectPublicKeyInfo
  3513.    AlgorithmIdentifier and the CA signed the subject certificate using a
  3514.    signature algorithm other than DSA, then the subject's DSA parameters
  3515.    are distributed by other means.  If the subjectPublicKeyInfo
  3516.    AlgorithmIdentifier field omits the parameters component and the CA
  3517.    signed the subject with a signature algorithm other than DSA, then
  3518.    clients shall reject the certificate.
  3519.  
  3520.    When signing, DSA algorithm generates two values.  These values are
  3521.    commonly referred to as r and s.  To easily transfer these two values
  3522.    as one signature, they are ASN.1 encoded using the following ASN.1
  3523.    structure:
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.  
  3530. Housley, et. al.            Standards Track                    [Page 63]
  3531.  
  3532. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3533.  
  3534.  
  3535.         Dss-Sig-Value  ::=  SEQUENCE  {
  3536.             r             INTEGER,
  3537.             s             INTEGER  }
  3538.  
  3539.    The encoded signature is conveyed as the value of the BIT STRING
  3540.    signature in a Certificate or CertificateList.
  3541.  
  3542.    The DSA public key shall be ASN.1 DER encoded as an INTEGER; this
  3543.    encoding shall be used as the contents (i.e., the value) of the
  3544.    subjectPublicKey component (a BIT STRING) of the SubjectPublicKeyInfo
  3545.    data element.
  3546.  
  3547.         DSAPublicKey ::= INTEGER -- public key, Y
  3548.  
  3549.    If the keyUsage extension is present in an end entity certificate
  3550.    which conveys a DSA public key, any combination of the following
  3551.    values may be present:  digitalSignature; and nonRepudiation.
  3552.  
  3553.    If the keyUsage extension is present in an CA certificate which
  3554.    conveys a DSA public key, any combination of the following values may
  3555.    be present:  digitalSignature; nonRepudiation; keyCertSign; and
  3556.    cRLSign.
  3557.  
  3558. 8 References
  3559.  
  3560.    [FIPS 180-1]  Federal Information Processing Standards Publication
  3561.                  (FIPS PUB) 180-1, Secure Hash Standard, 17 April 1995.
  3562.                  [Supersedes FIPS PUB 180 dated 11 May 1993.]
  3563.  
  3564.    [FIPS 186]    Federal Information Processing Standards Publication
  3565.                  (FIPS PUB) 186, Digital Signature Standard, 18 May
  3566.                  1994.
  3567.  
  3568.    [RC95]        Rogier, N. and Chauvaud, P., "The compression function
  3569.                  of MD2 is not collision free," Presented at Selected
  3570.                  Areas in Cryptography '95, May 1995.
  3571.  
  3572.    [RFC 791]     Postel, J., "Internet Protocol", STD 5, RFC 791,
  3573.                  September 1981.
  3574.  
  3575.    [RFC 822]     Crocker, D., "Standard for the format of ARPA Internet
  3576.                  text messages", STD 11, RFC 822, August 1982.
  3577.  
  3578.    [RFC 1034]    Mockapetris, P., "Domain names - concepts and
  3579.                  facilities", STD 13, RFC 1034, November 1987.
  3580.  
  3581.    [RFC 1319]    Kaliski, B., "The MD2 Message-Digest Algorithm," RFC
  3582.                  1319, April 1992.
  3583.  
  3584.  
  3585.  
  3586. Housley, et. al.            Standards Track                    [Page 64]
  3587.  
  3588. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3589.  
  3590.  
  3591.    [RFC 1321]    Rivest, R., "The MD5 Message-Digest Algorithm," RFC
  3592.                  1321, April 1992.
  3593.  
  3594.    [RFC 1422]    Kent, S.,  "Privacy Enhancement for Internet Electronic
  3595.                  Mail: Part II: Certificate-Based Key Management," RFC
  3596.                  1422, February 1993.
  3597.  
  3598.    [RFC 1423]    Balenson, D., "Privacy Enhancement for Internet
  3599.                  Electronic Mail: Part III: Algorithms, Modes, and
  3600.                  Identifiers," RFC 1423, February 1993.
  3601.  
  3602.    [RFC 1519]    Fuller, V., Li, T., Yu, J. and K. Varadhan. "Classless
  3603.                  Inter-Domain Routing (CIDR): an Address Assignment and
  3604.                  Aggregation Strategy", RFC 1519, September 1993.
  3605.  
  3606.    [RFC 1738]    Berners-Lee, T., Masinter L., and M. McCahill.
  3607.                  "Uniform Resource Locators (URL)", RFC 1738, December
  3608.                  1994.
  3609.  
  3610.    [RFC 1778]    Howes, T., Kille S., Yeong, W. and C. Robbins. "The
  3611.                  String Representation of Standard Attribute Syntaxes,"
  3612.                  RFC 1778, March 1995.
  3613.  
  3614.    [RFC 1883]    Deering, S. and R. Hinden. "Internet Protocol, Version
  3615.                  6 (IPv6) Specification", RFC 1883, December 1995.
  3616.  
  3617.    [RFC 2119]    Bradner, S., "Key words for use in RFCs to Indicate
  3618.                  Requirement Levels", BCP 14, RFC 2119, March 1997.
  3619.  
  3620.    [RFC 2247]    Kille, S., Wahl, M., Grimstad, A., Huber, R. and S.
  3621.                  Sataluri. "Using Domains in LDAP/X.500 Distinguished
  3622.                  Names", RFC 2247, January 1998.
  3623.  
  3624.    [RFC 2277]    Alvestrand, H., "IETF Policy on Character Sets and
  3625.                  Languages", RFC 2277, January 1998.
  3626.  
  3627.    [RFC 2279]    Yergeau, F., "UTF-8, a transformation format of ISO
  3628.                  10646", RFC 2279, January 1998.
  3629.  
  3630.    [RFC 2313]    Kaliski, B., "PKCS #1: RSA Encryption Version 1.5", RFC
  3631.                  2313, March 1998.
  3632.  
  3633.    [SDN.701]     SDN.701, "Message Security Protocol 4.0", Revision A
  3634.                  1997-02-06.
  3635.  
  3636.    [X.208]       CCITT Recommendation X.208: Specification of Abstract
  3637.                  Syntax Notation One (ASN.1), 1988.
  3638.  
  3639.  
  3640.  
  3641.  
  3642. Housley, et. al.            Standards Track                    [Page 65]
  3643.  
  3644. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3645.  
  3646.  
  3647.    [X.501]       ITU-T Recommendation X.501: Information Technology -
  3648.                  Open Systems Interconnection - The Directory: Models,
  3649.                  1993.
  3650.  
  3651.    [X.509]       ITU-T Recommendation X.509 (1997 E): Information
  3652.                  Technology - Open Systems Interconnection - The
  3653.                  Directory: Authentication Framework, June 1997.
  3654.  
  3655.    [X.520]       ITU-T Recommendation X.520: Information Technology -
  3656.                  Open Systems Interconnection - The Directory: Selected
  3657.                  Attribute Types, 1993.
  3658.  
  3659.    [X9.42]       ANSI X9.42-199x, Public Key Cryptography for The
  3660.                  Financial Services Industry: Agreement of Symmetric
  3661.                  Algorithm Keys Using Diffie-Hellman (Working Draft),
  3662.                  December 1997.
  3663.  
  3664.    [X9.55]       ANSI X9.55-1995, Public Key Cryptography For The
  3665.                  Financial Services Industry: Extensions To Public Key
  3666.                  Certificates And Certificate Revocation Lists, 8
  3667.                  December, 1995.
  3668.  
  3669.    [X9.57]        ANSI X9.57-199x, Public Key Cryptography For The
  3670.                  Financial Services Industry: Certificate Management
  3671.                  (Working Draft), 21 June, 1996.
  3672.  
  3673. 9  Intellectual Property Rights
  3674.  
  3675.    The IETF has been notified of intellectual property rights claimed in
  3676.    regard to some or all of the specification contained in this
  3677.    document.  For more information consult the online list of claimed
  3678.    rights.
  3679.  
  3680.    The IETF takes no position regarding the validity or scope of any
  3681.    intellectual property or other rights that might be claimed to
  3682.    pertain to the implementation or use of the technology described in
  3683.    this document or the extent to which any license under such rights
  3684.    might or might not be available; neither does it represent that it
  3685.    has made any effort to identify any such rights. Information on the
  3686.    IETF's procedures with respect to rights in standards-track and
  3687.    standards-related documentation can be found in BCP-11. Copies of
  3688.    claims of rights made available for publication and any assurances of
  3689.    licenses to be made available, or the result of an attempt made to
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698. Housley, et. al.            Standards Track                    [Page 66]
  3699.  
  3700. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3701.  
  3702.  
  3703.    obtain a general license or permission for the use of such
  3704.    proprietary rights by implementors or users of this specification can
  3705.    be obtained from the IETF Secretariat.
  3706.  
  3707. 10  Security Considerations
  3708.  
  3709.    The majority of this specification is devoted to the format and
  3710.    content of certificates and CRLs.  Since certificates and CRLs are
  3711.    digitally signed, no additional integrity service is necessary.
  3712.    Neither certificates nor CRLs need be kept secret, and unrestricted
  3713.    and anonymous access to certificates and CRLs has no security
  3714.    implications.
  3715.  
  3716.    However, security factors outside the scope of this specification
  3717.    will affect the assurance provided to certificate users.  This
  3718.    section highlights critical issues that should be considered by
  3719.    implementors, administrators, and users.
  3720.  
  3721.    The procedures performed by CAs and RAs to validate the binding of
  3722.    the subject's identity of their public key greatly affect the
  3723.    assurance that should be placed in the certificate.  Relying parties
  3724.    may wish to review the CA's certificate practice statement.  This may
  3725.    be particularly important when issuing certificates to other CAs.
  3726.  
  3727.    The use of a single key pair for both signature and other purposes is
  3728.    strongly discouraged. Use of separate key pairs for signature and key
  3729.    management provides several benefits to the users. The ramifications
  3730.    associated with loss or disclosure of a signature key are different
  3731.    from loss or disclosure of a key management key. Using separate key
  3732.    pairs permits a balanced and flexible response.  Similarly, different
  3733.    validity periods or key lengths for each key pair may be appropriate
  3734.    in some application environments. Unfortunately, some legacy
  3735.    applications (e.g., SSL) use a single key pair for signature and key
  3736.    management.
  3737.  
  3738.    The protection afforded private keys is a critical factor in
  3739.    maintaining security.  On a small scale, failure of users to protect
  3740.    their private keys will permit an attacker to masquerade as them, or
  3741.    decrypt their personal information. On a larger scale, compromise of
  3742.    a CA's private signing key may have a catastrophic effect.  If an
  3743.    attacker obtains the private key unnoticed, the attacker may issue
  3744.    bogus certificates and CRLs.  Existence of bogus certificates and
  3745.    CRLs will undermine confidence in the system. If the compromise is
  3746.    detected, all certificates issued to the CA shall be revoked,
  3747.    preventing services between its users and users of other CAs.
  3748.    Rebuilding after such a compromise will be problematic, so CAs are
  3749.    advised to implement a combination of strong technical measures
  3750.    (e.g., tamper-resistant cryptographic modules) and appropriate
  3751.  
  3752.  
  3753.  
  3754. Housley, et. al.            Standards Track                    [Page 67]
  3755.  
  3756. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3757.  
  3758.  
  3759.    management procedures (e.g., separation of duties) to avoid such an
  3760.    incident.
  3761.  
  3762.    Loss of a CA's private signing key may also be problematic.  The CA
  3763.    would not be able to produce CRLs or perform normal key rollover.
  3764.    CAs are advised to maintain secure backup for signing keys.  The
  3765.    security of the key backup procedures is a critical factor in
  3766.    avoiding key compromise.
  3767.  
  3768.    The availability and freshness of revocation information will affect
  3769.    the degree of assurance that should be placed in a certificate.
  3770.    While certificates expire naturally, events may occur during its
  3771.    natural lifetime which negate the binding between the subject and
  3772.    public key.  If revocation information is untimely or unavailable,
  3773.    the assurance associated with the binding is clearly reduced.
  3774.    Similarly, implementations of the Path Validation mechanism described
  3775.    in section 6 that omit revocation checking provide less assurance
  3776.    than those that support it.
  3777.  
  3778.    The path validation algorithm depends on the certain knowledge of the
  3779.    public keys (and other information) about one or more trusted CAs.
  3780.    The decision to trust a CA is an important decision as it ultimately
  3781.    determines the trust afforded a certificate. The authenticated
  3782.    distribution of trusted CA public keys (usually in the form of a
  3783.    "self-signed" certificate) is a security critical out of band process
  3784.    that is beyond the scope of this specification.
  3785.  
  3786.    In addition, where a key compromise or CA failure occurs for a
  3787.    trusted CA, the user will need to modify the information provided to
  3788.    the path validation routine.  Selection of too many trusted CAs will
  3789.    make the trusted CA information difficult to maintain.  On the other
  3790.    hand, selection of only one trusted CA may limit users to a closed
  3791.    community of users until a global PKI emerges.
  3792.  
  3793.    The quality of implementations that process certificates may also
  3794.    affect the degree of assurance provided.  The path validation
  3795.    algorithm described in section 6 relies upon the integrity of the
  3796.    trusted CA information, and especially the integrity of the public
  3797.    keys associated with the trusted CAs.  By substituting public keys
  3798.    for which an attacker has the private key, an attacker could trick
  3799.    the user into accepting false certificates.
  3800.  
  3801.    The binding between a key and certificate subject cannot be stronger
  3802.    than the cryptographic module implementation and algorithms used to
  3803.    generate the signature.  Short key lengths or weak hash algorithms
  3804.    will limit the utility of a certificate.  CAs are encouraged to note
  3805.    advances in cryptology so they can employ strong cryptographic
  3806.    techniques.  In addition, CAs should decline to issue certificates to
  3807.  
  3808.  
  3809.  
  3810. Housley, et. al.            Standards Track                    [Page 68]
  3811.  
  3812. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3813.  
  3814.  
  3815.    CAs or end entities that generate weak signatures.
  3816.  
  3817.    Inconsistent application of name comparison rules may result in
  3818.    acceptance of invalid X.509 certification paths, or rejection of
  3819.    valid ones.  The X.500 series of specifications defines rules for
  3820.    comparing distinguished names require comparison of strings without
  3821.    regard to case, character set, multi-character white space substring,
  3822.    or leading and trailing white space.  This specification relaxes
  3823.    these requirements, requiring support for binary comparison at a
  3824.    minimum.
  3825.  
  3826.    CAs shall encode the distinguished name in the subject field of a CA
  3827.    certificate identically to the distinguished name in the issuer field
  3828.    in certificates issued by the latter CA.  If CAs use different
  3829.    encodings, implementations of this specification may fail to
  3830.    recognize name chains for paths that include this certificate.  As a
  3831.    consequence, valid paths could be rejected.
  3832.  
  3833.    In addition, name constraints for distinguished names shall be stated
  3834.    identically to the encoding used in the subject field or
  3835.    subjectAltName extension.  If not, (1) name constraints stated as
  3836.    excludedSubTrees will not match and invalid paths will be accepted
  3837.    and (2) name constraints expressed as permittedSubtrees will not
  3838.    match and valid paths will be rejected.  To avoid acceptance of
  3839.    invalid paths, CAs should state name constraints for distinguished
  3840.    names as permittedSubtrees where ever possible.
  3841.  
  3842.  
  3843.  
  3844.  
  3845.  
  3846.  
  3847.  
  3848.  
  3849.  
  3850.  
  3851.  
  3852.  
  3853.  
  3854.  
  3855.  
  3856.  
  3857.  
  3858.  
  3859.  
  3860.  
  3861.  
  3862.  
  3863.  
  3864.  
  3865.  
  3866. Housley, et. al.            Standards Track                    [Page 69]
  3867.  
  3868. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3869.  
  3870.  
  3871. Appendix A. Psuedo-ASN.1 Structures and OIDs
  3872.  
  3873.    This section describes data objects used by conforming PKI components
  3874.    in an "ASN.1-like" syntax.  This syntax is a hybrid of the 1988 and
  3875.    1993 ASN.1 syntaxes.  The 1988 ASN.1 syntax is augmented with 1993
  3876.    UNIVERSAL Types UniversalString, BMPString and UTF8String.
  3877.  
  3878.    The ASN.1 syntax does not permit the inclusion of type statements in
  3879.    the ASN.1 module, and the 1993 ASN.1 standard does not permit use of
  3880.    the new UNIVERSAL types in modules using the 1988 syntax.  As a
  3881.    result, this module does not conform to either version of the ASN.1
  3882.    standard.
  3883.  
  3884.    This appendix may be converted into 1988 ASN.1 by replacing the
  3885.    defintions for the UNIVERSAL Types with the 1988 catch-all "ANY".
  3886.  
  3887. A.1 Explicitly Tagged Module, 1988 Syntax
  3888.  
  3889. PKIX1Explicit88 {iso(1) identified-organization(3) dod(6) internet(1)
  3890.   security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-explicit-88(1)}
  3891.  
  3892.  
  3893. DEFINITIONS EXPLICIT TAGS ::=
  3894.  
  3895. BEGIN
  3896.  
  3897. -- EXPORTS ALL --
  3898.  
  3899. -- IMPORTS NONE --
  3900.  
  3901. -- UNIVERSAL Types defined in '93 and '98 ASN.1
  3902. -- but required by this specification
  3903.  
  3904. UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING
  3905.         -- UniversalString is defined in ASN.1:1993
  3906.  
  3907. BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING
  3908.       -- BMPString is the subtype of UniversalString and models
  3909.        -- the Basic Multilingual Plane of ISO/IEC/ITU 10646-1
  3910.  
  3911. UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING
  3912.         -- The content of this type conforms to RFC 2279.
  3913.  
  3914. --
  3915. -- PKIX specific OIDs
  3916.  
  3917. id-pkix  OBJECT IDENTIFIER  ::=
  3918.          { iso(1) identified-organization(3) dod(6) internet(1)
  3919.  
  3920.  
  3921.  
  3922. Housley, et. al.            Standards Track                    [Page 70]
  3923.  
  3924. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3925.  
  3926.  
  3927.                     security(5) mechanisms(5) pkix(7) }
  3928. -- PKIX arcs
  3929.  
  3930. id-pe OBJECT IDENTIFIER  ::=  { id-pkix 1 }
  3931.         -- arc for private certificate extensions
  3932. id-qt OBJECT IDENTIFIER ::= { id-pkix 2 }
  3933.         -- arc for policy qualifier types
  3934. id-kp OBJECT IDENTIFIER ::= { id-pkix 3 }
  3935.         -- arc for extended key purpose OIDS
  3936. id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
  3937.         -- arc for access descriptors
  3938.  
  3939. -- policyQualifierIds for Internet policy qualifiers
  3940.  
  3941. id-qt-cps      OBJECT IDENTIFIER ::=  { id-qt 1 }
  3942.         -- OID for CPS qualifier
  3943. id-qt-unotice  OBJECT IDENTIFIER ::=  { id-qt 2 }
  3944.         -- OID for user notice qualifier
  3945.  
  3946. -- access descriptor definitions
  3947.  
  3948. id-ad-ocsp      OBJECT IDENTIFIER ::= { id-ad 1 }
  3949. id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
  3950.  
  3951. -- attribute data types --
  3952.  
  3953. Attribute       ::=     SEQUENCE {
  3954.         type            AttributeType,
  3955.         values  SET OF AttributeValue
  3956.                 -- at least one value is required -- }
  3957.  
  3958. AttributeType           ::=   OBJECT IDENTIFIER
  3959.  
  3960. AttributeValue          ::=   ANY
  3961.  
  3962. AttributeTypeAndValue           ::=     SEQUENCE {
  3963.         type    AttributeType,
  3964.         value   AttributeValue }
  3965.  
  3966. -- suggested naming attributes: Definition of the following
  3967. --  information object set may be augmented to meet local
  3968. --  requirements.  Note that deleting members of the set may
  3969. --  prevent interoperability with conforming implementations.
  3970. --  presented in pairs: the AttributeType followed by the
  3971. --  type definition for the corresponding AttributeValue
  3972.  
  3973. --Arc for standard naming attributes
  3974. id-at           OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 4}
  3975.  
  3976.  
  3977.  
  3978. Housley, et. al.            Standards Track                    [Page 71]
  3979.  
  3980. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  3981.  
  3982.  
  3983. -- Attributes of type NameDirectoryString
  3984. id-at-name              AttributeType   ::=     {id-at 41}
  3985. id-at-surname           AttributeType   ::=     {id-at 4}
  3986. id-at-givenName         AttributeType   ::=     {id-at 42}
  3987. id-at-initials          AttributeType   ::=     {id-at 43}
  3988. id-at-generationQualifier       AttributeType   ::=     {id-at 44}
  3989.  
  3990. X520name        ::= CHOICE {
  3991.       teletexString         TeletexString (SIZE (1..ub-name)),
  3992.       printableString       PrintableString (SIZE (1..ub-name)),
  3993.       universalString       UniversalString (SIZE (1..ub-name)),
  3994.       utf8String            UTF8String (SIZE (1..ub-name)),
  3995.       bmpString             BMPString (SIZE(1..ub-name))   }
  3996.  
  3997. --
  3998.  
  3999. id-at-commonName        AttributeType   ::=     {id-at 3}
  4000.  
  4001. X520CommonName  ::=      CHOICE {
  4002.       teletexString         TeletexString (SIZE (1..ub-common-name)),
  4003.       printableString       PrintableString (SIZE (1..ub-common-name)),
  4004.       universalString       UniversalString (SIZE (1..ub-common-name)),
  4005.       utf8String            UTF8String (SIZE (1..ub-common-name)),
  4006.       bmpString             BMPString (SIZE(1..ub-common-name))   }
  4007.  
  4008. --
  4009.  
  4010. id-at-localityName      AttributeType   ::=     {id-at 7}
  4011.  
  4012. X520LocalityName ::= CHOICE {
  4013.       teletexString       TeletexString (SIZE (1..ub-locality-name)),
  4014.       printableString     PrintableString (SIZE (1..ub-locality-name)),
  4015.       universalString     UniversalString (SIZE (1..ub-locality-name)),
  4016.       utf8String          UTF8String (SIZE (1..ub-locality-name)),
  4017.       bmpString           BMPString (SIZE(1..ub-locality-name))   }
  4018.  
  4019. --
  4020.  
  4021. id-at-stateOrProvinceName       AttributeType   ::=     {id-at 8}
  4022.  
  4023. X520StateOrProvinceName         ::= CHOICE {
  4024.       teletexString       TeletexString (SIZE (1..ub-state-name)),
  4025.       printableString     PrintableString (SIZE (1..ub-state-name)),
  4026.       universalString     UniversalString (SIZE (1..ub-state-name)),
  4027.       utf8String          UTF8String (SIZE (1..ub-state-name)),
  4028.       bmpString           BMPString (SIZE(1..ub-state-name))   }
  4029.  
  4030. --
  4031.  
  4032.  
  4033.  
  4034. Housley, et. al.            Standards Track                    [Page 72]
  4035.  
  4036. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4037.  
  4038.  
  4039. id-at-organizationName          AttributeType   ::=     {id-at 10}
  4040.  
  4041. X520OrganizationName ::= CHOICE {
  4042.   teletexString     TeletexString (SIZE (1..ub-organization-name)),
  4043.   printableString   PrintableString (SIZE (1..ub-organization-name)),
  4044.   universalString   UniversalString (SIZE (1..ub-organization-name)),
  4045.   utf8String        UTF8String (SIZE (1..ub-organization-name)),
  4046.   bmpString         BMPString (SIZE(1..ub-organization-name))   }
  4047.  
  4048. --
  4049.  
  4050. id-at-organizationalUnitName    AttributeType   ::=     {id-at 11}
  4051.  
  4052. X520OrganizationalUnitName ::= CHOICE {
  4053.  teletexString    TeletexString (SIZE (1..ub-organizational-unit-name)),
  4054.  printableString        PrintableString
  4055.                       (SIZE (1..ub-organizational-unit-name)),
  4056.  universalString        UniversalString
  4057.                       (SIZE (1..ub-organizational-unit-name)),
  4058.  utf8String       UTF8String (SIZE (1..ub-organizational-unit-name)),
  4059.  bmpString        BMPString (SIZE(1..ub-organizational-unit-name))   }
  4060.  
  4061. --
  4062.  
  4063. id-at-title     AttributeType   ::=     {id-at 12}
  4064.  
  4065. X520Title ::=   CHOICE {
  4066.       teletexString         TeletexString (SIZE (1..ub-title)),
  4067.       printableString       PrintableString (SIZE (1..ub-title)),
  4068.       universalString       UniversalString (SIZE (1..ub-title)),
  4069.       utf8String            UTF8String (SIZE (1..ub-title)),
  4070.       bmpString             BMPString (SIZE(1..ub-title))   }
  4071.  
  4072. --
  4073.  
  4074. id-at-dnQualifier       AttributeType   ::=     {id-at 46}
  4075. X520dnQualifier ::=     PrintableString
  4076.  
  4077. id-at-countryName       AttributeType   ::=     {id-at 6}
  4078. X520countryName ::=     PrintableString (SIZE (2)) -- IS 3166 codes
  4079.  
  4080.  
  4081.  -- Legacy attributes
  4082.  
  4083. pkcs-9 OBJECT IDENTIFIER ::=
  4084.        { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 }
  4085.  
  4086. emailAddress AttributeType      ::= { pkcs-9 1 }
  4087.  
  4088.  
  4089.  
  4090. Housley, et. al.            Standards Track                    [Page 73]
  4091.  
  4092. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4093.  
  4094.  
  4095. Pkcs9email ::= IA5String (SIZE (1..ub-emailaddress-length))
  4096.  
  4097. -- naming data types --
  4098.  
  4099. Name            ::=   CHOICE { -- only one possibility for now --
  4100.                                  rdnSequence  RDNSequence }
  4101.  
  4102. RDNSequence     ::=   SEQUENCE OF RelativeDistinguishedName
  4103.  
  4104. DistinguishedName       ::=   RDNSequence
  4105.  
  4106. RelativeDistinguishedName  ::=
  4107.                     SET SIZE (1 .. MAX) OF AttributeTypeAndValue
  4108.  
  4109. -- Directory string type --
  4110.  
  4111. DirectoryString ::= CHOICE {
  4112.       teletexString             TeletexString (SIZE (1..MAX)),
  4113.       printableString           PrintableString (SIZE (1..MAX)),
  4114.       universalString           UniversalString (SIZE (1..MAX)),
  4115.       utf8String              UTF8String (SIZE (1..MAX)),
  4116.       bmpString               BMPString (SIZE(1..MAX))   }
  4117.  
  4118. -- certificate and CRL specific structures begin here
  4119.  
  4120. Certificate  ::=  SEQUENCE  {
  4121.      tbsCertificate       TBSCertificate,
  4122.      signatureAlgorithm   AlgorithmIdentifier,
  4123.      signature            BIT STRING  }
  4124.  
  4125. TBSCertificate  ::=  SEQUENCE  {
  4126.      version         [0]  Version DEFAULT v1,
  4127.      serialNumber         CertificateSerialNumber,
  4128.      signature            AlgorithmIdentifier,
  4129.      issuer               Name,
  4130.      validity             Validity,
  4131.      subject              Name,
  4132.      subjectPublicKeyInfo SubjectPublicKeyInfo,
  4133.      issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
  4134.                           -- If present, version shall be v2 or v3
  4135.      subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
  4136.                           -- If present, version shall be v2 or v3
  4137.      extensions      [3]  Extensions OPTIONAL
  4138.                           -- If present, version shall be v3 --  }
  4139.  
  4140. Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }
  4141.  
  4142. CertificateSerialNumber  ::=  INTEGER
  4143.  
  4144.  
  4145.  
  4146. Housley, et. al.            Standards Track                    [Page 74]
  4147.  
  4148. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4149.  
  4150.  
  4151. Validity ::= SEQUENCE {
  4152.      notBefore      Time,
  4153.      notAfter       Time }
  4154.  
  4155. Time ::= CHOICE {
  4156.      utcTime        UTCTime,
  4157.      generalTime    GeneralizedTime }
  4158.  
  4159. UniqueIdentifier  ::=  BIT STRING
  4160.  
  4161. SubjectPublicKeyInfo  ::=  SEQUENCE  {
  4162.      algorithm            AlgorithmIdentifier,
  4163.      subjectPublicKey     BIT STRING  }
  4164.  
  4165. Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension
  4166.  
  4167. Extension  ::=  SEQUENCE  {
  4168.      extnID      OBJECT IDENTIFIER,
  4169.      critical    BOOLEAN DEFAULT FALSE,
  4170.      extnValue   OCTET STRING  }
  4171.  
  4172. -- CRL structures
  4173.  
  4174. CertificateList  ::=  SEQUENCE  {
  4175.      tbsCertList          TBSCertList,
  4176.      signatureAlgorithm   AlgorithmIdentifier,
  4177.      signature            BIT STRING  }
  4178.  
  4179. TBSCertList  ::=  SEQUENCE  {
  4180.      version                 Version OPTIONAL,
  4181.                                   -- if present, shall be v2
  4182.      signature               AlgorithmIdentifier,
  4183.      issuer                  Name,
  4184.      thisUpdate              Time,
  4185.      nextUpdate              Time OPTIONAL,
  4186.      revokedCertificates     SEQUENCE OF SEQUENCE  {
  4187.           userCertificate         CertificateSerialNumber,
  4188.           revocationDate          Time,
  4189.           crlEntryExtensions      Extensions OPTIONAL
  4190.                                          -- if present, shall be v2
  4191.                                }  OPTIONAL,
  4192.      crlExtensions           [0] Extensions OPTIONAL
  4193.                                          -- if present, shall be v2 -- }
  4194.  
  4195. -- Version, Time, CertificateSerialNumber, and Extensions were
  4196. -- defined earlier for use in the certificate structure
  4197.  
  4198. AlgorithmIdentifier  ::=  SEQUENCE  {
  4199.  
  4200.  
  4201.  
  4202. Housley, et. al.            Standards Track                    [Page 75]
  4203.  
  4204. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4205.  
  4206.  
  4207.      algorithm               OBJECT IDENTIFIER,
  4208.      parameters              ANY DEFINED BY algorithm OPTIONAL  }
  4209.                                 -- contains a value of the type
  4210.                                 -- registered for use with the
  4211.                                 -- algorithm object identifier value
  4212.  
  4213. -- Algorithm OIDs and parameter structures
  4214.  
  4215. pkcs-1 OBJECT IDENTIFIER ::= {
  4216.      iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 }
  4217.  
  4218. rsaEncryption OBJECT IDENTIFIER ::=  { pkcs-1 1 }
  4219.  
  4220. md2WithRSAEncryption OBJECT IDENTIFIER  ::=  { pkcs-1 2 }
  4221.  
  4222. md5WithRSAEncryption OBJECT IDENTIFIER  ::=  { pkcs-1 4 }
  4223.  
  4224. sha1WithRSAEncryption OBJECT IDENTIFIER  ::=  { pkcs-1 5 }
  4225.  
  4226. id-dsa-with-sha1 OBJECT IDENTIFIER ::=  {
  4227.      iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 }
  4228.  
  4229. Dss-Sig-Value  ::=  SEQUENCE  {
  4230.      r       INTEGER,
  4231.      s       INTEGER  }
  4232.  
  4233. dhpublicnumber OBJECT IDENTIFIER ::= {
  4234.      iso(1) member-body(2) us(840) ansi-x942(10046) number-type(2) 1 }
  4235.  
  4236. DomainParameters ::= SEQUENCE {
  4237.      p       INTEGER, -- odd prime, p=jq +1
  4238.      g       INTEGER, -- generator, g
  4239.      q       INTEGER, -- factor of p-1
  4240.      j       INTEGER OPTIONAL, -- subgroup factor, j>= 2
  4241.      validationParms  ValidationParms OPTIONAL }
  4242.  
  4243. ValidationParms ::= SEQUENCE {
  4244.      seed             BIT STRING,
  4245.      pgenCounter      INTEGER }
  4246.  
  4247. id-dsa OBJECT IDENTIFIER ::= {
  4248.      iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 }
  4249.  
  4250. Dss-Parms  ::=  SEQUENCE  {
  4251.      p             INTEGER,
  4252.      q             INTEGER,
  4253.      g             INTEGER  }
  4254.  
  4255.  
  4256.  
  4257.  
  4258. Housley, et. al.            Standards Track                    [Page 76]
  4259.  
  4260. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4261.  
  4262.  
  4263. -- x400 address syntax starts here
  4264. --      OR Names
  4265.  
  4266. ORAddress ::= SEQUENCE {
  4267.    built-in-standard-attributes BuiltInStandardAttributes,
  4268.    built-in-domain-defined-attributes
  4269.                         BuiltInDomainDefinedAttributes OPTIONAL,
  4270.    -- see also teletex-domain-defined-attributes
  4271.    extension-attributes ExtensionAttributes OPTIONAL }
  4272. --      The OR-address is semantically absent from the OR-name if the
  4273. --      built-in-standard-attribute sequence is empty and the
  4274. --      built-in-domain-defined-attributes and extension-attributes are
  4275. --      both omitted.
  4276.  
  4277. --      Built-in Standard Attributes
  4278.  
  4279. BuiltInStandardAttributes ::= SEQUENCE {
  4280.    country-name CountryName OPTIONAL,
  4281.    administration-domain-name AdministrationDomainName OPTIONAL,
  4282.    network-address      [0] NetworkAddress OPTIONAL,
  4283.    -- see also extended-network-address
  4284.    terminal-identifier  [1] TerminalIdentifier OPTIONAL,
  4285.    private-domain-name  [2] PrivateDomainName OPTIONAL,
  4286.    organization-name    [3] OrganizationName OPTIONAL,
  4287.    -- see also teletex-organization-name
  4288.    numeric-user-identifier      [4] NumericUserIdentifier OPTIONAL,
  4289.    personal-name        [5] PersonalName OPTIONAL,
  4290.    -- see also teletex-personal-name
  4291.    organizational-unit-names    [6] OrganizationalUnitNames OPTIONAL
  4292.    -- see also teletex-organizational-unit-names -- }
  4293.  
  4294. CountryName ::= [APPLICATION 1] CHOICE {
  4295.    x121-dcc-code NumericString
  4296.                 (SIZE (ub-country-name-numeric-length)),
  4297.    iso-3166-alpha2-code PrintableString
  4298.                 (SIZE (ub-country-name-alpha-length)) }
  4299.  
  4300. AdministrationDomainName ::= [APPLICATION 2] CHOICE {
  4301.    numeric NumericString (SIZE (0..ub-domain-name-length)),
  4302.    printable PrintableString (SIZE (0..ub-domain-name-length)) }
  4303.  
  4304. NetworkAddress ::= X121Address  -- see also extended-network-address
  4305.  
  4306. X121Address ::= NumericString (SIZE (1..ub-x121-address-length))
  4307.  
  4308. TerminalIdentifier ::= PrintableString (SIZE (1..ub-terminal-id-length))
  4309.  
  4310. PrivateDomainName ::= CHOICE {
  4311.  
  4312.  
  4313.  
  4314. Housley, et. al.            Standards Track                    [Page 77]
  4315.  
  4316. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4317.  
  4318.  
  4319.    numeric NumericString (SIZE (1..ub-domain-name-length)),
  4320.    printable PrintableString (SIZE (1..ub-domain-name-length)) }
  4321.  
  4322. OrganizationName ::= PrintableString
  4323.                             (SIZE (1..ub-organization-name-length))
  4324. -- see also teletex-organization-name
  4325.  
  4326. NumericUserIdentifier ::= NumericString
  4327.                             (SIZE (1..ub-numeric-user-id-length))
  4328.  
  4329. PersonalName ::= SET {
  4330.    surname [0] PrintableString (SIZE (1..ub-surname-length)),
  4331.    given-name [1] PrintableString
  4332.                         (SIZE (1..ub-given-name-length)) OPTIONAL,
  4333.    initials [2] PrintableString (SIZE (1..ub-initials-length)) OPTIONAL,
  4334.    generation-qualifier [3] PrintableString
  4335.                 (SIZE (1..ub-generation-qualifier-length)) OPTIONAL }
  4336. -- see also teletex-personal-name
  4337.  
  4338. OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
  4339.                                         OF OrganizationalUnitName
  4340. -- see also teletex-organizational-unit-names
  4341.  
  4342. OrganizationalUnitName ::= PrintableString (SIZE
  4343.                         (1..ub-organizational-unit-name-length))
  4344.  
  4345. --      Built-in Domain-defined Attributes
  4346.  
  4347. BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
  4348.                                 (1..ub-domain-defined-attributes) OF
  4349.                                 BuiltInDomainDefinedAttribute
  4350.  
  4351. BuiltInDomainDefinedAttribute ::= SEQUENCE {
  4352.    type PrintableString (SIZE
  4353.                         (1..ub-domain-defined-attribute-type-length)),
  4354.    value PrintableString (SIZE
  4355.                         (1..ub-domain-defined-attribute-value-length))}
  4356.  
  4357. --      Extension Attributes
  4358.  
  4359. ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF
  4360.                         ExtensionAttribute
  4361.  
  4362. ExtensionAttribute ::=  SEQUENCE {
  4363.    extension-attribute-type [0] INTEGER (0..ub-extension-attributes),
  4364.    extension-attribute-value [1]
  4365.                         ANY DEFINED BY extension-attribute-type }
  4366.  
  4367.  
  4368.  
  4369.  
  4370. Housley, et. al.            Standards Track                    [Page 78]
  4371.  
  4372. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4373.  
  4374.  
  4375. -- Extension types and attribute values
  4376. --
  4377.  
  4378. common-name INTEGER ::= 1
  4379.  
  4380. CommonName ::= PrintableString (SIZE (1..ub-common-name-length))
  4381.  
  4382. teletex-common-name INTEGER ::= 2
  4383.  
  4384. TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length))
  4385.  
  4386. teletex-organization-name INTEGER ::= 3
  4387.  
  4388. TeletexOrganizationName ::=
  4389.                 TeletexString (SIZE (1..ub-organization-name-length))
  4390.  
  4391. teletex-personal-name INTEGER ::= 4
  4392.  
  4393. TeletexPersonalName ::= SET {
  4394.    surname [0] TeletexString (SIZE (1..ub-surname-length)),
  4395.    given-name [1] TeletexString
  4396.                 (SIZE (1..ub-given-name-length)) OPTIONAL,
  4397.    initials [2] TeletexString (SIZE (1..ub-initials-length)) OPTIONAL,
  4398.    generation-qualifier [3] TeletexString (SIZE
  4399.                 (1..ub-generation-qualifier-length)) OPTIONAL }
  4400.  
  4401. teletex-organizational-unit-names INTEGER ::= 5
  4402.  
  4403. TeletexOrganizationalUnitNames ::= SEQUENCE SIZE
  4404.         (1..ub-organizational-units) OF TeletexOrganizationalUnitName
  4405.  
  4406. TeletexOrganizationalUnitName ::= TeletexString
  4407.                         (SIZE (1..ub-organizational-unit-name-length))
  4408.  
  4409. pds-name INTEGER ::= 7
  4410.  
  4411. PDSName ::= PrintableString (SIZE (1..ub-pds-name-length))
  4412.  
  4413. physical-delivery-country-name INTEGER ::= 8
  4414.  
  4415. PhysicalDeliveryCountryName ::= CHOICE {
  4416.    x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)),
  4417.    iso-3166-alpha2-code PrintableString
  4418.                         (SIZE (ub-country-name-alpha-length)) }
  4419.  
  4420. postal-code INTEGER ::= 9
  4421.  
  4422. PostalCode ::= CHOICE {
  4423.  
  4424.  
  4425.  
  4426. Housley, et. al.            Standards Track                    [Page 79]
  4427.  
  4428. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4429.  
  4430.  
  4431.    numeric-code NumericString (SIZE (1..ub-postal-code-length)),
  4432.    printable-code PrintableString (SIZE (1..ub-postal-code-length)) }
  4433.  
  4434. physical-delivery-office-name INTEGER ::= 10
  4435.  
  4436. PhysicalDeliveryOfficeName ::= PDSParameter
  4437.  
  4438. physical-delivery-office-number INTEGER ::= 11
  4439.  
  4440. PhysicalDeliveryOfficeNumber ::= PDSParameter
  4441.  
  4442. extension-OR-address-components INTEGER ::= 12
  4443.  
  4444. ExtensionORAddressComponents ::= PDSParameter
  4445.  
  4446. physical-delivery-personal-name INTEGER ::= 13
  4447.  
  4448. PhysicalDeliveryPersonalName ::= PDSParameter
  4449.  
  4450. physical-delivery-organization-name INTEGER ::= 14
  4451.  
  4452. PhysicalDeliveryOrganizationName ::= PDSParameter
  4453.  
  4454. extension-physical-delivery-address-components INTEGER ::= 15
  4455.  
  4456. ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter
  4457.  
  4458. unformatted-postal-address INTEGER ::= 16
  4459.  
  4460. UnformattedPostalAddress ::= SET {
  4461.    printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF
  4462.            PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL,
  4463.    teletex-string TeletexString
  4464.          (SIZE (1..ub-unformatted-address-length)) OPTIONAL }
  4465.  
  4466. street-address INTEGER ::= 17
  4467.  
  4468. StreetAddress ::= PDSParameter
  4469.  
  4470. post-office-box-address INTEGER ::= 18
  4471.  
  4472. PostOfficeBoxAddress ::= PDSParameter
  4473.  
  4474. poste-restante-address INTEGER ::= 19
  4475.  
  4476. PosteRestanteAddress ::= PDSParameter
  4477.  
  4478. unique-postal-name INTEGER ::= 20
  4479.  
  4480.  
  4481.  
  4482. Housley, et. al.            Standards Track                    [Page 80]
  4483.  
  4484. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4485.  
  4486.  
  4487. UniquePostalName ::= PDSParameter
  4488.  
  4489. local-postal-attributes INTEGER ::= 21
  4490.  
  4491. LocalPostalAttributes ::= PDSParameter
  4492.  
  4493. PDSParameter ::= SET {
  4494.    printable-string PrintableString
  4495.                 (SIZE(1..ub-pds-parameter-length)) OPTIONAL,
  4496.    teletex-string TeletexString
  4497.                 (SIZE(1..ub-pds-parameter-length)) OPTIONAL }
  4498.  
  4499. extended-network-address INTEGER ::= 22
  4500.  
  4501. ExtendedNetworkAddress ::= CHOICE {
  4502.    e163-4-address SEQUENCE {
  4503.         number [0] NumericString (SIZE (1..ub-e163-4-number-length)),
  4504.         sub-address [1] NumericString
  4505.                 (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL },
  4506.    psap-address [0] PresentationAddress }
  4507.  
  4508. PresentationAddress ::= SEQUENCE {
  4509.         pSelector       [0] EXPLICIT OCTET STRING OPTIONAL,
  4510.         sSelector       [1] EXPLICIT OCTET STRING OPTIONAL,
  4511.         tSelector       [2] EXPLICIT OCTET STRING OPTIONAL,
  4512.         nAddresses      [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING }
  4513.  
  4514. terminal-type  INTEGER ::= 23
  4515.  
  4516. TerminalType ::= INTEGER {
  4517.    telex (3),
  4518.    teletex (4),
  4519.    g3-facsimile (5),
  4520.    g4-facsimile (6),
  4521.    ia5-terminal (7),
  4522.    videotex (8) } (0..ub-integer-options)
  4523.  
  4524. --      Extension Domain-defined Attributes
  4525.  
  4526. teletex-domain-defined-attributes INTEGER ::= 6
  4527.  
  4528. TeletexDomainDefinedAttributes ::= SEQUENCE SIZE
  4529.    (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute
  4530.  
  4531. TeletexDomainDefinedAttribute ::= SEQUENCE {
  4532.         type TeletexString
  4533.                (SIZE (1..ub-domain-defined-attribute-type-length)),
  4534.         value TeletexString
  4535.  
  4536.  
  4537.  
  4538. Housley, et. al.            Standards Track                    [Page 81]
  4539.  
  4540. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4541.  
  4542.  
  4543.                (SIZE (1..ub-domain-defined-attribute-value-length)) }
  4544.  
  4545. --  specifications of Upper Bounds shall be regarded as mandatory
  4546. --  from Annex B of ITU-T X.411 Reference Definition of MTS Parameter
  4547. --  Upper Bounds
  4548.  
  4549. --      Upper Bounds
  4550. ub-name INTEGER ::=     32768
  4551. ub-common-name  INTEGER ::=     64
  4552. ub-locality-name        INTEGER ::=     128
  4553. ub-state-name   INTEGER ::=     128
  4554. ub-organization-name    INTEGER ::=     64
  4555. ub-organizational-unit-name     INTEGER ::=     64
  4556. ub-title        INTEGER ::=     64
  4557. ub-match        INTEGER ::=     128
  4558.  
  4559. ub-emailaddress-length INTEGER ::= 128
  4560.  
  4561. ub-common-name-length INTEGER ::= 64
  4562. ub-country-name-alpha-length INTEGER ::= 2
  4563. ub-country-name-numeric-length INTEGER ::= 3
  4564. ub-domain-defined-attributes INTEGER ::= 4
  4565. ub-domain-defined-attribute-type-length INTEGER ::= 8
  4566. ub-domain-defined-attribute-value-length INTEGER ::= 128
  4567. ub-domain-name-length INTEGER ::= 16
  4568. ub-extension-attributes INTEGER ::= 256
  4569. ub-e163-4-number-length INTEGER ::= 15
  4570. ub-e163-4-sub-address-length INTEGER ::= 40
  4571. ub-generation-qualifier-length INTEGER ::= 3
  4572. ub-given-name-length INTEGER ::= 16
  4573. ub-initials-length INTEGER ::= 5
  4574. ub-integer-options INTEGER ::= 256
  4575. ub-numeric-user-id-length INTEGER ::= 32
  4576. ub-organization-name-length INTEGER ::= 64
  4577. ub-organizational-unit-name-length INTEGER ::= 32
  4578. ub-organizational-units INTEGER ::= 4
  4579. ub-pds-name-length INTEGER ::= 16
  4580. ub-pds-parameter-length INTEGER ::= 30
  4581. ub-pds-physical-address-lines INTEGER ::= 6
  4582. ub-postal-code-length INTEGER ::= 16
  4583. ub-surname-length INTEGER ::= 40
  4584. ub-terminal-id-length INTEGER ::= 24
  4585. ub-unformatted-address-length INTEGER ::= 180
  4586. ub-x121-address-length INTEGER ::= 16
  4587.  
  4588. -- Note - upper bounds on string types, such as TeletexString, are
  4589. -- measured in characters.  Excepting PrintableString or IA5String, a
  4590. -- significantly greater number of octets will be required to hold
  4591.  
  4592.  
  4593.  
  4594. Housley, et. al.            Standards Track                    [Page 82]
  4595.  
  4596. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4597.  
  4598.  
  4599. -- such a value.  As a minimum, 16 octets, or twice the specified upper
  4600. -- bound, whichever is the larger, should be allowed for TeletexString.
  4601. -- For UTF8String or UniversalString at least four times the upper
  4602. -- bound should be allowed.
  4603.  
  4604. END
  4605.  
  4606.  
  4607.  
  4608.  
  4609.  
  4610.  
  4611.  
  4612.  
  4613.  
  4614.  
  4615.  
  4616.  
  4617.  
  4618.  
  4619.  
  4620.  
  4621.  
  4622.  
  4623.  
  4624.  
  4625.  
  4626.  
  4627.  
  4628.  
  4629.  
  4630.  
  4631.  
  4632.  
  4633.  
  4634.  
  4635.  
  4636.  
  4637.  
  4638.  
  4639.  
  4640.  
  4641.  
  4642.  
  4643.  
  4644.  
  4645.  
  4646.  
  4647.  
  4648.  
  4649.  
  4650. Housley, et. al.            Standards Track                    [Page 83]
  4651.  
  4652. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4653.  
  4654.  
  4655. A.2 Implicitly Tagged Module, 1988 Syntax
  4656.  
  4657. PKIX1Implicit88 {iso(1) identified-organization(3) dod(6) internet(1)
  4658.   security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-88(2)}
  4659.  
  4660. DEFINITIONS IMPLICIT TAGS ::=
  4661.  
  4662. BEGIN
  4663.  
  4664. -- EXPORTS ALL --
  4665.  
  4666. IMPORTS
  4667.         id-pkix, id-pe, id-qt, id-kp, id-qt-unotice, id-qt-cps,
  4668.             id-ad, id-ad-ocsp, id-ad-caIssuers,
  4669.             -- delete following line if "new" types are supported --
  4670.             BMPString, UniversalString, UTF8String, -- end "new" types
  4671.                 ORAddress, Name, RelativeDistinguishedName,
  4672.                 CertificateSerialNumber,
  4673.                 CertificateList, AlgorithmIdentifier, ub-name,
  4674.                 Attribute, DirectoryString
  4675.                 FROM PKIX1Explicit88 {iso(1) identified-organization(3)
  4676.                 dod(6) internet(1) security(5) mechanisms(5) pkix(7)
  4677.                 id-mod(0) id-pkix1-explicit(1)};
  4678.  
  4679.  
  4680. -- ISO arc for standard certificate and CRL extensions
  4681.  
  4682. id-ce OBJECT IDENTIFIER  ::=  {joint-iso-ccitt(2) ds(5) 29}
  4683.  
  4684. -- authority key identifier OID and syntax
  4685.  
  4686. id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 35 }
  4687.  
  4688. AuthorityKeyIdentifier ::= SEQUENCE {
  4689.       keyIdentifier             [0] KeyIdentifier            OPTIONAL,
  4690.       authorityCertIssuer       [1] GeneralNames             OPTIONAL,
  4691.       authorityCertSerialNumber [2] CertificateSerialNumber  OPTIONAL }
  4692.     -- authorityCertIssuer and authorityCertSerialNumber shall both
  4693.     -- be present or both be absent
  4694.  
  4695. KeyIdentifier ::= OCTET STRING
  4696.  
  4697. -- subject key identifier OID and syntax
  4698.  
  4699. id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 14 }
  4700.  
  4701. SubjectKeyIdentifier ::= KeyIdentifier
  4702.  
  4703.  
  4704.  
  4705.  
  4706. Housley, et. al.            Standards Track                    [Page 84]
  4707.  
  4708. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4709.  
  4710.  
  4711. -- key usage extension OID and syntax
  4712.  
  4713. id-ce-keyUsage OBJECT IDENTIFIER ::=  { id-ce 15 }
  4714.  
  4715. KeyUsage ::= BIT STRING {
  4716.      digitalSignature        (0),
  4717.      nonRepudiation          (1),
  4718.      keyEncipherment         (2),
  4719.      dataEncipherment        (3),
  4720.      keyAgreement            (4),
  4721.      keyCertSign             (5),
  4722.      cRLSign                 (6),
  4723.      encipherOnly            (7),
  4724.      decipherOnly            (8) }
  4725.  
  4726. -- private key usage period extension OID and syntax
  4727.  
  4728. id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::=  { id-ce 16 }
  4729.  
  4730. PrivateKeyUsagePeriod ::= SEQUENCE {
  4731.      notBefore       [0]     GeneralizedTime OPTIONAL,
  4732.      notAfter        [1]     GeneralizedTime OPTIONAL }
  4733.      -- either notBefore or notAfter shall be present
  4734.  
  4735. -- certificate policies extension OID and syntax
  4736.  
  4737. id-ce-certificatePolicies OBJECT IDENTIFIER ::=  { id-ce 32 }
  4738.  
  4739. CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
  4740.  
  4741. PolicyInformation ::= SEQUENCE {
  4742.      policyIdentifier   CertPolicyId,
  4743.      policyQualifiers   SEQUENCE SIZE (1..MAX) OF
  4744.              PolicyQualifierInfo OPTIONAL }
  4745.  
  4746. CertPolicyId ::= OBJECT IDENTIFIER
  4747.  
  4748. PolicyQualifierInfo ::= SEQUENCE {
  4749.        policyQualifierId  PolicyQualifierId,
  4750.        qualifier        ANY DEFINED BY policyQualifierId }
  4751.  
  4752. -- Implementations that recognize additional policy qualifiers shall
  4753. -- augment the following definition for PolicyQualifierId
  4754.  
  4755. PolicyQualifierId ::=
  4756.     OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
  4757.  
  4758. -- CPS pointer qualifier
  4759.  
  4760.  
  4761.  
  4762. Housley, et. al.            Standards Track                    [Page 85]
  4763.  
  4764. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4765.  
  4766.  
  4767. CPSuri ::= IA5String
  4768.  
  4769. -- user notice qualifier
  4770.  
  4771. UserNotice ::= SEQUENCE {
  4772.      noticeRef        NoticeReference OPTIONAL,
  4773.      explicitText     DisplayText OPTIONAL}
  4774.  
  4775. NoticeReference ::= SEQUENCE {
  4776.      organization     DisplayText,
  4777.      noticeNumbers    SEQUENCE OF INTEGER }
  4778.  
  4779. DisplayText ::= CHOICE {
  4780.      visibleString    VisibleString  (SIZE (1..200)),
  4781.      bmpString        BMPString      (SIZE (1..200)),
  4782.      utf8String       UTF8String     (SIZE (1..200)) }
  4783.  
  4784. -- policy mapping extension OID and syntax
  4785.  
  4786. id-ce-policyMappings OBJECT IDENTIFIER ::=  { id-ce 33 }
  4787.  
  4788. PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
  4789.      issuerDomainPolicy      CertPolicyId,
  4790.      subjectDomainPolicy     CertPolicyId }
  4791.  
  4792. -- subject alternative name extension OID and syntax
  4793.  
  4794. id-ce-subjectAltName OBJECT IDENTIFIER ::=  { id-ce 17 }
  4795.  
  4796. SubjectAltName ::= GeneralNames
  4797.  
  4798. GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
  4799.  
  4800. GeneralName ::= CHOICE {
  4801.      otherName                       [0]     AnotherName,
  4802.      rfc822Name                      [1]     IA5String,
  4803.      dNSName                         [2]     IA5String,
  4804.      x400Address                     [3]     ORAddress,
  4805.      directoryName                   [4]     Name,
  4806.      ediPartyName                    [5]     EDIPartyName,
  4807.      uniformResourceIdentifier       [6]     IA5String,
  4808.      iPAddress                       [7]     OCTET STRING,
  4809.      registeredID                    [8]     OBJECT IDENTIFIER }
  4810.  
  4811. -- AnotherName replaces OTHER-NAME ::= TYPE-IDENTIFIER, as
  4812. -- TYPE-IDENTIFIER is not supported in the '88 ASN.1 syntax
  4813.  
  4814. AnotherName ::= SEQUENCE {
  4815.  
  4816.  
  4817.  
  4818. Housley, et. al.            Standards Track                    [Page 86]
  4819.  
  4820. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4821.  
  4822.  
  4823.      type-id    OBJECT IDENTIFIER,
  4824.      value      [0] EXPLICIT ANY DEFINED BY type-id }
  4825.  
  4826. EDIPartyName ::= SEQUENCE {
  4827.      nameAssigner            [0]     DirectoryString OPTIONAL,
  4828.      partyName               [1]     DirectoryString }
  4829.  
  4830. -- issuer alternative name extension OID and syntax
  4831.  
  4832. id-ce-issuerAltName OBJECT IDENTIFIER ::=  { id-ce 18 }
  4833.  
  4834. IssuerAltName ::= GeneralNames
  4835.  
  4836. id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::=  { id-ce 9 }
  4837.  
  4838. SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
  4839.  
  4840. -- basic constraints extension OID and syntax
  4841.  
  4842. id-ce-basicConstraints OBJECT IDENTIFIER ::=  { id-ce 19 }
  4843.  
  4844. BasicConstraints ::= SEQUENCE {
  4845.      cA                      BOOLEAN DEFAULT FALSE,
  4846.      pathLenConstraint       INTEGER (0..MAX) OPTIONAL }
  4847.  
  4848. -- name constraints extension OID and syntax
  4849.  
  4850. id-ce-nameConstraints OBJECT IDENTIFIER ::=  { id-ce 30 }
  4851.  
  4852. NameConstraints ::= SEQUENCE {
  4853.      permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
  4854.      excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }
  4855.  
  4856. GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
  4857.  
  4858. GeneralSubtree ::= SEQUENCE {
  4859.      base                    GeneralName,
  4860.      minimum         [0]     BaseDistance DEFAULT 0,
  4861.      maximum         [1]     BaseDistance OPTIONAL }
  4862.  
  4863. BaseDistance ::= INTEGER (0..MAX)
  4864.  
  4865. -- policy constraints extension OID and syntax
  4866.  
  4867. id-ce-policyConstraints OBJECT IDENTIFIER ::=  { id-ce 36 }
  4868.  
  4869. PolicyConstraints ::= SEQUENCE {
  4870.      requireExplicitPolicy           [0] SkipCerts OPTIONAL,
  4871.  
  4872.  
  4873.  
  4874. Housley, et. al.            Standards Track                    [Page 87]
  4875.  
  4876. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4877.  
  4878.  
  4879.      inhibitPolicyMapping            [1] SkipCerts OPTIONAL }
  4880.  
  4881. SkipCerts ::= INTEGER (0..MAX)
  4882.  
  4883. -- CRL distribution points extension OID and syntax
  4884.  
  4885. id-ce-cRLDistributionPoints     OBJECT IDENTIFIER  ::=  {id-ce 31}
  4886.  
  4887. CRLDistPointsSyntax ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
  4888.  
  4889. DistributionPoint ::= SEQUENCE {
  4890.      distributionPoint       [0]     DistributionPointName OPTIONAL,
  4891.      reasons                 [1]     ReasonFlags OPTIONAL,
  4892.      cRLIssuer               [2]     GeneralNames OPTIONAL }
  4893.  
  4894. DistributionPointName ::= CHOICE {
  4895.      fullName                [0]     GeneralNames,
  4896.      nameRelativeToCRLIssuer [1]     RelativeDistinguishedName }
  4897.  
  4898. ReasonFlags ::= BIT STRING {
  4899.      unused                  (0),
  4900.      keyCompromise           (1),
  4901.      cACompromise            (2),
  4902.      affiliationChanged      (3),
  4903.      superseded              (4),
  4904.      cessationOfOperation    (5),
  4905.      certificateHold         (6) }
  4906.  
  4907. -- extended key usage extension OID and syntax
  4908.  
  4909. id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37}
  4910.  
  4911. ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
  4912.  
  4913. KeyPurposeId ::= OBJECT IDENTIFIER
  4914.  
  4915. -- extended key purpose OIDs
  4916. id-kp-serverAuth      OBJECT IDENTIFIER ::= { id-kp 1 }
  4917. id-kp-clientAuth      OBJECT IDENTIFIER ::= { id-kp 2 }
  4918. id-kp-codeSigning     OBJECT IDENTIFIER ::= { id-kp 3 }
  4919. id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 }
  4920. id-kp-ipsecEndSystem  OBJECT IDENTIFIER ::= { id-kp 5 }
  4921. id-kp-ipsecTunnel     OBJECT IDENTIFIER ::= { id-kp 6 }
  4922. id-kp-ipsecUser       OBJECT IDENTIFIER ::= { id-kp 7 }
  4923. id-kp-timeStamping    OBJECT IDENTIFIER ::= { id-kp 8 }
  4924.  
  4925. -- authority info access
  4926.  
  4927.  
  4928.  
  4929.  
  4930. Housley, et. al.            Standards Track                    [Page 88]
  4931.  
  4932. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4933.  
  4934.  
  4935. id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
  4936.  
  4937. AuthorityInfoAccessSyntax  ::=
  4938.         SEQUENCE SIZE (1..MAX) OF AccessDescription
  4939.  
  4940. AccessDescription  ::=  SEQUENCE {
  4941.         accessMethod          OBJECT IDENTIFIER,
  4942.         accessLocation        GeneralName  }
  4943.  
  4944. -- CRL number extension OID and syntax
  4945.  
  4946. id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 }
  4947.  
  4948. CRLNumber ::= INTEGER (0..MAX)
  4949.  
  4950. -- issuing distribution point extension OID and syntax
  4951.  
  4952. id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 }
  4953.  
  4954. IssuingDistributionPoint ::= SEQUENCE {
  4955.      distributionPoint       [0] DistributionPointName OPTIONAL,
  4956.      onlyContainsUserCerts   [1] BOOLEAN DEFAULT FALSE,
  4957.      onlyContainsCACerts     [2] BOOLEAN DEFAULT FALSE,
  4958.      onlySomeReasons         [3] ReasonFlags OPTIONAL,
  4959.      indirectCRL             [4] BOOLEAN DEFAULT FALSE }
  4960.  
  4961.  
  4962. id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 }
  4963.  
  4964. -- deltaCRLIndicator ::= BaseCRLNumber
  4965.  
  4966. BaseCRLNumber ::= CRLNumber
  4967.  
  4968. -- CRL reasons extension OID and syntax
  4969.  
  4970. id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 }
  4971.  
  4972. CRLReason ::= ENUMERATED {
  4973.      unspecified             (0),
  4974.      keyCompromise           (1),
  4975.      cACompromise            (2),
  4976.      affiliationChanged      (3),
  4977.      superseded              (4),
  4978.      cessationOfOperation    (5),
  4979.      certificateHold         (6),
  4980.      removeFromCRL           (8) }
  4981.  
  4982. -- certificate issuer CRL entry extension OID and syntax
  4983.  
  4984.  
  4985.  
  4986. Housley, et. al.            Standards Track                    [Page 89]
  4987.  
  4988. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  4989.  
  4990.  
  4991. id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 }
  4992.  
  4993. CertificateIssuer ::= GeneralNames
  4994.  
  4995. -- hold instruction extension OID and syntax
  4996.  
  4997. id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 }
  4998.  
  4999. HoldInstructionCode ::= OBJECT IDENTIFIER
  5000.  
  5001. -- ANSI x9 holdinstructions
  5002.  
  5003. -- ANSI x9 arc holdinstruction arc
  5004. holdInstruction OBJECT IDENTIFIER ::=
  5005.           {joint-iso-itu-t(2) member-body(2) us(840) x9cm(10040) 2}
  5006.  
  5007. -- ANSI X9 holdinstructions referenced by this standard
  5008. id-holdinstruction-none OBJECT IDENTIFIER  ::=
  5009.                 {holdInstruction 1} -- deprecated
  5010. id-holdinstruction-callissuer OBJECT IDENTIFIER ::=
  5011.                 {holdInstruction 2}
  5012. id-holdinstruction-reject OBJECT IDENTIFIER ::=
  5013.                 {holdInstruction 3}
  5014.  
  5015. -- invalidity date CRL entry extension OID and syntax
  5016.  
  5017. id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 }
  5018.  
  5019. InvalidityDate ::=  GeneralizedTime
  5020.  
  5021. END
  5022.  
  5023.  
  5024.  
  5025.  
  5026.  
  5027.  
  5028.  
  5029.  
  5030.  
  5031.  
  5032.  
  5033.  
  5034.  
  5035.  
  5036.  
  5037.  
  5038.  
  5039.  
  5040.  
  5041.  
  5042. Housley, et. al.            Standards Track                    [Page 90]
  5043.  
  5044. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5045.  
  5046.  
  5047. Appendix B. 1993 ASN.1 Structures and OIDs
  5048.  
  5049.  
  5050. B.1 Explicitly Tagged Module, 1993 Syntax
  5051.  
  5052. PKIX1Explicit93 {iso(1) identified-organization(3) dod(6) internet(1)
  5053.    security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-explicit-93(3)}
  5054.  
  5055.  
  5056. DEFINITIONS EXPLICIT TAGS ::=
  5057.  
  5058. BEGIN
  5059.  
  5060. -- EXPORTS ALL --
  5061.  
  5062. IMPORTS
  5063.         authorityKeyIdentifier, subjectKeyIdentifier, keyUsage,
  5064.            extendedKeyUsage, privateKeyUsagePeriod, certificatePolicies,
  5065.            policyMappings, subjectAltName, issuerAltName,
  5066.            basicConstraints, nameConstraints, policyConstraints,
  5067.            cRLDistributionPoints, subjectDirectoryAttributes,
  5068.            cRLNumber, reasonCode, instructionCode, invalidityDate,
  5069.            issuingDistributionPoint, certificateIssuer,
  5070.            deltaCRLIndicator, authorityInfoAccess, id-ce
  5071.            FROM PKIX1Implicit93 {iso(1) identified-organization(3)
  5072.            dod(6) internet(1) security(5) mechanisms(5) pkix(7)
  5073.            id-mod(0) id-pkix1-implicit-93(4)} ;
  5074.  
  5075. --
  5076.                    --  Locally defined OIDs  --
  5077.  
  5078. id-pkix  OBJECT IDENTIFIER  ::=
  5079.          { iso(1) identified-organization(3) dod(6) internet(1)
  5080.                     security(5) mechanisms(5) pkix(7) }
  5081.  
  5082. -- PKIX arcs
  5083. -- arc for private certificate extensions
  5084. id-pe OBJECT IDENTIFIER  ::=  { id-pkix 1 }
  5085.  -- arc for policy qualifier types
  5086. id-qt OBJECT IDENTIFIER ::= { id-pkix 2 }
  5087. -- arc for extended key purpose OIDS
  5088. id-kp OBJECT IDENTIFIER ::= { id-pkix 3 }
  5089. -- arc for access descriptors
  5090. id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
  5091.  
  5092. -- policyQualifierIds for Internet policy qualifiers
  5093. id-qt-cps      OBJECT IDENTIFIER ::=  { id-qt 1 }
  5094.         -- OID for CPS qualifier
  5095.  
  5096.  
  5097.  
  5098. Housley, et. al.            Standards Track                    [Page 91]
  5099.  
  5100. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5101.  
  5102.  
  5103. id-qt-unotice  OBJECT IDENTIFIER ::=  { id-qt 2 }
  5104.         -- OID for user notice qualifier
  5105.  
  5106. -- based on excerpts from AuthenticationFramework
  5107. --    {joint-iso-ccitt ds(5) modules(1) authenticationFramework(7) 2}
  5108.  
  5109.                -- Public Key Certificate --
  5110.  
  5111. Certificate            ::=   SIGNED { SEQUENCE {
  5112.    version                 [0]   Version DEFAULT v1,
  5113.    serialNumber                  CertificateSerialNumber,
  5114.    signature                     AlgorithmIdentifier,
  5115.    issuer                        Name,
  5116.    validity                      Validity,
  5117.    subject                       Name,
  5118.    subjectPublicKeyInfo          SubjectPublicKeyInfo,
  5119.    issuerUniqueIdentifier  [1]   IMPLICIT UniqueIdentifier OPTIONAL,
  5120.                               ---if present, version shall be v2 or v3--
  5121.    subjectUniqueIdentifier [2]   IMPLICIT UniqueIdentifier OPTIONAL,
  5122.                               ---if present, version shall be v2 or v3--
  5123.    extensions              [3]   Extensions OPTIONAL
  5124.                               --if present, version shall be v3--}  }
  5125.  
  5126. UniqueIdentifier        ::=  BIT STRING
  5127.  
  5128. Version                 ::=  INTEGER { v1(0), v2(1), v3(2) }
  5129.  
  5130. CertificateSerialNumber ::=  INTEGER
  5131.  
  5132. Validity                        ::=     SEQUENCE {
  5133.    notBefore            Time,
  5134.    notAfter             Time }
  5135.  
  5136. Time ::= CHOICE {
  5137.         utcTime         UTCTime,
  5138.         generalTime             GeneralizedTime }
  5139.  
  5140. SubjectPublicKeyInfo    ::=     SEQUENCE{
  5141.    algorithm            AlgorithmIdentifier,
  5142.    subjectPublicKey     BIT STRING}
  5143.  
  5144. Extensions        ::=   SEQUENCE SIZE (1..MAX) OF Extension
  5145.  
  5146. Extension         ::=   SEQUENCE {
  5147.    extnId            EXTENSION.&id ({ExtensionSet}),
  5148.    critical          BOOLEAN DEFAULT FALSE,
  5149.    extnValue         OCTET STRING }
  5150.                 -- contains a DER encoding of a value of type
  5151.  
  5152.  
  5153.  
  5154. Housley, et. al.            Standards Track                    [Page 92]
  5155.  
  5156. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5157.  
  5158.  
  5159.                 -- &ExtnType for the
  5160.                 -- extension object identified by extnId --
  5161.  
  5162. -- The following information object set is defined to constrain the
  5163. -- set of legal certificate extensions.
  5164.  
  5165. ExtensionSet    EXTENSION       ::=     { authorityKeyIdentifier |
  5166.                                         subjectKeyIdentifier |
  5167.                                         keyUsage |
  5168.                                         extendedKeyUsage |
  5169.                                         privateKeyUsagePeriod |
  5170.                                         certificatePolicies |
  5171.                                         policyMappings |
  5172.                                         subjectAltName |
  5173.                                         issuerAltName |
  5174.                                         basicConstraints |
  5175.                                         nameConstraints |
  5176.                                         policyConstraints |
  5177.                                         cRLDistributionPoints |
  5178.                                         subjectDirectoryAttributes |
  5179.                                         authorityInfoAccess }
  5180.  
  5181. EXTENSION       ::=     CLASS {
  5182.    &id          OBJECT IDENTIFIER UNIQUE,
  5183.    &ExtnType }
  5184. WITH SYNTAX  {
  5185.    SYNTAX               &ExtnType
  5186.    IDENTIFIED BY        &id }
  5187.  
  5188.                   -- Certificate Revocation List --
  5189.  
  5190. CertificateList ::=    SIGNED { SEQUENCE {
  5191.    version                Version  OPTIONAL, -- if present, shall be v2
  5192.    signature              AlgorithmIdentifier,
  5193.    issuer                 Name,
  5194.    thisUpdate             Time,
  5195.    nextUpdate             Time OPTIONAL,
  5196.    revokedCertificates    SEQUENCE OF SEQUENCE {
  5197.    userCertificate        CertificateSerialNumber,
  5198.    revocationDate         Time,
  5199.    crlEntryExtensions     EntryExtensions OPTIONAL } OPTIONAL,
  5200.    crlExtensions          [0]   CRLExtensions OPTIONAL }}
  5201.  
  5202. CRLExtensions        ::=        SEQUENCE SIZE (1..MAX) OF CRLExtension
  5203.  
  5204. CRLExtension         ::=        SEQUENCE {
  5205.    extnId            EXTENSION.&id ({CRLExtensionSet}),
  5206.    critical          BOOLEAN DEFAULT FALSE,
  5207.  
  5208.  
  5209.  
  5210. Housley, et. al.            Standards Track                    [Page 93]
  5211.  
  5212. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5213.  
  5214.  
  5215.    extnValue         OCTET STRING }
  5216.                 -- contains a DER encoding of a value of type
  5217.                 -- &ExtnType for the
  5218.                 -- extension object identified by extnId --
  5219.  
  5220. -- The following information object set is defined to constrain the
  5221. -- set of legal CRL extensions.
  5222.  
  5223. CRLExtensionSet EXTENSION       ::=     { authorityKeyIdentifier |
  5224.                                         issuerAltName |
  5225.                                         cRLNumber |
  5226.                                         deltaCRLIndicator |
  5227.                                         issuingDistributionPoint }
  5228.  
  5229. -- EXTENSION defined above for certificates
  5230.  
  5231. EntryExtensions        ::=      SEQUENCE SIZE (1..MAX) OF EntryExtension
  5232.  
  5233. EntryExtension         ::=      SEQUENCE {
  5234.    extnId            EXTENSION.&id ({EntryExtensionSet}),
  5235.    critical          BOOLEAN DEFAULT FALSE,
  5236.    extnValue         OCTET STRING }
  5237.                 -- contains a DER encoding of a value of type
  5238.                 -- &ExtnType for the
  5239.                 -- extension object identified by extnId --
  5240.  
  5241. -- The following information object set is defined to constrain the
  5242. -- set of legal CRL entry extensions.
  5243.  
  5244. EntryExtensionSet       EXTENSION       ::=     { reasonCode |
  5245.                                                 instructionCode |
  5246.                                                 invalidityDate |
  5247.                                                 certificateIssuer }
  5248.  
  5249.          -- information object classes used in the defintion --
  5250.                     -- of certificates and CRLs --
  5251.  
  5252. -- Parameterized Type SIGNED --
  5253.  
  5254.   SIGNED { ToBeSigned } ::= SEQUENCE {
  5255.      toBeSigned  ToBeSigned,
  5256.      algorithm   AlgorithmIdentifier,
  5257.      signature   BIT STRING
  5258.   }
  5259.  
  5260. -- Definition of AlgorithmIdentifier
  5261. -- ISO definition was:
  5262. --
  5263.  
  5264.  
  5265.  
  5266. Housley, et. al.            Standards Track                    [Page 94]
  5267.  
  5268. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5269.  
  5270.  
  5271. -- AlgorithmIdentifier     ::=  SEQUENCE {
  5272. --   algorithm          ALGORITHM.&id({SupportedAlgorithms}),
  5273. --   parameters         ALGORITHM.&Type({SupportedAlgorithms}
  5274. --                                         { @algorithm}) OPTIONAL }
  5275. -- Definition of ALGORITHM
  5276. -- ALGORITHM    ::=     TYPE-IDENTIFIER
  5277.  
  5278. -- The following PKIX definition replaces the X.509 definition
  5279. --
  5280.  
  5281. AlgorithmIdentifier     ::=  SEQUENCE {
  5282.    algorithm            ALGORITHM-ID.&id({SupportedAlgorithms}),
  5283.    parameters           ALGORITHM-ID.&Type({SupportedAlgorithms}
  5284.                                            { @algorithm}) OPTIONAL }
  5285.  
  5286. -- Definition of ALGORITHM-ID
  5287.  
  5288.  ALGORITHM-ID ::= CLASS {
  5289.      &id    OBJECT IDENTIFIER UNIQUE,
  5290.      &Type  OPTIONAL
  5291.   }
  5292.      WITH SYNTAX { OID &id [PARMS &Type] }
  5293.  
  5294. -- The definition of SupportedAlgorithms may be modified as this
  5295. -- document does not specify a mandatory algorithm set.  In addition,
  5296. -- the set is specified as extensible, since additional algorithms
  5297. -- may be supported
  5298.  
  5299. SupportedAlgorithms     ALGORITHM-ID  ::=       { ..., -- extensible
  5300.                                             rsaPublicKey |
  5301.                                             rsaSHA-1  |
  5302.                                             rsaMD5 |
  5303.                                             rsaMD2 |
  5304.                                             dssPublicKey |
  5305.                                             dsaSHA-1 |
  5306.                                             dhPublicKey }
  5307.  
  5308. -- OIDs and parameter structures for ALGORITHM-IDs used
  5309. -- in this specification
  5310.  
  5311. rsaPublicKey ALGORITHM-ID ::= { OID rsaEncryption PARMS NULL }
  5312.  
  5313. rsaSHA-1 ALGORITHM-ID ::= { OID sha1WithRSAEncryption PARMS NULL }
  5314.  
  5315. rsaMD5 ALGORITHM-ID ::= { OID md5WithRSAEncryption PARMS NULL  }
  5316.  
  5317. rsaMD2 ALGORITHM-ID ::= { OID md2WithRSAEncryption PARMS NULL  }
  5318.  
  5319.  
  5320.  
  5321.  
  5322. Housley, et. al.            Standards Track                    [Page 95]
  5323.  
  5324. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5325.  
  5326.  
  5327. dssPublicKey ALGORITHM-ID ::= { OID id-dsa PARMS Dss-Parms }
  5328.  
  5329. dsaSHA-1 ALGORITHM-ID ::= { OID id-dsa-with-sha1 }
  5330.  
  5331. dhPublicKey ALGORITHM-ID ::= {OID dhpublicnumber PARMS DomainParameters}
  5332.  
  5333. -- algorithm identifiers and parameter structures
  5334.  
  5335. pkcs-1 OBJECT IDENTIFIER ::= {
  5336.      iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 }
  5337.  
  5338. rsaEncryption OBJECT IDENTIFIER ::=  { pkcs-1 1 }
  5339.  
  5340. md2WithRSAEncryption OBJECT IDENTIFIER  ::=  { pkcs-1 2 }
  5341.  
  5342. md5WithRSAEncryption OBJECT IDENTIFIER  ::=  { pkcs-1 4 }
  5343.  
  5344. sha1WithRSAEncryption OBJECT IDENTIFIER  ::=  { pkcs-1 5 }
  5345.  
  5346. id-dsa-with-sha1 OBJECT IDENTIFIER ::=  {
  5347.      iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 }
  5348.  
  5349. Dss-Sig-Value  ::=  SEQUENCE  {
  5350.      r       INTEGER,
  5351.      s       INTEGER  }
  5352.  
  5353. dhpublicnumber OBJECT IDENTIFIER ::= {
  5354.      iso(1) member-body(2) us(840) ansi-x942(10046) number-type(2) 1 }
  5355.  
  5356. DomainParameters ::= SEQUENCE {
  5357.      p       INTEGER, -- odd prime, p=jq +1
  5358.      g       INTEGER, -- generator, g
  5359.      q       INTEGER, -- factor of p-1
  5360.      j       INTEGER OPTIONAL, -- subgroup factor, j>= 2
  5361.      validationParms  ValidationParms OPTIONAL }
  5362.  
  5363. ValidationParms ::= SEQUENCE {
  5364.      seed             BIT STRING,
  5365.      pgenCounter      INTEGER }
  5366.  
  5367. id-dsa OBJECT IDENTIFIER ::= {
  5368.      iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 }
  5369.  
  5370. Dss-Parms  ::=  SEQUENCE  {
  5371.      p             INTEGER,
  5372.      q             INTEGER,
  5373.      g             INTEGER  }
  5374.  
  5375.  
  5376.  
  5377.  
  5378. Housley, et. al.            Standards Track                    [Page 96]
  5379.  
  5380. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5381.  
  5382.  
  5383.      -- The ASN.1 in this section supports the Name type
  5384.      -- and the directoryAttribute extension
  5385.  
  5386. -- attribute data types --
  5387.  
  5388. Attribute       ::=     SEQUENCE {
  5389.         type            ATTRIBUTE.&id ({SupportedAttributes}),
  5390.         values  SET SIZE (1 .. MAX) OF ATTRIBUTE.&Type
  5391.                         ({SupportedAttributes}{@type})}
  5392.  
  5393. AttributeTypeAndValue           ::=     SEQUENCE {
  5394.         type            ATTRIBUTE.&id ({SupportedAttributes}),
  5395.         value   ATTRIBUTE.&Type ({SupportedAttributes}{@type})}
  5396.  
  5397. -- naming data types --
  5398.  
  5399. Name            ::=     CHOICE { -- only one possibility for now --
  5400.                                         rdnSequence  RDNSequence }
  5401.  
  5402. RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
  5403.  
  5404. RelativeDistinguishedName       ::=
  5405.                 SET SIZE (1 .. MAX) OF AttributeTypeAndValue
  5406.  
  5407. ID     ::=    OBJECT IDENTIFIER
  5408.  
  5409. -- ATTRIBUTE information object class specification
  5410. --  Note: This has been greatly simplified for PKIX !!
  5411.  
  5412. ATTRIBUTE               ::=     CLASS {
  5413.         &Type,
  5414.         &id                     OBJECT IDENTIFIER UNIQUE }
  5415. WITH SYNTAX {
  5416.         WITH SYNTAX &Type ID &id }
  5417.  
  5418. -- suggested naming attributes
  5419. --      Definition of the following information object set may be
  5420. --    augmented to meet local requirements.  Note that deleting
  5421. --    members of the set may prevent interoperability with
  5422. --    conforming implementations.
  5423.  
  5424. SupportedAttributes     ATTRIBUTE       ::=     {
  5425.                 name | commonName | surname | givenName | initials |
  5426.                 generationQualifier | dnQualifier | countryName |
  5427.                 localityName | stateOrProvinceName | organizationName |
  5428.                         organizationalUnitName | title | pkcs9email }
  5429.  
  5430. name ATTRIBUTE  ::=     {
  5431.  
  5432.  
  5433.  
  5434. Housley, et. al.            Standards Track                    [Page 97]
  5435.  
  5436. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5437.  
  5438.  
  5439.         WITH SYNTAX                     DirectoryString { ub-name }
  5440.         ID                              id-at-name }
  5441.  
  5442. commonName ATTRIBUTE    ::=     {
  5443.         WITH SYNTAX                     DirectoryString {ub-common-name}
  5444.         ID                              id-at-commonName }
  5445.  
  5446. surname ATTRIBUTE       ::=             {
  5447.         WITH SYNTAX                     DirectoryString {ub-name}
  5448.         ID                              id-at-surname }
  5449.  
  5450. givenName ATTRIBUTE     ::=             {
  5451.         WITH SYNTAX                     DirectoryString {ub-name}
  5452.         ID                              id-at-givenName }
  5453.  
  5454. initials ATTRIBUTE      ::=             {
  5455.         WITH SYNTAX                     DirectoryString {ub-name}
  5456.         ID                              id-at-initials }
  5457.  
  5458. generationQualifier ATTRIBUTE   ::=             {
  5459.         WITH SYNTAX                     DirectoryString {ub-name}
  5460.         ID                              id-at-generationQualifier}
  5461.  
  5462. dnQualifier ATTRIBUTE   ::=     {
  5463.         WITH SYNTAX                     PrintableString
  5464.         ID                              id-at-dnQualifier }
  5465.  
  5466.  
  5467. countryName ATTRIBUTE   ::=     {
  5468.         WITH SYNTAX                     PrintableString (SIZE (2))
  5469.                                                 -- IS 3166 codes only
  5470.         ID                              id-at-countryName }
  5471.  
  5472. localityName ATTRIBUTE  ::=     {
  5473.         WITH SYNTAX             DirectoryString {ub-locality-name}
  5474.         ID                      id-at-localityName }
  5475.  
  5476. stateOrProvinceName ATTRIBUTE   ::=     {
  5477.         WITH SYNTAX             DirectoryString {ub-state-name}
  5478.         ID                      id-at-stateOrProvinceName }
  5479.  
  5480. organizationName ATTRIBUTE      ::=     {
  5481.         WITH SYNTAX             DirectoryString {ub-organization-name}
  5482.         ID                      id-at-organizationName }
  5483.  
  5484. organizationalUnitName ATTRIBUTE        ::=     {
  5485.         WITH SYNTAX  DirectoryString {ub-organizational-unit-name}
  5486.         ID                      id-at-organizationalUnitName }
  5487.  
  5488.  
  5489.  
  5490. Housley, et. al.            Standards Track                    [Page 98]
  5491.  
  5492. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5493.  
  5494.  
  5495. title ATTRIBUTE ::=                     {
  5496.         WITH SYNTAX             DirectoryString {ub-title}
  5497.         ID                      id-at-title }
  5498.  
  5499.  -- Legacy attributes
  5500.  
  5501. pkcs9email ATTRIBUTE ::= {
  5502.         WITH SYNTAX                     PHGString,
  5503.         ID                              emailAddress }
  5504.  
  5505. PHGString ::= IA5String (SIZE(1..ub-emailaddress-length))
  5506.  
  5507. pkcs-9 OBJECT IDENTIFIER ::=
  5508.        { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 }
  5509.  
  5510. emailAddress OBJECT IDENTIFIER ::= { pkcs-9 1 }
  5511.  
  5512.     -- object identifiers for Name type and directory attribute support
  5513.  
  5514. -- Object identifier assignments --
  5515.  
  5516. id-at   OBJECT IDENTIFIER       ::=     {joint-iso-ccitt(2) ds(5) 4}
  5517.  
  5518. -- Attributes --
  5519.  
  5520. id-at-commonName        OBJECT IDENTIFIER       ::=     {id-at 3}
  5521. id-at-surname           OBJECT IDENTIFIER       ::=     {id-at 4}
  5522. id-at-countryName       OBJECT IDENTIFIER       ::=     {id-at 6}
  5523. id-at-localityName      OBJECT IDENTIFIER       ::=     {id-at 7}
  5524. id-at-stateOrProvinceName     OBJECT IDENTIFIER ::= {id-at 8}
  5525. id-at-organizationName        OBJECT IDENTIFIER ::= {id-at 10}
  5526. id-at-organizationalUnitName  OBJECT IDENTIFIER ::= {id-at 11}
  5527. id-at-title             OBJECT IDENTIFIER       ::=     {id-at 12}
  5528. id-at-name              OBJECT IDENTIFIER       ::=     {id-at 41}
  5529. id-at-givenName         OBJECT IDENTIFIER       ::=     {id-at 42}
  5530. id-at-initials          OBJECT IDENTIFIER       ::=     {id-at 43}
  5531. id-at-generationQualifier   OBJECT IDENTIFIER   ::=     {id-at 44}
  5532. id-at-dnQualifier       OBJECT IDENTIFIER       ::=     {id-at 46}
  5533.  
  5534. -- Directory string type, used extensively in Name types --
  5535.  
  5536. DirectoryString { INTEGER:maxSize } ::= CHOICE {
  5537.         teletexString           TeletexString (SIZE (1..maxSize)),
  5538.         printableString         PrintableString (SIZE (1..maxSize)),
  5539.         universalString         UniversalString (SIZE (1..maxSize)),
  5540.         bmpString               BMPString (SIZE(1..maxSize)),
  5541.         utf8String              UTF8String (SIZE(1..maxSize))
  5542.                             }
  5543.  
  5544.  
  5545.  
  5546. Housley, et. al.            Standards Track                    [Page 99]
  5547.  
  5548. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5549.  
  5550.  
  5551.      -- End of ASN.1 for Name type and directory attribute support --
  5552.  
  5553.      -- The ASN.1 in this section supports X.400 style names   --
  5554.      -- for implementations that use the x400Address component --
  5555.      -- of GeneralName.                                        --
  5556.  
  5557. ORAddress ::= SEQUENCE {
  5558.    built-in-standard-attributes BuiltInStandardAttributes,
  5559.    built-in-domain-defined-attributes
  5560.                         BuiltInDomainDefinedAttributes OPTIONAL,
  5561.    -- see also teletex-domain-defined-attributes
  5562.    extension-attributes ExtensionAttributes OPTIONAL }
  5563.  
  5564. --  The OR-address is semantically absent from the OR-name if the
  5565. --  built-in-standard-attribute sequence is empty and the
  5566. --  built-in-domain-defined-attributes and extension-attributes are
  5567. --  both omitted.
  5568.  
  5569. --      Built-in Standard Attributes
  5570.  
  5571. BuiltInStandardAttributes ::= SEQUENCE {
  5572.    country-name CountryName OPTIONAL,
  5573.    administration-domain-name AdministrationDomainName OPTIONAL,
  5574.    network-address      [0] NetworkAddress OPTIONAL,
  5575.    -- see also extended-network-address
  5576.    terminal-identifier  [1] TerminalIdentifier OPTIONAL,
  5577.    private-domain-name  [2] PrivateDomainName OPTIONAL,
  5578.    organization-name    [3] OrganizationName OPTIONAL,
  5579.    -- see also teletex-organization-name
  5580.    numeric-user-identifier      [4] NumericUserIdentifier OPTIONAL,
  5581.    personal-name        [5] PersonalName OPTIONAL,
  5582.    -- see also teletex-personal-name
  5583.    organizational-unit-names    [6] OrganizationalUnitNames OPTIONAL
  5584.    -- see also teletex-organizational-unit-names -- }
  5585.  
  5586. CountryName ::= [APPLICATION 1] CHOICE {
  5587.    x121-dcc-code NumericString
  5588.                 (SIZE (ub-country-name-numeric-length)),
  5589.    iso-3166-alpha2-code PrintableString
  5590.                 (SIZE (ub-country-name-alpha-length)) }
  5591.  
  5592. AdministrationDomainName ::= [APPLICATION 2] CHOICE {
  5593.    numeric NumericString (SIZE (0..ub-domain-name-length)),
  5594.    printable PrintableString (SIZE (0..ub-domain-name-length)) }
  5595.  
  5596. NetworkAddress ::= X121Address
  5597. -- see also extended-network-address
  5598.  
  5599.  
  5600.  
  5601.  
  5602. Housley, et. al.            Standards Track                   [Page 100]
  5603.  
  5604. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5605.  
  5606.  
  5607. X121Address ::= NumericString (SIZE (1..ub-x121-address-length))
  5608.  
  5609. TerminalIdentifier ::= PrintableString (SIZE (1..ub-terminal-id-length))
  5610.  
  5611. PrivateDomainName ::= CHOICE {
  5612.    numeric NumericString (SIZE (1..ub-domain-name-length)),
  5613.    printable PrintableString (SIZE (1..ub-domain-name-length)) }
  5614.  
  5615. OrganizationName ::= PrintableString
  5616.                            (SIZE (1..ub-organization-name-length))
  5617. -- see also teletex-organization-name
  5618.  
  5619. NumericUserIdentifier ::= NumericString
  5620.                              (SIZE (1..ub-numeric-user-id-length))
  5621.  
  5622. PersonalName ::= SET {
  5623.    surname    [0] PrintableString (SIZE (1..ub-surname-length)),
  5624.    given-name [1] PrintableString
  5625.                         (SIZE (1..ub-given-name-length)) OPTIONAL,
  5626.    initials   [2] PrintableString
  5627.                         (SIZE (1..ub-initials-length)) OPTIONAL,
  5628.    generation-qualifier [3] PrintableString
  5629.                 (SIZE (1..ub-generation-qualifier-length)) OPTIONAL}
  5630. -- see also teletex-personal-name
  5631.  
  5632. OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
  5633.                                         OF OrganizationalUnitName
  5634. -- see also teletex-organizational-unit-names
  5635.  
  5636. OrganizationalUnitName ::= PrintableString (SIZE
  5637.                         (1..ub-organizational-unit-name-length))
  5638.  
  5639. --      Built-in Domain-defined Attributes
  5640. BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
  5641.                                 (1..ub-domain-defined-attributes) OF
  5642.                                 BuiltInDomainDefinedAttribute
  5643.  
  5644. BuiltInDomainDefinedAttribute ::= SEQUENCE {
  5645.    type PrintableString (SIZE
  5646.                 (1..ub-domain-defined-attribute-type-length)),
  5647.    value PrintableString (SIZE
  5648.                 (1..ub-domain-defined-attribute-value-length)) }
  5649.  
  5650. --      Extension Attributes
  5651.  
  5652. ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes)
  5653.                                         OF ExtensionAttribute
  5654. ExtensionAttribute ::= SEQUENCE {
  5655.  
  5656.  
  5657.  
  5658. Housley, et. al.            Standards Track                   [Page 101]
  5659.  
  5660. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5661.  
  5662.  
  5663.         extension-attribute-type [0] EXTENSION-ATTRIBUTE.&id
  5664.                                         ({ExtensionAttributeTable}),
  5665.         extension-attribute-value [1] EXTENSION-ATTRIBUTE.&Type
  5666.              ({ExtensionAttributeTable} {@extension-attribute-type}) }
  5667.  
  5668. EXTENSION-ATTRIBUTE ::= CLASS {
  5669.         &id     INTEGER (0..ub-extension-attributes) UNIQUE,
  5670.         &Type }
  5671. WITH SYNTAX {&Type IDENTIFIED BY &id}
  5672.  
  5673. ExtensionAttributeTable EXTENSION-ATTRIBUTE ::= {
  5674.         common-name |
  5675.         teletex-common-name |
  5676.         teletex-organization-name |
  5677.         teletex-personal-name |
  5678.         teletex-organizational-unit-names |
  5679.         teletex-domain-defined-attributes |
  5680.         pds-name |
  5681.         physical-delivery-country-name |
  5682.         postal-code |
  5683.         physical-delivery-office-name |
  5684.         physical-delivery-office-number |
  5685.         extension-OR-address-components |
  5686.         physical-delivery-personal-name |
  5687.         physical-delivery-organization-name |
  5688.         extension-physical-delivery-address-components |
  5689.         unformatted-postal-address |
  5690.         street-address |
  5691.         post-office-box-address |
  5692.         poste-restante-address |
  5693.         unique-postal-name |
  5694.         local-postal-attributes |
  5695.         extended-network-address |
  5696.         terminal-type }
  5697.  
  5698. --      Extension Standard Attributes
  5699.  
  5700. common-name EXTENSION-ATTRIBUTE ::= {CommonName IDENTIFIED BY 1}
  5701.  
  5702. CommonName ::= PrintableString (SIZE (1..ub-common-name-length))
  5703.  
  5704. teletex-common-name EXTENSION-ATTRIBUTE ::=
  5705.                 {TeletexCommonName IDENTIFIED BY 2}
  5706.  
  5707. TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length))
  5708.  
  5709. teletex-organization-name EXTENSION-ATTRIBUTE ::=
  5710.                 {TeletexOrganizationName IDENTIFIED BY 3}
  5711.  
  5712.  
  5713.  
  5714. Housley, et. al.            Standards Track                   [Page 102]
  5715.  
  5716. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5717.  
  5718.  
  5719. TeletexOrganizationName ::=
  5720.                 TeletexString (SIZE (1..ub-organization-name-length))
  5721.  
  5722. teletex-personal-name EXTENSION-ATTRIBUTE ::=
  5723.                 {TeletexPersonalName IDENTIFIED BY 4}
  5724.  
  5725. TeletexPersonalName ::= SET {
  5726.    surname [0] TeletexString (SIZE (1..ub-surname-length)),
  5727.    given-name [1] TeletexString
  5728.                 (SIZE (1..ub-given-name-length)) OPTIONAL,
  5729.    initials [2] TeletexString (SIZE (1..ub-initials-length)) OPTIONAL,
  5730.    generation-qualifier [3] TeletexString (SIZE
  5731.                 (1..ub-generation-qualifier-length)) OPTIONAL }
  5732.  
  5733. teletex-organizational-unit-names EXTENSION-ATTRIBUTE ::=
  5734.    {TeletexOrganizationalUnitNames IDENTIFIED BY 5}
  5735.  
  5736. TeletexOrganizationalUnitNames ::= SEQUENCE SIZE
  5737.         (1..ub-organizational-units) OF TeletexOrganizationalUnitName
  5738.  
  5739. TeletexOrganizationalUnitName ::= TeletexString
  5740.                         (SIZE (1..ub-organizational-unit-name-length))
  5741.  
  5742. pds-name EXTENSION-ATTRIBUTE ::= {PDSName IDENTIFIED BY 7}
  5743.  
  5744. PDSName ::= PrintableString (SIZE (1..ub-pds-name-length))
  5745.  
  5746. physical-delivery-country-name EXTENSION-ATTRIBUTE ::=
  5747.    {PhysicalDeliveryCountryName IDENTIFIED BY 8}
  5748.  
  5749. PhysicalDeliveryCountryName ::= CHOICE {
  5750.    x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)),
  5751.    iso-3166-alpha2-code PrintableString
  5752.                         (SIZE (ub-country-name-alpha-length)) }
  5753.  
  5754. postal-code EXTENSION-ATTRIBUTE ::= {PostalCode IDENTIFIED BY 9}
  5755.  
  5756. PostalCode ::= CHOICE {
  5757.    numeric-code NumericString (SIZE (1..ub-postal-code-length)),
  5758.    printable-code PrintableString (SIZE (1..ub-postal-code-length)) }
  5759.  
  5760. physical-delivery-office-name EXTENSION-ATTRIBUTE ::=
  5761.                         {PhysicalDeliveryOfficeName IDENTIFIED BY 10}
  5762.  
  5763. PhysicalDeliveryOfficeName ::= PDSParameter
  5764.  
  5765. physical-delivery-office-number EXTENSION-ATTRIBUTE ::=
  5766.    {PhysicalDeliveryOfficeNumber IDENTIFIED BY 11}
  5767.  
  5768.  
  5769.  
  5770. Housley, et. al.            Standards Track                   [Page 103]
  5771.  
  5772. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5773.  
  5774.  
  5775. PhysicalDeliveryOfficeNumber ::= PDSParameter
  5776.  
  5777. extension-OR-address-components EXTENSION-ATTRIBUTE ::=
  5778.    {ExtensionORAddressComponents IDENTIFIED BY 12}
  5779.  
  5780. ExtensionORAddressComponents ::= PDSParameter
  5781.  
  5782. physical-delivery-personal-name EXTENSION-ATTRIBUTE ::=
  5783.    {PhysicalDeliveryPersonalName IDENTIFIED BY 13}
  5784.  
  5785. PhysicalDeliveryPersonalName ::= PDSParameter
  5786.  
  5787. physical-delivery-organization-name EXTENSION-ATTRIBUTE ::=
  5788.    {PhysicalDeliveryOrganizationName IDENTIFIED BY 14}
  5789.  
  5790. PhysicalDeliveryOrganizationName ::= PDSParameter
  5791.  
  5792. extension-physical-delivery-address-components EXTENSION-ATTRIBUTE ::=
  5793.    {ExtensionPhysicalDeliveryAddressComponents IDENTIFIED BY 15}
  5794.  
  5795. ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter
  5796.  
  5797. unformatted-postal-address EXTENSION-ATTRIBUTE ::=
  5798.                         {UnformattedPostalAddress IDENTIFIED BY 16}
  5799.  
  5800. UnformattedPostalAddress ::= SET {
  5801.    printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF
  5802.            PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL,
  5803.    teletex-string TeletexString (SIZE
  5804.                          (1..ub-unformatted-address-length)) OPTIONAL }
  5805.  
  5806. street-address EXTENSION-ATTRIBUTE ::=
  5807.                 {StreetAddress IDENTIFIED BY 17}
  5808.  
  5809. StreetAddress ::= PDSParameter
  5810.  
  5811. post-office-box-address EXTENSION-ATTRIBUTE ::=
  5812.                 {PostOfficeBoxAddress IDENTIFIED BY 18}
  5813.  
  5814. PostOfficeBoxAddress ::= PDSParameter
  5815.  
  5816. poste-restante-address EXTENSION-ATTRIBUTE ::=
  5817.                 {PosteRestanteAddress IDENTIFIED BY 19}
  5818.  
  5819. PosteRestanteAddress ::= PDSParameter
  5820.  
  5821. unique-postal-name EXTENSION-ATTRIBUTE ::=
  5822.                 {UniquePostalName IDENTIFIED BY 20}
  5823.  
  5824.  
  5825.  
  5826. Housley, et. al.            Standards Track                   [Page 104]
  5827.  
  5828. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5829.  
  5830.  
  5831. UniquePostalName ::= PDSParameter
  5832.  
  5833. local-postal-attributes EXTENSION-ATTRIBUTE ::=
  5834.                 {LocalPostalAttributes IDENTIFIED BY 21}
  5835.  
  5836. LocalPostalAttributes ::= PDSParameter
  5837.  
  5838. PDSParameter ::= SET {
  5839.    printable-string PrintableString
  5840.             (SIZE(1..ub-pds-parameter-length)) OPTIONAL,
  5841.    teletex-string TeletexString
  5842.             (SIZE(1..ub-pds-parameter-length)) OPTIONAL }
  5843.  
  5844. extended-network-address EXTENSION-ATTRIBUTE ::=
  5845.                 {ExtendedNetworkAddress IDENTIFIED BY 22}
  5846.  
  5847. ExtendedNetworkAddress ::= CHOICE {
  5848.         e163-4-address SEQUENCE {
  5849.                 number [0] NumericString
  5850.                    (SIZE (1..ub-e163-4-number-length)),
  5851.                 sub-address [1] NumericString
  5852.                    (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL},
  5853.         psap-address [0] PresentationAddress }
  5854.  
  5855. PresentationAddress ::= SEQUENCE {
  5856.         pSelector       [0] EXPLICIT OCTET STRING OPTIONAL,
  5857.         sSelector       [1] EXPLICIT OCTET STRING OPTIONAL,
  5858.         tSelector       [2] EXPLICIT OCTET STRING OPTIONAL,
  5859.         nAddresses      [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING}
  5860.  
  5861.  
  5862. terminal-type EXTENSION-ATTRIBUTE ::= {TerminalType IDENTIFIED BY 23}
  5863.  
  5864. TerminalType ::= INTEGER {
  5865.    telex (3),
  5866.    teletex (4),
  5867.    g3-facsimile (5),
  5868.    g4-facsimile (6),
  5869.    ia5-terminal (7),
  5870.    videotex (8) } (0..ub-integer-options)
  5871.  
  5872. --      Extension Domain-defined Attributes
  5873.  
  5874. teletex-domain-defined-attributes EXTENSION-ATTRIBUTE ::=
  5875.    {TeletexDomainDefinedAttributes IDENTIFIED BY 6}
  5876.  
  5877. TeletexDomainDefinedAttributes ::= SEQUENCE SIZE
  5878.    (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute
  5879.  
  5880.  
  5881.  
  5882. Housley, et. al.            Standards Track                   [Page 105]
  5883.  
  5884. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5885.  
  5886.  
  5887. TeletexDomainDefinedAttribute ::= SEQUENCE {
  5888.     type TeletexString
  5889.          (SIZE (1..ub-domain-defined-attribute-type-length)),
  5890.     value TeletexString
  5891.          (SIZE (1..ub-domain-defined-attribute-value-length)) }
  5892.  
  5893. --  specifications of Upper Bounds
  5894. --  shall be regarded as mandatory
  5895. --  from Annex B of ITU-T X.411
  5896. --  Reference Definition of MTS Parameter Upper Bounds
  5897.  
  5898. --      Upper Bounds
  5899. ub-name INTEGER ::=     32768
  5900. ub-common-name  INTEGER ::=     64
  5901. ub-locality-name        INTEGER ::=     128
  5902. ub-state-name   INTEGER ::=     128
  5903. ub-organization-name    INTEGER ::=     64
  5904. ub-organizational-unit-name     INTEGER ::=     64
  5905. ub-title        INTEGER ::=     64
  5906. ub-match        INTEGER ::=     128
  5907.  
  5908. ub-emailaddress-length INTEGER ::= 128
  5909.  
  5910. ub-common-name-length INTEGER ::= 64
  5911. ub-country-name-alpha-length INTEGER ::= 2
  5912. ub-country-name-numeric-length INTEGER ::= 3
  5913. ub-domain-defined-attributes INTEGER ::= 4
  5914. ub-domain-defined-attribute-type-length INTEGER ::= 8
  5915. ub-domain-defined-attribute-value-length INTEGER ::= 128
  5916. ub-domain-name-length INTEGER ::= 16
  5917. ub-extension-attributes INTEGER ::= 256
  5918. ub-e163-4-number-length INTEGER ::= 15
  5919. ub-e163-4-sub-address-length INTEGER ::= 40
  5920. ub-generation-qualifier-length INTEGER ::= 3
  5921. ub-given-name-length INTEGER ::= 16
  5922. ub-initials-length INTEGER ::= 5
  5923. ub-integer-options INTEGER ::= 256
  5924. ub-numeric-user-id-length INTEGER ::= 32
  5925. ub-organization-name-length INTEGER ::= 64
  5926. ub-organizational-unit-name-length INTEGER ::= 32
  5927. ub-organizational-units INTEGER ::= 4
  5928. ub-pds-name-length INTEGER ::= 16
  5929. ub-pds-parameter-length INTEGER ::= 30
  5930. ub-pds-physical-address-lines INTEGER ::= 6
  5931. ub-postal-code-length INTEGER ::= 16
  5932. ub-surname-length INTEGER ::= 40
  5933. ub-terminal-id-length INTEGER ::= 24
  5934. ub-unformatted-address-length INTEGER ::= 180
  5935.  
  5936.  
  5937.  
  5938. Housley, et. al.            Standards Track                   [Page 106]
  5939.  
  5940. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5941.  
  5942.  
  5943. ub-x121-address-length INTEGER ::= 16
  5944.  
  5945. -- Note - upper bounds on TeletexString are measured in characters.
  5946. -- A significantly greater number of octets will be required to hold
  5947. -- such a value.  As a minimum, 16 octets, or twice the specified upper
  5948. -- bound, whichever is the larger, should be allowed.
  5949.  
  5950. END
  5951.  
  5952.  
  5953.  
  5954.  
  5955.  
  5956.  
  5957.  
  5958.  
  5959.  
  5960.  
  5961.  
  5962.  
  5963.  
  5964.  
  5965.  
  5966.  
  5967.  
  5968.  
  5969.  
  5970.  
  5971.  
  5972.  
  5973.  
  5974.  
  5975.  
  5976.  
  5977.  
  5978.  
  5979.  
  5980.  
  5981.  
  5982.  
  5983.  
  5984.  
  5985.  
  5986.  
  5987.  
  5988.  
  5989.  
  5990.  
  5991.  
  5992.  
  5993.  
  5994. Housley, et. al.            Standards Track                   [Page 107]
  5995.  
  5996. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  5997.  
  5998.  
  5999. B.2 Implicitly Tagged Module, 1993 Syntax
  6000.  
  6001.  
  6002. PKIX1Implicit93  {iso(1) identified-organization(3) dod(6) internet(1)
  6003.    security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-93(4)}
  6004.  
  6005. DEFINITIONS IMPLICIT TAGS::=
  6006.  
  6007. BEGIN
  6008.  
  6009. --EXPORTS ALL --
  6010.  
  6011. IMPORTS
  6012.         id-pe, id-qt, id-kp, id-ad, id-qt-unotice,
  6013.                 ORAddress, Name, RelativeDistinguishedName,
  6014.                 CertificateSerialNumber, CertificateList,
  6015.                 AlgorithmIdentifier, ub-name, DirectoryString,
  6016.                 Attribute, EXTENSION
  6017.                 FROM PKIX1Explicit93 {iso(1) identified-organization(3)
  6018.                 dod(6) internet(1) security(5) mechanisms(5) pkix(7)
  6019.                 id-mod(0) id-pkix1-explicit-93(3)};
  6020.  
  6021. -- Key and policy information extensions --
  6022.  
  6023. authorityKeyIdentifier EXTENSION ::= {
  6024.         SYNTAX          AuthorityKeyIdentifier
  6025.         IDENTIFIED BY   id-ce-authorityKeyIdentifier }
  6026.  
  6027. AuthorityKeyIdentifier ::= SEQUENCE {
  6028.     keyIdentifier               [0] KeyIdentifier            OPTIONAL,
  6029.     authorityCertIssuer         [1] GeneralNames             OPTIONAL,
  6030.     authorityCertSerialNumber   [2] CertificateSerialNumber  OPTIONAL }
  6031.         ( WITH COMPONENTS       {..., authorityCertIssuer PRESENT,
  6032.                                 authorityCertSerialNumber PRESENT} |
  6033.          WITH COMPONENTS        {..., authorityCertIssuer ABSENT,
  6034.                                 authorityCertSerialNumber ABSENT} )
  6035.  
  6036. KeyIdentifier ::= OCTET STRING
  6037.  
  6038. subjectKeyIdentifier EXTENSION ::= {
  6039.         SYNTAX          SubjectKeyIdentifier
  6040.         IDENTIFIED BY   id-ce-subjectKeyIdentifier }
  6041.  
  6042. SubjectKeyIdentifier ::= KeyIdentifier
  6043.  
  6044. keyUsage EXTENSION ::= {
  6045.         SYNTAX  KeyUsage
  6046.         IDENTIFIED BY id-ce-keyUsage }
  6047.  
  6048.  
  6049.  
  6050. Housley, et. al.            Standards Track                   [Page 108]
  6051.  
  6052. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6053.  
  6054.  
  6055. KeyUsage ::= BIT STRING {
  6056.         digitalSignature     (0),
  6057.         nonRepudiation       (1),
  6058.         keyEncipherment      (2),
  6059.         dataEncipherment     (3),
  6060.         keyAgreement         (4),
  6061.         keyCertSign          (5),
  6062.         cRLSign              (6),
  6063.       encipherOnly         (7),
  6064.       decipherOnly         (8) }
  6065.  
  6066. extendedKeyUsage EXTENSION ::= {
  6067.         SYNTAX SEQUENCE SIZE (1..MAX) OF KeyPurposeId
  6068.         IDENTIFIED BY id-ce-extKeyUsage }
  6069.  
  6070. KeyPurposeId ::= OBJECT IDENTIFIER
  6071.  
  6072. -- PKIX-defined extended key purpose OIDs
  6073. id-kp-serverAuth      OBJECT IDENTIFIER ::= { id-kp 1 }
  6074. id-kp-clientAuth      OBJECT IDENTIFIER ::= { id-kp 2 }
  6075. id-kp-codeSigning     OBJECT IDENTIFIER ::= { id-kp 3 }
  6076. id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 }
  6077. id-kp-ipsecEndSystem  OBJECT IDENTIFIER ::= { id-kp 5 }
  6078. id-kp-ipsecTunnel     OBJECT IDENTIFIER ::= { id-kp 6 }
  6079. id-kp-ipsecUser       OBJECT IDENTIFIER ::= { id-kp 7 }
  6080. id-kp-timeStamping    OBJECT IDENTIFIER ::= { id-kp 8 }
  6081.  
  6082. privateKeyUsagePeriod EXTENSION ::= {
  6083.         SYNTAX  PrivateKeyUsagePeriod
  6084.         IDENTIFIED BY { id-ce-privateKeyUsagePeriod } }
  6085.  
  6086. PrivateKeyUsagePeriod ::= SEQUENCE {
  6087.         notBefore       [0]     GeneralizedTime OPTIONAL,
  6088.         notAfter        [1]     GeneralizedTime OPTIONAL }
  6089.         ( WITH COMPONENTS       {..., notBefore PRESENT} |
  6090.         WITH COMPONENTS         {..., notAfter PRESENT} )
  6091.  
  6092. certificatePolicies EXTENSION ::= {
  6093.         SYNTAX  CertificatePoliciesSyntax
  6094.         IDENTIFIED BY id-ce-certificatePolicies }
  6095.  
  6096. CertificatePoliciesSyntax ::=
  6097.                 SEQUENCE SIZE (1..MAX) OF PolicyInformation
  6098.  
  6099. PolicyInformation ::= SEQUENCE {
  6100.         policyIdentifier   CertPolicyId,
  6101.         policyQualifiers   SEQUENCE SIZE (1..MAX) OF
  6102.                 PolicyQualifierInfo OPTIONAL }
  6103.  
  6104.  
  6105.  
  6106. Housley, et. al.            Standards Track                   [Page 109]
  6107.  
  6108. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6109.  
  6110.  
  6111. CertPolicyId ::= OBJECT IDENTIFIER
  6112.  
  6113. PolicyQualifierInfo ::= SEQUENCE {
  6114.         policyQualifierId       CERT-POLICY-QUALIFIER.&id
  6115.                                     ({SupportedPolicyQualifiers}),
  6116.         qualifier               CERT-POLICY-QUALIFIER.&Qualifier
  6117.                                     ({SupportedPolicyQualifiers}
  6118.                                     {@policyQualifierId})OPTIONAL }
  6119.  
  6120. SupportedPolicyQualifiers CERT-POLICY-QUALIFIER ::= { noticeToUser |
  6121.                                                       pointerToCPS }
  6122.  
  6123. CERT-POLICY-QUALIFIER ::= CLASS {
  6124.         &id             OBJECT IDENTIFIER UNIQUE,
  6125.         &Qualifier      OPTIONAL }
  6126. WITH SYNTAX {
  6127.         POLICY-QUALIFIER-ID     &id
  6128.         [QUALIFIER-TYPE &Qualifier] }
  6129.  
  6130. policyMappings EXTENSION ::= {
  6131.         SYNTAX  PolicyMappingsSyntax
  6132.         IDENTIFIED BY id-ce-policyMappings }
  6133.  
  6134. PolicyMappingsSyntax ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
  6135.         issuerDomainPolicy           CertPolicyId,
  6136.         subjectDomainPolicy          CertPolicyId }
  6137.  
  6138. -- Certificate subject and certificate issuer attributes extensions --
  6139.  
  6140. subjectAltName EXTENSION ::= {
  6141.         SYNTAX  GeneralNames
  6142.         IDENTIFIED BY id-ce-subjectAltName }
  6143.  
  6144. GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
  6145.  
  6146. GeneralName ::= CHOICE {
  6147.         otherName                   [0] INSTANCE OF OTHER-NAME,
  6148.         rfc822Name                  [1] IA5String,
  6149.         dNSName                     [2] IA5String,
  6150.         x400Address                 [3] ORAddress,
  6151.         directoryName               [4] Name,
  6152.         ediPartyName                [5] EDIPartyName,
  6153.         uniformResourceIdentifier   [6] IA5String,
  6154.         iPAddress                   [7] OCTET STRING,
  6155.         registeredID                [8] OBJECT IDENTIFIER }
  6156.  
  6157. OTHER-NAME ::= TYPE-IDENTIFIER
  6158.  
  6159.  
  6160.  
  6161.  
  6162. Housley, et. al.            Standards Track                   [Page 110]
  6163.  
  6164. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6165.  
  6166.  
  6167. EDIPartyName ::= SEQUENCE {
  6168.         nameAssigner        [0] DirectoryString {ub-name} OPTIONAL,
  6169.         partyName           [1] DirectoryString {ub-name} }
  6170.  
  6171. issuerAltName EXTENSION ::= {
  6172.         SYNTAX  GeneralNames
  6173.         IDENTIFIED BY id-ce-issuerAltName }
  6174.  
  6175. subjectDirectoryAttributes EXTENSION ::= {
  6176.         SYNTAX  AttributesSyntax
  6177.         IDENTIFIED BY id-ce-subjectDirectoryAttributes }
  6178.  
  6179. AttributesSyntax ::= SEQUENCE SIZE (1..MAX) OF Attribute
  6180.  
  6181. -- Certification path constraints extensions --
  6182.  
  6183. basicConstraints EXTENSION ::= {
  6184.         SYNTAX  BasicConstraintsSyntax
  6185.         IDENTIFIED BY id-ce-basicConstraints }
  6186.  
  6187. BasicConstraintsSyntax ::= SEQUENCE {
  6188.         cA                      BOOLEAN DEFAULT FALSE,
  6189.         pathLenConstraint       INTEGER (0..MAX) OPTIONAL }
  6190.  
  6191. nameConstraints EXTENSION ::= {
  6192.         SYNTAX  NameConstraintsSyntax
  6193.         IDENTIFIED BY id-ce-nameConstraints }
  6194.  
  6195. NameConstraintsSyntax ::= SEQUENCE {
  6196.         permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
  6197.         excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }
  6198.  
  6199. GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
  6200.  
  6201. GeneralSubtree ::= SEQUENCE {
  6202.         base                    GeneralName,
  6203.         minimum         [0]     BaseDistance DEFAULT 0,
  6204.         maximum         [1]     BaseDistance OPTIONAL }
  6205.  
  6206. BaseDistance ::= INTEGER (0..MAX)
  6207.  
  6208. policyConstraints EXTENSION ::= {
  6209.         SYNTAX  PolicyConstraintsSyntax
  6210.         IDENTIFIED BY id-ce-policyConstraints }
  6211.  
  6212. PolicyConstraintsSyntax ::= SEQUENCE {
  6213.         requireExplicitPolicy   [0] SkipCerts OPTIONAL,
  6214.         inhibitPolicyMapping    [1] SkipCerts OPTIONAL }
  6215.  
  6216.  
  6217.  
  6218. Housley, et. al.            Standards Track                   [Page 111]
  6219.  
  6220. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6221.  
  6222.  
  6223. SkipCerts ::= INTEGER (0..MAX)
  6224.  
  6225. -- Basic CRL extensions --
  6226.  
  6227. cRLNumber EXTENSION ::= {
  6228.         SYNTAX  CRLNumber
  6229.         IDENTIFIED BY id-ce-cRLNumber }
  6230.  
  6231. CRLNumber ::= INTEGER (0..MAX)
  6232.  
  6233. reasonCode EXTENSION ::= {
  6234.         SYNTAX  CRLReason
  6235.         IDENTIFIED BY id-ce-reasonCode }
  6236.  
  6237. CRLReason ::= ENUMERATED {
  6238.         unspecified             (0),
  6239.         keyCompromise           (1),
  6240.         cACompromise            (2),
  6241.         affiliationChanged      (3),
  6242.         superseded              (4),
  6243.         cessationOfOperation    (5),
  6244.         certificateHold         (6),
  6245.         removeFromCRL           (8) }
  6246.  
  6247. instructionCode EXTENSION ::= {
  6248.         SYNTAX  HoldInstruction
  6249.         IDENTIFIED BY id-ce-instructionCode }
  6250.  
  6251. HoldInstruction ::= OBJECT IDENTIFIER
  6252.  
  6253. -- holdinstructions described in this specification, from ANSI x9
  6254.  
  6255. -- ANSI x9 arc holdinstruction arc
  6256. holdInstruction OBJECT IDENTIFIER ::= {
  6257.      joint-iso-ccitt(2) member-body(2) us(840) x9cm(10040) 2}
  6258.  
  6259. -- ANSI X9 holdinstructions referenced by this standard
  6260. id-holdinstruction-none OBJECT IDENTIFIER ::= {holdInstruction 1}
  6261. id-holdinstruction-callissuer OBJECT IDENTIFIER ::= {holdInstruction 2}
  6262. id-holdinstruction-reject OBJECT IDENTIFIER ::= {holdInstruction 3}
  6263.  
  6264. invalidityDate EXTENSION ::= {
  6265.         SYNTAX  GeneralizedTime
  6266.         IDENTIFIED BY id-ce-invalidityDate }
  6267.  
  6268. -- CRL distribution points and delta-CRL extensions --
  6269.  
  6270. cRLDistributionPoints EXTENSION ::= {
  6271.  
  6272.  
  6273.  
  6274. Housley, et. al.            Standards Track                   [Page 112]
  6275.  
  6276. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6277.  
  6278.  
  6279.         SYNTAX  CRLDistPointsSyntax
  6280.         IDENTIFIED BY id-ce-cRLDistributionPoints }
  6281.  
  6282. CRLDistPointsSyntax ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
  6283.  
  6284. DistributionPoint ::= SEQUENCE {
  6285.         distributionPoint       [0]     DistributionPointName OPTIONAL,
  6286.         reasons         [1]     ReasonFlags OPTIONAL,
  6287.         cRLIssuer               [2]     GeneralNames OPTIONAL }
  6288.  
  6289. DistributionPointName ::= CHOICE {
  6290.         fullName                [0]     GeneralNames,
  6291.         nameRelativeToCRLIssuer [1]     RelativeDistinguishedName }
  6292.  
  6293. ReasonFlags ::= BIT STRING {
  6294.         unused                  (0),
  6295.         keyCompromise           (1),
  6296.         caCompromise            (2),
  6297.         affiliationChanged      (3),
  6298.         superseded              (4),
  6299.         cessationOfOperation    (5),
  6300.         certificateHold         (6) }
  6301.  
  6302. issuingDistributionPoint EXTENSION ::= {
  6303.         SYNTAX  IssuingDistPointSyntax
  6304.         IDENTIFIED BY id-ce-issuingDistributionPoint }
  6305.  
  6306. IssuingDistPointSyntax ::= SEQUENCE {
  6307.         distributionPoint       [0] DistributionPointName OPTIONAL,
  6308.         onlyContainsUserCerts   [1] BOOLEAN DEFAULT FALSE,
  6309.         onlyContainsCACerts     [2] BOOLEAN DEFAULT FALSE,
  6310.         onlySomeReasons         [3] ReasonFlags OPTIONAL,
  6311.         indirectCRL             [4] BOOLEAN DEFAULT FALSE }
  6312.  
  6313. certificateIssuer EXTENSION ::= {
  6314.         SYNTAX          GeneralNames
  6315.         IDENTIFIED BY id-ce-certificateIssuer }
  6316.  
  6317. deltaCRLIndicator EXTENSION ::= {
  6318.         SYNTAX          BaseCRLNumber
  6319.         IDENTIFIED BY id-ce-deltaCRLIndicator }
  6320.  
  6321. BaseCRLNumber ::= CRLNumber
  6322.  
  6323. -- Object identifier assignments for ISO certificate extensions --
  6324. id-ce   OBJECT IDENTIFIER       ::=     {joint-iso-ccitt(2) ds(5) 29}
  6325.  
  6326. id-ce-subjectDirectoryAttributes   OBJECT IDENTIFIER ::= {id-ce 9}
  6327.  
  6328.  
  6329.  
  6330. Housley, et. al.            Standards Track                   [Page 113]
  6331.  
  6332. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6333.  
  6334.  
  6335. id-ce-subjectKeyIdentifier         OBJECT IDENTIFIER ::= {id-ce 14}
  6336. id-ce-keyUsage                     OBJECT IDENTIFIER ::= {id-ce 15}
  6337. id-ce-privateKeyUsagePeriod        OBJECT IDENTIFIER ::= {id-ce 16}
  6338. id-ce-subjectAltName               OBJECT IDENTIFIER ::= {id-ce 17}
  6339. id-ce-issuerAltName                OBJECT IDENTIFIER ::= {id-ce 18}
  6340. id-ce-basicConstraints             OBJECT IDENTIFIER ::= {id-ce 19}
  6341. id-ce-cRLNumber                    OBJECT IDENTIFIER ::= {id-ce 20}
  6342. id-ce-reasonCode                   OBJECT IDENTIFIER ::= {id-ce 21}
  6343. id-ce-instructionCode              OBJECT IDENTIFIER ::= {id-ce 23}
  6344. id-ce-invalidityDate               OBJECT IDENTIFIER ::= {id-ce 24}
  6345. id-ce-deltaCRLIndicator            OBJECT IDENTIFIER ::= {id-ce 27}
  6346. id-ce-issuingDistributionPoint     OBJECT IDENTIFIER ::= {id-ce 28}
  6347. id-ce-certificateIssuer            OBJECT IDENTIFIER ::= {id-ce 29}
  6348. id-ce-nameConstraints              OBJECT IDENTIFIER ::= {id-ce 30}
  6349. id-ce-cRLDistributionPoints        OBJECT IDENTIFIER ::= {id-ce 31}
  6350. id-ce-certificatePolicies          OBJECT IDENTIFIER ::= {id-ce 32}
  6351. id-ce-policyMappings               OBJECT IDENTIFIER ::= {id-ce 33}
  6352. id-ce-policyConstraints            OBJECT IDENTIFIER ::= {id-ce 36}
  6353. id-ce-authorityKeyIdentifier       OBJECT IDENTIFIER ::= {id-ce 35}
  6354. id-ce-extKeyUsage                  OBJECT IDENTIFIER ::= {id-ce 37}
  6355.  
  6356. -- PKIX 1 extensions
  6357.  
  6358. authorityInfoAccess EXTENSION ::= {
  6359.         SYNTAX  AuthorityInfoAccessSyntax
  6360.         IDENTIFIED BY id-pe-authorityInfoAccess }
  6361.  
  6362. AuthorityInfoAccessSyntax  ::=
  6363.         SEQUENCE SIZE (1..MAX) OF AccessDescription
  6364.  
  6365. AccessDescription  ::=  SEQUENCE {
  6366.         accessMethod          OBJECT IDENTIFIER,
  6367.         accessLocation        GeneralName  }
  6368.  
  6369. id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
  6370.  
  6371. id-ad-ocsp      OBJECT IDENTIFIER ::= { id-ad 1 }
  6372. id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
  6373.  
  6374. -- PKIX policy qualifier definitions
  6375.  
  6376. noticeToUser CERT-POLICY-QUALIFIER ::= {
  6377.      POLICY-QUALIFIER-ID    id-qt-cps QUALIFIER-TYPE       CPSuri}
  6378.  
  6379. pointerToCPS CERT-POLICY-QUALIFIER ::= {
  6380.      POLICY-QUALIFIER-ID    id-qt-unotice QUALIFIER-TYPE   UserNotice}
  6381.  
  6382. id-qt-cps      OBJECT IDENTIFIER ::=  { id-qt 1 }
  6383.  
  6384.  
  6385.  
  6386. Housley, et. al.            Standards Track                   [Page 114]
  6387.  
  6388. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6389.  
  6390.  
  6391. id-qt-unotice  OBJECT IDENTIFIER ::=  { id-qt 2 }
  6392.  
  6393. CPSuri ::= IA5String
  6394.  
  6395. UserNotice ::= SEQUENCE {
  6396.      noticeRef        NoticeReference OPTIONAL,
  6397.      explicitText     DisplayText OPTIONAL}
  6398.  
  6399. NoticeReference ::= SEQUENCE {
  6400.      organization     DisplayText,
  6401.      noticeNumbers    SEQUENCE OF INTEGER }
  6402.  
  6403. DisplayText ::= CHOICE {
  6404.      visibleString    VisibleString  (SIZE (1..200)),
  6405.      bmpString        BMPString      (SIZE (1..200)),
  6406.      utf8String       UTF8String     (SIZE (1..200)) }
  6407.  
  6408.  
  6409. END
  6410.  
  6411.  
  6412.  
  6413.  
  6414.  
  6415.  
  6416.  
  6417.  
  6418.  
  6419.  
  6420.  
  6421.  
  6422.  
  6423.  
  6424.  
  6425.  
  6426.  
  6427.  
  6428.  
  6429.  
  6430.  
  6431.  
  6432.  
  6433.  
  6434.  
  6435.  
  6436.  
  6437.  
  6438.  
  6439.  
  6440.  
  6441.  
  6442. Housley, et. al.            Standards Track                   [Page 115]
  6443.  
  6444. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6445.  
  6446.  
  6447. Appendix C. ASN.1 Notes
  6448.  
  6449.    The construct "SEQUENCE SIZE (1..MAX) OF" appears in several ASN.1
  6450.    constructs. A valid ASN.1 sequence will have zero or more entries.
  6451.    The SIZE (1..MAX) construct constrains the sequence to have at least
  6452.    one entry. MAX indicates the upper bound is unspecified.
  6453.    Implementations are free to choose an upper bound that suits their
  6454.    environment.
  6455.  
  6456.    The construct "positiveInt ::= INTEGER (0..MAX)" defines positiveInt
  6457.    as a subtype of INTEGER containing integers greater than or equal to
  6458.    zero.  The upper bound is unspecified. Implementations are free to
  6459.    select an upper bound that suits their environment.
  6460.  
  6461.    The character string type PrintableString supports a very basic Latin
  6462.    character set:  the lower case letters 'a' through 'z', upper case
  6463.    letters 'A' through 'Z', the digits '0' through '9', eleven special
  6464.    characters ' " ( ) + , - . / : ? and space.
  6465.  
  6466.    The character string type TeletexString is a superset of
  6467.    PrintableString.  TeletexString supports a fairly standard (ascii-
  6468.    like) Latin character set, Latin characters with non-spacing accents
  6469.    and Japanese characters.
  6470.  
  6471.    The character string type UniversalString supports any of the
  6472.    characters allowed by ISO 10646-1. ISO 10646 is the Universal
  6473.    multiple-octet coded Character Set (UCS).  ISO 10646-1 specifes the
  6474.    architecture and the "basic multilingual plane" - a large standard
  6475.    character set which includes all major world character standards.
  6476.  
  6477.    The character string type UTF8String will be introduced in the 1998
  6478.    version of ASN.1.  UTF8String is a universal type and has been
  6479.    assigned tag number 12.  The content of UTF8String was defined by RFC
  6480.    2044 and updated in RFC 2279, "UTF-8, a transformation Format of ISP
  6481.    10646."  ISO is expected to formally add UTF8String to the list of
  6482.    choices for DirectoryString in 1998 as well.
  6483.  
  6484.    In anticipation of these changes, and in conformance with IETF Best
  6485.    Practices codified in RFC 2277, IETF Policy on Character Sets and
  6486.    Languages, this document includes UTF8String as a choice in
  6487.    DirectoryString and the CPS qualifier extensions.
  6488.  
  6489.  
  6490.  
  6491.  
  6492.  
  6493.  
  6494.  
  6495.  
  6496.  
  6497.  
  6498. Housley, et. al.            Standards Track                   [Page 116]
  6499.  
  6500. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6501.  
  6502.  
  6503. Appendix D. Examples
  6504.  
  6505.    This section contains four examples: three certificates and a CRL.
  6506.    The first two certificates and the CRL comprise a minimal
  6507.    certification path.
  6508.  
  6509.    Section D.1 contains an annotated hex dump of a "self-signed"
  6510.    certificate issued by a CA whose distinguished name is
  6511.    cn=us,o=gov,ou=nist.  The certificate contains a DSA public key with
  6512.    parameters, and is signed by the corresponding DSA private key.
  6513.  
  6514.    Section D.2 contains an annotated hex dump of an end-entity
  6515.    certificate.  The end entity certificate contains a DSA public key,
  6516.    and is signed by the private key corresponding to the "self-signed"
  6517.    certificate in section D.1.
  6518.  
  6519.    Section D.3 contains a dump of an end entity certificate which
  6520.    contains an RSA public key and is signed with RSA and MD5.  This
  6521.    certificate is not part of the minimal certification path.
  6522.  
  6523.    Section D.4 contains an annotated hex dump of a CRL.  The CRL is
  6524.    issued by the CA whose distinguished name is cn=us,o=gov,ou=nist and
  6525.    the list of revoked certificates includes the end entity certificate
  6526.    presented in D.2.
  6527.  
  6528. D.1 Certificate
  6529.  
  6530.    This section contains an annotated hex dump of a 699 byte version 3
  6531.    certificate.  The certificate contains the following information:
  6532.    (a) the serial number is 17 (11 hex);
  6533.    (b) the certificate is signed with DSA and the SHA-1 hash algorithm;
  6534.    (c) the issuer's distinguished name is OU=nist; O=gov; C=US
  6535.    (d) and the subject's distinguished name is OU=nist; O=gov; C=US
  6536.    (e) the certificate was issued on June 30, 1997 and will expire on
  6537.    December 31, 1997;
  6538.    (f) the certificate contains a 1024 bit DSA public key with
  6539.    parameters;
  6540.    (g) the certificate contains a subject key identifier extension; and
  6541.    (h) the certificate is a CA certificate (as indicated through the
  6542.    basic constraints extension.)
  6543.  
  6544. 0000 30 82 02 b7  695: SEQUENCE
  6545. 0004 30 82 02 77  631: . SEQUENCE    tbscertificate
  6546. 0008 a0 03          3: . . [0]
  6547. 0010 02 01          1: . . . INTEGER 2
  6548.                      : 02
  6549. 0013 02 01          1: . . INTEGER 17
  6550.                      : 11
  6551.  
  6552.  
  6553.  
  6554. Housley, et. al.            Standards Track                   [Page 117]
  6555.  
  6556. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6557.  
  6558.  
  6559. 0016 30 09          9: . . SEQUENCE
  6560. 0018 06 07          7: . . . OID 1.2.840.10040.4.3: dsa-with-sha
  6561.                      : 2a 86 48 ce 38 04 03
  6562. 0027 30 2a         42: . . SEQUENCE
  6563. 0029 31 0b         11: . . . SET
  6564. 0031 30 09          9: . . . . SEQUENCE
  6565. 0033 06 03          3: . . . . . OID 2.5.4.6: C
  6566.                      : 55 04 06
  6567. 0038 13 02          2: . . . . . PrintableString  'US'
  6568.                      : 55 53
  6569. 0042 31 0c         12: . . . SET
  6570. 0044 30 0a         10: . . . . SEQUENCE
  6571. 0046 06 03          3: . . . . . OID 2.5.4.10: O
  6572.                      : 55 04 0a
  6573. 0051 13 03          3: . . . . . PrintableString  'gov'
  6574.                      : 67 6f 76
  6575. 0056 31 0d         13: . . . SET
  6576. 0058 30 0b         11: . . . . SEQUENCE
  6577. 0060 06 03          3: . . . . . OID 2.5.4.11: OU
  6578.                      : 55 04 0b
  6579. 0065 13 04          4: . . . . . PrintableString  'nist'
  6580.                      : 6e 69 73 74
  6581. 0071 30 1e         30: . . SEQUENCE
  6582. 0073 17 0d         13: . . . UTCTime  '970630000000Z'
  6583.                      : 39 37 30 36 33 30 30 30 30 30 30 30 5a
  6584. 0088 17 0d         13: . . . UTCTime  '971231000000Z'
  6585.                      : 39 37 31 32 33 31 30 30 30 30 30 30 5a
  6586. 0103 30 2a         42: . . SEQUENCE
  6587. 0105 31 0b         11: . . . SET
  6588. 0107 30 09          9: . . . . SEQUENCE
  6589. 0109 06 03          3: . . . . . OID 2.5.4.6: C
  6590.                      : 55 04 06
  6591. 0114 13 02          2: . . . . . PrintableString  'US'
  6592.                      : 55 53
  6593. 0118 31 0c         12: . . . SET
  6594. 0120 30 0a         10: . . . . SEQUENCE
  6595. 0122 06 03          3: . . . . . OID 2.5.4.10: O
  6596.                      : 55 04 0a
  6597. 0127 13 03          3: . . . . . PrintableString  'gov'
  6598.                      : 67 6f 76
  6599. 0132 31 0d         13: . . . SET
  6600. 0134 30 0b         11: . . . . SEQUENCE
  6601. 0136 06 03          3: . . . . . OID 2.5.4.11: OU
  6602.                      : 55 04 0b
  6603. 0141 13 04          4: . . . . . PrintableString  'nist'
  6604.                      : 6e 69 73 74
  6605. 0147 30 82 01 b4  436: . . SEQUENCE
  6606. 0151 30 82 01 29  297: . . . SEQUENCE
  6607.  
  6608.  
  6609.  
  6610. Housley, et. al.            Standards Track                   [Page 118]
  6611.  
  6612. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6613.  
  6614.  
  6615. 0155 06 07          7: . . . . OID 1.2.840.10040.4.1: dsa
  6616.                      : 2a 86 48 ce 38 04 01
  6617. 0164 30 82 01 1c  284: . . . . SEQUENCE
  6618. 0168 02 81 80     128: . . . . . INTEGER
  6619.                      : d4 38 02 c5 35 7b d5 0b a1 7e 5d 72 59 63 55 d3
  6620.                      : 45 56 ea e2 25 1a 6b c5 a4 ab aa 0b d4 62 b4 d2
  6621.                      : 21 b1 95 a2 c6 01 c9 c3 fa 01 6f 79 86 83 3d 03
  6622.                      : 61 e1 f1 92 ac bc 03 4e 89 a3 c9 53 4a f7 e2 a6
  6623.                      : 48 cf 42 1e 21 b1 5c 2b 3a 7f ba be 6b 5a f7 0a
  6624.                      : 26 d8 8e 1b eb ec bf 1e 5a 3f 45 c0 bd 31 23 be
  6625.                      : 69 71 a7 c2 90 fe a5 d6 80 b5 24 dc 44 9c eb 4d
  6626.                      : f9 da f0 c8 e8 a2 4c 99 07 5c 8e 35 2b 7d 57 8d
  6627. 0299 02 14         20: . . . . . INTEGER
  6628.                      : a7 83 9b f3 bd 2c 20 07 fc 4c e7 e8 9f f3 39 83
  6629.                      : 51 0d dc dd
  6630. 0321 02 81 80     128: . . . . . INTEGER
  6631.                      : 0e 3b 46 31 8a 0a 58 86 40 84 e3 a1 22 0d 88 ca
  6632.                      : 90 88 57 64 9f 01 21 e0 15 05 94 24 82 e2 10 90
  6633.                      : d9 e1 4e 10 5c e7 54 6b d4 0c 2b 1b 59 0a a0 b5
  6634.                      : a1 7d b5 07 e3 65 7c ea 90 d8 8e 30 42 e4 85 bb
  6635.                      : ac fa 4e 76 4b 78 0e df 6c e5 a6 e1 bd 59 77 7d
  6636.                      : a6 97 59 c5 29 a7 b3 3f 95 3e 9d f1 59 2d f7 42
  6637.                      : 87 62 3f f1 b8 6f c7 3d 4b b8 8d 74 c4 ca 44 90
  6638.                      : cf 67 db de 14 60 97 4a d1 f7 6d 9e 09 94 c4 0d
  6639. 0452 03 81 84     132: . . . BIT STRING  (0 unused bits)
  6640.                      : 02 81 80 aa 98 ea 13 94 a2 db f1 5b 7f 98 2f 78
  6641.                      : e7 d8 e3 b9 71 86 f6 80 2f 40 39 c3 da 3b 4b 13
  6642.                      : 46 26 ee 0d 56 c5 a3 3a 39 b7 7d 33 c2 6b 5c 77
  6643.                      : 92 f2 55 65 90 39 cd 1a 3c 86 e1 32 eb 25 bc 91
  6644.                      : c4 ff 80 4f 36 61 bd cc e2 61 04 e0 7e 60 13 ca
  6645.                      : c0 9c dd e0 ea 41 de 33 c1 f1 44 a9 bc 71 de cf
  6646.                      : 59 d4 6e da 44 99 3c 21 64 e4 78 54 9d d0 7b ba
  6647.                      : 4e f5 18 4d 5e 39 30 bf e0 d1 f6 f4 83 25 4f 14
  6648.                      : aa 71 e1
  6649. 0587 a3 32         50: . . [3]
  6650. 0589 30 30         48: . . . SEQUENCE
  6651. 0591 30 0f          9: . . . . SEQUENCE
  6652. 0593 06 03          3: . . . . . OID 2.5.29.19: basicConstraints
  6653.                      : 55 1d 13
  6654. 0598 01 01          1: . . . . . TRUE
  6655.                      : ff
  6656. 0601 04 05          5: . . . . . OCTET STRING
  6657.                      : 30 03 01 01 ff
  6658. 0608 30 1d         29: . SEQUENCE
  6659. 0610 06 03          3: . . . . . OID 2.5.29.14: subjectKeyIdentifier
  6660.                      : 55 1d 0e
  6661. 0615 04 16         22: . . . . . OCTET STRING
  6662.                      : 04 14 e7 26 c5 54 cd 5b a3 6f 35 68 95 aa d5 ff
  6663.  
  6664.  
  6665.  
  6666. Housley, et. al.            Standards Track                   [Page 119]
  6667.  
  6668. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6669.  
  6670.  
  6671.                      : 1c 21 e4 22 75 d6
  6672. 0639 30 09          9: . SEQUENCE
  6673. 0641 06 07          7: . . OID 1.2.840.10040.4.3: dsa-with-sha
  6674.                      : 2a 86 48 ce 38 04 03
  6675. 0650 03 2f         47: . BIT STRING  (0 unused bits)
  6676.                      : 30 2c 02 14 a0 66 c1 76 33 99 13 51 8d 93 64 2f
  6677.                      : ca 13 73 de 79 1a 7d 33 02 14 5d 90 f6 ce 92 4a
  6678.                      : bf 29 11 24 80 28 a6 5a 8e 73 b6 76 02 68
  6679.  
  6680. D.2 Certificate
  6681.  
  6682.    This section contains an annotated hex dump of a 730 byte version 3
  6683.    certificate.  The certificate contains the following information:
  6684.    (a) the serial number is 18 (12 hex);
  6685.    (b) the certificate is signed with DSA and the SHA-1 hash algorithm;
  6686.    (c) the issuer's distinguished name is OU=nist; O=gov; C=US
  6687.    (d) and the subject's distinguished name is CN=Tim Polk; OU=nist;
  6688.    O=gov; C=US
  6689.    (e) the certificate was valid from July 30, 1997 through December 1,
  6690.    1997;
  6691.    (f) the certificate contains a 1024 bit DSA public key;
  6692.    (g) the certificate is an end entity certificate, as the basic
  6693.    constraints extension is not present;
  6694.    (h) the certificate contains an authority key identifier extension;
  6695.    and
  6696.    (i) the certificate includes one alternative name - an RFC 822
  6697.    address.
  6698.  
  6699. 0000 30 82 02 d6  726: SEQUENCE
  6700. 0004 30 82 02 96  662: . SEQUENCE
  6701. 0008 a0 03          3: . . [0]
  6702. 0010 02 01          1: . . . INTEGER 2
  6703.                      : 02
  6704. 0013 02 01          1: . . INTEGER 18
  6705.                      : 12
  6706. 0016 30 09          9: . . SEQUENCE
  6707. 0018 06 07          7: . . . OID 1.2.840.10040.4.3: dsa-with-sha
  6708.                      : 2a 86 48 ce 38 04 03
  6709. 0027 30 2a         42: . . SEQUENCE
  6710. 0029 31 0b         11: . . . SET
  6711. 0031 30 09          9: . . . . SEQUENCE
  6712. 0033 06 03          3: . . . . . OID 2.5.4.6: C
  6713.                      : 55 04 06
  6714. 0038 13 02          2: . . . . . PrintableString  'US'
  6715.                      : 55 53
  6716. 0042 31 0c         12: . . . SET
  6717. 0044 30 0a         10: . . . . SEQUENCE
  6718. 0046 06 03          3: . . . . . OID 2.5.4.10: O
  6719.  
  6720.  
  6721.  
  6722. Housley, et. al.            Standards Track                   [Page 120]
  6723.  
  6724. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6725.  
  6726.  
  6727.                      : 55 04 0a
  6728. 0051 13 03          3: . . . . . PrintableString  'gov'
  6729.                      : 67 6f 76
  6730. 0056 31 0d         13: . . . SET
  6731. 0058 30 0b         11: . . . . SEQUENCE
  6732. 0060 06 03          3: . . . . . OID 2.5.4.11: OU
  6733.                      : 55 04 0b
  6734. 0065 13 04          4: . . . . . PrintableString  'nist'
  6735.                      : 6e 69 73 74
  6736. 0071 30 1e         30: . . SEQUENCE
  6737. 0073 17 0d         13: . . . UTCTime  '970730000000Z'
  6738.                      : 39 37 30 37 33 30 30 30 30 30 30 30 5a
  6739. 0088 17 0d         13: . . . UTCTime  '971201000000Z'
  6740.                      : 39 37 31 32 30 31 30 30 30 30 30 30 5a
  6741. 0103 30 3d         61: . . SEQUENCE
  6742. 0105 31 0b         11: . . . SET
  6743. 0107 30 09          9: . . . . SEQUENCE
  6744. 0109 06 03          3: . . . . . OID 2.5.4.6: C
  6745.                      : 55 04 06
  6746. 0114 13 02          2: . . . . . PrintableString  'US'
  6747.                      : 55 53
  6748. 0118 31 0c         12: . . . SET
  6749. 0120 30 0a         10: . . . . SEQUENCE
  6750. 0122 06 03          3: . . . . . OID 2.5.4.10: O
  6751.                      : 55 04 0a
  6752. 0127 13 03          3: . . . . . PrintableString  'gov'
  6753.                      : 67 6f 76
  6754. 0132 31 0d         13: . . . SET
  6755. 0134 30 0b         11: . . . . SEQUENCE
  6756. 0136 06 03          3: . . . . . OID 2.5.4.11: OU
  6757.                      : 55 04 0b
  6758. 0141 13 04          4: . . . . . PrintableString  'nist'
  6759.                      : 6e 69 73 74
  6760. 0147 31 11         17: . . . SET
  6761. 0149 30 0f         15: . . . . SEQUENCE
  6762. 0151 06 03          3: . . . . . OID 2.5.4.3: CN
  6763.                      : 55 04 03
  6764. 0156 13 08          8: . . . . . PrintableString  'Tim Polk'
  6765.                      : 54 69 6d 20 50 6f 6c 6b
  6766. 0166 30 82 01 b4  436: . . SEQUENCE
  6767. 0170 30 82 01 29  297: . . . SEQUENCE
  6768. 0174 06 07          7: . . . . OID 1.2.840.10040.4.1: dsa
  6769.                      : 2a 86 48 ce 38 04 01
  6770. 0183 30 82 01 1c  284: . . . . SEQUENCE
  6771. 0187 02 81 80     128: . . . . . INTEGER
  6772.                      : d4 38 02 c5 35 7b d5 0b a1 7e 5d 72 59 63 55 d3
  6773.                      : 45 56 ea e2 25 1a 6b c5 a4 ab aa 0b d4 62 b4 d2
  6774.                      : 21 b1 95 a2 c6 01 c9 c3 fa 01 6f 79 86 83 3d 03
  6775.  
  6776.  
  6777.  
  6778. Housley, et. al.            Standards Track                   [Page 121]
  6779.  
  6780. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6781.  
  6782.  
  6783.                      : 61 e1 f1 92 ac bc 03 4e 89 a3 c9 53 4a f7 e2 a6
  6784.                      : 48 cf 42 1e 21 b1 5c 2b 3a 7f ba be 6b 5a f7 0a
  6785.                      : 26 d8 8e 1b eb ec bf 1e 5a 3f 45 c0 bd 31 23 be
  6786.                      : 69 71 a7 c2 90 fe a5 d6 80 b5 24 dc 44 9c eb 4d
  6787.                      : f9 da f0 c8 e8 a2 4c 99 07 5c 8e 35 2b 7d 57 8d
  6788. 0318 02 14         20: . . . . . INTEGER
  6789.                      : a7 83 9b f3 bd 2c 20 07 fc 4c e7 e8 9f f3 39 83
  6790.                      : 51 0d dc dd
  6791. 0340 02 81 80     128: . . . . . INTEGER
  6792.                      : 0e 3b 46 31 8a 0a 58 86 40 84 e3 a1 22 0d 88 ca
  6793.                      : 90 88 57 64 9f 01 21 e0 15 05 94 24 82 e2 10 90
  6794.                      : d9 e1 4e 10 5c e7 54 6b d4 0c 2b 1b 59 0a a0 b5
  6795.                      : a1 7d b5 07 e3 65 7c ea 90 d8 8e 30 42 e4 85 bb
  6796.                      : ac fa 4e 76 4b 78 0e df 6c e5 a6 e1 bd 59 77 7d
  6797.                      : a6 97 59 c5 29 a7 b3 3f 95 3e 9d f1 59 2d f7 42
  6798.                      : 87 62 3f f1 b8 6f c7 3d 4b b8 8d 74 c4 ca 44 90
  6799.                      : cf 67 db de 14 60 97 4a d1 f7 6d 9e 09 94 c4 0d
  6800. 0471 03 81 84     132: . . . BIT STRING  (0 unused bits)
  6801.                      : 02 81 80 a8 63 b1 60 70 94 7e 0b 86 08 93 0c 0d
  6802.                      : 08 12 4a 58 a9 af 9a 09 38 54 3b 46 82 fb 85 0d
  6803.                      : 18 8b 2a 77 f7 58 e8 f0 1d d2 18 df fe e7 e9 35
  6804.                      : c8 a6 1a db 8d 3d 3d f8 73 14 a9 0b 39 c7 95 f6
  6805.                      : 52 7d 2d 13 8c ae 03 29 3c 4e 8c b0 26 18 b6 d8
  6806.                      : 11 1f d4 12 0c 13 ce 3f f1 c7 05 4e df e1 fc 44
  6807.                      : fd 25 34 19 4a 81 0d dd 98 42 ac d3 b6 91 0c 7f
  6808.                      : 16 72 a3 a0 8a d7 01 7f fb 9c 93 e8 99 92 c8 42
  6809.                      : 47 c6 43
  6810. 0606 a3 3e         62: . . [3]
  6811. 0608 30 3c         60: . . . SEQUENCE
  6812. 0610 30 19         25: . . . . SEQUENCE
  6813. 0612 06 03          3: . . . . . OID 2.5.29.17: subjectAltName
  6814.                      : 55 1d 11
  6815. 0617 04 12         18: . . . . . OCTET STRING
  6816.                      : 30 10 81 0e 77 70 6f 6c 6b 40 6e 69 73 74 2e 67
  6817.                      : 6f 76
  6818. 0637 30 1f         31: . . . . SEQUENCE
  6819. 0639 06 03          3: . . . . . OID 2.5.29.35: subjectAltName
  6820.                      : 55 1d 23
  6821. 0644 04 18         24: . . . . . OCTET STRING
  6822.                      : 30 16 80 14 e7 26 c5 54 cd 5b a3 6f 35 68 95 aa
  6823.                      : d5 ff 1c 21 e4 22 75 d6
  6824. 0670 30 09          9: . SEQUENCE
  6825. 0672 06 07          7: . . OID 1.2.840.10040.4.3: dsa-with-sha
  6826.                      : 2a 86 48 ce 38 04 03
  6827. 0681 03 2f         47: . BIT STRING  (0 unused bits)
  6828.                      : 30 2c 02 14 3c 02 e0 ab d9 5d 05 77 75 15 71 58
  6829.                      : 92 29 48 c4 1c 54 df fc 02 14 5b da 53 98 7f c5
  6830.                      : 33 df c6 09 b2 7a e3 6f 97 70 1e 14 ed 94
  6831.  
  6832.  
  6833.  
  6834. Housley, et. al.            Standards Track                   [Page 122]
  6835.  
  6836. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6837.  
  6838.  
  6839. D.3 End-Entity Certificate Using RSA
  6840.  
  6841.    This section contains an annotated hex dump of a 675 byte version 3
  6842.    certificate.  The certificate contains the following information:
  6843.    (a) the serial number is 256;
  6844.    (b) the certificate is signed with RSA and the MD2 hash algorithm;
  6845.    (c) the issuer's distinguished name is OU=Dept. Arquitectura de
  6846.    Computadors; O=Universitat Politecnica de Catalunya; C=ES
  6847.    (d) and the subject's distinguished name is CN=Francisco Jordan;
  6848.    OU=Dept. Arquitectura de Computadors; O=Universitat Politecnica de
  6849.    Catalunya; C=ES
  6850.    (e) the certificate was issued on May 21, 1996 and expired on May 21,
  6851.    1997;
  6852.    (f) the certificate contains a 768 bit RSA public key;
  6853.    (g) the certificate is an end entity certificate (not a CA
  6854.    certificate);
  6855.    (h) the certificate includes an alternative subject name and an
  6856.    alternative issuer name - bothe are URLs;
  6857.    (i) the certificate include an authority key identifier and
  6858.    certificate policies extensions; and
  6859.    (j) the certificate includes a critical key usage extension
  6860.    specifying the public is intended for generation of digital
  6861.    signatures.
  6862.  
  6863. 0000 30 80           : SEQUENCE   (size undefined)
  6864. 0002 30 82 02 40  576: . SEQUENCE
  6865. 0006 a0 03          3: . . [0]
  6866. 0008 02 01          1: . . . INTEGER 2
  6867.                      : 02
  6868. 0011 02 02          2: . . INTEGER 256
  6869.                      : 01 00
  6870. 0015 30 0d         13: . . SEQUENCE
  6871. 0017 06 09          9: . . . OID 1.2.840.113549.1.1.2:
  6872.                                        MD2WithRSAEncryption
  6873.                      : 2a 86 48 86 f7 0d 01 01 02
  6874. 0028 05 00          0: . . . NULL
  6875. 0030 30 68         88: . . SEQUENCE
  6876. 0032 31 0b         11: . . . SET
  6877. 0034 30 09          9: . . . . SEQUENCE
  6878. 0036 06 03          3: . . . . . OID 2.5.4.6: C
  6879.                      : 55 04 06
  6880. 0041 13 02          2: . . . . . PrintableString  'ES'
  6881.                      : 45 53
  6882. 0045 31 2d         45: . . . SET
  6883. 0047 30 2b         43: . . . . SEQUENCE
  6884. 0049 06 03          3: . . . . . OID 2.5.4.10: O
  6885.                      : 55 04 0a
  6886. 0054 13 24         36: . . . . . PrintableString
  6887.  
  6888.  
  6889.  
  6890. Housley, et. al.            Standards Track                   [Page 123]
  6891.  
  6892. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6893.  
  6894.  
  6895.                      'Universitat Politecnica de Catalunya'
  6896.                      : 55 6e 69 76 65 72 73 69 74 61 74 20 50 6f 6c 69
  6897.                      : 74 65 63 6e 69 63 61 20 64 65 20 43 61 74 61 6c
  6898.                      : 75 6e 79 61
  6899. 0092 31 2a         42: . . . SET
  6900. 0094 30 28         40: . . . . SEQUENCE
  6901. 0096 06 03          3: . . . . . OID 2.5.4.11: OU
  6902.                      : 55 04 0b
  6903. 0101 13 21         33: . . . . . PrintableString
  6904.                      'OU=Dept. Arquitectura de Computadors'
  6905.                      : 44 65 70 74 2e 20 41 72 71 75 69 74 65 63 74 75
  6906.                      : 72 61 20 64 65 20 43 6f 6d 70 75 74 61 64 6f 72
  6907.                      : 73
  6908. 0136 30 1e         30: . . SEQUENCE
  6909. 0138 17 0d         13: . . . UTCTime  '960521095826Z'
  6910.                      : 39 36 30 37 32 32 31 37 33 38 30 32 5a
  6911. 0153 17 0d         13: . . . UTCTime  '979521095826Z'
  6912.                      : 39 37 30 37 32 32 31 37 33 38 30 32 5a
  6913. 0168 30 81 83     112: . . SEQUENCE
  6914. 0171 31 0b         11: . . . SET
  6915. 0173 30 09          9: . . . . SEQUENCE
  6916. 0175 06 03          3: . . . . . OID 2.5.4.6: C
  6917.                      : 55 04 06
  6918. 0180 13 02          2: . . . . . PrintableString  'ES'
  6919.                      : 45 53
  6920. 0184 31 2d         12: . . . SET
  6921. 0186 30 2b         16: . . . . SEQUENCE
  6922. 0188 06 03          3: . . . . . OID 2.5.4.10: O
  6923.                      : 55 04 0a
  6924. 0193 13 24         36: . . . . . PrintableString
  6925.                      'Universitat Politecnica de Catalunya'
  6926.                      : 55 6e 69 76 65 72 73 69 74 61 74 20 50 6f 6c 69
  6927.                      : 74 65 63 6e 69 63 61 20 64 65 20 43 61 74 61 6c
  6928.                      : 75 6e 79 61
  6929. 0231 31 2a         42: . . . SET
  6930. 0233 30 28         40: . . . . SEQUENCE
  6931. 0235 06 03          3: . . . . . OID 2.5.4.11: OU
  6932.                      : 55 04 0b
  6933. 0240 13 21         33: . . . . . PrintableString
  6934.                      'Dept. Arquitectura de Computadors'
  6935.                      : 44 65 70 74 2e 20 41 72 71 75 69 74 65 63 74 75
  6936.                      : 72 61 20 64 65 20 43 6f 6d 70 75 74 61 64 6f 72
  6937.                      : 73
  6938. 0275 31 19         22: . . . SET
  6939. 0277 30 17         20: . . . . SEQUENCE
  6940. 0279 06 03          3: . . . . . OID 2.5.4.3: CN
  6941.                      : 55 04 03
  6942. 0284 13 10         16: . . . . . PrintableString 'Francisco Jordan'
  6943.  
  6944.  
  6945.  
  6946. Housley, et. al.            Standards Track                   [Page 124]
  6947.  
  6948. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  6949.  
  6950.  
  6951.                      : 46 72 61 6e 63 69 73 63 6f 20 4a 6f 72 64 61 6e
  6952. 0302 30 7c          2: . . SEQUENCE
  6953. 0304 30 0d         13: . . . SEQUENCE
  6954. 0306 06 09          9: . . . . OID 1.2.840.113549.1.1.1: RSAEncryption
  6955.                      : 2a 86 48 86 f7 0d 01 01 01
  6956. 0317 05 00          0: . . . . NULL
  6957. 0319 03 6b        107: . . . BIT STRING
  6958.                      : 00   (0 unused bits)
  6959.                      : 30 68 02 61 00 be aa 8b 77 54 a3 af ca 77 9f 2f
  6960.                      : b0 cf 43 88 ff a6 6d 79 55 5b 61 8c 68 ec 48 1e
  6961.                      : 8a 86 38 a4 fe 19 b8 62 17 1d 9d 0f 47 2c ff 63
  6962.                      : 8f 29 91 04 d1 52 bc 7f 67 b6 b2 8f 74 55 c1 33
  6963.                      : 21 6c 8f ab 01 95 24 c8 b2 73 93 9d 22 61 50 a9
  6964.                      : 35 fb 9d 57 50 32 ef 56 52 50 93 ab b1 88 94 78
  6965.                      : 56 15 c6 1c 8b 02 03 01 00 01
  6966. 0428 a3 81 97     151: . . [3]
  6967. 0431 30 3c         60: . . . SEQUENCE
  6968. 0433 30 1f         31: . . . . SEQUENCE
  6969. 0435 06 03          3: . . . . . OID 2.5.29.35: authorityKeyIdentifier
  6970.                      : 55 1d 23
  6971. 0440 04 14         22: . . . . . OCTET STRING
  6972.                      : 30 12 80 10 0e 6b 3a bf 04 ea 04 c3 0e 6b 3a bf
  6973.                      : 04 ea 04 c3
  6974. 0464 30 19         25: . . . . SEQUENCE
  6975. 0466 06 03          3: . . . . . OID 2.5.29.15: keyUsage
  6976.                      : 55 1d 0f
  6977. 0471 01 01          1: . . . . . TRUE
  6978. 0474 04 04          4: . . . . . OCTET STRING
  6979.                      : 03 02 07 80
  6980. 0480 30 19         25: . . . . SEQUENCE
  6981. 0482 06 03          3: . . . . . OID 2.5.29.32: certificatePolicies
  6982.                      : 55 1d 20
  6983. 0487 04 21         33: . . . . . OCTET STRING
  6984.                      : 30 1f 30 1d 06 04 2a 84 80 00 30 15 30 07 06 05
  6985.                      : 2a 84 80 00 01 30 0a 06 05 2a 84 80 00 02 02 01
  6986.                      : 0a
  6987. 0522 30 1c         28: . . . . SEQUENCE
  6988. 0524 06 03          3: . . . . . OID 2.5.29.17: subjectAltName
  6989.                      : 55 1d 11
  6990. 0529 04 15         21: . . . . . OCTET STRING
  6991.                      : 30 13 86 11 68 74 74 70 3a 2f 2f 61 63 2e 75 70
  6992.                      : 63 2e 65 73 2f
  6993. 0552 30 19         25: . . . . SEQUENCE
  6994. 0554 06 03          3: . . . . . OID 2.5.29.18: issuerAltName
  6995.                      : 55 1d 12
  6996. 0559 04 12         18: . . . . . OCTET STRING
  6997.                      : 30 14 86 12 68 74 74 70 3a 2f 2f 77 77 77 2e 75
  6998.                      : 70 63 2e 65
  6999.  
  7000.  
  7001.  
  7002. Housley, et. al.            Standards Track                   [Page 125]
  7003.  
  7004. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  7005.  
  7006.  
  7007. 0579 30 80           : . SEQUENCE (indefinite length)
  7008. 0581 06 07          7: . . OID
  7009. 0583 05 00          0: . . NULL
  7010. 0585 00 00          0: . . end of contents marker
  7011. 0587 03 81 81      47: . BIT STRING
  7012.                      : 00      (0 unused bits)
  7013.                      : 5c 01 bd b5 41 88 87 7a 0e d3 0e 6b 3a bf 04 ea
  7014.                      : 04 cb 5f 61 72 3c a3 bd 78 f5 66 17 fe 37 3a ab
  7015.                      : eb 67 bf b7 da a8 38 f6 33 15 71 75 2f b9 8c 91
  7016.                      : a0 e4 87 ba 4b 43 a0 22 8f d3 a9 86 43 89 e6 50
  7017.                      : 5c 01 bd b5 41 88 87 7a 0e d3 0e 6b 3a bf 04 ea
  7018.                      : 04 cb 5f 61 72 3c a3 bd 78 f5 66 17 fe 37 3a ab
  7019.                      : eb 67 bf b7 da a8 38 f6 33 15 71 75 2f b9 8c 91
  7020.                      : a0 e4 87 ba 4b 43 a0 22 8f d3 a9 86 43 89 e6 50
  7021. 0637 00 00          0: . . end of contents marker
  7022.  
  7023. D.4 Certificate Revocation List
  7024.  
  7025.    This section contains an annotated hex dump of a version 2 CRL with
  7026.    one extension (cRLNumber). The CRL was issued by OU=nist;O=gov;C=us
  7027.    on July 7, 1996; the next scheduled issuance was August 7, 1996.  The
  7028.    CRL includes one revoked certificates: serial number 18 (12 hex).
  7029.    The CRL itself is number 18, and it was signed with DSA and SHA-1.
  7030.  
  7031. 0000 30 81 ba     186: SEQUENCE
  7032. 0003 30 7c        124: . SEQUENCE
  7033. 0005 02 01          1: . . INTEGER 1
  7034.                      : 01
  7035. 0008 30 09          9: . . SEQUENCE
  7036. 0010 06 07          7: . . . OID 1.2.840.10040.4.3: dsa-with-sha
  7037.                      : 2a 86 48 ce 38 04 03
  7038. 0019 30 2a         42: . . SEQUENCE
  7039. 0021 31 0b         11: . . . SET
  7040. 0023 30 09          9: . . . . SEQUENCE
  7041. 0025 06 03          3: . . . . . OID 2.5.4.6: C
  7042.                      : 55 04 06
  7043. 0030 13 02          2: . . . . . PrintableString  'US'
  7044.                      : 55 53
  7045. 0034 31 0c         12: . . . SET
  7046. 0036 30 0a         10: . . . . SEQUENCE
  7047. 0038 06 03          3: . . . . . OID 2.5.4.10: O
  7048.                      : 55 04 0a
  7049. 0043 13 03          3: . . . . . PrintableString  'gov'
  7050.                      : 67 6f 76
  7051. 0048 31 0d         13: . . . SET
  7052. 0050 30 0b         11: . . . . SEQUENCE
  7053. 0052 06 03          3: . . . . . OID 2.5.4.11: OU
  7054.                      : 55 04 0b
  7055.  
  7056.  
  7057.  
  7058. Housley, et. al.            Standards Track                   [Page 126]
  7059.  
  7060. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  7061.  
  7062.  
  7063. 0057 13 04          4: . . . . . PrintableString  'nist'
  7064.                      : 6e 69 73 74
  7065. 0063 17 0d         13: . . UTCTime  '970801000000Z'
  7066.                      : 39 37 30 38 30 31 30 30 30 30 30 30 5a
  7067. 0078 17 0d         13: . . UTCTime  '970808000000Z'
  7068.                      : 39 37 30 38 30 38 30 30 30 30 30 30 5a
  7069. 0093 30 22         34: . . SEQUENCE
  7070. 0095 30 20         32: . . . SEQUENCE
  7071. 0097 02 01          1: . . . . INTEGER 18
  7072.                      : 12
  7073. 0100 17 0d         13: . . . . UTCTime  '970731000000Z'
  7074.                      : 39 37 30 37 33 31 30 30 30 30 30 30 5a
  7075. 0115 30 0c         12: . . . . SEQUENCE
  7076. 0117 30 0a         10: . . . . . SEQUENCE
  7077. 0119 06 03          3: . . . . . . OID 2.5.29.21: reasonCode
  7078.                      : 55 1d 15
  7079. 0124 04 03          3: . . . . . . OCTET STRING
  7080.                      : 0a 01 01
  7081. 0129 30 09          9: . SEQUENCE
  7082. 0131 06 07          7: . . OID 1.2.840.10040.4.3: dsa-with-sha
  7083.                      : 2a 86 48 ce 38 04 03
  7084. 0140 03 2f         47: . BIT STRING  (0 unused bits)
  7085.                      : 30 2c 02 14 9e d8 6b c1 7d c2 c4 02 f5 17 84 f9
  7086.                      : 9f 46 7a ca cf b7 05 8a 02 14 9e 43 39 85 dc ea
  7087.                      : 14 13 72 93 54 5d 44 44 e5 05 fe 73 9a b2
  7088.  
  7089.  
  7090.  
  7091.  
  7092.  
  7093.  
  7094.  
  7095.  
  7096.  
  7097.  
  7098.  
  7099.  
  7100.  
  7101.  
  7102.  
  7103.  
  7104.  
  7105.  
  7106.  
  7107.  
  7108.  
  7109.  
  7110.  
  7111.  
  7112.  
  7113.  
  7114. Housley, et. al.            Standards Track                   [Page 127]
  7115.  
  7116. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  7117.  
  7118.  
  7119. Appendix E. Authors' Addresses
  7120.  
  7121.    Russell Housley
  7122.    SPYRUS
  7123.    381 Elden Street
  7124.    Suite 1120
  7125.    Herndon, VA 20170
  7126.    USA
  7127.  
  7128.    EMail: housley@spyrus.com
  7129.  
  7130.  
  7131.    Warwick Ford
  7132.    VeriSign, Inc.
  7133.    One Alewife Center
  7134.    Cambridge, MA 02140
  7135.    USA
  7136.  
  7137.    EMail: wford@verisign.com
  7138.  
  7139.  
  7140.    Tim Polk
  7141.    NIST
  7142.    Building 820, Room 426
  7143.    Gaithersburg, MD 20899
  7144.    USA
  7145.  
  7146.    EMail: wpolk@nist.gov
  7147.  
  7148.  
  7149.    David Solo
  7150.    Citicorp
  7151.    666 Fifth Ave, 3rd Floor
  7152.    New York, NY 10103
  7153.    USA
  7154.  
  7155.    EMail: david.solo@citicorp.com
  7156.  
  7157.  
  7158.  
  7159.  
  7160.  
  7161.  
  7162.  
  7163.  
  7164.  
  7165.  
  7166.  
  7167.  
  7168.  
  7169.  
  7170. Housley, et. al.            Standards Track                   [Page 128]
  7171.  
  7172. RFC 2459        Internet X.509 Public Key Infrastructure    January 1999
  7173.  
  7174.  
  7175. Appendix F.  Full Copyright Statement
  7176.  
  7177.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  7178.  
  7179.    This document and translations of it may be copied and furnished to
  7180.    others, and derivative works that comment on or otherwise explain it
  7181.    or assist in its implementation may be prepared, copied, published
  7182.    and distributed, in whole or in part, without restriction of any
  7183.    kind, provided that the above copyright notice and this paragraph are
  7184.    included on all such copies and derivative works.  However, this
  7185.    document itself may not be modified in any way, such as by removing
  7186.    the copyright notice or references to the Internet Society or other
  7187.    Internet organizations, except as needed for the purpose of
  7188.    developing Internet standards in which case the procedures for
  7189.    copyrights defined in the Internet Standards process must be
  7190.    followed, or as required to translate it into languages other than
  7191.    English.
  7192.  
  7193.    The limited permissions granted above are perpetual and will not be
  7194.    revoked by the Internet Society or its successors or assigns.
  7195.  
  7196.    This document and the information contained herein is provided on an
  7197.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  7198.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  7199.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  7200.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  7201.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  7202.  
  7203.  
  7204.  
  7205.  
  7206.  
  7207.  
  7208.  
  7209.  
  7210.  
  7211.  
  7212.  
  7213.  
  7214.  
  7215.  
  7216.  
  7217.  
  7218.  
  7219.  
  7220.  
  7221.  
  7222.  
  7223.  
  7224.  
  7225.  
  7226. Housley, et. al.            Standards Track                   [Page 129]
  7227.  
  7228.