draft-ietf-precis-framework-12.txt   draft-ietf-precis-framework-13.txt 
PRECIS P. Saint-Andre PRECIS P. Saint-Andre
Internet-Draft Cisco Systems, Inc. Internet-Draft Cisco Systems, Inc.
Obsoletes: 3454 (if approved) M. Blanchet Obsoletes: 3454 (if approved) M. Blanchet
Intended status: Standards Track Viagenie Intended status: Standards Track Viagenie
Expires: May 25, 2014 November 21, 2013 Expires: June 8, 2014 December 5, 2013
PRECIS Framework: Preparation and Comparison of Internationalized PRECIS Framework: Preparation and Comparison of Internationalized
Strings in Application Protocols Strings in Application Protocols
draft-ietf-precis-framework-12 draft-ietf-precis-framework-13
Abstract Abstract
Application protocols using Unicode characters in protocol strings Application protocols using Unicode characters in protocol strings
need to properly prepare such strings in order to perform valid need to properly prepare such strings in order to perform valid
comparison operations (e.g., for purposes of authentication or comparison operations (e.g., for purposes of authentication or
authorization). This document defines a framework enabling authorization). This document defines a framework enabling
application protocols to perform the preparation and comparison of application protocols to perform the preparation and comparison of
internationalized strings ("PRECIS") in a way that depends on the internationalized strings ("PRECIS") in a way that depends on the
properties of Unicode characters and thus is agile with respect to properties of Unicode characters and thus is agile with respect to
skipping to change at page 1, line 42 skipping to change at page 1, line 42
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
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 time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on May 25, 2014. This Internet-Draft will expire on June 8, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 25 skipping to change at page 2, line 25
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. String Classes . . . . . . . . . . . . . . . . . . . . . . . . 6 3. String Classes . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2. IdentifierClass . . . . . . . . . . . . . . . . . . . . . 7 3.2. IdentifierClass . . . . . . . . . . . . . . . . . . . . . 7
3.3. FreeformClass . . . . . . . . . . . . . . . . . . . . . . 9 3.3. FreeformClass . . . . . . . . . . . . . . . . . . . . . . 9
4. Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4. Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1. Principles . . . . . . . . . . . . . . . . . . . . . . . . 10 4.1. Principles . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. Building Application-Layer Constructs . . . . . . . . . . 12 4.2. Building Application-Layer Constructs . . . . . . . . . . 12
4.3. A Note about Spaces . . . . . . . . . . . . . . . . . . . 13 4.3. A Note about Spaces . . . . . . . . . . . . . . . . . . . 13
5. Order of Operations . . . . . . . . . . . . . . . . . . . . . 13 5. Order of Operations . . . . . . . . . . . . . . . . . . . . . 14
6. Code Point Properties . . . . . . . . . . . . . . . . . . . . 14 6. Code Point Properties . . . . . . . . . . . . . . . . . . . . 14
7. Category Definitions Used to Calculate Derived Property . . . 16 7. Category Definitions Used to Calculate Derived Property . . . 16
7.1. LetterDigits (A) . . . . . . . . . . . . . . . . . . . . . 16 7.1. LetterDigits (A) . . . . . . . . . . . . . . . . . . . . . 16
7.2. Unstable (B) . . . . . . . . . . . . . . . . . . . . . . . 17 7.2. Unstable (B) . . . . . . . . . . . . . . . . . . . . . . . 17
7.3. IgnorableProperties (C) . . . . . . . . . . . . . . . . . 17 7.3. IgnorableProperties (C) . . . . . . . . . . . . . . . . . 17
7.4. IgnorableBlocks (D) . . . . . . . . . . . . . . . . . . . 17 7.4. IgnorableBlocks (D) . . . . . . . . . . . . . . . . . . . 17
7.5. LDH (E) . . . . . . . . . . . . . . . . . . . . . . . . . 17 7.5. LDH (E) . . . . . . . . . . . . . . . . . . . . . . . . . 17
7.6. Exceptions (F) . . . . . . . . . . . . . . . . . . . . . . 17 7.6. Exceptions (F) . . . . . . . . . . . . . . . . . . . . . . 17
7.7. BackwardCompatible (G) . . . . . . . . . . . . . . . . . . 19 7.7. BackwardCompatible (G) . . . . . . . . . . . . . . . . . . 19
7.8. JoinControl (H) . . . . . . . . . . . . . . . . . . . . . 19 7.8. JoinControl (H) . . . . . . . . . . . . . . . . . . . . . 19
skipping to change at page 8, line 36 skipping to change at page 8, line 36
3.2.2. Contextual Rule Required 3.2.2. Contextual Rule Required
o A number of characters from the Exceptions ("F") category defined o A number of characters from the Exceptions ("F") category defined
under Section 7.6 (see Section 7.6 for a full list). under Section 7.6 (see Section 7.6 for a full list).
o Joining characters, i.e., the JoinControl ("H") category defined o Joining characters, i.e., the JoinControl ("H") category defined
under Section 7.8. under Section 7.8.
3.2.3. Disallowed 3.2.3. Disallowed
o Old Hangul Jamo characters, i.e., the OldHangulJamo ("I") category
defined under Section 7.9.
o Control characters, i.e., the Controls ("L") category defined o Control characters, i.e., the Controls ("L") category defined
under Section 7.12. under Section 7.12.
o Ignorable characters, i.e., the PrecisIgnorableProperties ("M") o Ignorable characters, i.e., the PrecisIgnorableProperties ("M")
category defined under Section 7.13. category defined under Section 7.13.
o Space characters, i.e., the Spaces ("N") category defined under o Space characters, i.e., the Spaces ("N") category defined under
Section 7.14. Section 7.14.
o Symbol characters, i.e., the Symbols ("O") category defined under o Symbol characters, i.e., the Symbols ("O") category defined under
Section 7.15. Section 7.15.
o Punctuation characters, i.e., the Punctuation ("P") category o Punctuation characters, i.e., the Punctuation ("P") category
defined under Section 7.16. defined under Section 7.16.
skipping to change at page 10, line 10 skipping to change at page 10, line 10
3.3.2. Contextual Rule Required 3.3.2. Contextual Rule Required
o A number of characters from the Exceptions ("F") category defined o A number of characters from the Exceptions ("F") category defined
under Section 7.6 (see Section 7.6 for a full list). under Section 7.6 (see Section 7.6 for a full list).
o Joining characters, i.e., the JoinControl ("H") category defined o Joining characters, i.e., the JoinControl ("H") category defined
under Section 7.8. under Section 7.8.
3.3.3. Disallowed 3.3.3. Disallowed
o Old Hangul Jamo characters, i.e., the OldHangulJamo ("I") category
defined under Section 7.9.
o Control characters, i.e., the Controls ("L") category defined o Control characters, i.e., the Controls ("L") category defined
under Section 7.12. under Section 7.12.
o Ignorable characters, i.e., the PrecisIgnorableProperties ("M") o Ignorable characters, i.e., the PrecisIgnorableProperties ("M")
category defined under Section 7.13. category defined under Section 7.13.
3.3.4. Unassigned 3.3.4. Unassigned
Any code points that are not yet designated in the Unicode character Any code points that are not yet designated in the Unicode character
set SHALL be considered Unassigned for purposes of the FreeformClass, set SHALL be considered Unassigned for purposes of the FreeformClass,
and a string containing such code points SHALL be rejected. and a string containing such code points SHALL be rejected.
skipping to change at page 10, line 49 skipping to change at page 10, line 51
is a differentiator and "BaseClass" is the name of the PRECIS string is a differentiator and "BaseClass" is the name of the PRECIS string
class being profiled; for example, the profile of the IdentifierClass class being profiled; for example, the profile of the IdentifierClass
used for localparts of Jabber IDs in the Extensible Messaging and used for localparts of Jabber IDs in the Extensible Messaging and
Presence Protocol (XMPP) is named "JIDlocalIdentifierClass" Presence Protocol (XMPP) is named "JIDlocalIdentifierClass"
[I-D.ietf-xmpp-6122bis]. [I-D.ietf-xmpp-6122bis].
4.1.1. Width Mapping 4.1.1. Width Mapping
The width mapping rule of a profile specifies whether width mapping The width mapping rule of a profile specifies whether width mapping
is performed on fullwidth and halfwidth characters, and how the is performed on fullwidth and halfwidth characters, and how the
mapping is done (e.g., mapping fullwidth and halfwidth characters to mapping is done. Typically such mapping consists of mapping
their decomposition equivalents). fullwidth and halfwidth characters, i.e., code points with a
Decomposition Type of Wide or Narrow, to their decomposition
mappings; as an example, FULLWIDTH DIGIT ZERO (U+FF10) would be
mapped to DIGIT ZERO (U+0030).
The normalization form specified by a profile (see below) has an The normalization form specified by a profile (see below) has an
impact on the need for width mapping. Because width mapping is impact on the need for width mapping. Because width mapping is
performed as a part of compatibility decomposition, a profile performed as a part of compatibility decomposition, a profile
employing either normalization form KD (NFKD) or normalization form employing either normalization form KD (NFKD) or normalization form
KC (NFKC) does not need to specify width mapping. However, if KC (NFKC) does not need to specify width mapping. However, if
Unicode normalization form C (NFC) is used then the profile needs to Unicode normalization form C (NFC) is used then the profile needs to
specify whether to apply width mapping; in this case, width mapping specify whether to apply width mapping; in this case, width mapping
is in general RECOMMENDED because allowing fullwidth and halfwidth is in general RECOMMENDED because allowing fullwidth and halfwidth
characters to remain unmapped to their decomposition equivalents characters to remain unmapped to their compatibility variants would
would violate the principle of least user surprise. For more violate the principle of least user surprise. For more information
information about the concept of width in East Asian scripts within about the concept of width in East Asian scripts within Unicode, see
Unicode, see Unicode Standard Annex #11 [UAX11]. Unicode Standard Annex #11 [UAX11].
4.1.2. Additional Mappings 4.1.2. Additional Mappings
The additional mappings rule of a profile specifies whether The additional mappings rule of a profile specifies whether
additional mappings are to be applied, such as mapping of delimiter additional mappings are to be applied, such as mapping of delimiter
characters, mapping of special characters (e.g., non-ASCII space characters, mapping of special characters (e.g., non-ASCII space
characters to ASCII space or certain characters to nothing), and case characters to ASCII space or certain characters to nothing), and case
mapping based on locale or on locale and context (see mapping based on locale or on locale and context (see
[I-D.ietf-precis-mappings]). [I-D.ietf-precis-mappings]).
skipping to change at page 24, line 24 skipping to change at page 24, line 24
The registration template is as follows: The registration template is as follows:
Name: [the name of the profile] Name: [the name of the profile]
Applicability: [the specific protocol elements to which this profile Applicability: [the specific protocol elements to which this profile
applies, e.g., "Localparts in XMPP addresses."] applies, e.g., "Localparts in XMPP addresses."]
Base Class: [which PRECIS string class is being profiled] Base Class: [which PRECIS string class is being profiled]
Replaces: [the Stringprep profile that this PRECIS profile replaces, Replaces: [the Stringprep profile that this PRECIS profile replaces,
if any] if any]
Width Mapping: [the behavioral rule for handling of width, e.g., Width Mapping: [the behavioral rule for handling of width, e.g.,
"Map fullwidth and halfwidth characters to their decomposition "Map fullwidth and halfwidth characters to their compatibility
equivalents."] variants."]
Additional Mappings: [any additional mappings are required or Additional Mappings: [any additional mappings are required or
recommended, e.g., "Map non-ASCII space characters to ASCII recommended, e.g., "Map non-ASCII space characters to ASCII
space."] space."]
Case Mapping: [the behavioral rule for handling of case, e.g., "Map Case Mapping: [the behavioral rule for handling of case, e.g., "Map
uppercase and titlecase characters to lowercase."] uppercase and titlecase characters to lowercase."]
Normalization: [which Unicode normalization form is applied, e.g., Normalization: [which Unicode normalization form is applied, e.g.,
"NFC"] "NFC"]
Directionality: [the behavioral rule for handling of right-to-left Directionality: [the behavioral rule for handling of right-to-left
code points, e.g., "The 'Bidi Rule' defined in RFC 5893 applies."] code points, e.g., "The 'Bidi Rule' defined in RFC 5893 applies."]
Exclusions: [a brief description of the specific code points or Exclusions: [a brief description of the specific code points or
skipping to change at page 30, line 22 skipping to change at page 30, line 22
[RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network [RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network
Interchange", RFC 5198, March 2008. Interchange", RFC 5198, March 2008.
[UNICODE] The Unicode Consortium, "The Unicode Standard", 2013, [UNICODE] The Unicode Consortium, "The Unicode Standard", 2013,
<http://www.unicode.org/versions/latest/>. <http://www.unicode.org/versions/latest/>.
12.2. Informative References 12.2. Informative References
[I-D.ietf-precis-nickname] [I-D.ietf-precis-nickname]
Saint-Andre, P., "Preparation and Comparison of Saint-Andre, P., "Preparation and Comparison of
Nicknames", draft-ietf-precis-nickname-07 (work in Nicknames", draft-ietf-precis-nickname-08 (work in
progress), October 2013. progress), December 2013.
[I-D.ietf-precis-saslprepbis] [I-D.ietf-precis-saslprepbis]
Saint-Andre, P. and A. Melnikov, "Username and Password Saint-Andre, P. and A. Melnikov, "Username and Password
Preparation Algorithms", draft-ietf-precis-saslprepbis-05 Preparation Algorithms", draft-ietf-precis-saslprepbis-06
(work in progress), October 2013. (work in progress), December 2013.
[I-D.ietf-xmpp-6122bis] [I-D.ietf-xmpp-6122bis]
Saint-Andre, P., "Extensible Messaging and Presence Saint-Andre, P., "Extensible Messaging and Presence
Protocol (XMPP): Address Format", Protocol (XMPP): Address Format",
draft-ietf-xmpp-6122bis-09 (work in progress), draft-ietf-xmpp-6122bis-09 (work in progress),
November 2013. November 2013.
[RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson, [RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson,
"Remote Authentication Dial In User Service (RADIUS)", "Remote Authentication Dial In User Service (RADIUS)",
RFC 2865, June 2000. RFC 2865, June 2000.
skipping to change at page 63, line 13 skipping to change at page 63, line 13
E0020..E007F; DISALLOWED # TAG SPACE..CANCEL TAG E0020..E007F; DISALLOWED # TAG SPACE..CANCEL TAG
E0080..E00FF; UNASSIGNED # <reserved>..<reserved> E0080..E00FF; UNASSIGNED # <reserved>..<reserved>
E0100..E01EF; DISALLOWED # VAR SEL-17..VAR SEL-256 E0100..E01EF; DISALLOWED # VAR SEL-17..VAR SEL-256
E01F0..EFFFD; UNASSIGNED # <reserved>..<reserved> E01F0..EFFFD; UNASSIGNED # <reserved>..<reserved>
EFFFE..10FFFF; DISALLOWED # <noncharacter>..<noncharacter> EFFFE..10FFFF; DISALLOWED # <noncharacter>..<noncharacter>
Appendix B. Acknowledgements Appendix B. Acknowledgements
The authors would like to acknowledge the comments and contributions The authors would like to acknowledge the comments and contributions
of the following individuals: David Black, Mark Davis, Alan DeKok, of the following individuals: David Black, Mark Davis, Alan DeKok,
Martin Duerst, Patrik Faltstrom, Ted Hardie, Joe Hildebrand, Paul Martin Duerst, Patrik Faltstrom, Ted Hardie, Joe Hildebrand, Bjoern
Hoffman, Jeffrey Hutzelman, Simon Josefsson, John Klensin, Alexey Hoehrmann, Paul Hoffman, Jeffrey Hutzelman, Simon Josefsson, John
Melnikov, Takahiro Nemoto, Yoav Nir, Mike Parker, Pete Resnick, Klensin, Alexey Melnikov, Takahiro Nemoto, Yoav Nir, Mike Parker,
Andrew Sullivan, Dave Thaler, Yoshiro Yoneya, and Florian Zeitz. Pete Resnick, Andrew Sullivan, Dave Thaler, Yoshiro Yoneya, and
Florian Zeitz.
Some algorithms and textual descriptions have been borrowed from Some algorithms and textual descriptions have been borrowed from
[RFC5892]. Some text regarding security has been borrowed from [RFC5892]. Some text regarding security has been borrowed from
[RFC5890] and [I-D.ietf-xmpp-6122bis]. [RFC5890] and [I-D.ietf-xmpp-6122bis].
Authors' Addresses Authors' Addresses
Peter Saint-Andre Peter Saint-Andre
Cisco Systems, Inc. Cisco Systems, Inc.
1899 Wynkoop Street, Suite 600 1899 Wynkoop Street, Suite 600
 End of changes. 12 change blocks. 
20 lines changed or deleted 28 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/