- Finally removed "difficulty". It has not been used for a long time
(and even back then never changed from the value 1).
- Removed constants/handling of already-past hard forks
- Update oxen-encoding, oxen-mq, oxen-logging to latest
- Update curl to latest, and disable nghttp2 etc. to make static build
work again on macos
- Latest stable openssl
`sig_timestamp` wasn't being properly used for the signature
verification in `store`; rather `timestamp` was always used even when
both were present (and so `sig_timestamp` was effectively useless).
This fixes it.
- various msg_id calculations needed to be updated for the HF19.3
message hash change
- test_subkey_auth.py was using some old method names that no longer
work
Originally the message hash included the timestamp and expiry of the
message when building the hash.
This breaks things in a couple of ways:
- the hash isn't reproducible because the message expiry is no longer
fixed.
- libsession-util needs de-duplication of identical messages even if the
timestamps differ.
This removes the use of timestamp/expiry starting at HF19.3.
- Adds `get_expiries` endpoint to retrieve expiries
- Adds `extend=True` parameter to the expire_msgs endpoint. This is
just like `shorten=True` but in the opposite direction (i.e. it allows
you to only extend).
- Adds `unchanged` key to the result of a expire_msgs: this is a dict of
all the hashes -> expiries of all hashes that were *not* updated when
using one of the new shorten/extend options.
With upcoming config changes we have various use for batch requests to
fetch/store/etc. from multiple namespaces and the limit of 5 is likely
going to be too restrictive quite soon.
Maintaining multiple subscriptions for the same account on the same
connection for each different set of namespaces/want_data is painful, so
merge them into one.
This has some implications about allowing a single connection to renew
namespace and want_data subscriptions (even if those namespaces and/or
want_data flag aren't getting specified in renewals), but that is
relatively minor and it allows considerable simplification of
subscriptions.
The PN server potentially needs to subscribe to many addresses at once;
this allows it to do so in a single request rather than needing many
separate small requests.
This PR adds endpoints to storage server that allows someone to maintain
a oxenmq connection to one or more swarm members and receive pushed
notifications through that connection when new messages are delivered.
This is authenticated: subscribing requires a signature from the mailbox
owner signed within the past 14 days, and connections have to be
refreshed at least once/hour to keep the push notifications alive.
The immediate use for this will be for more efficient push notifications
for mobile clients using the push notification server, but this
mechanism will eventually also allow clients (over lokinet) to get
messages pushed to them rather than having to frequently poll.
This adds a new endpoint to the storage server to revoke a subkey. The
storage server will keep track of previously revoked subkeys and will
now check that a message authenticated by a subkey does not use one of
these revoked subkeys.