714c03c635
This allows to store community admin settings that are meant to be propagated to community members (as opposed to the already existing `CommunitySettings` which are considered local to every account). The first setting introduced as part of this commit is one that enables community admins to configure whether or not members of the community are allowed to pin messages in community channels. Prior to this commit, this was not restricted at all on the protocol level and only enforced by clients via UI (e.g. members don't see an option to pin messages, although they could). This config setting now ensures that: 1. If turned off, members cannot send a pin message 2. If turned off, pin messages from members are not handled/processed This is needed by https://github.com/status-im/status-desktop/issues/5662 |
||
---|---|---|
.. | ||
github.com/protocol/encryption | ||
migrations | ||
multidevice | ||
publisher | ||
sharedsecret | ||
README.md | ||
encryption_multi_device_test.go | ||
encryption_test.go | ||
encryptor.go | ||
persistence.go | ||
persistence_keys_storage_test.go | ||
persistence_test.go | ||
protocol.go | ||
protocol_message.pb.go | ||
protocol_message.proto | ||
protocol_test.go | ||
x3dh.go | ||
x3dh_test.go |
README.md
protocol/encryption package
Hash ratchet encryption
encryptor.GenerateHashRatchetKey()
generates a hash ratchet key and stores it in in the DB.
There, 2 new tables are created: hash_ratchet_encryption
and hash_ratchet_encryption_cache
.
Each hash ratchet key is uniquely identified by the (groupId, keyId)
pair, where keyId
is derived from a clock value.
protocol.BuildHashRatchetKeyExchangeMessage
builds an 1-on-1 message containing the hash ratchet key, given it's ID.
protocol.BuildHashRatchetMessage
builds a hash ratchet message with arbitrary payload, given groupId
. It will use the latest hash ratchet key available. encryptor.encryptWithHR
encrypts the payload using Hash Ratchet algorithms. Intermediate hashes are stored in hash_ratchet_encryption_cache
table.
protocol.HandleMessage
uses encryptor.decryptWithHR
fn for decryption.