draft-ietf-ldapbis-strprep-06.txt   draft-ietf-ldapbis-strprep-07.txt 
Internet-Draft Kurt D. Zeilenga Internet-Draft Kurt D. Zeilenga
Intended Category: Standard Track OpenLDAP Foundation Intended Category: Standard Track OpenLDAP Foundation
Expires in six months 30 September 2005 Expires in six months 23 January 2006
LDAP: Internationalized String Preparation LDAP: Internationalized String Preparation
<draft-ietf-ldapbis-strprep-06.txt> <draft-ietf-ldapbis-strprep-07.txt>
Status of this Memo Status of this Memo
This document is intended to be published as a Standard Track RFC. This document is intended to be published as a Standard Track RFC.
Distribution of this memo is unlimited. Technical discussion of this Distribution of this memo is unlimited. Technical discussion of this
document will take place on the IETF LDAP Revision Working Group document will take place on the IETF LDAP Revision Working Group
mailing list <ietf-ldapbis@openldap.org>. Please send editorial mailing list <ietf-ldapbis@openldap.org>. Please send editorial
comments directly to the editor <Kurt@OpenLDAP.org>. comments directly to the editor <Kurt@OpenLDAP.org>.
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
skipping to change at page 1, line 38 skipping to change at page 1, line 38
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference material time. It is inappropriate to use Internet-Drafts as reference material
or to cite them other than as "work in progress." or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
Copyright (C) The Internet Society (2005). All Rights Reserved. Copyright (C) The Internet Society (2006). All Rights Reserved.
Please see the Full Copyright section near the end of this document Please see the Full Copyright section near the end of this document
for more information. for more information.
Abstract Abstract
The previous Lightweight Directory Access Protocol (LDAP) technical The previous Lightweight Directory Access Protocol (LDAP) technical
specifications did not precisely define how character string matching specifications did not precisely define how character string matching
is to be performed. This led to a number of usability and is to be performed. This led to a number of usability and
interoperability problems. This document defines string preparation interoperability problems. This document defines string preparation
skipping to change at page 2, line 33 skipping to change at page 2, line 33
left off to make the lists easier to read. The comments for character left off to make the lists easier to read. The comments for character
ranges are shown in square brackets (such as "[CONTROL CHARACTERS]") ranges are shown in square brackets (such as "[CONTROL CHARACTERS]")
and do not come from the standard. and do not come from the standard.
Note: a glossary of terms used in Unicode can be found in [Glossary]. Note: a glossary of terms used in Unicode can be found in [Glossary].
Information on the Unicode character encoding model can be found in Information on the Unicode character encoding model can be found in
[CharModel]. [CharModel].
The term "combining mark", as used in this specification, refers to The term "combining mark", as used in this specification, refers to
any Unicode [Unicode] code point which has a mark property (Mn, Mc, any Unicode [Unicode] code point which has a mark property (Mn, Mc,
Me). Appendix A provides a complete list of combining marks. Me). Appendix A provides a definitive list of combining marks.
1. Introduction 1. Introduction
1.1. Background 1.1. Background
A Lightweight Directory Access Protocol (LDAP) [Roadmap] matching rule A Lightweight Directory Access Protocol (LDAP) [Roadmap] matching rule
[Syntaxes] defines an algorithm for determining whether a presented [Syntaxes] defines an algorithm for determining whether a presented
value matches an attribute value in accordance with the criteria value matches an attribute value in accordance with the criteria
defined for the rule. The proposition may be evaluated to True, defined for the rule. The proposition may be evaluated to True,
False, or Undefined. False, or Undefined.
skipping to change at page 3, line 39 skipping to change at page 3, line 39
The lack of precise specification for character string matching has The lack of precise specification for character string matching has
led to significant interoperability problems. When used in led to significant interoperability problems. When used in
certificate chain validation, security vulnerabilities can arise. To certificate chain validation, security vulnerabilities can arise. To
address these problems, this document defines precise algorithms for address these problems, this document defines precise algorithms for
preparing character strings for matching. preparing character strings for matching.
1.3. Relationship to "stringprep" 1.3. Relationship to "stringprep"
The character string preparation algorithms described in this document The character string preparation algorithms described in this document
are based upon the "stringprep" approach [StringPrep]. In are based upon the "stringprep" approach [RFC3454]. In "stringprep",
"stringprep", presented and stored values are first prepared for presented and stored values are first prepared for comparison and so
comparison and so that a character-by-character comparison yields the that a character-by-character comparison yields the "correct" result.
"correct" result.
The approach used here is a refinement of the "stringprep" The approach used here is a refinement of the "stringprep" [RFC3454]
[StringPrep] approach. Each algorithm involves two additional approach. Each algorithm involves two additional preparation steps.
preparation steps.
a) prior to applying the Unicode string preparation steps outlined in a) prior to applying the Unicode string preparation steps outlined in
"stringprep", the string is transcoded to Unicode; "stringprep", the string is transcoded to Unicode;
b) after applying the Unicode string preparation steps outlined in b) after applying the Unicode string preparation steps outlined in
"stringprep", the string is modified to appropriately handle "stringprep", the string is modified to appropriately handle
characters insignificant to the matching rule. characters insignificant to the matching rule.
Hence, preparation of character strings for X.500 matching involves Hence, preparation of character strings for X.500 matching involves
the following steps: the following steps:
1) Transcode 1) Transcode
2) Map 2) Map
3) Normalize 3) Normalize
skipping to change at page 4, line 20 skipping to change at page 4, line 18
1) Transcode 1) Transcode
2) Map 2) Map
3) Normalize 3) Normalize
4) Prohibit 4) Prohibit
5) Check Bidi (Bidirectional) 5) Check Bidi (Bidirectional)
6) Insignificant Character Handling 6) Insignificant Character Handling
These steps are described in Section 2. These steps are described in Section 2.
It is noted that while various tables of Unicode characters included
or referenced by this specification are derived from Unicode [UNICODE]
data, these tables are to be considered definitive for the purpose of
implementing this specification.
1.4. Relationship to the LDAP Technical Specification 1.4. Relationship to the LDAP Technical Specification
This document is a integral part of the LDAP technical specification This document is a integral part of the LDAP technical specification
[Roadmap] which obsoletes the previously defined LDAP technical [Roadmap] which obsoletes the previously defined LDAP technical
specification [RFC3377] in its entirety. specification [RFC3377] in its entirety.
This document details new LDAP internationalized character string This document details new LDAP internationalized character string
preparation algorithms used by [Syntaxes] and possible other technical preparation algorithms used by [Syntaxes] and possible other technical
specifications defining LDAP syntaxes and/or matching rules. specifications defining LDAP syntaxes and/or matching rules.
skipping to change at page 5, line 11 skipping to change at page 5, line 14
2) Map 2) Map
3) Normalize 3) Normalize
4) Prohibit 4) Prohibit
5) Check bidi 5) Check bidi
6) Insignificant Character Handling 6) Insignificant Character Handling
Failure in any step causes the assertion to evaluate to Undefined. Failure in any step causes the assertion to evaluate to Undefined.
The character repertoire of this process is Unicode 3.2 [Unicode]. The character repertoire of this process is Unicode 3.2 [Unicode].
Note that this six-step process specification is intended to described
expected matching behavior. Implementations are free use alternative
processes so long as the matching rule evaluation behavior provided is
consistent with the behavior described by this specification.
2.1. Transcode 2.1. Transcode
Each non-Unicode string value is transcoded to Unicode. Each non-Unicode string value is transcoded to Unicode.
PrintableString [X.680] value are transcoded directly to Unicode. PrintableString [X.680] value are transcoded directly to Unicode.
UniversalString, UTF8String, and bmpString [X.680] values need not be UniversalString, UTF8String, and bmpString [X.680] values need not be
transcoded as they are Unicode-based strings (in the case of transcoded as they are Unicode-based strings (in the case of
bmpString, a subset of Unicode). bmpString, a subset of Unicode).
TeletexString [X.680] values are transcoded to Unicode. As there is TeletexString [X.680] values are transcoded to Unicode. As there is
no standard for mapping TelexString values to Unicode, the mapping is no standard for mapping TeletexString values to Unicode, the mapping
left a local matter. is left a local matter.
For these and other reasons, use of TeletexString is NOT RECOMMENDED. For these and other reasons, use of TeletexString is NOT RECOMMENDED.
The output is the transcoded string. The output is the transcoded string.
2.2. Map 2.2. Map
SOFT HYPHEN (U+00AD) and MONGOLIAN TODO SOFT HYPHEN (U+1806) code SOFT HYPHEN (U+00AD) and MONGOLIAN TODO SOFT HYPHEN (U+1806) code
points are mapped to nothing. COMBINING GRAPHEME JOINER (U+034F) and points are mapped to nothing. COMBINING GRAPHEME JOINER (U+034F) and
VARIATION SELECTORs (U+180B-180D, FF00-FE0F) code points are also VARIATION SELECTORs (U+180B-180D, FF00-FE0F) code points are also
skipping to change at page 6, line 8 skipping to change at page 6, line 16
0086-009F, 06DD, 070F, 180E, 200C-200F, 202A-202E, 2060-2063, 0086-009F, 06DD, 070F, 180E, 200C-200F, 202A-202E, 2060-2063,
206A-206F, FEFF, FFF9-FFFB, 1D173-1D17A, E0001, E0020-E007F. 206A-206F, FEFF, FFF9-FFFB, 1D173-1D17A, E0001, E0020-E007F.
ZERO WIDTH SPACE (U+200B) is mapped to nothing. All other code points ZERO WIDTH SPACE (U+200B) is mapped to nothing. All other code points
with Separator (space, line, or paragraph) property (e.g, Zs, Zl, or with Separator (space, line, or paragraph) property (e.g, Zs, Zl, or
Zp) are mapped to SPACE (U+0020). The following is a complete list of Zp) are mapped to SPACE (U+0020). The following is a complete list of
these code points: U+0020, 00A0, 1680, 2000-200A, 2028-2029, 202F, these code points: U+0020, 00A0, 1680, 2000-200A, 2028-2029, 202F,
205F, 3000. 205F, 3000.
For case ignore, numeric, and stored prefix string matching rules, For case ignore, numeric, and stored prefix string matching rules,
characters are case folded per B.2 of [StringPrep]. characters are case folded per B.2 of [RFC3454].
The output is the mapped string. The output is the mapped string.
2.3. Normalize 2.3. Normalize
The input string is be normalized to Unicode Form KC (compatibility The input string is be normalized to Unicode Form KC (compatibility
composed) as described in [UAX15]. The output is the normalized composed) as described in [UAX15]. The output is the normalized
string. string.
2.4. Prohibit 2.4. Prohibit
All Unassigned code points are prohibited. Unassigned code points are All Unassigned code points are prohibited. Unassigned code points are
listed in Table A.1 of [StringPrep]. listed in Table A.1 of [RFC3454].
Characters which, per Section 5.8 of [Stringprep], change display Characters which, per Section 5.8 of [Stringprep], change display
properties or are deprecated are prohibited. These characters are are properties or are deprecated are prohibited. These characters are are
listed in Table C.8 of [StringPrep]. listed in Table C.8 of [RFC3454].
Private Use code points are prohibited. These characters are listed Private Use code points are prohibited. These characters are listed
in Table C.3 of [StringPrep]. in Table C.3 of [RFC3454].
All non-character code points are prohibited. These code points are All non-character code points are prohibited. These code points are
listed in Table C.4 of [StringPrep]. listed in Table C.4 of [RFC3454].
Surrogate codes are prohibited. These characters are listed in Table Surrogate codes are prohibited. These characters are listed in Table
C.5 of [StringPrep]. C.5 of [RFC3454].
The REPLACEMENT CHARACTER (U+FFFD) code point is prohibited. The REPLACEMENT CHARACTER (U+FFFD) code point is prohibited.
The step fails if the input string contains any prohibited code point. The step fails if the input string contains any prohibited code point.
Otherwise, the output is the input string. Otherwise, the output is the input string.
2.5. Check bidi 2.5. Check bidi
Bidirectional characters are ignored. Bidirectional characters are ignored.
skipping to change at page 8, line 28 skipping to change at page 8, line 34
"<SPACE><HYPHEN>123<SPACE><SPACE>456<SPACE><HYPHEN>" "<SPACE><HYPHEN>123<SPACE><SPACE>456<SPACE><HYPHEN>"
would result in the output string: would result in the output string:
"123456" "123456"
and the Form KC string: and the Form KC string:
"<HYPHEN><HYPHEN><HYPHEN>" "<HYPHEN><HYPHEN><HYPHEN>"
would result in the (empty) output string: would result in the (empty) output string:
"". "".
3. Security Considerations 3. Security Considerations
"Preparation for International Strings ('stringprep')" [StringPrep] "Preparation for International Strings ('stringprep')" [RFC3454]
security considerations generally apply to the algorithms described security considerations generally apply to the algorithms described
here. here.
4. Acknowledgments 4. Acknowledgments
The approach used in this document is based upon design principles and The approach used in this document is based upon design principles and
algorithms described in "Preparation of Internationalized Strings algorithms described in "Preparation of Internationalized Strings
('stringprep')" [StringPrep] by Paul Hoffman and Marc Blanchet. Some ('stringprep')" [RFC3454] by Paul Hoffman and Marc Blanchet. Some
additional guidance was drawn from Unicode Technical Standards, additional guidance was drawn from Unicode Technical Standards,
Technical Reports, and Notes. Technical Reports, and Notes.
This document is a product of the IETF LDAP Revision (LDAPBIS) Working This document is a product of the IETF LDAP Revision (LDAPBIS) Working
Group. Group.
5. Author's Address 5. Author's Address
Kurt D. Zeilenga Kurt D. Zeilenga
OpenLDAP Foundation OpenLDAP Foundation
skipping to change at page 9, line 16 skipping to change at page 9, line 23
[[Note to the RFC Editor: please replace the citation tags used in [[Note to the RFC Editor: please replace the citation tags used in
referencing Internet-Drafts with tags of the form RFCnnnn where referencing Internet-Drafts with tags of the form RFCnnnn where
possible.]] possible.]]
6.1. Normative References 6.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14 (also RFC 2119), March 1997. Requirement Levels", BCP 14 (also RFC 2119), March 1997.
[RFC3454] Hoffman, P. and M. Blanchet, "Preparation of
Internationalized Strings ('stringprep')", RFC 3454,
December 2002.
[Roadmap] Zeilenga, K. (editor), "LDAP: Technical Specification [Roadmap] Zeilenga, K. (editor), "LDAP: Technical Specification
Road Map", draft-ietf-ldapbis-roadmap-xx.txt, a work in Road Map", draft-ietf-ldapbis-roadmap-xx.txt, a work in
progress. progress.
[StringPrep] Hoffman P. and M. Blanchet, "Preparation of
Internationalized Strings ('stringprep')",
draft-hoffman-rfc3454bis-xx.txt, a work in progress.
[Syntaxes] Legg, S. (editor), "LDAP: Syntaxes and Matching Rules", [Syntaxes] Legg, S. (editor), "LDAP: Syntaxes and Matching Rules",
draft-ietf-ldapbis-syntaxes-xx.txt, a work in progress. draft-ietf-ldapbis-syntaxes-xx.txt, a work in progress.
[Unicode] The Unicode Consortium, "The Unicode Standard, Version [Unicode] The Unicode Consortium, "The Unicode Standard, Version
3.2.0" is defined by "The Unicode Standard, Version 3.0" 3.2.0" is defined by "The Unicode Standard, Version 3.0"
(Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5), (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5),
as amended by the "Unicode Standard Annex #27: Unicode as amended by the "Unicode Standard Annex #27: Unicode
3.1" (http://www.unicode.org/reports/tr27/) and by the 3.1" (http://www.unicode.org/reports/tr27/) and by the
"Unicode Standard Annex #28: Unicode 3.2" "Unicode Standard Annex #28: Unicode 3.2"
(http://www.unicode.org/reports/tr28/). (http://www.unicode.org/reports/tr28/).
skipping to change at page 10, line 22 skipping to change at page 10, line 29
ISO/IEC 9594-6:1994). ISO/IEC 9594-6:1994).
[Glossary] The Unicode Consortium, "Unicode Glossary", [Glossary] The Unicode Consortium, "Unicode Glossary",
<http://www.unicode.org/glossary/>. <http://www.unicode.org/glossary/>.
[CharModel] Whistler, K. and M. Davis, "Unicode Technical Report [CharModel] Whistler, K. and M. Davis, "Unicode Technical Report
#17, Character Encoding Model", UTR17, #17, Character Encoding Model", UTR17,
<http://www.unicode.org/unicode/reports/tr17/>, August <http://www.unicode.org/unicode/reports/tr17/>, August
2000. 2000.
[Filters] Smith, M. (editor), LDAPbis WG, "LDAP: String
Representation of Search Filters",
draft-ietf-ldapbis-filter-xx.txt, a work in progress.
[XMATCH] Zeilenga, K., "Internationalized String Matching Rules [XMATCH] Zeilenga, K., "Internationalized String Matching Rules
for X.500", draft-zeilenga-ldapbis-strmatch-xx.txt, a for X.500", draft-zeilenga-ldapbis-strmatch-xx.txt, a
work in progress. work in progress.
[RFC1345] Simonsen, K., "Character Mnemonics & Character Sets",
RFC 1345, June 1992.
Appendix A. Combining Marks Appendix A. Combining Marks
This appendix is normative. This appendix is normative.
0300-034F 0360-036F 0483-0486 0488-0489 0591-05A1 05A3-05B9 05BB-05BC This table was derived from Unicode [Unicode] data
05BF 05C1-05C2 05C4 064B-0655 0670 06D6-06DC 06DE-06E4 06E7-06E8 files, it lists all code points with the Mn, Mc, or Me
06EA-06ED 0711 0730-074A 07A6-07B0 0901-0903 093C 093E-094F 0951-0954 properties. This table is to be considered definitive
0962-0963 0981-0983 09BC 09BE-09C4 09C7-09C8 09CB-09CD 09D7 09E2-09E3 for the purposes of implementation of this
0A02 0A3C 0A3E-0A42 0A47-0A48 0A4B-0A4D 0A70-0A71 0A81-0A83 0ABC specification.
0ABE-0AC5 0AC7-0AC9 0ACB-0ACD 0B01-0B03 0B3C 0B3E-0B43 0B47-0B48
0B4B-0B4D 0B56-0B57 0B82 0BBE-0BC2 0BC6-0BC8 0BCA-0BCD 0BD7 0C01-0C03 0300-034F 0360-036F 0483-0486 0488-0489 0591-05A1
0C3E-0C44 0C46-0C48 0C4A-0C4D 0C55-0C56 0C82-0C83 0CBE-0CC4 0CC6-0CC8 05A3-05B9 05BB-05BC 05BF 05C1-05C2 05C4 064B-0655 0670
0CCA-0CCD 0CD5-0CD6 0D02-0D03 0D3E-0D43 0D46-0D48 0D4A-0D4D 0D57 06D6-06DC 06DE-06E4 06E7-06E8 06EA-06ED 0711 0730-074A
0D82-0D83 0DCA 0DCF-0DD4 0DD6 0DD8-0DDF 0DF2-0DF3 0E31 0E34-0E3A 07A6-07B0 0901-0903 093C 093E-094F 0951-0954 0962-0963
0E47-0E4E 0EB1 0EB4-0EB9 0EBB-0EBC 0EC8-0ECD 0F18-0F19 0F35 0F37 0F39 0981-0983 09BC 09BE-09C4 09C7-09C8 09CB-09CD 09D7
0F3E-0F3F 0F71-0F84 0F86-0F87 0F90-0F97 0F99-0FBC 0FC6 102C-1032 09E2-09E3 0A02 0A3C 0A3E-0A42 0A47-0A48 0A4B-0A4D
1036-1039 1056-1059 1712-1714 1732-1734 1752-1753 1772-1773 17B4-17D3 0A70-0A71 0A81-0A83 0ABC 0ABE-0AC5 0AC7-0AC9 0ACB-0ACD
180B-180D 18A9 20D0-20EA 302A-302F 3099-309A FB1E FE00-FE0F FE20-FE23 0B01-0B03 0B3C 0B3E-0B43 0B47-0B48 0B4B-0B4D 0B56-0B57
1D165-1D169 1D16D-1D172 1D17B-1D182 1D185-1D18B 1D1AA-1D1AD 0B82 0BBE-0BC2 0BC6-0BC8 0BCA-0BCD 0BD7 0C01-0C03
0C3E-0C44 0C46-0C48 0C4A-0C4D 0C55-0C56 0C82-0C83
0CBE-0CC4 0CC6-0CC8 0CCA-0CCD 0CD5-0CD6 0D02-0D03
0D3E-0D43 0D46-0D48 0D4A-0D4D 0D57 0D82-0D83 0DCA
0DCF-0DD4 0DD6 0DD8-0DDF 0DF2-0DF3 0E31 0E34-0E3A
0E47-0E4E 0EB1 0EB4-0EB9 0EBB-0EBC 0EC8-0ECD 0F18-0F19
0F35 0F37 0F39 0F3E-0F3F 0F71-0F84 0F86-0F87 0F90-0F97
0F99-0FBC 0FC6 102C-1032 1036-1039 1056-1059 1712-1714
1732-1734 1752-1753 1772-1773 17B4-17D3 180B-180D 18A9
20D0-20EA 302A-302F 3099-309A FB1E FE00-FE0F FE20-FE23
1D165-1D169 1D16D-1D172 1D17B-1D182 1D185-1D18B
1D1AA-1D1AD
Appendix B. Substrings Matching Appendix B. Substrings Matching
In absence of substrings matching, the insignificant space handling
for case ignore/exact matching could be simplified. Specifically,
the handling could be as require all sequences of one or more spaces
be replaced with one space and, if string contains non-space
characters, removal of all all leading spaces and trailing spaces.
In the presence of substrings matching, this simplified space handling This appendix is non-normative.
this simplified space handling would lead to unexpected and
undesirable matching behavior. For instance: In absence of substrings matching, the insignificant
space handling for case ignore/exact matching could be
simplified. Specifically, the handling could be as
require all sequences of one or more spaces be replaced
with one space and, if string contains non-space
characters, removal of all all leading spaces and
trailing spaces.
In the presence of substrings matching, this simplified
space handling would lead to unexpected and undesirable
matching behavior. For instance:
1) (CN=foo\20*\20bar) would match the CN value "foobar" but not 1) (CN=foo\20*\20bar) would match the CN value "foobar" but not
"foo<SPACE>bar" nor "foo<SPACE><SPACE>bar"; "foo<SPACE>bar" nor "foo<SPACE><SPACE>bar";
2) (CN=*\20foobar\20*) would match "foobar", but (CN=*\20*foobar*\20*) 2) (CN=*\20foobar\20*) would match "foobar", but (CN=*\20*foobar*\20*)
would not; would not;
3) (CN=foo\20*\20bar) would match "foo<SPACE>X<SPACE>bar" but not 3) (CN=foo\20*\20bar) would match "foo<SPACE>X<SPACE>bar" but not
"foo<SPACE><SPACE>bar". "foo<SPACE><SPACE>bar".
Note to readers not familiar with LDAP substrings matching: the LDAP
filter [Filters] assertion (CN=A*B*C) says "match any value (of the
attribute CN) which begins with A, contains B after A, ends with C
where C is also after B."
The first case illustrates that this simplified space handling would The first case illustrates that this simplified space handling would
cause leading and trailing spaces in substrings of the string to be cause leading and trailing spaces in substrings of the string to be
regarded as insignificant. However, only leading and trailing (as regarded as insignificant. However, only leading and trailing (as
well as multiple consecutive spaces) of the string (as a whole) are well as multiple consecutive spaces) of the string (as a whole) are
insignificant. insignificant.
The second case illustrates that this simplified space handling would The second case illustrates that this simplified space handling would
cause sub-partitioning failures. That is, if a prepared any substring cause sub-partitioning failures. That is, if a prepared any substring
matches a partition of the attribute value, then an assertion matches a partition of the attribute value, then an assertion
constructed by subdividing that substring into multiple substrings constructed by subdividing that substring into multiple substrings
skipping to change at page 13, line 20 skipping to change at page 13, line 48
at http://www.ietf.org/ipr. at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at this standard. Please address the information to the IETF at
ietf-ipr@ietf.org. ietf-ipr@ietf.org.
Full Copyright Full Copyright
Copyright (C) The Internet Society (2005). Copyright (C) The Internet Society (2006).
This document is subject to the rights, licenses and restrictions This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors contained in BCP 78, and except as set forth therein, the authors
retain all their rights. retain all their rights.
This document and the information contained herein are provided on an This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
 End of changes. 27 change blocks. 
52 lines changed or deleted 83 lines changed or added

This html diff was produced by rfcdiff 1.28, available from http://www.levkowetz.com/ietf/tools/rfcdiff/