1
0
mirror of https://github.com/moparisthebest/xeps synced 2024-10-31 15:35:07 -04:00
This commit is contained in:
Peter Saint-Andre 2013-11-14 11:41:39 -07:00
parent c15a0cb35c
commit 1a7984742a

View File

@ -18,6 +18,7 @@
<spec>XMPP Core</spec> <spec>XMPP Core</spec>
<spec>XEP-0166</spec> <spec>XEP-0166</spec>
<spec>XEP-0167</spec> <spec>XEP-0167</spec>
<spec>RFC 4145</spec>
<spec>RFC 4572</spec> <spec>RFC 4572</spec>
<spec>RFC 5763</spec> <spec>RFC 5763</spec>
</dependencies> </dependencies>
@ -31,6 +32,18 @@
--> -->
<discuss>jingle</discuss> <discuss>jingle</discuss>
&fippo; &fippo;
<revision>
<version>0.2</version>
<date>2013-10-22</date>
<initials>ph</initials>
<remark>
<ul>
<li>Changed namespace to urn:xmpp:jingle:apps:dtls:0.</li>
<li>Removed &quot;required&quot; attribute based on implementation feedback.</li>
<li>Added setup attribute to map SDP setup attribute.</li>
</ul>
</remark>
</revision>
<revision> <revision>
<version>0.1</version> <version>0.1</version>
<date>2013-04-16</date> <date>2013-04-16</date>
@ -62,18 +75,23 @@ a=fingerprint:hash-func fingerprint
<code> <code>
a=fingerprint:sha-256 02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:CD:54:F1:7A:03:A2:7D:F9:B0:7F:46:19:B2 a=fingerprint:sha-256 02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:CD:54:F1:7A:03:A2:7D:F9:B0:7F:46:19:B2
</code> </code>
<p>This SDP attribute can be translated into Jingle as a &lt;fingerprint/&gt; element qualified by the 'urn:xmpp:tmp:jingle:apps:dtls:0' namespace, as shown below.</p> <p>Additionally, the SDP setup attribute defined in &rfc4145; must be mapped, whose usage for DTLS-SRTP is defined in <cite>RFC 5763</cite>.</p>
<code>
a=setup:role
</code>
<p>These SDP attributes can be translated into Jingle as a &lt;fingerprint/&gt; element qualified by the 'urn:xmpp:jingle:apps:dtls:0' namespace, as shown below.</p>
<code><![CDATA[ <code><![CDATA[
<fingerprint xmlns='urn:xmpp:tmp:jingle:apps:dtls:0' hash='hash-func'>fingerprint</fingerprint> <fingerprint xmlns='urn:xmpp:jingle:apps:dtls:0' hash='hash-func' setup='role'>
fingerprint
</fingerprint>
]]></code> ]]></code>
<p>An example follows.</p> <p>An example follows.</p>
<code><![CDATA[ <code><![CDATA[
<fingerprint mlns='urn:xmpp:tmp:jingle:apps:dtls:0' hash='sha-256'> <fingerprint mlns='urn:xmpp:jingle:apps:dtls:0' hash='sha-256' setup='actpass'>
02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:CD:54:F1:7A:03:A2:7D:F9:B0:7F:46:19:B2 02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:CD:54:F1:7A:03:A2:7D:F9:B0:7F:46:19:B2
</fingerprint> </fingerprint>
]]></code> ]]></code>
<p>Note: since DTLS can be used to protect non-RTP sessions like SCTP including the fingerprint in the &lt;encryption/&gt; element defined in &xep0167; was deemed inappropriate. Also, the &lt;encryption/&gt; element defined there only applies to the encryption of the RTP data part, whereas DTLS (and DTLS-SRTP) protects the whole message.</p> <p>If the Jingle initiator wishes to use DTLS-SRTP, it includes the &lt;fingerprint/&gt; element in its session invitation.</p>
<p>If the Jingle initiator wishes to use DTLS-SRTP, it includes the &lt;fingerprint/&gt; element in its session invitation. If the initiator requires the use of DTLS, the &lt;fingerprint/&gt; 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>
<example caption="Initiator sends session invitation with DTLS fingerprint"><![CDATA[ <example caption="Initiator sends session invitation with DTLS fingerprint"><![CDATA[
<iq from='romeo@montague.lit/orchard' <iq from='romeo@montague.lit/orchard'
id='uz61v4m4' id='uz61v4m4'
@ -94,9 +112,9 @@ a=fingerprint:sha-256 02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:C
<transport xmlns='urn:xmpp:jingle:transports:ice-udp:1' <transport xmlns='urn:xmpp:jingle:transports:ice-udp:1'
pwd='asd88fgpdd777uzjYhagZg' pwd='asd88fgpdd777uzjYhagZg'
ufrag='8hhy'> ufrag='8hhy'>
<fingerprint xmlns='urn:xmpp:tmp:jingle:apps:dtls:0' hash='sha-256' required='true'> <fingerprint xmlns='urn:xmpp:jingle:apps:dtls:0' hash='sha-256' setup='actpass'>
02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:CD:54:F1:7A:03:A2:7D:F9:B0:7F:46:19:B2 02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:CD:54:F1:7A:03:A2:7D:F9:B0:7F:46:19:B2
</fingerprint> </fingerprint>
<candidate component='1' <candidate component='1'
foundation='1' foundation='1'
generation='0' generation='0'
@ -143,9 +161,9 @@ a=fingerprint:sha-256 02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:C
<transport xmlns='urn:xmpp:jingle:transports:ice-udp:1' <transport xmlns='urn:xmpp:jingle:transports:ice-udp:1'
pwd='YH75Fviy6338Vbrhrlp8Yh' pwd='YH75Fviy6338Vbrhrlp8Yh'
ufrag='9uB6'> ufrag='9uB6'>
<fingerprint xmlns='urn:xmpp:tmp:jingle:apps:dtls:0' hash='sha-256' required='1'> <fingerprint xmlns='urn:xmpp:jingle:apps:dtls:0' hash='sha-256' setup='active'>
BD:E8:2C:D3:BD:B6:98:50:45:7D:5B:36:89:53:31:15:52:25:88:82:06:95:88:A3:3D:A5:43:8D:5C:21:21:66 BD:E8:2C:D3:BD:B6:98:50:45:7D:5B:36:89:53:31:15:52:25:88:82:06:95:88:A3:3D:A5:43:8D:5C:21:21:66
</fingerprint> </fingerprint>
<candidate component='1' <candidate component='1'
foundation='1' foundation='1'
generation='0' generation='0'
@ -176,9 +194,9 @@ a=fingerprint:sha-256 02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:C
<transport xmlns='urn:xmpp:jingle:transports:ice-udp:1' <transport xmlns='urn:xmpp:jingle:transports:ice-udp:1'
pwd='YH75Fviy6338Vbrhrlp8Yh' pwd='YH75Fviy6338Vbrhrlp8Yh'
ufrag='9uB6'> ufrag='9uB6'>
<fingerprint xmlns='urn:xmpp:tmp:jingle:apps:dtls:0' hash='sha-256' required='1'> <fingerprint xmlns='urn:xmpp:jingle:apps:dtls:0' hash='sha-256' setup='active'>
BD:E8:2C:D3:BD:B6:98:50:45:7D:5B:36:89:53:31:15:52:25:88:82:06:95:88:A3:3D:A5:43:8D:5C:21:21:66 BD:E8:2C:D3:BD:B6:98:50:45:7D:5B:36:89:53:31:15:52:25:88:82:06:95:88:A3:3D:A5:43:8D:5C:21:21:66
</fingerprint> </fingerprint>
<candidate component='1' <candidate component='1'
foundation='1' foundation='1'
generation='0' generation='0'
@ -230,7 +248,7 @@ a=fingerprint:sha-256 02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:C
</section1> </section1>
<section1 topic='Acknowledgements' anchor='acks'> <section1 topic='Acknowledgements' anchor='acks'>
<p>Thanks to Justin Uberti.</p> <p>Thanks to Justin Uberti and Lance Stout.</p>
</section1> </section1>
<section1 topic='XMPP Registrar Considerations' anchor='registrar'> <section1 topic='XMPP Registrar Considerations' anchor='registrar'>
@ -252,8 +270,8 @@ a=fingerprint:sha-256 02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:C
<xs:schema <xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='urn:xmpp:tmp:jingle:apps:dtls:0' targetNamespace='urn:xmpp:jingle:apps:dtls:0'
xmlns='urn:xmpp:tmp:jingle:apps:dtls:0' xmlns='urn:xmpp:jingle:apps:dtls:0'
elementFormDefault='qualified'> elementFormDefault='qualified'>
<xs:annotation> <xs:annotation>
@ -268,12 +286,20 @@ a=fingerprint:sha-256 02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65:2E:7D:46:3F:54:42:C
<xs:simpleContent> <xs:simpleContent>
<xs:extension base='xs:string'> <xs:extension base='xs:string'>
<xs:attribute name='hash' type='xs:string' use='required'/> <xs:attribute name='hash' type='xs:string' use='required'/>
<xs:attribute name='required' type='xs:boolean' default='false'/> <xs:attribute name='setup' use='required'/>
<xs:simpleType>
<xs:restriction base='xs:NCName'>
<xs:enumeration value='active'/>
<xs:enumeration value='passive'/>
<xs:enumeration value='actpass'/>
<xs:enumeration value='holdconn'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension> </xs:extension>
</xs:simpleContent> </xs:simpleContent>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:schema> </xs:schema>
]]></code> ]]></code>
</section1> </section1>