Commit Graph

734 Commits

Author SHA1 Message Date
Sebastian Messmer
dbf54b9563 Add test cases for BlockStore2 and fix existing BlockStore2 implementations 2017-02-21 22:27:46 +00:00
Sebastian Messmer
cab1c71cac Merge from develop 2017-02-04 19:18:00 +00:00
Sebastian Messmer
9a304fc52b Upgrade spdlog to 0.11.0 2017-02-04 19:03:20 +00:00
Sebastian Messmer
42765c6be6 Merge from develop 2017-01-21 20:24:09 +00:00
Sebastian Messmer
e37d84a3d6 fspp::Dir, fspp::File and fspp::Symlink don't inherit from fspp::Node anymore. This allows file systems to return a generic fspp::Node instead of a concrete subclass when the operation doesn't need to know what type of node it is. 2017-01-21 19:16:35 +00:00
Sebastian Messmer
f0f4499200 Fix test cases 2016-09-25 20:05:38 +02:00
Sebastian Messmer
58d6a454d7 Merge branch 'develop' into next 2016-09-25 11:41:33 +02:00
Sebastian Messmer
54fb6fbd89 Fix test cases 2016-09-25 11:41:21 +02:00
Sebastian Messmer
5ff51cb358 Merge branch 'develop' into next 2016-09-25 03:01:42 +02:00
Sebastian Messmer
8ae2dee7fc Fix test cases 2016-09-25 03:01:29 +02:00
Sebastian Messmer
e009040264 Merge from develop 2016-09-25 02:53:35 +02:00
Sebastian Messmer
443298844e Fix test cases 2016-09-25 02:50:28 +02:00
Sebastian Messmer
bcf9d3c55d Merge branch 'develop' into next 2016-09-24 20:48:47 +02:00
Sebastian Messmer
f79b80cc56 Fix test case 2016-09-24 20:47:53 +02:00
Sebastian Messmer
b027f8c007 Merge from develop 2016-09-24 20:43:54 +02:00
Sebastian Meßmer
d00151af37 Disable Mars448 test cases when Mars448 is not available and fix Travis CI. (#92) 2016-09-24 19:09:30 +02:00
Sebastian Messmer
378e259eee Fix assert_release_test 2016-09-24 17:05:45 +02:00
Sebastian Messmer
11a85ed29f Allow building with -DCRYFS_UPDATE_CHECKS=off, which will create an executable with disabled update checks (the alternative to disable them in the environment also still works). 2016-09-24 13:16:26 +02:00
Sebastian Messmer
116a90be6d Fix compiler warnings 2016-09-24 11:41:19 +02:00
Sebastian Messmer
32f06f288a Fix tree traversal and add test case for it 2016-09-07 22:25:18 +02:00
Sebastian Messmer
904e3dd7a1 Merge 2016-09-07 22:07:56 +02:00
Sebastian Messmer
ea349cf79b Fix traversal bug and add test case for it 2016-09-07 19:02:41 +02:00
Sebastian Messmer
f4b1a7eced Fix assert test cases 2016-07-22 14:10:21 +02:00
Sebastian Messmer
a4ce49aef4 Fix unique_ref test cases 2016-07-22 14:07:06 +02:00
Sebastian Messmer
bbdd8a548b Special case treatment for traversals until exactly the last leaf has to load the last leaf to grow it. Before this commit, we just always loaded the last traversed leaf and checked its size. Now we only do so if it's the right border leaf. This saves us loading some leaves. 2016-07-17 10:16:09 +02:00
Sebastian Messmer
eab7cb1df4 Implement BlockStore::overwrite(). This is the last step in ensuring that the write() call doen't have to load leaves if they're only overwritten anyhow. 2016-07-16 11:42:06 +02:00
Sebastian Messmer
d80b95514e Traversal doesn't load leaves, but returns the key. This way, the write() call can (after a future commit) write to full leaves without loading them beforehand. 2016-07-15 20:12:24 +02:00
Sebastian Messmer
582917c1f5 Improve code decreasing tree depth 2016-07-15 16:23:00 +02:00
Sebastian Messmer
b1b90b8c3d Further reduce number of nodes loaded when deleting a tree and write test cases for it 2016-07-15 15:42:34 +02:00
Sebastian Messmer
6fc62a58fa Removed unneeded include 2016-07-15 12:51:29 +02:00
Sebastian Messmer
c428d5642a Minimize number of Block::write() calls when creating new nodes in a traversal. Also add test cases for it. 2016-07-15 12:48:20 +02:00
Sebastian Messmer
d626349802 Finish MockBlockStore to also collect other performance metrics, and implement the standard block store tests for it. 2016-07-15 10:23:09 +02:00
Sebastian Messmer
622416bc4d Add test cases for traverse performance 2016-07-15 01:03:41 +02:00
Sebastian Messmer
4e689f2411 Add test case ensuring that leaves aren't loaded on delete 2016-07-14 23:38:17 +02:00
Sebastian Messmer
41146282ca Add test cases for tree traversal 2016-07-14 11:41:49 +02:00
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
Sebastian Messmer
eeb92debe6 Make test cases non-interacative by using --extpass option 2015-11-03 13:02:04 -08:00
Sebastian Messmer
a5ff0f45d6 - Add --extpass command line option
- Make test cases faster by specifying key random generator to use pseudorandom
2015-11-03 12:22:35 -08:00
Sebastian Messmer
8b585c39fe Renamed daemon folder to process and added Subprocess class to it 2015-11-03 12:20:15 -08:00
Sebastian Messmer
9aee4b1657 Added success tests 2015-11-02 12:20:10 -08:00
Sebastian Messmer
4d6970837e Speedup test cases by using scrypt test config 2015-10-31 17:23:14 +01:00
Sebastian Messmer
d25d51f195 Fixed some issues in the not-yet-used success tests 2015-10-30 22:24:18 +01:00
Sebastian Messmer
6bbdc1be3d Add sanity checks for mount directory 2015-10-30 22:01:42 +01:00
Sebastian Messmer
fdf866a562 Since fork() issue with our threads is solved, use libFuse damonization again 2015-10-30 21:40:38 +01:00
Sebastian Messmer
030adc4b89 TODOs 2015-10-30 20:14:23 +01:00
Sebastian Messmer
bdb6de1c4a Add --cipher and --ciphers command line options 2015-10-30 19:53:15 +01:00
Sebastian Messmer
d731ecf6a6 On startup, check read/write permissions for base directory and fail if permissions missing 2015-10-30 18:28:33 +01:00
Sebastian Messmer
e46fb04c58 Removed debug output from test cases 2015-10-30 17:24:44 +01:00
Sebastian Messmer
a37c1af761 Check that base directory is not inside mount directory 2015-10-30 17:23:08 +01:00
Sebastian Messmer
b7af7ca2f2 Add a sanity check that mountdir can't be equal to rootdir 2015-10-29 20:17:52 +01:00
Sebastian Messmer
c572e7f353 Add a test configuration running cryfs in foreground 2015-10-29 20:00:59 +01:00
Sebastian Messmer
f42eefbc6b Refactor CliTest_WrongEnvironment into a parametrized test 2015-10-29 19:55:26 +01:00
Sebastian Messmer
a358ae859a Refactor Cli test cases 2015-10-29 19:35:22 +01:00
Sebastian Messmer
cdf0025b15 If basedir doesn't exist, immediately quit with error message. Also added test case for this behaviour. 2015-10-29 16:04:20 +01:00
Sebastian Messmer
49c2fe3902 Move Cli (command line interface) to own class and write first test case for it 2015-10-29 10:47:14 +01:00
Sebastian Messmer
dd4c9cbf4b Since our threads now work well with fork(), we can remove the workarounds 2015-10-28 15:27:30 +01:00
Sebastian Messmer
c4dfd55c39 Because LoopThread now works fine with fork(), we don't have to specify this a DeathTest 2015-10-28 15:20:55 +01:00
Sebastian Messmer
3e01c56ad4 Add Cipher::NAME to CipherConcept 2015-10-28 01:49:12 +01:00
Sebastian Messmer
926d1ce7a4 Allow Cipher::NAME (e.g. AES256_GCM::NAME) 2015-10-28 01:41:38 +01:00
Sebastian Messmer
0d5a7d9d10 Adapt to cpputils crypto library 2015-10-27 23:46:54 +01:00
Sebastian Messmer
22a3c90d54 Moved ciphers to cpputils 2015-10-27 23:27:40 +01:00
Sebastian Messmer
c50371d583 Add symmetric ciphers to crypto lib 2015-10-27 23:19:20 +01:00
Sebastian Messmer
1f86f83ca1 Fix test cases 2015-10-27 23:19:11 +01:00
Sebastian Messmer
340bbf842e Moved crypto classes to cpputils 2015-10-27 22:19:40 +01:00
Sebastian Messmer
7b269a1184 Added a crypto library with scrypt key derivation function and random padding 2015-10-27 22:19:06 +01:00
Sebastian Messmer
88262c3ef9 Make SCrypt config modifiable and speed up test cases by using a special test config 2015-10-27 13:28:42 +01:00
Sebastian Messmer
aceeb2644f Refactor folder structure and put classes in own files 2015-10-26 18:14:27 +01:00
Sebastian Messmer
fd184b45d2 Refactor CryConfigEncryptor: Store instance instead of static 2015-10-26 16:36:57 +01:00
Sebastian Messmer
248f0b0d61 FixedSizeData::take/drop() 2015-10-26 12:15:11 +01:00
Sebastian Messmer
90ecee252e Fix DeathTest 2015-10-25 19:13:33 +01:00
Sebastian Messmer
4164c2353e Graceful exiting when password is wrong 2015-10-25 19:00:30 +01:00
Sebastian Messmer
25db4064b7 Use EXPECT_EXIT instead of EXPECT_DEATH 2015-10-25 18:42:49 +01:00
Sebastian Messmer
daa4f0a7f3 CryConfigEncryptor more thoroughly uses Serializer/Deserializer interface 2015-10-25 17:01:28 +01:00
Sebastian Messmer
cde1a3b7b9 Refactor CryConfigEncryptor 2015-10-25 11:33:30 +01:00
Sebastian Messmer
868e12183a Fix Usage line when called with --help and fix test cases 2015-10-24 20:02:43 +02:00
Sebastian Messmer
61ca163339 If a configuration file is not specified on command line, it will be put into the base directory 2015-10-24 19:56:05 +02:00
Sebastian Messmer
371303ae6a Config file is AES256_GCM encrypted, the config file key is generated with scrypt 2015-10-24 19:35:37 +02:00
Sebastian Messmer
7988cc406d Added serialization/deserialization of DerivedKeyConfig 2015-10-24 12:25:49 +02:00
Sebastian Messmer
8741853eef Added key derivation function scrypt 2015-10-24 01:57:17 +02:00
Sebastian Messmer
20b0034ab1 - Refactor main()
- Added CryConfigLoaderTest
2015-10-23 12:16:23 +02:00
Sebastian Messmer
39c62ae185 Added test case for CryConfigFile 2015-10-23 00:04:03 +02:00
Sebastian Messmer
c936fca16a Added test cases for CryConfigCreator 2015-10-22 18:48:14 +02:00
Sebastian Messmer
9bf83a6fe7 Adapted to new key creation interface 2015-10-22 18:48:04 +02:00
Sebastian Messmer
caaf528031 Refactor key creation 2015-10-22 18:19:59 +02:00
Sebastian Messmer
62549eeae6 Adapt to new cpputils::Random interface 2015-10-22 17:41:43 +02:00
Sebastian Messmer
ca5edb48db Refactor random library 2015-10-22 17:36:03 +02:00
Sebastian Messmer
9b1152348e Added test cases for CryConfig 2015-10-21 17:08:15 +02:00
Sebastian Messmer
d8e0465954 Added test cases for CryCipher 2015-10-19 14:22:01 +02:00
Sebastian Meßmer
d629e14533 Add include tests 2015-10-18 01:09:49 +02:00
Sebastian Meßmer
a3f557ef63 Fix warnings from -Weffc++ 2015-10-17 21:17:38 +02:00
Sebastian Meßmer
a4ce9f1c97 Fix warnings from -Weffc++ 2015-10-17 21:10:26 +02:00
Sebastian Meßmer
0c8b3e69a8 Disabled failing test 2015-10-17 20:37:57 +02:00
Sebastian Meßmer
97fce00391 Fixed warnings from -Weffc++ 2015-10-17 20:35:17 +02:00
Sebastian Meßmer
8b429bac9a Fix warnings from -Weffc++ 2015-10-17 20:15:20 +02:00
Sebastian Meßmer
490936d29d Fix test cases 2015-10-17 19:38:24 +02:00
Sebastian Meßmer
afc0f909b3 Use logging instead of cout/cerr 2015-10-17 17:23:35 +02:00
Sebastian Meßmer
05f9723295 Default logger logs to stderr, not stdout 2015-10-17 16:49:58 +02:00
Sebastian Meßmer
08c09e4af8 Add a fork test case for logging 2015-10-17 16:42:56 +02:00
Sebastian Meßmer
9f9b4fc342 Add test cases for logging 2015-10-17 15:49:54 +02:00
Sebastian Meßmer
7f7e27d6a3 Removed debug output 2015-10-17 03:28:05 +02:00
Sebastian Meßmer
bb90bb19ba Fix death tests in multithreading context 2015-10-16 04:06:00 +02:00
Sebastian Meßmer
39eaff4533 Unify (and fix) include guards 2015-10-15 13:10:20 +02:00
Sebastian Meßmer
821550e62f Unify (and fix) include guards 2015-10-15 13:09:21 +02:00
Sebastian Meßmer
5f9c2c0611 Unify (and fix) include guards 2015-10-15 13:06:51 +02:00
Sebastian Meßmer
c9663acd85 Unify (and fix) include guards 2015-10-15 13:04:57 +02:00
Sebastian Meßmer
02d89fa721 Unify (and fix) include guards 2015-10-15 12:58:16 +02:00
Sebastian Meßmer
7103b3ab07 Fix test cases 2015-10-15 05:26:05 +02:00
Sebastian Messmer
210c2c2811 Fix compiler error in test cases 2015-10-08 18:05:09 +02:00
Sebastian Messmer
2a938730e7 Test cases print stack trace on sigsegv 2015-10-05 16:56:53 +02:00
Sebastian Messmer
cc2f93af92 Test cases print stack trace on sigsegv 2015-10-05 16:54:41 +02:00
Sebastian Messmer
d47020e781 Test cases print stack trace on sigsegv 2015-10-05 16:52:49 +02:00
Sebastian Messmer
58f7024919 Test cases print stack trace on sigsegv 2015-10-05 16:52:06 +02:00
Sebastian Messmer
78dbe6ea24 Test cases print stack trace on sigsegv 2015-10-05 16:51:49 +02:00
Sebastian Messmer
e78cd1db91 Demangle backtrace 2015-10-05 14:58:16 +02:00
Sebastian Messmer
6dec27253c Fix assert test case 2015-10-03 01:30:42 +02:00
Sebastian Messmer
3fed6f13cb Removed testcases for constexpr 2015-10-03 01:01:48 +02:00
Sebastian Messmer
84330b1100 Cache has better parallelity - we can push()/pop() while it is flushing and flushing is actually parallel 2015-10-01 13:51:01 +02:00
Sebastian Messmer
90471ea6a3 Fixed Cache race condition and added test for it 2015-10-01 01:20:40 +02:00
Sebastian Messmer
e07ddaa289 Fix traversing bug and add test case for it 2015-09-30 15:33:09 +02:00
Sebastian Messmer
52bb855627 EncryptedBlockStore crashed when a modified block was removed. Fixed crash and added test case. 2015-09-29 18:51:59 +02:00
Sebastian Messmer
dfb030e51b Config file is also configurable with an option 2015-09-29 14:39:10 +02:00
Sebastian Messmer
27d3ffc472 MountDir and BaseDir are configureable via command line 2015-09-29 14:29:10 +02:00
Sebastian Messmer
819e48b446 Allow outputting const_string to std::ostream 2015-09-18 22:08:56 +02:00
Sebastian Messmer
12f1e7983b Use messmer/gitversion instead of own version parser code 2015-09-18 21:16:42 +02:00
Sebastian Messmer
fc7316f06c Show number of commits and git id in version number if it is a dev version 2015-09-18 17:34:56 +02:00
Sebastian Messmer
4cf1237bb8 Moved constexpr string manipulations to cpputils::const_string 2015-09-18 17:09:04 +02:00
Sebastian Messmer
3573a6fa74 Added const_string class (constexpr string manipulations) 2015-09-18 17:08:26 +02:00
Sebastian Messmer
3fd5cb7afc Show version information on console and warn if it is a nonstable or dev version 2015-09-17 14:12:51 +02:00
Sebastian Messmer
8db80d5ebf Refactor directory structure 2015-09-12 20:16:13 +02:00
Sebastian Messmer
67f0f39b50 Added Console class 2015-09-12 20:07:44 +02:00
Sebastian Messmer
117930fad2 Print a newline around user interactions 2015-09-04 16:09:37 +02:00
Sebastian Messmer
a9a5a5d04d Console class supports askYesNo(question) 2015-09-04 16:00:41 +02:00
Sebastian Messmer
aea84d9ef5 Added more ciphers 2015-08-31 23:04:56 +02:00
Sebastian Messmer
e96bb17e11 Removed unnecessary workaround 2015-07-29 12:07:25 +02:00
Sebastian Messmer
5607a51594 Added testcase for Console.print() 2015-07-26 13:13:36 +02:00
Sebastian Messmer
fd11436fb9 Test cases don't need user interaction anymore 2015-07-26 13:09:55 +02:00
Sebastian Messmer
69a413bf4b Fix EitherTest 2015-07-25 15:17:27 +02:00
Sebastian Messmer
50503d9ce0 Renamed Either to either 2015-07-24 20:08:03 +02:00
Sebastian Messmer
d9cfa55b91 Use ASSERT from cpputils instead of fspp_assert 2015-07-22 13:48:53 +02:00
Sebastian Messmer
106f18b496 Use the new assert that doesn't crash the program in a release build 2015-07-22 13:44:04 +02:00
Sebastian Messmer
fd93e4c199 Use the new assert that doesn't crash the program in a release build 2015-07-22 13:42:07 +02:00
Sebastian Messmer
cce24dd64b Implemented ASSERT macro 2015-07-22 13:39:38 +02:00
Sebastian Messmer
7dcb29d515 Implemented fspp_assert() 2015-07-21 19:45:44 +02:00
Sebastian Messmer
881c19c262 Fix missing usings 2015-07-21 18:31:28 +02:00
Sebastian Messmer
e5647ace48 Remove unneccessary using statements 2015-07-21 18:22:55 +02:00
Sebastian Messmer
492caeb418 Migrate from unique_ptr to unique_ref 2015-07-21 18:22:03 +02:00
Sebastian Messmer
37bdbd907a Finished migrating to unique_ref instead of unique_ptr 2015-07-21 18:19:34 +02:00
Sebastian Messmer
e64255a16e Removed last unique_ptr uses, all uses unique_ref now 2015-07-21 15:24:49 +02:00
Sebastian Messmer
b5d9f07f7a Implement cpputils::destruct(unique_ref) 2015-07-21 15:23:21 +02:00
Sebastian Messmer
e9c461e328 optional_ownership_ptr works with unique_ref 2015-07-21 15:18:14 +02:00
Sebastian Messmer
a923165360 Adapted to new blockstore interface (using unique_ref instead of unique_ptr) 2015-07-21 15:00:57 +02:00