Sebastian Messmer
9e9369b9ed
Performance optimization: When removing or shrinking a tree, we don't load/read leaves anymore. Loading inner nodes is enough to get all block IDs and then we can delete the leaves from their IDs without loading them.
2016-07-13 11:27:31 +02:00
Sebastian Messmer
7a68757599
Remove unneeded subtrees when shrinking tree
2016-07-13 07:08:53 +02:00
Sebastian Messmer
e7268744c6
Fix compiler warning
2016-07-13 00:23:29 +02:00
Sebastian Messmer
508766d2f2
Fix traversal and add test cases
2016-07-13 00:22:35 +02:00
Sebastian Messmer
845b0b5239
Use LeafTraversor for resizing blobs
2016-07-12 20:36:12 +02:00
Sebastian Messmer
582c9c1a4c
Fix traversal
2016-07-12 01:04:33 +02:00
Sebastian Messmer
98b85ea8b6
Started rewriting traversal
2016-07-10 22:57:39 +02:00
Sebastian Messmer
2bc3b641aa
Allow Data::FillWithZeroes on rvalue
2016-07-10 22:43:07 +02:00
Sebastian Messmer
30a1a3617e
Fix compiler warning in test case
2016-07-10 22:15:48 +02:00
Sebastian Messmer
e85019e95b
Cache value of DataTree.numLeaves(). This should make read()/write() faster.
2016-07-05 23:56:44 -07:00
Sebastian Messmer
2f8e8d8157
Add test case for DataTree::numLeaves after resize
2016-07-05 23:53:13 -07:00
Sebastian Messmer
3a447a7110
Add a test case to VersionCompareTest
2016-06-28 15:24:18 -07:00
Sebastian Messmer
9e1d466eee
Merge branch 'develop' into next
2016-06-28 01:38:12 -07:00
Sebastian Messmer
967b04929d
Fix compiling test cases on older gcc versions
2016-06-28 01:37:08 -07:00
Sebastian Messmer
f706e46868
Fix compiling test cases on older gcc versions
2016-06-27 22:57:31 -07:00
Sebastian Messmer
0f9aba1fc4
Fix compilation of test cases for old gcc
2016-06-27 22:39:33 -07:00
Sebastian Messmer
397de9372f
Each blob stores a parent pointer (i.e. the ID of the directory that contains this blob). This stores the directory structure in a conflict-proof way and can be used to resolve such conflicts.
2016-06-27 18:22:13 -07:00
Sebastian Messmer
a7f13ad7c1
When creating a file system, the user can choose whether to choose missing blocks as integrity violations.
2016-06-26 23:24:32 -07:00
Sebastian Messmer
2451a8c46f
Add --missing-block-is-integrity-violation option. The option doesn't have an effect yet though.
2016-06-26 22:16:44 -07:00
Sebastian Messmer
7bf84b1948
Add some test cases for the consistency of the generated myClientId.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
be8dffb24d
MyClientId is generated outside of CryDevice to give the CryConfigCreator access to it.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
b838046246
Add a 'exclusive client' option to the config file
2016-06-26 22:15:52 -07:00
Sebastian Messmer
514dbcb6c7
ClientId is not loaded/generated inside of KnownBlockVersions, but in CryDevice. This way, CryDevice also has access to the ClientID. This is later needed to recognize whether we're in a single-client or in a multi-client setting.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
f066b45954
VersionCountingBlockStore::forEachBlock() has an integrity check checking that all expected blocks are still existing.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
491b277cee
In case of an integrity violation, tell the user how they can reset integrity data.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
839a511c4d
When an integrity violation is detected, any further access to the file system is blocked. This ensures that the user notices the integrity violation.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
2284571127
Add test cases to KnownBlockVersionsTest
2016-06-26 22:15:52 -07:00
Sebastian Messmer
c84a230afd
VersionCountingBlockStore is initialized with a flag, saying whether missing blocks are integrity errors. This flag is meant to be activated in a single-client scenario to have this additional integrity check.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
e02021ecdc
Throw an IntegrityViolationError exception instead of just logging integrity violations. This makes sure the user notices.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
32001d0af3
Write another integrity test case
2016-06-26 22:15:52 -07:00
Sebastian Messmer
473e9cc8bb
Fix compiler errors
2016-06-26 22:15:52 -07:00
Sebastian Messmer
1a72d3c226
Deleting a block doesn't set the version number to MAX_UINT64, but just increases it by one. This makes sure, that if (in case of a synchronization conflict) the block is reintroduced by another client, this is accepted.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
5534b56ce3
When increasing the version number, don't only look at the version number in the block, but also at the last version number given to it by the current client. Ensure, the new version number is higher than both.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
577c697856
When a client deletes a block, it will never again accept it as a valid block.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
e7ac9bec57
Implement BlockStore::forEachBlock
2016-06-26 22:15:52 -07:00
Sebastian Messmer
4d1f7a46b9
* Prevent rollback to the "newest" version of a client when this version was superseded by a version from a different client.
...
* Use mutex/locks to secure access to KnownBlockVersions
2016-06-26 22:15:52 -07:00
Sebastian Messmer
ea3de7360c
* Block versions don't have to be globally nondecreasing, but only per client id. This solves potential synchronization conflicts in a multi-client setting.
...
* Use cpputils::Serializer and cpputils::Deserializer instead of std::ifstream for storing/loading the block version list
2016-06-26 22:15:52 -07:00
Sebastian Messmer
389273a24f
Test cases use a fake home directory for their configuration, so they don't clutter the actual home directory.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
13411c4e59
Integrity data from KnownBlockVersions is persisted to a file
2016-06-26 22:15:52 -07:00
Sebastian Messmer
d7f547dd47
Implement a VersionCountingBlockStore that checks that version numbers are nondecreasing. Currently, the block store is not used yet and the state is not stored over different runs of CryFS. This comes with future commits.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
da6390646e
Add test cases for command line parser when options are not given.
2016-06-26 22:15:43 -07:00
Sebastian Messmer
9358c10adf
Finish test cases for Block::resize()
2016-06-23 21:30:09 -07:00
Sebastian Messmer
acedbbd0c4
Fix EncryptedBlock::resize() and add test cases for it
2016-06-23 21:20:36 -07:00
Sebastian Messmer
e4501d51e5
Each file system gets a unique ID. This ID will later be used to store local configuration of a client for that file system.
2016-06-20 16:14:07 -07:00
Sebastian Messmer
354f72443e
Adapt test cases to new behavior from commit 2642507344
2016-06-07 12:52:06 -07:00
Sebastian Messmer
1bb38f39b4
* Fix FuseTest
...
* Refactor Fuse: shorter functions, and factor out common functionality of adding a fuse option into own method
2016-06-04 00:45:49 -07:00
Sebastian Messmer
40c64a879c
Hide fuse quirks inside the Fuse class.
...
fuse_main needs the program arguments as char ** instead of const char ** or (even better) vector<string>.
With this commit, we hide that inside the Fuse class. Everything outside handles these arguments as vector<string> and passes it as such to the Fuse class.
2016-05-09 16:07:02 -07:00
Sebastian Messmer
9a0b0a0c36
Ask before migrating an old CryFS file system to a new version.
2016-05-03 20:34:30 -07:00
Sebastian Messmer
9ed7bd0b41
Ciphertext blocks are split into subdirectories (before, all were on top level) to reduce number of files per directory. Some unix tools don't work well with directories with too many entries.
2016-04-29 12:21:02 -07:00
Sebastian Messmer
811c163bfa
Fix rename() when overwriting an existing file: (a) Keep the invariant that the list of directory entries is sorted and (b) delete the blob of the overwritten file
2016-04-25 17:42:17 -07:00
Sebastian Messmer
97bd758eb8
Fix test case on 32bit platform (caused by double inaccuracy)
2016-04-02 10:13:28 +02:00
Sebastian Messmer
4069358b31
Fix VersionCompare for stable versions vs tag versions
2016-03-29 11:07:00 +08:00
Sebastian Messmer
078ab78c5a
Removed unnecessary workaround
2016-03-26 23:42:07 +08:00
Sebastian Messmer
b9ac810414
- The version field in the config file is updated when the file system is opened with a newer CryFS version (i.e. it is migrated to the newer version).
...
- We introduced a CreatedWithVersion field instead which gets the semantics the version field had before (i.e. which version of CryFS was the file system originally created with)
- Move VersionCompare to gitversion package
2016-03-27 00:09:07 +08:00
Sebastian Messmer
18d05d165e
Use --blocksize instead of --blocksize-bytes, so we can (later) allow users to write "--blocksize 2M"
2016-03-24 06:45:41 +00:00
Sebastian Messmer
1c0199e147
When the user specifies a block size for the file system, this is taken as the physical block size, not virtual block size.
2016-03-16 19:30:26 +00:00
Sebastian Messmer
037b59634e
Implemented BlockStore::blockSizeFromPhysicalBlockSize. This will be used to let the user configure physical block size instead of virtual block size.
2016-03-16 18:56:06 +00:00
Sebastian Messmer
526b749d1d
Add a command line option for blocksize
2016-03-04 23:12:41 +01:00
Sebastian Messmer
5579270108
Handle fallback version "0+unknown" correctly
2016-03-02 14:39:30 +01:00
Sebastian Messmer
b7b7d47a8d
Add test cases for the version number of dirty release versions
2016-03-02 13:57:40 +01:00
Sebastian Messmer
5753e4f71c
Switch to new git version number recognition
2016-03-02 13:53:37 +01:00
Sebastian Messmer
3254220987
Filesystems have a blocksizeBytes configuration option
2016-03-01 17:45:48 +01:00
Sebastian Messmer
e48188f470
Restructure project to allow factoring out a library
2016-02-23 21:07:23 +01:00
Sebastian Messmer
d5a0b725fe
Refactor interface for key derivation functions. This allows easily adding new (password based) key derivation functions.
2016-02-22 02:38:06 +01:00
Sebastian Messmer
d95cc33a58
You can disable the automatic update check by setting CRYFS_NO_UPDATE_CHECK=true in your environment.
2016-02-21 22:15:27 +01:00
Sebastian Messmer
9c83d3b2a4
If CRYFS_FRONTEND=noninteractive is set in the environment, assume we're used by a tool and:
...
- Don't ask for config. Use default settings for everything that is not specified as command line parameter.
- Don't ask for password confirmation. Password only has to be passed in once to stdin.
2016-02-21 01:36:14 +01:00
Sebastian Messmer
346baf8e9b
Only show update check warning if version on server is actually newer
2016-02-20 18:23:46 +01:00
Sebastian Messmer
bf92588491
Fix parallelaccessstore-test dependencies
2016-02-17 19:39:34 +01:00
Sebastian Messmer
3bd43506c2
Fix test cases
2016-02-15 18:47:45 +01:00
Sebastian Messmer
2347782f6a
Fix test cases for Release builds: The -O3 optimization step seems to cause segfaults on implicit integer overflows, so make the wanted overflows explicit in FakeAuthenticatedCipher.
2016-02-15 05:00:30 +01:00
Sebastian Messmer
63d0b2b29d
Fix compiling test cases on Debian
2016-02-14 18:17:37 +01:00
Sebastian Messmer
b324ec5221
Fix compile on Debian 8 (link it to a library it wants)
2016-02-14 17:09:14 +01:00
Sebastian Messmer
80b113f0f1
Fix some more fuse tests
2016-02-14 02:23:54 +01:00
Sebastian Messmer
190d465cf3
Fix other lstat test cases on Mac OS
2016-02-14 02:09:58 +01:00
Sebastian Messmer
6d3fe14c9e
Fix fspp lstat tests on Mac OS X
2016-02-14 01:54:36 +01:00
Sebastian Messmer
fcf817fbdd
Work around timing bug in OS X test cases
2016-02-14 01:18:19 +01:00
Sebastian Messmer
33c950e978
Fix Mock file system setup on Mac OS X
2016-02-14 01:01:59 +01:00
Sebastian Messmer
c0d0efd058
Fix compiler error in test cases on Mac OS X
2016-02-13 20:42:28 +01:00
Sebastian Messmer
636445cd82
Introduce version flags for file system entities to allow future CryFS versions to be backwards-compatible even if the format changes.
2016-02-13 15:06:28 +01:00
Sebastian Messmer
1fd2cac9cd
Adapt test cases to the removal of --extpass parameter
2016-02-13 11:38:56 +01:00
Sebastian Messmer
fff5b4b6e9
Make CPack work with new repository layout
2016-02-11 17:34:08 +01:00
Sebastian Messmer
c6e8052d93
Merge all git repositories into one
2016-02-11 16:40:48 +01:00
Sebastian Messmer
31672e086c
Fix includes after merging repositories
2016-02-11 15:19:58 +01:00
Sebastian Messmer
31d52d3c8d
Merged blobstore repository
2016-02-11 14:50:18 +01:00
Sebastian Messmer
f3d614c633
Merged blockstore
2016-02-11 14:44:28 +01:00
Sebastian Messmer
4202e6be89
Merge parallelaccessstore repository
2016-02-11 14:22:18 +01:00
Sebastian Messmer
59474b10b6
Handle vendor libraries better in cmake
2016-02-11 14:01:59 +01:00
Sebastian Messmer
9088a3d366
Use lowercase for cmake function definitions and rename add_boost/enable_style_warnings/activate_cpp14 to target_add_boost/target_enable_style_warnings/target_activate_cpp14
2016-02-11 12:57:50 +01:00
Sebastian Messmer
1dcf36d38c
Move fspp to its own subdirectories
2016-02-11 12:53:42 +01:00
Sebastian Messmer
0fb710ac69
Merge fspp repository into here
2016-02-11 12:14:44 +01:00
Sebastian Messmer
92cf6fa66d
Refactor directory layout to allow other modules in same repository
2016-02-11 12:04:49 +01:00
Sebastian Messmer
ee702471f0
Switch to plain cmake, no biicode anymore.
2016-02-10 00:58:03 +01:00
Sebastian Messmer
9fcc54d8b1
Test cases for new utimens interface
2016-02-09 09:36:07 +01:00
Sebastian Messmer
c4d975260e
When running tests, don't actually send http requests from version checker, but mock the http service.
2016-01-28 17:55:26 +00:00
Sebastian Messmer
80c00974e2
Use https for version checker
2016-01-28 17:55:02 +00:00
Sebastian Messmer
29065746c2
If the given base or mount directory doesn't exist, offer to create them
2016-01-25 15:01:34 +01:00
Sebastian Messmer
af4ef5d425
Offer a default configuration when creating new filesystems
2016-01-25 14:33:40 +01:00
Sebastian Messmer
36cac2f3da
Don't print a newline before asking i/o questions
2016-01-25 14:20:16 +01:00
Sebastian Messmer
e5a2cec5ea
Added test case for CryConfigConsole
2016-01-25 14:03:32 +01:00
Sebastian Messmer
16bdbcc2ca
Refactor CryConfigCreator (factor out CryConfigConsole). This is preparation for adding a 'use default config' question.
2016-01-17 14:57:40 +01:00
Sebastian Messmer
199552f42d
If joining FuseThread fails, don't hang but fail an assertion
2015-12-16 00:20:38 +01:00
Sebastian Messmer
19f4d8bae5
Fix warning on 32bit compilers
2015-12-14 19:26:19 +01:00
Sebastian Messmer
1337e2db4b
Reduce memory consumption of BibBlogsTest further
2015-12-14 18:48:11 +01:00
Sebastian Messmer
1d8fdfa0e2
Since the memory issue is fixed now (using a compressed block store), we can re-enable the test cases
2015-12-14 18:19:40 +01:00
Sebastian Messmer
7a43c41787
Use a compressing blockstore for BigBlobsTest. This way, we don't need that much RAM for running it (the big blobs created by the test case are mostly just zero and some few non-zero data areas)
2015-12-14 17:18:12 +01:00
Sebastian Messmer
b8a017b09c
Add CompressingBlockStore
2015-12-14 17:17:16 +01:00
Sebastian Messmer
337c338c61
Add Block::resize()
2015-12-14 17:16:54 +01:00
Sebastian Messmer
1cdaf8e08d
Fixed compiler error on 32bit platforms
2015-12-13 13:30:05 +01:00
Sebastian Messmer
ff812abf79
Removed nonsensical std::log() testcase
2015-12-11 12:44:20 +01:00
Sebastian Messmer
a68446f983
Comment out failing test cases instead of DISABLING them. Disabling is reserved for working, but slow tests
2015-12-11 12:31:57 +01:00
Sebastian Messmer
1ecabdabeb
Disabled BigBlob tests, because they need a lot of time and space
2015-12-11 12:31:09 +01:00
Sebastian Messmer
1121467b31
Fix test cases
2015-12-11 00:46:24 +01:00
Sebastian Messmer
38c56f6764
Support blob sizes >4GB and add test cases for it
2015-12-11 00:18:17 +01:00
Sebastian Messmer
afd900944a
Compiles on Mac OS X
2015-11-30 13:52:26 +01:00
Sebastian Messmer
c6658839e0
Test cases run successfully on Mac OS X
2015-11-30 03:17:19 +01:00
Sebastian Messmer
741be2b08f
Reduce memory usage of tests
2015-11-29 21:32:12 +01:00
Sebastian Messmer
f670b0f80c
Specify "override" when function is override
2015-11-28 16:50:25 +01:00
Sebastian Messmer
31d8dc04f4
Remove strange self-initialization in test case
2015-11-28 16:44:14 +01:00
Sebastian Messmer
f8260ce45f
Make CallAfterTimeoutTest less flaky
2015-11-27 22:27:20 +01:00
Sebastian Messmer
5eab16b360
Reduce memory usage of test cases to make it run on travis correctly
2015-11-27 20:59:11 +01:00
Sebastian Messmer
1222cd8de6
Fix test cases for older libfuse versions
2015-11-27 17:43:21 +01:00
Sebastian Messmer
e542529104
Fix test cases
2015-11-27 15:18:33 +01:00
Sebastian Messmer
6227764858
Make classes final if they're not meant to be derived from
2015-11-27 14:05:48 +01:00
Sebastian Messmer
347e3584ee
Make CallAfterTimeoutTest less flaky
2015-11-26 16:40:45 +01:00
Sebastian Messmer
ee89bb7ffb
Add larger margins to CallAfterTimeoutTest
2015-11-25 22:43:13 +01:00
Sebastian Messmer
38d24bd689
Compatibility with 32bit systems
2015-11-25 16:36:57 +01:00
Sebastian Messmer
83cac1e32d
Compatibility with 32bit systems
2015-11-25 15:39:52 +01:00
Sebastian Messmer
529b888048
Code is compatible with gcc 4.8
2015-11-24 14:42:20 +01:00
Sebastian Messmer
fb733929d8
Code is compatible with gcc 4.8
2015-11-24 14:39:41 +01:00
Sebastian Messmer
c646bb848d
Code is compatible with GCC 4.8
2015-11-24 14:33:17 +01:00
Sebastian Messmer
68675c6212
- Move HttpClient to cpputils
...
- Fix VersionChecker behaviour when the returned json is invalid
- Add test cases for VersionChecker
2015-11-24 08:08:11 +01:00
Sebastian Messmer
feb806b392
Add HttpClient
2015-11-24 07:47:29 +01:00
Sebastian Messmer
5b76a11388
When creating a new filesystem, ask password twice (second time for confirmation)
2015-11-19 10:08:09 +01:00
Sebastian Messmer
a4c92848be
Fix handling of relative paths and add test cases
2015-11-18 11:01:48 +01:00
Sebastian Messmer
90ea7be899
Make timing test cases more lenient
2015-11-12 15:39:52 -08:00
Sebastian Messmer
1e52e78251
Fix compiler error in test cases
2015-11-12 15:31:11 -08:00
Sebastian Messmer
978e7dbc46
--unmount-idle x automatically unmounts the filesystem after x minutes without a filesystem operation.
2015-11-12 15:06:53 -08:00
Sebastian Messmer
4dab8c7426
Add a class that runs a callback after a (resettable) timeout. This will be used later for unmounting after a certain idle time
2015-11-12 13:08:43 -08:00
Sebastian Messmer
938528840b
Added --unmount-idle command line option (without functionality yet)
...
And refactor cli (group Cli class and program_options in cli subfolder)
2015-11-12 11:43:39 -08:00
Sebastian Messmer
30ae2fc45c
Added test cases
2015-11-12 10:59:38 -08:00
Sebastian Messmer
09f6b48710
Add a compatibility test ensuring that it can load config files from version 0.8.1 in future
2015-11-11 18:10:56 -08:00
Sebastian Messmer
9793b0e870
Added test cases for CryConfigEncryptorFactory
2015-11-11 17:10:02 -08:00
Sebastian Messmer
10cbb06a4b
Added test cases for CryConfigEncryptor
2015-11-11 14:33:39 -08:00
Sebastian Messmer
f90196826b
Added test cases for outer config file encryption
2015-11-11 11:58:09 -08:00
Sebastian Messmer
923cd40acf
Add a test case that loading a filesystem doesn't modify the config file
2015-11-11 11:22:46 -08:00
Sebastian Messmer
d003b7f0c5
Added test cases for inner config file encryption
2015-11-11 11:03:05 -08:00
Sebastian Messmer
669e71c056
Inner encryption of configuration file uses the cipher specified by the user
2015-11-11 01:19:47 -08:00
Sebastian Messmer
0b7182f095
Make test cases faster by using SCrypt::TestSettings
2015-11-03 20:27:00 -08:00
Sebastian Messmer
5575509594
New way to configure SCrypt algorithm
2015-11-03 20:13:23 -08:00
Sebastian Messmer
2f5d28440e
Hide output of fusermount in test cases
2015-11-03 13:10:56 -08:00