Cryptsetup 1.6.8 Release Notes
==============================

Changes since version 1.6.7

* If the null cipher (no encryption) is used, allow only empty password for LUKS.
  (Previously cryptsetup accepted any password in this case.)

  The null cipher can be used only for testing and it is used temporarily during
  offline encrypting not yet encrypted device (cryptsetup-reencrypt tool).

  Accepting only empty password prevents situation when someone adds another
  LUKS device using the same UUID (UUID of existing LUKS device) with faked
  header containing null cipher.
  This could force user to use different LUKS device (with no encryption)
  without noticing.
  (IOW it prevents situation when attacker intentionally forces
  user to boot into different system just by LUKS header manipulation.)

  Properly configured systems should have an additional integrity protection
  in place here (LUKS here provides only confidentiality) but it is better
  to not allow this situation in the first place.

  (For more info see QubesOS Security Bulletin QSB-019-2015.)

* Properly support stdin "-" handling for luksAddKey for both new and old
  keyfile parameters.

* If encrypted device is file-backed (it uses underlying loop device),
  cryptsetup resize will try to resize underlying loop device as well.
  (It can be used to grow up file-backed device in one step.)

* Cryptsetup now allows to use empty password through stdin pipe.
  (Intended only for testing in scripts.)

Cryptsetup API NOTE:

Direct terminal handling and password calling callback for passphrase
entry will be removed from libcryptsetup in next major (2.x) version
(application should handle it itself).
It means that application have to always provide password in API calls.

Functions returning last error will be removed in next major version (2.x).
These functions did not work properly for early initialization errors
and application can implement better function easily using own error callback.

See comments in libcryptsetup.h for more info about deprecated functions.
