Sebastian Messmer
556d9cf452
New default block size: 16KB
2017-09-19 11:20:28 +01:00
Sebastian Messmer
5458af7c52
Rename blockstore::Key -> blockstore::BlockId
2017-09-17 02:07:27 +01:00
Sebastian Messmer
10e11f67e2
Make blockstore::Key more typesafe
2017-09-17 00:10:53 +01:00
Sebastian Messmer
5299be5dda
Wire through the missingBlockIsIntegrityViolation setting
2017-09-16 16:49:33 +01:00
Sebastian Messmer
b6ce7c3ae4
Allow disabling integrity checks on command line
2017-09-16 16:18:53 +01:00
Sebastian Messmer
666d24e7b8
Fix no-compatibility mode
2017-09-16 00:52:23 +01:00
Sebastian Messmer
f6b6875bb2
Rename VersionCountingBlockStore -> IntegrityBlockStore
2017-09-16 00:18:58 +01:00
Sebastian Messmer
7e56c46bb0
CryFS tells the operating system to not swap the encryption key to the disk (note: this is best-effort and cannot be guaranteed. Hibernation, for example, will still write the encryption key to the disk)
2017-09-05 00:43:43 +01:00
Sebastian Messmer
3aa8b74fd9
Fix fsstat on osx
2017-08-31 23:40:25 +01:00
Sebastian Messmer
fc21b0882a
Fix relatime performance
2017-08-24 08:19:16 +01:00
Sebastian Messmer
5fb4098c8b
Implement relatime behavior for performance
2017-08-23 20:32:36 +01:00
Sebastian Messmer
679b14a4d8
* Allow mounting using system mount tool and /etc/fstab (e.g. mount -t fuse.cryfs basedir mountdir)
...
* Pass fuse options directly to cryfs (i.e. 'cryfs basedir mountdir -o allow_other' instead of 'cryfs basedir mountdir -- -o allow_other')
2017-08-23 09:56:03 +01:00
Sebastian Messmer
ffc0b5195c
- Fix CachingBlockStore2_Specific test cases to actually test CachingBlockStore2
...
- Remove old CachingBlockStore
2017-08-22 00:03:04 +01:00
Sebastian Messmer
9d298bad6c
Switch to new caching block store
2017-08-21 23:11:45 +01:00
Sebastian Messmer
4a602ce7a5
Remove old blockstore implementations
2017-07-20 19:32:42 -07:00
Sebastian Messmer
acf01ec4ff
Actually wire up CryDevice to use new block stores
2017-07-18 14:49:51 -07:00
Sebastian Messmer
317088e449
Rename unique_ref::isValid to is_valid to comply with naming scheme of other functions
2017-04-10 14:16:30 -07:00
Sebastian Messmer
9ada10db4d
Improve unique_ref
2017-04-03 14:43:32 +01:00
Sebastian Messmer
d84e65ad76
Merge from develop
2017-02-18 13:22:43 +00:00
Sebastian Messmer
19bfe97d52
du reports correct space usage
2017-02-18 13:21:54 +00:00
Sebastian Messmer
cab1c71cac
Merge from develop
2017-02-04 19:18:00 +00:00
Sebastian Messmer
54e0ffce2e
Merge branch 'develop' of github.com:cryfs/cryfs into develop
2017-02-04 19:03:32 +00:00
Sebastian Messmer
9a304fc52b
Upgrade spdlog to 0.11.0
2017-02-04 19:03:20 +00:00
Sebastian Messmer
596d9d0426
Merge from develop
2017-02-04 14:38:14 +00:00
Sebastian Messmer
7267bb5be4
Fix buid on Mac OS X
2017-02-04 14:21:00 +00:00
Sebastian Messmer
42765c6be6
Merge from develop
2017-01-21 20:24:09 +00:00
Sebastian Messmer
e37d84a3d6
fspp::Dir, fspp::File and fspp::Symlink don't inherit from fspp::Node anymore. This allows file systems to return a generic fspp::Node instead of a concrete subclass when the operation doesn't need to know what type of node it is.
2017-01-21 19:16:35 +00:00
Sebastian Messmer
b027f8c007
Merge from develop
2016-09-24 20:43:54 +02:00
Sebastian Messmer
1e9fdc9aa7
Refactor noninteractive mode. All yes/no questions are forced to define a default that will be used in noninteractive mode.
2016-09-24 20:28:56 +02:00
Sebastian Messmer
789bfc7527
Fix warning from static analysis tool about std::moving a large CryConfig object
2016-09-24 11:42:57 +02:00
Sebastian Messmer
e30656797b
Add compatibility with Crypto++ 5.6.4
2016-09-24 09:39:37 +02:00
Sebastian Messmer
46183976ee
Fix missing virtual destructor and potential integer overflow
2016-09-21 20:07:20 +02:00
Sebastian Messmer
457ca52eb3
Add assertions to unique_ref
2016-07-14 16:29:02 +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
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
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
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