status-go/protocol/encryption
Andrea Maria Piana d60a6713fe Enable mailserver cycle by default
This commit enables mailserver cycle logic by default and make a few
changes:

1) Nodes are graylisted instead of being blacklisted for a set amount of
   time. The reason is that if we blacklist, any cut in connectivity
   might result in long delays before reconnecting, especially on spotty
   connections.

2) Fixes an issue on the devp2p server, whereby the node would not
   connect to one of the static nodes since all the connection slots
   where filled. The fix is a bit inelegant, it always connects to
   static nodes, ignoring maxpeers, but it's tricky to get it to work
   since the code is clearly not written to select a specific node.

3) Adds support to pinned mailservers

4) Add retries to mailservers requests. It uses a closure for now, I
   think we should eventually have a channel etc, but I'd leave that for
   later.
2022-03-19 08:56:22 +00:00
..
github.com/protocol/encryption feat: display name 2022-03-14 13:48:34 -04:00
migrations Enable mailserver cycle by default 2022-03-19 08:56:22 +00:00
multidevice fix: close resultsets so we don't leak them (#1809) 2020-05-14 11:51:32 +01:00
publisher using zap.NewNop() ignores configured log level 2021-08-19 11:35:40 +02:00
sharedsecret Remove unnecessary logs & fix flaky test 2020-11-26 16:25:52 +01:00
README.md Communities encryption 2021-11-30 20:52:47 +02:00
encryption_multi_device_test.go Communities encryption 2021-11-30 20:52:47 +02:00
encryption_test.go Communities encryption 2021-11-30 20:52:47 +02:00
encryptor.go Communities encryption 2021-11-30 20:52:47 +02:00
persistence.go Communities encryption 2021-11-30 20:52:47 +02:00
persistence_keys_storage_test.go Move to monorepo structure (#1684) 2019-11-21 17:19:22 +01:00
persistence_test.go Use goimports instead of gofmt 2020-01-06 10:17:23 +01:00
protocol.go Add nil check for DirectMessageProtocol object 2021-12-02 15:42:33 +02:00
protocol_message.pb.go Fix use of absolute path not compatible with later versions of protoc (#2533) 2022-02-14 11:08:18 +00:00
protocol_message.proto Fix use of absolute path not compatible with later versions of protoc (#2533) 2022-02-14 11:08:18 +00:00
protocol_test.go Communities encryption 2021-11-30 20:52:47 +02:00
x3dh.go Create a home submodule for Eth node bridges- Rename StatusBackend to GethStatusBackend 2019-11-27 17:02:09 +01:00
x3dh_test.go Use goimports instead of gofmt 2020-01-06 10:17:23 +01:00

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.