Add option to disable tracking megolm session ratchet state

The tracking is meant for bridges/bots that want to delete old ratchet states
after they're not needed, but for normal clients it's just unnecessary overhead
This commit is contained in:
Tulir Asokan 2024-05-16 17:14:08 +03:00
commit 3bd42f5a82
4 changed files with 9 additions and 3 deletions

View file

@ -213,6 +213,11 @@ func (mach *OlmMachine) actuallyDecryptMegolmEvent(ctx context.Context, evt *eve
return sess, nil, messageIndex, fmt.Errorf("%w %d", DuplicateMessageIndex, messageIndex)
}
// Normal clients don't care about tracking the ratchet state, so let them bypass the rest of the function
if mach.DisableRatchetTracking {
return sess, plaintext, messageIndex, nil
}
expectedMessageIndex := sess.RatchetSafety.NextIndex
didModify := false
switch {

View file

@ -78,6 +78,7 @@ type OlmMachine struct {
RatchetKeysOnDecrypt bool
DeleteFullyUsedKeysOnDecrypt bool
DeleteKeysOnDeviceDelete bool
DisableRatchetTracking bool
DisableDeviceChangeKeyRotation bool

2
go.mod
View file

@ -12,7 +12,7 @@ require (
github.com/tidwall/gjson v1.17.1
github.com/tidwall/sjson v1.2.5
github.com/yuin/goldmark v1.7.1
go.mau.fi/util v0.4.3-0.20240516130206-1051a7dd4dd2
go.mau.fi/util v0.4.3-0.20240516141139-2ebe792cd8f7
go.mau.fi/zeroconfig v0.1.2
golang.org/x/crypto v0.23.0
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842

4
go.sum
View file

@ -37,8 +37,8 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
github.com/yuin/goldmark v1.7.1 h1:3bajkSilaCbjdKVsKdZjZCLBNPL9pYzrCakKaf4U49U=
github.com/yuin/goldmark v1.7.1/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
go.mau.fi/util v0.4.3-0.20240516130206-1051a7dd4dd2 h1:yL6ZH3O5AzH+5rKDrHGEdvmkmdePwjWfWvChD6nmY/M=
go.mau.fi/util v0.4.3-0.20240516130206-1051a7dd4dd2/go.mod h1:m+PJpPMadAW6cj3ldyuO5bLhFreWdwcu+3QTwYNGlGk=
go.mau.fi/util v0.4.3-0.20240516141139-2ebe792cd8f7 h1:2hnc2iS7usHT3aqIQ8HVtKtPgic+13EVSdZ1m8UBL/E=
go.mau.fi/util v0.4.3-0.20240516141139-2ebe792cd8f7/go.mod h1:m+PJpPMadAW6cj3ldyuO5bLhFreWdwcu+3QTwYNGlGk=
go.mau.fi/zeroconfig v0.1.2 h1:DKOydWnhPMn65GbXZOafgkPm11BvFashZWLct0dGFto=
go.mau.fi/zeroconfig v0.1.2/go.mod h1:NcSJkf180JT+1IId76PcMuLTNa1CzsFFZ0nBygIQM70=
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=