7 Network Working Group M. Nystrom
8 Request for Comments: 2985 B. Kaliski
9 Category: Informational RSA Security
13 PKCS #9: Selected Object Classes and Attribute Types
18 This memo provides information for the Internet community. It does
19 not specify an Internet standard of any kind. Distribution of this
24 Copyright (C) The Internet Society (2000). All Rights Reserved.
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.
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
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,
94 2. Definitions, notation and document conventions
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
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
144 UCS Universal Multiple-Octet Coded Character Set, as
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
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
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
240 objectClass telephoneNumber
241 organizationName teletexTerminalIdentifier
242 physicalDeliveryOfficeName telexNumber
244 postalCode x121Address
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
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 ::= {
265 MAY CONTAIN { PKCSEntityAttributeSet }
266 ID pkcs-9-oc-pkcsEntity
269 PKCSEntityAttributeSet ATTRIBUTE ::= {
273 encryptedPrivateKeyInfo,
274 ... -- For future extensions
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 ::= {
298 MAY CONTAIN { NaturalPersonAttributeSet }
299 ID pkcs-9-oc-naturalPerson
302 NaturalPersonAttributeSet ATTRIBUTE ::= {
305 unstructuredAddress |
309 countryOfCitizenship |
313 ... -- For future extensions
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
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
338 Nystrom & Kaliski Informational [Page 6]
340 RFC 2985 Selected Object Classes and Attribute Types November 2000
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 ::= {
351 ID pkcs-9-at-userPKCS12
354 This type was originally defined in [20].
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
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
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
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
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
429 PKCS9String { INTEGER : maxSize} ::= CHOICE {
430 ia5String IA5String (SIZE(1..maxSize)),
431 directoryString DirectoryString {maxSize}
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
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
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:
490 teletexString TeletexString,
491 printableString PrintableString,
494 But also mentioned the possibility of a future definition as follows:
497 teletexString TeletexString,
498 printableString PrintableString,
499 universalString UniversalString
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.
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
529 ID pkcs-9-at-dateOfBirth
532 dateOfBirth attributes must be single-valued. The
533 generalizedTimeMatch matching rule is defined in [8].
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
544 ID pkcs-9-at-placeOfBirth
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
569 The gender attribute specifies the gender of the subject it is
572 gender ATTRIBUTE ::= {
573 WITH SYNTAX PrintableString (SIZE(1) ^
574 FROM ("M" | "F" | "m" | "f"))
575 EQUALITY MATCHING RULE caseIgnoreMatch
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
593 EQUALITY MATCHING RULE caseIgnoreMatch
594 ID pkcs-9-at-countryOfCitizenship
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
609 EQUALITY MATCHING RULE caseIgnoreMatch
610 ID pkcs-9-at-countryOfResidence
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
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
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].
642 The serialNumber attribute is defined in [8].
644 5.3 Attribute types for use in PKCS #7 data
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
657 ID pkcs-9-at-contentType
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
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
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
689 messageDigest ATTRIBUTE ::= {
690 WITH SYNTAX MessageDigest
691 EQUALITY MATCHING RULE octetStringMatch
693 ID pkcs-9-at-messageDigest
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.
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
715 ID pkcs-9-at-signingTime
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
730 Nystrom & Kaliski Informational [Page 13]
732 RFC 2985 Selected Object Classes and Attribute Types November 2000
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
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.
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
774 ID pkcs-9-at-randomNonce
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
804 ID pkcs-9-at-sequenceNumber
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
823 counterSignature ATTRIBUTE ::= {
824 WITH SYNTAX SignerInfo
825 ID pkcs-9-at-counterSignature
828 Countersignature values have the same meaning as SignerInfo values
829 for ordinary signatures (see Section 9 of [14] and Section 5.3 of
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
875 ID pkcs-9-at-challengePassword
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
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
909 extensionRequest ATTRIBUTE ::= {
910 WITH SYNTAX ExtensionRequest
912 ID pkcs-9-at-extensionRequest
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
932 ID pkcs-9-at-extendedCertificateAttributes
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
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
963 ID pkcs-9-at-friendlyName
966 As indicated, friendlyName attributes must have a single attribute
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
979 ID pkcs-9-at-localKeyId
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
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
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
1005 ID pkcs-9-at-signingDescription
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
1023 ID pkcs-9-at-smimeCapabilities
1026 SMIMECapabilities ::= SEQUENCE OF SMIMECapability
1028 SMIMECapability ::= SEQUENCE {
1029 algorithm ALGORITHM.&id ({SMIMEv3Algorithms}),
1030 parameters ALGORITHM.&Type ({SMIMEv3Algorithms}{@algorithm})
1033 SMIMEv3Algorithms ALGORITHM ::= {... -- See RFC 2633 -- }
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"
1047 pkcs9CaseIgnoreMatch MATCHING-RULE ::= {
1048 SYNTAX PKCS9String {pkcs9-ub-match}
1049 ID id-mr-pkcs9CaseIgnoreMatch
1052 The rule returns TRUE if the strings are the same length and
1053 corresponding characters are identical except possibly with regard to
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 ::= {
1078 ID pkcs-9-mr-signingTimeMatch
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
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
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
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
1135 EMail: magnus@rsasecurity.com
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
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 ::=
1198 -- All types and values defined in this module is exported for use
1199 -- in other ASN.1 modules.
1203 informationFramework, authenticationFramework,
1204 selectedAttributeTypes, upperBounds , id-at
1205 FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
1206 usefulDefinitions(0) 3}
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
1240 FROM PKCS-12 {iso(1) member-body(2) us(840) rsadsi(113549)
1241 pkcs(1) pkcs-12(12) modules(0) pkcs-12(1)}
1244 FROM PKCS-15 {iso(1) member-body(2) us(840) rsadsi(113549)
1245 pkcs(1) pkcs-15(15) modules(1) pkcs-15(1)};
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}
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
1270 pkcs-9-sx OBJECT IDENTIFIER ::= {pkcs-9 26} -- For syntaxes (RFC 2252)
1271 pkcs-9-mr OBJECT IDENTIFIER ::= {pkcs-9 27} -- Matching rules
1274 pkcs-9-oc-pkcsEntity OBJECT IDENTIFIER ::= {pkcs-9-oc 1}
1275 pkcs-9-oc-naturalPerson OBJECT IDENTIFIER ::= {pkcs-9-oc 2}
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
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}
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 ::=
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}
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}
1367 PKCS9String {INTEGER : maxSize} ::= CHOICE {
1368 ia5String IA5String (SIZE(1..maxSize)),
1369 directoryString DirectoryString {maxSize}
1374 pkcsEntity OBJECT-CLASS ::= {
1377 MAY CONTAIN { PKCSEntityAttributeSet }
1378 ID pkcs-9-oc-pkcsEntity
1381 naturalPerson OBJECT-CLASS ::= {
1384 MAY CONTAIN { NaturalPersonAttributeSet }
1385 ID pkcs-9-oc-naturalPerson
1390 PKCSEntityAttributeSet ATTRIBUTE ::= {
1394 encryptedPrivateKeyInfo,
1395 ... -- For future extensions
1402 Nystrom & Kaliski Informational [Page 25]
1404 RFC 2985 Selected Object Classes and Attribute Types November 2000
1407 NaturalPersonAttributeSet ATTRIBUTE ::= {
1410 unstructuredAddress |
1414 countryOfCitizenship |
1415 countryOfResidence |
1418 ... -- For future extensions
1423 pKCS7PDU ATTRIBUTE ::= {
1424 WITH SYNTAX ContentInfo
1425 ID pkcs-9-at-pkcs7PDU
1428 userPKCS12 ATTRIBUTE ::= {
1430 ID pkcs-9-at-userPKCS12
1433 pKCS15Token ATTRIBUTE ::= {
1434 WITH SYNTAX PKCS15Token
1435 ID pkcs-9-at-pkcs15Token
1438 encryptedPrivateKeyInfo ATTRIBUTE ::= {
1439 WITH SYNTAX EncryptedPrivateKeyInfo
1440 ID pkcs-9-at-encryptedPrivateKeyInfo
1443 emailAddress ATTRIBUTE ::= {
1444 WITH SYNTAX IA5String (SIZE(1..pkcs-9-ub-emailAddress))
1445 EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
1446 ID pkcs-9-at-emailAddress
1449 unstructuredName ATTRIBUTE ::= {
1450 WITH SYNTAX PKCS9String {pkcs-9-ub-unstructuredName}
1451 EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
1452 ID pkcs-9-at-unstructuredName
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
1469 dateOfBirth ATTRIBUTE ::= {
1470 WITH SYNTAX GeneralizedTime
1471 EQUALITY MATCHING RULE generalizedTimeMatch
1473 ID pkcs-9-at-dateOfBirth
1476 placeOfBirth ATTRIBUTE ::= {
1477 WITH SYNTAX DirectoryString {pkcs-9-ub-placeOfBirth}
1478 EQUALITY MATCHING RULE caseExactMatch
1480 ID pkcs-9-at-placeOfBirth
1483 gender ATTRIBUTE ::= {
1484 WITH SYNTAX PrintableString (SIZE(1) ^
1485 FROM ("M" | "F" | "m" | "f"))
1486 EQUALITY MATCHING RULE caseIgnoreMatch
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
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
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
1525 contentType ATTRIBUTE ::= {
1526 WITH SYNTAX ContentType
1527 EQUALITY MATCHING RULE objectIdentifierMatch
1529 ID pkcs-9-at-contentType
1532 ContentType ::= OBJECT IDENTIFIER
1534 messageDigest ATTRIBUTE ::= {
1535 WITH SYNTAX MessageDigest
1536 EQUALITY MATCHING RULE octetStringMatch
1538 ID pkcs-9-at-messageDigest
1541 MessageDigest ::= OCTET STRING
1543 signingTime ATTRIBUTE ::= {
1544 WITH SYNTAX SigningTime
1545 EQUALITY MATCHING RULE signingTimeMatch
1547 ID pkcs-9-at-signingTime
1550 SigningTime ::= Time -- imported from ISO/IEC 9594-8
1552 randomNonce ATTRIBUTE ::= {
1553 WITH SYNTAX RandomNonce
1554 EQUALITY MATCHING RULE octetStringMatch
1556 ID pkcs-9-at-randomNonce
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
1579 ID pkcs-9-at-sequenceNumber
1582 SequenceNumber ::= INTEGER (1..MAX)
1584 counterSignature ATTRIBUTE ::= {
1585 WITH SYNTAX SignerInfo
1586 ID pkcs-9-at-counterSignature
1589 challengePassword ATTRIBUTE ::= {
1590 WITH SYNTAX DirectoryString {pkcs-9-ub-challengePassword}
1591 EQUALITY MATCHING RULE caseExactMatch
1593 ID pkcs-9-at-challengePassword
1596 extensionRequest ATTRIBUTE ::= {
1597 WITH SYNTAX ExtensionRequest
1599 ID pkcs-9-at-extensionRequest
1602 ExtensionRequest ::= Extensions
1604 extendedCertificateAttributes ATTRIBUTE ::= {
1605 WITH SYNTAX SET OF Attribute
1607 ID pkcs-9-at-extendedCertificateAttributes
1610 friendlyName ATTRIBUTE ::= {
1611 WITH SYNTAX BMPString (SIZE(1..pkcs-9-ub-friendlyName))
1612 EQUALITY MATCHING RULE caseIgnoreMatch
1614 ID pkcs-9-at-friendlyName
1617 localKeyId ATTRIBUTE ::= {
1618 WITH SYNTAX OCTET STRING
1619 EQUALITY MATCHING RULE octetStringMatch
1621 ID pkcs-9-at-localKeyId
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
1635 ID pkcs-9-at-signingDescription
1638 smimeCapabilities ATTRIBUTE ::= {
1639 WITH SYNTAX SMIMECapabilities
1641 ID pkcs-9-at-smimeCapabilities
1644 SMIMECapabilities ::= SEQUENCE OF SMIMECapability
1646 SMIMECapability ::= SEQUENCE {
1647 algorithm ALGORITHM.&id ({SMIMEv3Algorithms}),
1648 parameters ALGORITHM.&Type ({SMIMEv3Algorithms}{@algorithm})
1651 SMIMEv3Algorithms ALGORITHM ::= {...-- See RFC 2633 --}
1655 pkcs9CaseIgnoreMatch MATCHING-RULE ::= {
1656 SYNTAX PKCS9String {pkcs-9-ub-match}
1657 ID pkcs-9-mr-caseIgnoreMatch
1660 signingTimeMatch MATCHING-RULE ::= {
1662 ID pkcs-9-mr-signingTimeMatch
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
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
1690 1.2.840.113549.1.9.26.1
1694 The encoding of a value in this syntax is the string value itself.
1699 1.2.840.113549.1.9.26.2
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".
1712 1.2.840.113549.1.9.24.1
1717 pKCS7PDU $ userPKCS12 $ pKCS15Token $ encryptedPrivateKeyInfo
1724 1.2.840.113549.1.9.24.2
1725 NAME 'naturalPerson'
1729 emailAddress $ unstructuredName $ unstructuredAddress $
1730 dateOfBirth & placeOfBirth & gender & countryOfCitizenship &
1731 countryOfResidence & pseudonym & serialNumber
1738 Nystrom & Kaliski Informational [Page 31]
1740 RFC 2985 Selected Object Classes and Attribute Types November 2000
1747 This attribute is to be stored and requested in binary form, as
1748 pKCS7PDU;binary. The attribute values are BER- or DER-encoded
1752 1.2.840.113549.1.9.25.5
1754 DESC 'PKCS #7 ContentInfo PDU'
1755 SYNTAX 1.3.6.1.4.1.1466.115.121.1.5
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.
1765 2.16.840.1.113730.3.1.216
1767 DESC 'PKCS #12 PFX PDU for exchange of personal information'
1768 SYNTAX 1.3.6.1.4.1.1466.115.121.1.5
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.
1778 1.2.840.113549.1.9.25.1
1780 DESC 'PKCS #15 token PDU'
1781 SYNTAX 1.3.6.1.4.1.1466.115.121.1.5
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)
1794 Nystrom & Kaliski Informational [Page 32]
1796 RFC 2985 Selected Object Classes and Attribute Types November 2000
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
1809 1.2.840.113549.1.9.1
1811 DESC 'Email address'
1812 EQUALITY pkcs9CaseIgnoreMatch
1813 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
1816 B.3.6 unstructuredName
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
1826 B.3.7 unstructuredAddress
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
1841 DESC 'Date of birth'
1842 EQUALITY generalizedTimeMatch
1843 SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
1850 Nystrom & Kaliski Informational [Page 33]
1852 RFC 2985 Selected Object Classes and Attribute Types November 2000
1860 DESC 'Place of birth'
1861 EQUALITY caseExactMatch
1862 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
1872 EQUALITY caseIgnoreMatch
1873 SYNTAX 1.3.6.1.4.1.1466.115.121.1.44
1877 B.3.11 countryOfCitizenship
1881 NAME 'countryOfCitizenship'
1882 DESC 'Country of citizenship'
1883 EQUALITY caseIgnoreMatch
1884 SYNTAX 1.3.6.1.4.1.1466.115.121.1.44
1887 B.3.12 countryOfResidence
1891 NAME 'countryOfResidence'
1892 DESC 'Country of residence'
1893 EQUALITY caseIgnoreMatch
1894 SYNTAX 1.3.6.1.4.1.1466.115.121.1.44
1906 Nystrom & Kaliski Informational [Page 34]
1908 RFC 2985 Selected Object Classes and Attribute Types November 2000
1917 EQUALITY caseExactMatch
1918 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
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.
1929 1.2.840.113549.1.9.3
1931 DESC 'PKCS #7 content type attribute'
1932 EQUALITY objectIdentifierMatch
1933 SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
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.
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
1962 Nystrom & Kaliski Informational [Page 35]
1964 RFC 2985 Selected Object Classes and Attribute Types November 2000
1970 1.2.840.113549.1.9.5
1972 DESC 'PKCS #7 signing time'
1973 EQUALITY signingTimeMatch
1974 SYNTAX 1.2.840.113549.1.9.26.2
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.
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
1992 B.3.18 challengePassword
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
2003 Note - It is not recommended to store unprotected values of this
2004 attribute in a directory.
2008 B.4.1 pkcs9CaseIgnoreMatch
2011 1.2.840.113549.1.9.27.1
2012 NAME 'pkcs9CaseIgnoreMatch'
2013 SYNTAX 1.2.840.113549.1.9.26.1
2018 Nystrom & Kaliski Informational [Page 36]
2020 RFC 2985 Selected Object Classes and Attribute Types November 2000
2023 B.4.2 signingTimeMatch
2026 1.2.840.113549.1.9.27.3
2027 NAME 'signingTimeMatch'
2028 SYNTAX 1.2.840.113549.1.9.26.2
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
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
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.
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
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
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
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
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).
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
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,
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:
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
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.
2327 Funding for the RFC Editor function is currently provided by the
2354 Nystrom & Kaliski Informational [Page 42]