[Docs] [txt|pdf] [Tracker] [WG] [Email] [Diff1] [Diff2] [Nits]

Versions: 01 RFC 1488

Network Working Group                                        Tim Howes
INTERNET-DRAFT                                  University of Michigan
                                                Steve Hardcastle-Kille
                                             University College London
                                                         Wengyik Yeong
                                     Performance Systems International
                                                         Colin Robbins
                                                   X-Tel Services Ltd.


        The String Representation of Standard Attribute Syntaxes



1.  Status of this Memo

This draft document will be submitted to the RFC Editor as a standards
document. Distribution of this memo is unlimited. Please send comments
to the authors, or the discussion group <osi-ds@cs.ucl.ac.uk>.

This document is an Internet Draft.  Internet Drafts are working docu-
ments of the Internet Engineering Task Force (IETF), its Areas, and its
Working Groups. Note that other groups may also distribute working docu-
ments as Internet Drafts).

Internet Drafts are draft documents valid for a maximum of six months.
Internet Drafts may be updated, replaced, or obsoleted by other docu-
ments at any time.  It is not appropriate to use Internet Drafts as
reference material or to cite them other than as a "working draft" or
"work in progress."

Please check the I-D abstract listing contained in each Internet Draft
directory to learn the current status of this or any other Internet
Draft.

2.  Abstract

The lightweight directory protocols require that the contents of Attri-
buteValue fields in protocol elements be octet strings.  This document
defines the requirements that must be satisfied by encoding rules used
to render Directory attribute syntaxes into a form suitable for use in
the lightweight directory protocols, then goes on to define the encoding
rules for the standard set of attribute syntaxes defined in [1,2] and
[3].

The attribute syntax encodings defined in this document are adapted from
those used in the QUIPU X.500 implementation. The contributions of the
authors of the QUIPU implementation in the specification of the QUIPU



Expires 2/15/93                                                 [Page 1]


Syntax Encoding                                               March 1992


syntaxes [4] are gratefully acknowledged.

3.  Attribute Syntax Encoding Requirements.

This section defines general requirements for lightweight directory pro-
tocol attribute syntax encodings. All documents defining attribute syn-
tax encodings for use by the lightweight directory protocols are
expected to conform to these requirements.

The encoding rules defined for a given attribute syntax must produce
octet strings.  To the greatest extent possible, encoded octet strings
should be usable in their native encoded form for display purposes. In
particular, encoding rules for attribute syntaxes defining non-binary
values should produce strings that can be displayed with little or no
translation by clients implementing the lightweight directory protocols.

4.  Standard Attribute Syntax Encodings

