Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
use a powers of two ceiling for the reported size in the preamble.
for this to be effective against a passive adversary, cover traffic
should be used in the uploads too.
This is just a first-stop measure; proper research should be done to
determine a good tradeoff between avoiding information leakage and
saving some storage and bandwidth..
- Documentation: #8759
- Related: #8759
|
|
|
|
|
|
Motivation is that I need to pass partial data to the decryptor, mainly.
|
|
|
|
If an application tries to delete None, by accident, raising earlier
would help to show the caller stack trace instead of inner sqlite
backend stack and make the error more friendly.
- Resolves: #8791
|
|
with @tayane
|
|
With this commit all tests on py34 tox environment
are collected.
|
|
|
|
|
|
The offline flag is not needed and rendered the soledad client prone to
bugs because it would need to be toggled and that is succeptible to
timing problems.
|
|
|
|
|
|
Resolves: https://0xacab.org/leap/soledad/issues/8788
|
|
Handle it only if self.deferred wasnt called yet, otherwise that's just
an out-of-sync call from a scheduled deferred. Since it was already
logged, it's ok to ignore.
|
|
|
|
After refactor, the client secret bootstrap logic was flawed, and remote
secret was not being saved properly. This commit fixed that and tries to
improve the bootstrap code to make it more clear.
|
|
|
|
|
|
|
|
In order to be able to change passphrase, token and offline status of
soledad from the bitmask client api, the secrets api also has to be able
to use up-to-date values when encrypting/decrypting secrets and
uploading/downloading them to the server. This commit makes public some
soledad attributes that were previously "private" (i.e. used to start
with "_" and were not meant to be accessed from outside), and passes the
whole soledad object to the client secrets api. This makes the code
cleaner and also allows for always getting newest values of soledad
attributes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
That's necessary for blobs-io. Current code includes backwards
compatibility branching and tests, which shall be removed on next
releases.
|
|
|
|
The need for token caching in server is a matter of debate, as is the
ideal way to do it. Twisted sessions store the session id in a cookie
and use that session id to persist. It is not clear if that
implementation is needed, works with future features (as multiple
soledad servers) or represents a security problem in some way. Because
of these, this commit removes it for now. The feature is left in git
history so we can bring it back later if needed.
|
|
|
|
|
|
- store ENC_METHOD value instead of string in secrets file
- allow for migration of not-activated secrets
- allow migration of 'aes256' and ENC_METHOD secrets cipher
|
|
|
|
|
|
Current implementation can allow tampering and the CTR->GCM exchange can
help to avoid it.
This commits also alters a behaviour where we moved ahead after failing
to decrypt a recovery document. IMHO we can't move ahead as this is a
fatal error.
Signed-off-by: Victor Shyba <victor1984@riseup.net>
|
|
Integrated the secrets's JSON key that specifies ciphers into _crypto
and added optional GCM. Also added a test to check if both cipher types
can be imported.
Resolves: #8680
Signed-off-by: Victor Shyba <victor1984@riseup.net>
|
|
Resolves: #8668 - client: substitute usage of CTR mode + HMAC by GCM
cipher mode
Signed-off-by: Victor Shyba <victor1984@riseup.net>
|
|
Our magic value wasn't being used and were represented as a string.
Refactored it to a constant, increased it's size to 2 bytes and optimzed
is_symmetrically_encrypted to look for the magic and symmetrically
encrypted flag under base64 encoding. Most file types will use this
feature to help identifying themselves, so it got refactored to serve
the purpose it was created.
|
|
Naming, interfaces and other details.
|
|
AESWriter and HMACWriter are just applying hmac or aes into a flow of
data. Abstracted the application of those operations into a super class
and highlighted just the difference on each implementation.
|
|
VerifiedEncryptor and VerifiedDecryptor are just a pipe and a fan-out.
This class provides both behaviors to two distinct writeable things.
|
|
After adding the streaming decrypt, some classes were doing almost the
same thing. Unified them.
Also fixed some module level variables to upper case and some class name
to camel case.
|
|
Some exceptions were missing a proper description and client_side_db.py
script wasn't capturing logs from Twisted.
|
|
Unfortunately, if a doc finishes decryption before the previous one we
will still have an issue while inserting. This commits solves it by
adding the parse and decrypt inside of the semaphore.
|