Import autobuild from gnulib.
[gnutls.git] / doc / protocol / rfc2985.txt
blobbf9fd84889b45fd54f202a31a33ac0cbfded6fdf
7 Network Working Group                                           M. Nystrom
8 Request for Comments: 2985                                      B. Kaliski
9 Category: Informational                                       RSA Security
10                                                              November 2000
13           PKCS #9: Selected Object Classes and Attribute Types
14                               Version 2.0
16 Status of this Memo
18    This memo provides information for the Internet community.  It does
19    not specify an Internet standard of any kind.  Distribution of this
20    memo is unlimited.
22 Copyright Notice
24    Copyright (C) The Internet Society (2000).  All Rights Reserved.
26 Abstract
28    This memo represents a republication of PKCS #9 v2.0 from RSA
29    Laboratories' Public-Key Cryptography Standards (PKCS) series, and
30    change control is retained within the PKCS process.  The body of this
31    document, except for the security considerations section, is taken
32    directly from that specification.
34    This memo provides a selection of object classes and attribute types
35    for use in conjunction with public-key cryptography and Lightweight
36    Directory Access Protocol (LDAP) accessible directories.  It also
37    includes ASN.1 syntax for all constructs.
39 Table of Contents
41    1.  Introduction ................................................. 2
42    2.  Definitions, notation and document convention ................ 2
43    2.1  Definitions ................................................. 2
44    2.2  Notation and document convention ............................ 3
45    3.  Overview ..................................................... 4
46    4.  Auxiliary object classes ..................................... 5
47    4.1  The "pkcsEntity" auxiliary object class ..................... 5
48    4.2  The "naturalPerson" auxiliary object class .................. 6
49    5.  Selected attribute types ..................................... 6
50    5.1  Attribute types for use with the "pkcsEntity" object class .. 6
51    5.2  Attribute types for use with the "naturalPerson" object class 7
52    5.3  Attribute types for use in PKCS #7 data .................... 12
53    5.4  Attribute types for use in PKCS #10 certificate requests ... 16
58 Nystrom & Kaliski            Informational                      [Page 1]
60 RFC 2985      Selected Object Classes and Attribute Types  November 2000
63    5.5  Attribute types for use in PKCS #12 "PFX" PDUs or PKCS #15
64         tokens ..................................................... 17
65    5.6  Attributes defined in S/MIMIE .............................. 18
66    6.  Matching rules .............................................. 19
67    6.1  Case ignore match .......................................... 19
68    6.2  Signing time match ......................................... 20
69    7.  Security Considerations ..................................... 20
70    8.  Authors' Addresses .......................................... 21
71    A.  ASN.1 module ................................................ 22
72    B.  BNF schema summary .......................................... 30
73    B.1  Syntaxes ................................................... 30
74    B.2  Object classes ............................................. 31
75    B.3  Attribute types ............................................ 32
76    B.4  Matching rules ............................................. 36
77    C.  Intellectual property considerations ........................ 37
78    D.  Revision history ............................................ 37
79    E.  References .................................................. 39
80    F.  Contact information & About PKCS ............................ 41
81    Full Copyright Statement ........................................ 41
83 1. Introduction
85    This document defines two new auxiliary object classes, pkcsEntity
86    and naturalPerson, and selected attribute types for use with these
87    classes.  It also defines some attribute types for use in conjunction
88    with PKCS #7 [14] (and S/MIME CMS [3]) digitally signed messages,
89    PKCS #10 [16] certificate-signing requests, PKCS #12 [17] personal
90    information exchanges and PKCS #15 [18] cryptographic tokens.
91    Matching rules for use with these attributes are also defined,
92    whenever necessary.
94 2. Definitions, notation and document conventions
96  2.1 Definitions
98    For the purposes of this document, the following definitions apply.
100    ASN.1           Abstract Syntax Notation One, as defined in [5].
102    Attributes      An ASN.1 type that specifies a set of attributes.
103                    Each attribute contains an attribute type (specified
104                    by object identifier) and one or more attribute
105                    values.  Some attribute types are restricted in their
106                    definition to have a single value; others may have
107                    multiple values.  This type is defined in [7].
114 Nystrom & Kaliski            Informational                      [Page 2]
116 RFC 2985      Selected Object Classes and Attribute Types  November 2000
119    CertificationRequestInfo
120                    An ASN.1 type that specifies a subject name, a public
121                    key, and a set of attributes.  This type is defined
122                    in [16].
124    ContentInfo     An ASN.1 type that specifies content exchanged
125                    between entities.  The contentType field, which has
126                    type OBJECT IDENTIFIER, specifies the content type,
127                    and the content field, whose type is defined by the
128                    contentType field, contains the content value.  This
129                    type is defined in [14] and [3].
131    PrivateKeyInfo  A type that specifies a private key and a set of
132                    extended attributes.  This type and the associated
133                    EncryptedPrivateKeyInfo type are defined in [15].
135    SignerInfo      A type that specifies per-signer information in the
136                    signed-data content type, including a set of
137                    attributes authenticated by the signer, and a set of
138                    attributes not authenticated by the signer.  This
139                    type is defined in [14] and [3].
141    DER             Distinguished Encoding Rules for ASN.1, as defined in
142                    [6].
144    UCS             Universal Multiple-Octet Coded Character Set, as
145                    defined in [11].
147    UTF8String      UCS Transformation Format encoded string.  The UTF-8
148                    encoding is defined in [11].
150  2.2 Notation and document conventions
152    In this document, all attribute type and object class definitions are
153    written in the ASN.1 value notation defined in [5].  Appendix B
154    contains most of these definitions written in the augmented BNF
155    notation defined in [2] as well.  This has been done in an attempt to
156    simplify the task of integrating this work into LDAP [22] development
157    environments.
159    The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
160    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
161    document are to be interpreted as described in [1].
170 Nystrom & Kaliski            Informational                      [Page 3]
172 RFC 2985      Selected Object Classes and Attribute Types  November 2000
175 3. Overview
177    This document specifies two new auxiliary object classes, pkcsEntity
178    and naturalPerson, and some new attribute types and matching rules.
179    All ASN.1 object classes, attributes, matching rules and types are
180    exported for use in other environments.
182    Attribute types defined in this document that are useful in
183    conjunction with storage of PKCS-related data and the pkcsEntity
184    object class includes PKCS #12 PFX PDUs, PKCS #15 tokens and
185    encrypted private keys.
187    Attribute types defined in this document that are useful in
188    conjunction with PKCS #10 certificate requests and the naturalPerson
189    object class includes electronic-mail address, pseudonym,
190    unstructured name, and unstructured address.
192    Attribute types defined in this document that are useful in PKCS #7
193    digitally signed messages are content type, message digest, signing
194    time, sequence number, random nonce and countersignature.  The
195    attributes would be used in the authenticatedAttributes and
196    unauthenticatedAttributes fields of a SignerInfo or an
197    AuthenticatedData ([3]) value.
199    Attribute types that are useful especially in PKCS #10 certification
200    requests are the challenge password and the extension-request
201    attribute.  The attributes would be used in the attributes field of a
202    CertificationRequestInfo value.
204    Note - The attributes types (from [8]) in Table 1, and probably
205    several others, might also be helpful in PKCS #10, PKCS #12 and PKCS
206    #15-aware applications.
226 Nystrom & Kaliski            Informational                      [Page 4]
228 RFC 2985      Selected Object Classes and Attribute Types  November 2000
231        businessCategory            preferredDeliveryMethod
232        commonName                  presentationAddress
233        countryName                 registeredAddress
234        description                 roleOccupant
235        destinationIndicator        serialNumber
236        facsimileTelephoneNumber    stateOrProvinceName
237        iSDNAddress                 streetAddress
238        localityName                supportedApplicationContext
239        member                      surname
240        objectClass                 telephoneNumber
241        organizationName            teletexTerminalIdentifier
242        physicalDeliveryOfficeName  telexNumber
243        postalAddress               title
244        postalCode                  x121Address
245        postOfficeBox
247    Table 1: ISO/IEC 9594-6 attribute types useful in PKCS documents
249 4. Auxiliary object classes
251    This document defines two new auxiliary object classes: pkcsEntity
252    and naturalPerson.
254  4.1 The pkcsEntity auxiliary object class
256    The pkcsEntity object class is a general-purpose auxiliary object
257    class that is intended to hold attributes about PKCS-related
258    entities.  It has been designed for use within directory services
259    based on the LDAP protocol [22] and the X.500 family of protocols,
260    where support for PKCS-defined attributes is considered useful.
262    pkcsEntity OBJECT-CLASS ::=     {
263            SUBCLASS OF { top }
264            KIND auxiliary
265            MAY CONTAIN { PKCSEntityAttributeSet }
266            ID pkcs-9-oc-pkcsEntity
267    }
269    PKCSEntityAttributeSet ATTRIBUTE ::= {
270            pKCS7PDU |
271            userPKCS12 |
272            pKCS15Token |
273            encryptedPrivateKeyInfo,
274            ... -- For future extensions
275    }
277    Attributes in the PKCSEntityAttributeSet are defined in Section 5.
282 Nystrom & Kaliski            Informational                      [Page 5]
284 RFC 2985      Selected Object Classes and Attribute Types  November 2000
287  4.2 The naturalPerson auxiliary object class
289    The naturalPerson object class is a general-purpose auxiliary object
290    class that is intended to hold attributes about human beings.  It has
291    been designed for use within directory services based on the LDAP
292    protocol [22] and the X.500 family of protocols, where support for
293    these attributes is considered useful.
295    naturalPerson OBJECT-CLASS      ::=     {
296            SUBCLASS OF { top }
297            KIND auxiliary
298            MAY CONTAIN { NaturalPersonAttributeSet }
299            ID pkcs-9-oc-naturalPerson
300    }
302    NaturalPersonAttributeSet ATTRIBUTE ::= {
303            emailAddress |
304            unstructuredName |
305            unstructuredAddress |
306            dateOfBirth |
307            placeOfBirth |
308            gender |
309            countryOfCitizenship |
310            countryOfResidence |
311            pseudonym |
312            serialNumber,
313            ... -- For future extensions
314    }
316    Attributes in the NaturalPersonAttributeSet are defined in Section 5.
318 5. Selected attribute types
320  5.1 Attribute types for use with the "pkcsEntity" object class
322   5.1.1 PKCS #7 PDU
324    PKCS #7 provides several formats for enveloped, signed and otherwise
325    protected data.  When such information is stored in a directory
326    service, the pKCS7PDU attribute may be used.
328    pKCS7PDU ATTRIBUTE ::= {
329            WITH SYNTAX ContentInfo
330            ID pkcs-9-at-pkcs7PDU
331    }
338 Nystrom & Kaliski            Informational                      [Page 6]
340 RFC 2985      Selected Object Classes and Attribute Types  November 2000
343   5.1.2 PKCS #12 token
345    PKCS #12 provides a format for exchange of personal identity
346    information.  When such information is stored in a directory service,
347    the userPKCS12 attribute should be used.
349    userPKCS12 ATTRIBUTE ::= {
350            WITH SYNTAX PFX
351            ID pkcs-9-at-userPKCS12
352    }
354    This type was originally defined in [20].
356   5.1.3 PKCS #15 token
358    PKCS #15 provides a format for cryptographic tokens.  When software
359    variants of such tokens are stored in a directory service, the
360    pKCS15Token attribute should be used.
362    pKCS15Token ATTRIBUTE ::= {
363            WITH SYNTAX PKCS15Token
364            ID pkcs-9-at-pkcs15Token
365    }
367   5.1.4 PKCS #8 encrypted private key information
369    PKCS #8 provides a format for encrypted private keys.  When such
370    information is stored in a directory service, the
371    encryptedPrivateKeyInfo attribute should be used.
373    encryptedPrivateKeyInfo ATTRIBUTE ::= {
374            WITH SYNTAX EncryptedPrivateKeyInfo
375            ID pkcs-9-at-encryptedPrivateKeyInfo
376    }
378  5.2 Attribute types for use with the "naturalPerson" object class
380   5.2.1 Electronic-mail address
382    The emailAddress attribute type specifies the electronic-mail address
383    or addresses of a subject as an unstructured ASCII string.  The
384    interpretation of electronic-mail addresses is intended to be
385    specified by certificate issuers etc.; no particular interpretation
386    is required.
394 Nystrom & Kaliski            Informational                      [Page 7]
396 RFC 2985      Selected Object Classes and Attribute Types  November 2000
399    emailAddress ATTRIBUTE ::= {
400            WITH SYNTAX IA5String (SIZE(1..pkcs-9-ub-emailAddress))
401            EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
402            ID pkcs-9-at-emailAdress
403    }
405    An electronic-mail address attribute can have multiple attribute
406    values.  When comparing two email addresses, case is irrelevant.  The
407    pkcs9CaseIgnoreMatch is defined in Section 6.
409    Note - It is likely that other standards bodies overseeing
410    electronic-mail systems will, or have, registered electronic-mail
411    address attribute types specific to their system.  The electronic-
412    mail address attribute type defined here was intended as a short-term
413    substitute for those specific attribute types, but is included here
414    for backwards-compatibility reasons.
416   5.2.2 Unstructured name
418    The unstructuredName attribute type specifies the name or names of a
419    subject as an unstructured ASCII string.  The interpretation of
420    unstructured names is intended to be specified by certificate issuers
421    etc.; no particular interpretation is required.
423    unstructuredName ATTRIBUTE ::= {
424            WITH SYNTAX PKCS9String {pkcs-9-ub-unstructuredName}
425            EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
426            ID pkcs-9-at-unstructuredName
427    }
429    PKCS9String { INTEGER : maxSize} ::= CHOICE {
430            ia5String       IA5String (SIZE(1..maxSize)),
431            directoryString DirectoryString {maxSize}
432    }
434    An unstructured-name attribute can have multiple attribute values.
435    When comparing two unstructured names, case is irrelevant.
437    The PKCS9String type is defined as a choice of IA5String and
438    DirectoryString.  Applications SHOULD use the IA5String type when
439    generating attribute values in accordance with this version of this
440    document, unless internationalization issues makes this impossible.
441    In that case, the UTF8String alternative of the DirectoryString
442    alternative is the preferred choice.  PKCS #9-attribute processing
443    systems MUST be able to recognize and process all string types in
444    PKCS9String values.
450 Nystrom & Kaliski            Informational                      [Page 8]
452 RFC 2985      Selected Object Classes and Attribute Types  November 2000
455    Note - Version 1.1 of this document defined unstructuredName as
456    having the syntax IA5String, but did contain a note explaining that
457    this might be changed to a CHOICE of different string types in future
458    versions.  To better accommodate international names, this type has
459    been extended to also include a directory string in this version of
460    this document.  Since [21] does not support a directory string type
461    containing IA5Strings, a separate syntax object identifier has been
462    defined (see [21] and Appendix B).
464   5.2.3 Unstructured address
466    The unstructuredAddress attribute type specifies the address or
467    addresses of a subject as an unstructured directory string.  The
468    interpretation of unstructured addresses is intended to be specified
469    by certificate issuers etc; no particular interpretation is required.
470    A likely interpretation is as an alternative to the postalAddress
471    attribute type defined in [8].
473    unstructuredAddress ATTRIBUTE ::= {
474            WITH SYNTAX DirectoryString {pkcs-9-ub-unstructuredAddress}
475            EQUALITY MATCHING RULE caseIgnoreMatch
476            ID pkcs-9-at-unstructuredAddress
477    }
479    An unstructured-address attribute can have multiple attribute values.
480    The caseIgnoreMatch matching rule is defined in [8].
482    Note 1 - It is recommended to use the ASN.1 type TeletexString's
483    new-line character (hexadecimal code 0d) as a line separator in
484    multi-line addresses.
486    Note 2 - Previous versions of this document defined
487    unstructuredAddress as having the following syntax:
489    CHOICE {
490            teletexString TeletexString,
491            printableString PrintableString,
492    }
494    But also mentioned the possibility of a future definition as follows:
496    CHOICE {
497            teletexString TeletexString,
498            printableString PrintableString,
499            universalString UniversalString
500    }
506 Nystrom & Kaliski            Informational                      [Page 9]
508 RFC 2985      Selected Object Classes and Attribute Types  November 2000
511    In this version of this document, the X.520 type DirectoryString has
512    been used in order to be more aligned with international standards
513    and current practice.  When generating attribute values in accordance
514    with this version of this document, applications SHOULD use the
515    PrintableString alternative unless internationalization issues makes
516    this impossible.  In those cases, the UTF8String alternative SHOULD
517    be used.  PKCS #9-attribute processing systems MUST be able to
518    recognize and process all string types in DirectoryString values.
520   5.2.4 Date of birth
522    The dateOfBirth attribute specifies the date of birth for the subject
523    it is associated with.
525    dateOfBirth ATTRIBUTE ::= {
526            WITH SYNTAX GeneralizedTime
527            EQUALITY MATCHING RULE generalizedTimeMatch
528            SINGLE VALUE TRUE
529            ID pkcs-9-at-dateOfBirth
530    }
532    dateOfBirth attributes must be single-valued.  The
533    generalizedTimeMatch matching rule is defined in [8].
535   5.2.5 Place of birth
537    The placeOfBirth attribute specifies the place of birth for the
538    subject it is associated with.
540    placeOfBirth ATTRIBUTE ::= {
541            WITH SYNTAX DirectoryString {pkcs-9-ub-placeOfBirth}
542            EQUALITY MATCHING RULE caseExactMatch
543            SINGLE VALUE TRUE
544            ID pkcs-9-at-placeOfBirth
545    }
547    placeOfBirth attributes must be single-valued.  The caseExactMatch
548    matching rule is defined in [8].
562 Nystrom & Kaliski            Informational                     [Page 10]
564 RFC 2985      Selected Object Classes and Attribute Types  November 2000
567   5.2.6 Gender
569    The gender attribute specifies the gender of the subject it is
570    associated with.
572    gender ATTRIBUTE ::= {
573            WITH SYNTAX PrintableString (SIZE(1) ^
574                        FROM ("M" | "F" | "m" | "f"))
575            EQUALITY MATCHING RULE caseIgnoreMatch
576            SINGLE VALUE TRUE
577            ID pkcs-9-at-gender
578    }
580    The letter "M" (or "m") represents "male" and the letter "F" (or "f")
581    represents "female".  gender attributes must be single-valued.
583   5.2.7 Country of citizenship
585    The countryOfCitizenship attribute specifies the (claimed) countries
586    of citizenship for the subject it is associated with.  It SHALL be a
587    2-letter acronym of a country in accordance with [4].
589    countryOfCitizenship ATTRIBUTE ::= {
590            WITH SYNTAX PrintableString (SIZE(2) ^ CONSTRAINED BY {
591            -- Must be a two-letter country acronym in accordance with
592            -- ISO/IEC 3166 --})
593            EQUALITY MATCHING RULE caseIgnoreMatch
594            ID pkcs-9-at-countryOfCitizenship
595    }
597    Attributes of this type need not be single-valued.
599   5.2.8 Country of residence
601    The countryOfResidence attribute specifies the (claimed) country of
602    residence for the subject is associated with.  It SHALL be a 2-letter
603    acronym of a country in accordance with [4].
605    countryOfResidence ATTRIBUTE ::= {
606            WITH SYNTAX PrintableString (SIZE(2) ^ CONSTRAINED BY {
607            -- Must be a two-letter country acronym in accordance with
608            -- ISO/IEC 3166 --})
609            EQUALITY MATCHING RULE caseIgnoreMatch
610            ID pkcs-9-at-countryOfResidence
611    }
613    Attributes of this type need not be single-valued, since it is
614    possible to be a resident of several countries.
618 Nystrom & Kaliski            Informational                     [Page 11]
620 RFC 2985      Selected Object Classes and Attribute Types  November 2000
623   5.2.9 Pseudonym
625    The pseudonym attribute type shall contain a pseudonym of a subject.
626    The exact interpretation of pseudonyms is intended to be specified by
627    certificate issuers etc.; no particular interpretation is required.
629    pseudonym ATTRIBUTE ::= {
630            WITH SYNTAX DirectoryString {pkcs-9-ub-pseudonym}
631            EQUALITY MATCHING RULE caseExactMatch
632            ID id-at-pseudonym
633    }
635    Note - The pseudonym attribute has received an object identifier in
636    the joint-iso-itu-t object identifier tree.
638    The caseExactMatch matching rule is defined in [8].
640   5.2.10 Serial number
642    The serialNumber attribute is defined in [8].
644  5.3 Attribute types for use in PKCS #7 data
646   5.3.1 Content type
648    The contentType attribute type specifies the content type of the
649    ContentInfo value being signed in PKCS #7 (or S/MIME CMS) digitally
650    signed data.  In such data, the contentType attribute type is
651    required if there are any PKCS #7 authenticated attributes.
653    contentType ATTRIBUTE ::= {
654            WITH SYNTAX ContentType
655            EQUALITY MATCHING RULE objectIdentifierMatch
656            SINGLE VALUE TRUE
657            ID pkcs-9-at-contentType
658    }
660    ContentType ::= OBJECT IDENTIFIER
662    As indicated, content-type attributes must have a single attribute
663    value.  For two content-type values to match, their octet string
664    representation must be of equal length and corresponding octets
665    identical.  The objectIdentifierMatch matching rule is defined in
666    [7].
668    Note - This attribute type is described in [3] as well.
674 Nystrom & Kaliski            Informational                     [Page 12]
676 RFC 2985      Selected Object Classes and Attribute Types  November 2000
679   5.3.2 Message digest
681    The messageDigest attribute type specifies the message digest of the
682    contents octets of the DER-encoding of the content field of the
683    ContentInfo value being signed in PKCS #7 digitally signed data,
684    where the message digest is computed under the signer's message
685    digest algorithm.  The message-digest attribute type is required in
686    these cases if there are any PKCS #7 authenticated attributes
687    present.
689    messageDigest ATTRIBUTE ::= {
690            WITH SYNTAX MessageDigest
691            EQUALITY MATCHING RULE octetStringMatch
692            SINGLE VALUE TRUE
693            ID pkcs-9-at-messageDigest
694    }
696    MessageDigest ::= OCTET STRING
698    As indicated, a message-digest attribute must have a single attribute
699    value.  For two messageDigest values to match, their octet string
700    representation must be of equal length and corresponding octets
701    identical.  The octetStringMatch matching rule is defined in [8].
703    Note - This attribute is described in [3] as well.
705   5.3.3 Signing time
707    The signingTime attribute type is intended for PKCS #7 digitally
708    signed data.  It specifies the time at which the signer (purportedly)
709    performed the signing process.
711    signingTime ATTRIBUTE ::= {
712            WITH SYNTAX SigningTime
713            EQUALITY MATCHING RULE signingTimeMatch
714            SINGLE VALUE TRUE
715            ID pkcs-9-at-signingTime
716    }
718    SigningTime ::= Time -- imported from ISO/IEC 9594-8
720    A signing-time attribute must have a single attribute value.
722    The signingTimeMatch matching rule (defined in Section 6.1) returns
723    TRUE if an attribute value represents the same time as a presented
724    value.
730 Nystrom & Kaliski            Informational                     [Page 13]
732 RFC 2985      Selected Object Classes and Attribute Types  November 2000
735    Quoting from [3]:
736    "Dates between 1 January 1950 and 31 December 2049 (inclusive) MUST
737    be encoded as UTCTime.  Any dates with year values before 1950 or
738    after 2049 MUST be encoded as GeneralizedTime.  [Further,] UTCTime
739    values MUST be expressed in Greenwich Mean Time (Zulu) and MUST
740    include seconds (i.e., times are YYMMDDHHMMSSZ), even where the
741    number of seconds is zero.  Midnight (GMT) must be represented as
742    "YYMMDD000000Z".  Century information is implicit, and the century
743    shall be determined as follows:
745    - Where YY is greater than or equal to 50, the year shall be
746      interpreted as 19YY; and
747    - Where YY is less than 50, the year shall be interpreted as 20YY.
749    GeneralizedTime values shall be expressed in Greenwich Mean Time
750    (Zulu) and must include seconds (i.e., times are YYYYMMDDHHMMSSZ),
751    even where the number of seconds is zero.  GeneralizedTime values
752    must not include fractional seconds."
754    Note 1 - The definition of SigningTime matches the definition of Time
755    specified in [10].
757    Note 2 - No requirement is imposed concerning the correctness of the
758    signing time, and acceptance of a purported signing time is a matter
759    of a recipient's discretion.  It is expected, however, that some
760    signers, such as time-stamp servers, will be trusted implicitly.
762   5.3.4 Random nonce
764    The randomNonce attribute type is intended for PKCS #7 digitally
765    signed data.  It may be used by a signer unable (or unwilling) to
766    specify the time at which the signing process was performed.  Used in
767    a correct manner, it will make it possible for the signer to protect
768    against certain attacks, i.e. replay attacks.
770    randomNonce ATTRIBUTE ::= {
771            WITH SYNTAX RandomNonce
772            EQUALITY MATCHING RULE octetStringMatch
773            SINGLE VALUE TRUE
774            ID pkcs-9-at-randomNonce
775    }
777    RandomNonce ::= OCTET STRING (SIZE(4..MAX))
778            -- At least four bytes long
780    A random nonce attribute must have a single attribute value.
786 Nystrom & Kaliski            Informational                     [Page 14]
788 RFC 2985      Selected Object Classes and Attribute Types  November 2000
791   5.3.5 Sequence number
793    The sequenceNumber attribute type is intended for PKCS #7 digitally
794    signed data.  A signer wishing to associate a sequence number to all
795    signature operations (much like a physical checkbook) may use it as
796    an alternative to the randomNonce attribute.  Used in a correct
797    manner, it will make it possible for the signer to protect against
798    certain attacks, i.e. replay attacks.
800    sequenceNumber ATTRIBUTE ::= {
801            WITH SYNTAX SequenceNumber
802            EQUALITY MATCHING RULE integerMatch
803            SINGLE VALUE TRUE
804            ID pkcs-9-at-sequenceNumber
805    }
807    SequenceNumber ::= INTEGER (1..MAX)
809    A sequence number attribute must have a single attribute value.
811    The integerMatch matching rule is defined in [8].
813   5.3.6 Countersignature
815    The counterSignature attribute type specifies one or more signatures
816    on the content octets of the DER encoding of the encryptedDigest
817    field of a SignerInfo value in PKCS #7 digitally signed data.  Thus,
818    the countersignature attribute type countersigns (signs in serial)
819    another signature.  The countersignature attribute must be an
820    unauthenticated PKCS #7 attribute; it cannot be an authenticated
821    attribute.
823    counterSignature ATTRIBUTE ::= {
824            WITH SYNTAX SignerInfo
825            ID pkcs-9-at-counterSignature
826    }
828    Countersignature values have the same meaning as SignerInfo values
829    for ordinary signatures (see Section 9 of [14] and Section 5.3 of
830    [3]), except that:
832    1. The authenticatedAttributes field must contain a messageDigest
833    attribute if it contains any other attributes, but need not contain a
834    contentType attribute, as there is no content type for
835    countersignatures; and
842 Nystrom & Kaliski            Informational                     [Page 15]
844 RFC 2985      Selected Object Classes and Attribute Types  November 2000
847    2. The input to the message-digesting process is the content octets
848    of the DER encoding of the signatureValue field of the SignerInfo
849    value with which the attribute is associated.
851    A countersignature attribute can have multiple attribute values.
853    Note 1 - The fact that a countersignature is computed on a signature
854    (encrypted digest) means that the countersigning process need not
855    know the original content input to the signing process.  This has
856    advantages both in efficiency and in confidentiality.
858    Note 2 - A countersignature, since it has type SignerInfo, can itself
859    contain a countersignature attribute.  Thus it is possible to
860    construct arbitrarily long series of countersignatures.
862  5.4 Attribute types for use with PKCS #10 certificate requests
864   5.4.1 Challenge password
866    The challengePassword attribute type specifies a password by which an
867    entity may request certificate revocation.  The interpretation of
868    challenge passwords is intended to be specified by certificate
869    issuers etc; no particular interpretation is required.
871    challengePassword ATTRIBUTE ::= {
872            WITH SYNTAX DirectoryString {pkcs-9-ub-challengePassword}
873            EQUALITY MATCHING RULE caseExactMatch
874            SINGLE VALUE TRUE
875            ID pkcs-9-at-challengePassword
876    }
878    A challenge-password attribute must have a single attribute value.
880    ChallengePassword attribute values generated in accordance with this
881    version of this document SHOULD use the PrintableString encoding
882    whenever possible.  If internationalization issues make this
883    impossible, the UTF8String alternative SHOULD be used.  PKCS #9-
884    attribute processing systems MUST be able to recognize and process
885    all string types in DirectoryString values.
887    Note - Version 1.1 of this document defined challengePassword as
888    having the syntax CHOICE {PrintableString, T61String}, but did
889    contain a note explaining that this might be changed to a CHOICE of
890    different string types in the future See also Note 2 in section
891    5.2.3.
898 Nystrom & Kaliski            Informational                     [Page 16]
900 RFC 2985      Selected Object Classes and Attribute Types  November 2000
903   5.4.2 Extension request
905    The extensionRequest attribute type may be used to carry information
906    about certificate extensions the requester wishes to be included in a
907    certificate.
909    extensionRequest ATTRIBUTE ::= {
910            WITH SYNTAX ExtensionRequest
911            SINGLE VALUE TRUE
912            ID pkcs-9-at-extensionRequest
913    }
915    ExtensionRequest ::= Extensions
917    The Extensions type is imported from [10].
919   5.4.3 Extended-certificate attributes (deprecated)
921    The extendedCertificateAttributes attribute type specified a set of
922    attributes for a PKCS #6 [13] extended certificate in a PKCS #10
923    certification request (the value of the extended certificate-
924    attributes attribute would become the extension in the requested PKCS
925    #6 extended certificate).  Since the status of PKCS #6 is historic
926    after the introduction of X.509 v3 certificates [10], the use of this
927    attribute is deprecated.
929    extendedCertificateAttributes ATTRIBUTE ::= {
930            WITH SYNTAX SET OF Attribute
931            SINGLE VALUE TRUE
932            ID pkcs-9-at-extendedCertificateAttributes
933    }
935    An extended certificate attributes attribute must have a single
936    attribute value (that value is a set, which itself may contain
937    multiple values, but there must be only one set).
939  5.5 Attributes for use in PKCS #12 "PFX" PDUs or PKCS #15 tokens
941   5.5.1 Friendly name
943    The friendlyName attribute type specifies a user-friendly name of the
944    object it belongs to.  It is referenced in [17].
954 Nystrom & Kaliski            Informational                     [Page 17]
956 RFC 2985      Selected Object Classes and Attribute Types  November 2000
959    friendlyName ATTRIBUTE ::= {
960            WITH SYNTAX BMPString (SIZE(1..pkcs-9-ub-friendlyName))
961            EQUALITY MATCHING RULE caseIgnoreMatch
962            SINGLE VALUE TRUE
963            ID pkcs-9-at-friendlyName
964    }
966    As indicated, friendlyName attributes must have a single attribute
967    value.
969   5.5.2 Local key identifier
971    The localKeyId attribute type specifies an identifier for a
972    particular key.  It is only to be used locally in applications.  This
973    attribute is referenced in [17].
975    localKeyId ATTRIBUTE ::= {
976            WITH SYNTAX OCTET STRING
977            EQUALITY MATCHING RULE octetStringMatch
978            SINGLE VALUE TRUE
979            ID pkcs-9-at-localKeyId
980    }
982    As indicated, localKeyId attributes must have a single attribute
983    value.  For two localKeyId values to match, their octet string
984    representation must be of equal length and corresponding octets
985    identical.
987  5.6 Attributes defined in S/MIME
989    S/MIME (c.f. [12]) defines some attributes and object identifiers in
990    the PKCS #9 object identifier tree.  For completeness, they are
991    mentioned here.
993   5.6.1 Signing description
995    The signingDescription attribute is intended to provide a short
996    synopsis of a message that can be used to present a user with an
997    additional confirmation step before committing to a cryptographic
998    operation.  In most cases, the replication of the "Subject:" line
999    from the header of a message should be sufficient and is recommended.
1001    signingDescription ATTRIBUTE ::= {
1002            WITH SYNTAX DirectoryString {pkcs-9-ub-signingDescription}
1003            EQUALITY MATCHING RULE caseIgnoreMatch
1004            SINGLE VALUE TRUE
1005            ID pkcs-9-at-signingDescription
1006    }
1010 Nystrom & Kaliski            Informational                     [Page 18]
1012 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1015   5.6.2 S/MIME capabilities
1017    The syntax and semantics of the smimeCapabilities attribute is
1018    defined in [12].  It is included here for the sake of completeness.
1020    smimeCapabilities ATTRIBUTE ::= {
1021            WITH SYNTAX SMIMECapabilities
1022            SINGLE VALUE
1023            ID pkcs-9-at-smimeCapabilities
1024    }
1026    SMIMECapabilities ::= SEQUENCE OF SMIMECapability
1028    SMIMECapability ::= SEQUENCE {
1029            algorithm  ALGORITHM.&id ({SMIMEv3Algorithms}),
1030            parameters ALGORITHM.&Type ({SMIMEv3Algorithms}{@algorithm})
1031    }
1033    SMIMEv3Algorithms ALGORITHM ::= {... -- See RFC 2633 -- }
1035 6. Matching rules
1037    This section defines matching rules used in the definition of
1038    attributes in this document.
1040  6.1 Case ignore match
1042    The pkcs9CaseIgnoreMatch rule compares for equality a presented
1043    string with an attribute value of type PKCS9String, without regard to
1044    the case (upper or lower) of the strings (e.g. "Pkcs" and "PKCS"
1045    match).
1047    pkcs9CaseIgnoreMatch MATCHING-RULE ::= {
1048            SYNTAX  PKCS9String {pkcs9-ub-match}
1049            ID              id-mr-pkcs9CaseIgnoreMatch
1050    }
1052    The rule returns TRUE if the strings are the same length and
1053    corresponding characters are identical except possibly with regard to
1054    case.
1056    Where the strings being matched are of different ASN.1 syntax, the
1057    comparison proceeds as normal so long as the corresponding characters
1058    are in both character sets.  Otherwise matching fails.
1066 Nystrom & Kaliski            Informational                     [Page 19]
1068 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1071  6.2 Signing time match
1073    The signingTimeMatch rule compares for equality a presented value
1074    with an attribute value of type SigningTime.
1076    signingTimeMatch MATCHING-RULE ::= {
1077            SYNTAX SigningTime
1078            ID pkcs-9-mr-signingTimeMatch
1079    }
1081    The rule returns TRUE if the attribute value represents the same time
1082    as the presented value.  If a time is specified with seconds (or
1083    fractional seconds) absent, the number of seconds (fractional
1084    seconds) is assumed to be zero.
1086    Where the strings being matched are of different ASN.1 syntax, the
1087    comparison proceeds as follows:
1089    a) Convert both values to DER-encoded values of type GeneralizedTime,
1090      coordinated universal time.  If this is not possible the matching
1091      fails.
1093    b) Compare the strings for equality.  The rule returns TRUE if and
1094      only if the strings are of the same length and corresponding octets
1095      are identical.
1097 7. Security Considerations
1099    Attributes of directory entries are used to provide descriptive
1100    information about the real-world objects they represent, which can be
1101    people, organizations or devices.  Most countries have privacy laws
1102    regarding the publication of information about people.
1104    The challengePassword attribute should not be stored un-encrypted in
1105    a directory.
1107    Users of directory-aware applications making use of attributes
1108    defined for use with the pkcsEntity object class should make sure
1109    that the class's attributes are adequately protected, since they may
1110    potentially be read by third parties.  If a password-protected value
1111    is stored (PKCS #8, #12 or #15), the directory should authenticate
1112    the requester before delivering the value to prevent an off-line
1113    password-search attack.  Note that this potentially raises non-
1114    repudiation issues since the directory itself can try a password
1115    search to recover a private value, if stored this way.
1122 Nystrom & Kaliski            Informational                     [Page 20]
1124 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1127 8. Authors' Addresses
1129    Magnus Nystrom
1130    RSA Security
1131    Box 10704
1132    S-121 29 Stockholm
1133    Sweden
1135    EMail: magnus@rsasecurity.com
1138    Burt Kaliski
1139    RSA Security
1140    20 Crosby Drive
1141    Bedford, MA 01730 USA
1143    EMail: bkaliski@rsasecurity.com
1178 Nystrom & Kaliski            Informational                     [Page 21]
1180 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1183 APPENDICES
1185 A. ASN.1 module
1187    This appendix includes all of the ASN.1 type and value definitions
1188    contained in this document in the form of the ASN.1 module PKCS-9.
1190    PKCS-9 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
1191    pkcs-9(9) modules(0) pkcs-9(1)}
1193    DEFINITIONS IMPLICIT TAGS ::=
1195    BEGIN
1197    -- EXPORTS All --
1198    -- All types and values defined in this module is exported for use
1199    -- in other ASN.1 modules.
1201    IMPORTS
1203    informationFramework, authenticationFramework,
1204    selectedAttributeTypes, upperBounds , id-at
1205            FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
1206            usefulDefinitions(0) 3}
1208    ub-name
1209            FROM UpperBounds upperBounds
1211    OBJECT-CLASS, ATTRIBUTE, MATCHING-RULE, Attribute, top,
1212    objectIdentifierMatch
1213            FROM InformationFramework informationFramework
1215    ALGORITHM, Extensions, Time
1216            FROM AuthenticationFramework authenticationFramework
1218    DirectoryString, octetStringMatch, caseIgnoreMatch, caseExactMatch,
1219    generalizedTimeMatch, integerMatch, serialNumber
1220            FROM SelectedAttributeTypes selectedAttributeTypes
1222    ContentInfo, SignerInfo
1223            FROM CryptographicMessageSyntax {iso(1) member-body(2) us(840)
1224            rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) cms(1)}
1226    EncryptedPrivateKeyInfo
1227            FROM PKCS-8 {iso(1) member-body(2) us(840) rsadsi(113549)
1228            pkcs(1) pkcs-8(8) modules(1) pkcs-8(1)}
1234 Nystrom & Kaliski            Informational                     [Page 22]
1236 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1239    PFX
1240            FROM PKCS-12 {iso(1) member-body(2) us(840) rsadsi(113549)
1241            pkcs(1) pkcs-12(12) modules(0) pkcs-12(1)}
1243    PKCS15Token
1244            FROM PKCS-15 {iso(1) member-body(2) us(840) rsadsi(113549)
1245            pkcs(1) pkcs-15(15) modules(1) pkcs-15(1)};
1247    -- Upper bounds
1249    pkcs-9-ub-pkcs9String         INTEGER ::= 255
1250    pkcs-9-ub-emailAddress        INTEGER ::= pkcs-9-ub-pkcs9String
1251    pkcs-9-ub-unstructuredName    INTEGER ::= pkcs-9-ub-pkcs9String
1252    pkcs-9-ub-unstructuredAddress INTEGER ::= pkcs-9-ub-pkcs9String
1253    pkcs-9-ub-challengePassword   INTEGER ::= pkcs-9-ub-pkcs9String
1254    pkcs-9-ub-friendlyName        INTEGER ::= pkcs-9-ub-pkcs9String
1255    pkcs-9-ub-signingDescription  INTEGER ::= pkcs-9-ub-pkcs9String
1256    pkcs-9-ub-match               INTEGER ::= pkcs-9-ub-pkcs9String
1257    pkcs-9-ub-pseudonym           INTEGER ::= ub-name
1258    pkcs-9-ub-placeOfBirth        INTEGER ::= ub-name
1260    -- Object Identifiers
1262    pkcs-9 OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840)
1263                                  rsadsi(113549) pkcs(1) 9}
1265      -- Main arcs
1266    pkcs-9-mo OBJECT IDENTIFIER ::= {pkcs-9 0}  -- Modules branch
1267    pkcs-9-oc OBJECT IDENTIFIER ::= {pkcs-9 24} -- Object class branch
1268    pkcs-9-at OBJECT IDENTIFIER ::= {pkcs-9 25} -- Attribute branch, for
1269                                                -- new  attributes
1270    pkcs-9-sx OBJECT IDENTIFIER ::= {pkcs-9 26} -- For syntaxes (RFC 2252)
1271    pkcs-9-mr OBJECT IDENTIFIER ::= {pkcs-9 27} -- Matching rules
1273      -- Object classes
1274    pkcs-9-oc-pkcsEntity    OBJECT IDENTIFIER ::= {pkcs-9-oc 1}
1275    pkcs-9-oc-naturalPerson OBJECT IDENTIFIER ::= {pkcs-9-oc 2}
1277      -- Attributes
1278    pkcs-9-at-emailAddress        OBJECT IDENTIFIER ::= {pkcs-9 1}
1279    pkcs-9-at-unstructuredName    OBJECT IDENTIFIER ::= {pkcs-9 2}
1280    pkcs-9-at-contentType         OBJECT IDENTIFIER ::= {pkcs-9 3}
1281    pkcs-9-at-messageDigest       OBJECT IDENTIFIER ::= {pkcs-9 4}
1282    pkcs-9-at-signingTime         OBJECT IDENTIFIER ::= {pkcs-9 5}
1283    pkcs-9-at-counterSignature    OBJECT IDENTIFIER ::= {pkcs-9 6}
1284    pkcs-9-at-challengePassword   OBJECT IDENTIFIER ::= {pkcs-9 7}
1285    pkcs-9-at-unstructuredAddress OBJECT IDENTIFIER ::= {pkcs-9 8}
1290 Nystrom & Kaliski            Informational                     [Page 23]
1292 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1295    pkcs-9-at-extendedCertificateAttributes
1296                                  OBJECT IDENTIFIER ::= {pkcs-9 9}
1298    -- Obsolete (?) attribute identifiers, purportedly from "tentative
1299    -- PKCS #9 draft"
1300    -- pkcs-9-at-issuerAndSerialNumber OBJECT IDENTIFIER ::= {pkcs-9 10}
1301    -- pkcs-9-at-passwordCheck         OBJECT IDENTIFIER ::= {pkcs-9 11}
1302    -- pkcs-9-at-publicKey             OBJECT IDENTIFIER ::= {pkcs-9 12}
1304    pkcs-9-at-signingDescription       OBJECT IDENTIFIER ::= {pkcs-9 13}
1305    pkcs-9-at-extensionRequest         OBJECT IDENTIFIER ::= {pkcs-9 14}
1306    pkcs-9-at-smimeCapabilities        OBJECT IDENTIFIER ::= {pkcs-9 15}
1308    -- Unused (?)
1309    -- pkcs-9-at-?                     OBJECT IDENTIFIER ::= {pkcs-9 17}
1310    -- pkcs-9-at-?                     OBJECT IDENTIFIER ::= {pkcs-9 18}
1311    -- pkcs-9-at-?                     OBJECT IDENTIFIER ::= {pkcs-9 19}
1313    pkcs-9-at-friendlyName             OBJECT IDENTIFIER ::= {pkcs-9 20}
1314    pkcs-9-at-localKeyId               OBJECT IDENTIFIER ::= {pkcs-9 21}
1315    pkcs-9-at-userPKCS12               OBJECT IDENTIFIER ::=
1316                                          {2 16 840 1 113730 3 1 216}
1317    pkcs-9-at-pkcs15Token              OBJECT IDENTIFIER ::= {pkcs-9-at 1}
1318    pkcs-9-at-encryptedPrivateKeyInfo  OBJECT IDENTIFIER ::= {pkcs-9-at 2}
1319    pkcs-9-at-randomNonce              OBJECT IDENTIFIER ::= {pkcs-9-at 3}
1320    pkcs-9-at-sequenceNumber           OBJECT IDENTIFIER ::= {pkcs-9-at 4}
1321    pkcs-9-at-pkcs7PDU                 OBJECT IDENTIFIER ::= {pkcs-9-at 5}
1323      -- IETF PKIX Attribute branch
1324    ietf-at                            OBJECT IDENTIFIER ::=
1325                                          {1 3 6 1 5 5 7 9}
1327    pkcs-9-at-dateOfBirth              OBJECT IDENTIFIER ::= {ietf-at 1}
1328    pkcs-9-at-placeOfBirth             OBJECT IDENTIFIER ::= {ietf-at 2}
1329    pkcs-9-at-gender                   OBJECT IDENTIFIER ::= {ietf-at 3}
1330    pkcs-9-at-countryOfCitizenship     OBJECT IDENTIFIER ::= {ietf-at 4}
1331    pkcs-9-at-countryOfResidence       OBJECT IDENTIFIER ::= {ietf-at 5}
1333      -- Syntaxes (for use with LDAP accessible directories)
1334    pkcs-9-sx-pkcs9String              OBJECT IDENTIFIER ::= {pkcs-9-sx 1}
1335    pkcs-9-sx-signingTime              OBJECT IDENTIFIER ::= {pkcs-9-sx 2}
1337      -- Matching rules
1338    pkcs-9-mr-caseIgnoreMatch          OBJECT IDENTIFIER ::= {pkcs-9-mr 1}
1339    pkcs-9-mr-signingTimeMatch         OBJECT IDENTIFIER ::= {pkcs-9-mr 2}
1346 Nystrom & Kaliski            Informational                     [Page 24]
1348 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1351      -- Arcs with attributes defined elsewhere
1352    smime                              OBJECT IDENTIFIER ::= {pkcs-9 16}
1354      -- Main arc for S/MIME (RFC 2633)
1355    certTypes                          OBJECT IDENTIFIER ::= {pkcs-9 22}
1357      -- Main arc for certificate types defined in PKCS #12
1358    crlTypes                           OBJECT IDENTIFIER ::= {pkcs-9 23}
1360      -- Main arc for crl types defined in PKCS #12
1362      -- Other object identifiers
1363    id-at-pseudonym                    OBJECT IDENTIFIER ::= {id-at 65}
1365    -- Useful types
1367    PKCS9String {INTEGER : maxSize} ::= CHOICE {
1368            ia5String IA5String (SIZE(1..maxSize)),
1369            directoryString DirectoryString {maxSize}
1370    }
1372    -- Object classes
1374    pkcsEntity OBJECT-CLASS ::= {
1375            SUBCLASS OF     { top }
1376            KIND            auxiliary
1377            MAY CONTAIN     { PKCSEntityAttributeSet }
1378            ID              pkcs-9-oc-pkcsEntity
1379    }
1381    naturalPerson OBJECT-CLASS ::= {
1382            SUBCLASS OF     { top }
1383            KIND            auxiliary
1384            MAY CONTAIN     { NaturalPersonAttributeSet }
1385            ID              pkcs-9-oc-naturalPerson
1386    }
1388    -- Attribute sets
1390    PKCSEntityAttributeSet ATTRIBUTE ::= {
1391            pKCS7PDU |
1392            userPKCS12 |
1393            pKCS15Token |
1394            encryptedPrivateKeyInfo,
1395            ... -- For future extensions
1396    }
1402 Nystrom & Kaliski            Informational                     [Page 25]
1404 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1407    NaturalPersonAttributeSet ATTRIBUTE ::= {
1408            emailAddress |
1409            unstructuredName |
1410            unstructuredAddress |
1411            dateOfBirth |
1412            placeOfBirth |
1413            gender |
1414            countryOfCitizenship |
1415            countryOfResidence |
1416            pseudonym |
1417            serialNumber,
1418            ... -- For future extensions
1419    }
1421    -- Attributes
1423    pKCS7PDU ATTRIBUTE ::= {
1424            WITH SYNTAX ContentInfo
1425            ID pkcs-9-at-pkcs7PDU
1426    }
1428    userPKCS12 ATTRIBUTE ::= {
1429            WITH SYNTAX PFX
1430            ID pkcs-9-at-userPKCS12
1431    }
1433    pKCS15Token ATTRIBUTE ::= {
1434            WITH SYNTAX PKCS15Token
1435            ID pkcs-9-at-pkcs15Token
1436    }
1438    encryptedPrivateKeyInfo ATTRIBUTE ::= {
1439            WITH SYNTAX EncryptedPrivateKeyInfo
1440            ID pkcs-9-at-encryptedPrivateKeyInfo
1441    }
1443    emailAddress ATTRIBUTE ::= {
1444            WITH SYNTAX IA5String (SIZE(1..pkcs-9-ub-emailAddress))
1445            EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
1446            ID pkcs-9-at-emailAddress
1447    }
1449    unstructuredName ATTRIBUTE ::= {
1450            WITH SYNTAX PKCS9String {pkcs-9-ub-unstructuredName}
1451            EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
1452            ID pkcs-9-at-unstructuredName
1453    }
1458 Nystrom & Kaliski            Informational                     [Page 26]
1460 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1463    unstructuredAddress ATTRIBUTE ::= {
1464            WITH SYNTAX DirectoryString {pkcs-9-ub-unstructuredAddress}
1465            EQUALITY MATCHING RULE caseIgnoreMatch
1466            ID pkcs-9-at-unstructuredAddress
1467    }
1469    dateOfBirth ATTRIBUTE ::= {
1470            WITH SYNTAX GeneralizedTime
1471            EQUALITY MATCHING RULE generalizedTimeMatch
1472            SINGLE VALUE TRUE
1473            ID pkcs-9-at-dateOfBirth
1474    }
1476    placeOfBirth ATTRIBUTE ::= {
1477            WITH SYNTAX DirectoryString {pkcs-9-ub-placeOfBirth}
1478            EQUALITY MATCHING RULE caseExactMatch
1479            SINGLE VALUE TRUE
1480            ID pkcs-9-at-placeOfBirth
1481    }
1483    gender ATTRIBUTE ::= {
1484            WITH SYNTAX PrintableString (SIZE(1) ^
1485                        FROM ("M" | "F" | "m" | "f"))
1486            EQUALITY MATCHING RULE caseIgnoreMatch
1487            SINGLE VALUE TRUE
1488            ID pkcs-9-at-gender
1489    }
1491    countryOfCitizenship ATTRIBUTE ::= {
1492            WITH SYNTAX PrintableString (SIZE(2))(CONSTRAINED BY {
1493            -- Must be a two-letter country acronym in accordance with
1494            -- ISO/IEC 3166 --})
1495            EQUALITY MATCHING RULE caseIgnoreMatch
1496            ID pkcs-9-at-countryOfCitizenship
1497    }
1499    countryOfResidence ATTRIBUTE ::= {
1500            WITH SYNTAX PrintableString (SIZE(2))(CONSTRAINED BY {
1501            -- Must be a two-letter country acronym in accordance with
1502            -- ISO/IEC 3166 --})
1503            EQUALITY MATCHING RULE caseIgnoreMatch
1504            ID pkcs-9-at-countryOfResidence
1505    }
1514 Nystrom & Kaliski            Informational                     [Page 27]
1516 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1519    pseudonym ATTRIBUTE ::= {
1520            WITH SYNTAX DirectoryString {pkcs-9-ub-pseudonym}
1521            EQUALITY MATCHING RULE caseExactMatch
1522            ID id-at-pseudonym
1523    }
1525    contentType ATTRIBUTE ::= {
1526            WITH SYNTAX ContentType
1527            EQUALITY MATCHING RULE objectIdentifierMatch
1528            SINGLE VALUE TRUE
1529            ID pkcs-9-at-contentType
1530    }
1532    ContentType ::= OBJECT IDENTIFIER
1534    messageDigest ATTRIBUTE ::= {
1535            WITH SYNTAX MessageDigest
1536            EQUALITY MATCHING RULE octetStringMatch
1537            SINGLE VALUE TRUE
1538            ID pkcs-9-at-messageDigest
1539    }
1541    MessageDigest ::= OCTET STRING
1543    signingTime ATTRIBUTE ::= {
1544            WITH SYNTAX SigningTime
1545            EQUALITY MATCHING RULE signingTimeMatch
1546            SINGLE VALUE TRUE
1547            ID pkcs-9-at-signingTime
1548    }
1550    SigningTime ::= Time -- imported from ISO/IEC 9594-8
1552    randomNonce ATTRIBUTE ::= {
1553            WITH SYNTAX RandomNonce
1554            EQUALITY MATCHING RULE octetStringMatch
1555            SINGLE VALUE TRUE
1556            ID pkcs-9-at-randomNonce
1557    }
1559    RandomNonce ::= OCTET STRING (SIZE(4..MAX))
1560            -- At least four bytes long
1570 Nystrom & Kaliski            Informational                     [Page 28]
1572 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1575    sequenceNumber ATTRIBUTE ::= {
1576            WITH SYNTAX SequenceNumber
1577            EQUALITY MATCHING RULE integerMatch
1578            SINGLE VALUE TRUE
1579            ID pkcs-9-at-sequenceNumber
1580    }
1582    SequenceNumber ::= INTEGER (1..MAX)
1584    counterSignature ATTRIBUTE ::= {
1585            WITH SYNTAX SignerInfo
1586            ID pkcs-9-at-counterSignature
1587    }
1589    challengePassword ATTRIBUTE ::= {
1590            WITH SYNTAX DirectoryString {pkcs-9-ub-challengePassword}
1591            EQUALITY MATCHING RULE caseExactMatch
1592            SINGLE VALUE TRUE
1593            ID pkcs-9-at-challengePassword
1594    }
1596    extensionRequest ATTRIBUTE ::= {
1597            WITH SYNTAX ExtensionRequest
1598            SINGLE VALUE TRUE
1599            ID pkcs-9-at-extensionRequest
1600    }
1602    ExtensionRequest ::= Extensions
1604    extendedCertificateAttributes ATTRIBUTE ::= {
1605            WITH SYNTAX SET OF Attribute
1606            SINGLE VALUE TRUE
1607            ID pkcs-9-at-extendedCertificateAttributes
1608    }
1610    friendlyName ATTRIBUTE ::= {
1611            WITH SYNTAX BMPString (SIZE(1..pkcs-9-ub-friendlyName))
1612            EQUALITY MATCHING RULE caseIgnoreMatch
1613            SINGLE VALUE TRUE
1614            ID pkcs-9-at-friendlyName
1615    }
1617    localKeyId ATTRIBUTE ::= {
1618            WITH SYNTAX OCTET STRING
1619            EQUALITY MATCHING RULE octetStringMatch
1620            SINGLE VALUE TRUE
1621            ID pkcs-9-at-localKeyId
1622    }
1626 Nystrom & Kaliski            Informational                     [Page 29]
1628 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1631    signingDescription ATTRIBUTE ::= {
1632            WITH SYNTAX DirectoryString {pkcs-9-ub-signingDescription}
1633            EQUALITY MATCHING RULE caseIgnoreMatch
1634            SINGLE VALUE TRUE
1635            ID pkcs-9-at-signingDescription
1636    }
1638    smimeCapabilities ATTRIBUTE ::= {
1639            WITH SYNTAX SMIMECapabilities
1640            SINGLE VALUE TRUE
1641            ID pkcs-9-at-smimeCapabilities
1642    }
1644    SMIMECapabilities ::= SEQUENCE OF SMIMECapability
1646    SMIMECapability ::= SEQUENCE {
1647            algorithm  ALGORITHM.&id ({SMIMEv3Algorithms}),
1648            parameters ALGORITHM.&Type ({SMIMEv3Algorithms}{@algorithm})
1649    }
1651    SMIMEv3Algorithms ALGORITHM ::= {...-- See RFC 2633 --}
1653     -- Matching rules
1655    pkcs9CaseIgnoreMatch MATCHING-RULE ::= {
1656            SYNTAX PKCS9String {pkcs-9-ub-match}
1657            ID pkcs-9-mr-caseIgnoreMatch
1658    }
1660    signingTimeMatch MATCHING-RULE ::= {
1661            SYNTAX SigningTime
1662            ID pkcs-9-mr-signingTimeMatch
1663    }
1665    END
1667 B. BNF schema summary This appendix provides augmented BNF [2]
1668    definitions of the object class and most attribute types specified in
1669    this document along with their associated syntaxes and matching
1670    rules.  The ABNF definitions have been done in accordance with [21],
1671    in an attempt to ease integration with LDAP-accessible Directory
1672    systems.  Lines have been folded in some cases to improve
1673    readability.
1675  B.1 Syntaxes
1677    This section defines all syntaxes that are used in this document.
1682 Nystrom & Kaliski            Informational                     [Page 30]
1684 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1687   B.1.1 PKCS9String
1689    (
1690            1.2.840.113549.1.9.26.1
1691            DESC 'PKCS9String'
1692    )
1694    The encoding of a value in this syntax is the string value itself.
1696   B.1.2 SigningTime
1698    (
1699            1.2.840.113549.1.9.26.2
1700            DESC 'SigningTime'
1701    )
1703    Values in this syntax are encoded as printable strings, represented
1704    as specified in [5].  Note that the time zone must be specified.  For
1705    example, "199412161032Z".
1707  B.2 Object classes
1709   B.2.1 pkcsEntity
1711    (
1712            1.2.840.113549.1.9.24.1
1713            NAME 'pkcsEntity'
1714            SUP top
1715            AUXILIARY
1716            MAY (
1717            pKCS7PDU $ userPKCS12 $ pKCS15Token $ encryptedPrivateKeyInfo
1718            )
1719    )
1721   B.2.2 naturalPerson
1723    (
1724            1.2.840.113549.1.9.24.2
1725            NAME 'naturalPerson'
1726            SUP top
1727            AUXILIARY
1728            MAY (
1729            emailAddress $ unstructuredName $ unstructuredAddress $
1730            dateOfBirth & placeOfBirth & gender & countryOfCitizenship &
1731            countryOfResidence & pseudonym & serialNumber
1732            )
1733    )
1738 Nystrom & Kaliski            Informational                     [Page 31]
1740 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1743  B.3 Attribute types
1745   B.3.1 pKCS7PDU
1747    This attribute is to be stored and requested in binary form, as
1748    pKCS7PDU;binary.  The attribute values are BER- or DER-encoded
1749    ContentInfo values.
1751    (
1752            1.2.840.113549.1.9.25.5
1753            NAME 'pKCS7PDU'
1754            DESC 'PKCS #7 ContentInfo PDU'
1755            SYNTAX 1.3.6.1.4.1.1466.115.121.1.5
1756    )
1758   B.3.2 userPKCS12
1760    This attribute is to be stored and requested in binary form, as
1761    userPKCS12;binary.  The attribute values are PFX PDUs stored as
1762    binary (BER- or DER-encoded) data.
1764    (
1765            2.16.840.1.113730.3.1.216
1766            NAME 'userPKCS12'
1767            DESC 'PKCS #12 PFX PDU for exchange of personal information'
1768            SYNTAX 1.3.6.1.4.1.1466.115.121.1.5
1769    )
1771   B.3.3 pKCS15Token
1773    This attribute is to be stored and requested in binary form, as
1774    pKCS15Token;binary.  The attribute values are PKCS15Token PDUs stored
1775    as binary (BER- or DER-encoded) data.
1777    (
1778            1.2.840.113549.1.9.25.1
1779            NAME 'pKCS15Token'
1780            DESC 'PKCS #15 token PDU'
1781            SYNTAX 1.3.6.1.4.1.1466.115.121.1.5
1782    )
1784   B.3.4 encryptedPrivateKeyInfo
1786    This attribute is to be stored and requested in binary form, as
1787    encryptedPrivateKeyInfo;binary.  The attribute values are
1788    EncryptedPrivateKeyInfo PDUs stored as binary (BER- or DER-encoded)
1789    data.
1794 Nystrom & Kaliski            Informational                     [Page 32]
1796 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1799    (
1800            1.2.840.113549.1.9.25.2
1801            NAME 'encryptedPrivateKeyInfo'
1802            DESC 'PKCS #8 encrypted private key info'
1803            SYNTAX 1.3.6.1.4.1.1466.115.121.1.5
1804    )
1806   B.3.5 emailAddress
1808    (
1809            1.2.840.113549.1.9.1
1810            NAME 'emailAddress'
1811            DESC 'Email address'
1812            EQUALITY pkcs9CaseIgnoreMatch
1813            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
1814    )
1816   B.3.6 unstructuredName
1818    (
1819            1.2.840.113549.1.9.2
1820            NAME 'unstructuredName'
1821            DESC 'PKCS #9 unstructured name'
1822            EQUALITY pkcs9CaseIgnoreMatch
1823            SYNTAX 1.2.840.113549.1.9.26.1
1824    )
1826   B.3.7 unstructuredAddress
1828    (
1829            1.2.840.113549.1.9.8
1830            NAME 'unstructuredAddress'
1831            DESC 'PKCS #9 unstructured address'
1832            EQUALITY caseIgnoreMatch
1833            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
1834    )
1836   B.3.8 dateOfBirth
1838    (
1839            1.3.6.1.5.5.7.9.1
1840            NAME 'dateOfBirth'
1841            DESC 'Date of birth'
1842            EQUALITY generalizedTimeMatch
1843            SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
1844            SINGLE-VALUE
1845    )
1850 Nystrom & Kaliski            Informational                     [Page 33]
1852 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1855   B.3.9 placeOfBirth
1857    (
1858            1.3.6.1.5.5.7.9.2
1859            NAME 'placeOfBirth'
1860            DESC 'Place of birth'
1861            EQUALITY caseExactMatch
1862            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
1863            SINGLE-VALUE
1864    )
1866   B.3.10 gender
1868    (
1869            1.3.6.1.5.5.7.9.3
1870            NAME 'gender'
1871            DESC 'Gender'
1872            EQUALITY caseIgnoreMatch
1873            SYNTAX 1.3.6.1.4.1.1466.115.121.1.44
1874            SINGLE-VALUE
1875    )
1877   B.3.11 countryOfCitizenship
1879    (
1880            1.3.6.1.5.5.7.9.4
1881            NAME 'countryOfCitizenship'
1882            DESC 'Country of citizenship'
1883            EQUALITY caseIgnoreMatch
1884            SYNTAX 1.3.6.1.4.1.1466.115.121.1.44
1885    )
1887   B.3.12 countryOfResidence
1889    (
1890            1.3.6.1.5.5.7.9.5
1891            NAME 'countryOfResidence'
1892            DESC 'Country of residence'
1893            EQUALITY caseIgnoreMatch
1894            SYNTAX 1.3.6.1.4.1.1466.115.121.1.44
1895    )
1906 Nystrom & Kaliski            Informational                     [Page 34]
1908 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1911   B.3.13 pseudonym
1913    (
1914            2.5.4.65
1915            NAME 'pseudonym'
1916            DESC 'Pseudonym'
1917            EQUALITY caseExactMatch
1918            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
1919    )
1921   B.3.14 contentType
1923    In the (highly unlikely) event of this attribute being stored in a
1924    Directory it is to be stored and requested in binary form, as
1925    contentType;binary.  Attribute values shall be OCTET STRINGs stored
1926    as binary (BER- or DER-encoded) data.
1928    (
1929            1.2.840.113549.1.9.3
1930            NAME 'contentType'
1931            DESC 'PKCS #7 content type attribute'
1932            EQUALITY objectIdentifierMatch
1933            SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
1934            SINGLE-VALUE
1935    )
1937   B.3.15 messageDigest
1939    In the (highly unlikely) event of this attribute being stored in a
1940    Directory it is to be stored and requested in binary form, as
1941    messageDigest;binary.  Attribute values shall be OCTET STRINGs stored
1942    as binary (BER- or DER-encoded) data.
1944    (
1945            1.2.840.113549.1.9.4
1946            NAME 'messageDigest'
1947            DESC 'PKCS #7 mesage digest attribute'
1948            EQUALITY octetStringMatch
1949            SYNTAX 1.3.6.1.4.1.1466.115.121.1.5
1950            SINGLE-VALUE
1951    )
1962 Nystrom & Kaliski            Informational                     [Page 35]
1964 RFC 2985      Selected Object Classes and Attribute Types  November 2000
1967   B.3.16 signingTime
1969    (
1970            1.2.840.113549.1.9.5
1971            NAME 'signingTime'
1972            DESC 'PKCS #7 signing time'
1973            EQUALITY signingTimeMatch
1974            SYNTAX 1.2.840.113549.1.9.26.2
1975            SINGLE-VALUE
1976    )
1978   B.3.17 counterSignature
1980    In the (highly unlikely) event that this attribute is to be stored in
1981    a directory, it is to be stored and requested in binary form, as
1982    counterSignature;binary.  Attribute values shall be stored as binary
1983    (BER- or DER-encoded) data.
1985    (
1986            1.2.840.113549.1.9.6
1987            NAME 'counterSignature'
1988            DESC 'PKCS #7 countersignature'
1989            SYNTAX 1.3.6.1.4.1.1466.115.121.1.5
1990    )
1992   B.3.18 challengePassword
1994    (
1995            1.2.840.113549.1.9.7
1996            NAME 'challengePassword'
1997            DESC 'Challenge password for certificate revocations'
1998            EQUALITY caseExactMatch
1999            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
2000            SINGLE-VALUE
2001    )
2003    Note - It is not recommended to store unprotected values of this
2004    attribute in a directory.
2006  B.4 Matching rules
2008   B.4.1 pkcs9CaseIgnoreMatch
2010    (
2011            1.2.840.113549.1.9.27.1
2012            NAME 'pkcs9CaseIgnoreMatch'
2013            SYNTAX 1.2.840.113549.1.9.26.1
2014    )
2018 Nystrom & Kaliski            Informational                     [Page 36]
2020 RFC 2985      Selected Object Classes and Attribute Types  November 2000
2023   B.4.2 signingTimeMatch
2025    (
2026            1.2.840.113549.1.9.27.3
2027            NAME 'signingTimeMatch'
2028            SYNTAX 1.2.840.113549.1.9.26.2
2029    )
2031 C. Intellectual property considerations
2033    RSA Security makes no patent claims on the general constructions
2034    described in this document, although specific underlying techniques
2035    may be covered.
2037    License to copy this document is granted provided that it is
2038    identified as "RSA Security Inc.  Public-Key Cryptography Standards
2039    (PKCS)" in all material mentioning or referencing this document.
2041    RSA Security makes no representations regarding intellectual property
2042    claims by other parties.  Such determination is the responsibility of
2043    the user.
2045 D. Revision history
2047    Version 1.0
2049       Version 1.0 was part of the June 3, 1991 initial public release of
2050       PKCS.  Version 1.0 was also published as NIST/OSI Implementors'
2051       Workshop document SEC-SIG-91-24.
2053       Version 1.1
2055       Version 1.1 incorporated several editorial changes, including
2056       updates to the references and the addition of a revision history.
2057       The following substantive changes were made:
2059       - Section 6: challengePassword, unstructuredAddress, and
2060         extendedCertificateAttributes attribute types were added
2061       - Section 7: challengePassword, unstructuredAddress, and
2062         extendedCertificateAttributes object identifiers were added
2074 Nystrom & Kaliski            Informational                     [Page 37]
2076 RFC 2985      Selected Object Classes and Attribute Types  November 2000
2079    Version 2.0
2081    Version 2.0 incorporates several editorial changes as well.  In
2082    addition, the following substantive changes have been made:
2084       - Addition of a Section defining two new auxiliary object classes,
2085         pkcsEntity and naturalPerson
2086       - Addition of several new attribute types and matching rules for
2087         use in conjunction with these object classes and elsewhere
2088       - Update of all ASN.1 to be in line with the 1997 version of this
2089         syntax
2090       - Addition a "compilable" ASN.1 module
2091       - Addition, in accordance with [21], an ABNF description of all
2092         attributes and object classes
2093       - Addition of an intellectual property considerations section
2130 Nystrom & Kaliski            Informational                     [Page 38]
2132 RFC 2985      Selected Object Classes and Attribute Types  November 2000
2135 E. References
2137    [1]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
2138         Levels", BCP 14, RFC 2119, March 1997.
2140    [2]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
2141         Specifications: ABNF", RFC 2234, November 1997.
2143    [3]  Housley, R., "Cryptographic Message Syntax CMS", RFC 2630, June
2144         1999.
2146    [4]  ISO/IEC 3166-1:Codes for the representation of names of
2147         countries and their subdivisions - Part 1: Country codes. 1997.
2149    [5]  ISO/IEC 8824-1:1999: Information technology - Abstract Syntax
2150         Notation One (ASN.1) - Specification of basic notation.1999.
2152    [6]  ISO/IEC 8825-1:1999: Information technology - ASN.1 Encoding
2153         Rules: Specification of Basic Encoding Rules (BER), Canonical
2154         Encoding Rules (CER) and Distinguished Encoding Rules (DER).
2155         1999.
2157    [7]  ISO/IEC 9594-2:1997: Information technology - Open Systems
2158         Interconnection - The Directory: Models. 1997.
2160    [8]  ISO/IEC 9594-6:1997: Information technology - Open Systems
2161         Interconnection - The Directory: Selected attribute types. 1997.
2163    [9]  ISO/IEC 9594-7:1997: Information technology - Open Systems
2164         Interconnection - The Directory: Selected object classes. 1997.
2166    [10] ISO/IEC 9594-8:1997: Information technology - Open Systems
2167         Interconnection - The Directory: Authentication framework. 1997.
2169    [11] ISO/IEC 10646-1: Information Technology - Universal Multiple-
2170         Octet Coded Character Set (UCS) - Part 1: Architecture and Basic
2171         Multilingual Plane. 1993.
2173    [12] Ramsdell, R., "S/MIME Version 3 Message Specification", RFC
2174         2633, June 1999.
2176    [13] RSA Laboratories. PKCS #6: Extended-Certificate Syntax Standard.
2177         Version 1.5, November 1993.
2179    [14] RSA Laboratories. PKCS #7: Cryptographic Message Syntax
2180         Standard. Version 1.5, November 1993.
2186 Nystrom & Kaliski            Informational                     [Page 39]
2188 RFC 2985      Selected Object Classes and Attribute Types  November 2000
2191    [15] RSA Laboratories. PKCS #8: Private-Key Information Syntax
2192         Standard. Version 1.2, November 1993.
2194    [16] RSA Laboratories. PKCS #10: Certification Request Syntax
2195         Standard. Version 1.0, November 1993.
2197    [17] RSA Laboratories. PKCS #12: Personal Information Exchange Syntax
2198         Standard. Version 1.0, June 1999.
2200    [18] RSA Laboratories. PKCS #15: Cryptographic Token Information
2201         Format Standard. Version 1.1, June 2000.
2203    [19] Santesson, S., Polk, W., Barzin, P. and M. Nystrom, "Internet
2204         X.509 Public Key Infrastructure - Qualified Certificates
2205         Profile", Work in Progress.
2207    [20] Smith, M. "Definition of the inetOrgPerson LDAP Object Class",
2208         RFC 2798, April 2000.
2210    [21] Wahl, M., Coulbeck, A., Howes, T. and S. Kille, "Lightweight
2211         Directory Access Protocol (v3): Attribute Syntax Definitions",
2212         RFC 2252, December 1997.
2214    [22] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access
2215         Protocol (v3)", RFC 2251, December 1997.
2242 Nystrom & Kaliski            Informational                     [Page 40]
2244 RFC 2985      Selected Object Classes and Attribute Types  November 2000
2247 F. Contact information & About PKCS
2249    The Public-Key Cryptography Standards are specifications produced by
2250    RSA Laboratories in cooperation with secure systems developers
2251    worldwide for the purpose of accelerating the deployment of public-
2252    key cryptography.  First published in 1991 as a result of meetings
2253    with a small group of early adopters of public-key technology, the
2254    PKCS documents have become widely referenced and implemented.
2255    Contributions from the PKCS series have become part of many formal
2256    and de facto standards, including ANSI X9 documents, PKIX, SET,
2257    S/MIME, and SSL.
2259    Further development of PKCS occurs through mailing list discussions
2260    and occasional workshops, and suggestions for improvement are
2261    welcome.  For more information, contact:
2263    PKCS Editor
2264    RSA Laboratories
2265    20 Crosby Drive
2266    Bedford, MA  01730 USA
2267    pkcs-editor@rsasecurity.com
2268    http://www.rsasecurity.com/rsalabs/PKCS
2298 Nystrom & Kaliski            Informational                     [Page 41]
2300 RFC 2985      Selected Object Classes and Attribute Types  November 2000
2303 Full Copyright Statement
2305    Copyright (C) The Internet Society (2000).  All Rights Reserved.
2307    This document and translations of it may be copied and furnished to
2308    others provided that the above copyright notice and this paragraph
2309    are included on all such copies.  However, this document itself may
2310    not be modified in any way, such as by removing the copyright notice
2311    or references to the Internet Society or other Internet
2312    organizations, except as required to translate it into languages
2313    other than English.
2315    The limited permissions granted above are perpetual and will not be
2316    revoked by the Internet Society or its successors or assigns.
2318    This document and the information contained herein is provided on an
2319    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
2320    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR  IMPLIED, INCLUDING
2321    BUT NOT  LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
2322    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY  IMPLIED WARRANTIES OF
2323    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
2325 Acknowledgement
2327    Funding for the RFC Editor function is currently provided by the
2328    Internet Society.
2354 Nystrom & Kaliski            Informational                     [Page 42]