Commit Graph

1056 Commits

Author SHA1 Message Date
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
Sebastian Messmer
9125e7a3ce Factor out BlobStoreWithRandomKeys 2014-12-06 22:28:57 +01:00
Sebastian Messmer
2b112c7fdb Generalized BlobStoreTest, added more test cases there 2014-12-06 21:28:03 +01:00
Sebastian Messmer
5355d0ca18 BlobStoreTest is a type parameterized test and is instantiated as InMemoryBlobStoreTest and OnDiskBlobStoreTest 2014-12-06 19:46:42 +01:00
Sebastian Messmer
03c490d5b3 Moved test files to correct package 2014-12-06 16:15:33 +01:00
Sebastian Messmer
a116a8330c Implemented an in-memory blobstore 2014-12-06 16:14:22 +01:00
Sebastian Messmer
e0e9129099 Also move RandomKeyGenerator to utils package 2014-12-06 15:50:37 +01:00
Sebastian Messmer
abcc766375 Moved Data class to an own utils package in blobstore 2014-12-06 15:48:32 +01:00
Sebastian Messmer
1151d4db47 Written Testcases for OnDiskBlobStore 2014-12-06 11:51:57 +01:00
Sebastian Messmer
2d3f329b6a Block-Keys are created randomly 2014-12-06 11:22:34 +01:00
Sebastian Messmer
11b74dd035 Renamed test cases 2014-12-06 11:21:41 +01:00
Sebastian Messmer
b64d352a8c BlobStore also returns BlobKey 2014-12-05 15:37:35 +01:00
Sebastian Messmer
24e2d42380 Added test cases for Data::LoadFromFile and Data.StoreToFile 2014-12-05 15:18:43 +01:00
Sebastian Messmer
a489914f80 Added test case for Data.FillWithZeroes() 2014-12-05 12:31:49 +01:00
Sebastian Messmer
b9c2f43afb Test loading a not existing blob (and fix behaviour for that case) 2014-12-05 12:00:05 +01:00
Sebastian Messmer
2d45783414 Added test cases for OnDiskBlob that load and compare data 2014-12-05 11:50:24 +01:00
Sebastian Messmer
155bbeaba3 Added test cases for OnDiskBlob that load and compare data 2014-12-05 11:50:24 +01:00
Sebastian Messmer
dc8a81eef5 Added test cases that blobs are actually initialized with zeroes 2014-12-05 11:36:14 +01:00
Sebastian Messmer
edd2125685 Rename test case 2014-12-05 11:23:47 +01:00
Sebastian Messmer
a34b5a316f Added Blob::flush() and test cases for it 2014-12-05 11:22:44 +01:00
Sebastian Messmer
a699350e19 Simplify Data::LoadFromFile and use DISALLOW_COPY_AND_ASSIGN for OnDiskBlob and OnDiskBlobStore 2014-12-05 08:14:19 +01:00
Sebastian Messmer
c20b09030d Move load from file functionality to Data class 2014-12-05 08:08:45 +01:00
Sebastian Messmer
e32a84eb8e Add Data::StoreToFile 2014-12-05 07:42:39 +01:00
Sebastian Messmer
e585d12511 Written a test case to test size on loading 2014-12-05 07:22:41 +01:00
Sebastian Messmer
e52da598f4 Write some test cases for OnDiskBlob and also change implementation to adapt them 2014-12-05 07:16:35 +01:00
Sebastian Messmer
ab3b5d906c Written a ondisk blobstore implementation and started with test cases 2014-12-05 06:20:38 +01:00
Sebastian Messmer
a43359c3b0 Added size parameters to blobstore interface 2014-12-05 06:06:05 +01:00
Sebastian Messmer
90c49dabc6 Written first version of the blobstore interface 2014-12-05 04:50:50 +01:00
Sebastian Messmer
3af17f24d9 Refactor: Move Filesystem.h and FuseErrnoException.h to fuse package 2014-11-28 14:46:45 +01:00
Sebastian Messmer
47a35c94b4 Added write() test cases 2014-11-27 16:40:22 +01:00
Sebastian Messmer
22c1dff622 Refactor FuseReadReturnedDataTest to make VirtualTestFile reusable for the upcoming write tests 2014-11-27 15:23:51 +01:00
Sebastian Messmer
74cf914f1e Implement flush() 2014-11-21 01:11:24 +01:00
Sebastian Messmer
51cc539f99 Delete dummy test 2014-11-19 00:15:00 +01:00
Sebastian Messmer
6aeaae5436 Make test cases run fuse in a parallel thread. For now, test cases don't use mock fs implementation, but real cryfs. This is to be changed soon. 2014-11-18 00:14:33 +01:00
Sebastian Messmer
c495e6b475 Written a test case setting up a file system and tearing it down again afterwards 2014-11-17 21:13:58 +01:00
Sebastian Messmer
193b2b1b88 Finished renaming fusepp -> fspp 2014-11-16 00:10:29 +01:00
Sebastian Messmer
f5a6f79e09 Finished renaming fusepp -> fspp 2014-11-16 00:10:29 +01:00
Sebastian Messmer
e863e5b6ce Rename namespace fusepp -> fspp 2014-11-16 00:05:28 +01:00
Sebastian Messmer
d14e825cee Rename namespace fusepp -> fspp 2014-11-16 00:05:28 +01:00
Sebastian Messmer
3f318281ec Rename FuseFile -> File and so on 2014-11-15 23:47:38 +01:00
Sebastian Messmer
c730fb5ebf Rename FuseFile -> File and so on 2014-11-15 23:47:38 +01:00
Sebastian Messmer
6dce6ffd80 Put fuse bindings in their own directory 2014-11-15 17:24:07 +01:00
Sebastian Messmer
749239ad0f Put fuse bindings in their own directory 2014-11-15 17:24:07 +01:00
Sebastian Messmer
382a7b89f1 Created a CryFs implementation based on the Fuse classes 2014-11-15 16:33:24 +01:00
Sebastian Messmer
272456e187 Created a CryFs implementation based on the Fuse classes 2014-11-15 16:33:24 +01:00
Sebastian Messmer
d088995178 Renamed cryfs::CryXXX classes to fusepp::FuseXXX classes 2014-11-15 15:16:18 +01:00
Sebastian Messmer
da7debdf9d Renamed cryfs::CryXXX classes to fusepp::FuseXXX classes 2014-11-15 15:16:18 +01:00
Sebastian Messmer
1cd2364b7f Simplify readdir 2014-11-13 00:03:03 +01:00
Sebastian Messmer
9af5f72665 Simplify readdir 2014-11-13 00:03:03 +01:00
Sebastian Messmer
27057f8c82 Fix creat 2014-11-12 23:13:00 +01:00
Sebastian Messmer
d8d35ae462 Resolve TODO2 2014-11-12 22:50:40 +01:00
Sebastian Messmer
b265dd9313 Resolve TODO2 2014-11-12 22:50:40 +01:00
Sebastian Messmer
35d997779a Removed todo 2014-11-12 22:47:20 +01:00
Sebastian Messmer
9dabea5e5d Removed todo 2014-11-12 22:47:20 +01:00
Sebastian Messmer
009b09df70 Fix error code 2014-11-12 22:40:47 +01:00
Sebastian Messmer
1fba488a07 Fix error code 2014-11-12 22:40:47 +01:00
Sebastian Messmer
3b376aa048 Fix IdList and implement statfs() 2014-11-12 22:38:12 +01:00
Sebastian Messmer
df80fdfb74 Fix IdList and implement statfs() 2014-11-12 22:38:12 +01:00
Sebastian Messmer
708ca7b1d6 utimens 2014-11-12 21:55:34 +01:00
Sebastian Messmer
31aa6228bb utimens 2014-11-12 21:55:34 +01:00
Sebastian Messmer
0dc7fe2bb8 Fix unimplemented utimens 2014-11-12 15:42:47 +01:00
Sebastian Messmer
7ddf6d0672 Fix unimplemented utimens 2014-11-12 15:42:47 +01:00
Sebastian Messmer
bedf079af2 fix readdir 2014-11-12 15:41:26 +01:00
Sebastian Messmer
194f1cba48 opendir/readdir/releasedir 2014-11-12 15:34:01 +01:00
Sebastian Messmer
3b2de412c8 opendir/readdir/releasedir 2014-11-12 15:34:01 +01:00
Sebastian Messmer
d2cba6cfe6 Implemented CryDir opening 2014-11-12 15:19:32 +01:00
Sebastian Messmer
abc8811e17 Generalized IdList 2014-11-12 15:19:04 +01:00
Sebastian Messmer
c1ef981368 Make some functions not-implemented 2014-11-12 13:54:29 +01:00
Sebastian Messmer
9db97ff258 Make some functions not-implemented 2014-11-12 13:54:29 +01:00
Sebastian Messmer
e3259d68f9 rename 2014-11-12 12:43:49 +01:00
Sebastian Messmer
e561f52dd5 rename 2014-11-12 12:43:49 +01:00
Sebastian Messmer
a0a30e3c75 fix compiler warnings 2014-11-12 12:36:04 +01:00
Sebastian Messmer
b85da9a688 rmdir 2014-11-12 12:34:35 +01:00
Sebastian Messmer
8561d90de0 rmdir 2014-11-12 12:34:35 +01:00
Sebastian Messmer
3727dd8b74 unlink 2014-11-12 12:31:38 +01:00
Sebastian Messmer
afd4066ef7 unlink 2014-11-12 12:31:38 +01:00
Sebastian Messmer
c5e8c37588 mkdir 2014-11-12 12:27:23 +01:00
Sebastian Messmer
c112def985 mkdir 2014-11-12 12:27:23 +01:00
Sebastian Messmer
8182a45d65 Fix create! 2014-11-11 00:38:33 +01:00
Sebastian Messmer
bfd7d20c8b Fix file reading 2014-11-11 00:18:24 +01:00
Sebastian Messmer
a8604d7b58 Fix file reading 2014-11-11 00:18:24 +01:00
Sebastian Messmer
f86db75948 Refactor 2014-11-10 23:51:45 +01:00
Sebastian Messmer
2e06e0a3b0 Refactor 2014-11-10 23:51:45 +01:00
Sebastian Messmer
6b8c205916 Implemented file operations using our class hierarchy 2014-11-10 23:47:41 +01:00
Sebastian Messmer
ca745bb3da Implemented file operations using our class hierarchy 2014-11-10 23:47:41 +01:00
Sebastian Messmer
80d708d62d Implement CryOpenFile and infrastructure around it 2014-11-10 22:42:17 +01:00
Sebastian Messmer
21f1a294ab Implement CryOpenFile and infrastructure around it 2014-11-10 22:42:17 +01:00
Sebastian Messmer
91dd8a7395 Better test handling 2014-11-06 23:14:20 +01:00
Sebastian Messmer
3c34cfd6d2 Added gtest framework and fixed compiler warnings 2014-11-06 22:50:50 +01:00
Sebastian Messmer
df0ac39ec9 Added gtest framework and fixed compiler warnings 2014-11-06 22:50:50 +01:00
Sebastian Messmer
a6b664063c Fix some stuff and make getattr go through our class structure 2014-11-05 01:35:41 +01:00
Sebastian Messmer
9981b5aeae Fix some stuff and make getattr go through our class structure 2014-11-05 01:35:41 +01:00
Sebastian Messmer
f9fe4f579c Reorder folder structure 2014-11-04 22:33:43 +01:00
Sebastian Messmer
fd07c4892d Reorder folder structure 2014-11-04 22:33:43 +01:00
Sebastian Messmer
944a8b201f Remove leftover comment 2014-11-04 22:23:34 +01:00
Sebastian Messmer
a97261d02f Removed debug output 2014-11-04 22:23:16 +01:00
Sebastian Messmer
6230d19750 Implemented a final, copy file system 2014-11-04 22:08:13 +01:00
Sebastian Messmer
154de4c74d Implement some of the fuse functions 2014-11-04 21:17:02 +01:00
Sebastian Messmer
728d97e9e8 CryDevice stores root path to which we work relatively 2014-11-04 21:03:04 +01:00
Sebastian Messmer
560d304fb8 Rename functions to avoid name clashes 2014-11-04 20:50:42 +01:00
Sebastian Messmer
d38480b234 Use boost::filesystem::path 2014-11-04 19:54:35 +01:00