and Presence Protocol (XMPP) is defined as follows. (This namespace
name adheres to the format defined in [XML-REG].)
URI: urn:ietf:params:xml:ns:xmpp-sasl
Specification: RFC 3920
Description: This is the XML namespace name for SASL-related data in
the Extensible Messaging and Presence Protocol (XMPP) as defined
by RFC 3920.
Registrant Contact: IETF, XMPP Working Group, <xmppwg@jabber.org>
15.3. XML Namespace Name for Stream Errors
A URN sub-namespace for stream-related error data in the Extensible
Messaging and Presence Protocol (XMPP) is defined as follows. (This
namespace name adheres to the format defined in [XML-REG].)
URI: urn:ietf:params:xml:ns:xmpp-streams
Specification: RFC 3920
Description: This is the XML namespace name for stream-related error
data in the Extensible Messaging and Presence Protocol (XMPP) as
defined by RFC 3920.
Registrant Contact: IETF, XMPP Working Group, <xmppwg@jabber.org>
15.4. XML Namespace Name for Resource Binding
A URN sub-namespace for resource binding in the Extensible Messaging
and Presence Protocol (XMPP) is defined as follows. (This namespace
name adheres to the format defined in [XML-REG].)
URI: urn:ietf:params:xml:ns:xmpp-bind
Specification: RFC 3920
Description: This is the XML namespace name for resource binding in
the Extensible Messaging and Presence Protocol (XMPP) as defined
by RFC 3920.
Registrant Contact: IETF, XMPP Working Group, <xmppwg@jabber.org>
15.5. XML Namespace Name for Stanza Errors
A URN sub-namespace for stanza-related error data in the Extensible
Messaging and Presence Protocol (XMPP) is defined as follows. (This
namespace name adheres to the format defined in [XML-REG].)
URI: urn:ietf:params:xml:ns:xmpp-stanzas
Specification: RFC 3920
Description: This is the XML namespace name for stanza-related error
data in the Extensible Messaging and Presence Protocol (XMPP) as
defined by RFC 3920.
Registrant Contact: IETF, XMPP Working Group, <xmppwg@jabber.org>
15.6. Nodeprep Profile of Stringprep
The Nodeprep profile of stringprep is defined under Nodeprep
(Appendix A). The IANA has registered Nodeprep in the stringprep
profile registry.
Name of this profile:
Nodeprep
RFC in which the profile is defined:
RFC 3920
Indicator whether or not this is the newest version of the profile:
This is the first version of Nodeprep
15.7. Resourceprep Profile of Stringprep
The Resourceprep profile of stringprep is defined under Resourceprep
(Appendix B). The IANA has registered Resourceprep in the stringprep
profile registry.
Name of this profile:
Resourceprep
RFC in which the profile is defined:
RFC 3920
Indicator whether or not this is the newest version of the profile:
This is the first version of Resourceprep
15.8. GSSAPI Service Name
The IANA has registered "xmpp" as a GSSAPI [GSS-API] service name, as
defined under SASL Definition (Section 6.3).
15.9. Port Numbers
The IANA has registered "xmpp-client" and "xmpp-server" as keywords
for [TCP] ports 5222 and 5269 respectively.
These ports SHOULD be used for client-to-server and server-to-server
communications respectively, but their use is OPTIONAL.
16. References
16.1. Normative References
[ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 2234, November 1997.
[BASE64] Josefsson, S., "The Base16, Base32, and Base64 Data
Encodings", RFC 3548, July 2003.
[CHARSET] Alvestrand, H., "IETF Policy on Character Sets and
Languages", BCP 18, RFC 2277, January 1998.
[DIGEST-MD5] Leach, P. and C. Newman, "Using Digest Authentication as
a SASL Mechanism", RFC 2831, May 2000.
[DNS] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, November 1987.
[GSS-API] Linn, J., "Generic Security Service Application Program
Interface Version 2, Update 1", RFC 2743, January 2000.
[HTTP-TLS] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
[IDNA] Faltstrom, P., Hoffman, P., and A. Costello,
"Internationalizing Domain Names in Applications
(IDNA)", RFC 3490, March 2003.
[IPv6] Hinden, R. and S. Deering, "Internet Protocol Version 6
(IPv6) Addressing Architecture", RFC 3513, April 2003.
[LANGTAGS] Alvestrand, H., "Tags for the Identification of
Languages", BCP 47, RFC 3066, January 2001.
[NAMEPREP] Hoffman, P. and M. Blanchet, "Nameprep: A Stringprep
Profile for Internationalized Domain Names (IDN)", RFC
3491, March 2003.
[RANDOM] Eastlake 3rd, D., Crocker, S., and J. Schiller,
"Randomness Recommendations for Security", RFC 1750,
December 1994.
[SASL] Myers, J., "Simple Authentication and Security Layer
(SASL)", RFC 2222, October 1997.
[SRV] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for
specifying the location of services (DNS SRV)", RFC
2782, February 2000.
[STRINGPREP] Hoffman, P. and M. Blanchet, "Preparation of
Internationalized Strings ("stringprep")", RFC 3454,
December 2002.
[TCP] Postel, J., "Transmission Control Protocol", STD 7, RFC
793, September 1981.
[TERMS] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[TLS] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
RFC 2246, January 1999.
[UCS2] International Organization for Standardization,
"Information Technology - Universal Multiple-octet coded
Character Set (UCS) - Amendment 2: UCS Transformation
Format 8 (UTF-8)", ISO Standard 10646-1 Addendum 2,
October 1996.
[UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, RFC 3629, November 2003.
[X509] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet
X.509 Public Key Infrastructure Certificate and
Certificate Revocation List (CRL) Profile", RFC 3280,
April 2002.
[XML] Bray, T., Paoli, J., Sperberg-McQueen, C., and E. Maler,
"Extensible Markup Language (XML) 1.0 (2nd ed)", W3C
REC-xml, October 2000, <http://www.w3.org/TR/REC-xml>.
[XML-NAMES] Bray, T., Hollander, D., and A. Layman, "Namespaces in
XML", W3C REC-xml-names, January 1999,
<http://www.w3.org/TR/REC-xml-names>.
16.2. Informative References
[ACAP] Newman, C. and J. Myers, "ACAP -- Application
Configuration Access Protocol", RFC 2244, November 1997.
[ASN.1] CCITT, "Recommendation X.208: Specification of Abstract
Syntax Notation One (ASN.1)", 1988.
[DNSSEC] Eastlake 3rd, D., "Domain Name System Security
Extensions", RFC 2535, March 1999.
[HTTP] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[IMAP] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
4rev1", RFC 3501, March 2003.
[IMP-REQS] Day, M., Aggarwal, S., Mohr, G., and J. Vincent,
"Instant Messaging / Presence Protocol Requirements",
RFC 2779, February 2000.
[IRC] Oikarinen, J. and D. Reed, "Internet Relay Chat
Protocol", RFC 1459, May 1993.
[JEP-0029] Kaes, C., "Definition of Jabber Identifiers (JIDs)", JSF
JEP 0029, October 2003.
[JEP-0078] Saint-Andre, P., "Non-SASL Authentication", JSF JEP
0078, July 2004.
[JEP-0086] Norris, R. and P. Saint-Andre, "Error Condition
Mappings", JSF JEP 0086, February 2004.
[JSF] Jabber Software Foundation, "Jabber Software
Foundation", <http://www.jabber.org/>.
[POP3] Myers, J. and M. Rose, "Post Office Protocol - Version
3", STD 53, RFC 1939, May 1996.
[SIMPLE] SIMPLE Working Group, "SIMPLE WG",
<http://www.ietf.org/html.charters/simple-charter.html>.
[SMTP] Klensin, J., "Simple Mail Transfer Protocol", RFC 2821,
April 2001.
[URI] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifiers (URI): Generic Syntax", RFC 2396,
August 1998.
[USINGTLS] Newman, C., "Using TLS with IMAP, POP3 and ACAP", RFC
2595, June 1999.
[XML-REG] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
January 2004.
[XMPP-IM] Saint-Andre, P., Ed., "Extensible Messaging and Presence
Protocol (XMPP): Instant Messaging and Presence", RFC
3921, October 2004.
Appendix A. Nodeprep
A.1. Introduction
This appendix defines the "Nodeprep" profile of [STRINGPREP]. As
such, it specifies processing rules that will enable users to enter
internationalized node identifiers in the Extensible Messaging and
Presence Protocol (XMPP) and have the highest chance of getting the
content of the strings correct. (An XMPP node identifier is the
optional portion of an XMPP address that precedes a domain identifier
and the ’@’ separator; it is often but not exclusively associated
with an instant messaging username.) These processing rules are
intended only for XMPP node identifiers and are not intended for
arbitrary text or any other aspect of an XMPP address.
This profile defines the following, as required by [STRINGPREP]:
o The intended applicability of the profile: internationalized node
identifiers within XMPP
o The character repertoire that is the input and output to
stringprep: Unicode 3.2, specified in Section 2 of this Appendix
o The mappings used: specified in Section 3
o The Unicode normalization used: specified in Section 4
o The characters that are prohibited as output: specified in Section
5
o Bidirectional character handling: specified in Section 6
A.2. Character Repertoire
This profile uses Unicode 3.2 with the list of unassigned code points
being Table A.1, both defined in Appendix A of [STRINGPREP].
A.3. Mapping
This profile specifies mapping using the following tables from
[STRINGPREP]:
Table B.1
Table B.2
A.4. Normalization
This profile specifies the use of Unicode normalization form KC, as
described in [STRINGPREP].
A.5. Prohibited Output
This profile specifies the prohibition of using the following tables
from [STRINGPREP].
Table C.1.1
Table C.1.2
Table C.2.1
Table C.2.2
Table C.3
Table C.4
Table C.5
Table C.6
Table C.7
Table C.8
Table C.9
In addition, the following Unicode characters are also prohibited:
#x22 (")
#x26 (&)
#x27 (’)
#x2F (/)
#x3A (:)
#x3C (<)
#x3E (>)
#x40 (@)
A.6. Bidirectional Characters
This profile specifies the checking of bidirectional strings, as
described in Section 6 of [STRINGPREP].
Appendix B. Resourceprep
B.1. Introduction
This appendix defines the "Resourceprep" profile of [STRINGPREP]. As
such, it specifies processing rules that will enable users to enter
internationalized resource identifiers in the Extensible Messaging
and Presence Protocol (XMPP) and have the highest chance of getting
the content of the strings correct. (An XMPP resource identifier is
the optional portion of an XMPP address that follows a domain
identifier and the ’/’ separator; it is often but not exclusively
associated with an instant messaging session name.) These processing
rules are intended only for XMPP resource identifiers and are not
intended for arbitrary text or any other aspect of an XMPP address.
This profile defines the following, as required by [STRINGPREP]:
o The intended applicability of the profile: internationalized
resource identifiers within XMPP
o The character repertoire that is the input and output to
stringprep: Unicode 3.2, specified in Section 2 of this Appendix
o The mappings used: specified in Section 3
o The Unicode normalization used: specified in Section 4
o The characters that are prohibited as output: specified in Section
5
o Bidirectional character handling: specified in Section 6
B.2. Character Repertoire
This profile uses Unicode 3.2 with the list of unassigned code points
being Table A.1, both defined in Appendix A of [STRINGPREP].
B.3. Mapping
This profile specifies mapping using the following tables from
[STRINGPREP]:
Table B.1
B.4. Normalization
This profile specifies using Unicode normalization form KC, as
described in [STRINGPREP].
B.5. Prohibited Output
This profile specifies prohibiting use of the following tables from
[STRINGPREP].
Table C.1.2
Table C.2.1
Table C.2.2
Table C.3
Table C.4
Table C.5
Table C.6
Table C.7
Table C.8
Table C.9
B.6. Bidirectional Characters
This profile specifies checking bidirectional strings as described in
Section 6 of [STRINGPREP].
Appendix C. XML Schemas
The following XML schemas are descriptive, not normative. For
schemas defining the ’jabber:client’ and ’jabber:server’ namespaces,
refer to [XMPP-IM].
C.1. Streams namespace
<?xml version=’1.0’ encoding=’UTF-8’?>
<xs:schema
xmlns:xs=’http://www.w3.org/2001/XMLSchema’
targetNamespace=’http://etherx.jabber.org/streams’
xmlns=’http://etherx.jabber.org/streams’
elementFormDefault=’unqualified’>
<xs:element name=’stream’>
<xs:complexType>
<xs:sequence xmlns:client=’jabber:client’
xmlns:server=’jabber:server’
xmlns:db=’jabber:server:dialback’>
<xs:element ref=’features’ minOccurs=’0’ maxOccurs=’1’/>
<xs:any namespace=’urn:ietf:params:xml:ns:xmpp-tls’
minOccurs=’0’
maxOccurs=’unbounded’/>
<xs:any namespace=’urn:ietf:params:xml:ns:xmpp-sasl’
minOccurs=’0’
maxOccurs=’unbounded’/>
<xs:choice minOccurs=’0’ maxOccurs=’1’>
<xs:choice minOccurs=’0’ maxOccurs=’unbounded’>
<xs:element ref=’client:message’/>
<xs:element ref=’client:presence’/>
<xs:element ref=’client:iq’/>
</xs:choice>
<xs:choice minOccurs=’0’ maxOccurs=’unbounded’>
<xs:element ref=’server:message’/>
<xs:element ref=’server:presence’/>
<xs:element ref=’server:iq’/>
<xs:element ref=’db:result’/>
<xs:element ref=’db:verify’/>
</xs:choice>
</xs:choice>
<xs:element ref=’error’ minOccurs=’0’ maxOccurs=’1’/>
</xs:sequence>
<xs:attribute name=’from’ type=’xs:string’ use=’optional’/>
<xs:attribute name=’id’ type=’xs:NMTOKEN’ use=’optional’/>
<xs:attribute name=’to’ type=’xs:string’ use=’optional’/>
<xs:attribute name=’version’ type=’xs:decimal’ use=’optional’/>
<xs:attribute ref=’xml:lang’ use=’optional’/>
</xs:complexType>
</xs:element>
<xs:element name=’features’>
<xs:complexType>
<xs:all xmlns:tls=’urn:ietf:params:xml:ns:xmpp-tls’
xmlns:sasl=’urn:ietf:params:xml:ns:xmpp-sasl’
xmlns:bind=’urn:ietf:params:xml:ns:xmpp-bind’
xmlns:sess=’urn:ietf:params:xml:ns:xmpp-session’>
<xs:element ref=’tls:starttls’ minOccurs=’0’/>
<xs:element ref=’sasl:mechanisms’ minOccurs=’0’/>
<xs:element ref=’bind:bind’ minOccurs=’0’/>
<xs:element ref=’sess:session’ minOccurs=’0’/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name=’error’>
<xs:complexType>
<xs:sequence xmlns:err=’urn:ietf:params:xml:ns:xmpp-streams’>
<xs:group ref=’err:streamErrorGroup’/>
<xs:element ref=’err:text’
minOccurs=’0’
maxOccurs=’1’/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
C.2. Stream error namespace
<?xml version=’1.0’ encoding=’UTF-8’?>
<xs:schema
xmlns:xs=’http://www.w3.org/2001/XMLSchema’
targetNamespace=’urn:ietf:params:xml:ns:xmpp-streams’
xmlns=’urn:ietf:params:xml:ns:xmpp-streams’
elementFormDefault=’qualified’>
<xs:element name=’bad-format’ type=’empty’/>
<xs:element name=’bad-namespace-prefix’ type=’empty’/>
<xs:element name=’conflict’ type=’empty’/>
<xs:element name=’connection-timeout’ type=’empty’/>
<xs:element name=’host-gone’ type=’empty’/>
<xs:element name=’host-unknown’ type=’empty’/>
<xs:element name=’improper-addressing’ type=’empty’/>
<xs:element name=’internal-server-error’ type=’empty’/>
<xs:element name=’invalid-from’ type=’empty’/>
<xs:element name=’invalid-id’ type=’empty’/>
<xs:element name=’invalid-namespace’ type=’empty’/>
<xs:element name=’invalid-xml’ type=’empty’/>
<xs:element name=’not-authorized’ type=’empty’/>
<xs:element name=’policy-violation’ type=’empty’/>
<xs:element name=’remote-connection-failed’ type=’empty’/>
<xs:element name=’resource-constraint’ type=’empty’/>
<xs:element name=’restricted-xml’ type=’empty’/>
<xs:element name=’see-other-host’ type=’xs:string’/>
<xs:element name=’system-shutdown’ type=’empty’/>
<xs:element name=’undefined-condition’ type=’empty’/>
<xs:element name=’unsupported-encoding’ type=’empty’/>
<xs:element name=’unsupported-stanza-type’ type=’empty’/>
<xs:element name=’unsupported-version’ type=’empty’/>
<xs:element name=’xml-not-well-formed’ type=’empty’/>
<xs:group name=’streamErrorGroup’>
<xs:choice>
<xs:element ref=’bad-format’/>
<xs:element ref=’bad-namespace-prefix’/>
<xs:element ref=’conflict’/>
<xs:element ref=’connection-timeout’/>
<xs:element ref=’host-gone’/>
<xs:element ref=’host-unknown’/>
<xs:element ref=’improper-addressing’/>
<xs:element ref=’internal-server-error’/>
<xs:element ref=’invalid-from’/>
<xs:element ref=’invalid-id’/>
<xs:element ref=’invalid-namespace’/>
<xs:element ref=’invalid-xml’/>
<xs:element ref=’not-authorized’/>
<xs:element ref=’policy-violation’/>
<xs:element ref=’remote-connection-failed’/>
<xs:element ref=’resource-constraint’/>
<xs:element ref=’restricted-xml’/>
<xs:element ref=’see-other-host’/>
<xs:element ref=’system-shutdown’/>
<xs:element ref=’undefined-condition’/>
<xs:element ref=’unsupported-encoding’/>
<xs:element ref=’unsupported-stanza-type’/>
<xs:element ref=’unsupported-version’/>
<xs:element ref=’xml-not-well-formed’/>
</xs:choice>
</xs:group>
<xs:element name=’text’>
<xs:complexType>
<xs:simpleContent>
<xs:extension base=’xs:string’>
<xs:attribute ref=’xml:lang’ use=’optional’/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name=’empty’>
<xs:restriction base=’xs:string’>
<xs:enumeration value=’’/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
C.3. TLS namespace
<?xml version=’1.0’ encoding=’UTF-8’?>
<xs:schema
xmlns:xs=’http://www.w3.org/2001/XMLSchema’
targetNamespace=’urn:ietf:params:xml:ns:xmpp-tls’
xmlns=’urn:ietf:params:xml:ns:xmpp-tls’
elementFormDefault=’qualified’>
<xs:element name=’starttls’>
<xs:complexType>
<xs:sequence>
<xs:element
name=’required’
minOccurs=’0’
maxOccurs=’1’
type=’empty’/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name=’proceed’ type=’empty’/>
<xs:element name=’failure’ type=’empty’/>
<xs:simpleType name=’empty’>
<xs:restriction base=’xs:string’>
<xs:enumeration value=’’/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
C.4. SASL namespace
<?xml version=’1.0’ encoding=’UTF-8’?>
<xs:schema
xmlns:xs=’http://www.w3.org/2001/XMLSchema’
targetNamespace=’urn:ietf:params:xml:ns:xmpp-sasl’
xmlns=’urn:ietf:params:xml:ns:xmpp-sasl’
elementFormDefault=’qualified’>
<xs:element name=’mechanisms’>
<xs:complexType>
<xs:sequence>
<xs:element name=’mechanism’
maxOccurs=’unbounded’
type=’xs:string’/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name=’auth’>
<xs:complexType>
<xs:simpleContent>
<xs:extension base=’empty’>
<xs:attribute name=’mechanism’
type=’xs:string’
use=’optional’/>