Difference between revisions of "RFC1274"

From RFC-Wiki
imported>Admin
(Created page with " Network Working Group P. Barker Request for Comments: 1274 S. Kille ...")
 
Line 1: Line 1:
 
  
  
Line 9: Line 8:
 
                                             University College London
 
                                             University College London
 
                                                         November 1991
 
                                                         November 1991
 
  
 
               The COSINE and Internet X.500 Schema
 
               The COSINE and Internet X.500 Schema
 
 
Status of this Memo
 
Status of this Memo
 
 
This RFC specifies an IAB standards track protocol for the Internet
 
This RFC specifies an IAB standards track protocol for the Internet
 
community, and requests discussion and suggestions for improvements.
 
community, and requests discussion and suggestions for improvements.
Line 20: Line 16:
 
Standards" for the standardization state and status of this protocol.
 
Standards" for the standardization state and status of this protocol.
 
Distribution of this memo is unlimited.
 
Distribution of this memo is unlimited.
 
 
Abstract
 
Abstract
 
 
This document suggests an X.500 Directory Schema, or Naming
 
This document suggests an X.500 Directory Schema, or Naming
 
Architecture, for use in the COSINE and Internet X.500 pilots.  The
 
Architecture, for use in the COSINE and Internet X.500 pilots.  The
Line 30: Line 24:
 
also defined.  An appendix to this document includes a machine
 
also defined.  An appendix to this document includes a machine
 
processable version of the schema.
 
processable version of the schema.
 
 
This document also proposes a mechanism for allowing the schema to
 
This document also proposes a mechanism for allowing the schema to
 
evolve in line with emerging requirements.  Proformas to support this
 
evolve in line with emerging requirements.  Proformas to support this
 
process are included.
 
process are included.
 
 
Corrections and additions to the schema should be sent to na-
 
Corrections and additions to the schema should be sent to na-
 
[email protected] list, as described within.
 
[email protected] list, as described within.
 
+
== Introduction ==
== Introduction ==
 
 
 
 
Directory Services are a fundamental requirement of both human and
 
Directory Services are a fundamental requirement of both human and
 
computer communications' systems.  Human users need to be able to
 
computer communications' systems.  Human users need to be able to
Line 48: Line 38:
 
to support user-friendly naming and distribution lists in electronic
 
to support user-friendly naming and distribution lists in electronic
 
mail systems.
 
mail systems.
 
 
Directory Services have recently been standardised and published as
 
Directory Services have recently been standardised and published as
 
the 1988 CCITT X.500 / ISO IS9594 recommendations [1].  The standard
 
the 1988 CCITT X.500 / ISO IS9594 recommendations [1].  The standard
 
provides a good basis for the provision of real services, and a
 
provides a good basis for the provision of real services, and a
 
considerable amount of Directory Service piloting activity is
 
considerable amount of Directory Service piloting activity is
 +
 +
  
  
Line 62: Line 53:
 
Academic Community Directory Pilot [5] is similarly promoting use of
 
Academic Community Directory Pilot [5] is similarly promoting use of
 
X.500.
 
X.500.
 
+
== Motivation and aims of this document ==
== Motivation and aims of this document ==
 
 
 
 
In a number of areas the X.500 standard only provides a basis for
 
In a number of areas the X.500 standard only provides a basis for
 
services.  One such area is the Directory's Schema or Naming
 
services.  One such area is the Directory's Schema or Naming
Line 73: Line 62:
 
point, they are insufficient as a basis for a large scale pilot
 
point, they are insufficient as a basis for a large scale pilot
 
directory.
 
directory.
 
 
While it is possible for directory administrators to define their own
 
While it is possible for directory administrators to define their own
 
sets of additional attribute types and object classes, this is
 
sets of additional attribute types and object classes, this is
Line 81: Line 69:
 
systems would be unable to determine the semantics of these privately
 
systems would be unable to determine the semantics of these privately
 
defined data types.
 
defined data types.
 
 
A number of useful additions to the standard definitions were made in
 
A number of useful additions to the standard definitions were made in
 
this note's forerunner, "The THORN and RARE Naming Architecture" [2].
 
this note's forerunner, "The THORN and RARE Naming Architecture" [2].
Line 87: Line 74:
 
Furthermore, both the THORN and Quipu X.500 implementations have made
 
Furthermore, both the THORN and Quipu X.500 implementations have made
 
use of these definitions.
 
use of these definitions.
 
 
Since the afore-mentioned note was issued, a number of further
 
Since the afore-mentioned note was issued, a number of further
 
requirements have come to light as the volume and variety of piloting
 
requirements have come to light as the volume and variety of piloting
Line 95: Line 81:
 
original note. The schema is a "living document" that needs
 
original note. The schema is a "living document" that needs
 
procedures for:
 
procedures for:
 
 
   - Allowing submission of requests for new attributes and
 
   - Allowing submission of requests for new attributes and
 
     object classes to be added into the schema;
 
     object classes to be added into the schema;
 
 
   - Allowing groups of object classes and attribute types
 
   - Allowing groups of object classes and attribute types
 
     defined elsewhere to be integrated into the schema.
 
     defined elsewhere to be integrated into the schema.
 
 
   - Checking for the redundancy of any previously defined
 
   - Checking for the redundancy of any previously defined
 
     attribute types and object classes.
 
     attribute types and object classes.
 +
This document attempts to establish procedures to allow for the
 +
  
This document attempts to establish procedures to allow for the
 
  
  
Line 121: Line 105:
 
the schema's object classes and attribute types in their respective
 
the schema's object classes and attribute types in their respective
 
ASN.1 macro formats.
 
ASN.1 macro formats.
 
 
The scope and intended remit of this coordination activity should be
 
The scope and intended remit of this coordination activity should be
 
clearly understood.
 
clearly understood.
 
 
   - Esoteric and local, highly experimental requirements  should
 
   - Esoteric and local, highly experimental requirements  should
 
     continue to be met by private definitions.
 
     continue to be met by private definitions.
 
 
   - Requirements which have support from more than one site will
 
   - Requirements which have support from more than one site will
 
     usually be integrated into the schema.  Put in other words,
 
     usually be integrated into the schema.  Put in other words,
 
     the tendency will be for the inclusion, as opposed to the
 
     the tendency will be for the inclusion, as opposed to the
 
     exclusion, of useful additions to the schema.
 
     exclusion, of useful additions to the schema.
 
 
   - An attempt will be made to avoid duplication of object
 
   - An attempt will be made to avoid duplication of object
 
     classes and attribute types for essentially similar real
 
     classes and attribute types for essentially similar real
 
     world objects.
 
     world objects.
 
+
== What conformance to this schema means ==
== What conformance to this schema means ==
 
 
 
 
It is not reasonable to require that a DSA which supports this schema
 
It is not reasonable to require that a DSA which supports this schema
 
has specific code to handle each of the defined syntaxes.  However,
 
has specific code to handle each of the defined syntaxes.  However,
 
the following requirements are made of a system which claims
 
the following requirements are made of a system which claims
 
conformance to this specification:
 
conformance to this specification:
 
 
   1. A DSA shall be able to store all of the attributes and
 
   1. A DSA shall be able to store all of the attributes and
 
       object class values specified.  (Note that this implies
 
       object class values specified.  (Note that this implies
 
       support for all the object classes and attribute types
 
       support for all the object classes and attribute types
 
       required by strong authentication as defined in X.509.)
 
       required by strong authentication as defined in X.509.)
 
 
   2. A DUA shall be able to identify each attribute type and
 
   2. A DUA shall be able to identify each attribute type and
 
       object class to the user, with an appropriate representation
 
       object class to the user, with an appropriate representation
 
       (e.g., a string).
 
       (e.g., a string).
 
 
   3. These statement are qualified for large attributes values
 
   3. These statement are qualified for large attributes values
 
       (>1kbyte).  A conforming DSA does not have to store such
 
       (>1kbyte).  A conforming DSA does not have to store such
 
       attribute values, and a DUA does not have to display such
 
       attribute values, and a DUA does not have to display such
 
       values, although it must indicate their presence.
 
       values, although it must indicate their presence.
 +
The following are desirable, but not required:
 +
  
The following are desirable, but not required:
 
  
  
Line 166: Line 142:
 
   1. For a DSA to match correctly on the basis of all attribute
 
   1. For a DSA to match correctly on the basis of all attribute
 
       syntaxes defined
 
       syntaxes defined
 
 
   2. For a DSA to enforce the Object Class schema implied by
 
   2. For a DSA to enforce the Object Class schema implied by
 
       these definitions
 
       these definitions
 
 
   3. For a DUA to correctly display the attribute values
 
   3. For a DUA to correctly display the attribute values
 
       (syntaxes) defined
 
       (syntaxes) defined
 
 
   4. For DUAs and DSAs to maintain compatibility with a previous
 
   4. For DUAs and DSAs to maintain compatibility with a previous
 
       version of the schema.
 
       version of the schema.
 
+
== Requesting new object classes and attribute types ==
== Requesting new object classes and attribute types ==
 
 
 
 
This section defines procedures for requesting new object classes and
 
This section defines procedures for requesting new object classes and
 
attribute types to be added to the schema.  Proformas for object
 
attribute types to be added to the schema.  Proformas for object
Line 183: Line 154:
 
to use them.  A mechanism for making requests for large groups of new
 
to use them.  A mechanism for making requests for large groups of new
 
object classes and attribute types is described in the next section.
 
object classes and attribute types is described in the next section.
 
 
As stated earlier, it is anticipated that the schema will evolve
 
As stated earlier, it is anticipated that the schema will evolve
 
considerably over time.  As X.500 is used to support a widening range
 
considerably over time.  As X.500 is used to support a widening range
Line 191: Line 161:
 
completed proformas.  This stipulation will greatly simplify
 
completed proformas.  This stipulation will greatly simplify
 
subsequent revisions of the schema.
 
subsequent revisions of the schema.
 
 
There is one qualification to the above with respect to requests for
 
There is one qualification to the above with respect to requests for
 
modifications to an existing object class.  If a modification to an
 
modifications to an existing object class.  If a modification to an
Line 201: Line 170:
 
be created, and the original object class expired following the
 
be created, and the original object class expired following the
 
scheme described in the next main section.
 
scheme described in the next main section.
 
 
It is anticipated that most requests for modifications to the schema
 
It is anticipated that most requests for modifications to the schema
 
will be met without any need for editorial intervention.  Sometimes,
 
will be met without any need for editorial intervention.  Sometimes,
Line 212: Line 180:
 
community by explaining their views to the mailing list osi-
 
community by explaining their views to the mailing list osi-
 
[email protected].  Heed will be paid to any consensus that emerges
 
[email protected].  Heed will be paid to any consensus that emerges
 +
 +
  
  
Line 220: Line 190:
 
list is used almost solely for discussions on schema issues, a
 
list is used almost solely for discussions on schema issues, a
 
separate discussion list will be created.
 
separate discussion list will be created.
 
 
To facilitate the production of the afore-mentioned proformas, tools
 
To facilitate the production of the afore-mentioned proformas, tools
 
are included in Appendix B which will verify that a proforma has been
 
are included in Appendix B which will verify that a proforma has been
 
correctly formatted.
 
correctly formatted.
 
 
Completed proformas should be mailed to [email protected]
 
Completed proformas should be mailed to [email protected]
 
+
4.1.  Object Class proforma
=== Object Class proforma ===
 
 
 
 
This section gives an example, completed proforma for a new object
 
This section gives an example, completed proforma for a new object
 
class, alcoholic drink.  A proforma for object class specified in BNF
 
class, alcoholic drink.  A proforma for object class specified in BNF
 
is included in Appendix A.
 
is included in Appendix A.
 
 
   Object Class: Alcoholic Drink
 
   Object Class: Alcoholic Drink
 
 
   Description: The Alcoholic Drink object class is used to define
 
   Description: The Alcoholic Drink object class is used to define
 
   entries representing intoxicating beverages.
 
   entries representing intoxicating beverages.
 
 
   ASN1OCMacro: alcoholicDrink OBJECT-CLASS
 
   ASN1OCMacro: alcoholicDrink OBJECT-CLASS
 
       SUBCLASS OF drink
 
       SUBCLASS OF drink
Line 245: Line 208:
 
           normalServing,
 
           normalServing,
 
           hue}
 
           hue}
 
 
An object class description consists of three fields, separated by
 
An object class description consists of three fields, separated by
 
blank lines.  The keywords Object Class, Description and ASN1OCMacro,
 
blank lines.  The keywords Object Class, Description and ASN1OCMacro,
 
and their suffixed colons, must be included exactly as above.
 
and their suffixed colons, must be included exactly as above.
 
 
The Object Class field should be used for a textual description of
 
The Object Class field should be used for a textual description of
 
the object class.  This will be at most three or four words.
 
the object class.  This will be at most three or four words.
 
 
The Description field should contain some explanatory text about the
 
The Description field should contain some explanatory text about the
 
intended use of the object class.  This can run to a number of lines.
 
intended use of the object class.  This can run to a number of lines.
 
 
The ASN1OCMacro field should follow the definition of the object
 
The ASN1OCMacro field should follow the definition of the object
 
class macro as specified in X.501.  The above example shows the main
 
class macro as specified in X.501.  The above example shows the main
 
features.  There are many more examples which can studied in the
 
features.  There are many more examples which can studied in the
 
section defining the Pilot Object Classes.
 
section defining the Pilot Object Classes.
 +
4.2.  Attribute type proforma
 +
This section gives an example completed proforma for a new attribute
 +
type, hue (one of the attribute types in the alcoholic drink object
  
=== Attribute type proforma ===
 
  
This section gives an example completed proforma for a new attribute
 
type, hue (one of the attribute types in the alcoholic drink object
 
  
  
Line 271: Line 230:
  
 
class).
 
class).
 
 
   Attribute Type: Hue
 
   Attribute Type: Hue
 
 
   Description: The Hue attribute type specifies the hue of
 
   Description: The Hue attribute type specifies the hue of
 
   an object.  (Note that a description may run to several
 
   an object.  (Note that a description may run to several
 
   lines.)
 
   lines.)
 
 
   OCMust:
 
   OCMust:
 
 
   OCMay: alcoholicDrink
 
   OCMay: alcoholicDrink
 
 
   ASN1ATMacro:hue ATTRIBUTE
 
   ASN1ATMacro:hue ATTRIBUTE
 
       WITH ATTRIBUTE SYNTAX
 
       WITH ATTRIBUTE SYNTAX
 
           caseIgnoreStringSyntax
 
           caseIgnoreStringSyntax
 
           (SIZE (1 .. ub-hue))
 
           (SIZE (1 .. ub-hue))
 
 
   ub-hue INTEGER ::= 256
 
   ub-hue INTEGER ::= 256
 
 
An attribute type description consists of five fields, separated by
 
An attribute type description consists of five fields, separated by
 
blank lines.  The keywords Attribute Type, Description, OCMust, OCMay
 
blank lines.  The keywords Attribute Type, Description, OCMust, OCMay
 
and ASN1ATMacro, and their suffixed colons, must be included exactly
 
and ASN1ATMacro, and their suffixed colons, must be included exactly
 
as above.
 
as above.
 
 
The Attribute Type field should be used for a textual description of
 
The Attribute Type field should be used for a textual description of
 
the attribute type.  This will be at most three or four words.
 
the attribute type.  This will be at most three or four words.
 
 
The Description field should contain some explanatory text about the
 
The Description field should contain some explanatory text about the
 
intended use of the attribute type.  This can run to a number of
 
intended use of the attribute type.  This can run to a number of
 
lines.
 
lines.
 
 
The OCMust field should contain a comma-separated list of object
 
The OCMust field should contain a comma-separated list of object
 
classes for which this attribute is mandatory.
 
classes for which this attribute is mandatory.
 
 
The OCMay field should contain a comma-separated list of object
 
The OCMay field should contain a comma-separated list of object
 
classes for which this attribute is optional.
 
classes for which this attribute is optional.
 
 
The ASN1ATMacro field should follow the definition of the attribute
 
The ASN1ATMacro field should follow the definition of the attribute
 
macro as specified in X.501. The above example shows some of the
 
macro as specified in X.501. The above example shows some of the
 
features.  In particular, please note the format for specifying size
 
features.  In particular, please note the format for specifying size
 
constraints.
 
constraints.
 
+
== Integrating groups of object classes and attribute types. ==
== Integrating groups of object classes and attribute types. ==
 
 
 
 
This section describes two mechanisms that may be employed to allow
 
This section describes two mechanisms that may be employed to allow
 
the integration of a substantial number of new object classes and
 
the integration of a substantial number of new object classes and
 
attribute types into the schema.
 
attribute types into the schema.
 +
 +
  
  
Line 329: Line 276:
 
pilot.  Such a transition will be made if the following conditions
 
pilot.  Such a transition will be made if the following conditions
 
hold:
 
hold:
 
 
   - The definitions are well structured: i.e., they are not
 
   - The definitions are well structured: i.e., they are not
 
     scattered over a multiplicity of object identifier subtrees.
 
     scattered over a multiplicity of object identifier subtrees.
 
 
   - The definitions are in use at a number of sites, and having
 
   - The definitions are in use at a number of sites, and having
 
     to adopt new object identifiers would be unnecessarily
 
     to adopt new object identifiers would be unnecessarily
 
     disruptive.
 
     disruptive.
 
 
A second mechanism allows for the allocation of an object subtree for
 
A second mechanism allows for the allocation of an object subtree for
 
a group of new definitions.  A pilotGroups object identifier has been
 
a group of new definitions.  A pilotGroups object identifier has been
Line 344: Line 288:
 
experimentation and should simplify both the management and the
 
experimentation and should simplify both the management and the
 
coherence of the pilot's object identifiers.
 
coherence of the pilot's object identifiers.
 
 
In both cases, the object classes, attribute types and syntaxes
 
In both cases, the object classes, attribute types and syntaxes
 
should be defined and described in an RFC.  It is suggested that such
 
should be defined and described in an RFC.  It is suggested that such
Line 350: Line 293:
 
class and attribute type definitions.  A reference will be given in
 
class and attribute type definitions.  A reference will be given in
 
this schema to the document containing the definitions.
 
this schema to the document containing the definitions.
 
+
== Removing "old" object classes and attribute types. ==
== Removing "old" object classes and attribute types. ==
 
 
 
 
It is also important that object classes and attribute types which
 
It is also important that object classes and attribute types which
 
are no longer used or useful are removed from the schema.  Some
 
are no longer used or useful are removed from the schema.  Some
Line 361: Line 302:
 
possibility is that newer, more specific definitions obviate the
 
possibility is that newer, more specific definitions obviate the
 
original definitions.
 
original definitions.
 
 
Two things are essential.  First, it is crucial that "old"
 
Two things are essential.  First, it is crucial that "old"
 
definitions are retired as gracefully as possible.  The intention to
 
definitions are retired as gracefully as possible.  The intention to
Line 370: Line 310:
 
that they make the transition to new, alternative definitions in the
 
that they make the transition to new, alternative definitions in the
 
interim.
 
interim.
 +
 +
  
  
Line 384: Line 326:
 
for additions, an aggrieved user can "go to arbitration" by
 
for additions, an aggrieved user can "go to arbitration" by
 
initiating a discussion on the [email protected] mail list.
 
initiating a discussion on the [email protected] mail list.
 
+
== Object Identifiers ==
== Object Identifiers ==
 
 
 
 
Some additional object identifiers are defined for this schema.
 
Some additional object identifiers are defined for this schema.
 
These are also reproduced in Appendix C.
 
These are also reproduced in Appendix C.
 
 
   data OBJECT IDENTIFIER ::= {ccitt 9}
 
   data OBJECT IDENTIFIER ::= {ccitt 9}
 
   pss OBJECT IDENTIFIER ::= {data 2342}
 
   pss OBJECT IDENTIFIER ::= {data 2342}
 
   ucl OBJECT IDENTIFIER ::= {pss 19200300}
 
   ucl OBJECT IDENTIFIER ::= {pss 19200300}
 
   pilot OBJECT IDENTIFIER ::= {ucl 100}
 
   pilot OBJECT IDENTIFIER ::= {ucl 100}
 
 
   pilotAttributeType OBJECT IDENTIFIER ::= {pilot 1}
 
   pilotAttributeType OBJECT IDENTIFIER ::= {pilot 1}
 
   pilotAttributeSyntax OBJECT IDENTIFIER ::= {pilot 3}
 
   pilotAttributeSyntax OBJECT IDENTIFIER ::= {pilot 3}
 
   pilotObjectClass OBJECT IDENTIFIER ::= {pilot 4}
 
   pilotObjectClass OBJECT IDENTIFIER ::= {pilot 4}
 
   pilotGroups OBJECT IDENTIFIER ::= {pilot 10}
 
   pilotGroups OBJECT IDENTIFIER ::= {pilot 10}
 
 
   iA5StringSyntax OBJECT IDENTIFIER ::= {pilotAttributeSyntax 4}
 
   iA5StringSyntax OBJECT IDENTIFIER ::= {pilotAttributeSyntax 4}
 
   caseIgnoreIA5StringSyntax OBJECT IDENTIFIER ::=
 
   caseIgnoreIA5StringSyntax OBJECT IDENTIFIER ::=
 
                                         {pilotAttributeSyntax 5}
 
                                         {pilotAttributeSyntax 5}
 
+
== Object Classes ==
== Object Classes ==
+
8.1.  X.500 standard object classes
 
 
=== X.500 standard object classes ===
 
 
 
 
A number of generally useful object classes are defined in X.521, and
 
A number of generally useful object classes are defined in X.521, and
 
these are supported.  Refer to that document for descriptions of the
 
these are supported.  Refer to that document for descriptions of the
 
suggested usage of these object classes.  The ASN.1 for these object
 
suggested usage of these object classes.  The ASN.1 for these object
 
classes is reproduced for completeness in Appendix C.
 
classes is reproduced for completeness in Appendix C.
 
+
8.2.  X.400 standard object classes
=== X.400 standard object classes ===
 
 
 
 
A number of object classes defined in X.400 are supported.  Refer to
 
A number of object classes defined in X.400 are supported.  Refer to
 
X.402 for descriptions of the usage of these object classes.  The
 
X.402 for descriptions of the usage of these object classes.  The
 
ASN.1 for these object classes is reproduced for completeness in
 
ASN.1 for these object classes is reproduced for completeness in
 
Appendix C.
 
Appendix C.
 +
8.3.  COSINE/Internet object classes
 +
This section attempts to fuse together the object classes designed
 +
for use in the COSINE and Internet pilot activities.  Descriptions
  
=== COSINE/Internet object classes ===
 
  
This section attempts to fuse together the object classes designed
 
for use in the COSINE and Internet pilot activities.  Descriptions
 
  
  
Line 431: Line 363:
 
are given of the suggested usage of these object classes.  The ASN.1
 
are given of the suggested usage of these object classes.  The ASN.1
 
for these object classes is also reproduced in Appendix C.
 
for these object classes is also reproduced in Appendix C.
 
+
8.3.1.  Pilot Object
==== Pilot Object ====
 
 
 
 
The PilotObject object class is used as a sub-class to allow some
 
The PilotObject object class is used as a sub-class to allow some
 
common, useful attributes to be assigned to entries of all other
 
common, useful attributes to be assigned to entries of all other
 
object classes.
 
object classes.
 
 
   pilotObject OBJECT-CLASS
 
   pilotObject OBJECT-CLASS
 
       SUBCLASS OF top
 
       SUBCLASS OF top
Line 450: Line 379:
 
           audio}
 
           audio}
 
   ::= {pilotObjectClass 3}
 
   ::= {pilotObjectClass 3}
 
+
8.3.2.  Pilot Person
==== Pilot Person ====
 
 
 
 
The PilotPerson object class is used as a sub-class of person, to
 
The PilotPerson object class is used as a sub-class of person, to
 
allow the use of a number of additional attributes to be assigned to
 
allow the use of a number of additional attributes to be assigned to
 
entries of object class person.
 
entries of object class person.
 
 
   pilotPerson OBJECT-CLASS
 
   pilotPerson OBJECT-CLASS
 
       SUBCLASS OF person
 
       SUBCLASS OF person
Line 477: Line 403:
 
                   pagerTelephoneNumber,
 
                   pagerTelephoneNumber,
 
                   organizationalStatus,
 
                   organizationalStatus,
 +
 +
  
  
Line 485: Line 413:
 
                   personalSignature}
 
                   personalSignature}
 
   ::= {pilotObjectClass 4}
 
   ::= {pilotObjectClass 4}
 
+
8.3.3.  Account
==== Account ====
 
 
 
 
The Account object class is used to define entries representing
 
The Account object class is used to define entries representing
 
computer accounts.  The userid attribute should be used for naming
 
computer accounts.  The userid attribute should be used for naming
 
entries of this object class.
 
