URN namespace

git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@209 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
Ian Paterson 2006-11-23 20:25:33 +00:00
parent 4388de65c9
commit 7c53a9d655
3 changed files with 53 additions and 47 deletions

View File

@ -78,13 +78,13 @@
</section1>
<section1 topic='Media Element' anchor='media'>
<p>This protocol requires multimedia to be included within &xep0004;. This section defines a new namespace ('http://jabber.org/protocols/media') for that purpose. The root element for the namespace is &lt;media/&gt;. It MUST be contained within a &lt;field/&gt; element qualified by the 'jabber:x:data' namespace.</p>
<p>This protocol requires multimedia to be included within &xep0004;. This section defines a new namespace ('urn:xmpp:media') for that purpose. The root element for the namespace is &lt;media/&gt;. It MUST be contained within a &lt;field/&gt; element qualified by the 'jabber:x:data' namespace.</p>
<p>If the media is an image or video then the &lt;media/&gt; element SHOULD include 'width' and 'height' attributes specifying the recommended display size of the media in pixels.</p>
<p>The &lt;media/&gt; element SHOULD contain at least one &lt;uri/&gt; element to specify the out-of-band location of the media data. <note>Constrained execution environments prevent some clients rendering media unless it has been received out-of-band (e.g., Web clients).</note> The &lt;uri/&gt; element MUST contain a URI that indicates the location.</p>
<p>The &lt;media/&gt; element MAY also contain one or more &lt;data/&gt; elements for distributing the media in-band. The &lt;data/&gt; element MUST contain the Base64 encoded (in accordance with Section 3 of &rfc3548;) media data. The <em>encoded</em> data SHOULD NOT be larger than 8 KB. Note that if a stanza contains more than one &lt;data/&gt; element then the sending entity MUST take care not to trigger karma limits.</p>
<p>Each &lt;uri/&gt; or &lt;data/&gt; element MUST include a 'type' atribute that specifies the MIME type (see &rfc2045;) of the media.</p>
<example caption='Audio Media Element'><![CDATA[
<media xmlns='xmlns='http://jabber.org/protocol/media'>
<media xmlns='xmlns='urn:xmpp:media'>
<uri type='audio/x-wav'>http://www.victim.com/challenges/speech.wav?F3A6292C</uri>
<uri type='audio/ogg-speex'>http://www.victim.com/challenges/speech.ogg?F3A6292C</uri>
<uri type='audio/mpeg'>http://www.victim.com/challenges/speech.mp3?F3A6292C</uri>
@ -108,7 +108,7 @@
</message>
]]></example>
<section3 topic='Challenge Stanza' anchor='protocol-challenge'>
<p>Each of the challenge form's &lt;field/&gt; elements (see <cite>Data Forms</cite>) that are not hidden MAY contain a different challenge and any media required for the challenge. The hidden 'from' field MUST contain the value of the 'to' attribute of the client's stanza that triggered the challenge. If the stanza from the client included an 'id' attribute then the hidden 'sid' field MUST be set to that value. The 'xml:lang' attribute of the challenge stanza SHOULD be the same as the one received from the client. The hidden 'FORM_TYPE' field MUST have a value of "http://jabber.org/protocol/challenge" in accordance with &xep0068;.</p>
<p>Each of the challenge form's &lt;field/&gt; elements (see <cite>Data Forms</cite>) that are not hidden MAY contain a different challenge and any media required for the challenge. The hidden 'from' field MUST contain the value of the 'to' attribute of the client's stanza that triggered the challenge. If the stanza from the client included an 'id' attribute then the hidden 'sid' field MUST be set to that value. The 'xml:lang' attribute of the challenge stanza SHOULD be the same as the one received from the client. The hidden 'FORM_TYPE' field MUST have a value of "urn:xmpp:challenge" in accordance with &xep0068;.</p>
<p>The challenger SHOULD include an explanation (in the &BODY; element) for clients that do not support this protocol. The challenger MAY also include a URL (typically a Web page with instructions) using &xep0066; as an alternative for clients that do not support the challenge form. Note: even if it provides a URL, a challenger MUST always provide a challenge form. <note>A constrained client, like a mobile phone, cannot present a Web page to its user.</note></p>
<example caption='Server Offers a Choice of Challenges to a Client'><![CDATA[
<message from='victim.com'
@ -120,15 +120,15 @@
<x xmlns='jabber:x:oob'>
<url>http://www.victim.com/challenge.html?F3A6292C</url>
</x>
<challenge xmlns='http://jabber.org/protocol/challenge'>
<challenge xmlns='urn:xmpp:challenge'>
<x xmlns='jabber:x:data' type='form'>
<field type='hidden' var='FORM_TYPE'>
<value>http://jabber.org/protocol/challenge</value>
<value>urn:xmpp:challenge</value>
</field>
<field type='hidden' var='from'><value>innocent@victim.com</value></field>
<field type='hidden' var='sid'><value>spam1</value></field>
<field var='ocr'>
<media xmlns='xmlns='http://jabber.org/protocol/media'
<media xmlns='xmlns='urn:xmpp:media'
width='290'
height='80'>
<uri type='image/jpeg'>http://www.victim.com/challenges/ocr.jpeg?F3A6292C</uri>
@ -136,7 +136,7 @@
</media>
</field>
<field var='picture_recog'>
<media xmlns='xmlns='http://jabber.org/protocol/media'
<media xmlns='xmlns='urn:xmpp:media'
width='150'
height='150'>
<uri type='image/jpeg'>http://www.victim.com/challenges/picture.jpeg?F3A6292C</uri>
@ -144,13 +144,13 @@
</media>
</field>
<field var='speech_recog'>
<media xmlns='xmlns='http://jabber.org/protocol/media'>
<media xmlns='xmlns='urn:xmpp:media'>
<uri type='audio/x-wav'>http://www.victim.com/challenges/speech.wav?F3A6292C</uri>
<uri type='audio/ogg-speex'>http://www.victim.com/challenges/speech.ogg?F3A6292C</uri>
</media>
</field>
<field var='video_recog'>
<media xmlns='xmlns='http://jabber.org/protocol/media'
<media xmlns='xmlns='urn:xmpp:media'
width='150'
height='150'>
<uri type='video/mpeg'>http://www.victim.com/challenges/video.mpeg?F3A6292C</uri>
@ -201,10 +201,10 @@
to='victim.com'
xml:lang='en'
id='F3A6292C'>
<challenge xmlns='http://jabber.org/protocol/challenge'>
<challenge xmlns='urn:xmpp:challenge'>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE'>
<value>http://jabber.org/protocol/challenge</value>
<value>urn:xmpp:challenge</value>
</field>
<field var='from'><value>innocent@victim.com</value></field>
<field var='sid'><value>spam1</value></field>
@ -262,23 +262,23 @@
id='73DE28A2'>
<body>Your messages to innocent@victim.com are being blocked.
To unblock them, ask innocent@victim.com to send you a message.</body>
<challenge xmlns='http://jabber.org/protocol/challenge'>
<challenge xmlns='urn:xmpp:challenge'>
<x xmlns='jabber:x:data' type='form'>
<field type='hidden' var='FORM_TYPE'>
<value>http://jabber.org/protocol/challenge</value>
<value>urn:xmpp:challenge</value>
</field>
<field type='hidden' var='from'><value>innocent@victim.com</value></field>
<field type='hidden' var='sid'><value>spam2</value></field>
<field type='hidden' var='answers'><value>2</value></field>
<field var='ocr'>
<media xmlns='xmlns='http://jabber.org/protocol/media'
<media xmlns='xmlns='urn:xmpp:media'
width='290'
height='80'>
<uri type='image/jpeg'>http://www.victim.com/challenges/ocr.jpeg?F3A6292C</uri>
</media>
</field>
<field var='audio_recog'>
<media xmlns='xmlns='http://jabber.org/protocol/media'>
<media xmlns='xmlns='urn:xmpp:media'>
<uri type='audio/x-wav'>http://www.victim.com/challenges/audio.wav?F3A6292C</uri>
</media>
</field>
@ -298,10 +298,10 @@
to='victim.com'
xml:lang='en'
id='73DE28A2'>
<challenge xmlns='http://jabber.org/protocol/challenge'>
<challenge xmlns='urn:xmpp:challenge'>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE'>
<value>http://jabber.org/protocol/challenge</value>
<value>urn:xmpp:challenge</value>
</field>
<field var='from'><value>innocent@victim.com</value></field>
<field var='sid'><value>spam2</value></field>
@ -329,12 +329,12 @@
<query xmlns='jabber:iq:register'>
<x xmlns='jabber:x:data' type='form'>
<field type='hidden' var='FORM_TYPE'>
<value>http://jabber.org/protocol/challenge</value>
<value>urn:xmpp:challenge</value>
</field>
<field type='hidden' var='cid'><value>F3A6292C</value></field>
<field type='hidden' var='answers'><value>3</value></field>
<field var='ocr'>
<media xmlns='xmlns='http://jabber.org/protocol/media'
<media xmlns='xmlns='urn:xmpp:media'
width='290'
height='80'>
<uri type='image/jpeg'>http://www.victim.com/challenges/ocr.jpeg?F3A6292C</uri>
@ -364,7 +364,7 @@
<query xmlns='jabber:iq:register'>
<x xmlns='jabber:x:data' type='result'>
<field var='FORM_TYPE'>
<value>http://jabber.org/protocol/challenge</value>
<value>urn:xmpp:challenge</value>
</field>
<field var='cid'><value>F3A6292C</value></field>
<field var='answers'><value>3</value></field>
@ -496,10 +496,10 @@
id='F3A6292C'>
<body>Your messages to me are being blocked. To unblock them,
reply with the color of a stop light followed by 'F3A6292C'.</body>
<challenge xmlns='http://jabber.org/protocol/challenge'>
<challenge xmlns='urn:xmpp:challenge'>
<x xmlns='jabber:x:data' type='form'>
<field type='hidden' var='FORM_TYPE'>
<value>http://jabber.org/protocol/challenge</value>
<value>urn:xmpp:challenge</value>
</field>
<field type='hidden' var='from'><value>innocent@victim.com</value></field>
<field type='hidden' var='sid'><value>spam1</value></field>
@ -560,8 +560,8 @@
<section2 topic='Protocol Namespaces' anchor='registrar-ns'>
<p>Upon approval of this document, the &REGISTRAR; shall register the following protocol namespaces:</p>
<ul>
<li>http://jabber.org/protocol/challenge</li>
<li>http://jabber.org/protocol/media</li>
<li>urn:xmpp:challenge</li>
<li>urn:xmpp:media</li>
</ul>
</section2>
<section2 topic='Field Standardization' anchor='registrar-formtypes'>
@ -569,7 +569,7 @@
<p>Upon approval of this document, the <cite>XMPP Registrar</cite> shall register the following new FORM_TYPE. Additional fields will be defined in future submissions.</p>
<code><![CDATA[
<form_type>
<name>http://jabber.org/protocol/challenge</name>
<name>urn:xmpp:challenge</name>
<doc>XEP-0158</doc>
<desc>forms enabling robot challenges</desc>
<field
@ -692,14 +692,14 @@
</section1>
<section1 topic='XML Schemas' anchor='schemas'>
<section2 topic='http://jabber.org/protocol/challenge' anchor='schemas-challenge'>
<section2 topic='urn:xmpp:challenge' anchor='schemas-challenge'>
<code><![CDATA[
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='http://jabber.org/protocol/challenge'
xmlns='http://jabber.org/protocol/challenge'
targetNamespace='urn:xmpp:challenge'
xmlns='urn:xmpp:challenge'
elementFormDefault='qualified'>
<xs:element name='challenge'>
@ -714,14 +714,14 @@
]]></code>
</section2>
<section2 topic='http://jabber.org/protocol/media' anchor='schemas-media'>
<section2 topic='urn:xmpp:media' anchor='schemas-media'>
<code><![CDATA[
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='http://jabber.org/protocol/media'
xmlns='http://jabber.org/protocol/media'
targetNamespace='urn:xmpp:media'
xmlns='urn:xmpp:media'
elementFormDefault='qualified'>
<xs:element name='media'>

View File

@ -100,7 +100,7 @@
<query xmlns='http://jabber.org/protocol/disco#info'>
<identity category='im' type='server'/>
...
<feature var='http://jabber.org/protocol/spim-control'/>
<feature var='urn:xmpp:spim-control'/>
...
</query>
</iq>
@ -236,7 +236,7 @@
<section2 topic='Well-Known Service Discovery Nodes' anchor='registrar-nodes'>
<p>Upon approval of this document, the <cite>XMPP Registrar</cite> shall register the following well-known Service Discovery node:</p>
<ul>
<li>http://jabber.org/protocol/spim-control</li>
<li>urn:xmpp:spim-control</li>
</ul>
</section2>
</section1>

View File

@ -23,6 +23,12 @@
<supersededby>None</supersededby>
<shortname>pubkeys</shortname>
&ianpaterson;
<revision>
<version>0.4</version>
<date>2006-11-23</date>
<initials>ip</initials>
<remark><p>Changed namespace</p></remark>
</revision>
<revision>
<version>0.3</version>
<date>2006-11-20</date>
@ -57,7 +63,7 @@
<example caption='Entity Creates Public Keys Publishing Node'><![CDATA[
<iq from='juliet@capulet.com/balcony' type='set' id='create1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<create node='http://jabber.org/protocol/pubkeys'/>
<create node='urn:xmpp:pubkeys'/>
<configure>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE' type='hidden'>
@ -84,7 +90,7 @@
<example caption='Entity Publishes an RSA Key to its Server'><![CDATA[
<iq from='juliet@capulet.com/balcony' type='set' id='pub1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='http://jabber.org/protocol/pubkeys'>
<publish node='urn:xmpp:pubkeys'>
<item id='julietRSAkey1'>
<KeyInfo xmlns='http://www.w3.org/2000/09/xmldsig#'>
<KeyName>julietRSAkey1</KeyName>
@ -103,7 +109,7 @@
<example caption='Entity Publishes a DSA Key to its Server'><![CDATA[
<iq from='juliet@capulet.com/balcony' type='set' id='pub2'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='http://jabber.org/protocol/pubkeys'>
<publish node='urn:xmpp:pubkeys'>
<item id='julietDSAkey1'>
<KeyInfo xmlns='http://www.w3.org/2000/09/xmldsig#'>
<KeyName>julietDSAkey1</KeyName>
@ -121,7 +127,7 @@
<example caption='Entity Publishes an X.509 Certificate to its Server'><![CDATA[
<iq from='juliet@capulet.com/balcony' type='set' id='pub3'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='http://jabber.org/protocol/pubkeys'>
<publish node='urn:xmpp:pubkeys'>
<item id='julietX509cert1'>
<KeyInfo xmlns='http://www.w3.org/2000/09/xmldsig#'>
<KeyName>julietX509cert1</KeyName>
@ -145,7 +151,7 @@
<example caption='Entity Publishes a PGP Key to its Server'><![CDATA[
<iq from='juliet@capulet.com/balcony' type='set' id='pub4'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='http://jabber.org/protocol/pubkeys'>
<publish node='urn:xmpp:pubkeys'>
<item id='julietPGPkey1'>
<KeyInfo xmlnss="http://www.w3.org/2000/09/xmldsig#">
<KeyName>julietPGPkey1</KeyName>
@ -162,7 +168,7 @@
<example caption='Subscriber Receives Event with Key'><![CDATA[
<message to='romeo@montague.net/garden' from='juliet@capulet.com' type='headline'>
<event xmlns='http://jabber.org/protocol/pubsub#event'>
<items node='http://jabber.org/protocol/pubkeys'>
<items node='urn:xmpp:pubkeys'>
<item id='julietRSAkey1'>
<KeyInfo xmlns='http://www.w3.org/2000/09/xmldsig#'>
<KeyName>julietRSAkey1</KeyName>
@ -188,7 +194,7 @@
from='romeo@montague.net/garden'
id='items1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='http://jabber.org/protocol/pubkeys'/>
<items node='urn:xmpp:pubkeys'/>
</pubsub>
</iq>
]]></example>
@ -198,7 +204,7 @@
from='juliet@capulet.com'
id='items1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='http://jabber.org/protocol/pubkeys'>
<items node='urn:xmpp:pubkeys'>
<item id='julietRSAkey1'>
<KeyInfo xmlns='http://www.w3.org/2000/09/xmldsig#'>
<KeyName>julietRSAkey1</KeyName>
@ -236,7 +242,7 @@
id='keys1'
to='juliet@capulet.com/balcony'
from='romeo@montague.net/garden'>
<pubkeys xmlns='http://jabber.org/protocol/pubkeys'/>
<pubkeys xmlns='urn:xmpp:pubkeys'/>
</iq>
]]></example>
<p>The other entity MUST make a careful access control decision before returning only those public keys for which it holds the corresponding private key (not necessarily the full list of keys being published via <cite>Personal Eventing via Pubsub</cite>):</p>
@ -245,7 +251,7 @@
id='keys1'
to='romeo@montague.net/garden'
from='juliet@capulet.com/balcony'>
<pubkeys xmlns='http://jabber.org/protocol/pubkeys'>
<pubkeys xmlns='urn:xmpp:pubkeys'>
<KeyInfo xmlns='http://www.w3.org/2000/09/xmldsig#'>
<KeyName>julietRSAkey1</KeyName>
...
@ -263,7 +269,7 @@
id='keys1'
to='romeo@montague.net/garden'
from='juliet@capulet.com/balcony'>
<pubkeys xmlns='http://jabber.org/protocol/pubkeys'/>
<pubkeys xmlns='urn:xmpp:pubkeys'/>
<error code='503' type='cancel'>
<service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
@ -281,7 +287,7 @@
</section1>
<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
<p>The &REGISTRAR; shall add 'http://jabber.org/protocol/pubkeys' to its registry of protocol namespaces.</p>
<p>The &REGISTRAR; shall add 'urn:xmpp:pubkeys' to its registry of protocol namespaces.</p>
</section1>
<section1 topic='XML Schema' anchor='schema'>
@ -290,8 +296,8 @@
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='http://jabber.org/protocol/pubkeys'
xmlns='http://jabber.org/protocol/pubkeys'
targetNamespace='urn:xmpp:pubkeys'
xmlns='urn:xmpp:pubkeys'
elementFormDefault='qualified'>
<xs:element name='pubkeys'>