Milan Broz
2a1a773777
Fixes and workarounds for some Coverity scan reports.
2018-04-30 12:26:12 +02:00
Milan Broz
b00a87d8fa
Remove trailing EOL for verbose and error messages.
2018-04-26 10:38:17 +02:00
Milan Broz
e58883c183
Hide return code check fot fallocate (that can silenty fail in this context).
2018-04-26 09:55:31 +02:00
Milan Broz
6997506bb9
Fix error messages and include benchmark string for translators.
2018-04-25 09:35:11 +02:00
Milan Broz
487965dc8a
Fix LUKS convert on trimmed headers in file.
...
If last write in move area failed, the keyslot is in fact destroyed.
We need to at least ensure that the whole area is there
(so write fails only for hard errors).
2018-04-24 16:36:17 +02:00
Milan Broz
f63e1cfbfc
Rename contains() to json_contains().
2018-04-24 11:04:53 +02:00
Milan Broz
f049f719f8
Fix keyslot validation.
2018-04-24 10:51:47 +02:00
Ondrej Kozina
f6be62ac5f
Add repair for known glitches in LUKS2 json.
2018-04-21 20:27:05 +02:00
Ondrej Kozina
dddd30bef8
Add paranoid check for accidental volume key length change.
2018-04-21 20:18:00 +02:00
Ondrej Kozina
a054206d25
Suppress useless slash escaping in json lib
2018-04-21 20:14:28 +02:00
Ondrej Kozina
5b6f06b2ac
Hide luks2 specific keyslot allocation from internal api.
2018-04-21 19:43:11 +02:00
Ondrej Kozina
6f83822b6e
Validate all keyslot implementations after load and before write.
2018-04-21 19:42:55 +02:00
Ondrej Kozina
9b635a3e90
Cleanup LUKS2 keyslot specific validation.
...
- do not run general LUKS2 format validation from inside the specific one
- validate luks2 json object only
- temporary move digests count restrictions, going to be fixed in next
commit
2018-04-21 19:37:05 +02:00
Ondrej Kozina
172af5465d
Harden LUKS2 keyslot kdf section validation.
2018-04-21 19:36:31 +02:00
Ondrej Kozina
22f10dd8d2
Remove custom made 'contains' helper from keyslot validation.
2018-04-21 10:57:24 +02:00
Ondrej Kozina
45356f5e12
Split keyslot update in separate functions.
...
This patch fixes several problems:
- pbkdf benchmark should be run with keyslot encryption key length
instead volume key length
- run LUKS2 keyslot validation on final keyslot json object instead
temporary stub created in keyslot_alloc
- replace whole json kdf object during keyslot update. We left behind
old parameters from old pbkdf during transition to differnt type
2018-04-21 10:53:54 +02:00
Ondrej Kozina
08ee50403d
Move reading keyslot pbkdf params in helper.
2018-04-20 21:08:03 +02:00
Milan Broz
aa1551c6e8
Introduce CRYPT_SLOT_UNBOUND keyslot status for LUKS2.
...
A keyslot not bound to any segment can store any key for any purpose.
To easily check slot status, new enum value is introduced.
This status is valid only for LUKS2, so the functions are backward compatible
with LUKS1.
2018-04-19 22:28:13 +02:00
Ondrej Kozina
6f6e1efbc8
Abort conversion when wrapped key cipher is used.
2018-04-15 15:40:48 +02:00
Milan Broz
9a72ec366d
Move generic ciper backend utilities to separate file.
...
And add wrapped key check.
2018-04-15 15:31:10 +02:00
Ondrej Kozina
4eb75f3c80
Add debug message for failed external token validation.
2018-04-15 13:10:32 +02:00
Ondrej Kozina
e5f72a0d4f
Remove duplicate CRYPT_ANY_TOKEN define.
2018-04-15 13:10:01 +02:00
Ondrej Kozina
70077db07d
Abort conversion when LUKS2 header contains tokens.
...
Tokens may contain import 3rd party data. Prompt users
to remove such tokens explicitly.
2018-04-15 13:08:44 +02:00
Ondrej Kozina
eed682c529
Add fixme in luks2->luks1 convert code.
2018-04-15 13:05:22 +02:00
Ondrej Kozina
48bf08922c
Make all LUKS2 key size helpers return negative value on error.
2018-04-15 13:03:51 +02:00
Ondrej Kozina
3616ee50c0
Fix off by one bug in LUKS2 keyslot max id allocation.
...
This is almost impossible to hit bug. The max keyslot id is
checked in higher layer.
2018-04-12 15:50:24 +02:00
Ondrej Kozina
255c8e8ff4
Avoid pbkdf benchmark on LUKS2 header down conversion.
...
Also clarify use of placeholder keyslots in down conversion.
2018-04-12 15:49:35 +02:00
Ondrej Kozina
35d29b22c0
Move CRYPT_ANY_DIGEST definition.
2018-04-11 15:49:29 +02:00
Ondrej Kozina
fee1d659cf
Fix wrong digest assignment to new LUKS2 (volume key) keyslot.
...
All new LUKS2 keyslots added by passphrase or by volume key
were assigned to digest 0 despite the fact segment was assigned
to different digest.
2018-04-11 15:49:15 +02:00
Milan Broz
23b01621ff
Print better debug message for open with write mode.
2018-04-10 15:33:30 +02:00
Milan Broz
f21ebaf839
Check LUKS2 conversion for luksmeta header.
...
We will reject upconversion if there is a luksmeta magic signature.
2018-04-10 14:54:35 +02:00
Milan Broz
f6f00b98a7
Always convert the whole last keyslot (including alignment).
2018-04-10 14:53:33 +02:00
Milan Broz
187170ec51
Check cipher before writing metadata (LUKS2).
...
Some ciphers and key sizes created on-disk metadata that cannot be used.
Use the same test for length-preserving cipher as LUKS1.
Also check if key for integrity algorithm is not too small.
Fixes #373 .
2018-04-06 12:57:58 +02:00
Milan Broz
ed2968e3e8
Add paes to ciphers that cannot be used for LUKS2 keyslot encryption.
...
And use AES-XTS for keyslot in this case.
2018-03-31 17:42:30 +02:00
Ondrej Kozina
1e2ad19d68
Validate LUKS2 keyslot json before opening it.
2018-03-22 14:06:31 +01:00
Ondrej Kozina
7bee66fe36
Add new luks2 keyslot validation condition.
2018-03-22 14:05:19 +01:00
Ondrej Kozina
303fe886b7
Fix misleading param name in prototype.
2018-03-22 14:05:08 +01:00
Ondrej Kozina
761a472b45
Remove missing digest condition from LUKS2 digest verification.
2018-03-22 14:04:56 +01:00
Milan Broz
44fa0bfbc6
Ensure that we do not process null in atoi call.
2018-02-28 08:57:10 +01:00
Ondrej Kozina
bd370ab789
Fix bugs in crypt_persistent_flags_get.
...
various bugfixes:
- erase flags variable if no flags are stored
- do not print false debug warning
- during activation do not overwrite activation flags
with persistent flags
2018-02-27 11:58:05 +01:00
Milan Broz
fb6b4739e4
Clean up keyring handling.
...
Move all keyring functions to one place and separate LUKS2 specific
code to generic handling.
Also fix possible mismatch if volume key is in keyring but it is not native
LUKS2 device (libarary cannot process such a device properly).
2018-02-22 15:26:07 +01:00
Milan Broz
1ac353d24e
Allocate key description in volume key.
...
The key description is now allocated by volume key wrappers.
2018-02-22 15:23:11 +01:00
Ondrej Kozina
f3a9e95dd8
Add simple API for token assignment reporting.
2018-02-22 15:21:37 +01:00
Ondrej Kozina
7378e3be01
Allow crypt_token_json_set to create internal types.
2018-02-22 15:21:31 +01:00
Ondrej Kozina
1968efe9f0
Do not allow unexpected fields in keyring token validation.
2018-02-22 15:21:24 +01:00
Milan Broz
2b6808f165
Fix some anoying gcc buffer size warnings.
2018-02-14 18:23:25 +01:00
Milan Broz
16dc58312c
Move PBKDF limits to crypto backend (to one place).
2018-02-08 15:34:45 +01:00
Milan Broz
180d96234e
Fix another compiler warnings with extra flags.
2018-01-20 21:17:10 +01:00
Milan Broz
1fe014dbae
Update copyright year.
2018-01-20 17:55:21 +01:00
Milan Broz
1ca439f4e0
Fix some warnings found during static analysis.
2018-01-20 14:42:05 +01:00