entries of this object class.
 
 
   account OBJECT-CLASS
 
   account OBJECT-CLASS
 
       SUBCLASS OF top
 
       SUBCLASS OF top
Line 504: Line 429:
 
           host}
 
           host}
 
   ::= {pilotObjectClass 5}
 
   ::= {pilotObjectClass 5}
 
+
8.3.4.  Document
==== Document ====
 
 
 
 
The Document object class is used to define entries which represent
 
The Document object class is used to define entries which represent
 
documents.
 
documents.
 
 
   document OBJECT-CLASS
 
   document OBJECT-CLASS
 
       SUBCLASS OF top
 
       SUBCLASS OF top
Line 535: Line 457:
  
  
==== Room ====
 
  
 +
 +
8.3.5.  Room
 
The Room object class is used to define entries representing rooms.
 
The Room object class is used to define entries representing rooms.
 
The commonName attribute should be used for naming pentries of this
 
The commonName attribute should be used for naming pentries of this
 
object class.
 
object class.
 
 
   room OBJECT-CLASS
 
   room OBJECT-CLASS
 
       SUBCLASS OF top
 
       SUBCLASS OF top
Line 551: Line 473:
 
           telephoneNumber}
 
           telephoneNumber}
 
   ::= {pilotObjectClass 7}
 
   ::= {pilotObjectClass 7}
 
+
8.3.6.  Document Series
==== Document Series ====
 
 
 
 
The Document Series object class is used to define an entry which
 
The Document Series object class is used to define an entry which
 
represents a series of documents (e.g., The Request For Comments
 
represents a series of documents (e.g., The Request For Comments
 
papers).
 
papers).
 
 
   documentSeries OBJECT-CLASS
 
   documentSeries OBJECT-CLASS
 
       SUBCLASS OF top
 
       SUBCLASS OF top
Line 570: Line 489:
 
           organizationalUnitName}
 
           organizationalUnitName}
 
   ::= {pilotObjectClass 9}
 
   ::= {pilotObjectClass 9}
 
+
8.3.7.  Domain
==== Domain ====
 
 
 
 
The Domain object class is used to define entries which represent DNS
 
The Domain object class is used to define entries which represent DNS
 
or NRS domains.  The domainComponent attribute should be used for
 
or NRS domains.  The domainComponent attribute should be used for
 
naming entries of this object class.  The usage of this object class
 
naming entries of this object class.  The usage of this object class
 
is described in more detail in [3].
 
is described in more detail in [3].
 
 
   domain OBJECT-CLASS
 
   domain OBJECT-CLASS
 
       SUBCLASS OF top
 
       SUBCLASS OF top
Line 583: Line 499:
 
           domainComponent}
 
           domainComponent}
 
       MAY CONTAIN {
 
       MAY CONTAIN {
 +
 +
  
  
Line 592: Line 510:
 
           organizationalAttributeSet}
 
           organizationalAttributeSet}
 
   ::= {pilotObjectClass 13}
 
   ::= {pilotObjectClass 13}
 
+
8.3.8.  RFC822 Local Part
==== RFC822 Local Part ====
 
 
 
 
The RFC822 Local Part object class is used to define entries which
 
The RFC822 Local Part object class is used to define entries which
 
represent the local part of RFC822 mail addresses.  This treats this
 
represent the local part of RFC822 mail addresses.  This treats this
 
part of an RFC822 address as a domain.  The usage of this object
 
part of an RFC822 address as a domain.  The usage of this object
 
class is described in more detail in [3].
 
class is described in more detail in [3].
 
 
   rFC822localPart OBJECT-CLASS
 
   rFC822localPart OBJECT-CLASS
 
       SUBCLASS OF domain
 
       SUBCLASS OF domain
Line 611: Line 526:
 
           telecommunicationAttributeSet}
 
           telecommunicationAttributeSet}
 
   ::= {pilotObjectClass 14}
 
   ::= {pilotObjectClass 14}
 
+
8.3.9.  DNS Domain
==== DNS Domain ====
 
 
 
 
The DNS Domain (Domain NameServer) object class is used to define
 
The DNS Domain (Domain NameServer) object class is used to define
 
entries for DNS domains.  The usage of this object class is described
 
entries for DNS domains.  The usage of this object class is described
 
in more detail in [3].
 
in more detail in [3].
 
 
   dNSDomain OBJECT-CLASS
 
   dNSDomain OBJECT-CLASS
 
       SUBCLASS OF domain
 
       SUBCLASS OF domain
Line 628: Line 540:
 
           CNAMERecord}
 
           CNAMERecord}
 
   ::= {pilotObjectClass 15}
 
   ::= {pilotObjectClass 15}
 
+
8.3.10.  Domain Related Object
==== Domain Related Object ====
 
 
 
 
The Domain Related Object object class is used to define entries
 
The Domain Related Object object class is used to define entries
 
which represent DNS/NRS domains which are "equivalent" to an X.500
 
which represent DNS/NRS domains which are "equivalent" to an X.500
 
domain: e.g., an organisation or organisational unit.  The usage of
 
domain: e.g., an organisation or organisational unit.  The usage of
 
this object class is described in more detail in [3].
 
this object class is described in more detail in [3].
 +
 +
  
  
Line 646: Line 558:
 
           associatedDomain}
 
           associatedDomain}
 
   ::= {pilotObjectClass 17}
 
   ::= {pilotObjectClass 17}
 
+
8.3.11.  Friendly Country
==== Friendly Country ====
 
 
 
 
The Friendly Country object class is used to define country entries
 
The Friendly Country object class is used to define country entries
 
in the DIT.  The object class is used to allow friendlier naming of
 
in the DIT.  The object class is used to allow friendlier naming of
Line 654: Line 564:
 
attribute of object class country, countryName, has to be a 2 letter
 
attribute of object class country, countryName, has to be a 2 letter
 
string defined in ISO 3166.
 
string defined in ISO 3166.
 
 
   friendlyCountry OBJECT-CLASS
 
   friendlyCountry OBJECT-CLASS
 
       SUBCLASS OF country
 
       SUBCLASS OF country
Line 660: Line 569:
 
           friendlyCountryName}
 
           friendlyCountryName}
 
   ::= {pilotObjectClass 18}
 
   ::= {pilotObjectClass 18}
 
+
8.3.12.  Simple Security Object
==== Simple Security Object ====
 
 
 
 
The Simple Security Object object class is used to allow an entry to
 
The Simple Security Object object class is used to allow an entry to
 
have a userPassword attribute when an entry's principal object
 
have a userPassword attribute when an entry's principal object
 
classes do not allow userPassword as an attribute type.
 
classes do not allow userPassword as an attribute type.
 
 
   simpleSecurityObject OBJECT-CLASS
 
   simpleSecurityObject OBJECT-CLASS
 
       SUBCLASS OF top
 
       SUBCLASS OF top
Line 672: Line 578:
 
           userPassword }
 
           userPassword }
 
   ::= {pilotObjectClass 19}
 
   ::= {pilotObjectClass 19}
 
+
8.3.13.  Pilot Organization
==== Pilot Organization ====
 
 
 
 
The PilotOrganization object class is used as a sub-class of
 
The PilotOrganization object class is used as a sub-class of
 
organization and organizationalUnit to allow a number of additional
 
organization and organizationalUnit to allow a number of additional
 
attributes to be assigned to entries of object classes organization
 
attributes to be assigned to entries of object classes organization
 
and organizationalUnit.
 
and organizationalUnit.
 
 
   pilotOrganization OBJECT-CLASS
 
   pilotOrganization OBJECT-CLASS
 
       SUBCLASS OF organization, organizationalUnit
 
       SUBCLASS OF organization, organizationalUnit
Line 694: Line 597:
  
  
==== Pilot DSA ====
 
  
 +
 +
8.3.14.  Pilot DSA
 
The PilotDSA object class is used as a sub-class of the dsa object
 
The PilotDSA object class is used as a sub-class of the dsa object
 
class to allow additional attributes to be assigned to entries for
 
class to allow additional attributes to be assigned to entries for
 
DSAs.
 
DSAs.
 
 
   pilotDSA OBJECT-CLASS
 
   pilotDSA OBJECT-CLASS
 
       SUBCLASS OF dsa
 
       SUBCLASS OF dsa
Line 705: Line 608:
 
           dSAQuality}
 
           dSAQuality}
 
   ::= {pilotObjectClass 21}
 
   ::= {pilotObjectClass 21}
 
+
8.3.15.  Quality Labelled Data
==== Quality Labelled Data ====
 
 
 
 
The Quality Labelled Data object class is used to allow the
 
The Quality Labelled Data object class is used to allow the
 
assignment of the data quality attributes to subtrees in the DIT.
 
assignment of the data quality attributes to subtrees in the DIT.
 
 
See [8] for more details.
 
See [8] for more details.
 
 
   qualityLabelledData OBJECT-CLASS
 
   qualityLabelledData OBJECT-CLASS
 
       SUBCLASS OF top
 
       SUBCLASS OF top
Line 721: Line 620:
 
           subtreeMaximumQuality}
 
           subtreeMaximumQuality}
 
   ::= {pilotObjectClass 22}
 
   ::= {pilotObjectClass 22}
 
+
== Attribute Types ==
== Attribute Types ==
+
9.1.  X.500 standard attribute types
 
 
=== X.500 standard attribute types ===
 
 
 
 
A number of generally useful attribute types are defined in X.520,
 
A number of generally useful attribute types are defined in X.520,
 
and these are supported.  Refer to that document for descriptions of
 
and these are supported.  Refer to that document for descriptions of
 
the suggested usage of these attribute types.  The ASN.1 for these
 
the suggested usage of these attribute types.  The ASN.1 for these
 
attribute types is reproduced for completeness in Appendix C.
 
attribute types is reproduced for completeness in Appendix C.
 
+
9.2.  X.400 standard attribute types
=== X.400 standard attribute types ===
 
 
 
 
The standard X.400 attribute types are supported.  See X.402 for full
 
The standard X.400 attribute types are supported.  See X.402 for full
 
details.  The ASN.1 for these attribute types is reproduced in
 
details.  The ASN.1 for these attribute types is reproduced in
 
Appendix C.
 
Appendix C.
 
+
9.3.  COSINE/Internet attribute types
=== COSINE/Internet attribute types ===
 
 
 
 
This section describes all the attribute types defined for use in the
 
This section describes all the attribute types defined for use in the
 
COSINE and Internet pilots.  Descriptions are given as to the
 
COSINE and Internet pilots.  Descriptions are given as to the
Line 747: Line 639:
  
  
attribute types is reproduced in Appendix C.
 
  
==== Userid ====
 
  
 +
attribute types is reproduced in Appendix C.
 +
9.3.1.  Userid
 
The Userid attribute type specifies a computer system login name.
 
The Userid attribute type specifies a computer system login name.
 
 
   userid ATTRIBUTE
 
   userid ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 758: Line 649:
 
           (SIZE (1 .. ub-user-identifier))
 
           (SIZE (1 .. ub-user-identifier))
 
   ::= {pilotAttributeType 1}
 
   ::= {pilotAttributeType 1}
 
+
9.3.2.  Text Encoded O/R Address
==== Text Encoded O/R Address ====
 
 
 
 
The Text Encoded O/R Address attribute type specifies a text encoding
 
The Text Encoded O/R Address attribute type specifies a text encoding
of an X.400 O/R address, as specified in [[RFC987|RFC 987]].  The use of this
+
of an X.400 O/R address, as specified in RFC 987.  The use of this
 
attribute is deprecated as the attribute is intended for interim use
 
attribute is deprecated as the attribute is intended for interim use
 
only.  This attribute will be the first candidate for the attribute
 
only.  This attribute will be the first candidate for the attribute
 
expiry mechanisms!
 
expiry mechanisms!
 
 
   textEncodedORAddress ATTRIBUTE
 
   textEncodedORAddress ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 772: Line 660:
 
       (SIZE (1 .. ub-text-encoded-or-address))
 
       (SIZE (1 .. ub-text-encoded-or-address))
 
   ::= {pilotAttributeType 2}
 
   ::= {pilotAttributeType 2}
 
+
9.3.3.  RFC 822 Mailbox
==== RFC 822 Mailbox ====
 
 
 
 
The RFC822 Mailbox attribute type specifies an electronic mailbox
 
The RFC822 Mailbox attribute type specifies an electronic mailbox
attribute following the syntax specified in [[RFC822|RFC 822]].  Note that this
+
attribute following the syntax specified in RFC 822.  Note that this
 
attribute should not be used for greybook or other non-Internet order
 
attribute should not be used for greybook or other non-Internet order
 
mailboxes.
 
mailboxes.
 
 
   rfc822Mailbox ATTRIBUTE
 
   rfc822Mailbox ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 785: Line 670:
 
           (SIZE (1 .. ub-rfc822-mailbox))
 
           (SIZE (1 .. ub-rfc822-mailbox))
 
   ::= {pilotAttributeType 3}
 
   ::= {pilotAttributeType 3}
 
+
9.3.4.  Information
==== Information ====
 
 
 
 
The Information attribute type specifies any general information
 
The Information attribute type specifies any general information
 
pertinent to an object.  It is recommended that specific usage of
 
pertinent to an object.  It is recommended that specific usage of
 
this attribute type is avoided, and that specific requirements are
 
this attribute type is avoided, and that specific requirements are
 
met by other (possibly additional) attribute types.
 
met by other (possibly additional) attribute types.
 
 
   info ATTRIBUTE
 
   info ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 +
 +
  
  
Line 803: Line 687:
 
           (SIZE (1 .. ub-information))
 
           (SIZE (1 .. ub-information))
 
   ::= {pilotAttributeType 4}
 
   ::= {pilotAttributeType 4}
 
+
9.3.5.  Favourite Drink
==== Favourite Drink ====
 
 
 
 
The Favourite Drink attribute type specifies the favourite drink of
 
The Favourite Drink attribute type specifies the favourite drink of
 
an object (or person).
 
an object (or person).
 
 
   favouriteDrink ATTRIBUTE
 
   favouriteDrink ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 814: Line 695:
 
           (SIZE (1 .. ub-favourite-drink))
 
           (SIZE (1 .. ub-favourite-drink))
 
   ::= {pilotAttributeType 5}
 
   ::= {pilotAttributeType 5}
 
+
9.3.6.  Room Number
==== Room Number ====
 
 
 
 
The Room Number attribute type specifies the room number of an
 
The Room Number attribute type specifies the room number of an
 
object.  Note that the commonName attribute should be used for naming
 
object.  Note that the commonName attribute should be used for naming
 
room objects.
 
room objects.
 
 
   roomNumber ATTRIBUTE
 
   roomNumber ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 826: Line 704:
 
           (SIZE (1 .. ub-room-number))
 
           (SIZE (1 .. ub-room-number))
 
   ::= {pilotAttributeType 6}
 
   ::= {pilotAttributeType 6}
 
+
9.3.7.  Photo
==== Photo ====
 
 
 
 
The Photo attribute type specifies a "photograph" for an object.
 
The Photo attribute type specifies a "photograph" for an object.
 
This should be encoded in G3 fax as explained in recommendation T.4,
 
This should be encoded in G3 fax as explained in recommendation T.4,
 
with an ASN.1 wrapper to make it compatible with an X.400 BodyPart as
 
with an ASN.1 wrapper to make it compatible with an X.400 BodyPart as
 
defined in X.420.
 
defined in X.420.
 
 
   IMPORT  G3FacsimileBodyPart  FROM  {  mhs-motis  ipms  modules
 
   IMPORT  G3FacsimileBodyPart  FROM  {  mhs-motis  ipms  modules
 
   information-objects }
 
   information-objects }
 
 
   photo ATTRIBUTE
 
   photo ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 853: Line 727:
  
  
==== User Class ====
 
  
 +
 +
9.3.8.  User Class
 
The User Class attribute type specifies a category of computer user.
 
The User Class attribute type specifies a category of computer user.
 
The semantics placed on this attribute are for local interpretation.
 
The semantics placed on this attribute are for local interpretation.
Line 861: Line 736:
 
organizationalStatus attribute may now often be preferred as it makes
 
organizationalStatus attribute may now often be preferred as it makes
 
no distinction between computer users and others.
 
no distinction between computer users and others.
 
 
   userClass ATTRIBUTE
 
   userClass ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 867: Line 741:
 
           (SIZE (1 .. ub-user-class))
 
           (SIZE (1 .. ub-user-class))
 
   ::= {pilotAttributeType 8}
 
   ::= {pilotAttributeType 8}
 
+
9.3.9.  Host
==== Host ====
 
 
 
 
The Host attribute type specifies a host computer.
 
The Host attribute type specifies a host computer.
 
 
   host ATTRIBUTE
 
   host ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 877: Line 748:
 
           (SIZE (1 .. ub-host))
 
           (SIZE (1 .. ub-host))
 
   ::= {pilotAttributeType 9}
 
   ::= {pilotAttributeType 9}
 
+
9.3.10.  Manager
==== Manager ====
 
 
 
 
The Manager attribute type specifies the manager of an object
 
The Manager attribute type specifies the manager of an object
 
represented by an entry.
 
represented by an entry.
 
 
   manager ATTRIBUTE
 
   manager ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           distinguishedNameSyntax
 
           distinguishedNameSyntax
 
   ::= {pilotAttributeType 10}
 
   ::= {pilotAttributeType 10}
 
+
9.3.11.  Document Identifier
==== Document Identifier ====
 
 
 
 
The Document Identifier attribute type specifies a unique identifier
 
The Document Identifier attribute type specifies a unique identifier
 
for a document.
 
for a document.
 
 
   documentIdentifier ATTRIBUTE
 
   documentIdentifier ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 906: Line 771:
  
  
==== Document Title ====
 
  
 +
 +
9.3.12.  Document Title
 
The Document Title attribute type specifies the title of a document.
 
The Document Title attribute type specifies the title of a document.
 
 
   documentTitle ATTRIBUTE
 
   documentTitle ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 915: Line 780:
 
       (SIZE (1 .. ub-document-title))
 
       (SIZE (1 .. ub-document-title))
 
   ::= {pilotAttributeType 12}
 
   ::= {pilotAttributeType 12}
 
+
9.3.13.  Document Version
==== Document Version ====
 
 
 
 
The Document Version attribute type specifies the version number of a
 
The Document Version attribute type specifies the version number of a
 
document.
 
document.
 
 
   documentVersion ATTRIBUTE
 
   documentVersion ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 926: Line 788:
 
           (SIZE (1 .. ub-document-version))
 
           (SIZE (1 .. ub-document-version))
 
   ::= {pilotAttributeType 13}
 
   ::= {pilotAttributeType 13}
 
+
9.3.14.  Document Author
==== Document Author ====
 
 
 
 
The Document Author attribute type specifies the distinguished name
 
The Document Author attribute type specifies the distinguished name
 
of the author of a document.
 
of the author of a document.
 
 
   documentAuthor ATTRIBUTE
 
   documentAuthor ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           distinguishedNameSyntax
 
           distinguishedNameSyntax
 
   ::= {pilotAttributeType 14}
 
   ::= {pilotAttributeType 14}
 
+
9.3.15.  Document Location
==== Document Location ====
 
 
 
 
The Document Location attribute type specifies the location of the
 
The Document Location attribute type specifies the location of the
 
document original.
 
document original.
 
 
   documentLocation ATTRIBUTE
 
   documentLocation ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 947: Line 803:
 
           (SIZE (1 .. ub-document-location))
 
           (SIZE (1 .. ub-document-location))
 
   ::= {pilotAttributeType 15}
 
   ::= {pilotAttributeType 15}
 
+
9.3.16.  Home Telephone Number
==== Home Telephone Number ====
 
 
 
 
The Home Telephone Number attribute type specifies a home telephone
 
The Home Telephone Number attribute type specifies a home telephone
 
number associated with a person.  Attribute values should follow the
 
number associated with a person.  Attribute values should follow the
 
agreed format for international telephone numbers: i.e., "+44 71 123
 
agreed format for international telephone numbers: i.e., "+44 71 123
 
4567".
 
4567".
 +
 +
  
  
Line 963: Line 819:
 
           telephoneNumberSyntax
 
           telephoneNumberSyntax
 
   ::= {pilotAttributeType 20}
 
   ::= {pilotAttributeType 20}
 
+
9.3.17.  Secretary
==== Secretary ====
 
 
 
 
The Secretary attribute type specifies the secretary of a person.
 
The Secretary attribute type specifies the secretary of a person.
 
The attribute value for Secretary is a distinguished name.
 
The attribute value for Secretary is a distinguished name.
 
 
   secretary ATTRIBUTE
 
   secretary ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           distinguishedNameSyntax
 
           distinguishedNameSyntax
 
   ::= {pilotAttributeType 21}
 
   ::= {pilotAttributeType 21}
 
+
9.3.18.  Other Mailbox
==== Other Mailbox ====
+
The Other Mailbox attribute type specifies values for electronic
 
 
The Other Mailbox attribute type specifies values for electronic
 
 
mailbox types other than X.400 and rfc822.
 
mailbox types other than X.400 and rfc822.
 
 
   otherMailbox ATTRIBUTE
 
   otherMailbox ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 986: Line 836:
 
           }
 
           }
 
   ::= {pilotAttributeType 22}
 
   ::= {pilotAttributeType 22}
 
+
9.3.19.  Last Modified Time
==== Last Modified Time ====
 
 
 
 
The Last Modified Time attribute type specifies the last time, in UTC
 
The Last Modified Time attribute type specifies the last time, in UTC
 
time, that an entry was modified.  Ideally, this attribute should be
 
time, that an entry was modified.  Ideally, this attribute should be
 
maintained by the DSA.
 
maintained by the DSA.
 
 
   lastModifiedTime ATTRIBUTE
 
   lastModifiedTime ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           uTCTimeSyntax
 
           uTCTimeSyntax
 
   ::= {pilotAttributeType 23}
 
   ::= {pilotAttributeType 23}
 
+
9.3.20.  Last Modified By
==== Last Modified By ====
 
 
 
 
The Last Modified By attribute specifies the distinguished name of
 
The Last Modified By attribute specifies the distinguished name of
 
the last user to modify the associated entry.  Ideally, this
 
the last user to modify the associated entry.  Ideally, this
 
attribute should be maintained by the DSA.
 
attribute should be maintained by the DSA.
 
 
   lastModifiedBy ATTRIBUTE
 
   lastModifiedBy ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 1,012: Line 856:
  
  
  ::= {pilotAttributeType 24}
 
  
==== Domain Component ====
 
  
 +
  ::= {pilotAttributeType 24}
 +
9.3.21.  Domain Component
 
The Domain Component attribute type specifies a DNS/NRS domain.  For
 
The Domain Component attribute type specifies a DNS/NRS domain.  For
 
example, "uk" or "ac".
 
example, "uk" or "ac".
 
 
   domainComponent ATTRIBUTE
 
   domainComponent ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 1,024: Line 867:
 
           SINGLE VALUE
 
           SINGLE VALUE
 
   ::= {pilotAttributeType 25}
 
   ::= {pilotAttributeType 25}
 
 
  9.3.22.  DNS ARecord
 
  9.3.22.  DNS ARecord
 
 
The A Record attribute type specifies a type A (Address) DNS resource
 
The A Record attribute type specifies a type A (Address) DNS resource
 
record [6] [7].
 
record [6] [7].
 
 
   aRecord ATTRIBUTE
 
   aRecord ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           DNSRecordSyntax
 
           DNSRecordSyntax
 
   ::= {pilotAttributeType 26}
 
   ::= {pilotAttributeType 26}
 
+
9.3.23.  MX Record
==== MX Record ====
 
 
 
 
The MX Record attribute type specifies a type MX (Mail Exchange) DNS
 
The MX Record attribute type specifies a type MX (Mail Exchange) DNS
 
resource record [6] [7].
 
resource record [6] [7].
 
 
   mXRecord ATTRIBUTE
 
   mXRecord ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           DNSRecordSyntax
 
           DNSRecordSyntax
 
   ::= {pilotAttributeType 28}
 
   ::= {pilotAttributeType 28}
 
+
9.3.24.  NS Record
==== NS Record ====
 
 
 
 
The NS Record attribute type specifies an NS (Name Server) DNS
 
The NS Record attribute type specifies an NS (Name Server) DNS
 
resource record [6] [7].
 
resource record [6] [7].
 
 
   nSRecord ATTRIBUTE
 
   nSRecord ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           DNSRecordSyntax
 
           DNSRecordSyntax
 
   ::= {pilotAttributeType 29}
 
   ::= {pilotAttributeType 29}
 +
9.3.25.  SOA Record
 +
The SOA Record attribute type specifies a type SOA (Start of
 +
Authority) DNS resorce record [6] [7].
  
==== SOA Record ====
 
  
The SOA Record attribute type specifies a type SOA (Start of
 
Authority) DNS resorce record [6] [7].
 
  
  
