mirror of
https://github.com/moparisthebest/xeps
synced 2024-11-22 01:02:17 -05:00
0.26
git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@2737 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
parent
b1b44be12b
commit
bd4d90c867
57
xep-0167.xml
57
xep-0167.xml
@ -28,6 +28,12 @@
|
|||||||
&seanegan;
|
&seanegan;
|
||||||
&robmcqueen;
|
&robmcqueen;
|
||||||
&diana;
|
&diana;
|
||||||
|
<revision>
|
||||||
|
<version>0.26</version>
|
||||||
|
<date>2009-02-16</date>
|
||||||
|
<initials>psa</initials>
|
||||||
|
<remark><p>Clarified service discovery features; added support for zrtp-hash in the signalling channel.</p></remark>
|
||||||
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<version>0.25</version>
|
<version>0.25</version>
|
||||||
<date>2008-12-19</date>
|
<date>2008-12-19</date>
|
||||||
@ -504,7 +510,7 @@ delivery-method=inline; configuration=somebase16string;
|
|||||||
|
|
||||||
<section1 topic='Negotiation of SRTP' anchor='srtp'>
|
<section1 topic='Negotiation of SRTP' anchor='srtp'>
|
||||||
<p>&rfc3711; defines the Secure Real-time Transport Protocol, and &rfc4568; defines the SDP "crypto" attribute for signalling and negotiating the use of SRTP in the context of offer-answer protocols such as SIP. To enable the use of SRTP and gatewaying to non-XMPP technologies that make use of the "crypto" SDP attribute, we define a corresponding <crypto/> element qualified by the 'urn:xmpp:jingle:apps:rtp:1' namespace.</p>
|
<p>&rfc3711; defines the Secure Real-time Transport Protocol, and &rfc4568; defines the SDP "crypto" attribute for signalling and negotiating the use of SRTP in the context of offer-answer protocols such as SIP. To enable the use of SRTP and gatewaying to non-XMPP technologies that make use of the "crypto" SDP attribute, we define a corresponding <crypto/> element qualified by the 'urn:xmpp:jingle:apps:rtp:1' namespace.</p>
|
||||||
<p>If the initiator wishes to use SRTP, the session-initiate stanza MUST include an <encryption/> element, which MUST contain at least one <crypto/> element and MAY include multiple instances of the <crypto/> element. The <encryption/> element MUST be a child of the <description/> element. If the initiator requires the session to be encrypted, the <encryption/> element MUST include a 'required' attribute whose logical value is TRUE and whose lexical value is "true" or "1" &BOOLEANNOTE;, where this attribute defaults to a logical value of FALSE (i.e., a lexical value of "false" or "0").</p>
|
<p>If the initiator wishes to use SRTP, the session-initiate stanza shall include an <encryption/> element, which MUST contain at least one <crypto/> element and MAY include multiple instances of the <crypto/> element. The <encryption/> element MUST be a child of the <description/> element. If the initiator requires the session to be encrypted, the <encryption/> element MUST include a 'required' attribute whose logical value is TRUE and whose lexical value is "true" or "1" &BOOLEANNOTE;, where this attribute defaults to a logical value of FALSE (i.e., a lexical value of "false" or "0").</p>
|
||||||
<p>The <crypto/> element is defined as empty (i.e., not containing any child elements); the XML attributes of the <crypto/> element are as follows:</p>
|
<p>The <crypto/> element is defined as empty (i.e., not containing any child elements); the XML attributes of the <crypto/> element are as follows:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>crypto-suite -- this maps to the SDP "crypto-suite" parameter and has the same semantics (i.e., it is an identifier that describes the encryption and authentication algorithms).</li>
|
<li>crypto-suite -- this maps to the SDP "crypto-suite" parameter and has the same semantics (i.e., it is an identifier that describes the encryption and authentication algorithms).</li>
|
||||||
@ -581,6 +587,27 @@ delivery-method=inline; configuration=somebase16string;
|
|||||||
]]></example>
|
]]></example>
|
||||||
</section1>
|
</section1>
|
||||||
|
|
||||||
|
<section1 topic='Negotiation of ZRTP' anchor='zrtp'>
|
||||||
|
<p>An alternative approach to end-to-end encryption of RTP traffic is provided by &zrtp;. Although negotiation of ZRTP mainly occurs in the media channel rather than the signalling channel, the ZRTP specification defines one SDP attribute called "zrtp-hash" (this communicates the ZRTP version supported as well as a hash of the Hello message).</p>
|
||||||
|
<p>The SDP format is shown below.</p>
|
||||||
|
<code>
|
||||||
|
a=zrtp-hash:zrtp-version zrtp-hash-value
|
||||||
|
</code>
|
||||||
|
<p>An example follows.</p>
|
||||||
|
<code>
|
||||||
|
a=zrtp-hash:1.10 fe30efd02423cb054e50efd0248742ac7a52c8f91bc2df881ae642c371ba46df
|
||||||
|
</code>
|
||||||
|
<p>This SDP attribute has been translated into Jingle as a <zrtp-hash/> element, as shown below.</p>
|
||||||
|
<code><![CDATA[
|
||||||
|
<zrtp-hash version='zrtp-version'>zrtp-hash-value</zrtp-hash>
|
||||||
|
]]></code>
|
||||||
|
<p>An example follows.</p>
|
||||||
|
<code><![CDATA[
|
||||||
|
<zrtp-hash version='1.10'>fe30efd02423cb054e50efd0248742ac7a52c8f91bc2df881ae642c371ba46df</zrtp-hash>
|
||||||
|
]]></code>
|
||||||
|
<p>Therefore, if the initiator wishes to use ZRTP, the session-initiate stanza shall include an <encryption/> element, which MUST contain one and only one <zrtp-hash/> element. Note: The <encryption/> element MUST include only 1+ <crypto/> elements (for SRTP) or 1 <zrtp-hash/> element (for ZRTP), but not both.</p>
|
||||||
|
</section1>
|
||||||
|
|
||||||
<section1 topic='Informational Messages' anchor='info'>
|
<section1 topic='Informational Messages' anchor='info'>
|
||||||
<section2 topic='Format' anchor='info-format'>
|
<section2 topic='Format' anchor='info-format'>
|
||||||
<p>Informational messages can be sent by either party within the context of Jingle to communicate the status of a Jingle RTP session, device, or principal. The informational message MUST be an IQ-set containing a &JINGLE; element of type "session-info", where the informational message is a payload element qualified by the 'urn:xmpp:jingle:apps:rtp:info:1' namespace; the following payload elements are defined: <note>A <trying/> element (equivalent to the SIP 100 Trying response code) is not necessary, since each session-level action is acknowledged via XMPP IQ semantics.</note></p>
|
<p>Informational messages can be sent by either party within the context of Jingle to communicate the status of a Jingle RTP session, device, or principal. The informational message MUST be an IQ-set containing a &JINGLE; element of type "session-info", where the informational message is a payload element qualified by the 'urn:xmpp:jingle:apps:rtp:info:1' namespace; the following payload elements are defined: <note>A <trying/> element (equivalent to the SIP 100 Trying response code) is not necessary, since each session-level action is acknowledged via XMPP IQ semantics.</note></p>
|
||||||
@ -692,7 +719,12 @@ delivery-method=inline; configuration=somebase16string;
|
|||||||
</section1>
|
</section1>
|
||||||
|
|
||||||
<section1 topic='Determining Support' anchor='support'>
|
<section1 topic='Determining Support' anchor='support'>
|
||||||
<p>If an entity supports Jingle RTP session, it MUST advertise that fact by returning a feature of "urn:xmpp:jingle:apps:rtp:1" &VNOTE; in response to &xep0030; information requests.</p>
|
<p>To advertise its support for Jingle RTP Sessions and specific media types for RTP, when replying to &xep0030; information requests an entity MUST return the following features:</p>
|
||||||
|
<ul>
|
||||||
|
<li>URNs for any version of this protocol that the entity supports -- e.g., "urn:xmpp:jingle:apps:rtp:1" for this version and "urn:xmpp:jingle:apps:rtp:0" for the previous version &VNOTE;</li>
|
||||||
|
<li>URNs for all of the media types that the entity supports -- e.g., "urn:xmpp:jingle:apps:rtp:audio" for RTP audio and "urn:xmpp:jingle:apps:rtp:video" for RTP video</li>
|
||||||
|
</ul>
|
||||||
|
<p>An example follows.</p>
|
||||||
<example caption="Service discovery information request"><![CDATA[
|
<example caption="Service discovery information request"><![CDATA[
|
||||||
<iq from='romeo@montague.lit/orchard'
|
<iq from='romeo@montague.lit/orchard'
|
||||||
id='disco1'
|
id='disco1'
|
||||||
@ -708,7 +740,10 @@ delivery-method=inline; configuration=somebase16string;
|
|||||||
type='result'>
|
type='result'>
|
||||||
<query xmlns='http://jabber.org/protocol/disco#info'>
|
<query xmlns='http://jabber.org/protocol/disco#info'>
|
||||||
<feature var='urn:xmpp:jingle:0'/>
|
<feature var='urn:xmpp:jingle:0'/>
|
||||||
|
<feature var='urn:xmpp:jingle:apps:rtp:0'/>
|
||||||
<feature var='urn:xmpp:jingle:apps:rtp:1'/>
|
<feature var='urn:xmpp:jingle:apps:rtp:1'/>
|
||||||
|
<feature var='urn:xmpp:jingle:apps:rtp:audio'/>
|
||||||
|
<feature var='urn:xmpp:jingle:apps:rtp:video'/>
|
||||||
</query>
|
</query>
|
||||||
</iq>
|
</iq>
|
||||||
]]></example>
|
]]></example>
|
||||||
@ -1827,12 +1862,16 @@ Romeo Juliet
|
|||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:complexType name='encryptionElementType'>
|
<xs:complexType name='encryptionElementType'>
|
||||||
<xs:sequence>
|
<xs:choice>
|
||||||
<xs:element name='crypto'
|
<xs:element name='crypto'
|
||||||
type='cryptoElementType'
|
type='cryptoElementType'
|
||||||
minOccurs='0'
|
minOccurs='0'
|
||||||
maxOccurs='unbounded'/>
|
maxOccurs='unbounded'/>
|
||||||
</xs:sequence>
|
<xs:element name='zrtp-hash'
|
||||||
|
type='zrtpElementType'
|
||||||
|
minOccurs='0'
|
||||||
|
maxOccurs='1'/>
|
||||||
|
</xs:choice>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:complexType name='payloadElementType'>
|
<xs:complexType name='payloadElementType'>
|
||||||
@ -1859,6 +1898,14 @@ Romeo Juliet
|
|||||||
</xs:simpleContent>
|
</xs:simpleContent>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name='zrtpElementType'>
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base='xs:string'>
|
||||||
|
<xs:attribute name='version' type='xs:string' use='required'/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:simpleType name='empty'>
|
<xs:simpleType name='empty'>
|
||||||
<xs:restriction base='xs:string'>
|
<xs:restriction base='xs:string'>
|
||||||
<xs:enumeration value=''/>
|
<xs:enumeration value=''/>
|
||||||
@ -1936,6 +1983,6 @@ Romeo Juliet
|
|||||||
</section2>
|
</section2>
|
||||||
</section1>
|
</section1>
|
||||||
<section1 topic='Acknowledgements' anchor='ack'>
|
<section1 topic='Acknowledgements' anchor='ack'>
|
||||||
<p>Thanks to Milton Chen, Paul Chitescu, Olivier Crête, Tim Julien, Steffen Larsen, Jeff Muller, Mike Ruprecht, Justin Uberti, and Paul Witty for their feedback.</p>
|
<p>Thanks to Milton Chen, Paul Chitescu, Olivier Crête, Tim Julien, Steffen Larsen, Jeff Muller, Mike Ruprecht, Sjoerd Simons, Justin Uberti, and Paul Witty for their feedback.</p>
|
||||||
</section1>
|
</section1>
|
||||||
</xep>
|
</xep>
|
||||||
|
Loading…
Reference in New Issue
Block a user