In the last months I stayed up late some nights, so I decided to add some additional features to Smack.
Among the additions is support for some new XEPs, namely:
- XEP-0249: Direct MUC Invitations
- XEP-0420: Stanza Content Encryption
- XEP-0422: Message Fastening
- XEP-0424: Message Retraction
I also started working on an implementation of XEP-0245: Message Moderation, but that one is not yet finished and needs more work.
Direct MUC invitations are a method to invite users to a group chat. Smack already had support for another similar mechanism, but this one is recommended by the XMPP Compliance Suites 2020.
Message Fastening is a generalized mechanism to add information to messages. That might be a reaction, eg. a thumbs up which is added to a previous message.
Message Retraction is used to retract previously sent messages. Internally it is based on Message Fastening.
The Stanza Content Encryption pull request only teaches Smack what SCE elements are, but it doesn’t yet teach it how to use them. That is partly due to no E2EE specification actually using them yet. That will hopefully change soon 😉
Anu brought up the fact that the OMEMO XEP is not totally clear on the length of initialization vectors used for message encryption. Historically most clients use 16 bytes length, while normally you would want to use 12. Apparently some AES-GCM libraries on iOS only support 12 bytes length, so using 12 bytes is definitely desirable. Most OMEMO implementations already support receiving 12 bytes as well as 16 bytes IV.
That’s why Smack will soon also start sending OMEMO messages with 12 bytes IV.