Include 'sys/sysmacros.h' for GCC-9
[platform/upstream/cryptsetup.git] / docs / v1.3.0-ReleaseNotes
1 Cryptsetup 1.3.0 Release Notes
2 ==============================
3
4 Changes since version 1.2.0
5
6 Important changes
7 ~~~~~~~~~~~~~~~~~
8  * Several userspace crypto backends support
9
10    cryptsetup now supports generic crypto backend interface which allows
11    compile package with various crypto libraries, these are already implemented:
12
13    * gcrypt (default, used in previous versions)
14    * OpenSSL
15    * NSS (because of missing ripemd160 it cannot provide full backward compatibility)
16    * kernel userspace API (provided by kernel 2.6.38 and above)
17      (Note that kernel userspace backend is very slow for this type of operation.
18       But it can be usefull for embedded systems, because you can avoid userspace
19       crypto library completely.)
20
21    Backend is selected during configure time, using --with-crypto_backend option.
22
23    configure --with-crypto_backend=BACKEND (gcrypt/openssl/nss/kernel) [gcrypt]
24
25    Note that performance checked (iterations) in LUKS header will cause that
26    real iteration time will differ with different backends.
27    (There are huge differences in speed between libraries.)
28
29  * Cryptsetup now automatically allocates loopback device (/dev/loop) if device
30    argument is file and not plain device.
31
32    This require Linux kernel 2.6.25 and above (which implements loop autoclear flag).
33
34    You can see backing file in cryptsetup status output if underlying device is loopback.
35
36  * Introduce maximum default keyfile size, add configure option, visible in --help.
37
38    Cryptsetup now fails if read from keyfile exceeds internal limit.
39    You can always specify keyfile size (overrides limit) by using --keyfile-size option.
40
41  * Adds luksChangeKey command
42
43     cryptestup luksChangeKey --key-file <old keyfile> <new keyfile> [--key-slot X] 
44     cryptestup luksChangeKey [--key-slot X]  (for passphrase change)
45
46    This command allows passphrase/keyfile change in one step. If no key slot is
47    specified (and there is still free key slot on device) new slot is allocated before
48    the old is purged.
49
50    If --key-slot option is specified (or there is no free slot) command will overwrite
51    existing slot.
52    WARNING: Be sure you have another slot active or header backup when using explicit
53             key slot (so you can unlock the device even after possible media failure).
54
55  * Adds compatible support for loop-AES encryption type in loopaesOpen command.
56
57    Linux dm-crypt in 2.6.38 and above supports loop-AES compatible mapping
58    (including multi-key and special CBC mode, all three modes are supported).
59
60    If you have raw loop-AES keyfile (text file with uuencoded per-line keys), you can
61    access loop-AES volume using
62      cryptsetup loopaesOpen <device> <name> [--key-size 128] --key-file <key-file>
63
64    If you are using GPG encrypted keyfile
65      gpg --decrypt <key-file> | cryptsetup loopaesOpen --key-file=- <device> <name>
66
67    Do not forget to specify key size. Version and hash is automatically detected
68    according to number of lines in key file. For special configuration you can
69    override IV sector offset using --skip option, device offset with --offset
70    and hash algorithm using --hash, see man page for details.
71
72    Please note that loopAES dm-crypt mode is provided for compatibility reasons
73    (so you do not need to patch kernel and util-linux to map existing volumes)
74    but it is not, and never will be, optimized for speed.
75    It is experimental feature for now.
76
77  * Require the whole key read from keyfile in create command (regression in 1.2.0).
78
79  * WARNING: This is the last cryptsetup release which supports library with
80             old API (using struct crypt_options).
81             These calls are deprecated since 1.1.0 and AFAIK no application
82             is using it in recent distros. Removing compatible code will allow
83             new features to be implemented easily.
84
85 Other changes
86 ~~~~~~~~~~~~~
87  * Lock memory also in luksDump command.
88  * Fix return code when passphrase is read from pipe.
89  * Increase libcryptsetup version (loopAES change), still fully backward compatible.
90  * Fixes static build (--disable-static-cryptsetup now works properly).
91  * Supports secure data flag for device-mapper ioctl (will be in 2.6.39,
92    forcing kernel to wipe all ioctl buffers with possible key data).
93    To enable this flag you need new device-mapper library, in LVM2 2.02.84.
94  * Add copyright texts into some files and adds GPL exception allowing
95    to distribute resulting binaries linked with OpenSSL.
96  * Update FAQ.
97  * Fix message when locking memory fails.
98  * Fix luksAddKey return code if master key is used.
99  * Update some text files in distributions.
100  * Add docs directory with Release Notes archive.
101  * Do not hardcode loopback device name in tests, use internal loopback library.