Line 1,069: Line 903:
 
           DNSRecordSyntax
 
           DNSRecordSyntax
 
   ::= {pilotAttributeType 30}
 
   ::= {pilotAttributeType 30}
 
+
9.3.26.  CNAME Record
==== CNAME Record ====
 
 
 
 
The CNAME Record attribute type specifies a type CNAME (Canonical
 
The CNAME Record attribute type specifies a type CNAME (Canonical
 
Name) DNS resource record [6] [7].
 
Name) DNS resource record [6] [7].
 
 
   cNAMERecord ATTRIBUTE
 
   cNAMERecord ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           iA5StringSyntax
 
           iA5StringSyntax
 
   ::= {pilotAttributeType 31}
 
   ::= {pilotAttributeType 31}
 
+
9.3.27.  Associated Domain
==== Associated Domain ====
 
 
 
 
The Associated Domain attribute type specifies a DNS or NRS domain
 
The Associated Domain attribute type specifies a DNS or NRS domain
 
which is associated with an object in the DIT. For example, the entry
 
which is associated with an object in the DIT. For example, the entry
Line 1,088: Line 917:
 
domains should be represented in rfc822 order.  See [3] for more
 
domains should be represented in rfc822 order.  See [3] for more
 
details of usage of this attribute.
 
details of usage of this attribute.
 
 
   associatedDomain ATTRIBUTE
 
   associatedDomain ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           caseIgnoreIA5StringSyntax
 
           caseIgnoreIA5StringSyntax
 
   ::= {pilotAttributeType 37}
 
   ::= {pilotAttributeType 37}
 
+
9.3.28.  Associated Name
==== Associated Name ====
 
 
 
 
The Associated Name attribute type specifies an entry in the
 
The Associated Name attribute type specifies an entry in the
 
organisational DIT associated with a DNS/NRS domain.  See [3] for
 
organisational DIT associated with a DNS/NRS domain.  See [3] for
 
more details of usage of this attribute.
 
more details of usage of this attribute.
 
 
   associatedName ATTRIBUTE
 
   associatedName ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           distinguishedNameSyntax
 
           distinguishedNameSyntax
 
   ::= {pilotAttributeType 38}
 
   ::= {pilotAttributeType 38}
 
+
9.3.29.  Home postal address
==== Home postal address ====
 
 
 
 
The Home postal address attribute type specifies a home postal
 
The Home postal address attribute type specifies a home postal
 
address for an object.  This should be limited to up to 6 lines of 30
 
address for an object.  This should be limited to up to 6 lines of 30
 
characters each.
 
characters each.
 
 
   homePostalAddress ATTRIBUTE
 
   homePostalAddress ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 +
 +
  
  
Line 1,121: Line 945:
 
           MATCHES FOR EQUALITY
 
           MATCHES FOR EQUALITY
 
   ::= {pilotAttributeType 39}
 
   ::= {pilotAttributeType 39}
 
+
9.3.30.  Personal Title
==== Personal Title ====
 
 
 
 
The Personal Title attribute type specifies a personal title for a
 
The Personal Title attribute type specifies a personal title for a
 
person. Examples of personal titles are "Ms", "Dr", "Prof" and "Rev".
 
person. Examples of personal titles are "Ms", "Dr", "Prof" and "Rev".
 
 
   personalTitle ATTRIBUTE
 
   personalTitle ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 1,132: Line 953:
 
           (SIZE (1 .. ub-personal-title))
 
           (SIZE (1 .. ub-personal-title))
 
   ::= {pilotAttributeType 40}
 
   ::= {pilotAttributeType 40}
 
+
9.3.31.  Mobile Telephone Number
==== Mobile Telephone Number ====
 
 
 
 
The Mobile Telephone Number attribute type specifies a mobile
 
The Mobile Telephone Number attribute type specifies a mobile
 
telephone number associated with a person.  Attribute values should
 
telephone number associated with a person.  Attribute values should
 
follow the agreed format for international telephone numbers: i.e.,
 
follow the agreed format for international telephone numbers: i.e.,
 
"+44 71 123 4567".
 
"+44 71 123 4567".
 
 
   mobileTelephoneNumber ATTRIBUTE
 
   mobileTelephoneNumber ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           telephoneNumberSyntax
 
           telephoneNumberSyntax
 
   ::= {pilotAttributeType 41}
 
   ::= {pilotAttributeType 41}
 
+
9.3.32.  Pager Telephone Number
==== Pager Telephone Number ====
 
 
 
 
The Pager Telephone Number attribute type specifies a pager telephone
 
The Pager Telephone Number attribute type specifies a pager telephone
 
number for an object. Attribute values should follow the agreed
 
number for an object. Attribute values should follow the agreed
 
format for international telephone numbers: i.e., "+44 71 123 4567".
 
format for international telephone numbers: i.e., "+44 71 123 4567".
 
 
   pagerTelephoneNumber ATTRIBUTE
 
   pagerTelephoneNumber ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           telephoneNumberSyntax
 
           telephoneNumberSyntax
 
   ::= {pilotAttributeType 42}
 
   ::= {pilotAttributeType 42}
 
+
9.3.33.  Friendly Country Name
==== Friendly Country Name ====
 
 
 
 
The Friendly Country Name attribute type specifies names of countries
 
The Friendly Country Name attribute type specifies names of countries
 
in human readable format.  The standard attribute country name must
 
in human readable format.  The standard attribute country name must
 
be one of the two-letter codes defined in ISO 3166.
 
be one of the two-letter codes defined in ISO 3166.
 
 
   friendlyCountryName ATTRIBUTE
 
   friendlyCountryName ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 1,171: Line 983:
  
  
==== Unique Identifier ====
 
  
 +
 +
9.3.34.  Unique Identifier
 
The Unique Identifier attribute type specifies a "unique identifier"
 
The Unique Identifier attribute type specifies a "unique identifier"
 
for an object represented in the Directory.  The domain within which
 
for an object represented in the Directory.  The domain within which
Line 1,179: Line 992:
 
institution-wide payroll number.  For an organisational unit, it
 
institution-wide payroll number.  For an organisational unit, it
 
might be a department code.
 
might be a department code.
 
 
   uniqueIdentifier ATTRIBUTE
 
   uniqueIdentifier ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 1,185: Line 997:
 
           (SIZE (1 .. ub-unique-identifier))
 
           (SIZE (1 .. ub-unique-identifier))
 
   ::= {pilotAttributeType 44}
 
   ::= {pilotAttributeType 44}
 
+
9.3.35.  Organisational Status
==== Organisational Status ====
 
 
 
 
The Organisational Status attribute type specifies a category by
 
The Organisational Status attribute type specifies a category by
 
which a person is often referred to in an organisation.  Examples of
 
which a person is often referred to in an organisation.  Examples of
 
usage in academia might include undergraduate student, researcher,
 
usage in academia might include undergraduate student, researcher,
 
lecturer, etc.
 
lecturer, etc.
 
 
A Directory administrator should probably consider carefully the
 
A Directory administrator should probably consider carefully the
 
distinctions between this and the title and userClass attributes.
 
distinctions between this and the title and userClass attributes.
 
 
   organizationalStatus ATTRIBUTE
 
   organizationalStatus ATTRIBUTE
 
           WITH ATTRIBUTE-SYNTAX
 
           WITH ATTRIBUTE-SYNTAX
Line 1,201: Line 1,009:
 
           (SIZE (1 .. ub-organizational-status))
 
           (SIZE (1 .. ub-organizational-status))
 
   ::= {pilotAttributeType 45}
 
   ::= {pilotAttributeType 45}
 
+
9.3.36.  Janet Mailbox
==== Janet Mailbox ====
 
 
 
 
The Janet Mailbox attribute type specifies an electronic mailbox
 
The Janet Mailbox attribute type specifies an electronic mailbox
 
attribute following the syntax specified in the Grey Book of the
 
attribute following the syntax specified in the Grey Book of the
Line 1,210: Line 1,016:
 
Entries using this attribute MUST also include an rfc822Mailbox
 
Entries using this attribute MUST also include an rfc822Mailbox
 
attribute.
 
attribute.
 
 
   janetMailbox ATTRIBUTE
 
   janetMailbox ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 1,224: Line 1,029:
  
  
==== Mail Preference Option ====
 
  
 +
 +
9.3.37.  Mail Preference Option
 
An attribute to allow users to indicate a preference for inclusion of
 
An attribute to allow users to indicate a preference for inclusion of
 
their names on mailing lists (electronic or physical).  The absence
 
their names on mailing lists (electronic or physical).  The absence
Line 1,232: Line 1,038:
 
interpreted by anyone using the directory to derive mailing lists,
 
interpreted by anyone using the directory to derive mailing lists,
 
and its value respected.
 
and its value respected.
 
 
   mailPreferenceOption ATTRIBUTE
 
   mailPreferenceOption ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX ENUMERATED {
 
       WITH ATTRIBUTE-SYNTAX ENUMERATED {
Line 1,248: Line 1,053:
 
               }
 
               }
 
   ::= {pilotAttributeType 47}
 
   ::= {pilotAttributeType 47}
 
+
9.3.38.  Building Name
==== Building Name ====
 
 
 
 
The Building Name attribute type specifies the name of the building
 
The Building Name attribute type specifies the name of the building
 
where an organisation or organisational unit is based.
 
where an organisation or organisational unit is based.
 
 
   buildingName ATTRIBUTE
 
   buildingName ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 1,259: Line 1,061:
 
           (SIZE (1 .. ub-building-name))
 
           (SIZE (1 .. ub-building-name))
 
   ::= {pilotAttributeType 48}
 
   ::= {pilotAttributeType 48}
 
+
9.3.39.  DSA Quality
==== DSA Quality ====
 
 
 
 
The DSA Quality attribute type specifies the purported quality of a
 
The DSA Quality attribute type specifies the purported quality of a
 
DSA.  It allows a DSA manager to indicate the expected level of
 
DSA.  It allows a DSA manager to indicate the expected level of
 
availability of the DSA. See [8] for details of the syntax.
 
availability of the DSA. See [8] for details of the syntax.
 
 
   dSAQuality ATTRIBUTE
 
   dSAQuality ATTRIBUTE
 
           WITH ATTRIBUTE-SYNTAX DSAQualitySyntax
 
           WITH ATTRIBUTE-SYNTAX DSAQualitySyntax
Line 1,277: Line 1,076:
  
  
==== Single Level Quality ====
 
  
 +
 +
9.3.40.  Single Level Quality
 
The Single Level Quality attribute type specifies the purported data
 
The Single Level Quality attribute type specifies the purported data
 
quality at the level immediately below in the DIT.  See [8] for
 
quality at the level immediately below in the DIT.  See [8] for
 
details of the syntax.
 
details of the syntax.
 
 
   singleLevelQuality ATTRIBUTE
 
   singleLevelQuality ATTRIBUTE
 
           WITH ATTRIBUTE-SYNTAX DataQualitySyntax
 
           WITH ATTRIBUTE-SYNTAX DataQualitySyntax
 
           SINGLE VALUE
 
           SINGLE VALUE
 
   ::= {pilotAttributeType 50}
 
   ::= {pilotAttributeType 50}
 
+
9.3.41.  Subtree Minimum Quality
==== Subtree Minimum Quality ====
 
 
 
 
The Subtree Minimum Quality attribute type specifies the purported
 
The Subtree Minimum Quality attribute type specifies the purported
 
minimum data quality for a DIT subtree.  See [8] for more discussion
 
minimum data quality for a DIT subtree.  See [8] for more discussion
 
and details of the syntax.
 
and details of the syntax.
 
 
   subtreeMinimumQuality ATTRIBUTE
 
   subtreeMinimumQuality ATTRIBUTE
 
           WITH ATTRIBUTE-SYNTAX DataQualitySyntax
 
           WITH ATTRIBUTE-SYNTAX DataQualitySyntax
Line 1,299: Line 1,095:
 
             -- Defaults to singleLevelQuality
 
             -- Defaults to singleLevelQuality
 
   ::= {pilotAttributeType 51}
 
   ::= {pilotAttributeType 51}
 
+
9.3.42.  Subtree Maximum Quality
==== Subtree Maximum Quality ====
 
 
 
 
The Subtree Maximum Quality attribute type specifies the purported
 
The Subtree Maximum Quality attribute type specifies the purported
 
maximum data quality for a DIT subtree.  See [8] for more discussion
 
maximum data quality for a DIT subtree.  See [8] for more discussion
 
and details of the syntax.
 
and details of the syntax.
 
 
   subtreeMaximumQuality ATTRIBUTE
 
   subtreeMaximumQuality ATTRIBUTE
 
           WITH ATTRIBUTE-SYNTAX DataQualitySyntax
 
           WITH ATTRIBUTE-SYNTAX DataQualitySyntax
Line 1,311: Line 1,104:
 
             -- Defaults to singleLevelQuality
 
             -- Defaults to singleLevelQuality
 
   ::= {pilotAttributeType 52}
 
   ::= {pilotAttributeType 52}
 
+
9.3.43.  Personal Signature
==== Personal Signature ====
 
 
 
 
The Personal Signature attribute type allows for a representation of
 
The Personal Signature attribute type allows for a representation of
 
a person's signature.  This should be encoded in G3 fax as explained
 
a person's signature.  This should be encoded in G3 fax as explained
 
in recommendation T.4, with an ASN.1 wrapper to make it compatible
 
in recommendation T.4, with an ASN.1 wrapper to make it compatible
 
with an X.400 BodyPart as defined in X.420.
 
with an X.400 BodyPart as defined in X.420.
 
 
   IMPORT  G3FacsimileBodyPart  FROM  {  mhs-motis  ipms  modules
 
   IMPORT  G3FacsimileBodyPart  FROM  {  mhs-motis  ipms  modules
 
   information-objects }
 
   information-objects }
 
 
   personalSignature ATTRIBUTE
 
   personalSignature ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           CHOICE {
 
           CHOICE {
 +
 +
  
  
Line 1,334: Line 1,125:
 
       (SIZE (1 .. ub-personal-signature))
 
       (SIZE (1 .. ub-personal-signature))
 
   ::= {pilotAttributeType 53}
 
   ::= {pilotAttributeType 53}
 
+
9.3.44.  DIT Redirect
==== DIT Redirect ====
 
 
 
 
The DIT Redirect attribute type is used to indicate that the object
 
The DIT Redirect attribute type is used to indicate that the object
 
described by one entry now has a newer entry in the DIT.  The entry
 
described by one entry now has a newer entry in the DIT.  The entry
Line 1,343: Line 1,132:
 
changes his/her place of work, and thus acquires a new organisational
 
changes his/her place of work, and thus acquires a new organisational
 
DN.
 
DN.
 
 
   dITRedirect ATTRIBUTE
 
   dITRedirect ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 
           distinguishedNameSyntax
 
           distinguishedNameSyntax
 
   ::= {pilotAttributeType 54}
 
   ::= {pilotAttributeType 54}
 
+
9.3.45.  Audio
==== Audio ====
 
 
 
 
The Audio attribute type allows the storing of sounds in the
 
The Audio attribute type allows the storing of sounds in the
 
Directory.  The attribute uses a u-law encoded sound file as used by
 
Directory.  The attribute uses a u-law encoded sound file as used by
 
the "play" utility on a Sun 4.  This is an interim format.
 
the "play" utility on a Sun 4.  This is an interim format.
 
 
   audio ATTRIBUTE
 
   audio ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 1,360: Line 1,145:
 
       (SIZE (1 .. ub-audio))
 
       (SIZE (1 .. ub-audio))
 
   ::= {pilotAttributeType 55}
 
   ::= {pilotAttributeType 55}
 
+
9.3.46.  Publisher of Document
==== Publisher of Document ====
 
 
 
  
 
The Publisher of Document attribute is the person and/or organization
 
The Publisher of Document attribute is the person and/or organization
 
that published a document.
 
that published a document.
 
 
   documentPublisher ATTRIBUTE
 
   documentPublisher ATTRIBUTE
 
           WITH ATTRIBUTE SYNTAX caseIgnoreStringSyntax
 
           WITH ATTRIBUTE SYNTAX caseIgnoreStringSyntax
 
   ::= {pilotAttributeType 56}
 
   ::= {pilotAttributeType 56}
 
+
9.4.  Generally useful syntaxes
=== Generally useful syntaxes ===
 
 
 
 
   caseIgnoreIA5StringSyntax ATTRIBUTE-SYNTAX
 
   caseIgnoreIA5StringSyntax ATTRIBUTE-SYNTAX
 
           IA5String
 
           IA5String
 
           MATCHES FOR EQUALITY SUBSTRINGS
 
           MATCHES FOR EQUALITY SUBSTRINGS
 +
 +
  
  
Line 1,386: Line 1,168:
 
       IA5String
 
       IA5String
 
       MATCHES FOR EQUALITY SUBSTRINGS
 
       MATCHES FOR EQUALITY SUBSTRINGS
 
  
 
   -- Syntaxes to support the DNS attributes
 
   -- Syntaxes to support the DNS attributes
 
 
   DNSRecordSyntax ATTRIBUTE-SYNTAX
 
   DNSRecordSyntax ATTRIBUTE-SYNTAX
 
           IA5String
 
           IA5String
 
           MATCHES FOR EQUALITY
 
           MATCHES FOR EQUALITY
 
  
 
   NRSInformationSyntax ATTRIBUTE-SYNTAX
 
   NRSInformationSyntax ATTRIBUTE-SYNTAX
 
           NRSInformation
 
           NRSInformation
 
           MATCHES FOR EQUALITY
 
           MATCHES FOR EQUALITY
 
  
 
   NRSInformation ::=  SET {
 
   NRSInformation ::=  SET {
Line 1,408: Line 1,186:
 
           }
 
           }
  
 
+
9.5.  Upper bounds on length of attribute values
=== Upper bounds on length of attribute values ===
 
 
 
  
 
   ub-document-identifier INTEGER ::= 256
 
   ub-document-identifier INTEGER ::= 256
 
 
   ub-document-location INTEGER ::= 256
 
   ub-document-location INTEGER ::= 256
 
 
   ub-document-title INTEGER ::= 256
 
   ub-document-title INTEGER ::= 256
 
 
   ub-document-version INTEGER ::= 256
 
   ub-document-version INTEGER ::= 256
 
 
   ub-favourite-drink INTEGER ::= 256
 
   ub-favourite-drink INTEGER ::= 256
 
 
   ub-host INTEGER ::= 256
 
   ub-host INTEGER ::= 256
 
 
   ub-information INTEGER ::= 2048
 
   ub-information INTEGER ::= 2048
 
 
   ub-unique-identifier INTEGER ::= 256
 
   ub-unique-identifier INTEGER ::= 256
 +
  ub-personal-title INTEGER ::= 256
 +
  ub-photo INTEGER ::= 250000
  
  ub-personal-title INTEGER ::= 256
 
  
  ub-photo INTEGER ::= 250000
 
  
  
Line 1,437: Line 1,206:
  
 
   ub-rfc822-mailbox INTEGER ::= 256
 
   ub-rfc822-mailbox INTEGER ::= 256
 
 
   ub-room-number INTEGER ::= 256
 
   ub-room-number INTEGER ::= 256
 
 
   ub-text-or-address INTEGER ::= 256
 
   ub-text-or-address INTEGER ::= 256
 
 
   ub-user-class INTEGER ::= 256
 
   ub-user-class INTEGER ::= 256
 
 
   ub-user-identifier INTEGER ::= 256
 
   ub-user-identifier INTEGER ::= 256
 
 
   ub-organizational-status INTEGER ::= 256
 
   ub-organizational-status INTEGER ::= 256
 
 
   ub-janet-mailbox INTEGER ::= 256
 
   ub-janet-mailbox INTEGER ::= 256
 
 
   ub-building-name INTEGER ::= 256
 
   ub-building-name INTEGER ::= 256
 
 
   ub-personal-signature ::= 50000
 
   ub-personal-signature ::= 50000
 
 
   ub-audio INTEGER ::= 250000
 
   ub-audio INTEGER ::= 250000
 
 
References
 
References
 
 
   [1]  CCITT/ISO, "X.500, The Directory - overview of concepts,
 
   [1]  CCITT/ISO, "X.500, The Directory - overview of concepts,
 
       models and services, CCITT /ISO IS 9594.
 
       models and services, CCITT /ISO IS 9594.
 
 
   [2]  Kille, S., "The THORN and RARE X.500 Naming Architecture, in
 
   [2]  Kille, S., "The THORN and RARE X.500 Naming Architecture, in
 
       University College London, Department of Computer Science
 
       University College London, Department of Computer Science
 
       Research Note 89/48, May 1989.
 
       Research Note 89/48, May 1989.
 
+
   [3]  Kille, S., "X.500 and Domains", RFC 1279, University College
   [3]  Kille, S., "X.500 and Domains", [[RFC1279|RFC 1279]], University College
 
 
       London, November 1991.
 
       London, November 1991.
 
 
   [4]  Rose, M., "PSI/NYSERNet White Pages Pilot Project: Status
 
   [4]  Rose, M., "PSI/NYSERNet White Pages Pilot Project: Status
 
       Report", Technical Report 90-09-10-1, published by NYSERNet
 
       Report", Technical Report 90-09-10-1, published by NYSERNet
 
       Inc, 1990.
 
       Inc, 1990.
 
 
   [5]  Craigie, J., "UK Academic Community Directory Service Pilot
 
   [5]  Craigie, J., "UK Academic Community Directory Service Pilot
 
       Project, pp. 305-310 in Computer Networks and ISDN Systems
 
       Project, pp. 305-310 in Computer Networks and ISDN Systems
 
       17 (1989), published by North Holland.
 
       17 (1989), published by North Holland.
 
 
   [6]  Mockapetris, P., "Domain Names - Concepts and Facilities",
 
   [6]  Mockapetris, P., "Domain Names - Concepts and Facilities",
       [[RFC1034|RFC 1034]], USC/Information Sciences Institute, November 1987.
+
       RFC 1034, USC/Information Sciences Institute, November 1987.
 
 
 
   [7]  Mockapetris, P., "Domain Names - Implementation and
 
   [7]  Mockapetris, P., "Domain Names - Implementation and
       Specification, [[RFC1035|RFC 1035]], USC/Information Sciences Institute,
+
       Specification, RFC 1035, USC/Information Sciences Institute,
 
       November 1987.
 
       November 1987.
 +
  [8]  Kille, S., "Handling QOS (Quality of service) in the
 +
  
  [8]  Kille, S., "Handling QOS (Quality of service) in the
 
  
  
Line 1,490: Line 1,243:
  
 
       Directory," publication in process, March 1991.
 
       Directory," publication in process, March 1991.
 
 
APPENDIX A - Object Class and Attribute Type proformas
 
APPENDIX A - Object Class and Attribute Type proformas
 
 
These are specified in BNF.  First some useful definitions, common to
 
These are specified in BNF.  First some useful definitions, common to
 
both proformas.
 
both proformas.
 
 
   EOL ::= -- the end of line character(s)
 
   EOL ::= -- the end of line character(s)
 
 
   BlankLine ::= -- a line consisting solely of an EOL character
 
   BlankLine ::= -- a line consisting solely of an EOL character
 
 
   String ::= <anychar> | <String> <anychar>
 
   String ::= <anychar> | <String> <anychar>
 
 
   anychar ::= --any character occurring in general text, excluding
 
   anychar ::= --any character occurring in general text, excluding
 
               -- the end of line character
 
               -- the end of line character
 
 
   lString ::= <lowercase> <otherstring>
 
   lString ::= <lowercase> <otherstring>
 
 
   lowercase ::= [a-z]
 
   lowercase ::= [a-z]
 
 
   UString ::= <uppercase> <otherstring>
 
   UString ::= <uppercase> <otherstring>
 
 
   uppercase ::= [A-Z]
 
   uppercase ::= [A-Z]
 
 
   otherstring ::= <otherchar> | <otherstring> <otherchar>
 
   otherstring ::= <otherchar> | <otherstring> <otherchar>
 
 
   otherchar ::= <lowercase> | <uppercase> | <digit>
 
   otherchar ::= <lowercase> | <uppercase> | <digit>
 
 
   Integer ::= <digit> | <Integer> <digit>
 
   Integer ::= <digit> | <Integer> <digit>
 
 
   digit ::= [0-9]
 
   digit ::= [0-9]
 
+
== Object Class ==
== Object Class ==
 
 
 
  
 
   OCProforma ::= <ObjectClassName> <BlankLine> <Description> \
 
   OCProforma ::= <ObjectClassName> <BlankLine> <Description> \
 
                 <BlankLine> <OCMacro>
 
                 <BlankLine> <OCMacro>
 
 
   ObjectClassName ::= "ObjectClass:" <String> <EOL>
 
   ObjectClassName ::= "ObjectClass:" <String> <EOL>
 
 
   Description ::= "Description:" <DescriptiveText> <EOL>
 
   Description ::= "Description:" <DescriptiveText> <EOL>
 
 
   DescriptiveText ::= <String> | <DescriptiveText> <EOL> <String>
 
   DescriptiveText ::= <String> | <DescriptiveText> <EOL> <String>
 
 
   OCMacro ::= "ASN1OCMacro:" <ObjectClassMacro>
 
   OCMacro ::= "ASN1OCMacro:" <ObjectClassMacro>
 
 
   -- The definition of ObjectClassMacro is adapted from
 
   -- The definition of ObjectClassMacro is adapted from
 
   -- that given in X.501
 
   -- that given in X.501
 +
 +
  
  
Line 1,544: Line 1,278:
 
   ObjectClassMacro ::= <OCname> "OBJECT-CLASS" <SubclassOf> \
 
   ObjectClassMacro ::= <OCname> "OBJECT-CLASS" <SubclassOf> \
 
                       <MandatoryAttributes> <OptionalAttributes>
 
                       <MandatoryAttributes> <OptionalAttributes>
 
 
   OCName ::= <lString>
 
   OCName ::= <lString>
 
 
   SubclassOf ::= "SUBCLASS OF" Subclasses | <empty>
 
   SubclassOf ::= "SUBCLASS OF" Subclasses | <empty>
 
 
   Subclasses ::= <Subclass> | <Subclass> "," <Subclasses>
 
   Subclasses ::= <Subclass> | <Subclass> "," <Subclasses>
 
 
   Subclass ::= <OCName>
 
   Subclass ::= <OCName>
 
 
   MandatoryAttributes ::= "MUST CONTAIN {" <Attributes> "}" \
 
   MandatoryAttributes ::= "MUST CONTAIN {" <Attributes> "}" \
 
                           | <empty>
 
                           | <empty>
 
   OptionalAttributes ::= "MAY CONTAIN {" <Attributes> "}" | <empty>
 
   OptionalAttributes ::= "MAY CONTAIN {" <Attributes> "}" | <empty>
 
 
   Attributes ::= <AttributeTerm> | <AttributeTerm> "," <Attributes>
 
   Attributes ::= <AttributeTerm> | <AttributeTerm> "," <Attributes>
 
 
   AttributeTerm ::= <Attribute> | <AttributeSet>
 
   AttributeTerm ::= <Attribute> | <AttributeSet>
 
 
   Attribute ::= <lString>
 
   Attribute ::= <lString>
 
 
   AttributeSet ::= <lString>
 
   AttributeSet ::= <lString>
 
+
== Attribute Type ==
== Attribute Type ==
 
 
 
  
 
   ATProforma ::= <AttributeTypeName> <BlankLine> <Description> \
 
   ATProforma ::= <AttributeTypeName> <BlankLine> <Description> \
 
                 <BlankLine> <OCMust> <Blankline> <OCMay> \
 
                 <BlankLine> <OCMust> <Blankline> <OCMay> \
 
                 <BlankLine> <ATMacro>
 
                 <BlankLine> <ATMacro>
 
 
   AttributeTypeName ::= "Attribute Type:" <String> <EOL>
 
   AttributeTypeName ::= "Attribute Type:" <String> <EOL>
 
 
   Description ::= "Description:" <DescriptiveText> <EOL>
 
   Description ::= "Description:" <DescriptiveText> <EOL>
 
 
   DescriptiveText ::= <String> | <DescriptiveText> <EOL> <String>
 
   DescriptiveText ::= <String> | <DescriptiveText> <EOL> <String>
 
 
   OCMust ::= "OCMust:" <OCList> <EOL>
 
   OCMust ::= "OCMust:" <OCList> <EOL>
 
 
   OCList ::= <OCName> | <OCList> "," <OCName> | <empty>
 
   OCList ::= <OCName> | <OCList> "," <OCName> | <empty>
 
 
   OCMay ::= "OCMay:" <OCList> <EOL>
 
   OCMay ::= "OCMay:" <OCList> <EOL>
 
 
   ATMacro ::= "ASN1ATMacro:" <AttributeTypeMacro>
 
   ATMacro ::= "ASN1ATMacro:" <AttributeTypeMacro>
 
 
   -- The definition of AttributeTypeMacro is adapted from that
 
   -- The definition of AttributeTypeMacro is adapted from that
 
   -- given in X.501
 
   -- given in X.501
 +
  AttributeTypeMacro ::= <ATname> "ATTRIBUTE" <AttributeSyntax> \
 +
  
  AttributeTypeMacro ::= <ATname> "ATTRIBUTE" <AttributeSyntax> \
 
  
  
Line 1,596: Line 1,312:
  
 
                         <Multivalued> | <empty>
 
                         <Multivalued> | <empty>
 
 
   ATName ::= <lString>
 
   ATName ::= <lString>
 
 
   AttributeSyntax ::= "WITH ATTRIBUTE SYNTAX" SyntaxChoice
 
   AttributeSyntax ::= "WITH ATTRIBUTE SYNTAX" SyntaxChoice
 
 
   SyntaxChoice ::= <Syntax> <Constraint> | <ASN1Type> <MatchTypes>
 
   SyntaxChoice ::= <Syntax> <Constraint> | <ASN1Type> <MatchTypes>
 
 
   Syntax ::= <lString>
 
   Syntax ::= <lString>
 
 
   Constraint ::= "(" ConstraintAlternative ")" | <empty>
 
   Constraint ::= "(" ConstraintAlternative ")" | <empty>
 
 
   ConstraintAlternative ::= StringConstraint | IntegerConstraint
 
   ConstraintAlternative ::= StringConstraint | IntegerConstraint
 
 
   StringConstraint ::= "SIZE" "("  SizeConstraint ")"
 
   StringConstraint ::= "SIZE" "("  SizeConstraint ")"
 
 
   SizeConstraint ::= SingleValue | Range
 
   SizeConstraint ::= SingleValue | Range
 
 
   SingleValue ::= <Integer>
 
   SingleValue ::= <Integer>
 
 
   Range ::= <Integer> ".." <Integer>
 
   Range ::= <Integer> ".." <Integer>
 
 
   IntegerConstraint ::= Range
 
   IntegerConstraint ::= Range
 
 
   ASN1Type ::= <UString>
 
   ASN1Type ::= <UString>
 
   -- one of ASN.1's base types: e.g. PrintableString,
 
   -- one of ASN.1's base types: e.g. PrintableString,
 
   -- NumericString, etc.
 
   -- NumericString, etc.
 
 
   MatchTypes ::= "MATCHES FOR" Matches | <empty>
 
   MatchTypes ::= "MATCHES FOR" Matches | <empty>
 
 
   Matches ::= Match | Matches Match
 
   Matches ::= Match | Matches Match
 
 
   Match ::= "EQUALITY" | "SUBSTRINGS" | "ORDERING"
 
   Match ::= "EQUALITY" | "SUBSTRINGS" | "ORDERING"
 
 
   Multivalued ::= "SINGLE VALUE" | "MULTI VALUE" | <empty>
 
   Multivalued ::= "SINGLE VALUE" | "MULTI VALUE" | <empty>
 
 
APPENDIX B - Format checking tools
 
APPENDIX B - Format checking tools
 
 
This section includes the source for format checking tools for the
 
This section includes the source for format checking tools for the
 
two proformas.  The tools are written as Bourne shell scripts for
 
two proformas.  The tools are written as Bourne shell scripts for
 
UNIX systems.
 
UNIX systems.
 
+
== Object class format checker ==
== Object class format checker ==
 
 
 
  
 
   sed 's/ *: */:/' |
 
   sed 's/ *: */:/' |
 
   awk '
 
   awk '
 
   BEGIN {
 
   BEGIN {
 +
 +
  
  
Line 1,650: Line 1,348:
 
           state = "initial"
 
           state = "initial"
 
   }
 
   }
 
 
   /^$/ {
 
   /^$/ {
 
           next
 
           next
 
   }
 
   }
 
 
   /^Object Class:/ {
 
   /^Object Class:/ {
 
           n = index($0, ":")
 
           n = index($0, ":")
Line 1,668: Line 1,364:
 
           next
 
           next
 
   }
 
   }
 
 
   /^Description:/ {
 
   /^Description:/ {
 
           n = index($0, ":")
 
           n = index($0, ":")
Line 1,692: Line 1,387:
 
           next
 
           next
 
   }
 
   }
 
 
   /^ASN1OCMacro:/ {
 
   /^ASN1OCMacro:/ {
 
           n = index($0, ":")
 
           n = index($0, ":")
 
           if (state != "gotDesc")
 
           if (state != "gotDesc")
 +
 +
  
  
Line 1,716: Line 1,412:
 
           exit 0
 
           exit 0
 
   }
 
   }
 
 
   {
 
   {
 
           print "Parsing has got confused on seeing line: " $0
 
           print "Parsing has got confused on seeing line: " $0
Line 1,722: Line 1,417:
 
           exit 1
 
           exit 1
 
   }
 
   }
 
 
   END {
 
   END {
 
           if (state == "OK")
 
           if (state == "OK")
Line 1,728: Line 1,422:
 
   }
 
   }
  
 
+
== Attribute Type format checker ==
== Attribute Type format checker ==
 
 
 
  
 
   sed 's/ *: */:/' |
 
   sed 's/ *: */:/' |
Line 1,737: Line 1,429:
 
           state = "initial"
 
           state = "initial"
 
   }
 
   }
 
 
   /^$/ {
 
   /^$/ {
 
           next
 
           next
 
   }
 
   }
 
 
   /^Attribute Type:/ {
 
   /^Attribute Type:/ {
 
           n = index($0, ":")
 
           n = index($0, ":")
Line 1,749: Line 1,439:
 
                   exit 1
 
                   exit 1
 
           }
 
           }
 +
 +
  
  
