Software / code / prosody
File
spec/scansion/basic_message.scs @ 10224:94e341dee51c
core.certmanager: Move EECDH ciphers before EDH in default cipherstring
The original intent of having kEDH before kEECDH was that if a `dhparam`
file was specified, this would be interpreted as a preference by the
admin for old and well-tested Diffie-Hellman key agreement over newer
elliptic curve ones. Otherwise the faster elliptic curve ciphersuites
would be preferred. This didn't really work as intended since this
affects the ClientHello on outgoing s2s connections, leading to some
servers using poorly configured kEDH.
With Debian shipping OpenSSL settings that enforce a higher security
level, this caused interoperability problems with servers that use DH
params smaller than 2048 bits. E.g. jabber.org at the time of this
writing has 1024 bit DH params.
MattJ says
> Curves have won, and OpenSSL is less weird about them now
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 25 Aug 2019 20:22:35 +0200 |
| parent | 9291:329a670ae975 |
| child | 10515:35bf3b80480f |
line wrap: on
line source
# Basic message routing and delivery [Client] Romeo jid: user@localhost password: password [Client] Juliet jid: juliet@localhost password: password [Client] Juliet's phone jid: juliet@localhost password: password resource: mobile --------- # Act 1, scene 1 # The clients connect Romeo connects Juliet connects Juliet's phone connects # Romeo publishes his presence. Juliet has not, and so does not receive presence. Romeo sends: <presence/> Romeo receives: <presence from="${Romeo's full JID}" /> # Romeo sends a message to Juliet's full JID Romeo sends: <message to="${Juliet's full JID}" type="chat"> <body>Hello Juliet!</body> </message> Juliet receives: <message to="${Juliet's full JID}" from="${Romeo's full JID}" type="chat"> <body>Hello Juliet!</body> </message> # Romeo sends a message to Juliet's phone Romeo sends: <message to="${Juliet's phone's full JID}" type="chat"> <body>Hello Juliet, on your phone.</body> </message> Juliet's phone receives: <message to="${Juliet's phone's full JID}" from="${Romeo's full JID}" type="chat"> <body>Hello Juliet, on your phone.</body> </message> # Scene 2 # This requires the server to support offline messages (which is optional). # Romeo sends a message to Juliet's bare JID. This is not immediately delivered, as she # has not published presence on either of her resources. Romeo sends: <message to="juliet@localhost" type="chat"> <body>Hello Juliet, are you there?</body> </message> # Juliet sends presence on her phone, and should receive the message there Juliet's phone sends: <presence/> Juliet's phone receives: <presence/> Juliet's phone receives: <message from="${Romeo's full JID}" type="chat"> <body>Hello Juliet, are you there?</body> <delay xmlns='urn:xmpp:delay' from='localhost' stamp='{scansion:any}' /> </message> # Romeo sends another bare-JID message, it should be delivered # instantly to Juliet's phone Romeo sends: <message to="juliet@localhost" type="chat"> <body>Oh, hi!</body> </message> Juliet's phone receives: <message from="${Romeo's full JID}" type="chat"> <body>Oh, hi!</body> </message> # Juliet's laptop goes online, but with a negative priority Juliet sends: <presence> <priority>-1</priority> </presence> Juliet receives: <presence from="${Juliet's full JID}"> <priority>-1</priority> </presence> Juliet's phone receives: <presence from="${Juliet's full JID}"> <priority>-1</priority> </presence> # Again, Romeo sends a message to her bare JID, but it should # only get delivered to her phone: Romeo sends: <message to="juliet@localhost" type="chat"> <body>How are you?</body> </message> Juliet's phone receives: <message from="${Romeo's full JID}" type="chat"> <body>How are you?</body> </message> # Romeo sends direct to Juliet's full JID, and she should receive it Romeo sends: <message to="${Juliet's full JID}" type="chat"> <body>Are you hiding?</body> </message> Juliet receives: <message from="${Romeo's full JID}" type="chat"> <body>Are you hiding?</body> </message> # Juliet publishes non-negative presence Juliet sends: <presence/> Juliet receives: <presence from="${Juliet's full JID}"/> Juliet's phone receives: <presence from="${Juliet's full JID}"/> # And now Romeo's bare JID messages get delivered to both resources # (server behaviour may vary here) Romeo sends: <message to="juliet@localhost" type="chat"> <body>There!</body> </message> Juliet receives: <message from="${Romeo's full JID}" type="chat"> <body>There!</body> </message> Juliet's phone receives: <message from="${Romeo's full JID}" type="chat"> <body>There!</body> </message> # The End Romeo disconnects Juliet disconnects Juliet's phone disconnects