Commit Graph

185 Commits

Author SHA1 Message Date
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
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
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
86c2144a37 Implement migration from file systems without version numbers 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
a5391a854d Use VersionCountingBlockStore 2016-06-26 22:15:52 -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
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
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
9bb2e2e89a Implement fsync() and fdatasync() syscalls for flushing open files 2016-06-07 18:36:59 -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
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
c5a6f16cd5 use a macro to silence compiler warnings 2016-06-02 09:54:39 +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
183b9cf74b Fix utimens() behavior: It now updates ctime as well. 2016-05-27 17:26:23 -07:00
Sebastian Messmer
f6545bbcc3 Move fsblobstore::now() to cpputils 2016-05-27 15:46:05 -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
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
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
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
67c5495db7 TODOs 2016-03-24 07:56: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
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
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
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
5753e4f71c Switch to new git version number recognition 2016-03-02 13:53:37 +01:00
Sebastian Messmer
3254220987 Filesystems have a blocksizeBytes configuration option 2016-03-01 17:45:48 +01:00
Sebastian Messmer
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
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
7f1493ab92 Increase scrypt KDF effort for generating the config file key from the password 2016-02-16 20:35:51 +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
7ede09877e Removed resolved TODO 2016-02-14 02:29:27 +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
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
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