Line 1,757: Line 1,449:
 
           next
 
           next
 
   }
 
   }
 
 
   /^Description:/ {
 
   /^Description:/ {
 
           n = index($0, ":")
 
           n = index($0, ":")
Line 1,773: Line 1,464:
 
           next
 
           next
 
   }
 
   }
 
 
   /^OCMust:/ {
 
   /^OCMust:/ {
 
           n = index($0, ":")
 
           n = index($0, ":")
Line 1,784: Line 1,474:
 
           next
 
           next
 
   }
 
   }
 
 
   /^OCMay:/ {
 
   /^OCMay:/ {
 
           n = index($0, ":")
 
           n = index($0, ":")
Line 1,795: Line 1,484:
 
           next
 
           next
 
   }
 
   }
 
 
   /^ASN1ATMacro:/ {
 
   /^ASN1ATMacro:/ {
 
           n = index($0, ":")
 
           n = index($0, ":")
Line 1,802: Line 1,490:
 
                   got = "ASN1ATMacro:"
 
                   got = "ASN1ATMacro:"
 
                   exit 1
 
                   exit 1
 +
 +
  
  
Line 1,811: Line 1,501:
 
           exit 0
 
           exit 0
 
   }
 
   }
 
 
   {
 
   {
 
           print "Parsing has got confused on seeing line: " $0
 
           print "Parsing has got confused on seeing line: " $0
Line 1,817: Line 1,506:
 
           exit 1
 
           exit 1
 
   }
 
   }
 
 
   END {
 
   END {
 
           if (state == "initial")
 
           if (state == "initial")
Line 1,834: Line 1,522:
 
                   print "Input looks OK"
 
                   print "Input looks OK"
 
   }
 
   }
 
  
 
APPENDIX C - Summary of all Object Classes and Attribute Types
 
APPENDIX C - Summary of all Object Classes and Attribute Types
 
 
   -- Some Important Object Identifiers
 
   -- Some Important Object Identifiers
 
 
   data OBJECT IDENTIFIER ::= {ccitt 9}
 
   data OBJECT IDENTIFIER ::= {ccitt 9}
 
   pss OBJECT IDENTIFIER ::= {data 2342}
 
   pss OBJECT IDENTIFIER ::= {data 2342}
 
   ucl OBJECT IDENTIFIER ::= {pss 19200300}
 
   ucl OBJECT IDENTIFIER ::= {pss 19200300}
 
   pilot OBJECT IDENTIFIER ::= {ucl 100}
 
   pilot OBJECT IDENTIFIER ::= {ucl 100}
 
 
   pilotAttributeType OBJECT IDENTIFIER ::= {pilot 1}
 
   pilotAttributeType OBJECT IDENTIFIER ::= {pilot 1}
 
   pilotAttributeSyntax OBJECT IDENTIFIER ::= {pilot 3}
 
   pilotAttributeSyntax OBJECT IDENTIFIER ::= {pilot 3}
 
   pilotObjectClass OBJECT IDENTIFIER ::= {pilot 4}
 
   pilotObjectClass OBJECT IDENTIFIER ::= {pilot 4}
 
   pilotGroups OBJECT IDENTIFIER ::= {pilot 10}
 
   pilotGroups OBJECT IDENTIFIER ::= {pilot 10}
 
 
   iA5StringSyntax OBJECT IDENTIFIER ::= {pilotAttributeSyntax 4}
 
   iA5StringSyntax OBJECT IDENTIFIER ::= {pilotAttributeSyntax 4}
 
   caseIgnoreIA5StringSyntax OBJECT IDENTIFIER ::=
 
   caseIgnoreIA5StringSyntax OBJECT IDENTIFIER ::=
 
                                         {pilotAttributeSyntax 5}
 
                                         {pilotAttributeSyntax 5}
 +
 +
  
  
Line 1,861: Line 1,546:
  
 
   -- Standard Object Classes
 
   -- Standard Object Classes
 
 
   top OBJECT-CLASS
 
   top OBJECT-CLASS
 
       MUST CONTAIN {
 
       MUST CONTAIN {
 
           objectClass}
 
           objectClass}
 
   ::= {objectClass 0}
 
   ::= {objectClass 0}
 
  
 
   alias OBJECT-CLASS
 
   alias OBJECT-CLASS
Line 1,873: Line 1,556:
 
           aliasedObjectName}
 
           aliasedObjectName}
 
   ::= {objectClass 1}
 
   ::= {objectClass 1}
 
  
 
   country OBJECT-CLASS
 
   country OBJECT-CLASS
Line 1,883: Line 1,565:
 
           searchGuide}
 
           searchGuide}
 
   ::= {objectClass 2}
 
   ::= {objectClass 2}
 
  
 
   locality OBJECT-CLASS
 
   locality OBJECT-CLASS
Line 1,895: Line 1,576:
 
           streetAddress}
 
           streetAddress}
 
   ::= {objectClass 3}
 
   ::= {objectClass 3}
 
  
 
   organization OBJECT-CLASS
 
   organization OBJECT-CLASS
Line 1,904: Line 1,584:
 
           organizationalAttributeSet}
 
           organizationalAttributeSet}
 
   ::= {objectClass 4}
 
   ::= {objectClass 4}
 +
 +
  
  
Line 1,920: Line 1,602:
 
           organizationalAttributeSet}
 
           organizationalAttributeSet}
 
   ::= {objectClass 5}
 
   ::= {objectClass 5}
 
  
 
   person OBJECT-CLASS
 
   person OBJECT-CLASS
Line 1,933: Line 1,614:
 
           userPassword}
 
           userPassword}
 
   ::= {objectClass 6}
 
   ::= {objectClass 6}
 
  
 
   organizationalPerson OBJECT-CLASS
 
   organizationalPerson OBJECT-CLASS
Line 1,944: Line 1,624:
 
           title}
 
           title}
 
   ::= {objectClass 7}
 
   ::= {objectClass 7}
 
  
 
   organizationalRole OBJECT-CLASS
 
   organizationalRole OBJECT-CLASS
Line 1,960: Line 1,639:
 
           telecommunicationAttributeSet}
 
           telecommunicationAttributeSet}
 
   ::= {objectClass 8}
 
   ::= {objectClass 8}
 +
 +
  
  
Line 1,979: Line 1,660:
 
           businessCategory}
 
           businessCategory}
 
   ::= {objectClass 9}
 
   ::= {objectClass 9}
 
  
 
   residentialPerson OBJECT-CLASS
 
   residentialPerson OBJECT-CLASS
Line 1,992: Line 1,672:
 
           businessCategory}
 
           businessCategory}
 
   ::= {objectClass 10}
 
   ::= {objectClass 10}
 
  
 
   applicationProcess OBJECT-CLASS
 
   applicationProcess OBJECT-CLASS
Line 2,004: Line 1,683:
 
           seeAlso}
 
           seeAlso}
 
   ::= {objectClass 11}
 
   ::= {objectClass 11}
 
  
 
   applicationEntity OBJECT-CLASS
 
   applicationEntity OBJECT-CLASS
Line 2,014: Line 1,692:
 
           description,
 
           description,
 
           localityName,
 
           localityName,
 +
 +
  
  
Line 2,024: Line 1,704:
 
           supportedApplicationContext}
 
           supportedApplicationContext}
 
   ::= {objectClass 12}
 
   ::= {objectClass 12}
 
  
 
   dSA OBJECT-CLASS
 
   dSA OBJECT-CLASS
Line 2,031: Line 1,710:
 
           knowledgeInformation}
 
           knowledgeInformation}
 
   ::= {objectClass 13}
 
   ::= {objectClass 13}
 
  
 
   device OBJECT-CLASS
 
   device OBJECT-CLASS
Line 2,046: Line 1,724:
 
           serialNumber}
 
           serialNumber}
 
   ::= {objectClass 14}
 
   ::= {objectClass 14}
 
  
 
   strongAuthenticationUser OBJECT-CLASS
 
   strongAuthenticationUser OBJECT-CLASS
Line 2,053: Line 1,730:
 
           userCertificate}
 
           userCertificate}
 
   ::= {objectClass 15}
 
   ::= {objectClass 15}
 
  
 
   certificationAuthority OBJECT-CLASS
 
   certificationAuthority OBJECT-CLASS
Line 2,064: Line 1,740:
 
           crossCertificatePair}
 
           crossCertificatePair}
 
   ::= {objectClass 16}
 
   ::= {objectClass 16}
 +
 +
  
  
Line 2,073: Line 1,751:
  
 
   -- Standard MHS Object Classes
 
   -- Standard MHS Object Classes
 
 
   mhsDistributionList OBJECT-CLASS
 
   mhsDistributionList OBJECT-CLASS
 
       SUBCLASS OF top
 
       SUBCLASS OF top
Line 2,091: Line 1,768:
 
           mhsPreferredDeliveryMethods}
 
           mhsPreferredDeliveryMethods}
 
   ::= {mhsObjectClass 0}
 
   ::= {mhsObjectClass 0}
 
  
 
   mhsMessageStore OBJECT-CLASS
 
   mhsMessageStore OBJECT-CLASS
Line 2,102: Line 1,778:
 
           mhsSupportedContentTypes}
 
           mhsSupportedContentTypes}
 
   ::= {mhsObjectClass 1}
 
   ::= {mhsObjectClass 1}
 
  
 
   mhsMessageTransferAgent OBJECT-CLASS
 
   mhsMessageTransferAgent OBJECT-CLASS
Line 2,111: Line 1,786:
 
           mhsDeliverableContentLength}
 
           mhsDeliverableContentLength}
 
   ::= {mhsObjectClass 2}
 
   ::= {mhsObjectClass 2}
 
  
 
   mhsOrganizationalUser OBJECT-CLASS
 
   mhsOrganizationalUser OBJECT-CLASS
Line 2,120: Line 1,794:
 
           mhsDeliverableContentLength,
 
           mhsDeliverableContentLength,
 
           mhsDeliverableContentTypes,
 
           mhsDeliverableContentTypes,
 +
 +
  
  
Line 2,129: Line 1,805:
 
           mhsPreferredDeliveryMethods }
 
           mhsPreferredDeliveryMethods }
 
   ::= {mhsObjectClass 3}
 
   ::= {mhsObjectClass 3}
 
  
 
   mhsResidentialUser OBJECT-CLASS
 
   mhsResidentialUser OBJECT-CLASS
Line 2,142: Line 1,817:
 
           mhsPreferredDeliveryMethods }
 
           mhsPreferredDeliveryMethods }
 
   ::= {mhsObjectClass 4}
 
   ::= {mhsObjectClass 4}
 
  
 
   mhsUserAgent OBJECT-CLASS
 
   mhsUserAgent OBJECT-CLASS
Line 2,153: Line 1,827:
 
           owner}
 
           owner}
 
   ::= {mhsObjectClass 5}
 
   ::= {mhsObjectClass 5}
 
  
  
  
 
   -- Pilot Object Classes
 
   -- Pilot Object Classes
 
 
   pilotObject OBJECT-CLASS
 
   pilotObject OBJECT-CLASS
 
       SUBCLASS OF top
 
       SUBCLASS OF top
Line 2,171: Line 1,843:
 
           audio}
 
           audio}
 
   ::= {pilotObjectClass 3}
 
   ::= {pilotObjectClass 3}
 +
 +
  
  
Line 2,201: Line 1,875:
 
                   personalSignature}
 
                   personalSignature}
 
   ::= {pilotObjectClass 4}
 
   ::= {pilotObjectClass 4}
 
  
 
   account OBJECT-CLASS
 
   account OBJECT-CLASS
Line 2,215: Line 1,888:
 
           host}
 
           host}
 
   ::= {pilotObjectClass 5}
 
   ::= {pilotObjectClass 5}
 
  
 
   document OBJECT-CLASS
 
   document OBJECT-CLASS
Line 2,226: Line 1,898:
 
           seeAlso,
 
           seeAlso,
 
           localityName,
 
           localityName,
 +
 +
  
  
Line 2,239: Line 1,913:
 
           documentPublisher}
 
           documentPublisher}
 
   ::= {pilotObjectClass 6}
 
   ::= {pilotObjectClass 6}
 
  
 
   room OBJECT-CLASS
 
   room OBJECT-CLASS
Line 2,251: Line 1,924:
 
           telephoneNumber}
 
           telephoneNumber}
 
   ::= {pilotObjectClass 7}
 
   ::= {pilotObjectClass 7}
 
  
 
   documentSeries OBJECT-CLASS
 
   documentSeries OBJECT-CLASS
Line 2,265: Line 1,937:
 
           organizationalUnitName}
 
           organizationalUnitName}
 
   ::= {pilotObjectClass 9}
 
   ::= {pilotObjectClass 9}
 
  
 
   domain OBJECT-CLASS
 
   domain OBJECT-CLASS
Line 2,276: Line 1,947:
 
           organizationalAttributeSet}
 
           organizationalAttributeSet}
 
   ::= {pilotObjectClass 13}
 
   ::= {pilotObjectClass 13}
 +
 +
  
  
Line 2,295: Line 1,968:
 
           telecommunicationAttributeSet}
 
           telecommunicationAttributeSet}
 
   ::= {pilotObjectClass 14}
 
   ::= {pilotObjectClass 14}
 
  
 
   dNSDomain OBJECT-CLASS
 
   dNSDomain OBJECT-CLASS
Line 2,307: Line 1,979:
 
           CNAMERecord}
 
           CNAMERecord}
 
   ::= {pilotObjectClass 15}
 
   ::= {pilotObjectClass 15}
 
  
 
   domainRelatedObject OBJECT-CLASS
 
   domainRelatedObject OBJECT-CLASS
Line 2,314: Line 1,985:
 
           associatedDomain}
 
           associatedDomain}
 
   ::= {pilotObjectClass 17}
 
   ::= {pilotObjectClass 17}
 
  
 
   friendlyCountry OBJECT-CLASS
 
   friendlyCountry OBJECT-CLASS
Line 2,321: Line 1,991:
 
           friendlyCountryName}
 
           friendlyCountryName}
 
   ::= {pilotObjectClass 18}
 
   ::= {pilotObjectClass 18}
 
  
 
   simpleSecurityObject OBJECT-CLASS
 
   simpleSecurityObject OBJECT-CLASS
Line 2,328: Line 1,997:
 
           userPassword }
 
           userPassword }
 
   ::= {pilotObjectClass 19}
 
   ::= {pilotObjectClass 19}
 
  
 
   pilotOrganization OBJECT-CLASS
 
   pilotOrganization OBJECT-CLASS
 
       SUBCLASS OF organization, organizationalUnit
 
       SUBCLASS OF organization, organizationalUnit
 +
 +
  
  
Line 2,340: Line 2,010:
 
                   buildingName}
 
                   buildingName}
 
   ::= {pilotObjectClass 20}
 
   ::= {pilotObjectClass 20}
 
  
 
   pilotDSA OBJECT-CLASS
 
   pilotDSA OBJECT-CLASS
Line 2,347: Line 2,016:
 
           dSAQuality}
 
           dSAQuality}
 
   ::= {pilotObjectClass 21}
 
   ::= {pilotObjectClass 21}
 
  
 
   qualityLabelledData OBJECT-CLASS
 
   qualityLabelledData OBJECT-CLASS
