home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1778.txt < prev    next >
Text File  |  1996-05-07  |  20KB  |  486 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                           T. Howes Request for Comments: 1778                        University of Michigan Obsoletes: 1488                                                 S. Kille Category: Standards Track                               ISODE Consortium                                                                 W. Yeong                                        Performance Systems International                                                               C. Robbins                                                               NeXor Ltd.                                                               March 1995 
  8.  
  9.          The String Representation of Standard Attribute Syntaxes 
  10.  
  11. Status of this Memo 
  12.  
  13.    This document specifies an Internet standards track protocol for the    Internet community, and requests discussion and suggestions for    improvements.  Please refer to the current edition of the "Internet    Official Protocol Standards" (STD 1) for the standardization state    and status of this protocol.  Distribution of this memo is unlimited. 
  14.  
  15. Abstract 
  16.  
  17.    The Lightweight Directory Access Protocol (LDAP) [9] requires that    the contents of AttributeValue fields in protocol elements be octet    strings.  This document defines the requirements that must be    satisfied by encoding rules used to render X.500 Directory attribute    syntaxes into a form suitable for use in the LDAP, then goes on to    define the encoding rules for the standard set of attribute syntaxes    defined in [1,2] and [3]. 
  18.  
  19. 1.  Attribute Syntax Encoding Requirements. 
  20.  
  21.    This section defines general requirements for lightweight directory    protocol attribute syntax encodings. All documents defining attribute    syntax encodings for use by the lightweight directory protocols are    expected to conform to these requirements. 
  22.  
  23.    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. 
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  Howes, Kille, Yeong & Robbins                                   [Page 1] 
  30.  RFC 1778                    Syntax Encoding                   March 1995 
  31.  
  32.  2.  Standard Attribute Syntax Encodings 
  33.  
  34.    For the purposes of defining the encoding rules for the standard    attribute syntaxes, the following auxiliary BNF definitions will be    used: 
  35.  
  36.      <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' 
  37.  
  38.      <d> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' 
  39.  
  40.      <hex-digit> ::= <d> | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' |                       'A' | 'B' | 'C' | 'D' | 'E' | 'F' 
  41.  
  42.      <k> ::= <a> | <d> | '-' 
  43.  
  44.      <p> ::= <a> | <d> | ''' | '(' | ')' | '+' | ',' | '-' | '.' |              '/' | ':' | '?' | ' ' 
  45.  
  46.      <CRLF> ::= The ASCII newline character with hexadecimal value 0x0A 
  47.  
  48.      <letterstring> ::= <a> | <a> <letterstring> 
  49.  
  50.      <numericstring> ::= <d> | <d> <numericstring> 
  51.  
  52.      <keystring> ::= <a> | <a> <anhstring> 
  53.  
  54.      <anhstring> ::= <k> | <k> <anhstring> 
  55.  
  56.      <printablestring> ::= <p> | <p> <printablestring> 
  57.  
  58.      <space> ::= ' ' | ' ' <space> 
  59.  
  60. 2.1.  Undefined 
  61.  
  62.    Values of type Undefined are encoded as if they were values of type    Octet String, with the string value being the BER-encoded version of    the value. 
  63.  
  64. 2.2.  Case Ignore String 
  65.  
  66.    A string of type caseIgnoreStringSyntax is encoded as the string    value itself. 
  67.  
  68.  
  69.  
  70.  Howes, Kille, Yeong & Robbins                                   [Page 2] 
  71.  RFC 1778                    Syntax Encoding                   March 1995 
  72.  
  73.  2.3.  Case Exact String 
  74.  
  75.    The encoding of a string of type caseExactStringSyntax is the string    value itself. 
  76.  
  77. 2.4.  Printable String 
  78.  
  79.    The encoding of a string of type printableStringSyntax is the string    value itself. 
  80.  
  81. 2.5.  Numeric String 
  82.  
  83.    The encoding of a string of type numericStringSyntax is the string    value itself. 
  84.  
  85. 2.6.  Octet String 
  86.  
  87.    The encoding of a string of type octetStringSyntax is the string    value itself. 
  88.  
  89. 2.7.  Case Ignore IA5 String 
  90.  
  91.    The encoding of a string of type caseIgnoreIA5String is the string    value itself. 
  92.  
  93. 2.8.  IA5 String 
  94.  
  95.    The encoding of a string of type iA5StringSyntax is the string value    itself. 
  96.  
  97. 2.9.  T61 String 
  98.  
  99.    The encoding of a string of type t61StringSyntax is the string value    itself. 
  100.  
  101. 2.10.  Case Ignore List 
  102.  
  103.    Values of type caseIgnoreListSyntax are encoded according to the    following BNF: 
  104.  
  105. <caseignorelist> ::= <caseignorestring> |                      <caseignorestring> '$' <caseignorelist> 
  106.  
  107. <caseignorestring> ::= a string encoded according to the rules for Case                        Ignore String as above. 
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  Howes, Kille, Yeong & Robbins                                   [Page 3] 
  114.  RFC 1778                    Syntax Encoding                   March 1995 
  115.  
  116.  2.11.  Case Exact List 
  117.  
  118.    Values of type caseExactListSyntax are encoded according to the    following BNF: 
  119.  
  120. <caseexactlist> ::= <caseexactstring> |                      <caseexactstring> '$' <caseexactlist> 
  121.  
  122. <caseexactstring> ::= a string encoded according to the rules for Case                       Exact String as above. 
  123.  
  124. 2.12.  Distinguished Name 
  125.  
  126.    Values of type distinguishedNameSyntax are encoded to have the    representation defined in [5]. 
  127.  
  128. 2.13.  Boolean 
  129.  
  130.    Values of type booleanSyntax are encoded according to the following    BNF: 
  131.  
  132.      <boolean> ::= "TRUE" | "FALSE" 
  133.  
  134.    Boolean values have an encoding of "TRUE" if they are logically true,    and have an encoding of "FALSE" otherwise. 
  135.  
  136. 2.14.  Integer 
  137.  
  138.    Values of type integerSyntax are encoded as the decimal    representation of their values, with each decimal digit represented    by the its character equivalent. So the digit 1 is represented by the    character 
  139.  
  140. 2.15.  Object Identifier 
  141.  
  142.    Values of type objectIdentifierSyntax are encoded according to the    following BNF: 
  143.  
  144.      <oid> ::= <descr> | <descr> '.' <numericoid> | <numericoid> 
  145.  
  146.      <descr> ::= <keystring> 
  147.  
  148.      <numericoid> ::= <numericstring> | <numericstring> '.' <numericoid> 
  149.  
  150.    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 
  151.  
  152.  
  153.  
  154. Howes, Kille, Yeong & Robbins                                   [Page 4] 
  155.  RFC 1778                    Syntax Encoding                   March 1995 
  156.  
  157.     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". 
  158.  
  159. 2.16.  Telephone Number 
  160.  
  161.    Values of type telephoneNumberSyntax are encoded as if they were    Printable String types. 
  162.  
  163. 2.17.  Telex Number 
  164.  
  165.    Values of type telexNumberSyntax are encoded according to the    following BNF: 
  166.  
  167.      <telex-number> ::= <actual-number> '$' <country> '$' <answerback> 
  168.  
  169.      <actual-number> ::= <printablestring> 
  170.  
  171.      <country> ::= <printablestring> 
  172.  
  173.      <answerback> ::= <printablestring> 
  174.  
  175.    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. 
  176.  
  177. 2.18.  Teletex Terminal Identifier 
  178.  
  179.    Values of type teletexTerminalIdentifier are encoded according to the    following BNF: 
  180.  
  181.      <teletex-id> ::= <printablestring>  0*('$' <ttx-parm>) 
  182.  
  183.      <ttx-param> ::= <ttx-key> ':' <ttx-value> 
  184.  
  185.      <ttx-key> ::= 'graphic' | 'control' | 'misc' | 'page' | 'private' 
  186.  
  187.      <ttx-value> ::= <octetstring> 
  188.  
  189.    In the above, the first <printablestring> is the encoding of the    first portion of the teletex terminal identifier to be encoded, and    the subsequent 0 or more <printablestrings> are subsequent portions    of the teletex terminal identifier. 
  190.  
  191.  
  192.  
  193.  Howes, Kille, Yeong & Robbins                                   [Page 5] 
  194.  RFC 1778                    Syntax Encoding                   March 1995 
  195.  
  196.  2.19.  Facsimile Telephone Number 
  197.  
  198.    Values of type FacsimileTelephoneNumber are encoded according to the    following BNF: 
  199.  
  200. <fax-number> ::= <printablestring> [ '$' <faxparameters> ] 
  201.  
  202. <faxparameters> ::= <faxparm> | <faxparm> '$' <faxparameters> 
  203.  
  204. <faxparm> ::= 'twoDimensional' | 'fineResolution' | 'unlimitedLength' |               'b4Length' | 'a3Width' | 'b4Width' | 'uncompressed' 
  205.  
  206.    In the above, the first <printablestring> is the actual fax number,    and the <faxparm> tokens represent fax parameters. 
  207.  
  208. 2.20.  Presentation Address 
  209.  
  210.    Values of type PresentationAddress are encoded to have the    representation described in [6]. 
  211.  
  212. 2.21.  UTC Time 
  213.  
  214.    Values of type uTCTimeSyntax are encoded as if they were Printable    Strings with the strings containing a UTCTime value. 
  215.  
  216. 2.22.  Guide (search guide) 
  217.  
  218.    Values of type Guide, such as values of the searchGuide attribute,    are encoded according to the following BNF: 
  219.  
  220. <guide-value> ::= [ <object-class> '#' ] <criteria> 
  221.  
  222. <object-class> ::= an encoded value of type objectIdentifierSyntax 
  223.  
  224. <criteria> ::= <criteria-item> | <criteria-set> | '!' <criteria> 
  225.  
  226. <criteria-set> ::= [ '(' ] <criteria> '&' <criteria-set> [ ')' ] |                    [ '(' ] <criteria> '|' <criteria-set> [ ')' ] 
  227.  
  228. <criteria-item> ::= [ '(' ] <attributetype> '$' <match-type> [ ')' ] 
  229.  
  230. <match-type> ::= "EQ" | "SUBSTR" | "GE" | "LE" | "APPROX" 
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240. Howes, Kille, Yeong & Robbins                                   [Page 6] 
  241.  RFC 1778                    Syntax Encoding                   March 1995 
  242.  
  243.  2.23.  Postal Address 
  244.  
  245.    Values of type PostalAddress are encoded according to the following    BNF: 
  246.  
  247.      <postal-address> ::= <t61string> | <t61string> '$' <postal-address> 
  248.  
  249.    In the above, each <t61string> component of a postal address value is    encoded as a value of type t61StringSyntax. 
  250.  
  251. 2.24.  User Password 
  252.  
  253.    Values of type userPasswordSyntax are encoded as if they were of type    octetStringSyntax. 
  254.  
  255. 2.25.  User Certificate 
  256.  
  257.    Values of type userCertificate are encoded according to the following    BNF: 
  258.  
  259.      <certificate> ::= <version> '#' <serial> '#' <signature-algorithm-id>                      '#' <issuer> '#' <validity> '#' <subject>                      '#' <public-key-info> '#' <encrypted-sign-value> 
  260.  
  261.      <version> ::= <integervalue> 
  262.  
  263.      <serial> ::= <integervalue> 
  264.  
  265.      <signature-algorithm-id> ::= <algorithm-id> 
  266.  
  267.      <issuer> ::= an encoded Distinguished Name 
  268.  
  269.      <validity> ::= <not-before-time> '#' <not-after-time> 
  270.  
  271.      <not-before-time> ::= <utc-time> 
  272.  
  273.      <not-after-time> ::= <utc-time> 
  274.  
  275.      <algorithm-parameters> ::=  <null> | <integervalue> |                                  '{ASN}' <hex-string> 
  276.  
  277.      <subject> ::= an encoded Distinguished Name 
  278.  
  279.      <public-key-info> ::= <algorithm-id> '#' <encrypted-sign-value> 
  280.  
  281.      <encrypted-sign-value> ::= <hex-string> | <hex-string> '-' <d> 
  282.  
  283.      <algorithm-id> ::= <oid> '#' <algorithm-parameters> 
  284.  
  285.  
  286.  
  287. Howes, Kille, Yeong & Robbins                                   [Page 7] 
  288.  RFC 1778                    Syntax Encoding                   March 1995 
  289.  
  290.       <utc-time> ::= an encoded UTCTime value 
  291.  
  292.      <hex-string> ::= <hex-digit> | <hex-digit> <hex-string> 
  293.  
  294. 2.26.  CA Certificate 
  295.  
  296.    Values of type cACertificate are encoded as if the values were of    type userCertificate. 
  297.  
  298. 2.27.  Authority Revocation List 
  299.  
  300.    Values of type authorityRevocationList are encoded according to the    following BNF: 
  301.  
  302. <certificate-list> ::= <signature-algorithm-id> '#' <issuer> '#' <utc-time>                         [ '#' <revoked-certificates> ]                         '#' <signature-algorithm-id>                         '#' <encrypted-sign-value> 
  303.  
  304. <revoked-certificates> ::= 1*( '#' <revoked-certificate> )                         <signature-algorithm-id> '#' <encrypted-sign-value> 
  305.  
  306. <revoked-certificate> ::= <signature-algorithm-id> '#' <issuer> '#'                         <serial> '#' <utc-time> 
  307.  
  308.    The syntactic components <signature-algorithm-id>, <issuer>,    <encrypted-sign-value>, <utc-time>, <subject> and <serial> have the    same definitions as in the BNF for the userCertificate attribute    syntax. 
  309.  
  310. 2.28.  Certificate Revocation List 
  311.  
  312.    Values of type certificateRevocationList are encoded as if the values    were of type authorityRevocationList. 
  313.  
  314. 2.29.  Cross Certificate Pair 
  315.  
  316.    Values of type crossCertificatePair are encoded according to the    following BNF: 
  317.  
  318.      <certificate-pair> ::= <forward> '#' <reverse>                              | <forward>                              | <reverse> 
  319.  
  320.      <forward> ::= 'forward:' <certificate> 
  321.  
  322.      <reverse> ::= 'reverse:' <certificate> 
  323.  
  324.  
  325.  
  326.  Howes, Kille, Yeong & Robbins                                   [Page 8] 
  327.  RFC 1778                    Syntax Encoding                   March 1995 
  328.  
  329.     The syntactic component <certificate> has the same definition as in    the BNF for the userCertificate attribute syntax. 
  330.  
  331. 2.30.  Delivery Method 
  332.  
  333.    Values of type deliveryMethod are encoded according to the following    BNF: 
  334.  
  335.      <delivery-value> ::= <pdm> | <pdm> '$' <delivery-value> 
  336.  
  337.      <pdm> ::= 'any' | 'mhs' | 'physical' | 'telex' | 'teletex' |                'g3fax' | 'g4fax' | 'ia5' | 'videotex' | 'telephone' 
  338.  
  339. 2.31.  Other Mailbox 
  340.  
  341.    Values of the type otherMailboxSyntax are encoded according to the    following BNF: 
  342.  
  343.      <otherMailbox> ::= <mailbox-type> '$' <mailbox> 
  344.  
  345.      <mailbox-type> ::= an encoded Printable String 
  346.  
  347.      <mailbox> ::= an encoded IA5 String 
  348.  
  349.    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>. 
  350.  
  351. 2.32.  Mail Preference 
  352.  
  353.    Values of type mailPreferenceOption are encoded according to the    following BNF: 
  354.  
  355.      <mail-preference> ::= "NO-LISTS" | "ANY-LIST" | "PROFESSIONAL-LISTS" 
  356.  
  357. 2.33.  MHS OR Address 
  358.  
  359.    Values of type MHS OR Address are encoded as strings, according to    the format defined in [10]. 
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371. Howes, Kille, Yeong & Robbins                                   [Page 9] 
  372.  RFC 1778                    Syntax Encoding                   March 1995 
  373.  
  374.  2.34.  Distribution List Submit Permission 
  375.  
  376.    Values of type DLSubmitPermission are encoded as strings, according    to the following BNF: 
  377.  
  378.      <dlsubmit-perm> ::= <dlgroup_label> ':' <dlgroup-value>                              | <dl-label> ':' <dl-value> 
  379.  
  380.      <dlgroup-label> ::= 'group_member' 
  381.  
  382.      <dlgroup-value> ::= <name> 
  383.  
  384.      <name> ::= an encoded Distinguished Name 
  385.  
  386.      <dl-label> ::= 'individual' | 'dl_member' | 'pattern' 
  387.  
  388.      <dl-value> ::= <orname> 
  389.  
  390.      <orname> ::= <address> '#' <dn>             |  <address> 
  391.  
  392.      <address> ::= <add-label> ':' <oraddress> 
  393.  
  394.      <dn> ::= <dn-label> ':' <name> 
  395.  
  396.      <add-label> = 'X400' 
  397.  
  398.      <dn-label> = 'X500' 
  399.  
  400.    where <oraddress> is as defined in RFC 1327. 
  401.  
  402. 2.35.  Photo 
  403.  
  404.    Values of type Photo are encoded as if they were octet strings    containing JPEG images in the JPEG File Interchange Format (JFIF), as    described in [8]. 
  405.  
  406. 2.36.  Fax 
  407.  
  408.    Values of type Fax are encoded as if they were octet strings    containing Group 3 Fax images as defined in [7]. 
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  Howes, Kille, Yeong & Robbins                                  [Page 10] 
  419.  RFC 1778                    Syntax Encoding                   March 1995 
  420.  
  421.  3.  Security Considerations 
  422.  
  423.    Security issues are not discussed in this memo. 
  424.  
  425. 4.  Acknowledgements 
  426.  
  427.    Many of 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 syntaxes [4] are gratefully acknowledged. 
  428.  
  429. 5.  Bibliography 
  430.  
  431.    [1] The Directory: Selected Attribute Syntaxes.  CCITT,        Recommendation X.520. 
  432.  
  433.    [2] Information Processing Systems -- Open Systems Interconnection --        The Directory: Selected Attribute Syntaxes. 
  434.  
  435.    [3] Barker, P., and S. Kille, "The COSINE and Internet X.500 Schema",        RFC 1274, University College London, November 1991. 
  436.  
  437.    [4] The ISO Development Environment: User's Manual -- Volume 5:        QUIPU.  Colin Robbins, Stephen E. Kille. 
  438.  
  439.    [5] Kille, S., "A String Representation of Distinguished Names", RFC        1779, ISODE Consortium, March 1995. 
  440.  
  441.    [6] Kille, S., "A String Representation for Presentation Addresses",        RFC 1278, University College London, November 1991. 
  442.  
  443.    [7] Terminal Equipment and Protocols for Telematic Services -        Standardization of Group 3 facsimile apparatus for document        transmission.  CCITT, Recommendation T.4. 
  444.  
  445.    [8] JPEG File Interchange Format (Version 1.02).  Eric Hamilton, C-        Cube Microsystems, Milpitas, CA, September 1, 1992. 
  446.  
  447.    [9] Yeong, W., Howes, T., and S. Kille, "Lightweight Directory Access        Protocol", RFC 1777, Performance Systems International,        University of Michigan, ISODE Consortium, March 1995. 
  448.  
  449.   [10] Alvestrand, H., Kille, S., Miles, R., Rose, M., and S.  Thompson,        "Mapping between X.400 and RFC-822 Message Bodies", RFC 1495,        SINTEF DELAB, ISODE Consortium, Soft*Switch, Inc., Dover Beach        Consulting, Inc., Soft*Switch, Inc., August 1993. 
  450.  
  451.  
  452.  
  453.  
  454.  
  455. Howes, Kille, Yeong & Robbins                                  [Page 11] 
  456.  RFC 1778                    Syntax Encoding                   March 1995 
  457.  
  458.  6.  Authors' Addresses 
  459.  
  460.        Tim Howes        University of Michigan        ITD Research Systems        535 W William St.        Ann Arbor, MI 48103-4943        USA 
  461.  
  462.        Phone: +1 313 747-4454        EMail: tim@umich.edu 
  463.  
  464.         Steve Kille        ISODE Consortium        PO Box 505        London        SW11 1DX        UK 
  465.  
  466.        Phone: +44-71-223-4062        EMail: S.Kille@isode.com 
  467.  
  468.         Wengyik Yeong        PSI Inc.        510 Huntmar Park Drive        Herndon, VA 22070        USA 
  469.  
  470.        Phone: +1 703-450-8001        EMail: yeongw@psilink.com 
  471.  
  472.         Colin Robbins        NeXor Ltd        University Park        Nottingham        NG7 2RD        UK 
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484. Howes, Kille, Yeong & Robbins                                  [Page 12] 
  485.  
  486.