Commit Graph

1542 Commits

Author SHA1 Message Date
Ondrej Kozina
3e37975a00 Fix cryptsetup-reencrypt verbose message.
Print volume key change only when --keep-key option is not specified.
2018-02-11 14:52:34 +01:00
Ondrej Kozina
b0e252684d Allow higher keyslot numbers with LUKS2 format in reencryption. 2018-02-11 14:49:47 +01:00
Ondrej Kozina
919e1c3f08 Adapt tests to --pbkdf-force-iterations restrictions. 2018-02-08 15:35:02 +01:00
Milan Broz
16dc58312c Move PBKDF limits to crypto backend (to one place). 2018-02-08 15:34:45 +01:00
Ondrej Kozina
169bd9db5e Do not allow forced pbkdf parameters below minimal values. 2018-02-08 15:33:08 +01:00
Milan Broz
4e5e8fd8fe cryptsetup: Print message about operation aborted if user did not answer YES.
Thanks Colin Walters for the initial idea in !33.
2018-01-24 10:17:28 +01:00
Milan Broz
8728ba08e2 Fix loopaesOpen for keyfile on standard input.
The change in keyfile processing caused that special loopAES
keyfiles are no longer read from stdin if key-file argument is "-".

Fix it by using /dev/stdin in cryptsetup if "-" is detected.
(The libcryptsetup API no longer parses spacial meaning of "-" internally).

Fixes #364.
2018-01-24 09:05:52 +01:00
Milan Broz
3ba07ed27f Fix another typo in release notes. 2018-01-21 12:59:08 +01:00
Milan Broz
9b4b659804 Fix missing 2.0.0 release notes in readme.md. 2018-01-21 12:48:57 +01:00
Milan Broz
c00a31077c Update Readme.md for 2.0.1. 2018-01-21 12:43:00 +01:00
Milan Broz
e8fc17f816 Prepare version 2.0.1. v2.0.1 2018-01-21 12:28:01 +01:00
Milan Broz
4a2da4b51e Add 2.0.1 Release Notes. 2018-01-21 12:10:23 +01:00
Milan Broz
180d96234e Fix another compiler warnings with extra flags. 2018-01-20 21:17:10 +01:00
Milan Broz
1a04ffbae4 Update LUKS1 standard doc (link fixes). 2018-01-20 18:46:00 +01:00
Milan Broz
1fe014dbae Update copyright year. 2018-01-20 17:55:21 +01:00
Milan Broz
579c31aa23 Update po files. 2018-01-20 17:26:49 +01:00
Milan Broz
74c914475f Increase maximum allowed PBKDF memory limit.
And also fix physical memory trimming function
to really allow requested value.
2018-01-20 17:04:02 +01:00
Milan Broz
1ca439f4e0 Fix some warnings found during static analysis. 2018-01-20 14:42:05 +01:00
Ondrej Kozina
08e7c143b3 Add internal code for LUKS2 keyslot params.
This fixes crypt_keyslot_add_by_key where we were unable to store
keyslot (unbound to segment) with different key_size.
The code used (new) volume key size implicitly which could be wrong
if new size was not compatible with cipher parameter for keyslot area.
2018-01-19 13:48:09 +01:00
Milan Broz
d399dfa792 Add error hint for wrongly formatted cipher strings in LUKS1. 2018-01-19 11:09:06 +01:00
Milan Broz
f6e613a76f Revert cipher requirement in parse cipher.
There is several specification that violate this (chacha20 etc).
Just use the old way...
2018-01-18 22:42:34 +01:00
Milan Broz
c6a8b6471a Allow ECB in cipher spec (fixes previous patch). 2018-01-18 21:55:52 +01:00
Ondrej Kozina
83589b7cec Extend LUKS2 specific tests.
Add yet another flawed dm-crypt test (keyring)
and test crypt_get_volume_key_size works
as expected after LUKS2 crypt_format (before
adding first keyslot).
2018-01-18 21:26:55 +01:00
Milan Broz
aeea93fa95 Properly fail in luksFormat if cipher format is missing required IV.
For now, crypto API quietly used cipher witout IV if a cipher
algorithm wihtou IV specificaton was used (e.g. aes-xts).

This caused fail later during activation.

This patch allows only two specific backed use without specified IV
(ECB mode and NULL cipher).

Also check cipher string early during parsing of CLI options.
2018-01-18 21:20:25 +01:00
Ondrej Kozina
be417d6605 Test keyring is disabled with flawed dm-crypt. 2018-01-18 14:37:51 +01:00
Ondrej Kozina
2f890dea18 Update tests for dm-crypt kernel key bugfix.
cryptsetup now requires dm-crypt v1.18.1 or higher
to use kernel keyring service for passing VKs.

Also, relevant API functions fail if CRYPT_ACTIVATE_KEYRING_KEY
is set, but library is not allowed to use kernel keyring for
VK.
2018-01-18 14:24:24 +01:00
Ondrej Kozina
de76628539 Return error for conflicting requests.
Return error when CRYPT_ACTIVATE_KEYRING_KEY flag is
raised but activation with vk in kernel keyring is not
possible.
2018-01-18 14:19:33 +01:00
Ondrej Kozina
598dd672bc Detect kernel version for dm-crypt kernel key bugfix.
When loading first dm-crypt table (or action that triggers dm-crypt
module load) we do not know dm-crypt version yet. Let's assume all
kernels before 4.15.0 are flawed and reject VK load via kernel keyring
service.

