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
f42e08a5f6
Fix DataTree::key() when called while traversing
2016-07-14 17:56:47 +02:00
Sebastian Messmer
6ff0839e90
Add locking to blob
2016-07-14 16:36:30 +02:00
Sebastian Messmer
457ca52eb3
Add assertions to unique_ref
2016-07-14 16:29:02 +02:00
Sebastian Messmer
7ea08fc2b0
Add test cases for removing nodes
2016-07-14 16:12:51 +02:00
Sebastian Messmer
91bf6c3647
Keep resource destructor in ParallelAccessStore under mutex
2016-07-14 15:10:52 +02:00
Sebastian Messmer
3f04a7411c
If tree depth increases, and we already traversed the old tree, don't go into it again to grow its last leaf.
2016-07-14 14:23:15 +02:00
Sebastian Messmer
cbe122cb5f
Add assertions
2016-07-14 13:23:36 +02:00
Sebastian Messmer
0bb6b320d4
Add asserts
2016-07-14 12:58:42 +02:00
Sebastian Messmer
0dbfdf3e2b
When shrinking a tree, LeafTraverser takes care of decreasing tree depth, not DataTree anymore. This way, LeafTraverser is now responsible for increasing and decreasing depth as necessary.
2016-07-14 12:55:54 +02:00
Sebastian Messmer
35a4e42ba5
Small fixes in traversal algorithm
2016-07-14 12:38:25 +02:00
Sebastian Messmer
fce81f47ff
Simplify code a bit and add assertions
2016-07-14 12:03:15 +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
cf38eb0eb3
Use tree traversal to remove data tree.
2016-07-13 00:29:36 +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
a19d79361c
If a tree is grown by a traversal, the tree is kept in a balanced state as long as possible during the traversal
2016-07-12 09:57:56 +02:00
Sebastian Messmer
1bf20277e4
Removed unnecessary code
2016-07-12 01:10:27 +02:00
Sebastian Messmer
58f2212043
Don't query size on traversal
2016-07-12 01:09:30 +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
dde89da556
Improve traverseLeaves
2016-07-10 08:38:02 +02:00
Sebastian Messmer
0d860fa4f0
Speed up block loading/storing by issuing only one read/write syscall to the base file system
2016-07-06 15:35:51 -07:00
Sebastian Messmer
7348f7c64d
Add checks to Data::LoadFromFile() and Data::StoreToFile()
2016-07-06 15:28:14 -07: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
a242076ecc
Performance improvement: Allow more parallelity when getting read()/write() syscalls to the same blob
2016-07-05 23:02:59 -07:00
Sebastian Messmer
ff0ba06846
Add mutex to fix race condition
2016-06-29 16:42:43 -07:00
Sebastian Messmer
b7b5dfba2a
Fix generation of new file systems
2016-06-27 22:31:06 -07:00
Sebastian Messmer
3425760daf
Implement migration for old filesystems that don't have parent pointers.
2016-06-27 20:03:44 -07:00
Sebastian Messmer
bfb397f44e
Tell user to not interrupt migration process
2016-06-27 20:01:02 -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
be8dffb24d
MyClientId is generated outside of CryDevice to give the CryConfigCreator access to it.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
7b56706c1a
Be explicit about types stored in config file
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
1c654305a8
In integrity violations, use individual messages saying which check exactly failed.
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
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
d306f4872e
Fix merge error
2016-06-26 22:15:52 -07:00
Sebastian Messmer
fd5dd2c6e1
New way of handling block deletions: Set last-update-client-id to zero instead of increasing version number. This has the same effect (i.e. invalidates all known block versions) and it additionally allows for checking in a local list whether a block is deleted or not.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
ee1f0f4d3a
Warn in migration that it might take a while
2016-06-26 22:15:52 -07:00
Sebastian Messmer
86c2144a37
Implement migration from file systems without version numbers
2016-06-26 22:15:52 -07:00
Sebastian Messmer
f9a10eea4d
Fix VersionCountingBlock::resize()
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
9c1a12c063
Fix merge
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
263c540cd0
Make sure, ClientIdAndBlockKey.h includes all its dependencies
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
de692c1ee4
Store number of entries at beginning of integrity file, so loading can be faster using unordered_map::reserve()
2016-06-26 22:15:52 -07:00
Sebastian Messmer
adb10343d2
Only hash key once if key not found, i.e. use [] instead of find() and then emplace()
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
9da30e3c17
Remove redundant nullbyte
2016-06-26 22:15:52 -07:00
Sebastian Messmer
57af168cfd
Store own client id into the block next to the version number. This will be used to fix synchronization conflicts where the version number on one clients progresses slower than on another client, but synchronizes later.
2016-06-26 22:15:52 -07:00
Sebastian Messmer
a5391a854d
Use VersionCountingBlockStore
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
f4a7878e37
Compatibility with GCC 6
2016-06-26 21:26:08 -07:00
Sebastian Messmer
0a61987594
Be explicit about types stored in config file
2016-06-26 15:34:53 -07:00
Sebastian Messmer
f6a80a4651
Remove default config values for mandatory values
2016-06-26 15:26:05 -07:00
Sebastian Messmer
acedbbd0c4
Fix EncryptedBlock::resize() and add test cases for it
2016-06-23 21:20:36 -07:00
Sebastian Messmer
fcbca9ddea
Improve performance of InMemoryBlockStore and FakeBlockStore by using std::unordered_map instead of std::map and the direct representation of a block Key as Key instead of a string representation.
2016-06-23 12:26:47 -07:00
Sebastian Messmer
3db931c54d
Fix mount information reported to operating system
2016-06-22 17:57:00 -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
b3c5d4b5e3
Refactor TimestampTestUtils
2016-06-09 17:47:29 -07:00
Sebastian Messmer
c5ccd9c2d1
Set cache entry to dirty when timestamps are changed. Otherwise, it wouldn't be written back.
2016-06-09 17:32:35 -07:00
Sebastian Messmer
e8ad454e47
TODOs
2016-06-08 12:35:56 -07:00
Sebastian Messmer
e2ec72edde
Remove unused function
2016-06-08 12:29:28 -07:00
Sebastian Messmer
5aff394a16
Directory timestamps are updated correctly. Also added test cases for this.
2016-06-08 12:21:57 -07:00
Sebastian Messmer
5a5037c992
Symlinks update atime correctly. Also added a test case for this.
2016-06-07 21:47:23 -07:00
Sebastian Messmer
69f4c7976e
File::truncate() updates timestamps correctly. Also added test cases for this.
2016-06-07 21:30:57 -07:00
Sebastian Messmer
6448110975
OpenFile updates timestamps correctly, i.e. on read(), write() and truncate(). Also added test cases for it.
2016-06-07 21:25:02 -07:00
Sebastian Messmer
06a5faf2f8
Generalize timestamp expectations
2016-06-07 20:48:29 -07:00
Sebastian Messmer
9bb2e2e89a
Implement fsync() and fdatasync() syscalls for flushing open files
2016-06-07 18:36:59 -07:00
Sebastian Messmer
be31d78349
Make TimestampTestUtils generic
2016-06-07 13:07:22 -07:00
Sebastian Messmer
93f34a4557
Run FsppDeviceTest_Timestamps on all kinds of nodes, not just files
2016-06-07 12:48:21 -07:00
Sebastian Messmer
8bf8081464
Fix sigsev on startup which was introduced by commit 1bb38f39b4
2016-06-07 12:44:35 -07:00
Sebastian Messmer
2642507344
Allow loading file systems from future cryfs versions if user specifically asks for it
2016-06-06 15:31:09 -07:00
Sebastian Messmer
7708287fdd
Add test case that loading a node doesn't modify time stamps
2016-06-06 15:20:41 -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
93927e76d6
TODOs
2016-06-02 20:25:14 -07:00
Sebastian Meßmer
3894157589
Merge pull request #61 from mhogomchungu/develop
...
remove compiler warnings
2016-06-02 20:21:54 -07:00
Sebastian Messmer
1402f54fec
Factor out platform inconsistency between Mac and Linux (stat.st_atim vs stat.st_atimespec)
2016-06-02 20:08:51 -07:00
Francis Banyikwa
f2b7aac76a
use boost::optional for an optional argument in Fuse class
2016-06-02 21:58:04 +03:00
Francis Banyikwa
92d8f939ac
move setting of fuse options to Fuse class
2016-06-02 12:51:44 +03:00
Francis Banyikwa
183d6a9d06
dont hard code "cryfs" name in the fspp library
2016-06-02 11:17:55 +03:00
Francis Banyikwa
c5a6f16cd5
use a macro to silence compiler warnings
2016-06-02 09:54:39 +03:00
Francis Banyikwa
002dc6ca17
solve issue number 24
2016-06-01 13:37:44 +03:00
Francis Banyikwa
2cf4a2e087
use project name as the first argument to fuse
2016-06-01 11:55:48 +03:00
Francis Banyikwa
de6462e548
remove compiler warnings
2016-06-01 11:34:19 +03:00
Sebastian Messmer
61e56cfeab
Fix small rename corner case and add test cases for timestamps in many rename corner cases
2016-05-27 21:19:04 -07:00
Sebastian Messmer
54ec08bc9d
TODOs
2016-05-27 17:47:14 -07:00
Sebastian Messmer
514de8794e
Add test cases that fspp::Node operations correctly modify the timestamps
2016-05-27 17:26:53 -07:00
Sebastian Messmer
183b9cf74b
Fix utimens() behavior: It now updates ctime as well.
2016-05-27 17:26:23 -07:00
Sebastian Messmer
3b98fc0390
Offer timespec comparison operators
2016-05-27 16:35:45 -07:00
Sebastian Messmer
f6545bbcc3
Move fsblobstore::now() to cpputils
2016-05-27 15:46:05 -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
652cf90255
Merge branch 'develop' of github.com:cryfs/cryfs into develop
2016-05-03 22:23:38 -07:00
Sebastian Messmer
285dd05072
When counting blocks, ignore cryfs.config. This already worked on Linux, but not on Mac. After this commit, it is also fixed for Mac.
2016-05-03 22:21:28 -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
257b028511
Prevent opening file systems that were created with newer versions of CryFS
2016-04-29 12:46:14 -07:00
Sebastian Messmer
2fbed11431
Remove debug output
2016-04-29 12:38:53 -07:00
Sebastian Messmer
5aaba511bd
Fix migration step for new ciphertext layout
2016-04-29 12:35:17 -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
4829f4bcec
Extend test cases for rename with overwrite
2016-04-29 11:07:47 -07:00
Sebastian Messmer
33644af64d
Extend test cases for trying to rename a file to an existing directory or the other way round
2016-04-28 23:14:33 -07:00
Sebastian Messmer
bfba538818
Fix rename corner cases: Overwriting an existing directory with a file or the other way round
2016-04-28 22:49:57 -07:00
Sebastian Messmer
66b52b6434
Fix rename corner case: Renaming element to its old name
2016-04-28 22:36:53 -07:00
Sebastian Messmer
a03ab91aba
Fix rename when overwriting an existing file in the same directory
2016-04-28 13:27:54 -07:00
Sebastian Messmer
c403ec6b48
Fix a potential deadlock in the cache
2016-04-26 18:09:42 -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
f0d11bb5a7
Fail build if gitversion cannot be found
2016-04-01 11:39:28 +02:00
Sebastian Messmer
4627666788
Generalize stat() tests in FsppFileTest for all node types
2016-03-31 23:48:43 +08:00
Sebastian Messmer
e7c4f8150e
Factor out FsppNodeTest to allow using its mechanisms for other test cases and not only for rename
2016-03-31 21:45:41 +08:00
Sebastian Messmer
f5305aa95d
Better error messages when parsing version information fails
2016-03-31 21:18:39 +08:00
Sebastian Messmer
4069358b31
Fix VersionCompare for stable versions vs tag versions
2016-03-29 11:07:00 +08:00
Sebastian Messmer
03f59b69da
Since 0.9.3-alpha set the config value cryfs.blocksizeBytes wrongly to 32768 (but didn't use the value), we have to add a workaround.
2016-03-26 23:56:56 +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
7b5970a94e
TODOs
2016-03-24 07:57:19 +00:00
Sebastian Messmer
67c5495db7
TODOs
2016-03-24 07:56:41 +00:00
Sebastian Messmer
99aa86720c
TODOs
2016-03-24 07:55:37 +00: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
6e7004d485
Rename operation allows overwriting existing files.
2016-03-24 02:47:50 +00:00
Sebastian Messmer
03ccead85b
Add test cases for rename
2016-03-24 01:45:53 +00:00
Sebastian Messmer
2ac47f480b
- Fix rename bug: When trying to rename a file to a name that already exists, it was deleted instead. This is now fixed.
...
- Additional test cases for rename
2016-03-23 18:03:30 +00:00
Sebastian Messmer
db53b597d4
Handle renaming root directory correctly
2016-03-23 16:07:08 +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
0cdfb8ba2e
Fix fstat (a bug in the fstat implementation caused problems with some text editors (e.g. nano) falsely thinking a file changed since they opened it).
2016-03-16 17:03:53 +00:00
Sebastian Messmer
e4ff7e17f1
Add test cases to fstest::FileTest
2016-03-16 15:31:59 +00:00
Sebastian Messmer
52d85f4de3
Refactor DirEntries
2016-03-16 15:29:26 +00:00
Sebastian Messmer
5f8bf4cea4
Fix version number mentioned in comment
2016-03-09 00:23:11 +01:00
Sebastian Messmer
1ee3a8df86
Use uint64_t for block size
2016-03-09 00:20:04 +01:00
Sebastian Messmer
08c1d206af
Fix compiler error
2016-03-09 00:13:18 +01:00
Sebastian Messmer
d7f34c0dfb
Make blocksize configurable
2016-03-08 23:57:34 +01:00
Sebastian Messmer
4dbb380263
Decouple DirBlob from CryDevice
2016-03-08 23:47:31 +01:00
Sebastian Messmer
526b749d1d
Add a command line option for blocksize
2016-03-04 23:12:41 +01:00
Sebastian Messmer
61611d03b2
Don't use <regex>, because it causes problems on GCC 4.8
2016-03-03 11:49:23 +01:00
Sebastian Messmer
5736a5ea37
Output warning to stderr, not stdout
2016-03-02 21:22:11 +01:00
Sebastian Messmer
5579270108
Handle fallback version "0+unknown" correctly
2016-03-02 14:39:30 +01:00
Sebastian Messmer
aac661d292
Recognize git version from tarball name if everything else fails
2016-03-02 14:18:47 +01:00
Sebastian Messmer
3f66c7ceda
Recognize git version from tarball name if everything else fails
2016-03-02 14:13:43 +01:00
Sebastian Messmer
3826064d1d
Recognize git version from tarball name if everything else fails
2016-03-02 14:08:51 +01:00
Sebastian Messmer
20e6920a7b
Recognize git version from tarball name if everything else fails
2016-03-02 14:08:10 +01:00
Sebastian Messmer
092edd6f1d
Removed unimportant file
2016-03-02 14:00:54 +01:00
Sebastian Messmer
59c341628c
Merge branch 'archive' into develop
2016-03-02 13:57:49 +01:00
Sebastian Messmer
5753e4f71c
Switch to new git version number recognition
2016-03-02 13:53:37 +01:00
Sebastian Messmer
d2cd75de15
TODOs
2016-03-02 01:36:04 +01:00
Sebastian Messmer
3254220987
Filesystems have a blocksizeBytes configuration option
2016-03-01 17:45:48 +01:00
Sebastian Messmer
35ae3b9c24
Make clock_gettime adapter work if used multiple time
2016-02-26 12:37:37 +01:00
Sebastian Messmer
ab5eb920a5
Show current time as modification time for mountdir. This probably confuses people less than if we show timestamp zero.
2016-02-26 10:47:47 +01:00
Sebastian Messmer
e48188f470
Restructure project to allow factoring out a library
2016-02-23 21:07:23 +01:00
Sebastian Messmer
f92c4a4f71
Show a message when update checking is disabled
2016-02-22 15:52:41 +01:00
Sebastian Messmer
5f67378bc9
Fix compiler error for older gcc versions
2016-02-22 11:44:59 +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
7d9d72d82a
Improve help output
2016-02-21 22:33:36 +01:00
Sebastian Messmer
54d2fc516f
Add environment variables to help output
2016-02-21 22:28:29 +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
d00e097954
Do a sanity check when mounting the file system and fail if the root blob is not available.
2016-02-19 02:10:10 +01:00
Sebastian Messmer
014b5703e0
Instead of modifying include paths, include osxfuse header from the right location
2016-02-17 22:30:28 +01:00
Sebastian Messmer
980f560f04
Fix build
2016-02-17 21:40:03 +01:00
Sebastian Messmer
237abf61c7
TODOs
2016-02-17 13:13:03 +01:00
Sebastian Messmer
80f63969c7
Add TODOs
2016-02-17 13:09:03 +01:00
Sebastian Messmer
25b93ebe41
When deleting a block fails, log the error but don't crash (i.e. continue to delete other blocks of the same blob on a best-effort basis)
2016-02-17 13:01:12 +01:00
Sebastian Messmer
df041ac845
Fix a bug where deleting a directory could leave over some blocks.
...
Details: Before, we allowed removing non-empty directories. Seems 'rm -rf' is trying to do that. Now, we return the correct error code ENOTEMPTY in this case, which causes that 'rm -rf' deletes the entries first.
2016-02-17 12:52:01 +01:00
Sebastian Messmer
bb54c2f879
When removing a block, check whether it was successful
2016-02-17 11:03:06 +01:00
Sebastian Messmer
b8fdd2e941
Fix includes on Mac
2016-02-17 08:51:48 +01:00
Sebastian Messmer
35f4723b65
Fix compiler error
2016-02-17 00:24:40 +01:00
Sebastian Messmer
74288c81e4
Replace sysctl on Mac with a syscall that is supported in all kernels
2016-02-16 23:24:11 +01:00
Sebastian Messmer
a05f51ee08
Replace sysctl on Mac with a syscall that is supported in all kernels
2016-02-16 22:27:07 +01:00
Sebastian Messmer
7f1493ab92
Increase scrypt KDF effort for generating the config file key from the password
2016-02-16 20:35:51 +01:00
Sebastian Messmer
8a83827042
Fix linux build
2016-02-16 20:12:04 +01:00
Sebastian Messmer
c889366619
Add some default search paths for libraries on Mac OS X
2016-02-15 20:01:13 +01:00
Sebastian Messmer
68acc27e88
Report file system statistics (like free space) to operating system
2016-02-15 14:20:21 +01:00
Sebastian Messmer
6fb46c7e73
Use inline for short functions
2016-02-15 13:22:21 +01:00
Sebastian Messmer
456b240e21
Add TODOs
2016-02-15 03:45:09 +01:00
Sebastian Messmer
5651a86b78
Improve CLI usage line and README
2016-02-15 02:40:56 +01:00
Sebastian Messmer
63d0b2b29d
Fix compiling test cases on Debian
2016-02-14 18:17:37 +01:00
Sebastian Messmer
e44c44334f
Fix compile on Debian 8 (link it to a library it wants)
2016-02-14 16:54:29 +01:00
Sebastian Messmer
31bf927e07
Fix compile on Debian 8 (link it to a library it wants)
2016-02-14 16:35:37 +01:00
Sebastian Messmer
ccc2f74e63
Fix compile on Debian 8 (link it to a library it wants)
2016-02-14 16:34:50 +01:00
Sebastian Messmer
1e975f64f7
Improve error messages when libraries aren't found
2016-02-14 15:55:54 +01:00
Sebastian Messmer
26929b4354
Merge
2016-02-14 04:19:32 +01:00
Sebastian Messmer
cc2101af9c
Link osxfuse C++ library, not C# framework
2016-02-14 04:17:35 +01:00
Sebastian Messmer
0286f36cf6
Allow setting library locations using CMake parameters
2016-02-14 03:13:50 +01:00
Sebastian Messmer
b3dc0e9b58
Find osxfuse/fuse library with CMake find_library()
2016-02-14 02:38:01 +01:00
Sebastian Messmer
7ede09877e
Removed resolved TODO
2016-02-14 02:29:27 +01:00
Sebastian Messmer
80b113f0f1
Fix some more fuse tests
2016-02-14 02:23:54 +01:00
Sebastian Messmer
fcf817fbdd
Work around timing bug in OS X test cases
2016-02-14 01:18:19 +01:00
Sebastian Messmer
5363a397f8
Handle stopping the file system correctly on Mac OS X
2016-02-14 01:00:00 +01:00
Sebastian Messmer
e532885598
Fix crash on Mac OS X when parsing the command line parameters
2016-02-13 20:59:51 +01:00
Sebastian Messmer
53ef40ba46
Show correct umount command on Mac OS X
2016-02-13 20:50:50 +01:00
Sebastian Messmer
7453e83732
Fix crash on mac os X due to unimplemented statfs()
2016-02-13 20:47:15 +01:00
Sebastian Messmer
2b9469cd20
Fix compiler error on Mac OS X
2016-02-13 16:13:25 +01:00
Sebastian Messmer
56ccf781eb
Fix compiler warning on GCC 4.8
2016-02-13 15:26:16 +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
f433da7dc1
Remove --extpass parameter, because that encourages tool writers to do bad things like storing a password in a file and using --extpass="cat filename".
...
The password can now be passed in to stdin without problems, so tools should use that.
2016-02-13 10:46:05 +01:00
Sebastian Messmer
098f16a4fe
Since Mac OS X doesn't support clock_gettime, implement it if running on Mac.
2016-02-13 02:46:00 +01:00
Sebastian Messmer
f749ad66f1
Fix a compiler error on Mac OS X
2016-02-13 02:19:31 +01:00
Sebastian Messmer
3ff69b6a9f
Allow specifying osxfuse include directory on command line using "cmake -DCMAKE_CXX_FLAGS=-I/path/to/osxfuse/include/dir". Furthermore, add some setup instructions for installing the requirements on Mac OS X.
2016-02-13 02:07:19 +01:00
Sebastian Messmer
ff62ef1b88
Don't use libc getpass() for asking the password anymore. It is deprecated and doesn't play nice with tools that want to pass in the password on stdin. Now we just use stdin.
2016-02-12 23:18:13 +01:00
Sebastian Messmer
d05e3841bd
Mountdir has correct ownership and permissions set. Fixes https://github.com/cryfs/cryfs/issues/10
2016-02-12 12:21:39 +01:00
Sebastian Messmer
cfe2a48ebc
Merge branch 0.9 (pre-work for version 0.9)
2016-02-11 17:35:20 +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
92cf6fa66d
Refactor directory layout to allow other modules in same repository
2016-02-11 12:04:49 +01:00
Sebastian Messmer
11e1b89e31
Define minimal needed boost version
2016-02-11 04:33:15 +01:00
Sebastian Messmer
a35e164ede
Add needed packages to travis
2016-02-11 04:23:46 +01:00
Sebastian Messmer
ee702471f0
Switch to plain cmake, no biicode anymore.
2016-02-10 00:58:03 +01:00
Sebastian Messmer
d23eb08854
Refactor dir blob serialization
2016-02-09 13:47:26 +01:00
Sebastian Messmer
d540adfdfa
Added assert and improved ordering of data in directory blobs
2016-02-09 13:05:16 +01:00
Sebastian Messmer
88e6164d35
Improve platform indepdendence of directory blobs
2016-02-09 12:37:30 +01:00
Sebastian Messmer
68c10afbda
Adding the file access times makes CryFS 0.9 incompatible with earlier versions. This commit adds a warning telling the user when they try to mount an old file system.
2016-02-09 10:55:28 +01:00
Sebastian Messmer
b0beb6b350
Fully support file access times
2016-02-09 09:51:35 +01:00
Sebastian Messmer
452519ed0b
Implement storing file access times.
...
Feature is not enabled yet, because this would break compatiblity with file systems from old CryFS versions (will be enabled in CryFS 0.9.0).
However, it already fixes https://github.com/cryfs/cryfs/issues/4 because it doesn't say 'operation not supported' anymore when modifying file times
2016-02-09 09:43:18 +01:00
Sebastian Messmer
029fb73218
Better error message when config file has wrong header
2016-02-09 09:14:02 +01:00
Sebastian Messmer
ddf6b00b64
Merge branch 'develop' of github.com:cryfs/cryfs into develop
2016-02-06 13:04:44 +01:00
Sebastian Messmer
3427cf71b3
Adapt to new fspp (which got the symlink fix in 8092bfef8e
)
2016-02-06 13:04:02 +01:00
Sebastian Messmer
9f94a88bef
Show "this might take some time" when generating the key
2016-01-28 20:40:56 +00: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
33906947a8
Adapt to new Console from cpputils (we have to print the newline ourselves now, cpputils doesn't do it anymore)
2016-01-25 14:21:19 +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
1d7daf68e2
When installing .deb files, it will automatically add the software source for automatic updates. When uninstalling, the software source will be removed with it.
2015-12-17 19:48:56 +01:00
Sebastian Messmer
5319859700
Adapt to new blobstore which supports blobs >4GB
2015-12-11 00:27:26 +01:00
Sebastian Messmer
0959971b93
Adapt to new fspp interface
2015-12-07 12:14:06 +01:00
Sebastian Messmer
6786508148
Make classes final if they're not meant to be derived from
2015-11-27 14:06:17 +01:00
Sebastian Messmer
7af0bf8056
ChangeLog and TODOs
2015-11-25 15:46:44 +01:00
Sebastian Messmer
529b888048
Code is compatible with gcc 4.8
2015-11-24 14:42:20 +01:00
Sebastian Messmer
7126826eeb
Add a maximal timeout for version update checking
2015-11-24 08:24:37 +01:00
Sebastian Messmer
7664c3de8b
TODOs
2015-11-24 08:08:27 +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
2796915ffe
When there is a new CryFS version, ask the user to update. Furthermore, check if there is a security warning for the installed CryFS version.
2015-11-23 17:43:21 +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
52d3ac5efc
Depend on stable version of Crypto++
2015-11-17 20:17:30 +01:00
Sebastian Messmer
49b4a9b1c0
Allow specifying base and mount directory parameters as relative paths
2015-11-17 01:50:59 -08:00
Sebastian Messmer
3e7af232e7
Better error reporting when root directory is suddenly not accessible anymore
2015-11-16 22:05:25 -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
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
d003b7f0c5
Added test cases for inner config file encryption
2015-11-11 11:03:05 -08:00
Sebastian Messmer
f44ae98bf9
Removed unnecessary parameter
2015-11-11 11:02:01 -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
252a666a37
Refactor (de)serializing config files
2015-11-10 17:50:08 -08:00
Sebastian Messmer
4cedaa5bf4
Fixed failing test cases (was a fault in cpputils library and was fixed there)
2015-11-07 12:21:17 -08:00
Sebastian Messmer
0b7182f095
Make test cases faster by using SCrypt::TestSettings
2015-11-03 20:27:00 -08:00
Sebastian Messmer
eb0a27759c
Show more detailed error message when given arguments are invalid
2015-11-03 13:01:51 -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
9aee4b1657
Added success tests
2015-11-02 12:20:10 -08: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
057113df00
- Catch exceptions in initialization
...
- Show unmount command after successfully mounted
2015-10-30 20:32:25 +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
cdbbad8878
Remove debug output
2015-10-30 17:32:23 +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
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
dceeeecdd7
Improve console output on log creation
2015-10-28 15:27:58 +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
bac18cfbfc
Fix path bug when writing config file to rootdir
2015-10-28 13:44:39 +01:00
Sebastian Messmer
3a04c8697f
Config encryption uses cipher name provided by cipher instead of storing it itself
2015-10-28 01:58:01 +01:00
Sebastian Messmer
be1acba45f
Use cipher names provided by cipher
2015-10-28 01:49:33 +01:00
Sebastian Messmer
c8e6ed5d9f
Fix incompatibility with gcc 4.9
2015-10-28 00:42:49 +01:00
Sebastian Messmer
0d5a7d9d10
Adapt to cpputils crypto library
2015-10-27 23:46:54 +01:00
Sebastian Messmer
340bbf842e
Moved crypto classes to cpputils
2015-10-27 22:19:40 +01:00
Sebastian Messmer
d8ed751039
TODOs
2015-10-27 21:26:08 +01:00
Sebastian Messmer
bb507ce241
Add a header to the inner config encryption so we can change the inner format later without changing the outer format
2015-10-27 21:20:12 +01:00
Sebastian Messmer
0ae9bb7fca
TODOs
2015-10-27 19:01:45 +01:00
Sebastian Messmer
5a73042c63
Add a padding step between inner encryption and outer encryption to hide the size of the cipher name that is added inbetween
2015-10-27 19:00:24 +01:00
Sebastian Messmer
08e4ae8a2e
Config encryption: Prepend inner cipher name to the encrypted data before encrypting it with the outer cipher
2015-10-27 18:50:58 +01:00
Sebastian Messmer
d9eaac5f75
Encrypt config file twice - with an inner and an outer key
2015-10-27 17:33:31 +01:00
Sebastian Messmer
635349d636
Separate CryConfigEncryptor from InnerEncryptor. This is the first step to do two layers of encryption.
2015-10-27 15:28:11 +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
adad371114
Fix config loading
2015-10-26 20:15:04 +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
a840bbba47
Change config file header to contain version information
2015-10-26 12:35:22 +01:00
Sebastian Messmer
4164c2353e
Graceful exiting when password is wrong
2015-10-25 19:00:30 +01:00
Sebastian Messmer
daa4f0a7f3
CryConfigEncryptor more thoroughly uses Serializer/Deserializer interface
2015-10-25 17:01:28 +01:00
Sebastian Messmer
7cc2205bc4
Use cpputils::Serializer and cpputils::Deserializer instead of std::memcpy
2015-10-25 13:37: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
9bf83a6fe7
Adapted to new key creation interface
2015-10-22 18:48:04 +02:00
Sebastian Messmer
d8e0465954
Added test cases for CryCipher
2015-10-19 14:22:01 +02:00
Sebastian Messmer
fdc41ffb83
TODOs
2015-10-19 02:47:22 +02:00
Sebastian Messmer
2104a85e95
Refactor config file handling
2015-10-19 02:46:47 +02:00
Sebastian Meßmer
03ad5cbe45
Fix -Weffc++ warnings
2015-10-17 21:33:41 +02:00
Sebastian Meßmer
7b3dcb8260
Allow --logfile option
2015-10-17 18:31:17 +02:00
Sebastian Meßmer
451a84bebc
Pass daemon name to daemonize
2015-10-17 03:28:15 +02:00
Sebastian Meßmer
bb90bb19ba
Fix death tests in multithreading context
2015-10-16 04:06:00 +02:00
Sebastian Meßmer
20612fb245
Add TODOs
2015-10-16 03:29:26 +02:00
Sebastian Meßmer
1c29fecf3c
Added unstable warning and fixed daemonization
2015-10-16 02:38:34 +02:00
Sebastian Meßmer
5f9c2c0611
Unify (and fix) include guards
2015-10-15 13:06:51 +02:00
Sebastian Meßmer
daf330a07f
Fix daemonize() behaviour. CryFS now works correctly when called without '-f'
2015-10-15 03:38:44 +02:00
Sebastian Messmer
ff8eae5293
Added performance warning in debug builds
2015-10-15 00:16:00 +02:00
Sebastian Messmer
f5f8dc7939
Removed debug output
2015-10-14 15:38:57 +02:00
Sebastian Messmer
ba860a771d
Resolved TODOs (was a bug in the cpputils library, was fixed there)
2015-10-14 15:01:08 +02:00
Sebastian Messmer
1f2357ec56
Merge branch 'develop' of github.com:cryfs/cryfs into develop
2015-10-14 02:17:54 +02:00
Sebastian Messmer
f90e2edfef
TODOs
2015-10-14 02:17:50 +02:00
Sebastian Meßmer
d21fe18c39
TODO
2015-10-12 04:40:59 +02:00
Sebastian Messmer
66cd99b0ff
Use hinted linear search instead of binary search
2015-10-08 01:19:44 +02:00
Sebastian Messmer
bf3a028204
DirEntryList keeps its items sorted by key - this allows faster accesses
2015-10-07 21:41:00 +02:00
Sebastian Messmer
3f782a330f
Configure cache size for DirBlob cache
2015-10-07 17:24:28 +02:00
Sebastian Messmer
19c1c0e28e
Refactoring: Factor out a DirEntryList class from DirBlob
2015-10-07 13:45:17 +02:00
Sebastian Messmer
81e856fda2
Fix DirBlob::releaseBaseBlob()
2015-10-05 19:09:17 +02:00
Sebastian Messmer
e890222c77
Write back DirBlob when baseBlob is released
2015-10-05 18:54:51 +02:00
Sebastian Messmer
e5fcf6a9bc
Comments
2015-10-05 17:07:16 +02:00
Sebastian Messmer
44fb3011ed
Add a CachingFsBlobStore
2015-10-05 16:58:33 +02:00
Sebastian Messmer
d9821c2623
Directory Blobs store block keys in binary instead of string
2015-10-05 04:49:04 +02:00
Sebastian Messmer
abde844932
Fix includes
2015-10-05 03:56:37 +02:00
Sebastian Messmer
9c433209c2
Speed up DirBlob reads by using Blob::readAll()
2015-10-05 03:44:20 +02:00
Sebastian Messmer
7e54d284e1
Speed up writing back of DirBlobs by another factor of 3 (so 9 in total) by serializing the whole blob and writing it back with one write() call
2015-10-05 02:55:04 +02:00
Sebastian Messmer
af70891d27
Made writing back DirBlobs faster by writing whole entries at once (speedup factor of 3)
2015-10-05 02:35:06 +02:00
Sebastian Messmer
0367df004e
Added locks to avoid race conditions in FsBlobStore
2015-10-04 17:37:00 +02:00
Sebastian Messmer
1977a720df
Introduced ParallelAccessFsBlobStore to avoid race conditions when accessing the same FsBlob in parallel
2015-10-04 17:20:14 +02:00
Sebastian Messmer
37f7c764d1
Return better fuse errors
2015-09-30 14:27:29 +02:00
Sebastian Messmer
752be4415c
Protect from race conditions happening when the same FsBlob is open multiple times
2015-09-30 14:05:05 +02:00
Sebastian Messmer
e3d2fdb2fd
Refactor: Add fsblobstore layer
2015-09-30 13:21:07 +02:00
Sebastian Messmer
dd39f242a2
Show backtraces on sigsegv
2015-09-29 22:44:19 +02:00
Sebastian Messmer
bf02682734
Error reporting when blob to delete was not found
2015-09-29 18:47:57 +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
20f5d739b7
Small refactoring of main()
2015-09-28 13:41:23 +02:00
Sebastian Messmer
97028b134f
Adapt to new gitversion library
2015-09-19 01:02:42 +02:00
Sebastian Messmer
fe5ea5ab95
Output const_string directly, without toStdString()
2015-09-18 22:09:33 +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
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
6b50ccc14b
Show version information
2015-09-16 22:54:07 +02:00
Sebastian Messmer
8db80d5ebf
Refactor directory structure
2015-09-12 20:16:13 +02:00
Sebastian Messmer
117930fad2
Print a newline around user interactions
2015-09-04 16:09:37 +02:00
Sebastian Messmer
a665e6cdd7
CryFS asks back if a cipher without integrity is chosen
2015-09-04 16:02:55 +02:00
Sebastian Messmer
a9a5a5d04d
Console class supports askYesNo(question)
2015-09-04 16:00:41 +02:00
Sebastian Messmer
218463cf91
Add more encryption ciphers
2015-09-01 00:25:14 +02:00
Sebastian Messmer
84cd362d48
CryFS uses the cipher specified in the configuration file
2015-07-29 12:08:39 +02:00
Sebastian Messmer
a31b5160c9
Fix output
2015-07-26 14:42:43 +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
fa4a50b7b6
Use assert instead of exception on load error
2015-07-24 20:28:37 +02:00
Sebastian Messmer
bfa07cba69
Use the new assert that doesn't crash the program in a release build
2015-07-22 13:47:19 +02:00
Sebastian Messmer
013d50d8b6
Fix missing using statement in main.cpp
2015-07-21 18:32:40 +02:00
Sebastian Messmer
492caeb418
Migrate from unique_ptr to unique_ref
2015-07-21 18:22:03 +02:00
Sebastian Messmer
43d8174fd4
TODOs
2015-07-20 17:56:20 +02:00
Sebastian Messmer
67c56648e3
CryConfigLoader asks for cipher to use when creating a new config
2015-07-01 14:33:18 +02:00
Sebastian Messmer
337d2c055b
Implemented Console class to interact with the user
2015-07-01 14:32:26 +02:00
Sebastian Messmer
04b18ed768
Adapt to new blobstore
2015-06-26 16:03:24 +02:00
Sebastian Messmer
a1e0358d4c
Adapt to new cpp-utils
2015-06-21 17:44:45 +02:00
Sebastian Meßmer
07689c8bd1
Removed unneeded includes/usings
2015-06-18 19:40:26 +02:00
Sebastian Meßmer
2f22cbc9a8
Adapt to new fspp interface using unique_ref instead of unique_ptr
2015-06-18 19:36:05 +02:00
Sebastian Meßmer
e883bc5747
More use of unique_ref instead of unique_ptr
2015-06-18 13:45:08 +02:00
Sebastian Meßmer
f4d925aa9d
More use of unique_ref instead of unique_ptr
2015-06-18 13:14:43 +02:00
Sebastian Meßmer
b2e661a328
Adapt to new blobstore - having unique_ref<Blob> instead of unique_ptr<Blob>
2015-06-18 12:47:08 +02:00
Sebastian Meßmer
09f89327da
Fix test cases
2015-06-17 12:28:18 +02:00
Sebastian Messmer
aed30a0ec1
Refactored creation of new config files - this happens in a CryConfigLoader now
2015-06-16 18:20:31 +02:00
Sebastian Messmer
fbb16915d3
Encryption keys are drawn using OS randomness
2015-06-16 16:53:58 +02:00
Sebastian Messmer
01f4a5fc28
Fix for clang compiler
2015-06-10 17:19:56 +02:00
Sebastian Messmer
7beb7f1198
Enable extended compiler warnings and resolve occurring ones
2015-05-08 02:11:34 +02:00
Sebastian Messmer
30f7791af7
Make constructors explicit where adequate
2015-04-27 18:20:07 +02:00
Sebastian Messmer
fa4e23ceb4
Fix loading encryption keys from config file
2015-04-27 18:00:11 +02:00
Sebastian Messmer
8f7853f01a
Add basic test case for cryfs
2015-04-27 16:38:09 +02:00
Sebastian Messmer
74e9ffb9f4
Use cpputils::TempFile and cpputils::Data instead of blockstore::TempFile and blockstore::Data
2015-04-25 03:37:25 +02:00
Sebastian Messmer
eeaa6678cd
Switch to authenticated cipher
2015-04-24 23:58:55 +02:00
Sebastian Messmer
22323a0a03
Adapt to new EncryptedBlockStore
2015-04-24 18:14:53 +02:00
Sebastian Meßmer
89a9f1e3d2
Don't crash when trying to chmod/chown the root directory
2015-04-23 09:24:52 +02:00
Sebastian Meßmer
6821684654
Support symlinks
2015-04-23 09:18:30 +02:00
Sebastian Messmer
935549f822
- Adapt to new fspp (symlink support), but don't support symlinks yet
2015-04-22 16:02:23 +02:00
Sebastian Messmer
5c63e1c277
Removed debug output
2015-04-22 14:53:15 +02:00
Sebastian Messmer
12e802fb7b
Create files/dirs owned by the caller
2015-04-22 14:32:03 +02:00
Sebastian Messmer
27e376c121
TODOs
2015-04-21 23:20:54 +02:00
Sebastian Messmer
b96cc48639
Implemented chmod/chown and fixed some minor details
2015-04-21 23:18:50 +02:00
Sebastian Messmer
7b40e22279
Adapt to new blockstore
2015-04-16 14:11:07 +02:00
Sebastian Messmer
54e0bbc7d3
Use block caching and increase block size
2015-04-15 20:42:14 +02:00
Sebastian Messmer
7d4618229b
Implement renaming
2015-04-11 01:42:20 +02:00
Sebastian Messmer
0b2bf1d7b3
Work with new fspp
2015-04-10 23:29:16 +02:00
Sebastian Messmer
de8c697dfc
Experimented a bit with block size
2015-04-10 23:17:23 +02:00
Sebastian Messmer
9ecbe437ab
- Refactor DirBlob: Keep an in-memory vector of the dir entries instead of regularly parsing it
...
- Implement file deletion and dir deletion
2015-04-10 00:52:00 +02:00
Sebastian Messmer
c43612fae6
Implement CryOpenFile::flush
2015-04-09 23:42:04 +02:00
Sebastian Messmer
5596544365
CryFS uses an encrypted blockstore
2015-04-09 21:17:52 +02:00
Sebastian Meßmer
354de197ff
Add some asserts
2015-04-08 14:15:11 +02:00
Sebastian Meßmer
f1a992d187
A CryDir returns . and .. as children
2015-03-19 03:53:21 +01:00
Sebastian Meßmer
56928e68a8
Adapt to new fspp interface
2015-03-18 02:46:06 +01:00
Sebastian Meßmer
4d113613d9
Return error if trying to add an already existing entry to a directory
2015-03-18 02:11:10 +01:00
Sebastian Meßmer
26bdd6ff3a
Move source to src directory
2015-03-16 01:42:50 +01:00
Sebastian Messmer
b59ee2d1e2
Switch to biicode
2015-02-17 01:02:15 +01:00
Sebastian Messmer
3350e9368a
Switch to biicode
2015-02-17 00:40:34 +01:00
Sebastian Messmer
0c851fa452
Switch to biicode
2015-02-17 00:23:33 +01:00
Sebastian Messmer
424c4085a3
TODOs
2015-02-09 19:25:07 +01:00
Sebastian Messmer
7a2e2ec8a6
Written some test cases that the data isn't lost when growing a tree
2015-02-09 18:35:33 +01:00
Sebastian Messmer
b51588670c
Refactor test
2015-01-28 01:11:30 +01:00
Sebastian Messmer
f115e10f6d
Implemented more tests for DataTreeTest
2015-01-28 01:02:32 +01:00
Sebastian Messmer
1b15af4a3c
Add some tests to DataTree
2015-01-27 16:54:46 +01:00
Sebastian Messmer
95e4a7a335
Added a DataTree test case and some TODOs
2015-01-27 00:58:06 +01:00
Sebastian Messmer
77b288a20a
Written some first test cases for DataTree
2015-01-27 00:54:25 +01:00
Sebastian Messmer
a61195642f
Added comment
2015-01-26 00:40:46 +01:00
Sebastian Messmer
58ccf0495e
Source out GetLowestRightBorderNodeWithLessThanKChildrenOrNull and write test cases for it
2015-01-26 00:39:15 +01:00
Sebastian Messmer
03867bb8a2
Write test cases for DataInnerNode::LastChild
2015-01-25 23:54:23 +01:00
Sebastian Messmer
273035cf08
Since blocks now store their keys, we don't need to store it somewhere else.
2015-01-24 22:27:14 +01:00
Sebastian Messmer
76b3724da4
Since blocks now store their keys, we don't need to store it somewhere else.
2015-01-24 22:27:14 +01:00
Sebastian Messmer
dd2c96e363
Since blocks now store their keys, we don't need to store it somewhere else.
2015-01-24 22:27:14 +01:00
Sebastian Messmer
196b543cbb
A block stores its key
2015-01-24 22:08:41 +01:00
Sebastian Messmer
03e10cabf5
Implement copying DataNode blocks and finish DataTree::addDataLeaf implementation
2015-01-24 01:59:42 +01:00
Sebastian Messmer
f4398dfeec
Implemented copying of blocks
2015-01-24 01:24:37 +01:00
Sebastian Messmer
d442016d16
Implemented converting any node into a inner node and wrote test cases. Furthermore, implemented DataTree::addDataLeafToFullTree()
2015-01-24 00:58:40 +01:00
Sebastian Messmer
fcccbcf2e0
Fix some issues in DataTree using OptionalOwnershipPointer
2015-01-23 18:32:26 +01:00
Sebastian Messmer
753c5aab27
Start with DataTreeStore
2015-01-23 04:39:36 +01:00
Sebastian Messmer
dabe6e2567
Written more test cases for DataInnerNode and refactored them a bit
2015-01-23 03:05:55 +01:00
Sebastian Messmer
a427b0e677
Allow adding children to DataInnerNode and write some test cases
2015-01-23 02:41:55 +01:00
Sebastian Messmer
17440ec52d
Changed TODOs
2015-01-22 23:45:37 +01:00
Sebastian Messmer
2eb58ded2a
Added TODO
2015-01-22 23:39:01 +01:00
Sebastian Messmer
99c2e353a4
Restrict datanodestore abstraction to a simple node store without tree operations like resizing
2015-01-22 23:37:36 +01:00
Sebastian Messmer
3e9e46f706
Removed resolved TODOs
2015-01-22 21:57:56 +01:00
Sebastian Messmer
fbec747427
Removed resolved TODOs
2015-01-22 21:57:56 +01:00
Sebastian Messmer
fa604a7fc4
Move datanodestore classes into own c++ package and adapt BlobStoreOnBlocks to it
2014-12-13 19:17:08 +01:00
Sebastian Messmer
7490e55d00
Added some test cases for DataLeafNodeTest
2014-12-13 18:47:31 +01:00
Sebastian Messmer
517ed6929d
Add testcases to DataLeafNodeTest
2014-12-13 17:58:11 +01:00
Sebastian Messmer
059629cd8a
Rename test cases
2014-12-13 17:49:54 +01:00
Sebastian Messmer
de5eb0fa81
Create own module for datanodestore
2014-12-13 17:48:02 +01:00
Sebastian Messmer
1bbe0532dc
Introduce DataNodeStore and refactor DataNode
2014-12-13 17:43:02 +01:00
Sebastian Messmer
9ccb583b4b
Introduce DataNodeStore and refactor DataNode
2014-12-13 17:43:02 +01:00
Sebastian Messmer
3ab2302650
Refactor KeyTest
2014-12-13 12:31:24 +01:00
Sebastian Messmer
a97eb08224
Replace magic number in DataNodeView with a depth field
2014-12-13 12:00:19 +01:00
Sebastian Messmer
961fdd1d0b
Add Key::ToBinary, Key::FromBinary and more test cases for Key
2014-12-13 11:59:48 +01:00
Sebastian Messmer
c5d0e2c245
Add Key::ToBinary, Key::FromBinary and more test cases for Key
2014-12-13 11:59:48 +01:00
Sebastian Messmer
0d6dcd5b8b
Introduce Data::copy() and test case for it, refactor FakeBlobStore using Data::copy()
2014-12-11 01:41:08 +01:00
Sebastian Messmer
fb2b511d06
Create a FakeBlockStore and use it instead of InMemoryBlockStore in tests
2014-12-11 01:31:21 +01:00
Sebastian Messmer
15b10feeaf
Create a FakeBlockStore and use it instead of InMemoryBlockStore in tests
2014-12-11 01:31:21 +01:00
Sebastian Messmer
eaf9277d81
Make read-only functions of DataNode const
2014-12-11 00:24:50 +01:00
Sebastian Messmer
d1a7712aee
Comments & TODOs
2014-12-11 00:21:34 +01:00
Sebastian Messmer
c3d543619e
When shrinking a data node, the old space is overwritten with zeroes
2014-12-11 00:20:23 +01:00
Sebastian Messmer
24c81dd0b0
Implement DataLeafNode::resize and test cases for it
2014-12-10 23:34:36 +01:00
Sebastian Messmer
eebe8a4b75
Write factory methods in DataNode and write more test cases
2014-12-10 22:55:02 +01:00
Sebastian Messmer
1201823b68
Created some test cases for DataLeafNode
2014-12-10 17:59:45 +01:00
Sebastian Messmer
c6867b596e
TODOs
2014-12-10 17:28:21 +01:00
Sebastian Messmer
85b100ac9d
Written test cases for DataNodeView
2014-12-10 17:26:49 +01:00
Sebastian Messmer
b33cf908fa
Redesign DataNodes
2014-12-10 16:48:00 +01:00
Sebastian Messmer
1924c936a4
Remove Key::CreateDummyKey()
2014-12-09 20:57:10 +01:00
Sebastian Messmer
fa5058c8e3
Added some more test cases to key
2014-12-09 20:47:49 +01:00
Sebastian Messmer
77ff3320c0
Added some more test cases to key
2014-12-09 20:46:34 +01:00
Sebastian Messmer
83fad1ca53
Create dedicated Key class for addressing blocks
2014-12-09 20:36:32 +01:00
Sebastian Messmer
0b2b527b4d
Create dedicated Key class for addressing blocks
2014-12-09 20:36:32 +01:00
Sebastian Messmer
e7aea38f83
Create dedicated Key class for addressing blocks
2014-12-09 20:36:32 +01:00
Sebastian Messmer
48cc8eeff0
Write a test case that we reject invalid magic numbers
2014-12-09 18:56:45 +01:00
Sebastian Messmer
ec65b31c8e
Add DataNode/DataInnerNode/DataLeafNode to blobstore and write testcases for their magic numbers
2014-12-09 18:53:11 +01:00
Sebastian Messmer
5fee5e862a
BlobStoreOnBlocks mirrors BlockStore
2014-12-09 17:56:48 +01:00
Sebastian Messmer
532431f8e3
Created basic class structure for blobstore
2014-12-09 17:45:33 +01:00
Sebastian Messmer
e757da0ad3
Rename blobstore to blockstore
2014-12-09 17:19:59 +01:00
Sebastian Messmer
868c06a5f1
Rename blobstore to blockstore
2014-12-09 17:19:59 +01:00
Sebastian Messmer
93a624b228
Rename blobstore to blockstore
2014-12-09 17:19:59 +01:00
Sebastian Messmer
ebc70cff53
Allow creating files
2014-12-09 16:34:34 +01:00
Sebastian Messmer
79455cf01f
Implemented basic FileBlob
2014-12-09 11:28:52 +01:00
Sebastian Messmer
9a97287a96
A dir stores a magic number
2014-12-09 11:13:50 +01:00
Sebastian Messmer
b275d47dd9
Renamed VirtualTestFile to DataBlockFixture
2014-12-09 11:01:32 +01:00
Sebastian Messmer
c306d8be66
Renamed VirtualTestFile to DataBlockFixture
2014-12-09 11:01:32 +01:00
Sebastian Messmer
5413384ee3
TODOs
2014-12-07 22:38:48 +01:00
Sebastian Messmer
32d28665a0
TODOs
2014-12-07 22:38:48 +01:00
Sebastian Messmer
2d74935034
CryConfig: DISALLOW_COPY_AND_ASSIGN
2014-12-07 22:29:24 +01:00
Sebastian Messmer
fcc22fe054
CryFS stores root blob key in config file!
2014-12-07 22:26:16 +01:00
Sebastian Messmer
30ac3ab3cb
Created a simple mkdir/lsdir for cryfs, backed by blocks
2014-12-07 10:42:16 +01:00
Sebastian Messmer
51bcc2f191
Remove Cryfs Implementation
2014-12-07 08:57:23 +01:00
Sebastian Messmer
2c295ace62
Specify that BlobWithKey takes ownership of the contained blob
2014-12-07 08:57:04 +01:00
Sebastian Messmer
39ab086bb6
Copy current CryFS implementation (which rather was CopyFS) to a copyfs directory
2014-12-07 08:33:47 +01:00
Sebastian Messmer
6d0815915c
Redefined error behavior in blob loading when blob key doesn't exist
2014-12-07 00:58:56 +01:00
Sebastian Messmer
aed2148f17
Redefine error behavior in BlobStoreWithRandomKeys when key already exists and write test cases for it
2014-12-07 00:09:44 +01:00