Sebastian Messmer
0af087c120
Fix clang warning
2017-10-02 08:01:38 +01:00
Sebastian Messmer
0a7fce6701
Improve CryConfigLoaderTest
2017-09-30 22:44:24 +01:00
Sebastian Messmer
04341f3f7d
Add test cases that make sure that CryFS notices if an attacker replaces the whole file system
2017-09-30 22:42:34 +01:00
Sebastian Messmer
be8a1efd35
Improve test cases
2017-09-30 22:24:33 +01:00
Sebastian Messmer
7e01e84d35
Fix accidental change from last commit
2017-09-30 21:35:02 +01:00
Sebastian Messmer
85759961ef
Don't keep update check connection open after update check is finished
2017-09-30 18:53:03 +01:00
Sebastian Messmer
bd34a04d0c
Fix test cases
2017-09-30 09:30:31 +01:00
Sebastian Messmer
be9f7a4c3d
Don't pollute users local state dir when running test cases
2017-09-30 09:18:46 +01:00
Sebastian Messmer
011c6d26ce
Don't pollute users local state dir when running test cases
2017-09-30 09:03:19 +01:00
Sebastian Messmer
7a5b23db13
Remember hashed filesystem key in local state so attacker can't replace it
2017-09-30 08:49:24 +01:00
Sebastian Messmer
9fc8b257a0
Fix CI
2017-09-28 21:15:51 -07:00
Sebastian Messmer
9cc3697e1b
Fix CI build
2017-09-28 15:13:03 -07:00
Sebastian Messmer
49719e3e66
Use config file instead of dir for basedir metadata
2017-09-28 08:19:30 +01:00
Sebastian Messmer
aace4c2f13
Check that filesystem id didn't change since we loaded the basedir the last time
2017-09-28 07:41:08 +01:00
Sebastian Messmer
26b3b366c9
Use local state file instead of myClientId file
2017-09-23 20:17:05 +01:00
Sebastian Messmer
9fdefaa4e0
Remove BlockStoreWithRandomKeys
2017-09-18 20:42:07 +01:00
Sebastian Messmer
5458af7c52
Rename blockstore::Key -> blockstore::BlockId
2017-09-17 02:07:27 +01:00
Sebastian Messmer
10e11f67e2
Make blockstore::Key more typesafe
2017-09-17 00:10:53 +01:00
Sebastian Messmer
f7c089ba47
Fix clang 5.0 compiler warnings
2017-09-16 17:45:15 +01:00
Sebastian Messmer
5299be5dda
Wire through the missingBlockIsIntegrityViolation setting
2017-09-16 16:49:33 +01:00
Sebastian Messmer
b6ce7c3ae4
Allow disabling integrity checks on command line
2017-09-16 16:18:53 +01:00
Sebastian Messmer
ab0a83917f
Only run compatibility unit tests in compatibility mode
2017-09-16 01:23:40 +01:00
Sebastian Messmer
f6b6875bb2
Rename VersionCountingBlockStore -> IntegrityBlockStore
2017-09-16 00:18:58 +01:00
Sebastian Messmer
00d098952b
Storing block ID is job of VersionCountingBlockStore, not EncryptedBlockStore.
2017-09-16 00:09:15 +01:00
Sebastian Messmer
0ec081750e
Fix test cases
2017-09-11 14:37:06 +01:00
Sebastian Messmer
9516d4facc
Further compatibility fixes for GCC 4.8
2017-09-10 14:27:14 +01:00
Sebastian Messmer
7e56c46bb0
CryFS tells the operating system to not swap the encryption key to the disk (note: this is best-effort and cannot be guaranteed. Hibernation, for example, will still write the encryption key to the disk)
2017-09-05 00:43:43 +01:00
Sebastian Messmer
06e8fc15d4
Fix test case build
2017-09-05 00:38:24 +01:00
Sebastian Messmer
bc46bc88e9
Fix some issues with fspp-test on Mac OS X
2017-08-25 00:14:16 +01:00
Sebastian Messmer
f951f41877
Fix cryfs-cli-test on Mac OS X
2017-08-24 23:43:35 +01:00
Sebastian Messmer
679b14a4d8
* Allow mounting using system mount tool and /etc/fstab (e.g. mount -t fuse.cryfs basedir mountdir)
...
* Pass fuse options directly to cryfs (i.e. 'cryfs basedir mountdir -o allow_other' instead of 'cryfs basedir mountdir -- -o allow_other')
2017-08-23 09:56:03 +01:00
Sebastian Messmer
ffc0b5195c
- Fix CachingBlockStore2_Specific test cases to actually test CachingBlockStore2
...
- Remove old CachingBlockStore
2017-08-22 00:03:04 +01:00
Sebastian Messmer
509bf6cc26
Fix CachingBlockStore2 and add test case for it
2017-08-21 23:09:43 +01:00
Sebastian Messmer
4add7f3d80
Start implementing new cache
2017-08-21 22:44:35 +01:00
Sebastian Messmer
a45c0bf29a
Fix merge conflict
2017-08-20 01:12:28 +01:00
Sebastian Messmer
ff34049787
Merge branch 'next' into newblockstore
2017-08-19 11:54:01 +01:00
Sebastian Messmer
ade23f9b86
Merge branch 'develop' into next
2017-08-19 11:53:22 +01:00
Mouse
7abed14d63
Make compatible with the current Crypto++ master ( #163 )
...
* Make compatible with the current Crypto++ master
* Add auto-config and build script. Not important, just a time-saver.
* Address compatibility with Crypto++ 6.0 release, while maintaining compatibility
with the older Crypto++ releases.
* Polish comments in cryptopp_byte.h. Forgot to include it to RandomGeneratorThread - fixed.
* Late at night - forgot to fix the .cpp files that used ::byte...
* Renamed auto-config-and-run script
* Added comments/description, and commented out "make check" that fails anyway
* Changed the include guard to match the rest of the .h files
* Delete build script
* Update ChangeLog.txt
* Update ChangeLog.txt
2017-08-16 03:00:46 +01:00
Sebastian Messmer
4a602ce7a5
Remove old blockstore implementations
2017-07-20 19:32:42 -07:00
Sebastian Messmer
acf01ec4ff
Actually wire up CryDevice to use new block stores
2017-07-18 14:49:51 -07:00
Sebastian Messmer
428290fda5
Extend BlockStore2 and write a LowToHighLevelBlockStore as wrapper from BlockStore to BlockStore2
2017-07-07 16:18:09 -05:00
Sebastian Messmer
13be2908d0
Add unit tests to BlockStore2Test
2017-07-07 17:50:45 +02:00
Sebastian Messmer
f22a9b2f0a
Merge branch 'next' into newblockstore
2017-07-07 15:48:24 +02:00
Sebastian Messmer
317088e449
Rename unique_ref::isValid to is_valid to comply with naming scheme of other functions
2017-04-10 14:16:30 -07:00
Sebastian Messmer
1b80d7e99d
Improve unique_ref tests
2017-04-06 11:10:57 +01:00
Sebastian Messmer
636ed437aa
Improve unique_ref tests
2017-04-05 20:48:00 +01:00
Sebastian Messmer
32da878f8f
Extend unique_ref tests to custom deleters
2017-04-04 10:57:03 +01:00
Sebastian Messmer
ed9f224f19
Further unique_ref improvements
2017-04-03 19:08:41 +01:00
Sebastian Messmer
2fb61e7c71
Further improve unique_ref
2017-04-03 15:43:27 +01:00
Sebastian Messmer
9ada10db4d
Improve unique_ref
2017-04-03 14:43:32 +01:00
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