1 2 3 4 5 6 7 Network Working Group G. Good 8 Request for Comments: 2849 iPlanet e-commerce Solutions 9 Category: Standards Track June 2000 10 11 12 The LDAP Data Interchange Format (LDIF) - Technical Specification 13 14 Status of this Memo 15 16 This document specifies an Internet standards track protocol for the 17 Internet community, and requests discussion and suggestions for 18 improvements. Please refer to the current edition of the "Internet 19 Official Protocol Standards" (STD 1) for the standardization state 20 and status of this protocol. Distribution of this memo is unlimited. 21 22 Copyright Notice 23 24 Copyright (C) The Internet Society (2000). All Rights Reserved. 25 26 Abstract 27 28 This document describes a file format suitable for describing 29 directory information or modifications made to directory information. 30 The file format, known as LDIF, for LDAP Data Interchange Format, is 31 typically used to import and export directory information between 32 LDAP-based directory servers, or to describe a set of changes which 33 are to be applied to a directory. 34 35 Background and Intended Usage 36 37 There are a number of situations where a common interchange format is 38 desirable. For example, one might wish to export a copy of the 39 contents of a directory server to a file, move that file to a 40 different machine, and import the contents into a second directory 41 server. 42 43 Additionally, by using a well-defined interchange format, development 44 of data import tools from legacy systems is facilitated. A fairly 45 simple set of tools written in awk or perl can, for example, convert 46 a database of personnel information into an LDIF file. This file can 47 then be imported into a directory server, regardless of the internal 48 database representation the target directory server uses. 49 50 The LDIF format was originally developed and used in the University 51 of Michigan LDAP implementation. The first use of LDIF was in 52 describing directory entries. Later, the format was expanded to 53 allow representation of changes to directory entries. 54 55 56 57 58 Good Standards Track [Page 1] 59 61 RFC 2849 LDAP Data Interchange Format June 2000 62 63 64 Relationship to the application/directory MIME content-type: 65 66 The application/directory MIME content-type [1] is a general 67 framework and format for conveying directory information, and is 68 independent of any particular directory service. The LDIF format is 69 a simpler format which is perhaps easier to create, and may also be 70 used, as noted, to describe a set of changes to be applied to a 71 directory. 72 73 The key words "MUST", "MUST NOT", "MAY", "SHOULD", and "SHOULD NOT" 74 used in this document are to be interpreted as described in [7]. 75 76 Definition of the LDAP Data Interchange Format 77 78 The LDIF format is used to convey directory information, or a 79 description of a set of changes made to directory entries. An LDIF 80 file consists of a series of records separated by line separators. A 81 record consists of a sequence of lines describing a directory entry, 82 or a sequence of lines describing a set of changes to a directory 83 entry. An LDIF file specifies a set of directory entries, or a set 84 of changes to be applied to directory entries, but not both. 85 86 There is a one-to-one correlation between LDAP operations that modify 87 the directory (add, delete, modify, and modrdn), and the types of 88 changerecords described below ("add", "delete", "modify", and 89 "modrdn" or "moddn"). This correspondence is intentional, and 90 permits a straightforward translation from LDIF changerecords to 91 protocol operations. 92 93 Formal Syntax Definition of LDIF 94 95 The following definition uses the augmented Backus-Naur Form 96 specified in RFC 2234 [2]. 97 98 ldif-file = ldif-content / ldif-changes 99 100 ldif-content = version-spec 1*(1*SEP ldif-attrval-record) 101 102 ldif-changes = version-spec 1*(1*SEP ldif-change-record) 103 104 ldif-attrval-record = dn-spec SEP 1*attrval-spec 105 106 ldif-change-record = dn-spec SEP *control changerecord 107 108 version-spec = "version:" FILL version-number 109 110 111 112 113 114 115 Good Standards Track [Page 2] 116 118 RFC 2849 LDAP Data Interchange Format June 2000 119 120 121 version-number = 1*DIGIT 122 ; version-number MUST be "1" for the 123 ; LDIF format described in this document. 124 125 dn-spec = "dn:" (FILL distinguishedName / 126 ":" FILL base64-distinguishedName) 127 128 distinguishedName = SAFE-STRING 129 ; a distinguished name, as defined in [3] 130 131 base64-distinguishedName = BASE64-UTF8-STRING 132 ; a distinguishedName which has been base64 133 ; encoded (see note 10, below) 134 135 rdn = SAFE-STRING 136 ; a relative distinguished name, defined as 137 ; <name-component> in [3] 138 139 base64-rdn = BASE64-UTF8-STRING 140 ; an rdn which has been base64 encoded (see 141 ; note 10, below) 142 143 control = "control:" FILL ldap-oid ; controlType 144 0*1(1*SPACE ("true" / "false")) ; criticality 145 0*1(value-spec) ; controlValue 146 SEP 147 ; (See note 9, below) 148 149 ldap-oid = 1*DIGIT 0*1("." 1*DIGIT) 150 ; An LDAPOID, as defined in [4] 151 152 attrval-spec = AttributeDescription value-spec SEP 153 154 value-spec = ":" ( FILL 0*1(SAFE-STRING) / 155 ":" FILL (BASE64-STRING) / 156 "<" FILL url) 157 ; See notes 7 and 8, below 158 159 url = <a Uniform Resource Locator, 160 as defined in [6]> 161 ; (See Note 6, below) 162 163 AttributeDescription = AttributeType [";" options] 164 ; Definition taken from [4] 165 166 AttributeType = ldap-oid / (ALPHA *(attr-type-chars)) 167 168 options = option / (option ";" options) 169 170 171 172 Good Standards Track [Page 3] 173 175 RFC 2849 LDAP Data Interchange Format June 2000 176 177 178 option = 1*opt-char 179 180 attr-type-chars = ALPHA / DIGIT / "-" 181 182 opt-char = attr-type-chars 183 184 changerecord = "changetype:" FILL 185 (change-add / change-delete / 186 change-modify / change-moddn) 187 188 change-add = "add" SEP 1*attrval-spec 189 190 change-delete = "delete" SEP 191 192 change-moddn = ("modrdn" / "moddn") SEP 193 "newrdn:" ( FILL rdn / 194 ":" FILL base64-rdn) SEP 195 "deleteoldrdn:" FILL ("0" / "1") SEP 196 0*1("newsuperior:" 197 ( FILL distinguishedName / 198 ":" FILL base64-distinguishedName) SEP) 199 200 change-modify = "modify" SEP *mod-spec 201 202 mod-spec = ("add:" / "delete:" / "replace:") 203 FILL AttributeDescription SEP 204 *attrval-spec 205 "-" SEP 206 207 SPACE = %x20 208 ; ASCII SP, space 209 210 FILL = *SPACE 211 212 SEP = (CR LF / LF) 213 214 CR = %x0D 215 ; ASCII CR, carriage return 216 217 LF = %x0A 218 ; ASCII LF, line feed 219 220 ALPHA = %x41-5A / %x61-7A 221 ; A-Z / a-z 222 223 DIGIT = %x30-39 224 ; 0-9 225 226 227 228 229 Good Standards Track [Page 4] 230 232 RFC 2849 LDAP Data Interchange Format June 2000 233 234 235 UTF8-1 = %x80-BF 236 237 UTF8-2 = %xC0-DF UTF8-1 238 239 UTF8-3 = %xE0-EF 2UTF8-1 240 241 UTF8-4 = %xF0-F7 3UTF8-1 242 243 UTF8-5 = %xF8-FB 4UTF8-1 244 245 UTF8-6 = %xFC-FD 5UTF8-1 246 247 SAFE-CHAR = %x01-09 / %x0B-0C / %x0E-7F 248 ; any value <= 127 decimal except NUL, LF, 249 ; and CR 250 251 SAFE-INIT-CHAR = %x01-09 / %x0B-0C / %x0E-1F / 252 %x21-39 / %x3B / %x3D-7F 253 ; any value <= 127 except NUL, LF, CR, 254 ; SPACE, colon (":", ASCII 58 decimal) 255 ; and less-than ("<" , ASCII 60 decimal) 256 257 SAFE-STRING = [SAFE-INIT-CHAR *SAFE-CHAR] 258 259 UTF8-CHAR = SAFE-CHAR / UTF8-2 / UTF8-3 / 260 UTF8-4 / UTF8-5 / UTF8-6 261 262 UTF8-STRING = *UTF8-CHAR 263 264 BASE64-UTF8-STRING = BASE64-STRING 265 ; MUST be the base64 encoding of a 266 ; UTF8-STRING 267 268 BASE64-CHAR = %x2B / %x2F / %x30-39 / %x3D / %x41-5A / 269 %x61-7A 270 ; +, /, 0-9, =, A-Z, and a-z 271 ; as specified in [5] 272 273 BASE64-STRING = [*(BASE64-CHAR)] 274 275 276 Notes on LDIF Syntax 277 278 1) For the LDIF format described in this document, the version 279 number MUST be "1". If the version number is absent, 280 implementations MAY choose to interpret the contents as an 281 older LDIF file format, supported by the University of 282 Michigan ldap-3.3 implementation [8]. 283 284 285 286 Good Standards Track [Page 5] 287 289 RFC 2849 LDAP Data Interchange Format June 2000 290 291 292 2) Any non-empty line, including comment lines, in an LDIF file 293 MAY be folded by inserting a line separator (SEP) and a SPACE. 294 Folding MUST NOT occur before the first character of the line. 295 In other words, folding a line into two lines, the first of 296 which is empty, is not permitted. Any line that begins with a 297 single space MUST be treated as a continuation of the previous 298 (non-empty) line. When joining folded lines, exactly one space 299 character at the beginning of each continued line must be 300 discarded. Implementations SHOULD NOT fold lines in the middle 301 of a multi-byte UTF-8 character. 302 303 3) Any line that begins with a pound-sign ("#", ASCII 35) is a 304 comment line, and MUST be ignored when parsing an LDIF file. 305 306 4) Any dn or rdn that contains characters other than those 307 defined as "SAFE-UTF8-CHAR", or begins with a character other 308 than those defined as "SAFE-INIT-UTF8-CHAR", above, MUST be 309 base-64 encoded. Other values MAY be base-64 encoded. Any 310 value that contains characters other than those defined as 311 "SAFE-CHAR", or begins with a character other than those 312 defined as "SAFE-INIT-CHAR", above, MUST be base-64 encoded. 313 Other values MAY be base-64 encoded. 314 315 5) When a zero-length attribute value is to be included directly 316 in an LDIF file, it MUST be represented as 317 AttributeDescription ":" FILL SEP. For example, "seeAlso:" 318 followed by a newline represents a zero-length "seeAlso" 319 attribute value. It is also permissible for the value 320 referred to by a URL to be of zero length. 321 322 6) When a URL is specified in an attrval-spec, the following 323 conventions apply: 324 325 a) Implementations SHOULD support the file:// URL format. The 326 contents of the referenced file are to be included verbatim 327 in the interpreted output of the LDIF file. 328 b) Implementations MAY support other URL formats. The 329 semantics associated with each supported URL will be 330 documented in an associated Applicability Statement. 331 332 7) Distinguished names, relative distinguished names, and 333 attribute values of DirectoryString syntax MUST be valid UTF-8 334 strings. Implementations that read LDIF MAY interpret files 335 in which these entities are stored in some other character set 336 encoding, but implementations MUST NOT generate LDIF content 337 which does not contain valid UTF-8 data. 338 339 340 341 342 343 Good Standards Track [Page 6] 344 346 RFC 2849 LDAP Data Interchange Format June 2000 347 348 349 8) Values or distinguished names that end with SPACE SHOULD be 350 base-64 encoded. 351 352 9) When controls are included in an LDIF file, implementations 353 MAY choose to ignore some or all of them. This may be 354 necessary if the changes described in the LDIF file are being 355 sent on an LDAPv2 connection (LDAPv2 does not support 356 controls), or the particular controls are not supported by the 357 remote server. If the criticality of a control is "true", then 358 the implementation MUST either include the control, or MUST 359 NOT send the operation to a remote server. 360 361 10) When an attrval-spec, distinguishedName, or rdn is base64- 362 encoded, the encoding rules specified in [5] are used with the 363 following exceptions: a) The requirement that base64 output 364 streams must be represented as lines of no more than 76 365 characters is removed. Lines in LDIF files may only be folded 366 according to the folding rules described in note 2, above. b) 367 Base64 strings in [5] may contain characters other than those 368 defined in BASE64-CHAR, and are ignored. LDIF does not permit 369 any extraneous characters, other than those used for line 370 folding. 371 372 Examples of LDAP Data Interchange Format 373 374 Example 1: An simple LDAP file with two entries 375 376 version: 1 377 dn: cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com 378 objectclass: top 379 objectclass: person 380 objectclass: organizationalPerson 381 cn: Barbara Jensen 382 cn: Barbara J Jensen 383 cn: Babs Jensen 384 sn: Jensen 385 uid: bjensen 386 telephonenumber: +1 408 555 1212 387 description: A big sailing fan. 388 389 dn: cn=Bjorn Jensen, ou=Accounting, dc=airius, dc=com 390 objectclass: top 391 objectclass: person 392 objectclass: organizationalPerson 393 cn: Bjorn Jensen 394 sn: Jensen 395 telephonenumber: +1 408 555 1212 396 397 398 399 400 Good Standards Track [Page 7] 401 403 RFC 2849 LDAP Data Interchange Format June 2000 404 405 406 Example 2: A file containing an entry with a folded attribute value 407 408 version: 1 409 dn:cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com 410 objectclass:top 411 objectclass:person 412 objectclass:organizationalPerson 413 cn:Barbara Jensen 414 cn:Barbara J Jensen 415 cn:Babs Jensen 416 sn:Jensen 417 uid:bjensen 418 telephonenumber:+1 408 555 1212 419 description:Babs is a big sailing fan, and travels extensively in sea 420 rch of perfect sailing conditions. 421 title:Product Manager, Rod and Reel Division 422 423 Example 3: A file containing a base-64-encoded value 424 425 version: 1 426 dn: cn=Gern Jensen, ou=Product Testing, dc=airius, dc=com 427 objectclass: top 428 objectclass: person 429 objectclass: organizationalPerson 430 cn: Gern Jensen 431 cn: Gern O Jensen 432 sn: Jensen 433 uid: gernj 434 telephonenumber: +1 408 555 1212 435 description:: V2hhdCBhIGNhcmVmdWwgcmVhZGVyIHlvdSBhcmUhICBUaGlzIHZhbHVl 436 IGlzIGJhc2UtNjQtZW5jb2RlZCBiZWNhdXNlIGl0IGhhcyBhIGNvbnRyb2wgY2hhcmFjdG 437 VyIGluIGl0IChhIENSKS4NICBCeSB0aGUgd2F5LCB5b3Ugc2hvdWxkIHJlYWxseSBnZXQg 438 b3V0IG1vcmUu 439 440 Example 4: A file containing an entries with UTF-8-encoded attribute 441 values, including language tags. Comments indicate the contents 442 of UTF-8-encoded attributes and distinguished names. 443 444 version: 1 445 dn:: b3U95Za25qWt6YOoLG89QWlyaXVz 446 # dn:: ou=<JapaneseOU>,o=Airius 447 objectclass: top 448 objectclass: organizationalUnit 449 ou:: 5Za25qWt6YOo 450 # ou:: <JapaneseOU> 451 ou;lang-ja:: 5Za25qWt6YOo 452 # ou;lang-ja:: <JapaneseOU> 453 ou;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2 454 455 456 457 Good Standards Track [Page 8] 458 460 RFC 2849 LDAP Data Interchange Format June 2000 461 462 463 # ou;lang-ja:: <JapaneseOU_in_phonetic_representation> 464 ou;lang-en: Sales 465 description: Japanese office 466 467 dn:: dWlkPXJvZ2FzYXdhcmEsb3U95Za25qWt6YOoLG89QWlyaXVz 468 # dn:: uid=<uid>,ou=<JapaneseOU>,o=Airius 469 userpassword: {SHA}O3HSv1MusyL4kTjP+HKI5uxuNoM= 470 objectclass: top 471 objectclass: person 472 objectclass: organizationalPerson 473 objectclass: inetOrgPerson 474 uid: rogasawara 475 mail: rogasawara (a] airius.co.jp 476 givenname;lang-ja:: 44Ot44OJ44OL44O8 477 # givenname;lang-ja:: <JapaneseGivenname> 478 sn;lang-ja:: 5bCP56yg5Y6f 479 # sn;lang-ja:: <JapaneseSn> 480 cn;lang-ja:: 5bCP56yg5Y6fIOODreODieODi+ODvA== 481 # cn;lang-ja:: <JapaneseCn> 482 title;lang-ja:: 5Za25qWt6YOoIOmDqOmVtw== 483 # title;lang-ja:: <JapaneseTitle> 484 preferredlanguage: ja 485 givenname:: 44Ot44OJ44OL44O8 486 # givenname:: <JapaneseGivenname> 487 sn:: 5bCP56yg5Y6f 488 # sn:: <JapaneseSn> 489 cn:: 5bCP56yg5Y6fIOODreODieODi+ODvA== 490 # cn:: <JapaneseCn> 491 title:: 5Za25qWt6YOoIOmDqOmVtw== 492 # title:: <JapaneseTitle> 493 givenname;lang-ja;phonetic:: 44KN44Gp44Gr44O8 494 # givenname;lang-ja;phonetic:: 495 <JapaneseGivenname_in_phonetic_representation_kana> 496 sn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJ 497 # sn;lang-ja;phonetic:: <JapaneseSn_in_phonetic_representation_kana> 498 cn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJIOOCjeOBqeOBq+ODvA== 499 # cn;lang-ja;phonetic:: <JapaneseCn_in_phonetic_representation_kana> 500 title;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2IOOBtuOBoeOCh+OBhg== 501 # title;lang-ja;phonetic:: 502 # <JapaneseTitle_in_phonetic_representation_kana> 503 givenname;lang-en: Rodney 504 sn;lang-en: Ogasawara 505 cn;lang-en: Rodney Ogasawara 506 title;lang-en: Sales, Director 507 508 509 510 511 512 513 514 Good Standards Track [Page 9] 515 517 RFC 2849 LDAP Data Interchange Format June 2000 518 519 520 Example 5: A file containing a reference to an external file 521 522 version: 1 523 dn: cn=Horatio Jensen, ou=Product Testing, dc=airius, dc=com 524 objectclass: top 525 objectclass: person 526 objectclass: organizationalPerson 527 cn: Horatio Jensen 528 529 cn: Horatio N Jensen 530 sn: Jensen 531 uid: hjensen 532 telephonenumber: +1 408 555 1212 533 jpegphoto:< file:///usr/local/directory/photos/hjensen.jpg 534 535 Example 6: A file containing a series of change records and comments 536 537 version: 1 538 # Add a new entry 539 dn: cn=Fiona Jensen, ou=Marketing, dc=airius, dc=com 540 changetype: add 541 objectclass: top 542 objectclass: person 543 objectclass: organizationalPerson 544 cn: Fiona Jensen 545 sn: Jensen 546 uid: fiona 547 telephonenumber: +1 408 555 1212 548 jpegphoto:< file:///usr/local/directory/photos/fiona.jpg 549 550 # Delete an existing entry 551 dn: cn=Robert Jensen, ou=Marketing, dc=airius, dc=com 552 changetype: delete 553 554 # Modify an entry's relative distinguished name 555 dn: cn=Paul Jensen, ou=Product Development, dc=airius, dc=com 556 changetype: modrdn 557 newrdn: cn=Paula Jensen 558 deleteoldrdn: 1 559 560 # Rename an entry and move all of its children to a new location in 561 # the directory tree (only implemented by LDAPv3 servers). 562 dn: ou=PD Accountants, ou=Product Development, dc=airius, dc=com 563 changetype: modrdn 564 newrdn: ou=Product Development Accountants 565 deleteoldrdn: 0 566 newsuperior: ou=Accounting, dc=airius, dc=com 567 568 569 570 571 Good Standards Track [Page 10] 572 574 RFC 2849 LDAP Data Interchange Format June 2000 575 576 577 # Modify an entry: add an additional value to the postaladdress 578 # attribute, completely delete the description attribute, replace 579 # the telephonenumber attribute with two values, and delete a specific 580 # value from the facsimiletelephonenumber attribute 581 dn: cn=Paula Jensen, ou=Product Development, dc=airius, dc=com 582 changetype: modify 583 add: postaladdress 584 postaladdress: 123 Anystreet $ Sunnyvale, CA $ 94086 585 - 586 587 delete: description 588 - 589 replace: telephonenumber 590 telephonenumber: +1 408 555 1234 591 telephonenumber: +1 408 555 5678 592 - 593 delete: facsimiletelephonenumber 594 facsimiletelephonenumber: +1 408 555 9876 595 - 596 597 # Modify an entry: replace the postaladdress attribute with an empty 598 # set of values (which will cause the attribute to be removed), and 599 # delete the entire description attribute. Note that the first will 600 # always succeed, while the second will only succeed if at least 601 # one value for the description attribute is present. 602 dn: cn=Ingrid Jensen, ou=Product Support, dc=airius, dc=com 603 changetype: modify 604 replace: postaladdress 605 - 606 delete: description 607 - 608 609 Example 7: An LDIF file containing a change record with a control 610 version: 1 611 # Delete an entry. The operation will attach the LDAPv3 612 # Tree Delete Control defined in [9]. The criticality 613 # field is "true" and the controlValue field is 614 # absent, as required by [9]. 615 dn: ou=Product Development, dc=airius, dc=com 616 control: 1.2.840.113556.1.4.805 true 617 changetype: delete 618 619 620 621 622 623 624 625 626 627 628 Good Standards Track [Page 11] 629 631 RFC 2849 LDAP Data Interchange Format June 2000 632 633 634 Security Considerations 635 636 Given typical directory applications, an LDIF file is likely to 637 contain sensitive personal data. Appropriate measures should be 638 taken to protect the privacy of those persons whose data is contained 639 in an LDIF file. 640 641 Since ":<" directives can cause external content to be included when 642 processing an LDIF file, one should be cautious of accepting LDIF 643 files from external sources. A "trojan" LDIF file could name a file 644 with sensitive contents and cause it to be included in a directory 645 entry, which a hostile entity could read via LDAP. 646 647 LDIF does not provide any method for carrying authentication 648 information with an LDIF file. Users of LDIF files must take care to 649 verify the integrity of an LDIF file received from an external 650 source. 651 652 Acknowledgments 653 654 The LDAP Interchange Format was developed as part of the University 655 of Michigan LDAP reference implementation, and was developed by Tim 656 Howes, Mark Smith, and Gordon Good. It is based in part upon work 657 supported by the National Science Foundation under Grant No. NCR- 658 9416667. 659 660 Members of the IETF LDAP Extensions Working group provided many 661 helpful suggestions. In particular, Hallvard B. Furuseth of the 662 University of Oslo made many significant contributions to this 663 document, including a thorough review and rewrite of the BNF. 664 665 References 666 667 [1] Howes, T. and M. Smith, "A MIME Content-Type for Directory 668 Information", RFC 2425, September 1998. 669 670 [2] Crocker, D., and P. Overell, "Augmented BNF for Syntax 671 Specifications: ABNF", RFC 2234, November 1997. 672 673 [3] Wahl, M., Kille, S. and T. Howes, "A String Representation of 674 Distinguished Names", RFC 2253, December 1997. 675 676 [4] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access 677 Protocol (v3)", RFC 2251, July 1997. 678 679 [5] Freed, N. and N. Borenstein, "Multipurpose Internet Mail 680 Extensions (MIME) Part One: Format of Internet Message Bodies", 681 RFC 2045, November 1996. 682 683 684 685 Good Standards Track [Page 12] 686 688 RFC 2849 LDAP Data Interchange Format June 2000 689 690 691 [6] Berners-Lee, T., Masinter, L. and M. McCahill, "Uniform 692 Resource Locators (URL)", RFC 1738, December 1994. 693 694 [7] Bradner, S., "Key Words for use in RFCs to Indicate Requirement 695 Levels", BCP 14, RFC 2119, March 1997. 696 697 [8] The SLAPD and SLURPD Administrators Guide. University of 698 Michigan, April 1996. <URL: 699 http://www.umich.edu/~dirsvcs/ldap/doc/guides/slapd/toc.html> 700 701 [9] M. P. Armijo, "Tree Delete Control", Work in Progress. 702 703 Author's Address 704 705 Gordon Good 706 iPlanet e-commerce Solutions 707 150 Network Circle 708 Mailstop USCA17-201 709 Santa Clara, CA 95054, USA 710 711 Phone: +1 408 276 4351 712 EMail: ggood (a] netscape.com 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 Good Standards Track [Page 13] 743 745 RFC 2849 LDAP Data Interchange Format June 2000 746 747 748 Full Copyright Statement 749 750 Copyright (C) The Internet Society (2000). All Rights Reserved. 751 752 This document and translations of it may be copied and furnished to 753 others, and derivative works that comment on or otherwise explain it 754 or assist in its implementation may be prepared, copied, published 755 and distributed, in whole or in part, without restriction of any 756 kind, provided that the above copyright notice and this paragraph are 757 included on all such copies and derivative works. However, this 758 document itself may not be modified in any way, such as by removing 759 the copyright notice or references to the Internet Society or other 760 Internet organizations, except as needed for the purpose of 761 developing Internet standards in which case the procedures for 762 copyrights defined in the Internet Standards process must be 763 followed, or as required to translate it into languages other than 764 English. 765 766 The limited permissions granted above are perpetual and will not be 767 revoked by the Internet Society or its successors or assigns. 768 769 This document and the information contained herein is provided on an 770 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 771 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 772 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 773 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 774 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 775 776 Acknowledgement 777 778 Funding for the RFC Editor function is currently provided by the 779 Internet Society. 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 Good Standards Track [Page 14] 800 802