When dm-crypt is already in kernel, check for correct target version
instead (v1.18.1 or later).
2018-01-18 14:17:00 +01:00
Ondrej Kozina
d12fb3d6e1 Postpone use of kernel keyring for VKs to dm-crypt 1.18.1
Upstream dm-crypt v1.15.0 through v1.18.0 contains
serious bug in kernel key processing that may cause
data corruption for ciphers using essiv, tcw and lmk IVs.

Patch adds patch number processing to DM version checks.
2018-01-18 14:07:54 +01:00
Ondrej Kozina
9504d866b6 Use default segment alias in LUKS2 activatation. 2018-01-18 14:05:33 +01:00
Ondrej Kozina
865b1dc66e Add kernel key compat tests.
This test can detect ugly dm-crypt kernel key bug
present in kernels 4.10.0 through 4.15.0-rc8.
2018-01-18 14:05:13 +01:00
Ondrej Kozina
5143b210cf Return correct volume key size if internal volume key exists.
Return correct volume key size as long as valid volume key
is reachable at least in device context.
2018-01-18 13:42:11 +01:00
Milan Broz
f34ce81f25 Introduce new 64bit *keyfile_device_offset functions.
The keyfile interface was designed, well, for keyfiles.

Unfortunately, a keyfile can be placed on a device and the size_t offset
can overflow.

We have to introduce new set of fucntions that allows 64bit offsets even on 32bit systems:
 - crypt_resume_by_keyfile_device_offset
 - crypt_keyslot_add_by_keyfile_device_offset
 - crypt_activate_by_keyfile_device_offset
 - crypt_keyfile_device_read

The new functions have added _device_ in name.

Old functions are just internall wrappers around these.

Also cryptsetup --keyfile-offset and --new-keyfile-offset must now
process 64bit offsets.

For more info see issue 359.
2018-01-17 22:07:23 +01:00
madblobfish
b072c6c4c9 fix logic sentence error in releasenotes 2018-01-15 09:50:17 +01:00
Milan Broz
7951ed3bce Remove GMANE list archive that no longer exists. 2018-01-15 09:48:29 +01:00
Ondrej Kozina
02431c57db Force dmsetup to show dm-integrity keys in tests.
Recent dmsetup requires --showkeys option to
print dm-integrity keys.
2018-01-10 18:46:32 +01:00
Milan Broz
3f186c009c Auth tag size and iv size can depend on auth cipher.
Some experimental ciphers will use different IV sizes,
add parameter to check it in future (unused for now).
2018-01-05 16:38:58 +01:00
Milan Broz
6f4c15b2b2 Use /run/cryptsetup as default for cryptsetup locking dir.
There are problems with sharing /run/lock with lockdev and also in early boot
we cannot create the whole subir chain.

It is safe to switch to separate locking dir.
This can be changed with --with-luks2-lock-path and --with-luks2-lock-dir-perms
configure switches.

See Issue#361 and issue#362.
2018-01-04 09:23:11 +01:00
Ondrej Kozina
b31e029000 Validate LUKS2 header in crypt_set_uuid(). 2018-01-04 09:20:23 +01:00
Ondrej Kozina
5f5ffcd48a Remove logging from keyring utilities.
Reduce bloated code in low level keyring utilities code.
Move log messages higher the library code.

Also return -ENOTSUP when code was compiled out by configure
option.
2018-01-04 09:20:14 +01:00
Ondrej Kozina
cc76f3746f Remove unused digests handling code.
Remove code for handling multiple digests per single keyslot.
Same would apply to segments with the only exception of segment
in-reencryption. We need that exception so that we will not lose
old key digests too early.
2018-01-04 09:17:34 +01:00
Yuri Chornoivan
982da4d20c Fix minor typos 2018-01-04 09:13:58 +01:00
Milan Broz
113374fd04 Update po files. 2018-01-04 09:11:28 +01:00
Ondrej Kozina
e4520693dd API docs cleanup and clarifications 2017-12-18 19:32:44 +01:00
Milan Broz
ccffc88ceb Check for recent Argon2 lib to support Argon2id.
Fixes Issue#356.
2017-12-17 15:29:35 +01:00
Milan Broz
7c9312607c Fix cryptsetup-reencrypt static build if pwquality is enabled.
In static build we need to link also to pwquality.

Fixes Issue#357.
2017-12-17 15:20:49 +01:00
Ondrej Kozina
286c2960c8 silence signed/unsigned compiler warnings
any array with item count close to INT32_MAX would
not fit LUKS2 header json area anyway
2017-12-13 12:06:58 +01:00
Ondrej Kozina
a12e374a04 harden checks of json_object_array_length return values
with json-c until 0.12.x json_object_array_length returned signed
integer. json-c 0.13.x and later changed return type to unsigned
size_t.

Consider return values less or equal to zero as empty array, otherwise
array is non-empty.
2017-12-13 12:06:54 +01:00
Ondrej Kozina
d799c8bd1e update crypt_resize api docs 2017-12-12 14:02:41 +01:00
Milan Broz
251eec8401 Update Readme.md. 2017-12-10 21:26:56 +01:00