File

spec/scansion/blocking.scs @ 12694:26a004c96ef8

util.paseto: Implementation of PASETO v4.public tokens PASETO provides an alternative to JWT with the promise of fewer implementation pitfalls. The v4.public algorithm allows asymmetric cryptographically-verified token issuance and validation. In summary, such tokens can be issued by one party and securely verified by any other party independently using the public key of the issuer. This has a number of potential applications in a decentralized network and ecosystem such as XMPP. For example, such tokens could be combined with XEP-0317 to allow hats to be verified even in the context of a third-party MUC service.
author Matthew Wild <mwild1@gmail.com>
date Fri, 24 Jun 2022 17:03:28 +0100
parent 10812:3bd846c76701
line wrap: on
line source

# XEP-0191: Blocking Command

[Client] Romeo
	jid: blocker@localhost
	password: password

[Client] Juliet
	jid: blockee@localhost
	password: password

-----

# The parties connect
Romeo connects

Romeo sends:
	<presence/>

Romeo receives:
	<presence from="${Romeo's full JID}"/>

Juliet connects

Juliet sends:
	<presence/>

Juliet receives:
	<presence from="${Juliet's full JID}"/>

# They add each other
Romeo sends:
	<presence type="subscribe" to="${Juliet's JID}"/>

Romeo receives:
	<presence from="${Juliet's JID}" to="${Romeo's JID}" type="unavailable"/>

Juliet receives:
	<presence type="subscribe" to="${Juliet's JID}" from="${Romeo's JID}"/>

Juliet sends:
	<presence type="subscribed" to="${Romeo's JID}"/>

Romeo receives:
	<presence from="${Juliet's full JID}" to="${Romeo's JID}">
	  <delay xmlns="urn:xmpp:delay" stamp="{scansion:any}" from="localhost"/>
	</presence>

Juliet sends:
	<presence type="subscribe" to="${Romeo's JID}"/>

Juliet receives:
	<presence from="${Romeo's JID}" to="${Juliet's JID}" type="unavailable"/>

Romeo receives:
	<presence type="subscribe" to="${Romeo's JID}" from="${Juliet's JID}"/>

Romeo sends:
	<presence type="subscribed" to="${Juliet's JID}"/>

Juliet receives:
	<presence from="${Romeo's full JID}" to="${Juliet's JID}">
	  <delay xmlns="urn:xmpp:delay" stamp="{scansion:any}" from="localhost"/>
	</presence>

Romeo receives:
	<presence from="${Juliet's full JID}" to="${Romeo's JID}">
	  <delay xmlns="urn:xmpp:delay" stamp="{scansion:any}" from="localhost"/>
	</presence>

# They can now talk
Juliet sends:
	<message type="chat" to="${Romeo's JID}">
	  <body>ohai</body>
	</message>

Romeo receives:
	<message type="chat" to="${Romeo's JID}" from="${Juliet's full JID}">
	  <body>ohai</body>
	</message>

# And now to the blockining

Romeo sends:
	<iq type="set" id="lx2">
	  <block xmlns="urn:xmpp:blocking">
	    <item jid="${Juliet's JID}"/>
	  </block>
	</iq>

Romeo receives:
	<iq type="result" id="lx2"/>

Juliet receives:
	<presence type="unavailable" to="${Juliet's JID}" from="${Romeo's full JID}"/>

# Can"t talk anymore
Romeo sends:
	<message type="chat" to="${Juliet's JID}">
	  <body>hello?</body>
	</message>

Romeo receives:
	<message type="error" from="${Juliet's JID}">
	  <error type="cancel">
	    <not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
	    <text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">You have blocked this JID</text>
	    <blocked xmlns="urn:xmpp:blocking:errors"/>
	  </error>
	</message>

Juliet sends:
	<message type="chat" to="${Romeo's JID}"/>

Juliet receives:
	<message type="error" from="${Romeo's JID}">
	  <error type="cancel">
	    <service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
	  </error>
	</message>

Romeo sends:
	<iq type="set" id="lx3">
	  <unblock xmlns="urn:xmpp:blocking">
	    <item jid="${Juliet's JID}"/>
	  </unblock>
	</iq>

Juliet receives:
	<presence to="${Juliet's JID}" from="${Romeo's full JID}">
	  <delay xmlns="urn:xmpp:delay" stamp="{scansion:any}" from="localhost"/>
	</presence>

Romeo receives:
	<iq type="result" id="lx3"/>

# Can talk again
Romeo sends:
	<message type="chat" to="${Juliet's JID}">
	  <body>hello!</body>
	</message>

Juliet receives:
	<message type="chat" to="${Juliet's JID}" from="${Romeo's full JID}">
	  <body>hello!</body>
	</message>

# Bye
Juliet sends:
	<presence type="unavailable"/>

Juliet disconnects

Romeo receives:
	<presence from="${Juliet's full JID}" to="${Romeo's JID}" type="unavailable"/>

Romeo sends:
	<presence type="unavailable"/>

Romeo disconnects