Line 2,357: Line 2,025:
 
           subtreeMaximumQuality}
 
           subtreeMaximumQuality}
 
   ::= {pilotObjectClass 22}
 
   ::= {pilotObjectClass 22}
 
  
  
  
 
   -- Standard Attribute Types
 
   -- Standard Attribute Types
 
 
   objectClass ObjectClass
 
   objectClass ObjectClass
 
       ::= {attributeType 0}
 
       ::= {attributeType 0}
 
  
 
   aliasedObjectName AliasedObjectName
 
   aliasedObjectName AliasedObjectName
 
       ::= {attributeType 1}
 
       ::= {attributeType 1}
 
  
 
   knowledgeInformation ATTRIBUTE
 
   knowledgeInformation ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX caseIgnoreString
 
       WITH ATTRIBUTE-SYNTAX caseIgnoreString
 
       ::= {attributeType 2}
 
       ::= {attributeType 2}
 
  
 
   commonName ATTRIBUTE
 
   commonName ATTRIBUTE
Line 2,380: Line 2,043:
 
       (SIZE (1..ub-common-name))
 
       (SIZE (1..ub-common-name))
 
       ::= {attributeType 3}
 
       ::= {attributeType 3}
 
  
 
   surname ATTRIBUTE
 
   surname ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
 
       WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
 
       (SIZE (1..ub-surname))
 
       (SIZE (1..ub-surname))
 +
 +
  
  
Line 2,391: Line 2,055:
  
 
       ::= {attributeType 4}
 
       ::= {attributeType 4}
 
  
 
   serialNumber ATTRIBUTE
 
   serialNumber ATTRIBUTE
Line 2,397: Line 2,060:
 
       (SIZE (1..ub-serial-number))
 
       (SIZE (1..ub-serial-number))
 
       ::= {attributeType 5}
 
       ::= {attributeType 5}
 
  
 
   countryName ATTRIBUTE
 
   countryName ATTRIBUTE
Line 2,404: Line 2,066:
 
       SINGLE VALUE
 
       SINGLE VALUE
 
       ::= {attributeType 6}
 
       ::= {attributeType 6}
 
  
 
   localityName ATTRIBUTE
 
   localityName ATTRIBUTE
Line 2,410: Line 2,071:
 
       (SIZE (1..ub-locality-name))
 
       (SIZE (1..ub-locality-name))
 
       ::= {attributeType 7}
 
       ::= {attributeType 7}
 
  
 
   stateOrProvinceName ATTRIBUTE
 
   stateOrProvinceName ATTRIBUTE
Line 2,416: Line 2,076:
 
       (SIZE (1..ub-state-name))
 
       (SIZE (1..ub-state-name))
 
       ::= {attributeType 8}
 
       ::= {attributeType 8}
 
  
 
   streetAddress ATTRIBUTE
 
   streetAddress ATTRIBUTE
Line 2,422: Line 2,081:
 
       (SIZE (1..ub-street-address))
 
       (SIZE (1..ub-street-address))
 
       ::= {attributeType 9}
 
       ::= {attributeType 9}
 
  
 
   organizationName ATTRIBUTE
 
   organizationName ATTRIBUTE
Line 2,428: Line 2,086:
 
       (SIZE (1..ub-organization-name))
 
       (SIZE (1..ub-organization-name))
 
       ::= {attributeType 10}
 
       ::= {attributeType 10}
 
  
 
   organizationalUnitName ATTRIBUTE
 
   organizationalUnitName ATTRIBUTE
Line 2,434: Line 2,091:
 
       (SIZE (1..ub-organizational-unit-name))
 
       (SIZE (1..ub-organizational-unit-name))
 
       ::= {attributeType 11}
 
       ::= {attributeType 11}
 
  
 
   title ATTRIBUTE
 
   title ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
 
       WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
 +
 +
  
  
Line 2,445: Line 2,103:
 
       (SIZE (1..ub-title))
 
       (SIZE (1..ub-title))
 
       ::= {attributeType 12}
 
       ::= {attributeType 12}
 
  
 
   description ATTRIBUTE
 
   description ATTRIBUTE
Line 2,451: Line 2,108:
 
       (SIZE (1..ub-description))
 
       (SIZE (1..ub-description))
 
       ::= {attributeType 13}
 
       ::= {attributeType 13}
 
  
 
   searchGuide ATTRIBUTE
 
   searchGuide ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX Guide
 
       WITH ATTRIBUTE-SYNTAX Guide
 
       ::= {attributeType 14}
 
       ::= {attributeType 14}
 
  
 
   businessCategory ATTRIBUTE
 
   businessCategory ATTRIBUTE
Line 2,462: Line 2,117:
 
       (SIZE (1..ub-business-category))
 
       (SIZE (1..ub-business-category))
 
       ::= {attributeType 15}
 
       ::= {attributeType 15}
 
  
 
   postalAddress ATTRIBUTE
 
   postalAddress ATTRIBUTE
Line 2,468: Line 2,122:
 
       MATCHES FOR EQUALITY
 
       MATCHES FOR EQUALITY
 
       ::= {attributeType 16}
 
       ::= {attributeType 16}
 
  
 
   postalCode ATTRIBUTE
 
   postalCode ATTRIBUTE
Line 2,474: Line 2,127:
 
       (SIZE (1..ub-postal-code))
 
       (SIZE (1..ub-postal-code))
 
       ::= {attributeType 17}
 
       ::= {attributeType 17}
 
  
 
   postOfficeBox ATTRIBUTE
 
   postOfficeBox ATTRIBUTE
Line 2,480: Line 2,132:
 
       (SIZE (1..ub-post-office-box))
 
       (SIZE (1..ub-post-office-box))
 
       ::= {attributeType 18}
 
       ::= {attributeType 18}
 
  
 
   physicalDeliveryOfficeName ATTRIBUTE
 
   physicalDeliveryOfficeName ATTRIBUTE
Line 2,486: Line 2,137:
 
       (SIZE (1..ub-physical-office-name))
 
       (SIZE (1..ub-physical-office-name))
 
       ::= {attributeType 19}
 
       ::= {attributeType 19}
 
  
 
   telephoneNumber ATTRIBUTE
 
   telephoneNumber ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX telephoneNumberSyntax
 
       WITH ATTRIBUTE-SYNTAX telephoneNumberSyntax
 
       (SIZE (1..ub-telephone-number))
 
       (SIZE (1..ub-telephone-number))
 +
 +
  
  
Line 2,497: Line 2,149:
  
 
       ::= {attributeType 20}
 
       ::= {attributeType 20}
 
  
 
   telexNumber ATTRIBUTE
 
   telexNumber ATTRIBUTE
Line 2,503: Line 2,154:
 
       (SIZE (1..ub-telex))
 
       (SIZE (1..ub-telex))
 
       ::= {attributeType 21}
 
       ::= {attributeType 21}
 
  
 
   teletexTerminalIdentifier ATTRIBUTE
 
   teletexTerminalIdentifier ATTRIBUTE
Line 2,509: Line 2,159:
 
       (SIZE (1..ub-teletex-terminal-id))
 
       (SIZE (1..ub-teletex-terminal-id))
 
       ::= {attributeType 22}
 
       ::= {attributeType 22}
 
  
 
   facsimileTelephoneNumber ATTRIBUTE
 
   facsimileTelephoneNumber ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX FacsimileTelephoneNumber
 
       WITH ATTRIBUTE-SYNTAX FacsimileTelephoneNumber
 
       ::= {attributeType 23}
 
       ::= {attributeType 23}
 
  
 
   x121Address ATTRIBUTE
 
   x121Address ATTRIBUTE
Line 2,520: Line 2,168:
 
       (SIZE (1..ub-x121-address))
 
       (SIZE (1..ub-x121-address))
 
       ::= {attributeType 24}
 
       ::= {attributeType 24}
 
  
 
   internationaliSDNNumber ATTRIBUTE
 
   internationaliSDNNumber ATTRIBUTE
Line 2,526: Line 2,173:
 
       (SIZE (1..ub-isdn-address))
 
       (SIZE (1..ub-isdn-address))
 
       ::= {attributeType 25}
 
       ::= {attributeType 25}
 
  
 
   registeredAddress ATTRIBUTE
 
   registeredAddress ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX PostalAddress
 
       WITH ATTRIBUTE-SYNTAX PostalAddress
 
       ::= {attributeType 26}
 
       ::= {attributeType 26}
 
  
 
   destinationIndicator ATTRIBUTE
 
   destinationIndicator ATTRIBUTE
Line 2,538: Line 2,183:
 
       MATCHES FOR EQUALITY SUBSTRINGS
 
       MATCHES FOR EQUALITY SUBSTRINGS
 
       ::= {attributeType 27}
 
       ::= {attributeType 27}
 
  
 
   preferredDeliveryMethod ATTRIBUTE
 
   preferredDeliveryMethod ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX deliveryMethod
 
       WITH ATTRIBUTE-SYNTAX deliveryMethod
 
       ::= {attributeType 28}
 
       ::= {attributeType 28}
 +
 +
  
  
Line 2,553: Line 2,199:
 
       MATCHES FOR EQUALITY
 
       MATCHES FOR EQUALITY
 
       ::= {attributeType 29}
 
       ::= {attributeType 29}
 
  
 
   supportedApplicationContext ATTRIBUTE
 
   supportedApplicationContext ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX objectIdentifierSyntax
 
       WITH ATTRIBUTE-SYNTAX objectIdentifierSyntax
 
       ::= {attributeType 30}
 
       ::= {attributeType 30}
 
  
 
   member ATTRIBUTE
 
   member ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
 
       WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
 
       ::= {attributeType 31}
 
       ::= {attributeType 31}
 
  
 
   owner ATTRIBUTE
 
   owner ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
 
       WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
 
       ::= {attributeType 32}
 
       ::= {attributeType 32}
 
  
 
   roleOccupant ATTRIBUTE
 
   roleOccupant ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
 
       WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
 
       ::= {attributeType 33}
 
       ::= {attributeType 33}
 
  
 
   seeAlso ATTRIBUTE
 
   seeAlso ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
 
       WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
 
       ::= {attributeType 34}
 
       ::= {attributeType 34}
 
  
 
   userPassword ATTRIBUTE
 
   userPassword ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX Userpassword
 
       WITH ATTRIBUTE-SYNTAX Userpassword
 
       ::= {attributeType 35}
 
       ::= {attributeType 35}
 
  
 
   userCertificate ATTRIBUTE
 
   userCertificate ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX UserCertificate
 
       WITH ATTRIBUTE-SYNTAX UserCertificate
 
       ::= {attributeType 36}
 
       ::= {attributeType 36}
 
  
 
   cACertificate ATTRIBUTE
 
   cACertificate ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX cACertificate
 
       WITH ATTRIBUTE-SYNTAX cACertificate
 
       ::= {attributeType 37}
 
       ::= {attributeType 37}
 
  
 
   authorityRevocationList ATTRIBUTE
 
   authorityRevocationList ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX AuthorityRevocationList
 
       WITH ATTRIBUTE-SYNTAX AuthorityRevocationList
 +
 +
  
  
Line 2,603: Line 2,242:
  
 
       ::= {attributeType 38}
 
       ::= {attributeType 38}
 
  
 
   certificateRevocationList ATTRIBUTE
 
   certificateRevocationList ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX CertificateRevocationList
 
       WITH ATTRIBUTE-SYNTAX CertificateRevocationList
 
       ::= {attributeType 39}
 
       ::= {attributeType 39}
 
  
 
   crossCertificatePair ATTRIBUTE
 
   crossCertificatePair ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX CrossCertificatePair
 
       WITH ATTRIBUTE-SYNTAX CrossCertificatePair
 
       ::= {attributeType 40}
 
       ::= {attributeType 40}
 
  
  
  
 
   -- Standard MHS Attribute Types
 
   -- Standard MHS Attribute Types
 
 
   mhsDeliverableContentLength ATTRIBUTE
 
   mhsDeliverableContentLength ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX integer
 
       WITH ATTRIBUTE-SYNTAX integer
 
       ::= {mhsAttributeType 0}
 
       ::= {mhsAttributeType 0}
 
  
 
   mhsDeliverableContentTypes ATTRIBUTE
 
   mhsDeliverableContentTypes ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX oID
 
       WITH ATTRIBUTE-SYNTAX oID
 
       ::= {mhsAttributeType 1}
 
       ::= {mhsAttributeType 1}
 
  
 
   mhsDeliverableEits ATTRIBUTE
 
   mhsDeliverableEits ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX oID
 
       WITH ATTRIBUTE-SYNTAX oID
 
       ::= {mhsAttributeType 2}
 
       ::= {mhsAttributeType 2}
 
  
 
   mhsDLMembers ATTRIBUTE
 
   mhsDLMembers ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX oRName
 
       WITH ATTRIBUTE-SYNTAX oRName
 
       ::= {mhsAttributeType 3}
 
       ::= {mhsAttributeType 3}
 
  
 
   mhsDLSubmitPermissions ATTRIBUTE
 
   mhsDLSubmitPermissions ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX dLSubmitPermission
 
       WITH ATTRIBUTE-SYNTAX dLSubmitPermission
 
       ::= {mhsAttributeType 4}
 
       ::= {mhsAttributeType 4}
 
  
 
   mhsMessageStoreName ATTRIBUTE
 
   mhsMessageStoreName ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX dN
 
       WITH ATTRIBUTE-SYNTAX dN
 
       ::= {mhsAttributeType 5}
 
       ::= {mhsAttributeType 5}
 +
 +
  
  
Line 2,658: Line 2,290:
 
       WITH ATTRIBUTE-SYNTAX oRAddress
 
       WITH ATTRIBUTE-SYNTAX oRAddress
 
       ::= {mhsAttributeType 6}
 
       ::= {mhsAttributeType 6}
 
  
 
   mhsPreferredDeliveryMethods ATTRIBUTE
 
   mhsPreferredDeliveryMethods ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX deliveryMethod
 
       WITH ATTRIBUTE-SYNTAX deliveryMethod
 
       ::= {mhsAttributeType 7}
 
       ::= {mhsAttributeType 7}
 
  
 
   mhsSupportedAutomaticActions ATTRIBUTE
 
   mhsSupportedAutomaticActions ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX oID
 
       WITH ATTRIBUTE-SYNTAX oID
 
       ::= {mhsAttributeType 8}
 
       ::= {mhsAttributeType 8}
 
  
 
   mhsSupportedContentTypes ATTRIBUTE
 
   mhsSupportedContentTypes ATTRIBUTE
 
 
       WITH ATTRIBUTE-SYNTAX oID
 
       WITH ATTRIBUTE-SYNTAX oID
 
       ::= {mhsAttributeType 9}
 
       ::= {mhsAttributeType 9}
 
  
 
   mhsSupportedOptionalAttributes ATTRIBUTE
 
   mhsSupportedOptionalAttributes ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX oID
 
       WITH ATTRIBUTE-SYNTAX oID
 
       ::= {mhsAttributeType 10}
 
       ::= {mhsAttributeType 10}
 
  
  
  
 
   -- Pilot Attribute Types
 
   -- Pilot Attribute Types
 
 
   userid ATTRIBUTE
 
   userid ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
Line 2,690: Line 2,315:
 
           (SIZE (1 .. ub-user-identifier))
 
           (SIZE (1 .. ub-user-identifier))
 
   ::= {pilotAttributeType 1}
 
   ::= {pilotAttributeType 1}
 
  
 
   textEncodedORAddress ATTRIBUTE
 
   textEncodedORAddress ATTRIBUTE
Line 2,697: Line 2,321:
 
       (SIZE (1 .. ub-text-encoded-or-address))
 
       (SIZE (1 .. ub-text-encoded-or-address))
 
   ::= {pilotAttributeType 2}
 
   ::= {pilotAttributeType 2}
 
  
 
   rfc822Mailbox ATTRIBUTE
 
   rfc822Mailbox ATTRIBUTE
Line 2,703: Line 2,326:
 
           caseIgnoreIA5StringSyntax
 
           caseIgnoreIA5StringSyntax
 
           (SIZE (1 .. ub-rfc822-mailbox))
 
           (SIZE (1 .. ub-rfc822-mailbox))
 +
 +
  
  
Line 2,709: Line 2,334:
  
 
   ::= {pilotAttributeType 3}
 
   ::= {pilotAttributeType 3}
 
  
 
   info ATTRIBUTE
 
   info ATTRIBUTE
Line 2,716: Line 2,340:
 
           (SIZE (1 .. ub-information))
 
           (SIZE (1 .. ub-information))
 
   ::= {pilotAttributeType 4}
 
   ::= {pilotAttributeType 4}
 
  
 
   favouriteDrink ATTRIBUTE
 
   favouriteDrink ATTRIBUTE
Line 2,723: Line 2,346:
 
           (SIZE (1 .. ub-favourite-drink))
 
           (SIZE (1 .. ub-favourite-drink))
 
   ::= {pilotAttributeType 5}
 
   ::= {pilotAttributeType 5}
 
  
 
   roomNumber ATTRIBUTE
 
   roomNumber ATTRIBUTE
Line 2,730: Line 2,352:
 
           (SIZE (1 .. ub-room-number))
 
           (SIZE (1 .. ub-room-number))
 
   ::= {pilotAttributeType 6}
 
   ::= {pilotAttributeType 6}
 
  
 
   photo ATTRIBUTE
 
   photo ATTRIBUTE
Line 2,739: Line 2,360:
 
       (SIZE (1 .. ub-photo))
 
       (SIZE (1 .. ub-photo))
 
   ::= {pilotAttributeType 7}
 
   ::= {pilotAttributeType 7}
 
  
 
   userClass ATTRIBUTE
 
   userClass ATTRIBUTE
Line 2,746: Line 2,366:
 
           (SIZE (1 .. ub-user-class))
 
           (SIZE (1 .. ub-user-class))
 
   ::= {pilotAttributeType 8}
 
   ::= {pilotAttributeType 8}
 
  
 
   host ATTRIBUTE
 
   host ATTRIBUTE
Line 2,753: Line 2,372:
 
           (SIZE (1 .. ub-host))
 
           (SIZE (1 .. ub-host))
 
   ::= {pilotAttributeType 9}
 
   ::= {pilotAttributeType 9}
 +
 +
  
  
Line 2,765: Line 2,386:
 
           distinguishedNameSyntax
 
           distinguishedNameSyntax
 
   ::= {pilotAttributeType 10}
 
   ::= {pilotAttributeType 10}
 
  
 
   documentIdentifier ATTRIBUTE
 
   documentIdentifier ATTRIBUTE
Line 2,772: Line 2,392:
 
           (SIZE (1 .. ub-document-identifier))
 
           (SIZE (1 .. ub-document-identifier))
 
   ::= {pilotAttributeType 11}
 
   ::= {pilotAttributeType 11}
 
  
 
   documentTitle ATTRIBUTE
 
   documentTitle ATTRIBUTE
Line 2,779: Line 2,398:
 
       (SIZE (1 .. ub-document-title))
 
       (SIZE (1 .. ub-document-title))
 
   ::= {pilotAttributeType 12}
 
   ::= {pilotAttributeType 12}
 
  
 
   documentVersion ATTRIBUTE
 
   documentVersion ATTRIBUTE
Line 2,786: Line 2,404:
 
           (SIZE (1 .. ub-document-version))
 
           (SIZE (1 .. ub-document-version))
 
   ::= {pilotAttributeType 13}
 
   ::= {pilotAttributeType 13}
 
  
 
   documentAuthor ATTRIBUTE
 
   documentAuthor ATTRIBUTE
Line 2,792: Line 2,409:
 
           distinguishedNameSyntax
 
           distinguishedNameSyntax
 
   ::= {pilotAttributeType 14}
 
   ::= {pilotAttributeType 14}
 
  
 
   documentLocation ATTRIBUTE
 
   documentLocation ATTRIBUTE
Line 2,799: Line 2,415:
 
           (SIZE (1 .. ub-document-location))
 
           (SIZE (1 .. ub-document-location))
 
   ::= {pilotAttributeType 15}
 
   ::= {pilotAttributeType 15}
 
  
 
   homeTelephoneNumber ATTRIBUTE
 
   homeTelephoneNumber ATTRIBUTE
Line 2,805: Line 2,420:
 
           telephoneNumberSyntax
 
           telephoneNumberSyntax
 
   ::= {pilotAttributeType 20}
 
   ::= {pilotAttributeType 20}
 
  
 
   secretary ATTRIBUTE
 
   secretary ATTRIBUTE
 
       WITH ATTRIBUTE-SYNTAX
 
       WITH ATTRIBUTE-SYNTAX
 +
 +
  
  
Line 2,816: Line 2,432:
 
           distinguishedNameSyntax
 
           distinguishedNameSyntax
 
   ::= {pilotAttributeType 21}
 
   ::= {pilotAttributeType 21}
 
  
 
   otherMailbox ATTRIBUTE
 
   otherMailbox ATTRIBUTE
Line 2,825: Line 2,440:
 
           }
 
           }
 
   ::= {pilotAttributeType 22}
 
   ::= {pilotAttributeType 22}
 
  
 
   lastModifiedTime ATTRIBUTE
 
   lastModifiedTime ATTRIBUTE
Line 2,831: Line 2,445:
 
           uTCTimeSyntax
 
           uTCTimeSyntax
 
   ::= {pilotAttributeType 23}
 
   ::= {pilotAttributeType 23}
 
  
 
   lastModifiedBy ATTRIBUTE
 
   lastModifiedBy ATTRIBUTE
Line 2,837: Line 2,450:
 
           distinguishedNameSyntax
 
           distinguishedNameSyntax
 
   ::= {pilotAttributeType 24}
 
   ::= {pilotAttributeType 24}
 
  
 
   domainComponent ATTRIBUTE
 
   domainComponent ATTRIBUTE
Line 2,844: Line 2,456:
 
           SINGLE VALUE
 
           SINGLE VALUE
 
   ::= {pilotAttributeType 25}
 
   ::= {pilotAttributeType 25}
 
  
 
   aRecord ATTRIBUTE
 
   aRecord ATTRIBUTE
Line 2,850: Line 2,461:
 
           DNSRecordSyntax
 
           DNSRecordSyntax
 
   ::= {pilotAttributeType 26}
 
   ::= {pilotAttributeType 26}
 
  
 
   mXRecord ATTRIBUTE
 
   mXRecord ATTRIBUTE
Line 2,856: Line 2,466:
 
           DNSRecordSyntax
 
           DNSRecordSyntax
 
   ::= {pilotAttributeType 28}
 
   ::= {pilotAttributeType 28}
 
  
 
   nSRecord ATTRIBUTE
 
   nSRecord ATTRIBUTE
Line 2,862: Line 2,471:
 
           DNSRecordSyntax
 
           DNSRecordSyntax
 
   ::= {pilotAttributeType 29}
 
   ::= {pilotAttributeType 29}
 +
 +
  
  
Line 2,871: Line 2,482:
 
           DNSRecordSyntax
 
           DNSRecordSyntax
 
   ::= {pilotAttributeType 30}
 
   ::= {pilotAttributeType 30}
 
  
 
   cNAMERecord ATTRIBUTE
 
   cNAMERecord ATTRIBUTE
Line 2,877: Line 2,487:
 
           iA5StringSyntax
 
           iA5StringSyntax
 
   ::= {pilotAttributeType 31}
 
   ::= {pilotAttributeType 31}
 
  
 
   associatedDomain ATTRIBUTE
 
   associatedDomain ATTRIBUTE
Line 2,883: Line 2,492:
 
           caseIgnoreIA5StringSyntax
 
           caseIgnoreIA5StringSyntax
 
   ::= {pilotAttributeType 37}
 
   ::= {pilotAttributeType 37}
 
  
 
   associatedName ATTRIBUTE
 
   associatedName ATTRIBUTE
Line 2,889: Line 2,497:
 
           distinguishedNameSyntax
 
           distinguishedNameSyntax
 
   ::= {pilotAttributeType 38}
 
   ::= {pilotAttributeType 38}
 
  
 
   homePostalAddress ATTRIBUTE
 
   homePostalAddress ATTRIBUTE
Line 2,896: Line 2,503:
 
           MATCHES FOR EQUALITY
 
           MATCHES FOR EQUALITY
 
   ::= {pilotAttributeType 39}
 
   ::= {pilotAttributeType 39}
 
  
 
   personalTitle ATTRIBUTE
 
   personalTitle ATTRIBUTE
Line 2,903: Line 2,509:
 
           (SIZE (1 .. ub-personal-title))
 
           (SIZE (1 .. ub-personal-title))
 
   ::= {pilotAttributeType 40}
 
   ::= {pilotAttributeType 40}
 
  
 
   mobileTelephoneNumber ATTRIBUTE
 
   mobileTelephoneNumber ATTRIBUTE
Line 2,909: Line 2,514:
 
           telephoneNumberSyntax
 
           telephoneNumberSyntax
 
   ::= {pilotAttributeType 41}
 
   ::= {pilotAttributeType 41}
 
  
 
   pagerTelephoneNumber ATTRIBUTE
 
   pagerTelephoneNumber ATTRIBUTE