For the purposes of defining the encoding rules for the standard attri-
bute syntaxes, the following auxiliary BNF definitions will be used:

     <a> ::= 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' |
             'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' |
             's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | 'A' |
             'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' |
             'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' |
             'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z'

     <d> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'

     <hex-digit> ::= <d> | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' |
                      'A' | 'B' | 'C' | 'D' | 'E' | 'F'

     <k> ::= <a> | '-'

     <p> ::= <a> | <d> | ''' | '(' | ')' | '+' | ',' | '-' | '.' |
             '/' | ':' | '?' | ' '

     <CRLF> ::= The ASCII newline character with hexadecimal value 0x0A

     <letterstring> ::= <a> | <a> <letterstring>

     <numericstring> ::= <d> | <d> <numericstring>

     <keystring> ::= <k> | <k> <keystring>

     <printablestring> ::= <p> | <p> <printablestring>




Expires 2/15/93                                                 [Page 2]


Syntax Encoding                                               March 1992


     <space> ::= ' ' | ' ' <space>


4.1.  Undefined

Values of type Undefined are encoded as if they were values of type
Octet String.

4.2.  Case Ignore String

A string of type caseIgnoreStringSyntax is encoded as the string value
itself.

4.3.  Case Exact String

The encoding of a string of type caseExactStringSyntax is the string
value itself.

4.4.  Printable String

The encoding of a string of type printableStringSyntax is the string
value itself.

4.5.  Numeric String

The encoding of a string of type numericStringSyntax is the string value
itself.

4.6.  Octet String

The encoding of a string of type octetStringSyntax is the string value
itself.

4.7.  Case Ignore IA5 String

The encoding of a string of type caseIgnoreIA5String is the string value
itself.

4.8.  IA5 String

The encoding of a string of type iA5StringSyntax is the string value
itself.

4.9.  T61 String

The encoding of a string of type t61StringSyntax is the string value
itself.




Expires 2/15/93                                                 [Page 3]


Syntax Encoding                                               March 1992


4.10.  Case Ignore List

Values of type caseIgnoreListSyntax are encoded according to the follow-
ing BNF:

     <caseignorelist> ::= <caseignorestring> |
                          <caseignorestring> '$' <caseignorelist>

     <caseignorestring> ::= a string encoded according to the rules for Case
                             Ignore String as above.


4.11.  Case Exact List

Values of type caseExactListSyntax are encoded according to the follow-
ing BNF:

     <caseexactlist> ::= <caseexactstring> |
                          <caseexactstring> '$' <caseexactlist>

     <caseexactstring> ::= a string encoded according to the rules for Case
                           Exact String as above.


4.12.  Distinguished Name

Values of type distinguishedNameSyntax are encoded to have the represen-
tation defined in [5].

4.13.  Boolean

Values of type booleanSyntax are encoded according to the following BNF:

     <boolean> ::= "TRUE" | "FALSE"

Boolean values have an encoding of "TRUE" if they are logically true,
and have an encoding of "FALSE" otherwise.

4.14.  Integer

Values of type integerSyntax are encoded as the decimal representation
of their values, with each decimal digit represented by the its charac-
ter equivalent. So the digit 1 is represented by the character '1', the
digit 2 is represented by the character '2' and so on.

4.15.  Object Identifier

Values of type objectIdentifierSyntax are encoded according to the



Expires 2/15/93                                                 [Page 4]


Syntax Encoding                                               March 1992


following BNF:

     <oid> ::= <descr> | <descr> '.' <numericoid> | <numericoid>

     <descr> ::= <keystring>

     <numericoid> ::= <numericstring> | <numericstring> '.' <numericoid>

In the above BNF, <descr> is the syntactic representation of an object
descriptor. When encoding values of type objectIdentifierSyntax, the
first encoding option should be used in preference to the second, which
should be used in preference to the third wherever possible. That is, in
encoding object identifiers, object descriptors (where assigned and
known by the implementation) should be used in preference to numeric
oids to the greatest extent possible. For example, in encoding the
object identifier representing an organizationName, the descriptor
``organizationName'' is preferable to ``ds.4.10'', which is in turn
preferable to the string ``2.5.4.10''.

4.16.  Telephone Number

Values of type telephoneNumberSyntax are encoded as if they were Print-
able String types.

4.17.  Telex Number

Values of type telexNumberSyntax are encoded according to the following
BNF:

     <telex-number> ::= <actual-number> '$' <country> '$' <answerback>

     <actual-number> ::= <printablestring>

     <country> ::= <printablestring>

     <answerback> ::= <printablestring>

In the above, <actual-number> is the syntactic representation of the number
portion of the TELEX number being encoded, <country> is the TELEX
country code, and <answerback> is the answerback code of a TELEX terminal.

4.18.  Teletex Terminal Identifier

Values of type teletexTerminalIdentifier are encoded according to the
following BNF:

     <teletex-id> ::= <printablestring> 0*( '$' <printablestring>)




Expires 2/15/93                                                 [Page 5]


Syntax Encoding                                               March 1992


In the above, the first <printablestring> is the encoding of the first
portion of the teletex terminal identifier to be encoded, and the subse-
quent 0 or more <printablestrings> are subsequent portions of the
teletex terminal identifier.

4.19.  Facsimile Telephone Number

Values of type FacsimileTelephoneNumber are encoded according to the
following BNF:

     <fax-number> ::= <printablestring> [ '$' <faxparameters> ]

     <faxparameters> ::= <faxparm> | <faxparm> '$' <faxparameters>

     <faxparm> ::= 'twoDimensional' | 'fineResolution' | 'unlimitedLength' |
                   'b4Length' | 'a3Width' | 'b4Width' | 'uncompressed'

In the above, the first <printablestring> is the actual fax number, and
the <faxparm> tokens represent fax parameters.

4.20.  Presentation Address

Values of type PresentationAddress are encoded to have the representa-
tion described in [6].

4.21.  UTC Time

Values of type uTCTimeSyntax are encoded as if they were Printable
Strings with the strings containing a UTCTime value.

4.22.  Guide (search guide)

Values of type Guide, such as values of the searchGuide attribute, are
encoded according to the following BNF:

     <guide-value> ::= [ <object-class> '#' ] <criteria>

     <object-class> ::= an encoded value of type objectIdentifierSyntax

     <criteria> ::= <criteria-item> | <criteria-set> | '!' <criteria>

     <criteria-set> ::= [ '(' ] <criteria> '&' <criteria-set> [ ')' ] |
                        [ '(' ] <criteria> '|' <criteria-set> [ ')' ]

     <criteria-item> ::= [ '(' ] <attributetype> '$' <match-type> [ ')' ]

     <match-type> ::= "EQ" | "SUBSTR" | "GE" | "LE" | "APPROX"




Expires 2/15/93                                                 [Page 6]


Syntax Encoding                                               March 1992


4.23.  Postal Address

Values of type PostalAddress are encoded according to the following BNF:

     <postal-address> ::= <t61string> | <t61string> '$' <postal-address>

In the above, each <t61string> component of a postal address value is
encoded as a value of type t61StringSyntax.

4.24.  User Password

Values of type userPasswordSyntax are encoded as if they were of type
octetStringSyntax.

4.25.  User Certificate

Values of type userCertificate are encoded according to the following
BNF:

     <certificate> ::= <signature> '#' <issuer> '#' <validity> '#' <subject>
                       '#' <public-key-info>

     <signature> ::= <algorithm-id>

     <issuer> ::= an encoded Distinguished Name

     <validity> ::= <not-before-time> '#' <not-after-time>

     <not-before-time> ::= <utc-time>

     <not-after-time> ::= <utc-time>

     <algorithm-parameters> ::=  <null> | <integervalue> |
                                 '{ASN}' <hex-string>

     <subject> ::= an encoded Distinguished Name

     <public-key-info> ::= <algorithm-id> '#' <encrypted-value>

     <encrypted-value> ::= <hex-string> | <hex-string> '-' <d>

     <algorithm-id> ::= <oid> '#' <algorithm-parameters>

     <utc-time> ::= an encoded UTCTime value

     <hex-string> ::= <hex-digit> | <hex-digit> <hex-string>





Expires 2/15/93                                                 [Page 7]


Syntax Encoding                                               March 1992


4.26.  CA Certificate

Values of type cACertificate are encoded as if the values were of type
userCertificate.

4.27.  Authority Revocation List

Values of type authorityRevocationList are encoded according to the fol-
lowing BNF:

     <certificate-list> ::= <signature> '#' <issuer> '#'
                            <utc-time> [ '#' <revoked-certificates> ]

     <revoked-certificates> ::= <algorithm> '#' <encrypted-value>
                                [ '#' 0*(<revoked-certificate>) '#']

     <revoked-certificates> ::= <subject> '#' <algorithm> '#'
                                <serial> '#' <utc-time>

The syntactic components <algorithm>, <issuer>, <encrypted-value>,
<utc-time>, <subject> and <serial> have the same definitions as in the
BNF for the userCertificate attribute syntax.

4.28.  Certificate Revocation List

Values of type certificateRevocationList are encoded as if the values
were of type authorityRevocationList.

4.29.  Cross Certificate Pair

Values of type crossCertificatePair are encoded according to the follow-
ing BNF:

     <certificate-pair> ::= <certificate> '|' <certificate>

The syntactic component <certificate> has the same definition as in the
BNF for the userCertificate attribute syntax.

4.30.  Delivery Method

Values of type deliveryMethod are encoded according to the following
BNF:

     <delivery-value> ::= <pdm> | <pdm> '$' <delivery-value>

     <pdm> ::= 'any' | 'mhs' | 'physical' | 'telex' | 'teletex' |
               'g3fax' | 'g4fax' | 'ia5' | 'videotex' | 'telephone'




Expires 2/15/93                                                 [Page 8]


Syntax Encoding                                               March 1992


4.31.  Other Mailbox

Values of the type otherMailboxSyntax are encoded according to the fol-
lowing BNF:

     <otherMailbox> ::= <mailbox-type> '$' <mailbox>

     <mailbox-type> ::= an encoded Printable String

     <mailbox> ::= an encoded IA5 String

In the above, <mailbox-type> represents the type of mail system in which
the mailbox resides, for example "Internet" or "MCIMail"; and <mailbox>
is the actual mailbox in the mail system defined by <mailbox-type>.

4.32.  Mail Preference

Values of type mailPreferenceOption are encoded according to the follow-
ing BNF:

     <mail-preference> ::= "NO-LISTS" | "ANY-LIST" | "PROFESSIONAL-LISTS"


4.33.  Photo

Values of type Photo are encoded as if they were octet strings contain-
ing JPEG images in the JPEG File Interchange Format (JFIF).

4.34.  Fax

Values of type Fax are encoded as if they were octet strings containing
Group 3 Fax images.

5.  Security Considerations

Security considerations are not discussed in this document.

6.  Bibliography

[1]  The Directory: Selected Attribute Syntaxes
     CCITT; Recommendation X.520

[2]  Information Processing Systems -- Open Systems Interconnection --
     The Directory: Selected Attribute Syntaxes

[3]  The COSINE and Internet X.500 Schema
     Paul Barker, Steve Hardcastle-Kille; Request for Comment (RFC) 1274




Expires 2/15/93                                                 [Page 9]


Syntax Encoding                                               March 1992


[4]  The ISO Development Environment: User's Manual -- Volume 5: QUIPU
     Colin Robbins, Stephen E. Hardcastle-Kille

[5]  A String Representation of Distinguished Names
     Steve Hardcastle-Kille;  OSI-DS document 23

[6]  A String Representation for Presentation Addresses
     Steve Hardcastle-Kille; Request for Comment (RFC) 1278











































Expires 2/15/93                                                [Page 10]


Html markup produced by rfcmarkup 1.129b, available from https://tools.ietf.org/tools/rfcmarkup/