draft-ietf-xmpp-cpim-00.txt   draft-ietf-xmpp-cpim-01.txt 
Network Working Group P. Saint-Andre Network Working Group P. Saint-Andre
Internet-Draft Jabber Software Foundation Internet-Draft Jabber Software Foundation
Expires: December 21, 2003 T. Bamonti Expires: December 28, 2003 T. Bamonti
Jabber, Inc. Jabber, Inc.
June 22, 2003 June 29, 2003
XMPP CPIM Mapping XMPP CPIM Mapping
draft-ietf-xmpp-cpim-00 draft-ietf-xmpp-cpim-01
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that other Task Force (IETF), its areas, and its working groups. Note that other
groups may also distribute working documents as Internet-Drafts. groups may also distribute working documents as Internet-Drafts.
skipping to change at page 1, line 32 skipping to change at page 1, line 32
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."
The list of current Internet-Drafts can be accessed at http:// The list of current Internet-Drafts can be accessed at http://
www.ietf.org/ietf/1id-abstracts.txt. www.ietf.org/ietf/1id-abstracts.txt.
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.
This Internet-Draft will expire on December 21, 2003. This Internet-Draft will expire on December 28, 2003.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2003). All Rights Reserved. Copyright (C) The Internet Society (2003). All Rights Reserved.
Abstract Abstract
This document describes a mapping of the Extensible Messaging and This document describes a mapping of the Extensible Messaging and
Presence Protocol (XMPP) to the Common Presence and Instant Messaging Presence Protocol (XMPP) to the Common Presence and Instant Messaging
(CPIM) specifications. (CPIM) specifications.
skipping to change at page 2, line 16 skipping to change at page 2, line 16
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 4
1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 Terminology . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Conventions Used in this Document . . . . . . . . . . . . 5 1.3 Conventions Used in this Document . . . . . . . . . . . . 5
1.4 Discussion Venue . . . . . . . . . . . . . . . . . . . . . 5 1.4 Discussion Venue . . . . . . . . . . . . . . . . . . . . . 5
1.5 Intellectual Property Notice . . . . . . . . . . . . . . . 5 1.5 Intellectual Property Notice . . . . . . . . . . . . . . . 5
2. Approach . . . . . . . . . . . . . . . . . . . . . . . . . 6 2. Approach . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Mapping of Instant Messages . . . . . . . . . . . . . . . 7 3. Mapping of Instant Messages . . . . . . . . . . . . . . . 7
3.1 Identification of Instant Inboxes . . . . . . . . . . . . 7 3.1 Identification of Instant Inboxes . . . . . . . . . . . . 7
3.2 Syntax Mapping from XMPP to CPIM Specifications . . . . . 7 3.2 Message Syntax Mapping from XMPP to CPIM Specifications . 7
3.2.1 From Address . . . . . . . . . . . . . . . . . . . . . . . 7 3.2.1 From Address . . . . . . . . . . . . . . . . . . . . . . . 7
3.2.2 To Address . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2.2 To Address . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.3 CPIM Courtesy Copy . . . . . . . . . . . . . . . . . . . . 8 3.2.3 CPIM Courtesy Copy . . . . . . . . . . . . . . . . . . . . 8
3.2.4 XMPP Stanza ID . . . . . . . . . . . . . . . . . . . . . . 8 3.2.4 XMPP Stanza ID . . . . . . . . . . . . . . . . . . . . . . 8
3.2.5 XMPP Message Type . . . . . . . . . . . . . . . . . . . . 8 3.2.5 XMPP Message Type . . . . . . . . . . . . . . . . . . . . 8
3.2.6 XMPP Message Thread . . . . . . . . . . . . . . . . . . . 9 3.2.6 XMPP Message Thread . . . . . . . . . . . . . . . . . . . 9
3.2.7 CPIM DateTime Header . . . . . . . . . . . . . . . . . . . 9 3.2.7 CPIM DateTime Header . . . . . . . . . . . . . . . . . . . 9
3.2.8 Message Subject . . . . . . . . . . . . . . . . . . . . . 9 3.2.8 Message Subject . . . . . . . . . . . . . . . . . . . . . 9
3.2.9 CPIM Header Extensions . . . . . . . . . . . . . . . . . . 9 3.2.9 CPIM Header Extensions . . . . . . . . . . . . . . . . . . 9
3.2.10 CPIM Required Headers . . . . . . . . . . . . . . . . . . 10 3.2.10 CPIM Required Headers . . . . . . . . . . . . . . . . . . 10
3.2.11 MSGFMT MIME Content-type . . . . . . . . . . . . . . . . . 10 3.2.11 MSGFMT MIME Content-type . . . . . . . . . . . . . . . . . 10
3.2.12 MSGFMT MIME Content-ID . . . . . . . . . . . . . . . . . . 10 3.2.12 MSGFMT MIME Content-ID . . . . . . . . . . . . . . . . . . 10
3.2.13 Message Body . . . . . . . . . . . . . . . . . . . . . . . 10 3.2.13 Message Body . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.14 XMPP Message Extensions . . . . . . . . . . . . . . . . . 11 3.2.14 XMPP Message Extensions . . . . . . . . . . . . . . . . . 11
3.3 Syntax Mapping from CPIM Specifications to XMPP . . . . . 11 3.3 Message Syntax Mapping from CPIM Specifications to XMPP . 11
3.3.1 From Address . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.1 From Address . . . . . . . . . . . . . . . . . . . . . . . 11
3.3.2 To Address . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3.2 To Address . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.3 CPIM Courtesy Copy . . . . . . . . . . . . . . . . . . . . 12 3.3.3 CPIM Courtesy Copy . . . . . . . . . . . . . . . . . . . . 12
3.3.4 XMPP Message Type . . . . . . . . . . . . . . . . . . . . 12 3.3.4 XMPP Message Type . . . . . . . . . . . . . . . . . . . . 12
3.3.5 CPIM DateTime Header . . . . . . . . . . . . . . . . . . . 12 3.3.5 CPIM DateTime Header . . . . . . . . . . . . . . . . . . . 12
3.3.6 Message Subject . . . . . . . . . . . . . . . . . . . . . 12 3.3.6 Message Subject . . . . . . . . . . . . . . . . . . . . . 12
3.3.7 CPIM Header Extensions . . . . . . . . . . . . . . . . . . 13 3.3.7 CPIM Header Extensions . . . . . . . . . . . . . . . . . . 13
3.3.8 CPIM Required Headers . . . . . . . . . . . . . . . . . . 13 3.3.8 CPIM Required Headers . . . . . . . . . . . . . . . . . . 13
3.3.9 MSGFMT MIME Content-type . . . . . . . . . . . . . . . . . 13 3.3.9 MSGFMT MIME Content-type . . . . . . . . . . . . . . . . . 13
3.3.10 MSGFMT MIME Content-ID . . . . . . . . . . . . . . . . . . 13 3.3.10 MSGFMT MIME Content-ID . . . . . . . . . . . . . . . . . . 13
3.3.11 Message Body . . . . . . . . . . . . . . . . . . . . . . . 14 3.3.11 Message Body . . . . . . . . . . . . . . . . . . . . . . . 14
4. Mapping of Presence . . . . . . . . . . . . . . . . . . . 15 4. Mapping of Presence . . . . . . . . . . . . . . . . . . . 15
4.1 Identification of Presentities . . . . . . . . . . . . . . 15 4.1 Identification of Presentities . . . . . . . . . . . . . . 15
4.2 Syntax Mapping from XMPP to CPIM Specifications . . . . . 15 4.2 Presence Syntax Mapping from XMPP to CPIM Specifications . 15
4.2.1 From Address . . . . . . . . . . . . . . . . . . . . . . . 15 4.2.1 From Address . . . . . . . . . . . . . . . . . . . . . . . 15
4.2.2 To Address . . . . . . . . . . . . . . . . . . . . . . . . 16 4.2.2 To Address . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.3 CPIM Courtesy Copy . . . . . . . . . . . . . . . . . . . . 17 4.2.3 CPIM Courtesy Copy . . . . . . . . . . . . . . . . . . . . 17
4.2.4 XMPP Stanza ID . . . . . . . . . . . . . . . . . . . . . . 17 4.2.4 XMPP Stanza ID . . . . . . . . . . . . . . . . . . . . . . 17
4.2.5 CPIM DateTime Header . . . . . . . . . . . . . . . . . . . 17 4.2.5 CPIM DateTime Header . . . . . . . . . . . . . . . . . . . 17
4.2.6 CPIM Subject Header . . . . . . . . . . . . . . . . . . . 17 4.2.6 CPIM Subject Header . . . . . . . . . . . . . . . . . . . 17
4.2.7 CPIM Header Extensions . . . . . . . . . . . . . . . . . . 17 4.2.7 CPIM Header Extensions . . . . . . . . . . . . . . . . . . 17
4.2.8 CPIM Required Headers . . . . . . . . . . . . . . . . . . 18 4.2.8 CPIM Required Headers . . . . . . . . . . . . . . . . . . 18
4.2.9 PIDF MIME Content-type . . . . . . . . . . . . . . . . . . 18 4.2.9 PIDF MIME Content-type . . . . . . . . . . . . . . . . . . 18
4.2.10 PIDF MIME Content-ID . . . . . . . . . . . . . . . . . . . 18 4.2.10 PIDF MIME Content-ID . . . . . . . . . . . . . . . . . . . 18
4.2.11 XMPP Presence Type . . . . . . . . . . . . . . . . . . . . 18 4.2.11 XMPP Presence Type . . . . . . . . . . . . . . . . . . . . 18
4.2.12 XMPP Show Element . . . . . . . . . . . . . . . . . . . . 19 4.2.12 XMPP Show Element . . . . . . . . . . . . . . . . . . . . 19
4.2.13 XMPP Status Element . . . . . . . . . . . . . . . . . . . 20 4.2.13 XMPP Status Element . . . . . . . . . . . . . . . . . . . 20
4.2.14 PIDF Contact Element . . . . . . . . . . . . . . . . . . . 21 4.2.14 PIDF Contact Element . . . . . . . . . . . . . . . . . . . 21
4.2.15 Presence Priority . . . . . . . . . . . . . . . . . . . . 22 4.2.15 Presence Priority . . . . . . . . . . . . . . . . . . . . 22
4.2.16 PIDF Timestamp Element . . . . . . . . . . . . . . . . . . 22 4.2.16 PIDF Timestamp Element . . . . . . . . . . . . . . . . . . 22
4.2.17 XMPP Presence Extensions . . . . . . . . . . . . . . . . . 22 4.2.17 XMPP Presence Extensions . . . . . . . . . . . . . . . . . 22
4.3 Syntax Mapping from CPIM Specifications to XMPP . . . . . 23 4.3 Presence Syntax Mapping from CPIM Specifications to XMPP . 23
4.3.1 From Address . . . . . . . . . . . . . . . . . . . . . . . 23 4.3.1 From Address . . . . . . . . . . . . . . . . . . . . . . . 23
4.3.2 To Address . . . . . . . . . . . . . . . . . . . . . . . . 23 4.3.2 To Address . . . . . . . . . . . . . . . . . . . . . . . . 23
4.3.3 CPIM Courtesy Copy . . . . . . . . . . . . . . . . . . . . 24 4.3.3 CPIM Courtesy Copy . . . . . . . . . . . . . . . . . . . . 24
4.3.4 CPIM DateTime Header . . . . . . . . . . . . . . . . . . . 24 4.3.4 CPIM DateTime Header . . . . . . . . . . . . . . . . . . . 24
4.3.5 CPIM Subject Header . . . . . . . . . . . . . . . . . . . 24 4.3.5 CPIM Subject Header . . . . . . . . . . . . . . . . . . . 24
4.3.6 CPIM Header Extensions . . . . . . . . . . . . . . . . . . 24 4.3.6 CPIM Header Extensions . . . . . . . . . . . . . . . . . . 24
4.3.7 CPIM Required Headers . . . . . . . . . . . . . . . . . . 24 4.3.7 CPIM Required Headers . . . . . . . . . . . . . . . . . . 24
4.3.8 PIDF MIME Content-type . . . . . . . . . . . . . . . . . . 25 4.3.8 PIDF MIME Content-type . . . . . . . . . . . . . . . . . . 25
4.3.9 PIDF MIME Content-ID . . . . . . . . . . . . . . . . . . . 25 4.3.9 PIDF MIME Content-ID . . . . . . . . . . . . . . . . . . . 25
4.3.10 PIDF Basic Presence Status . . . . . . . . . . . . . . . . 25 4.3.10 PIDF Basic Presence Status . . . . . . . . . . . . . . . . 25
skipping to change at page 3, line 42 skipping to change at page 3, line 42
5.2 Receiving a Subscription Request . . . . . . . . . . . . . 31 5.2 Receiving a Subscription Request . . . . . . . . . . . . . 31
5.3 Subscription Durations . . . . . . . . . . . . . . . . . . 32 5.3 Subscription Durations . . . . . . . . . . . . . . . . . . 32
5.4 The Notify Operation . . . . . . . . . . . . . . . . . . . 32 5.4 The Notify Operation . . . . . . . . . . . . . . . . . . . 32
5.5 Unsubscribing . . . . . . . . . . . . . . . . . . . . . . 33 5.5 Unsubscribing . . . . . . . . . . . . . . . . . . . . . . 33
5.6 Cancelling a Subscription . . . . . . . . . . . . . . . . 33 5.6 Cancelling a Subscription . . . . . . . . . . . . . . . . 33
6. Mapping of Character Encodings . . . . . . . . . . . . . . 35 6. Mapping of Character Encodings . . . . . . . . . . . . . . 35
7. Security Considerations . . . . . . . . . . . . . . . . . 36 7. Security Considerations . . . . . . . . . . . . . . . . . 36
Normative References . . . . . . . . . . . . . . . . . . . 37 Normative References . . . . . . . . . . . . . . . . . . . 37
Informative References . . . . . . . . . . . . . . . . . . 38 Informative References . . . . . . . . . . . . . . . . . . 38
Authors' Addresses . . . . . . . . . . . . . . . . . . . . 38 Authors' Addresses . . . . . . . . . . . . . . . . . . . . 38
Intellectual Property and Copyright Statements . . . . . . 39 A. Revision History . . . . . . . . . . . . . . . . . . . . . 39
A.1 Changes from draft-ietf-xmpp-cpim-00 . . . . . . . . . . . 39
Intellectual Property and Copyright Statements . . . . . . 40
1. Introduction 1. Introduction
1.1 Overview 1.1 Overview
The Instant Messaging and Presence (IMPP) Working Group has defined The Instant Messaging and Presence (IMPP) Working Group has defined
an abstract framework for interoperability among instant messaging an abstract framework for interoperability among instant messaging
and presence systems that are compliant with RFC 2779 [1]. This (IM) and presence systems that are compliant with RFC 2779 [1]. This
framework is commonly called Common Presence and Instant Messaging or framework is commonly called Common Presence and Instant Messaging or
"CPIM". The CPIM specifications include a Common Profile for Instant "CPIM". The CPIM specifications include a Common Profile for Instant
Messaging [2] (also called CPIM), a Common Profile for Presence [3] Messaging [2] (also called CPIM), a Common Profile for Presence [3]
(CPP), a CPIM Message Format [4] (MSGFMT), and a Common Presence (CPP), a CPIM Message Format [4] (MSGFMT), and a Common Presence
Information Data Format [5] (PIDF). (Note: to prevent confusion, Information Data Format [5] (PIDF). (Note: to prevent confusion,
Common Presence and Instant Messaging is referred to herein Common Presence and Instant Messaging is referred to herein
collectively as "the CPIM specifications", whereas the Common Profile collectively as "the CPIM specifications", whereas the Common Profile
for Instant Messaging is referred to as "CPIM". However, the term for Instant Messaging is referred to as "CPIM". However, the term
"XMPP-CPIM Gateway" is used to refer to a gateway between a XMPP "XMPP-CPIM Gateway" is used to refer to a gateway between an XMPP
service and a non-XMPP service, where the common format is defined by service and a non-XMPP service, where the common format is defined by
the CPIM specifications.) the CPIM specifications.)
This document describes how the Extensible Messaging and Presence This document describes how the Extensible Messaging and Presence
Protocol (XMPP Core [6], XMPP IM [7]) maps to the abstract model Protocol (XMPP Core [6], XMPP IM [7]) maps to the abstract model
contained in the CPIM specifications, mainly for the purpose of contained in the CPIM specifications, mainly for the purpose of
establishing gateways between XMPP services and non-XMPP instant establishing gateways between XMPP services and non-XMPP services
messaging (IM) services that conform to RFC 2779 [1]. Such gateways that conform to RFC 2779 [1]. Such gateways may be established to
may be established to interpret the protocols of one service and interpret the protocols of one service and translate them into the
translate them into the protocols of the other service. In the case protocols of the other service. We can visualize this relationship as
of communications between an XMPP service and a non-XMPP service, we follows:
can visualize this relationship as follows:
+-------------+ +-------------+ +------------+ +-------------+ +-------------+ +------------+
| | | | | | | | | | | |
| XMPP | | XMPP-CPIM | | Non-XMPP | | XMPP | | XMPP-CPIM | | Non-XMPP |
| Service | <----> | Gateway | <----> | Service | | Service | <----> | Gateway | <----> | Service |
| | | | | | | | | | | |
+-------------+ +-------------+ +------------+ +-------------+ +-------------+ +------------+
This document defines a mapping for use by a gateway that translates This document defines a mapping for use by a gateway that translates
between XMPP and a non-XMPP protocol via the CPIM specifications. between XMPP and a non-XMPP protocol via the CPIM specifications.
skipping to change at page 7, line 19 skipping to change at page 7, line 19
object as the bearer of encapsulated text content in order to comply object as the bearer of encapsulated text content in order to comply
with the instant messaging semantics defined by CPIM [2]. with the instant messaging semantics defined by CPIM [2].
3.1 Identification of Instant Inboxes 3.1 Identification of Instant Inboxes
There is a one-to-one relationship between an XMPP entity and a CPIM There is a one-to-one relationship between an XMPP entity and a CPIM
instant inbox when the JID of the entity contains only a node instant inbox when the JID of the entity contains only a node
identifier and domain identifier, and the node identifier uniquely identifier and domain identifier, and the node identifier uniquely
corresponds to an IM user who possesses an account on an XMPP server. corresponds to an IM user who possesses an account on an XMPP server.
3.2 Syntax Mapping from XMPP to CPIM Specifications 3.2 Message Syntax Mapping from XMPP to CPIM Specifications
This section defines the mapping of syntax primitives from XMPP This section defines the mapping of syntax primitives from XMPP
message stanzas to "Message/CPIM" objects with encapsulated text message stanzas to "Message/CPIM" objects with encapsulated text
content. content.
3.2.1 From Address 3.2.1 From Address
The 'from' attribute of an XMPP message stanza maps to the 'From' The 'from' attribute of an XMPP message stanza maps to the 'From'
header of a "Message/CPIM" object. In XMPP, the sender MUST NOT header of a "Message/CPIM" object. In XMPP, the sender MUST NOT
include a 'from' attribute; instead, the sender's server stamps the include a 'from' attribute; instead, the sender's server stamps the
skipping to change at page 7, line 48 skipping to change at page 7, line 48
"Formal-name" for the sender (if known). "Formal-name" for the sender (if known).
Example: From Address Mapping Example: From Address Mapping
XMPP 'from' attribute XMPP 'from' attribute
<message from='juliet@capulet.com/balcony'> <message from='juliet@capulet.com/balcony'>
... ...
</message> </message>
CPIM 'From' header CPIM 'From' header
From: <im:juliet@capulet.com> From: Juliet Capulet <im:juliet@capulet.com>
3.2.2 To Address 3.2.2 To Address
The 'to' attribute of an XMPP message stanza maps to the 'To' header The 'to' attribute of an XMPP message stanza maps to the 'To' header
of a "Message/CPIM" object. In XMPP, the sender SHOULD include a 'to' of a "Message/CPIM" object. In XMPP, the sender SHOULD include a 'to'
attribute on a message stanza, and MUST include it if the message is attribute on a message stanza, and MUST include it if the message is
intended for delivery to another user. Thus an XMPP-CPIM gateway will intended for delivery to another user. Thus an XMPP-CPIM gateway will
receive from the sender's XMPP server a message stanza containing a receive from the sender's XMPP server a message stanza containing a
"to" address of the form <node@domain> or <node@domain/resource>. To "to" address of the form <node@domain> or <node@domain/resource>. To
map the 'to' attribute of an XMPP message stanza to the 'To' header map the 'to' attribute of an XMPP message stanza to the 'To' header
skipping to change at page 8, line 27 skipping to change at page 8, line 27
"Formal-name" for the recipient (if known). "Formal-name" for the recipient (if known).
Example: To Address Mapping Example: To Address Mapping
XMPP 'to' attribute XMPP 'to' attribute
<message to='romeo@montague.net/orchard'> <message to='romeo@montague.net/orchard'>
... ...
</message> </message>
CPIM 'To' header CPIM 'To' header
To: <im:romeo@montague.net> To: Romeo Montague <im:romeo@montague.net>
3.2.3 CPIM Courtesy Copy 3.2.3 CPIM Courtesy Copy
The core XMPP specification does not include syntax for specifying a The core XMPP specification does not include syntax for specifying a
"courtesy copy" (non-primary addressee) for a message stanza. "courtesy copy" (non-primary addressee) for a message stanza.
Therefore, an XMPP-CPIM gateway MUST NOT generate the 'cc' header of Therefore, an XMPP-CPIM gateway MUST NOT generate the 'cc' header of
a "Message/CPIM" object. a "Message/CPIM" object.
3.2.4 XMPP Stanza ID 3.2.4 XMPP Stanza ID
skipping to change at page 11, line 29 skipping to change at page 11, line 29
As defined in XMPP Core [6], an XMPP message stanza may contain As defined in XMPP Core [6], an XMPP message stanza may contain
"extended" content in any namespace in order to supplement or extend "extended" content in any namespace in order to supplement or extend
the semantics of the core message stanza. With the exception of the semantics of the core message stanza. With the exception of
extended information qualified by the extended information qualified by the
'urn:ietf:params:xml:ns:xmpp-e2e' namespace as defined in End-to-End 'urn:ietf:params:xml:ns:xmpp-e2e' namespace as defined in End-to-End
Object Encryption in XMPP [8], an XMPP-CPIM gateway SHOULD ignore Object Encryption in XMPP [8], an XMPP-CPIM gateway SHOULD ignore
such information and not pass it through the gateway to the intended such information and not pass it through the gateway to the intended
recipient. No mapping for such information is defined. recipient. No mapping for such information is defined.
3.3 Syntax Mapping from CPIM Specifications to XMPP 3.3 Message Syntax Mapping from CPIM Specifications to XMPP
This section defines the mapping of syntax primitives from "Message/ This section defines the mapping of syntax primitives from "Message/
CPIM" objects with encapsualted text content to XMPP message stanzas. CPIM" objects with encapsualted text content to XMPP message stanzas.
3.3.1 From Address 3.3.1 From Address
The 'From' header of a "Message/CPIM" object maps to the 'from' The 'From' header of a "Message/CPIM" object maps to the 'from'
attribute of an XMPP message stanza. To map the CPIM 'From' header to attribute of an XMPP message stanza. To map the CPIM 'From' header to
the XMPP 'from' attribute, the gateway MUST remove the "im:" Instant the XMPP 'from' attribute, the gateway MUST remove the "im:" Instant
Messaging URI scheme from the front of the address and MUST remove Messaging URI scheme from the front of the address and MUST remove
skipping to change at page 12, line 51 skipping to change at page 12, line 51
The core XMPP specification does not include syntax for specifying The core XMPP specification does not include syntax for specifying
the datetime at which a message stanza was sent. Therefore, if an the datetime at which a message stanza was sent. Therefore, if an
XMPP-CPIM gateway receives a "Message/CPIM" object that contains a XMPP-CPIM gateway receives a "Message/CPIM" object that contains a
'DateTime' header, it SHOULD NOT pass that information on to the XMPP 'DateTime' header, it SHOULD NOT pass that information on to the XMPP
recipient. recipient.
3.3.6 Message Subject 3.3.6 Message Subject
The 'Subject' header of a "Message/CPIM" object maps to the <subject/ The 'Subject' header of a "Message/CPIM" object maps to the <subject/
> child element of a XMPP message stanza. The 'Subject' header MAY > child element of an XMPP message stanza. The 'Subject' header MAY
specify the "lang" in which the subject is written. To map the CPIM specify the "lang" in which the subject is written. To map the CPIM
'Subject' header to the XMPP <subject/> element, the gateway SHOULD 'Subject' header to the XMPP <subject/> element, the gateway SHOULD
simply map the value of the 'Subject' header to the XMPP CDATA. If simply map the value of the 'Subject' header to the XMPP CDATA. If
"lang" information is provided, it MUST be mapped to the 'xml:lang' "lang" information is provided, it MUST be mapped to the 'xml:lang'
attribute of the <subject/> element, where the value of the attribute of the <subject/> element, where the value of the
'xml:lang' attribute is the the "tag" value supplied in the string 'xml:lang' attribute is the the "tag" value supplied in the string
';lang=tag' included CPIM 'Subject' header name and colon. ';lang=tag' included CPIM 'Subject' header name and colon.
Example: Subject Mapping Example: Subject Mapping
skipping to change at page 15, line 19 skipping to change at page 15, line 19
object as the bearer of an encapsulated PIDF [5] object in order to object as the bearer of an encapsulated PIDF [5] object in order to
comply with the presence semantics defined by CPP [3]. comply with the presence semantics defined by CPP [3].
4.1 Identification of Presentities 4.1 Identification of Presentities
There is a one-to-one relationship between an XMPP entity and a CPP There is a one-to-one relationship between an XMPP entity and a CPP
presentity when the JID of the entity contains only a node identifier presentity when the JID of the entity contains only a node identifier
and domain identifier, and the node identifier uniquely corresponds and domain identifier, and the node identifier uniquely corresponds
to an IM user who possesses an account on an XMPP server. to an IM user who possesses an account on an XMPP server.
4.2 Syntax Mapping from XMPP to CPIM Specifications 4.2 Presence Syntax Mapping from XMPP to CPIM Specifications
This section defines the mapping of syntax primitives from XMPP This section defines the mapping of syntax primitives from XMPP
presence stanzas to "Message/CPIM" objects with encapsulated presence stanzas to "Message/CPIM" objects with encapsulated
"application/pidf+xml" objects. "application/pidf+xml" objects.
4.2.1 From Address 4.2.1 From Address
The 'from' attribute of an XMPP presence stanza maps to the 'From' The 'from' attribute of an XMPP presence stanza maps to the 'From'
header of a "Message/CPIM" object. In XMPP, the sender MUST NOT header of a "Message/CPIM" object. In XMPP, the sender MUST NOT
include a 'from' attribute; instead, the sender's server stamps the include a 'from' attribute; instead, the sender's server stamps the
skipping to change at page 15, line 48 skipping to change at page 15, line 48
"Formal-name" for the sender (if known). "Formal-name" for the sender (if known).
Example: From Address Mapping Example: From Address Mapping
XMPP 'from' attribute XMPP 'from' attribute
<presence from='juliet@capulet.com/balcony'> <presence from='juliet@capulet.com/balcony'>
... ...
</presence> </presence>
CPIM 'From' header CPIM 'From' header
From: <im:juliet@capulet.com> From: Juliet Capulet <im:juliet@capulet.com>
In addition, the 'from' attribute of an XMPP presence stanza maps to In addition, the 'from' attribute of an XMPP presence stanza maps to
the 'entity' attribute of a PIDF <presence/> root element. To map the the 'entity' attribute of a PIDF <presence/> root element. To map the
XMPP 'from' attribute to the PIDF 'entity' attribute, the gateway XMPP 'from' attribute to the PIDF 'entity' attribute, the gateway
MUST remove the resource identifier and MUST append the "pres:" MUST remove the resource identifier and MUST append the "pres:"
Instant Messaging URI scheme to the front of the address. Instant Messaging URI scheme to the front of the address.
Example: From Address Mapping (PIDF) Example: From Address Mapping (PIDF)
XMPP 'from' attribute XMPP 'from' attribute
skipping to change at page 17, line 13 skipping to change at page 17, line 13
CPIM "Formal-name" for the recipient (if known). CPIM "Formal-name" for the recipient (if known).
Example: To Address Mapping Example: To Address Mapping
XMPP 'to' attribute XMPP 'to' attribute
<presence to='romeo@montague.net/orchard'> <presence to='romeo@montague.net/orchard'>
... ...
</presence> </presence>
CPIM 'To' header CPIM 'To' header
To: <im:romeo@montague.net> To: Romeo Montague <im:romeo@montague.net>
4.2.3 CPIM Courtesy Copy 4.2.3 CPIM Courtesy Copy
The core XMPP specification does not include syntax for specifying a The core XMPP specification does not include syntax for specifying a
"courtesy copy" (non-primary addressee) for a presence stanza. "courtesy copy" (non-primary addressee) for a presence stanza.
Therefore, an XMPP-CPIM gateway MUST NOT generate the 'cc' header of Therefore, an XMPP-CPIM gateway MUST NOT generate the 'cc' header of
a "Message/CPIM" object. a "Message/CPIM" object.
4.2.4 XMPP Stanza ID 4.2.4 XMPP Stanza ID
An XMPP presence stanza MAY possess an 'id' attribute, which is used An XMPP presence stanza MAY possess an 'id' attribute, which is used
by the sending application for the purpose of tracking stanzas. There by the sending application for the purpose of tracking stanzas. There
is no mapping of an XMPP 'id' attribute to a "Message/CPIM" header, is no mapping of an XMPP 'id' attribute to a "Message/CPIM" header,
common MIME features, or encapsulated text content. Therefore if an common MIME features, or PIDF elements and attributes. Therefore if
XMPP stanza received by an XMPP-CPIM gateway possesses an 'id' an XMPP stanza received by an XMPP-CPIM gateway possesses an 'id'
attribute, the gateway SHOULD ignore the value provided. attribute, the gateway SHOULD ignore the value provided.
4.2.5 CPIM DateTime Header 4.2.5 CPIM DateTime Header
The core XMPP specification does not include syntax for specifying The core XMPP specification does not include syntax for specifying
the datetime at which a presence stanza was sent. However, an the datetime at which a presence stanza was sent. However, an
XMPP-CPIM gateway MAY include a 'DateTime' header in the "Message/ XMPP-CPIM gateway MAY include a 'DateTime' header in the "Message/
CPIM" object it generates, the value of which SHOULD be the datetime CPIM" object it generates, the value of which SHOULD be the datetime
at which the presence stanza was received for processing by the at which the presence stanza was received for processing by the
gateway. gateway.
skipping to change at page 19, line 25 skipping to change at page 19, line 25
<tuple id='balcony'> <tuple id='balcony'>
<status> <status>
<basic>open</basic> <basic>open</basic>
</status> </status>
</tuple> </tuple>
</presence> </presence>
Example: Unavailable Presence Example: Unavailable Presence
XMPP unavailable presence XMPP unavailable presence
<presence from='juliet@capulet.com/balcony'/> <presence from='juliet@capulet.com/balcony' type='unavailable'/>
PIDF basic presence (CLOSED) PIDF basic presence (CLOSED)
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<presence xmlns='urn:ietf:params:xml:ns:pidf' <presence xmlns='urn:ietf:params:xml:ns:pidf'
entity='pres:romeo@montague.net'> entity='pres:romeo@montague.net'>
<tuple id='balcony'> <tuple id='balcony'>
<status> <status>
<basic>closed</basic> <basic>closed</basic>
</status> </status>
</tuple> </tuple>
skipping to change at page 22, line 13 skipping to change at page 22, line 13
</presence> </presence>
4.2.15 Presence Priority 4.2.15 Presence Priority
An XMPP presence stanza MAY contain a <priority/> child element whose An XMPP presence stanza MAY contain a <priority/> child element whose
value is an integer between -128 and +127. The value of this element value is an integer between -128 and +127. The value of this element
MAY be mapped to the 'priority' attribute of the <contact/> child of MAY be mapped to the 'priority' attribute of the <contact/> child of
the PIDF <tuple/> element. If the value of the XMPP <priority/> the PIDF <tuple/> element. If the value of the XMPP <priority/>
element is negative, an XMPP-CPIM gateway MUST NOT map the value. The element is negative, an XMPP-CPIM gateway MUST NOT map the value. The
range of allowable values for the PIDF 'priority' attribute is any range of allowable values for the PIDF 'priority' attribute is any
decimal number from zero to one inclusive, with a maximimum of three decimal number from zero to one inclusive, with a maximum of three
decimal places. If an XMPP-CPIM gateway maps these values, it SHOULD decimal places. If an XMPP-CPIM gateway maps these values, it SHOULD
treat XMPP <priority>0</priority> as PIDF priority='0' and treat XMPP <priority>0</priority> as PIDF priority='0' and XMPP
<priority>127</priority> as PIDF priority='1', mapping intermediate <priority>127</priority> as PIDF priority='1', mapping intermediate
values appropriately so that they are unique (e.g., XMPP priority 1 values appropriately so that they are unique (e.g., XMPP priority 1
to PIDF priority 0.007, XMPP priority 2 to PIDF priority 0.015, and to PIDF priority 0.007, XMPP priority 2 to PIDF priority 0.015, and
so on up through mapping XMPP priority 126 to PIDF priority 0.992; so on up through mapping XMPP priority 126 to PIDF priority 0.992;
note that this is an example only, and that the exact mapping shall note that this is an example only, and that the exact mapping shall
be determined by the XMPP-CPIM gateway). be determined by the XMPP-CPIM gateway).
Example: Presence Priority Example: Presence Priority
XMPP <status/> element XMPP <status/> element
skipping to change at page 23, line 11 skipping to change at page 23, line 11
As defined in XMPP Core [6], an XMPP presence stanza may contain As defined in XMPP Core [6], an XMPP presence stanza may contain
"extended" content in any namespace in order to supplement or extend "extended" content in any namespace in order to supplement or extend
the semantics of the core presence stanza. With the exception of the semantics of the core presence stanza. With the exception of
extended information qualified by the extended information qualified by the
'urn:ietf:params:xml:ns:xmpp-e2e' namespace as defined in End-to-End 'urn:ietf:params:xml:ns:xmpp-e2e' namespace as defined in End-to-End
Object Encryption in XMPP [8], an XMPP-CPIM gateway SHOULD ignore Object Encryption in XMPP [8], an XMPP-CPIM gateway SHOULD ignore
such information and not pass it through the gateway to the intended such information and not pass it through the gateway to the intended
recipient. No mapping for such information is defined. recipient. No mapping for such information is defined.
4.3 Syntax Mapping from CPIM Specifications to XMPP 4.3 Presence Syntax Mapping from CPIM Specifications to XMPP
This section defines the mapping of syntax primitives from "Message/ This section defines the mapping of syntax primitives from "Message/
CPIM" objects with encapsulated "application/pidf+xml" objects to CPIM" objects with encapsulated "application/pidf+xml" objects to
XMPP presence stanzas. XMPP presence stanzas.
4.3.1 From Address 4.3.1 From Address
The 'From' header of a "Message/CPIM" object maps to the 'from' The 'From' header of a "Message/CPIM" object maps to the 'from'
attribute of an XMPP presence stanza. To map the CPIM 'From' header attribute of an XMPP presence stanza. To map the CPIM 'From' header
to the XMPP 'from' attribute, the gateway MUST remove the "im:" to the XMPP 'from' attribute, the gateway MUST remove the "im:"
skipping to change at page 37, line 26 skipping to change at page 37, line 26
[4] Atkins, D. and G. Klyne, "Common Presence and Instant Messaging [4] Atkins, D. and G. Klyne, "Common Presence and Instant Messaging
Message Format", draft-ietf-impp-cpim-msgfmt-08 (work in Message Format", draft-ietf-impp-cpim-msgfmt-08 (work in
progress), January 2003. progress), January 2003.
[5] Fujimoto, S., Sugano, H., Klyne, G., Bateman, A., Carr, W. and [5] Fujimoto, S., Sugano, H., Klyne, G., Bateman, A., Carr, W. and
J. Peterson, "CPIM Presence Information Data Format", J. Peterson, "CPIM Presence Information Data Format",
draft-ietf-impp-cpim-pidf-08 (work in progress), May 2003. draft-ietf-impp-cpim-pidf-08 (work in progress), May 2003.
[6] Saint-Andre, P. and J. Miller, "XMPP Core", [6] Saint-Andre, P. and J. Miller, "XMPP Core",
draft-ietf-xmpp-core-13 (work in progress), June 2003. draft-ietf-xmpp-core-15 (work in progress), June 2003.
[7] Saint-Andre, P. and J. Miller, "XMPP Instant Messaging", [7] Saint-Andre, P. and J. Miller, "XMPP Instant Messaging",
draft-ietf-xmpp-im-12 (work in progress), June 2003. draft-ietf-xmpp-im-14 (work in progress), June 2003.
[8] Saint-Andre, P., "End-to-End Object Encryption in XMPP", [8] Saint-Andre, P., "End-to-End Object Encryption in XMPP",
draft-ietf-xmpp-e2e-03 (work in progress), May 2003. draft-ietf-xmpp-e2e-04 (work in progress), June 2003.
[9] Day, M., Rosenberg, J. and H. Sugano, "A Model for Presence and [9] Day, M., Rosenberg, J. and H. Sugano, "A Model for Presence and
Instant Messaging", RFC 2778, February 2000, <http:// Instant Messaging", RFC 2778, February 2000, <http://
www.ietf.org/rfc/rfc2778.txt>. www.ietf.org/rfc/rfc2778.txt>.
[10] Bradner, S., "Key words for use in RFCs to Indicate Requirement [10] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997. Levels", BCP 14, RFC 2119, March 1997.
[11] Freed, N. and N. Borenstein, "Multipurpose Internet Mail [11] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message Bodies", Extensions (MIME) Part One: Format of Internet Message Bodies",
skipping to change at page 39, line 5 skipping to change at page 39, line 5
Peter Saint-Andre Peter Saint-Andre
Jabber Software Foundation Jabber Software Foundation
EMail: stpeter@jabber.org EMail: stpeter@jabber.org
Tony Bamonti Tony Bamonti
Jabber, Inc. Jabber, Inc.
EMail: tbamonti@jabber.com EMail: tbamonti@jabber.com
Appendix A. Revision History
Note to RFC Editor: please remove this entire appendix, and the
corresponding entries in the table of contents, prior to publication.
A.1 Changes from draft-ietf-xmpp-cpim-00
o Updated references.
o Made several small editorial changes.
Intellectual Property Statement Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any The IETF takes no position regarding the validity or scope of any
intellectual property or other rights that might be claimed to intellectual property or other rights that might be claimed to
pertain to the implementation or use of the technology described in pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights this document or the extent to which any license under such rights
might or might not be available; neither does it represent that it might or might not be available; neither does it represent that it
has made any effort to identify any such rights. Information on the has made any effort to identify any such rights. Information on the
IETF's procedures with respect to rights in standards-track and IETF's procedures with respect to rights in standards-track and
standards-related documentation can be found in BCP-11. Copies of standards-related documentation can be found in BCP-11. Copies of
 End of changes. 29 change blocks. 
34 lines changed or deleted 46 lines changed or added

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