Commit Graph

67 Commits

Author SHA1 Message Date
Andrea Maria Piana 3ad085fb9e
Add datasync
This commit adds the ability of reading and sending datasync messages.
Datasync messages are batched, so a single whisper message might
contain multiple protocol messages.
Datasync messages are parsed regardless of whether the datasync flag is
on, as this commit is backward compatible.

Sending messages is toggled off by default.
2019-07-26 14:09:24 +02:00
Pedro Pombeiro f5973102d8 Add `Messenger.RetrieveAll` method. Closes #24 (#26) 2019-07-26 08:19:03 +02:00
Adam Babik 549afb5edf
update Travis config (#29) 2019-07-25 08:51:30 +02:00
Andrea Maria Piana e223b0af6a
Log only on error when contact code fails 2019-07-24 10:50:39 +02:00
Andrea Maria Piana 51e8c10cbe
Don't return errors on logger.Sync
Currently logger.Sync fails often (or always), reading https://github.com/uber-go/zap/issues/328
seems like it's safe to ignore.
2019-07-24 08:53:51 +02:00
Adam Babik b9a1aa9074
define a JSON hex encoder which encodes bytes in hex instead of base64 (#31) 2019-07-23 19:05:50 +02:00
Adam Babik 6a11d08b05
Prepare for status-go integration (#27)
status-go requires some special methods to be exposed in order to support the current integration.

Introduced families of methods marked as `DEPRECATED`:
* `SendRaw` to send transit-encoded messages, both public and private. It supports only private PFS-enabled messages. To send private non-PFS messages, we can add this functionality or it needs to happen through `shh_post` directly from status-react.
* `RetrieveRawAll` and `RetrieveRawWithFilter` to get retrieve decrypted but transit-encoded messages.
* `LoadFilters` and `RemoveFilters` to manage Whisper filters directly.
* By default, persistence of messages is disabled. It can be enabled with an option passed to `Messenger`.
* File paths to the databases are configurable in `Messenger`.
2019-07-23 10:33:57 +02:00
Andrea Maria Piana eb918ec8af
Fix lint & tests 2019-07-21 07:57:27 +02:00
Andrea Maria Piana db4b2126d0 [Parts of #7] Wrap & signs messages if specified in config
Currently datasync propagates the unencrypted messages. This messages
might be relayed to a third party. We can't therefore rely on whisper
signature, as the author might not be the same as the relayer.

This commit wraps our current message in a protobuf record with an
optional signature.

If the signature is present it will be used to indicate the author of
the message, otherwise whisper is used.

It's not enabled by default as this is a breaking change and should go
live with v1. Decoding is backward compatible, so old messages will
still be read.

I have also changed the messageID scheme to use:
compressedBytesOfPk + Keccak256 of the encoded unencrypted payload, instead of the whisper ID.
2019-07-21 07:41:38 +02:00
Pedro Pombeiro c1f623388d
Move to zap structured logging library (#25) 2019-07-18 15:41:48 +02:00
Pedro Pombeiro 7101358d7d
Add option to enable legacy generic discovery topic. Closes #12 (#22) 2019-07-17 16:50:09 +02:00
Adam Babik dec4e63d9f
Propagate shared secrets on encryption protocol init (#23) 2019-07-17 15:14:16 +02:00
Adam Babik 35e60767b7
update docs for sqlite package 2019-07-17 12:12:27 +02:00
Andrea Maria Piana 7623131be4
[Fixes #9] Increase multidevice response (#16)
We only generate the bundle once every 6 hours (or if pairing
information changes).
This means that in some cases where many devices appear/disappear,
new devices are not picked up until the bundle is refreshed.

For example:

Alice creates a device with timestamp t1 A1
Alice creates a device with timestamp t2 A2
Alice creates a device with timestamp t3 A3
Alice creates a device with timestamp t4 A4

Alice propagates this to bob, bob's list of active devices for alice is now: t2 A2,
t3 A3, t4 A4 as we only keep maximum 3.

If Alice sends a message to Bob from A1, previously it would be still
using t1 (as long as less than 6 hours have passed).

Now instead the new bundle will have t5 instead, so upon receiving the
message bob will have: t3 A3, t4 A4, t5 A1.

This commit changes the behavior to always update the timestamp before
publishing the bundle, so that as soon as a message is received from a
new device, it will increase the timestamp for that device.
2019-07-17 08:42:27 +02:00
Adam Babik 5c6039f77f
Refactor the library (#20) 2019-07-16 12:43:07 +02:00
Adam Babik e941e80f5c
move code from status-go and status-console-client 2019-07-08 11:21:21 +02:00
Adam Babik e34e71a8b9
Initial commit 2019-07-06 15:05:25 +02:00