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 |
|
Sebastian Messmer
|
24b81dab7b
|
Refine interface
|
2014-11-04 18:34:33 +01:00 |
|
Sebastian Messmer
|
a5f293e0f8
|
Code style
|
2014-11-04 18:14:21 +01:00 |
|
Sebastian Messmer
|
ec6955ec25
|
Separated fuse implementation from fuse interface
|
2014-11-04 18:03:59 +01:00 |
|
Sebastian Messmer
|
6e44f4a326
|
Implemented basic fuse interface
|
2014-11-04 17:40:31 +01:00 |
|
Sebastian Messmer
|
08c3ab0b38
|
Created a cryfs_lib directory for the main source code
|
2014-11-04 02:54:23 +01:00 |
|
Sebastian Messmer
|
e8b1b51cdb
|
Initiate CMake
|
2014-11-04 02:32:06 +01:00 |
|