Line 2,915: Line 2,519:
 
           telephoneNumberSyntax
 
           telephoneNumberSyntax
 
   ::= {pilotAttributeType 42}
 
   ::= {pilotAttributeType 42}
 +
 +
  
  
Line 2,924: Line 2,530:
 
           caseIgnoreStringSyntax
 
           caseIgnoreStringSyntax
 
   ::= {pilotAttributeType 43}
 
   ::= {pilotAttributeType 43}
 
  
 
   uniqueIdentifier ATTRIBUTE
 
   uniqueIdentifier ATTRIBUTE
Line 2,931: Line 2,536:
 
           (SIZE (1 .. ub-unique-identifier))
 
           (SIZE (1 .. ub-unique-identifier))
 
   ::= {pilotAttributeType 44}
 
   ::= {pilotAttributeType 44}
 
  
 
   organizationalStatus ATTRIBUTE
 
   organizationalStatus ATTRIBUTE
Line 2,938: Line 2,542:
 
           (SIZE (1 .. ub-organizational-status))
 
           (SIZE (1 .. ub-organizational-status))
 
   ::= {pilotAttributeType 45}
 
   ::= {pilotAttributeType 45}
 
  
 
   janetMailbox ATTRIBUTE
 
   janetMailbox ATTRIBUTE
Line 2,945: Line 2,548:
 
           (SIZE (1 .. ub-janet-mailbox))
 
           (SIZE (1 .. ub-janet-mailbox))
 
   ::= {pilotAttributeType 46}
 
   ::= {pilotAttributeType 46}
 
  
 
   mailPreferenceOption ATTRIBUTE
 
   mailPreferenceOption ATTRIBUTE
Line 2,962: Line 2,564:
 
               }
 
               }
 
   ::= {pilotAttributeType 47}
 
   ::= {pilotAttributeType 47}
 
  
 
   buildingName ATTRIBUTE
 
   buildingName ATTRIBUTE
Line 2,968: Line 2,569:
 
           caseIgnoreStringSyntax
 
           caseIgnoreStringSyntax
 
           (SIZE (1 .. ub-building-name))
 
           (SIZE (1 .. ub-building-name))
 +
 +
  
  
Line 2,974: Line 2,577:
  
 
   ::= {pilotAttributeType 48}
 
   ::= {pilotAttributeType 48}
 
  
 
   dSAQuality ATTRIBUTE
 
   dSAQuality ATTRIBUTE
Line 2,980: Line 2,582:
 
           SINGLE VALUE
 
           SINGLE VALUE
 
   ::= {pilotAttributeType 49}
 
   ::= {pilotAttributeType 49}
 
  
 
   singleLevelQuality ATTRIBUTE
 
   singleLevelQuality ATTRIBUTE
 
           WITH ATTRIBUTE-SYNTAX DataQualitySyntax
 
           WITH ATTRIBUTE-SYNTAX DataQualitySyntax
 
           SINGLE VALUE
 
           SINGLE VALUE
 
  
 
   subtreeMinimumQuality ATTRIBUTE
 
   subtreeMinimumQuality ATTRIBUTE
Line 2,992: Line 2,592:
 
             -- Defaults to singleLevelQuality
 
             -- Defaults to singleLevelQuality
 
   ::= {pilotAttributeType 51}
 
   ::= {pilotAttributeType 51}
 
  
 
   subtreeMaximumQuality ATTRIBUTE
 
   subtreeMaximumQuality ATTRIBUTE
Line 2,999: Line 2,598:
 
             -- Defaults to singleLevelQuality
 
             -- Defaults to singleLevelQuality
 
   ::= {pilotAttributeType 52}
 
   ::= {pilotAttributeType 52}
 
  
 
   personalSignature ATTRIBUTE
 
   personalSignature ATTRIBUTE
Line 3,008: Line 2,606:
 
       (SIZE (1 .. ub-personal-signature))
 
       (SIZE (1 .. ub-personal-signature))
 
   ::= {pilotAttributeType 53}
 
   ::= {pilotAttributeType 53}
 
  
 
   dITRedirect ATTRIBUTE
 
   dITRedirect ATTRIBUTE
Line 3,014: Line 2,611:
 
           distinguishedNameSyntax
 
           distinguishedNameSyntax
 
   ::= {pilotAttributeType 54}
 
   ::= {pilotAttributeType 54}
 
  
 
   audio ATTRIBUTE
 
   audio ATTRIBUTE
Line 3,021: Line 2,617:
 
       (SIZE (1 .. ub-audio))
 
       (SIZE (1 .. ub-audio))
 
   ::= {pilotAttributeType 55}
 
   ::= {pilotAttributeType 55}
 +
 +
  
  
Line 3,029: Line 2,627:
 
           WITH ATTRIBUTE SYNTAX caseIgnoreStringSyntax
 
           WITH ATTRIBUTE SYNTAX caseIgnoreStringSyntax
 
   ::= {pilotAttributeType 56}
 
   ::= {pilotAttributeType 56}
 
  
  
 
   -- Generally useful syntaxes
 
   -- Generally useful syntaxes
 
  
 
   caseIgnoreIA5StringSyntax ATTRIBUTE-SYNTAX
 
   caseIgnoreIA5StringSyntax ATTRIBUTE-SYNTAX
 
           IA5String
 
           IA5String
 
           MATCHES FOR EQUALITY SUBSTRINGS
 
           MATCHES FOR EQUALITY SUBSTRINGS
 
  
 
   iA5StringSyntax ATTRIBUTE-SYNTAX
 
   iA5StringSyntax ATTRIBUTE-SYNTAX
 
       IA5String
 
       IA5String
 
       MATCHES FOR EQUALITY SUBSTRINGS
 
       MATCHES FOR EQUALITY SUBSTRINGS
 
  
 
   -- Syntaxes to support the DNS attributes
 
   -- Syntaxes to support the DNS attributes
 
 
   DNSRecordSyntax ATTRIBUTE-SYNTAX
 
   DNSRecordSyntax ATTRIBUTE-SYNTAX
 
           IA5String
 
           IA5String
 
           MATCHES FOR EQUALITY
 
           MATCHES FOR EQUALITY
 
  
 
   NRSInformationSyntax ATTRIBUTE-SYNTAX
 
   NRSInformationSyntax ATTRIBUTE-SYNTAX
 
           NRSInformation
 
           NRSInformation
 
           MATCHES FOR EQUALITY
 
           MATCHES FOR EQUALITY
 
  
 
   NRSInformation ::=  SET {
 
   NRSInformation ::=  SET {
Line 3,064: Line 2,655:
 
                   Addressing-info }
 
                   Addressing-info }
 
           }
 
           }
 +
 +
  
  
Line 3,080: Line 2,673:
  
 
   -- Upper bounds on length of attribute values
 
   -- Upper bounds on length of attribute values
 
  
 
   ub-document-identifier INTEGER ::= 256
 
   ub-document-identifier INTEGER ::= 256
 
 
   ub-document-location INTEGER ::= 256
 
   ub-document-location INTEGER ::= 256
 
 
   ub-document-title INTEGER ::= 256
 
   ub-document-title INTEGER ::= 256
 
 
   ub-document-version INTEGER ::= 256
 
   ub-document-version INTEGER ::= 256
 
 
   ub-favourite-drink INTEGER ::= 256
 
   ub-favourite-drink INTEGER ::= 256
 
 
   ub-host INTEGER ::= 256
 
   ub-host INTEGER ::= 256
 
 
   ub-information INTEGER ::= 2048
 
   ub-information INTEGER ::= 2048
 
 
   ub-unique-identifier INTEGER ::= 256
 
   ub-unique-identifier INTEGER ::= 256
 
 
   ub-personal-title INTEGER ::= 256
 
   ub-personal-title INTEGER ::= 256
 
 
   ub-photo INTEGER ::= 250000
 
   ub-photo INTEGER ::= 250000
 
 
   ub-rfc822-mailbox INTEGER ::= 256
 
   ub-rfc822-mailbox INTEGER ::= 256
 
 
   ub-room-number INTEGER ::= 256
 
   ub-room-number INTEGER ::= 256
 
 
   ub-text-or-address INTEGER ::= 256
 
   ub-text-or-address INTEGER ::= 256
 
 
   ub-user-class INTEGER ::= 256
 
   ub-user-class INTEGER ::= 256
 
 
   ub-user-identifier INTEGER ::= 256
 
   ub-user-identifier INTEGER ::= 256
 
 
   ub-organizational-status INTEGER ::= 256
 
   ub-organizational-status INTEGER ::= 256
 
 
   ub-janet-mailbox INTEGER ::= 256
 
   ub-janet-mailbox INTEGER ::= 256
 
 
   ub-building-name INTEGER ::= 256
 
   ub-building-name INTEGER ::= 256
 +
  ub-personal-signature ::= 50000
 +
  ub-audio INTEGER ::= 250000
  
  ub-personal-signature ::= 50000
 
  
  ub-audio INTEGER ::= 250000
 
  
  
Line 3,133: Line 2,708:
  
 
Security Considerations
 
Security Considerations
 
 
Security issues are not discussed in this memo.
 
Security issues are not discussed in this memo.
 
+
10.  Authors' Addresses
== Authors' Addresses ==
 
 
 
 
Paul Barker
 
Paul Barker
 
Department of Computer Science
 
Department of Computer Science
Line 3,144: Line 2,716:
 
London WC1E 6BT
 
London WC1E 6BT
 
England
 
England
 
 
Phone: +44 71-380-7366
 
Phone: +44 71-380-7366
  
 
  
 
Steve Kille
 
Steve Kille
Line 3,155: Line 2,725:
 
London WC1E 6BT
 
London WC1E 6BT
 
England
 
England
 
 
Phone: +44 71-380-7294
 
Phone: +44 71-380-7294
  
 
 
Or send comments to the discussion group: <[email protected]>.
 
Or send comments to the discussion group: <[email protected]>.

Revision as of 00:52, 23 September 2020



Network Working Group P. Barker Request for Comments: 1274 S. Kille

                                           University College London
                                                       November 1991
              The COSINE and Internet X.500 Schema

Status of this Memo This RFC specifies an IAB standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "IAB Official Protocol Standards" for the standardization state and status of this protocol. Distribution of this memo is unlimited. Abstract This document suggests an X.500 Directory Schema, or Naming Architecture, for use in the COSINE and Internet X.500 pilots. The schema is independent of any specific implementation. As well as indicating support for the standard object classes and attributes, a large number of generally useful object classes and attributes are also defined. An appendix to this document includes a machine processable version of the schema. This document also proposes a mechanism for allowing the schema to evolve in line with emerging requirements. Proformas to support this process are included. Corrections and additions to the schema should be sent to na- [email protected] list, as described within.

Introduction

Directory Services are a fundamental requirement of both human and computer communications' systems. Human users need to be able to look up various details about other people: for example, telephone numbers, facsimile numbers and paper mail addresses. Computing systems also need Directory Services for several purposes: for example, to support address look-ups for a variety of services, and to support user-friendly naming and distribution lists in electronic mail systems. Directory Services have recently been standardised and published as the 1988 CCITT X.500 / ISO IS9594 recommendations [1]. The standard provides a good basis for the provision of real services, and a considerable amount of Directory Service piloting activity is




currently underway. In the U.S., the PSI White Pages Pilot [4] has stimulated use of X.500 on the Internet. In Britain, the U.K. Academic Community Directory Pilot [5] is similarly promoting use of X.500.

Motivation and aims of this document

In a number of areas the X.500 standard only provides a basis for services. One such area is the Directory's Schema or Naming Architecture. The standard defines a number of useful object classes, in X.521, and attribute types, in X.520. These are intended to be generally useful across a range of directory applications. However, while these standard definitions are a useful starting point, they are insufficient as a basis for a large scale pilot directory. While it is possible for directory administrators to define their own sets of additional attribute types and object classes, this is undesirable for some common attributes and objects. The same objects and attribute types would be privately defined many times over. This would result in the directory's generality being diminished as remote systems would be unable to determine the semantics of these privately defined data types. A number of useful additions to the standard definitions were made in this note's forerunner, "The THORN and RARE Naming Architecture" [2]. These have been heavily used in early X.500 piloting activities. Furthermore, both the THORN and Quipu X.500 implementations have made use of these definitions. Since the afore-mentioned note was issued, a number of further requirements have come to light as the volume and variety of piloting activity has increased. Yet further requirements seem likely as the scale of X.500 pilot services increases. Thus, it is argued that it is not sufficient to merely reissue an updated version of the original note. The schema is a "living document" that needs procedures for:

  - Allowing submission of requests for new attributes and
    object classes to be added into the schema;
  - Allowing groups of object classes and attribute types
    defined elsewhere to be integrated into the schema.
  - Checking for the redundancy of any previously defined
    attribute types and object classes.

This document attempts to establish procedures to allow for the




continual updating of the schema. Two proformas are set out for this purpose. In addition, descriptive detail is provided for the additional object classes and attribute types defined in the schema. These descriptions follow the style used in X.520 and X.521. Finally, also following the style adopted in the standards documents, appendices will include the entire schema. Plain text versions of the document's appendices are intended to be machine processable to allow derivation of a system's schema tables. Appendix C lists all the schema's object classes and attribute types in their respective ASN.1 macro formats. The scope and intended remit of this coordination activity should be clearly understood.

  - Esoteric and local, highly experimental requirements  should
    continue to be met by private definitions.
  - Requirements which have support from more than one site will
    usually be integrated into the schema.  Put in other words,
    the tendency will be for the inclusion, as opposed to the
    exclusion, of useful additions to the schema.
  - An attempt will be made to avoid duplication of object
    classes and attribute types for essentially similar real
    world objects.

What conformance to this schema means

It is not reasonable to require that a DSA which supports this schema has specific code to handle each of the defined syntaxes. However, the following requirements are made of a system which claims conformance to this specification:

  1. A DSA shall be able to store all of the attributes and
     object class values specified.  (Note that this implies
     support for all the object classes and attribute types
     required by strong authentication as defined in X.509.)
  2. A DUA shall be able to identify each attribute type and
     object class to the user, with an appropriate representation
     (e.g., a string).
  3. These statement are qualified for large attributes values
     (>1kbyte).  A conforming DSA does not have to store such
     attribute values, and a DUA does not have to display such
     values, although it must indicate their presence.

The following are desirable, but not required:




  1. For a DSA to match correctly on the basis of all attribute
     syntaxes defined
  2. For a DSA to enforce the Object Class schema implied by
     these definitions
  3. For a DUA to correctly display the attribute values
     (syntaxes) defined
  4. For DUAs and DSAs to maintain compatibility with a previous
     version of the schema.

Requesting new object classes and attribute types

This section defines procedures for requesting new object classes and attribute types to be added to the schema. Proformas for object classes and attribute types are specified, and examples given of how to use them. A mechanism for making requests for large groups of new object classes and attribute types is described in the next section. As stated earlier, it is anticipated that the schema will evolve considerably over time. As X.500 is used to support a widening range of applications, there will be requirements for extensions to the schema. This document proposes formalising this procedure by requiring requests for additions to the schema to be submitted as completed proformas. This stipulation will greatly simplify subsequent revisions of the schema. There is one qualification to the above with respect to requests for modifications to an existing object class. If a modification to an object class merely involves additional, optional attributes, the object class will be enhanced as requested. Systems are expected to be resilient to such changes to the schema. However, requests to modify an object class, such that the mandatory attribute types require altering, will not be met. Instead, a new object class will be created, and the original object class expired following the scheme described in the next main section. It is anticipated that most requests for modifications to the schema will be met without any need for editorial intervention. Sometimes, however, some discussion between the submitter of a request and the schema's editor may be required. For example, the editor may have to judge the relative merits of two very similar requests and, as a result, one of the parties may not get quite what they want. In cases such as this where the submitter of a request feels aggrieved about an editorial decision, the requestor may appeal to a broader community by explaining their views to the mailing list osi- [email protected]. Heed will be paid to any consensus that emerges




from discussions on the schema on this list. If it proves that this list is used almost solely for discussions on schema issues, a separate discussion list will be created. To facilitate the production of the afore-mentioned proformas, tools are included in Appendix B which will verify that a proforma has been correctly formatted. Completed proformas should be mailed to [email protected] 4.1. Object Class proforma This section gives an example, completed proforma for a new object class, alcoholic drink. A proforma for object class specified in BNF is included in Appendix A.

 Object Class: Alcoholic Drink
 Description: The Alcoholic Drink object class is used to define
 entries representing intoxicating beverages.
 ASN1OCMacro: alcoholicDrink OBJECT-CLASS
     SUBCLASS OF drink
     MUST CONTAIN {
         percentAlcohol}
     MAY CONTAIN {
         normalServing,
         hue}

An object class description consists of three fields, separated by blank lines. The keywords Object Class, Description and ASN1OCMacro, and their suffixed colons, must be included exactly as above. The Object Class field should be used for a textual description of the object class. This will be at most three or four words. The Description field should contain some explanatory text about the intended use of the object class. This can run to a number of lines. The ASN1OCMacro field should follow the definition of the object class macro as specified in X.501. The above example shows the main features. There are many more examples which can studied in the section defining the Pilot Object Classes. 4.2. Attribute type proforma This section gives an example completed proforma for a new attribute type, hue (one of the attribute types in the alcoholic drink object




class).

 Attribute Type: Hue
 Description: The Hue attribute type specifies the hue of
 an object.  (Note that a description may run to several
 lines.)
 OCMust:
 OCMay: alcoholicDrink
 ASN1ATMacro:hue ATTRIBUTE
     WITH ATTRIBUTE SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-hue))
 ub-hue INTEGER ::= 256

An attribute type description consists of five fields, separated by blank lines. The keywords Attribute Type, Description, OCMust, OCMay and ASN1ATMacro, and their suffixed colons, must be included exactly as above. The Attribute Type field should be used for a textual description of the attribute type. This will be at most three or four words. The Description field should contain some explanatory text about the intended use of the attribute type. This can run to a number of lines. The OCMust field should contain a comma-separated list of object classes for which this attribute is mandatory. The OCMay field should contain a comma-separated list of object classes for which this attribute is optional. The ASN1ATMacro field should follow the definition of the attribute macro as specified in X.501. The above example shows some of the features. In particular, please note the format for specifying size constraints.

Integrating groups of object classes and attribute types.

This section describes two mechanisms that may be employed to allow the integration of a substantial number of new object classes and attribute types into the schema.





The first mechanism allows for the transition of groups of related, privately defined object classes and attribute types into the schema. An example of when such a transition might be appropriate is when some experimental use of the Directory is widely adopted within the pilot. Such a transition will be made if the following conditions hold:

  - The definitions are well structured: i.e., they are not
    scattered over a multiplicity of object identifier subtrees.
  - The definitions are in use at a number of sites, and having
    to adopt new object identifiers would be unnecessarily
    disruptive.

A second mechanism allows for the allocation of an object subtree for a group of new definitions. A pilotGroups object identifier has been defined for this purpose. This method will be suitable for an experiment requiring a considerable number of new object identifiers to be defined. This approach allows for flexibility during experimentation and should simplify both the management and the coherence of the pilot's object identifiers. In both cases, the object classes, attribute types and syntaxes should be defined and described in an RFC. It is suggested that such documents should follow the style used in this document for object class and attribute type definitions. A reference will be given in this schema to the document containing the definitions.

Removing "old" object classes and attribute types.

It is also important that object classes and attribute types which are no longer used or useful are removed from the schema. Some object classes and attribute types initially defined as pilot extensions may be included as standard definitions in future versions of the standard. In such a case, it is important that there should be a fairly rapid transition to the standard definitions. Another possibility is that newer, more specific definitions obviate the original definitions. Two things are essential. First, it is crucial that "old" definitions are retired as gracefully as possible. The intention to retire a definition will be sent to the [email protected] mail list. In the absence of objections, the definition will be marked for expiry with a given expiry date. The definition will remain in the schema until the expiry date. Users of the schema should ensure that they make the transition to new, alternative definitions in the interim.





Second, users of the schema must have the right to argue for the retention of definitions which they regard as necessary, there being no other definitions which closely meet their requirements. It is clearly impossible to lay down hard and fast rules on this point, as no two instances will ever be quite the same. It is intended that the refereeing on these matters will be sympathetic! As for requests for additions, an aggrieved user can "go to arbitration" by initiating a discussion on the [email protected] mail list.

Object Identifiers

Some additional object identifiers are defined for this schema. These are also reproduced in Appendix C.

 data OBJECT IDENTIFIER ::= {ccitt 9}
 pss OBJECT IDENTIFIER ::= {data 2342}
 ucl OBJECT IDENTIFIER ::= {pss 19200300}
 pilot OBJECT IDENTIFIER ::= {ucl 100}
 pilotAttributeType OBJECT IDENTIFIER ::= {pilot 1}
 pilotAttributeSyntax OBJECT IDENTIFIER ::= {pilot 3}
 pilotObjectClass OBJECT IDENTIFIER ::= {pilot 4}
 pilotGroups OBJECT IDENTIFIER ::= {pilot 10}
 iA5StringSyntax OBJECT IDENTIFIER ::= {pilotAttributeSyntax 4}
 caseIgnoreIA5StringSyntax OBJECT IDENTIFIER ::=
                                       {pilotAttributeSyntax 5}

Object Classes

8.1. X.500 standard object classes A number of generally useful object classes are defined in X.521, and these are supported. Refer to that document for descriptions of the suggested usage of these object classes. The ASN.1 for these object classes is reproduced for completeness in Appendix C. 8.2. X.400 standard object classes A number of object classes defined in X.400 are supported. Refer to X.402 for descriptions of the usage of these object classes. The ASN.1 for these object classes is reproduced for completeness in Appendix C. 8.3. COSINE/Internet object classes This section attempts to fuse together the object classes designed for use in the COSINE and Internet pilot activities. Descriptions




are given of the suggested usage of these object classes. The ASN.1 for these object classes is also reproduced in Appendix C. 8.3.1. Pilot Object The PilotObject object class is used as a sub-class to allow some common, useful attributes to be assigned to entries of all other object classes.

 pilotObject OBJECT-CLASS
     SUBCLASS OF top
     MAY CONTAIN {
         info,
         photo,
         manager,
         uniqueIdentifier,
         lastModifiedTime,
         lastModifiedBy,
         dITRedirect,
         audio}
 ::= {pilotObjectClass 3}

8.3.2. Pilot Person The PilotPerson object class is used as a sub-class of person, to allow the use of a number of additional attributes to be assigned to entries of object class person.

 pilotPerson OBJECT-CLASS
     SUBCLASS OF person
     MAY CONTAIN {
                 userid,
                 textEncodedORAddress,
                 rfc822Mailbox,
                 favouriteDrink,
                 roomNumber,
                 userClass,
                 homeTelephoneNumber,
                 homePostalAddress,
                 secretary,
                 personalTitle,
                 preferredDeliveryMethod,
                 businessCategory,
                 janetMailbox,
                 otherMailbox,
                 mobileTelephoneNumber,
                 pagerTelephoneNumber,
                 organizationalStatus,




                 mailPreferenceOption,
                 personalSignature}
 ::= {pilotObjectClass 4}

8.3.3. Account The Account object class is used to define entries representing computer accounts. The userid attribute should be used for naming entries of this object class.

 account OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         userid}
     MAY CONTAIN {
         description,
         seeAlso,
         localityName,
         organizationName,
         organizationalUnitName,
         host}
 ::= {pilotObjectClass 5}

8.3.4. Document The Document object class is used to define entries which represent documents.

 document OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         documentIdentifier}
     MAY CONTAIN {
         commonName,
         description,
         seeAlso,
         localityName,
         organizationName,
         organizationalUnitName,
         documentTitle,
         documentVersion,
         documentAuthor,
         documentLocation,
         documentPublisher}
 ::= {pilotObjectClass 6}






8.3.5. Room The Room object class is used to define entries representing rooms. The commonName attribute should be used for naming pentries of this object class.

 room OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         commonName}
     MAY CONTAIN {
         roomNumber,
         description,
         seeAlso,
         telephoneNumber}
 ::= {pilotObjectClass 7}

8.3.6. Document Series The Document Series object class is used to define an entry which represents a series of documents (e.g., The Request For Comments papers).

 documentSeries OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         commonName}
     MAY CONTAIN {
         description,
         seeAlso,
         telephoneNumber,
         localityName,
         organizationName,
         organizationalUnitName}
 ::= {pilotObjectClass 9}

8.3.7. Domain The Domain object class is used to define entries which represent DNS or NRS domains. The domainComponent attribute should be used for naming entries of this object class. The usage of this object class is described in more detail in [3].

 domain OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         domainComponent}
     MAY CONTAIN {




         associatedName,
         organizationName,
         organizationalAttributeSet}
 ::= {pilotObjectClass 13}

