mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-30 07:52:06 +01:00
Temp commit - migration guide
This commit is contained in:
parent
4fd2300a2f
commit
f5b199158d
1 changed files with 43 additions and 0 deletions
43
documentation/extensions/omemo_migration_4.2.0_head.md
Normal file
43
documentation/extensions/omemo_migration_4.2.0_head.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
Migrating smack-omemo from 4.2.1 to 4.x.x
|
||||
=========================================
|
||||
|
||||
The implementation of smack-omemo and smack-omemo-signal was originally started as an
|
||||
academic project under pressure of time.
|
||||
For that reason, the API was not perfect when OMEMO support was first introduced in
|
||||
Smack in version 4.2.1.
|
||||
Many issues of smack-omemo have been resolved over the course of the last year in
|
||||
a major effort, which is why smack-omemo and smack-omemo-signalwere excluded from
|
||||
the 4.2.2 release.
|
||||
|
||||
During this time major parts of the implementation were redone and the API changed
|
||||
as a consequence of that. This guide will go through all notable changes in order
|
||||
to make the process of upgrading as easy and straight forward as possible.
|
||||
|
||||
## Trust
|
||||
One major change is, that the OmemoStore implementations no longer store trust decisions.
|
||||
Methods related to trust have been removed from OmemoStore implementations.
|
||||
Instead the client is now responsible to store those.
|
||||
Upon startup, the client now must pass an `OmemoTrustCallback` to the `OmemoManager`
|
||||
which is used to access and change trust decisions.
|
||||
|
||||
It is recommended for the client to store trust decisions as tuples of (omemo device,
|
||||
fingerprint of identityKey, trust state).
|
||||
When querying a trust decision (aka. "Is this fingerprint trusted for that device?),
|
||||
the local fingerprint should be compared to the provided fingerprint.
|
||||
|
||||
The method signatures for setting and querying trust from inside the OmemoManager are
|
||||
still the same. Internally they access the `OmemoTrustCallback` set by the client.
|
||||
|
||||
## Encryption
|
||||
Message encryption in smack-omemo 4.2.1 was ugly. Encryption for multiple devices
|
||||
could fail because session negotiation could go wrong, which resulted in an
|
||||
exception, which contained all devices with working sessions.
|
||||
That exception could then be used in
|
||||
`OmemoManager.encryptForExistingSessions(CannotEstablishOmemoSessionException exception, String message)`,
|
||||
to encrypt the message for all devices with a session.
|
||||
|
||||
The new API is
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in a new issue