8.3.8. RFC822 Local Part The RFC822 Local Part object class is used to define entries which represent the local part of RFC822 mail addresses. This treats this part of an RFC822 address as a domain. The usage of this object class is described in more detail in [3].

 rFC822localPart OBJECT-CLASS
     SUBCLASS OF domain
     MAY CONTAIN {
         commonName,
         surname,
         description,
         seeAlso,
         telephoneNumber,
         postalAttributeSet,
         telecommunicationAttributeSet}
 ::= {pilotObjectClass 14}

8.3.9. DNS Domain The DNS Domain (Domain NameServer) object class is used to define entries for DNS domains. The usage of this object class is described in more detail in [3].

 dNSDomain OBJECT-CLASS
     SUBCLASS OF domain
     MAY CONTAIN {
         ARecord,
         MDRecord,
         MXRecord,
         NSRecord,
         SOARecord,
         CNAMERecord}
 ::= {pilotObjectClass 15}

8.3.10. Domain Related Object The Domain Related Object object class is used to define entries which represent DNS/NRS domains which are "equivalent" to an X.500 domain: e.g., an organisation or organisational unit. The usage of this object class is described in more detail in [3].





 domainRelatedObject OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         associatedDomain}
 ::= {pilotObjectClass 17}

8.3.11. Friendly Country The Friendly Country object class is used to define country entries in the DIT. The object class is used to allow friendlier naming of countries than that allowed by the object class country. The naming attribute of object class country, countryName, has to be a 2 letter string defined in ISO 3166.

 friendlyCountry OBJECT-CLASS
     SUBCLASS OF country
     MUST CONTAIN {
         friendlyCountryName}
 ::= {pilotObjectClass 18}

8.3.12. Simple Security Object The Simple Security Object object class is used to allow an entry to have a userPassword attribute when an entry's principal object classes do not allow userPassword as an attribute type.

 simpleSecurityObject OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         userPassword }
 ::= {pilotObjectClass 19}

8.3.13. Pilot Organization The PilotOrganization object class is used as a sub-class of organization and organizationalUnit to allow a number of additional attributes to be assigned to entries of object classes organization and organizationalUnit.

 pilotOrganization OBJECT-CLASS
     SUBCLASS OF organization, organizationalUnit
     MAY CONTAIN {
                 buildingName}
 ::= {pilotObjectClass 20}






8.3.14. Pilot DSA The PilotDSA object class is used as a sub-class of the dsa object class to allow additional attributes to be assigned to entries for DSAs.

 pilotDSA OBJECT-CLASS
     SUBCLASS OF dsa
     MUST CONTAIN {
         dSAQuality}
 ::= {pilotObjectClass 21}

8.3.15. Quality Labelled Data The Quality Labelled Data object class is used to allow the assignment of the data quality attributes to subtrees in the DIT. See [8] for more details.

 qualityLabelledData OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         dSAQuality}
     MAY CONTAIN {
         subtreeMinimumQuality,
         subtreeMaximumQuality}
 ::= {pilotObjectClass 22}

Attribute Types

9.1. X.500 standard attribute types A number of generally useful attribute types are defined in X.520, and these are supported. Refer to that document for descriptions of the suggested usage of these attribute types. The ASN.1 for these attribute types is reproduced for completeness in Appendix C. 9.2. X.400 standard attribute types The standard X.400 attribute types are supported. See X.402 for full details. The ASN.1 for these attribute types is reproduced in Appendix C. 9.3. COSINE/Internet attribute types This section describes all the attribute types defined for use in the COSINE and Internet pilots. Descriptions are given as to the suggested usage of these attribute types. The ASN.1 for these




attribute types is reproduced in Appendix C. 9.3.1. Userid The Userid attribute type specifies a computer system login name.

 userid ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-user-identifier))
 ::= {pilotAttributeType 1}

9.3.2. Text Encoded O/R Address The Text Encoded O/R Address attribute type specifies a text encoding of an X.400 O/R address, as specified in RFC 987. The use of this attribute is deprecated as the attribute is intended for interim use only. This attribute will be the first candidate for the attribute expiry mechanisms!

 textEncodedORAddress ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
     (SIZE (1 .. ub-text-encoded-or-address))
 ::= {pilotAttributeType 2}

9.3.3. RFC 822 Mailbox The RFC822 Mailbox attribute type specifies an electronic mailbox attribute following the syntax specified in RFC 822. Note that this attribute should not be used for greybook or other non-Internet order mailboxes.

 rfc822Mailbox ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreIA5StringSyntax
         (SIZE (1 .. ub-rfc822-mailbox))
 ::= {pilotAttributeType 3}

9.3.4. Information The Information attribute type specifies any general information pertinent to an object. It is recommended that specific usage of this attribute type is avoided, and that specific requirements are met by other (possibly additional) attribute types.

 info ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX




         caseIgnoreStringSyntax
         (SIZE (1 .. ub-information))
 ::= {pilotAttributeType 4}

9.3.5. Favourite Drink The Favourite Drink attribute type specifies the favourite drink of an object (or person).

 favouriteDrink ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-favourite-drink))
 ::= {pilotAttributeType 5}

9.3.6. Room Number The Room Number attribute type specifies the room number of an object. Note that the commonName attribute should be used for naming room objects.

 roomNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-room-number))
 ::= {pilotAttributeType 6}

9.3.7. Photo The Photo attribute type specifies a "photograph" for an object. This should be encoded in G3 fax as explained in recommendation T.4, with an ASN.1 wrapper to make it compatible with an X.400 BodyPart as defined in X.420.

 IMPORT  G3FacsimileBodyPart  FROM  {   mhs-motis   ipms   modules
 information-objects }
 photo ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         CHOICE {
             g3-facsimile [3] G3FacsimileBodyPart
             }
     (SIZE (1 .. ub-photo))
 ::= {pilotAttributeType 7}






9.3.8. User Class The User Class attribute type specifies a category of computer user. The semantics placed on this attribute are for local interpretation. Examples of current usage od this attribute in academia are undergraduate student, researcher, lecturer, etc. Note that the organizationalStatus attribute may now often be preferred as it makes no distinction between computer users and others.

 userClass ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-user-class))
 ::= {pilotAttributeType 8}

9.3.9. Host The Host attribute type specifies a host computer.

 host ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-host))
 ::= {pilotAttributeType 9}

9.3.10. Manager The Manager attribute type specifies the manager of an object represented by an entry.

 manager ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         distinguishedNameSyntax
 ::= {pilotAttributeType 10}

9.3.11. Document Identifier The Document Identifier attribute type specifies a unique identifier for a document.

 documentIdentifier ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-document-identifier))
 ::= {pilotAttributeType 11}






9.3.12. Document Title The Document Title attribute type specifies the title of a document.

 documentTitle ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
     (SIZE (1 .. ub-document-title))
 ::= {pilotAttributeType 12}

9.3.13. Document Version The Document Version attribute type specifies the version number of a document.

 documentVersion ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-document-version))
 ::= {pilotAttributeType 13}

9.3.14. Document Author The Document Author attribute type specifies the distinguished name of the author of a document.

 documentAuthor ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         distinguishedNameSyntax
 ::= {pilotAttributeType 14}

9.3.15. Document Location The Document Location attribute type specifies the location of the document original.

 documentLocation ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-document-location))
 ::= {pilotAttributeType 15}

9.3.16. Home Telephone Number The Home Telephone Number attribute type specifies a home telephone number associated with a person. Attribute values should follow the agreed format for international telephone numbers: i.e., "+44 71 123 4567".




 homeTelephoneNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         telephoneNumberSyntax
 ::= {pilotAttributeType 20}

9.3.17. Secretary The Secretary attribute type specifies the secretary of a person. The attribute value for Secretary is a distinguished name.

 secretary ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         distinguishedNameSyntax
 ::= {pilotAttributeType 21}

9.3.18. Other Mailbox The Other Mailbox attribute type specifies values for electronic mailbox types other than X.400 and rfc822.

 otherMailbox ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         SEQUENCE {
                 mailboxType PrintableString, -- e.g. Telemail
                 mailbox IA5String  -- e.g. X378:Joe
         }
 ::= {pilotAttributeType 22}

9.3.19. Last Modified Time The Last Modified Time attribute type specifies the last time, in UTC time, that an entry was modified. Ideally, this attribute should be maintained by the DSA.

 lastModifiedTime ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         uTCTimeSyntax
 ::= {pilotAttributeType 23}

9.3.20. Last Modified By The Last Modified By attribute specifies the distinguished name of the last user to modify the associated entry. Ideally, this attribute should be maintained by the DSA.

 lastModifiedBy ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         distinguishedNameSyntax




 ::= {pilotAttributeType 24}

9.3.21. Domain Component The Domain Component attribute type specifies a DNS/NRS domain. For example, "uk" or "ac".

 domainComponent ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreIA5StringSyntax
         SINGLE VALUE
 ::= {pilotAttributeType 25}
9.3.22.  DNS ARecord

The A Record attribute type specifies a type A (Address) DNS resource record [6] [7].

 aRecord ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         DNSRecordSyntax
 ::= {pilotAttributeType 26}

9.3.23. MX Record The MX Record attribute type specifies a type MX (Mail Exchange) DNS resource record [6] [7].

 mXRecord ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         DNSRecordSyntax
 ::= {pilotAttributeType 28}

9.3.24. NS Record The NS Record attribute type specifies an NS (Name Server) DNS resource record [6] [7].

 nSRecord ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         DNSRecordSyntax
 ::= {pilotAttributeType 29}

9.3.25. SOA Record The SOA Record attribute type specifies a type SOA (Start of Authority) DNS resorce record [6] [7].





 sOARecord ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         DNSRecordSyntax
 ::= {pilotAttributeType 30}

9.3.26. CNAME Record The CNAME Record attribute type specifies a type CNAME (Canonical Name) DNS resource record [6] [7].

 cNAMERecord ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         iA5StringSyntax
 ::= {pilotAttributeType 31}

9.3.27. Associated Domain The Associated Domain attribute type specifies a DNS or NRS domain which is associated with an object in the DIT. For example, the entry in the DIT with a distinguished name "C=GB, O=University College London" would have an associated domain of "UCL.AC.UK. Note that all domains should be represented in rfc822 order. See [3] for more details of usage of this attribute.

 associatedDomain ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreIA5StringSyntax
 ::= {pilotAttributeType 37}

9.3.28. Associated Name The Associated Name attribute type specifies an entry in the organisational DIT associated with a DNS/NRS domain. See [3] for more details of usage of this attribute.

 associatedName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         distinguishedNameSyntax
 ::= {pilotAttributeType 38}

9.3.29. Home postal address The Home postal address attribute type specifies a home postal address for an object. This should be limited to up to 6 lines of 30 characters each.

 homePostalAddress ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX




         postalAddress
         MATCHES FOR EQUALITY
 ::= {pilotAttributeType 39}

9.3.30. Personal Title The Personal Title attribute type specifies a personal title for a person. Examples of personal titles are "Ms", "Dr", "Prof" and "Rev".

 personalTitle ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-personal-title))
 ::= {pilotAttributeType 40}

9.3.31. Mobile Telephone Number The Mobile Telephone Number attribute type specifies a mobile telephone number associated with a person. Attribute values should follow the agreed format for international telephone numbers: i.e., "+44 71 123 4567".

 mobileTelephoneNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         telephoneNumberSyntax
 ::= {pilotAttributeType 41}

9.3.32. Pager Telephone Number The Pager Telephone Number attribute type specifies a pager telephone number for an object. Attribute values should follow the agreed format for international telephone numbers: i.e., "+44 71 123 4567".

 pagerTelephoneNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         telephoneNumberSyntax
 ::= {pilotAttributeType 42}

9.3.33. Friendly Country Name The Friendly Country Name attribute type specifies names of countries in human readable format. The standard attribute country name must be one of the two-letter codes defined in ISO 3166.

 friendlyCountryName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
 ::= {pilotAttributeType 43}




9.3.34. Unique Identifier The Unique Identifier attribute type specifies a "unique identifier" for an object represented in the Directory. The domain within which the identifier is unique, and the exact semantics of the identifier, are for local definition. For a person, this might be an institution-wide payroll number. For an organisational unit, it might be a department code.

 uniqueIdentifier ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-unique-identifier))
 ::= {pilotAttributeType 44}

9.3.35. Organisational Status The Organisational Status attribute type specifies a category by which a person is often referred to in an organisation. Examples of usage in academia might include undergraduate student, researcher, lecturer, etc. A Directory administrator should probably consider carefully the distinctions between this and the title and userClass attributes.

 organizationalStatus ATTRIBUTE
         WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-organizational-status))
 ::= {pilotAttributeType 45}

9.3.36. Janet Mailbox The Janet Mailbox attribute type specifies an electronic mailbox attribute following the syntax specified in the Grey Book of the Coloured Book series. This attribute is intended for the convenience of U.K users unfamiliar with rfc822 and little-endian mail addresses. Entries using this attribute MUST also include an rfc822Mailbox attribute.

 janetMailbox ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreIA5StringSyntax
         (SIZE (1 .. ub-janet-mailbox))
 ::= {pilotAttributeType 46}






9.3.37. Mail Preference Option An attribute to allow users to indicate a preference for inclusion of their names on mailing lists (electronic or physical). The absence of such an attribute should be interpreted as if the attribute was present with value "no-list-inclusion". This attribute should be interpreted by anyone using the directory to derive mailing lists, and its value respected.

 mailPreferenceOption ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX ENUMERATED {
             no-list-inclusion(0),
             any-list-inclusion(1),  -- may be added to any lists
             professional-list-inclusion(2)
                                     -- may be added to lists
                                     -- which the list provider
                                     -- views as related to the
                                     -- users professional inter-
                                     -- ests, perhaps evaluated
                                     -- from the business of the
                                     -- organisation or keywords
                                     -- in the entry.
             }
 ::= {pilotAttributeType 47}

9.3.38. Building Name The Building Name attribute type specifies the name of the building where an organisation or organisational unit is based.

 buildingName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-building-name))
 ::= {pilotAttributeType 48}

9.3.39. DSA Quality The DSA Quality attribute type specifies the purported quality of a DSA. It allows a DSA manager to indicate the expected level of availability of the DSA. See [8] for details of the syntax.

 dSAQuality ATTRIBUTE
         WITH ATTRIBUTE-SYNTAX DSAQualitySyntax
         SINGLE VALUE
 ::= {pilotAttributeType 49}





9.3.40. Single Level Quality The Single Level Quality attribute type specifies the purported data quality at the level immediately below in the DIT. See [8] for details of the syntax.

 singleLevelQuality ATTRIBUTE
         WITH ATTRIBUTE-SYNTAX DataQualitySyntax
         SINGLE VALUE
 ::= {pilotAttributeType 50}

9.3.41. Subtree Minimum Quality The Subtree Minimum Quality attribute type specifies the purported minimum data quality for a DIT subtree. See [8] for more discussion and details of the syntax.

 subtreeMinimumQuality ATTRIBUTE
         WITH ATTRIBUTE-SYNTAX DataQualitySyntax
         SINGLE VALUE
            -- Defaults to singleLevelQuality
 ::= {pilotAttributeType 51}

9.3.42. Subtree Maximum Quality The Subtree Maximum Quality attribute type specifies the purported maximum data quality for a DIT subtree. See [8] for more discussion and details of the syntax.

 subtreeMaximumQuality ATTRIBUTE
         WITH ATTRIBUTE-SYNTAX DataQualitySyntax
         SINGLE VALUE
            -- Defaults to singleLevelQuality
 ::= {pilotAttributeType 52}

9.3.43. Personal Signature The Personal Signature attribute type allows for a representation of a person's signature. This should be encoded in G3 fax as explained in recommendation T.4, with an ASN.1 wrapper to make it compatible with an X.400 BodyPart as defined in X.420.

 IMPORT  G3FacsimileBodyPart  FROM  {   mhs-motis   ipms   modules
 information-objects }
 personalSignature ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         CHOICE {




             g3-facsimile [3] G3FacsimileBodyPart
             }
     (SIZE (1 .. ub-personal-signature))
 ::= {pilotAttributeType 53}

9.3.44. DIT Redirect The DIT Redirect attribute type is used to indicate that the object described by one entry now has a newer entry in the DIT. The entry containing the redirection attribute should be expired after a suitable grace period. This attribute may be used when an individual changes his/her place of work, and thus acquires a new organisational DN.

 dITRedirect ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         distinguishedNameSyntax
 ::= {pilotAttributeType 54}

9.3.45. Audio The Audio attribute type allows the storing of sounds in the Directory. The attribute uses a u-law encoded sound file as used by the "play" utility on a Sun 4. This is an interim format.

 audio ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         Audio
     (SIZE (1 .. ub-audio))
 ::= {pilotAttributeType 55}

9.3.46. Publisher of Document

The Publisher of Document attribute is the person and/or organization that published a document.

 documentPublisher ATTRIBUTE
         WITH ATTRIBUTE SYNTAX caseIgnoreStringSyntax
 ::= {pilotAttributeType 56}

9.4. Generally useful syntaxes

 caseIgnoreIA5StringSyntax ATTRIBUTE-SYNTAX
         IA5String
         MATCHES FOR EQUALITY SUBSTRINGS





 iA5StringSyntax ATTRIBUTE-SYNTAX
     IA5String
     MATCHES FOR EQUALITY SUBSTRINGS
 -- Syntaxes to support the DNS attributes
 DNSRecordSyntax ATTRIBUTE-SYNTAX
         IA5String
         MATCHES FOR EQUALITY
 NRSInformationSyntax ATTRIBUTE-SYNTAX
         NRSInformation
         MATCHES FOR EQUALITY
 NRSInformation ::=  SET {
                 [0] Context,
                 [1] Address-space-id,
                 routes [2] SEQUENCE OF SEQUENCE {
                 Route-cost,
                 Addressing-info }
         }

9.5. Upper bounds on length of attribute values

 ub-document-identifier INTEGER ::= 256
 ub-document-location INTEGER ::= 256
 ub-document-title INTEGER ::= 256
 ub-document-version INTEGER ::= 256
 ub-favourite-drink INTEGER ::= 256
 ub-host INTEGER ::= 256
 ub-information INTEGER ::= 2048
 ub-unique-identifier INTEGER ::= 256
 ub-personal-title INTEGER ::= 256
 ub-photo INTEGER ::= 250000




 ub-rfc822-mailbox INTEGER ::= 256
 ub-room-number INTEGER ::= 256
 ub-text-or-address INTEGER ::= 256
 ub-user-class INTEGER ::= 256
 ub-user-identifier INTEGER ::= 256
 ub-organizational-status INTEGER ::= 256
 ub-janet-mailbox INTEGER ::= 256
 ub-building-name INTEGER ::= 256
 ub-personal-signature ::= 50000
 ub-audio INTEGER ::= 250000

References

 [1]  CCITT/ISO, "X.500, The Directory - overview of concepts,
      models and services, CCITT /ISO IS 9594.
 [2]  Kille, S., "The THORN and RARE X.500 Naming Architecture, in
      University College London, Department of Computer Science
      Research Note 89/48, May 1989.
 [3]  Kille, S., "X.500 and Domains", RFC 1279, University College
      London, November 1991.
 [4]  Rose, M., "PSI/NYSERNet White Pages Pilot Project: Status
      Report", Technical Report 90-09-10-1, published by NYSERNet
      Inc, 1990.
 [5]  Craigie, J., "UK Academic Community Directory Service Pilot
      Project, pp. 305-310 in Computer Networks and ISDN Systems
      17 (1989), published by North Holland.
 [6]  Mockapetris, P., "Domain Names - Concepts and Facilities",
      RFC 1034, USC/Information Sciences Institute, November 1987.
 [7]  Mockapetris, P., "Domain Names - Implementation and
      Specification, RFC 1035, USC/Information Sciences Institute,
      November 1987.
 [8]  Kille, S., "Handling QOS (Quality of service) in the




      Directory," publication in process, March 1991.

APPENDIX A - Object Class and Attribute Type proformas These are specified in BNF. First some useful definitions, common to both proformas.

 EOL ::= -- the end of line character(s)
 BlankLine ::= -- a line consisting solely of an EOL character
 String ::= <anychar> | <String> <anychar>
 anychar ::= --any character occurring in general text, excluding
             -- the end of line character
 lString ::= <lowercase> <otherstring>
 lowercase ::= [a-z]
 UString ::= <uppercase> <otherstring>
 uppercase ::= [A-Z]
 otherstring ::= <otherchar> | <otherstring> <otherchar>
 otherchar ::= <lowercase> | <uppercase> | <digit>
 Integer ::= <digit> | <Integer> <digit>
 digit ::= [0-9]

Object Class

 OCProforma ::= <ObjectClassName> <BlankLine> <Description> \
                <BlankLine> <OCMacro>
 ObjectClassName ::= "ObjectClass:" <String> <EOL>
 Description ::= "Description:" <DescriptiveText> <EOL>
 DescriptiveText ::= <String> | <DescriptiveText> <EOL> <String>
 OCMacro ::= "ASN1OCMacro:" <ObjectClassMacro>
 -- The definition of ObjectClassMacro is adapted from
 -- that given in X.501




 ObjectClassMacro ::= <OCname> "OBJECT-CLASS" <SubclassOf> \
                      <MandatoryAttributes> <OptionalAttributes>
 OCName ::= <lString>
 SubclassOf ::= "SUBCLASS OF" Subclasses | <empty>
 Subclasses ::= <Subclass> | <Subclass> "," <Subclasses>
 Subclass ::= <OCName>
 MandatoryAttributes ::= "MUST CONTAIN {" <Attributes> "}" \
                         | <empty>
 OptionalAttributes ::= "MAY CONTAIN {" <Attributes> "}" | <empty>
 Attributes ::= <AttributeTerm> | <AttributeTerm> "," <Attributes>
 AttributeTerm ::= <Attribute> | <AttributeSet>
 Attribute ::= <lString>
 AttributeSet ::= <lString>

Attribute Type

 ATProforma ::= <AttributeTypeName> <BlankLine> <Description> \
                <BlankLine> <OCMust> <Blankline> <OCMay> \
                <BlankLine> <ATMacro>
 AttributeTypeName ::= "Attribute Type:" <String> <EOL>
 Description ::= "Description:" <DescriptiveText> <EOL>
 DescriptiveText ::= <String> | <DescriptiveText> <EOL> <String>
 OCMust ::= "OCMust:" <OCList> <EOL>
 OCList ::= <OCName> | <OCList> "," <OCName> | <empty>
 OCMay ::= "OCMay:" <OCList> <EOL>
 ATMacro ::= "ASN1ATMacro:" <AttributeTypeMacro>
 -- The definition of AttributeTypeMacro is adapted from that
 -- given in X.501
 AttributeTypeMacro ::= <ATname> "ATTRIBUTE" <AttributeSyntax> \




                        <Multivalued> | <empty>
 ATName ::= <lString>
 AttributeSyntax ::= "WITH ATTRIBUTE SYNTAX" SyntaxChoice
 SyntaxChoice ::= <Syntax> <Constraint> | <ASN1Type> <MatchTypes>
 Syntax ::= <lString>
 Constraint ::= "(" ConstraintAlternative ")" | <empty>
 ConstraintAlternative ::= StringConstraint | IntegerConstraint
 StringConstraint ::= "SIZE" "("  SizeConstraint ")"
 SizeConstraint ::= SingleValue | Range
 SingleValue ::= <Integer>
 Range ::= <Integer> ".." <Integer>
 IntegerConstraint ::= Range
 ASN1Type ::= <UString>
 -- one of ASN.1's base types: e.g. PrintableString,
 -- NumericString, etc.
 MatchTypes ::= "MATCHES FOR" Matches | <empty>
 Matches ::= Match | Matches Match
 Match ::= "EQUALITY" | "SUBSTRINGS" | "ORDERING"
 Multivalued ::= "SINGLE VALUE" | "MULTI VALUE" | <empty>

APPENDIX B - Format checking tools This section includes the source for format checking tools for the two proformas. The tools are written as Bourne shell scripts for UNIX systems.

Object class format checker

 sed 's/ *: */:/' |
 awk '
 BEGIN {




         state = "initial"
 }
 /^$/ {
         next
 }
 /^Object Class:/ {
         n = index($0, ":")
         if (state != "initial")
         {
                 print "Already got object class " oc
                 print "Got another object class " substr($0, n+1)
                 state = "notOK"
                 exit 1
         }
         oc = substr($0, n+1)
         state = "gotOC"
         next
 }
 /^Description:/ {
         n = index($0, ":")
         if (state != "gotOC")
         {
                 print "Got Description: " substr($0, n+1)
                 for (i = 0; i < 2 && getline > 0; i++)
                         print $0
                 print "..."
                 if (state == "initial")
                         print "Expecting Object Class:"
                 else
                         print "Expecting ASN1OCMacro:"
                 state = "notOK"
                 exit 1
         }
         while (getline > 0)
                 if (length($0) > 0)
                         continue
                 else
                         break
         state = "gotDesc"
         next
 }
 /^ASN1OCMacro:/ {
         n = index($0, ":")
         if (state != "gotDesc")




         {
                 print "Got ASN1Macro: " substr($0, n+1)
                 for (i = 0; i < 2 && getline > 0; i++)
                         print $0
                 print "..."
                 if (state == "initial")
                         print "Expecting Object Class:"
                 else
                         print "Expecting Description:"
                 state = "notOK"
                 exit 1
         }
         state = "OK"
         exit 0
 }
 {
         print "Parsing has got confused on seeing line: " $0
         state = "notOK"
         exit 1
 }
 END {
         if (state == "OK")
                 print "Input looks OK"
 }

Attribute Type format checker

 sed 's/ *: */:/' |
 awk '
 BEGIN {
         state = "initial"
 }
 /^$/ {
         next
 }
 /^Attribute Type:/ {
         n = index($0, ":")
         if (state != "initial")
         {
                 got = "Attribute Type:"
                 exit 1
         }




         state = "gotAT"
         next
 }
 /^Description:/ {
         n = index($0, ":")
         if (state != "gotAT")
         {
                 got = "Description:"
                 exit 1
         }
         while (getline > 0)
                 if (length($0) > 0)
                         continue
                 else
                         break
         state = "gotDesc"
         next
 }
 /^OCMust:/ {
         n = index($0, ":")
         if (state != "gotDesc")
         {
                 got = "OCMust:"
                 exit 1
         }
         state = "gotOCMust"
         next
 }
 /^OCMay:/ {
         n = index($0, ":")
         if (state != "gotOCMust")
         {
                 got = "OCMay:"
                 exit 1
         }
         state = "gotOCMay"
         next
 }
 /^ASN1ATMacro:/ {
         n = index($0, ":")
         if (state != "gotOCMay")
         {
                 got = "ASN1ATMacro:"
                 exit 1




         }
         state = "OK"
         exit 0
 }
 {
         print "Parsing has got confused on seeing line: " $0
         state = "notOK"
         exit 1
 }
 END {
         if (state == "initial")
                 print "Expecting Attribute Type:"
         else if (state == "gotAT")
                 print "Expecting Description:"
         else if (state == "gotDesc")
                 print "Expecting OCMust:"
         else if (state == "gotOCMust")
                 print "Expecting OCMay:"
         else if (state == "gotOCMay")
                 print "Expecting ASN1ATMacro:"
         if (state != "OK")
                 print "Got " got
         else
                 print "Input looks OK"
 }

APPENDIX C - Summary of all Object Classes and Attribute Types

 -- Some Important Object Identifiers
 data OBJECT IDENTIFIER ::= {ccitt 9}
 pss OBJECT IDENTIFIER ::= {data 2342}
 ucl OBJECT IDENTIFIER ::= {pss 19200300}
 pilot OBJECT IDENTIFIER ::= {ucl 100}
 pilotAttributeType OBJECT IDENTIFIER ::= {pilot 1}
 pilotAttributeSyntax OBJECT IDENTIFIER ::= {pilot 3}
 pilotObjectClass OBJECT IDENTIFIER ::= {pilot 4}
 pilotGroups OBJECT IDENTIFIER ::= {pilot 10}
 iA5StringSyntax OBJECT IDENTIFIER ::= {pilotAttributeSyntax 4}
 caseIgnoreIA5StringSyntax OBJECT IDENTIFIER ::=
                                       {pilotAttributeSyntax 5}





 -- Standard Object Classes
 top OBJECT-CLASS
     MUST CONTAIN {
         objectClass}
 ::= {objectClass 0}
 alias OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         aliasedObjectName}
 ::= {objectClass 1}
 country OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         countryName}
     MAY CONTAIN {
         description,
         searchGuide}
 ::= {objectClass 2}
 locality OBJECT-CLASS
     SUBCLASS OF top
     MAY CONTAIN {
         description,
         localityName,
         stateOrProvinceName,
         searchGuide,
         seeAlso,
         streetAddress}
 ::= {objectClass 3}
 organization OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         organizationName}
     MAY CONTAIN {
         organizationalAttributeSet}
 ::= {objectClass 4}






 organizationalUnit OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         organizationalUnitName}
     MAY CONTAIN {
         organizationalAttributeSet}
 ::= {objectClass 5}
 person OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         commonName,
         surname}
     MAY CONTAIN {
         description,
         seeAlso,
         telephoneNumber,
         userPassword}
 ::= {objectClass 6}
 organizationalPerson OBJECT-CLASS
     SUBCLASS OF person
     MAY CONTAIN {
         localeAttributeSet,
         organizationalUnitName,
         postalAttributeSet,
         telecommunicationAttributeSet,
         title}
 ::= {objectClass 7}
 organizationalRole OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         commonName}
     MAY CONTAIN {
         description,
         localeAttributeSet,
         organizationalUnitName,
         postalAttributeSet,
         preferredDeliveryMethod,
         roleOccupant,
         seeAlso,
         telecommunicationAttributeSet}
 ::= {objectClass 8}





 groupOfNames OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         commonName,
         member}
     MAY CONTAIN {
         description,
         organizationName,
         organizationalUnitName,
         owner,
         seeAlso,
         businessCategory}
 ::= {objectClass 9}
 residentialPerson OBJECT-CLASS
     SUBCLASS OF person
     MUST CONTAIN {
         localityName}
     MAY CONTAIN {
         localeAttributeSet,
         postalAttributeSet,
         preferredDeliveryMethod,
         telecommunicationAttributeSet,
         businessCategory}
 ::= {objectClass 10}
 applicationProcess OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         commonName}
     MAY CONTAIN {
         description,
         localityName,
         organizationalUnitName,
         seeAlso}
 ::= {objectClass 11}
 applicationEntity OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         commonName,
         presentationAddress}
     MAY CONTAIN {
         description,
         localityName,




         organizationName,
         organizationalUnitName,
         seeAlso,
         supportedApplicationContext}
 ::= {objectClass 12}
 dSA OBJECT-CLASS
     SUBCLASS OF applicationEntity
     MAY CONTAIN {
         knowledgeInformation}
 ::= {objectClass 13}
 device OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         commonName}
     MAY CONTAIN {
         description,
         localityName,
         organizationName,
         organizationalUnitName,
         owner,
         seeAlso,
         serialNumber}
 ::= {objectClass 14}
 strongAuthenticationUser OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         userCertificate}
 ::= {objectClass 15}
 certificationAuthority OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         cACertificate,
         certificateRevocationList,
         authorityRevocationList}
     MAY CONTAIN {
         crossCertificatePair}
 ::= {objectClass 16}






 -- Standard MHS Object Classes
 mhsDistributionList OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         commonName,
         mhsDLSubmitPermissions,
         mhsORAddresses}
     MAY CONTAIN {
         description,
         organizationName,
         organizationalUnitName,
         owner,
         seeAlso,
         mhsDeliverableContentTypes,
         mhsdeliverableEits,
         mhsDLMembers,
         mhsPreferredDeliveryMethods}
 ::= {mhsObjectClass 0}
 mhsMessageStore OBJECT-CLASS
     SUBCLASS OF applicationEntity
     MAY CONTAIN {
         description,
         owner,
         mhsSupportedOptionalAttributes,
         mhsSupportedAutomaticActions,
         mhsSupportedContentTypes}
 ::= {mhsObjectClass 1}
 mhsMessageTransferAgent OBJECT-CLASS
     SUBCLASS OF applicationEntity
     MAY CONTAIN {
         description,
         owner,
         mhsDeliverableContentLength}
 ::= {mhsObjectClass 2}
 mhsOrganizationalUser OBJECT-CLASS
     SUBCLASS OF organizationalPerson
     MUST CONTAIN {
         mhsORAddresses}
     MAY CONTAIN {
         mhsDeliverableContentLength,
         mhsDeliverableContentTypes,




         mhsDeliverableEits,
         mhsMessageStoreName,
         mhsPreferredDeliveryMethods }
 ::= {mhsObjectClass 3}
 mhsResidentialUser OBJECT-CLASS
     SUBCLASS OF residentialPerson
     MUST CONTAIN {
         mhsORAddresses}
     MAY CONTAIN {
         mhsDeliverableContentLength,
         mhsDeliverableContentTypes,
         mhsDeliverableEits,
         mhsMessageStoreName,
         mhsPreferredDeliveryMethods }
 ::= {mhsObjectClass 4}
 mhsUserAgent OBJECT-CLASS
     SUBCLASS OF applicationEntity
     MAY CONTAIN {
         mhsDeliverableContentLength,
         mhsDeliverableContentTypes,
         mhsDeliverableEits,
         mhsORAddresses,
         owner}
 ::= {mhsObjectClass 5}


 -- Pilot Object Classes
 pilotObject OBJECT-CLASS
     SUBCLASS OF top
     MAY CONTAIN {
         info,
         photo,
         manager,
         uniqueIdentifier,
         lastModifiedTime,
         lastModifiedBy,
         dITRedirect,
         audio}
 ::= {pilotObjectClass 3}





 pilotPerson OBJECT-CLASS
     SUBCLASS OF person
     MAY CONTAIN {
                 userid,
                 textEncodedORAddress,
                 rfc822Mailbox,
                 favouriteDrink,
                 roomNumber,
                 userClass,
                 homeTelephoneNumber,
                 homePostalAddress,
                 secretary,
                 personalTitle,
                 preferredDeliveryMethod,
                 businessCategory,
                 janetMailbox,
                 otherMailbox,
                 mobileTelephoneNumber,
                 pagerTelephoneNumber,
                 organizationalStatus,
                 mailPreferenceOption,
                 personalSignature}
 ::= {pilotObjectClass 4}
 account OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         userid}
     MAY CONTAIN {
         description,
         seeAlso,
         localityName,
         organizationName,
         organizationalUnitName,
         host}
 ::= {pilotObjectClass 5}
 document OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         documentIdentifier}
     MAY CONTAIN {
         commonName,
         description,
         seeAlso,
         localityName,




         organizationName,
         organizationalUnitName,
         documentTitle,
         documentVersion,
         documentAuthor,
         documentLocation,
         documentPublisher}
 ::= {pilotObjectClass 6}
 room OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         commonName}
     MAY CONTAIN {
         roomNumber,
         description,
         seeAlso,
         telephoneNumber}
 ::= {pilotObjectClass 7}
 documentSeries OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         commonName}
     MAY CONTAIN {
         description,
         seeAlso,
         telephoneNumber,
         localityName,
         organizationName,
         organizationalUnitName}
 ::= {pilotObjectClass 9}
 domain OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         domainComponent}
     MAY CONTAIN {
         associatedName,
         organizationName,
         organizationalAttributeSet}
 ::= {pilotObjectClass 13}






 rFC822localPart OBJECT-CLASS
     SUBCLASS OF domain
     MAY CONTAIN {
         commonName,
         surname,
         description,
         seeAlso,
         telephoneNumber,
         postalAttributeSet,
         telecommunicationAttributeSet}
 ::= {pilotObjectClass 14}
 dNSDomain OBJECT-CLASS
     SUBCLASS OF domain
     MAY CONTAIN {
         ARecord,
         MDRecord,
         MXRecord,
         NSRecord,
         SOARecord,
         CNAMERecord}
 ::= {pilotObjectClass 15}
 domainRelatedObject OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         associatedDomain}
 ::= {pilotObjectClass 17}
 friendlyCountry OBJECT-CLASS
     SUBCLASS OF country
     MUST CONTAIN {
         friendlyCountryName}
 ::= {pilotObjectClass 18}
 simpleSecurityObject OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         userPassword }
 ::= {pilotObjectClass 19}
 pilotOrganization OBJECT-CLASS
     SUBCLASS OF organization, organizationalUnit




     MAY CONTAIN {
                 buildingName}
 ::= {pilotObjectClass 20}
 pilotDSA OBJECT-CLASS
     SUBCLASS OF dsa
     MUST CONTAIN {
         dSAQuality}
 ::= {pilotObjectClass 21}
 qualityLabelledData OBJECT-CLASS
     SUBCLASS OF top
     MUST CONTAIN {
         dSAQuality}
     MAY CONTAIN {
         subtreeMinimumQuality,
         subtreeMaximumQuality}
 ::= {pilotObjectClass 22}


 -- Standard Attribute Types
 objectClass ObjectClass
     ::= {attributeType 0}
 aliasedObjectName AliasedObjectName
     ::= {attributeType 1}
 knowledgeInformation ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreString
     ::= {attributeType 2}
 commonName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-common-name))
     ::= {attributeType 3}
 surname ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-surname))




     ::= {attributeType 4}
 serialNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX printableStringSyntax
     (SIZE (1..ub-serial-number))
     ::= {attributeType 5}
 countryName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX PrintableString
     (SIZE (1..ub-country-code))
     SINGLE VALUE
     ::= {attributeType 6}
 localityName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-locality-name))
     ::= {attributeType 7}
 stateOrProvinceName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-state-name))
     ::= {attributeType 8}
 streetAddress ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-street-address))
     ::= {attributeType 9}
 organizationName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-organization-name))
     ::= {attributeType 10}
 organizationalUnitName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-organizational-unit-name))
     ::= {attributeType 11}
 title ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax




     (SIZE (1..ub-title))
     ::= {attributeType 12}
 description ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-description))
     ::= {attributeType 13}
 searchGuide ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX Guide
     ::= {attributeType 14}
 businessCategory ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-business-category))
     ::= {attributeType 15}
 postalAddress ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX PostalAddress
     MATCHES FOR EQUALITY
     ::= {attributeType 16}
 postalCode ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-postal-code))
     ::= {attributeType 17}
 postOfficeBox ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-post-office-box))
     ::= {attributeType 18}
 physicalDeliveryOfficeName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX caseIgnoreStringSyntax
     (SIZE (1..ub-physical-office-name))
     ::= {attributeType 19}
 telephoneNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX telephoneNumberSyntax
     (SIZE (1..ub-telephone-number))




     ::= {attributeType 20}
 telexNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX TelexNumber
     (SIZE (1..ub-telex))
     ::= {attributeType 21}
 teletexTerminalIdentifier ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX TeletexTerminalIdentifier
     (SIZE (1..ub-teletex-terminal-id))
     ::= {attributeType 22}
 facsimileTelephoneNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX FacsimileTelephoneNumber
     ::= {attributeType 23}
 x121Address ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX NumericString
     (SIZE (1..ub-x121-address))
     ::= {attributeType 24}
 internationaliSDNNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX NumericString
     (SIZE (1..ub-isdn-address))
     ::= {attributeType 25}
 registeredAddress ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX PostalAddress
     ::= {attributeType 26}
 destinationIndicator ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX PrintableString
     (SIZE (1..ub-destination-indicator))
     MATCHES FOR EQUALITY SUBSTRINGS
     ::= {attributeType 27}
 preferredDeliveryMethod ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX deliveryMethod
     ::= {attributeType 28}





 presentationAddress ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX PresentationAddress
     MATCHES FOR EQUALITY
     ::= {attributeType 29}
 supportedApplicationContext ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX objectIdentifierSyntax
     ::= {attributeType 30}
 member ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
     ::= {attributeType 31}
 owner ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
     ::= {attributeType 32}
 roleOccupant ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
     ::= {attributeType 33}
 seeAlso ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX distinguishedNameSyntax
     ::= {attributeType 34}
 userPassword ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX Userpassword
     ::= {attributeType 35}
 userCertificate ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX UserCertificate
     ::= {attributeType 36}
 cACertificate ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX cACertificate
     ::= {attributeType 37}
 authorityRevocationList ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX AuthorityRevocationList




     ::= {attributeType 38}
 certificateRevocationList ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX CertificateRevocationList
     ::= {attributeType 39}
 crossCertificatePair ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX CrossCertificatePair
     ::= {attributeType 40}


 -- Standard MHS Attribute Types
 mhsDeliverableContentLength ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX integer
     ::= {mhsAttributeType 0}
 mhsDeliverableContentTypes ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX oID
     ::= {mhsAttributeType 1}
 mhsDeliverableEits ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX oID
     ::= {mhsAttributeType 2}
 mhsDLMembers ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX oRName
     ::= {mhsAttributeType 3}
 mhsDLSubmitPermissions ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX dLSubmitPermission
     ::= {mhsAttributeType 4}
 mhsMessageStoreName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX dN
     ::= {mhsAttributeType 5}






 mhsORAddresses ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX oRAddress
     ::= {mhsAttributeType 6}
 mhsPreferredDeliveryMethods ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX deliveryMethod
     ::= {mhsAttributeType 7}
 mhsSupportedAutomaticActions ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX oID
     ::= {mhsAttributeType 8}
 mhsSupportedContentTypes ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX oID
     ::= {mhsAttributeType 9}
 mhsSupportedOptionalAttributes ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX oID
     ::= {mhsAttributeType 10}


 -- Pilot Attribute Types
 userid ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-user-identifier))
 ::= {pilotAttributeType 1}
 textEncodedORAddress ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
     (SIZE (1 .. ub-text-encoded-or-address))
 ::= {pilotAttributeType 2}
 rfc822Mailbox ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreIA5StringSyntax
         (SIZE (1 .. ub-rfc822-mailbox))




 ::= {pilotAttributeType 3}
 info ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-information))
 ::= {pilotAttributeType 4}
 favouriteDrink ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-favourite-drink))
 ::= {pilotAttributeType 5}
 roomNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-room-number))
 ::= {pilotAttributeType 6}
 photo ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         CHOICE {
             g3-facsimile [3] G3FacsimileBodyPart
             }
     (SIZE (1 .. ub-photo))
 ::= {pilotAttributeType 7}
 userClass ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-user-class))
 ::= {pilotAttributeType 8}
 host ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-host))
 ::= {pilotAttributeType 9}






 manager ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         distinguishedNameSyntax
 ::= {pilotAttributeType 10}
 documentIdentifier ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-document-identifier))
 ::= {pilotAttributeType 11}
 documentTitle ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
     (SIZE (1 .. ub-document-title))
 ::= {pilotAttributeType 12}
 documentVersion ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-document-version))
 ::= {pilotAttributeType 13}
 documentAuthor ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         distinguishedNameSyntax
 ::= {pilotAttributeType 14}
 documentLocation ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-document-location))
 ::= {pilotAttributeType 15}
 homeTelephoneNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         telephoneNumberSyntax
 ::= {pilotAttributeType 20}
 secretary ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX




         distinguishedNameSyntax
 ::= {pilotAttributeType 21}
 otherMailbox ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         SEQUENCE {
                 mailboxType PrintableString, -- e.g. Telemail
                 mailbox IA5String  -- e.g. X378:Joe
         }
 ::= {pilotAttributeType 22}
 lastModifiedTime ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         uTCTimeSyntax
 ::= {pilotAttributeType 23}
 lastModifiedBy ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         distinguishedNameSyntax
 ::= {pilotAttributeType 24}
 domainComponent ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreIA5StringSyntax
         SINGLE VALUE
 ::= {pilotAttributeType 25}
 aRecord ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         DNSRecordSyntax
 ::= {pilotAttributeType 26}
 mXRecord ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         DNSRecordSyntax
 ::= {pilotAttributeType 28}
 nSRecord ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         DNSRecordSyntax
 ::= {pilotAttributeType 29}




 sOARecord ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         DNSRecordSyntax
 ::= {pilotAttributeType 30}
 cNAMERecord ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         iA5StringSyntax
 ::= {pilotAttributeType 31}
 associatedDomain ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreIA5StringSyntax
 ::= {pilotAttributeType 37}
 associatedName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         distinguishedNameSyntax
 ::= {pilotAttributeType 38}
 homePostalAddress ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         postalAddress
         MATCHES FOR EQUALITY
 ::= {pilotAttributeType 39}
 personalTitle ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-personal-title))
 ::= {pilotAttributeType 40}
 mobileTelephoneNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         telephoneNumberSyntax
 ::= {pilotAttributeType 41}
 pagerTelephoneNumber ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         telephoneNumberSyntax
 ::= {pilotAttributeType 42}




 friendlyCountryName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
 ::= {pilotAttributeType 43}
 uniqueIdentifier ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-unique-identifier))
 ::= {pilotAttributeType 44}
 organizationalStatus ATTRIBUTE
         WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-organizational-status))
 ::= {pilotAttributeType 45}
 janetMailbox ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreIA5StringSyntax
         (SIZE (1 .. ub-janet-mailbox))
 ::= {pilotAttributeType 46}
 mailPreferenceOption ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX ENUMERATED {
             no-list-inclusion(0),
             any-list-inclusion(1),  -- may be added to any lists
             professional-list-inclusion(2)
                                     -- may be added to lists
                                     -- which the list provider
                                     -- views as related to the
                                     -- users professional inter-
                                     -- ests, perhaps evaluated
                                     -- from the business of the
                                     -- organisation or keywords
                                     -- in the entry.
             }
 ::= {pilotAttributeType 47}
 buildingName ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         caseIgnoreStringSyntax
         (SIZE (1 .. ub-building-name))




 ::= {pilotAttributeType 48}
 dSAQuality ATTRIBUTE
         WITH ATTRIBUTE-SYNTAX DSAQualitySyntax
         SINGLE VALUE
 ::= {pilotAttributeType 49}
 singleLevelQuality ATTRIBUTE
         WITH ATTRIBUTE-SYNTAX DataQualitySyntax
         SINGLE VALUE
 subtreeMinimumQuality ATTRIBUTE
         WITH ATTRIBUTE-SYNTAX DataQualitySyntax
         SINGLE VALUE
            -- Defaults to singleLevelQuality
 ::= {pilotAttributeType 51}
 subtreeMaximumQuality ATTRIBUTE
         WITH ATTRIBUTE-SYNTAX DataQualitySyntax
         SINGLE VALUE
            -- Defaults to singleLevelQuality
 ::= {pilotAttributeType 52}
 personalSignature ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         CHOICE {
             g3-facsimile [3] G3FacsimileBodyPart
             }
     (SIZE (1 .. ub-personal-signature))
 ::= {pilotAttributeType 53}
 dITRedirect ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         distinguishedNameSyntax
 ::= {pilotAttributeType 54}
 audio ATTRIBUTE
     WITH ATTRIBUTE-SYNTAX
         Audio
     (SIZE (1 .. ub-audio))
 ::= {pilotAttributeType 55}




 documentPublisher ATTRIBUTE
         WITH ATTRIBUTE SYNTAX caseIgnoreStringSyntax
 ::= {pilotAttributeType 56}


 -- Generally useful syntaxes
 caseIgnoreIA5StringSyntax ATTRIBUTE-SYNTAX
         IA5String
         MATCHES FOR EQUALITY SUBSTRINGS
 iA5StringSyntax ATTRIBUTE-SYNTAX
     IA5String
     MATCHES FOR EQUALITY SUBSTRINGS
 -- Syntaxes to support the DNS attributes
 DNSRecordSyntax ATTRIBUTE-SYNTAX
         IA5String
         MATCHES FOR EQUALITY
 NRSInformationSyntax ATTRIBUTE-SYNTAX
         NRSInformation
         MATCHES FOR EQUALITY
 NRSInformation ::=  SET {
                 [0] Context,
                 [1] Address-space-id,
                 routes [2] SEQUENCE OF SEQUENCE {
                 Route-cost,
                 Addressing-info }
         }









 -- Upper bounds on length of attribute values
 ub-document-identifier INTEGER ::= 256
 ub-document-location INTEGER ::= 256
 ub-document-title INTEGER ::= 256
 ub-document-version INTEGER ::= 256
 ub-favourite-drink INTEGER ::= 256
 ub-host INTEGER ::= 256
 ub-information INTEGER ::= 2048
 ub-unique-identifier INTEGER ::= 256
 ub-personal-title INTEGER ::= 256
 ub-photo INTEGER ::= 250000
 ub-rfc822-mailbox INTEGER ::= 256
 ub-room-number INTEGER ::= 256
 ub-text-or-address INTEGER ::= 256
 ub-user-class INTEGER ::= 256
 ub-user-identifier INTEGER ::= 256
 ub-organizational-status INTEGER ::= 256
 ub-janet-mailbox INTEGER ::= 256
 ub-building-name INTEGER ::= 256
 ub-personal-signature ::= 50000
 ub-audio INTEGER ::= 250000







Security Considerations Security issues are not discussed in this memo. 10. Authors' Addresses Paul Barker Department of Computer Science University College London Gower Street London WC1E 6BT England Phone: +44 71-380-7366 EMail: [email protected]

Steve Kille Department of Computer Science University College London Gower Street London WC1E 6BT England Phone: +44 71-380-7294 EMail: [email protected] Or send comments to the discussion group: <[email protected]>.