From 931508c8db649abe23881e779f12105f344e848c Mon Sep 17 00:00:00 2001 From: openKylinBot Date: Fri, 13 May 2022 20:07:59 +0800 Subject: [PATCH] Import Upstream version 2.2.2 --- .gitignore | 55 + .travis-functions.sh | 160 + .travis.yml | 40 + AUTHORS | 4 + COPYING | 354 + COPYING.LGPL | 517 ++ ChangeLog | 6 + FAQ | 2807 ++++++++ INSTALL | 229 + Makefile.am | 50 + NEWS | 1 + README | 31 + README.md | 83 + TODO | 1 + autogen.sh | 79 + configure.ac | 639 ++ docs/ChangeLog.old | 887 +++ docs/Keyring.txt | 56 + docs/LUKS2-locking.txt | 61 + docs/doxyfile | 313 + docs/doxygen_index.h | 110 + docs/examples/Makefile | 17 + docs/examples/crypt_log_usage.c | 94 + docs/examples/crypt_luks_usage.c | 250 + docs/on-disk-format-luks2.pdf | Bin 0 -> 290651 bytes docs/on-disk-format.pdf | Bin 0 -> 119729 bytes docs/v1.0.7-ReleaseNotes | 92 + docs/v1.1.0-ReleaseNotes | 110 + docs/v1.1.1-ReleaseNotes | 47 + docs/v1.1.2-ReleaseNotes | 33 + docs/v1.1.3-ReleaseNotes | 13 + docs/v1.2.0-ReleaseNotes | 126 + docs/v1.3.0-ReleaseNotes | 101 + docs/v1.3.1-ReleaseNotes | 14 + docs/v1.4.0-ReleaseNotes | 131 + docs/v1.4.1-ReleaseNotes | 25 + docs/v1.4.2-ReleaseNotes | 44 + docs/v1.4.3-ReleaseNotes | 62 + docs/v1.5.0-ReleaseNotes | 241 + docs/v1.5.1-ReleaseNotes | 32 + docs/v1.6.0-ReleaseNotes | 261 + docs/v1.6.1-ReleaseNotes | 32 + docs/v1.6.2-ReleaseNotes | 25 + docs/v1.6.3-ReleaseNotes | 50 + docs/v1.6.4-ReleaseNotes | 57 + docs/v1.6.5-ReleaseNotes | 54 + docs/v1.6.6-ReleaseNotes | 29 + docs/v1.6.7-ReleaseNotes | 84 + docs/v1.6.8-ReleaseNotes | 47 + docs/v1.7.0-ReleaseNotes | 81 + docs/v1.7.1-ReleaseNotes | 36 + docs/v1.7.2-ReleaseNotes | 37 + docs/v1.7.3-ReleaseNotes | 20 + docs/v1.7.4-ReleaseNotes | 22 + docs/v1.7.5-ReleaseNotes | 22 + docs/v2.0.0-ReleaseNotes | 605 ++ docs/v2.0.1-ReleaseNotes | 109 + docs/v2.0.2-ReleaseNotes | 93 + docs/v2.0.3-ReleaseNotes | 121 + docs/v2.0.4-ReleaseNotes | 119 + docs/v2.0.5-ReleaseNotes | 102 + docs/v2.0.6-ReleaseNotes | 97 + docs/v2.1.0-ReleaseNotes | 210 + docs/v2.2.0-ReleaseNotes | 279 + docs/v2.2.1-ReleaseNotes | 36 + docs/v2.2.2-ReleaseNotes | 56 + lib/Makemodule.am | 110 + lib/base64.c | 605 ++ lib/base64.h | 68 + lib/bitops.h | 123 + lib/crypt_plain.c | 117 + lib/crypto_backend/Makemodule.am | 39 + lib/crypto_backend/argon2/LICENSE | 30 + lib/crypto_backend/argon2/Makemodule.am | 30 + lib/crypto_backend/argon2/README | 5 + lib/crypto_backend/argon2/argon2.c | 456 ++ lib/crypto_backend/argon2/argon2.h | 437 ++ .../argon2/blake2/blake2-impl.h | 154 + lib/crypto_backend/argon2/blake2/blake2.h | 89 + lib/crypto_backend/argon2/blake2/blake2b.c | 392 ++ .../argon2/blake2/blamka-round-opt.h | 471 ++ .../argon2/blake2/blamka-round-ref.h | 56 + lib/crypto_backend/argon2/core.c | 641 ++ lib/crypto_backend/argon2/core.h | 228 + lib/crypto_backend/argon2/encoding.c | 462 ++ lib/crypto_backend/argon2/encoding.h | 57 + lib/crypto_backend/argon2/opt.c | 283 + lib/crypto_backend/argon2/ref.c | 194 + lib/crypto_backend/argon2/thread.c | 57 + lib/crypto_backend/argon2/thread.h | 67 + lib/crypto_backend/argon2_generic.c | 79 + lib/crypto_backend/cipher_check.c | 157 + lib/crypto_backend/cipher_generic.c | 83 + lib/crypto_backend/crc32.c | 114 + lib/crypto_backend/crypto_backend.h | 133 + lib/crypto_backend/crypto_backend_internal.h | 59 + lib/crypto_backend/crypto_cipher_kernel.c | 283 + lib/crypto_backend/crypto_gcrypt.c | 481 ++ lib/crypto_backend/crypto_kernel.c | 394 ++ lib/crypto_backend/crypto_nettle.c | 435 ++ lib/crypto_backend/crypto_nss.c | 383 ++ lib/crypto_backend/crypto_openssl.c | 507 ++ lib/crypto_backend/crypto_storage.c | 320 + lib/crypto_backend/pbkdf2_generic.c | 232 + lib/crypto_backend/pbkdf_check.c | 431 ++ lib/integrity/integrity.c | 329 + lib/integrity/integrity.h | 95 + lib/internal.h | 264 + lib/libcryptsetup.h | 2257 +++++++ lib/libcryptsetup.pc.in | 10 + lib/libcryptsetup.sym | 123 + lib/libdevmapper.c | 2922 +++++++++ lib/loopaes/loopaes.c | 253 + lib/loopaes/loopaes.h | 46 + lib/luks1/af.c | 170 + lib/luks1/af.h | 64 + lib/luks1/keyencryption.c | 269 + lib/luks1/keymanage.c | 1238 ++++ lib/luks1/luks.h | 194 + lib/luks2/luks2.h | 608 ++ lib/luks2/luks2_digest.c | 455 ++ lib/luks2/luks2_digest_pbkdf2.c | 211 + lib/luks2/luks2_disk_metadata.c | 806 +++ lib/luks2/luks2_internal.h | 204 + lib/luks2/luks2_json_format.c | 405 ++ lib/luks2/luks2_json_metadata.c | 2415 +++++++ lib/luks2/luks2_keyslot.c | 942 +++ lib/luks2/luks2_keyslot_luks2.c | 785 +++ lib/luks2/luks2_keyslot_reenc.c | 336 + lib/luks2/luks2_luks1_convert.c | 881 +++ lib/luks2/luks2_reencrypt.c | 3426 ++++++++++ lib/luks2/luks2_segment.c | 412 ++ lib/luks2/luks2_token.c | 610 ++ lib/luks2/luks2_token_keyring.c | 170 + lib/nls.h | 34 + lib/random.c | 250 + lib/setup.c | 5824 +++++++++++++++++ lib/tcrypt/tcrypt.c | 1125 ++++ lib/tcrypt/tcrypt.h | 120 + lib/utils.c | 346 + lib/utils_benchmark.c | 209 + lib/utils_blkid.c | 323 + lib/utils_blkid.h | 64 + lib/utils_crypt.c | 249 + lib/utils_crypt.h | 55 + lib/utils_device.c | 989 +++ lib/utils_device_locking.c | 522 ++ lib/utils_device_locking.h | 47 + lib/utils_devpath.c | 458 ++ lib/utils_dm.h | 219 + lib/utils_fips.c | 46 + lib/utils_fips.h | 26 + lib/utils_io.c | 299 + lib/utils_io.h | 42 + lib/utils_keyring.c | 243 + lib/utils_keyring.h | 55 + lib/utils_loop.c | 276 + lib/utils_loop.h | 34 + lib/utils_pbkdf.c | 333 + lib/utils_storage_wrappers.c | 395 ++ lib/utils_storage_wrappers.h | 71 + lib/utils_wipe.c | 267 + lib/verity/rs.h | 63 + lib/verity/rs_decode_char.c | 197 + lib/verity/rs_encode_char.c | 173 + lib/verity/verity.c | 319 + lib/verity/verity.h | 75 + lib/verity/verity_fec.c | 282 + lib/verity/verity_hash.c | 458 ++ lib/volumekey.c | 147 + man/Makemodule.am | 15 + man/cryptsetup-reencrypt.8 | 295 + man/cryptsetup.8 | 1655 +++++ man/integritysetup.8 | 236 + man/veritysetup.8 | 228 + misc/11-dm-crypt.rules | 17 + misc/dict_search/Makefile | 17 + misc/dict_search/README | 22 + misc/dict_search/crypt_dict.c | 158 + misc/dracut_90reencrypt/README | 40 + misc/dracut_90reencrypt/check.old | 5 + misc/dracut_90reencrypt/install.old | 6 + misc/dracut_90reencrypt/module-setup.sh | 32 + misc/dracut_90reencrypt/parse-reencrypt.sh | 38 + misc/dracut_90reencrypt/reencrypt-verbose.sh | 6 + misc/dracut_90reencrypt/reencrypt.sh | 84 + misc/keyslot_checker/Makefile | 14 + misc/keyslot_checker/README | 120 + misc/keyslot_checker/chk_luks_keyslots.c | 371 ++ misc/luks-header-from-active | 59 + misc/luks2_keyslot_example/Makefile | 24 + misc/luks2_keyslot_example/README | 3 + misc/luks2_keyslot_example/keyslot_test.c | 409 ++ .../keyslot_test_remote_pass.c | 264 + po/LINGUAS | 18 + po/Makevars | 44 + po/POTFILES.in | 49 + po/cryptsetup.pot | 3721 +++++++++++ po/cs.po | 3974 +++++++++++ po/da.po | 3149 +++++++++ po/de.po | 3846 +++++++++++ po/es.po | 3943 +++++++++++ po/fi.po | 1933 ++++++ po/fr.po | 3975 +++++++++++ po/id.po | 815 +++ po/it.po | 3193 +++++++++ po/ja.po | 3684 +++++++++++ po/nl.po | 1972 ++++++ po/pl.po | 3688 +++++++++++ po/pt_BR.po | 3217 +++++++++ po/ru.po | 4161 ++++++++++++ po/sr.po | 1837 ++++++ po/sv.po | 3247 +++++++++ po/uk.po | 3925 +++++++++++ po/vi.po | 1958 ++++++ po/zh_CN.po | 3075 +++++++++ scripts/Makemodule.am | 5 + scripts/cryptsetup.conf.in | 1 + src/Makemodule.am | 133 + src/cryptsetup.c | 3872 +++++++++++ src/cryptsetup.h | 125 + src/cryptsetup_reencrypt.c | 1755 +++++ src/integritysetup.c | 709 ++ src/utils_blockdev.c | 189 + src/utils_luks2.c | 139 + src/utils_password.c | 339 + src/utils_tools.c | 633 ++ src/veritysetup.c | 562 ++ tests/00modules-test | 45 + tests/Makefile.am | 121 + tests/Makefile.localtest | 30 + tests/align-test | 320 + tests/align-test2 | 342 + tests/api-test-2.c | 4427 +++++++++++++ tests/api-test.c | 1912 ++++++ tests/api_test.h | 122 + tests/blkid-luks2-pv.img.xz | Bin 0 -> 5236 bytes tests/blockwise-compat | 377 ++ tests/compat-test | 1005 +++ tests/compat-test2 | 1001 +++ tests/compatimage.img.xz | Bin 0 -> 66732 bytes tests/compatimage2.img.xz | Bin 0 -> 66356 bytes tests/compatv10image.img.xz | Bin 0 -> 66688 bytes tests/conversion_imgs.tar.xz | Bin 0 -> 8149472 bytes tests/crypto-vectors.c | 923 +++ tests/cryptsetup-valg-supps | 36 + tests/device-test | 256 + tests/differ.c | 166 + tests/discards-test | 86 + tests/evil_hdr-keyslot_overlap.xz | Bin 0 -> 676 bytes tests/evil_hdr-luks_hdr_damage.xz | Bin 0 -> 612 bytes tests/evil_hdr-payload_overwrite.xz | Bin 0 -> 612 bytes tests/evil_hdr-small_luks_device.xz | Bin 0 -> 452 bytes tests/evil_hdr-stripes_payload_dmg.xz | Bin 0 -> 616 bytes ...-luks2-area-in-json-hdr-space-json0.img.sh | 72 + ...nerate-luks2-argon2-leftover-params.img.sh | 71 + .../generate-luks2-correct-full-json0.img.sh | 87 + ...s2-corrupted-hdr0-with-correct-chks.img.sh | 65 + ...s2-corrupted-hdr1-with-correct-chks.img.sh | 66 + ...te-luks2-invalid-checksum-both-hdrs.img.sh | 52 + ...enerate-luks2-invalid-checksum-hdr0.img.sh | 43 + ...enerate-luks2-invalid-checksum-hdr1.img.sh | 48 + ...generate-luks2-invalid-json-size-c0.img.sh | 68 + ...generate-luks2-invalid-json-size-c1.img.sh | 68 + ...generate-luks2-invalid-json-size-c2.img.sh | 85 + ...rate-luks2-invalid-keyslots-size-c0.img.sh | 71 + ...rate-luks2-invalid-keyslots-size-c1.img.sh | 67 + ...rate-luks2-invalid-keyslots-size-c2.img.sh | 68 + ...ate-luks2-invalid-object-type-json0.img.sh | 70 + ...te-luks2-invalid-opening-char-json0.img.sh | 70 + ...nerate-luks2-keyslot-missing-digest.img.sh | 72 + ...rate-luks2-keyslot-too-many-digests.img.sh | 70 + ...-luks2-metadata-size-128k-secondary.img.sh | 97 + .../generate-luks2-metadata-size-128k.img.sh | 94 + ...e-luks2-metadata-size-16k-secondary.img.sh | 97 + ...te-luks2-metadata-size-1m-secondary.img.sh | 97 + .../generate-luks2-metadata-size-1m.img.sh | 94 + ...-luks2-metadata-size-256k-secondary.img.sh | 97 + .../generate-luks2-metadata-size-256k.img.sh | 94 + ...te-luks2-metadata-size-2m-secondary.img.sh | 96 + .../generate-luks2-metadata-size-2m.img.sh | 94 + ...e-luks2-metadata-size-32k-secondary.img.sh | 97 + .../generate-luks2-metadata-size-32k.img.sh | 94 + ...te-luks2-metadata-size-4m-secondary.img.sh | 96 + .../generate-luks2-metadata-size-4m.img.sh | 94 + ...-luks2-metadata-size-512k-secondary.img.sh | 97 + .../generate-luks2-metadata-size-512k.img.sh | 94 + ...luks2-metadata-size-64k-inv-area-c0.img.sh | 94 + ...luks2-metadata-size-64k-inv-area-c1.img.sh | 96 + ...adata-size-64k-inv-keyslots-size-c0.img.sh | 96 + ...e-luks2-metadata-size-64k-secondary.img.sh | 97 + .../generate-luks2-metadata-size-64k.img.sh | 94 + ...issing-keyslot-referenced-in-digest.img.sh | 74 + ...missing-keyslot-referenced-in-token.img.sh | 72 + ...issing-segment-referenced-in-digest.img.sh | 74 + ...s2-missing-trailing-null-byte-json0.img.sh | 89 + ...te-luks2-non-null-byte-beyond-json0.img.sh | 72 + ...e-luks2-non-null-bytes-beyond-json0.img.sh | 76 + ...te-luks2-overlapping-areas-c0-json0.img.sh | 68 + ...te-luks2-overlapping-areas-c1-json0.img.sh | 70 + ...te-luks2-overlapping-areas-c2-json0.img.sh | 67 + ...rate-luks2-pbkdf2-leftover-params-0.img.sh | 71 + ...rate-luks2-pbkdf2-leftover-params-1.img.sh | 71 + ...s2-segment-crypt-missing-encryption.img.sh | 67 + ...uks2-segment-crypt-missing-ivoffset.img.sh | 67 + ...s2-segment-crypt-missing-sectorsize.img.sh | 67 + ...uks2-segment-crypt-wrong-encryption.img.sh | 67 + ...-luks2-segment-crypt-wrong-ivoffset.img.sh | 67 + ...s2-segment-crypt-wrong-sectorsize-0.img.sh | 67 + ...s2-segment-crypt-wrong-sectorsize-1.img.sh | 67 + ...s2-segment-crypt-wrong-sectorsize-2.img.sh | 67 + ...nerate-luks2-segment-missing-offset.img.sh | 67 + ...generate-luks2-segment-missing-size.img.sh | 67 + ...generate-luks2-segment-missing-type.img.sh | 67 + .../generate-luks2-segment-two.img.sh | 67 + ...generate-luks2-segment-unknown-type.img.sh | 68 + ...e-luks2-segment-wrong-flags-element.img.sh | 67 + .../generate-luks2-segment-wrong-flags.img.sh | 67 + ...generate-luks2-segment-wrong-offset.img.sh | 67 + ...generate-luks2-segment-wrong-size-0.img.sh | 67 + ...generate-luks2-segment-wrong-size-1.img.sh | 67 + ...generate-luks2-segment-wrong-size-2.img.sh | 67 + .../generate-luks2-segment-wrong-type.img.sh | 67 + ...erate-luks2-uint64-max-segment-size.img.sh | 68 + ...-luks2-uint64-overflow-segment-size.img.sh | 66 + ...te-luks2-uint64-signed-segment-size.img.sh | 67 + tests/generators/lib.sh | 180 + tests/img_fs_ext4.img.xz | Bin 0 -> 5680 bytes tests/img_fs_vfat.img.xz | Bin 0 -> 6124 bytes tests/img_fs_xfs.img.xz | Bin 0 -> 7676 bytes tests/integrity-compat-test | 418 ++ tests/keyring-compat-test | 211 + tests/keyring-test | 238 + tests/loopaes-test | 176 + tests/luks1-compat-test | 104 + tests/luks1-images.tar.xz | Bin 0 -> 67192 bytes tests/luks2-integrity-test | 176 + tests/luks2-reencryption-test | 1370 ++++ tests/luks2-validation-test | 233 + tests/luks2_header_requirements.xz | Bin 0 -> 130568 bytes tests/luks2_header_requirements_free.xz | Bin 0 -> 130492 bytes tests/luks2_keyslot_unassigned.img.xz | Bin 0 -> 270548 bytes tests/luks2_mda_images.tar.xz | Bin 0 -> 156028 bytes tests/luks2_valid_hdr.img.xz | Bin 0 -> 3684 bytes tests/mode-test | 171 + tests/password-hash-test | 190 + tests/reencryption-compat-test | 393 ++ tests/reencryption-compat-test2 | 473 ++ tests/tcrypt-compat-test | 168 + tests/tcrypt-images.tar.xz | Bin 0 -> 316528 bytes tests/test_utils.c | 622 ++ tests/unit-utils-io.c | 346 + tests/valg-api.sh | 11 + tests/valg.sh | 11 + tests/valid_header_file.xz | Bin 0 -> 608 bytes tests/verity-compat-test | 441 ++ 356 files changed, 149969 insertions(+) create mode 100644 .gitignore create mode 100644 .travis-functions.sh create mode 100644 .travis.yml create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 COPYING.LGPL create mode 100644 ChangeLog create mode 100644 FAQ create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 NEWS create mode 100644 README create mode 100644 README.md create mode 100644 TODO create mode 100755 autogen.sh create mode 100644 configure.ac create mode 100644 docs/ChangeLog.old create mode 100644 docs/Keyring.txt create mode 100644 docs/LUKS2-locking.txt create mode 100644 docs/doxyfile create mode 100644 docs/doxygen_index.h create mode 100644 docs/examples/Makefile create mode 100644 docs/examples/crypt_log_usage.c create mode 100644 docs/examples/crypt_luks_usage.c create mode 100644 docs/on-disk-format-luks2.pdf create mode 100644 docs/on-disk-format.pdf create mode 100644 docs/v1.0.7-ReleaseNotes create mode 100644 docs/v1.1.0-ReleaseNotes create mode 100644 docs/v1.1.1-ReleaseNotes create mode 100644 docs/v1.1.2-ReleaseNotes create mode 100644 docs/v1.1.3-ReleaseNotes create mode 100644 docs/v1.2.0-ReleaseNotes create mode 100644 docs/v1.3.0-ReleaseNotes create mode 100644 docs/v1.3.1-ReleaseNotes create mode 100644 docs/v1.4.0-ReleaseNotes create mode 100644 docs/v1.4.1-ReleaseNotes create mode 100644 docs/v1.4.2-ReleaseNotes create mode 100644 docs/v1.4.3-ReleaseNotes create mode 100644 docs/v1.5.0-ReleaseNotes create mode 100644 docs/v1.5.1-ReleaseNotes create mode 100644 docs/v1.6.0-ReleaseNotes create mode 100644 docs/v1.6.1-ReleaseNotes create mode 100644 docs/v1.6.2-ReleaseNotes create mode 100644 docs/v1.6.3-ReleaseNotes create mode 100644 docs/v1.6.4-ReleaseNotes create mode 100644 docs/v1.6.5-ReleaseNotes create mode 100644 docs/v1.6.6-ReleaseNotes create mode 100644 docs/v1.6.7-ReleaseNotes create mode 100644 docs/v1.6.8-ReleaseNotes create mode 100644 docs/v1.7.0-ReleaseNotes create mode 100644 docs/v1.7.1-ReleaseNotes create mode 100644 docs/v1.7.2-ReleaseNotes create mode 100644 docs/v1.7.3-ReleaseNotes create mode 100644 docs/v1.7.4-ReleaseNotes create mode 100644 docs/v1.7.5-ReleaseNotes create mode 100644 docs/v2.0.0-ReleaseNotes create mode 100644 docs/v2.0.1-ReleaseNotes create mode 100644 docs/v2.0.2-ReleaseNotes create mode 100644 docs/v2.0.3-ReleaseNotes create mode 100644 docs/v2.0.4-ReleaseNotes create mode 100644 docs/v2.0.5-ReleaseNotes create mode 100644 docs/v2.0.6-ReleaseNotes create mode 100644 docs/v2.1.0-ReleaseNotes create mode 100644 docs/v2.2.0-ReleaseNotes create mode 100644 docs/v2.2.1-ReleaseNotes create mode 100644 docs/v2.2.2-ReleaseNotes create mode 100644 lib/Makemodule.am create mode 100644 lib/base64.c create mode 100644 lib/base64.h create mode 100644 lib/bitops.h create mode 100644 lib/crypt_plain.c create mode 100644 lib/crypto_backend/Makemodule.am create mode 100644 lib/crypto_backend/argon2/LICENSE create mode 100644 lib/crypto_backend/argon2/Makemodule.am create mode 100644 lib/crypto_backend/argon2/README create mode 100644 lib/crypto_backend/argon2/argon2.c create mode 100644 lib/crypto_backend/argon2/argon2.h create mode 100644 lib/crypto_backend/argon2/blake2/blake2-impl.h create mode 100644 lib/crypto_backend/argon2/blake2/blake2.h create mode 100644 lib/crypto_backend/argon2/blake2/blake2b.c create mode 100644 lib/crypto_backend/argon2/blake2/blamka-round-opt.h create mode 100644 lib/crypto_backend/argon2/blake2/blamka-round-ref.h create mode 100644 lib/crypto_backend/argon2/core.c create mode 100644 lib/crypto_backend/argon2/core.h create mode 100644 lib/crypto_backend/argon2/encoding.c create mode 100644 lib/crypto_backend/argon2/encoding.h create mode 100644 lib/crypto_backend/argon2/opt.c create mode 100644 lib/crypto_backend/argon2/ref.c create mode 100644 lib/crypto_backend/argon2/thread.c create mode 100644 lib/crypto_backend/argon2/thread.h create mode 100644 lib/crypto_backend/argon2_generic.c create mode 100644 lib/crypto_backend/cipher_check.c create mode 100644 lib/crypto_backend/cipher_generic.c create mode 100644 lib/crypto_backend/crc32.c create mode 100644 lib/crypto_backend/crypto_backend.h create mode 100644 lib/crypto_backend/crypto_backend_internal.h create mode 100644 lib/crypto_backend/crypto_cipher_kernel.c create mode 100644 lib/crypto_backend/crypto_gcrypt.c create mode 100644 lib/crypto_backend/crypto_kernel.c create mode 100644 lib/crypto_backend/crypto_nettle.c create mode 100644 lib/crypto_backend/crypto_nss.c create mode 100644 lib/crypto_backend/crypto_openssl.c create mode 100644 lib/crypto_backend/crypto_storage.c create mode 100644 lib/crypto_backend/pbkdf2_generic.c create mode 100644 lib/crypto_backend/pbkdf_check.c create mode 100644 lib/integrity/integrity.c create mode 100644 lib/integrity/integrity.h create mode 100644 lib/internal.h create mode 100644 lib/libcryptsetup.h create mode 100644 lib/libcryptsetup.pc.in create mode 100644 lib/libcryptsetup.sym create mode 100644 lib/libdevmapper.c create mode 100644 lib/loopaes/loopaes.c create mode 100644 lib/loopaes/loopaes.h create mode 100644 lib/luks1/af.c create mode 100644 lib/luks1/af.h create mode 100644 lib/luks1/keyencryption.c create mode 100644 lib/luks1/keymanage.c create mode 100644 lib/luks1/luks.h create mode 100644 lib/luks2/luks2.h create mode 100644 lib/luks2/luks2_digest.c create mode 100644 lib/luks2/luks2_digest_pbkdf2.c create mode 100644 lib/luks2/luks2_disk_metadata.c create mode 100644 lib/luks2/luks2_internal.h create mode 100644 lib/luks2/luks2_json_format.c create mode 100644 lib/luks2/luks2_json_metadata.c create mode 100644 lib/luks2/luks2_keyslot.c create mode 100644 lib/luks2/luks2_keyslot_luks2.c create mode 100644 lib/luks2/luks2_keyslot_reenc.c create mode 100644 lib/luks2/luks2_luks1_convert.c create mode 100644 lib/luks2/luks2_reencrypt.c create mode 100644 lib/luks2/luks2_segment.c create mode 100644 lib/luks2/luks2_token.c create mode 100644 lib/luks2/luks2_token_keyring.c create mode 100644 lib/nls.h create mode 100644 lib/random.c create mode 100644 lib/setup.c create mode 100644 lib/tcrypt/tcrypt.c create mode 100644 lib/tcrypt/tcrypt.h create mode 100644 lib/utils.c create mode 100644 lib/utils_benchmark.c create mode 100644 lib/utils_blkid.c create mode 100644 lib/utils_blkid.h create mode 100644 lib/utils_crypt.c create mode 100644 lib/utils_crypt.h create mode 100644 lib/utils_device.c create mode 100644 lib/utils_device_locking.c create mode 100644 lib/utils_device_locking.h create mode 100644 lib/utils_devpath.c create mode 100644 lib/utils_dm.h create mode 100644 lib/utils_fips.c create mode 100644 lib/utils_fips.h create mode 100644 lib/utils_io.c create mode 100644 lib/utils_io.h create mode 100644 lib/utils_keyring.c create mode 100644 lib/utils_keyring.h create mode 100644 lib/utils_loop.c create mode 100644 lib/utils_loop.h create mode 100644 lib/utils_pbkdf.c create mode 100644 lib/utils_storage_wrappers.c create mode 100644 lib/utils_storage_wrappers.h create mode 100644 lib/utils_wipe.c create mode 100644 lib/verity/rs.h create mode 100644 lib/verity/rs_decode_char.c create mode 100644 lib/verity/rs_encode_char.c create mode 100644 lib/verity/verity.c create mode 100644 lib/verity/verity.h create mode 100644 lib/verity/verity_fec.c create mode 100644 lib/verity/verity_hash.c create mode 100644 lib/volumekey.c create mode 100644 man/Makemodule.am create mode 100644 man/cryptsetup-reencrypt.8 create mode 100644 man/cryptsetup.8 create mode 100644 man/integritysetup.8 create mode 100644 man/veritysetup.8 create mode 100644 misc/11-dm-crypt.rules create mode 100644 misc/dict_search/Makefile create mode 100644 misc/dict_search/README create mode 100644 misc/dict_search/crypt_dict.c create mode 100644 misc/dracut_90reencrypt/README create mode 100755 misc/dracut_90reencrypt/check.old create mode 100755 misc/dracut_90reencrypt/install.old create mode 100755 misc/dracut_90reencrypt/module-setup.sh create mode 100755 misc/dracut_90reencrypt/parse-reencrypt.sh create mode 100755 misc/dracut_90reencrypt/reencrypt-verbose.sh create mode 100755 misc/dracut_90reencrypt/reencrypt.sh create mode 100644 misc/keyslot_checker/Makefile create mode 100644 misc/keyslot_checker/README create mode 100644 misc/keyslot_checker/chk_luks_keyslots.c create mode 100755 misc/luks-header-from-active create mode 100644 misc/luks2_keyslot_example/Makefile create mode 100644 misc/luks2_keyslot_example/README create mode 100644 misc/luks2_keyslot_example/keyslot_test.c create mode 100644 misc/luks2_keyslot_example/keyslot_test_remote_pass.c create mode 100644 po/LINGUAS create mode 100644 po/Makevars create mode 100644 po/POTFILES.in create mode 100644 po/cryptsetup.pot create mode 100644 po/cs.po create mode 100644 po/da.po create mode 100644 po/de.po create mode 100644 po/es.po create mode 100644 po/fi.po create mode 100644 po/fr.po create mode 100644 po/id.po create mode 100644 po/it.po create mode 100644 po/ja.po create mode 100644 po/nl.po create mode 100644 po/pl.po create mode 100644 po/pt_BR.po create mode 100644 po/ru.po create mode 100644 po/sr.po create mode 100644 po/sv.po create mode 100644 po/uk.po create mode 100644 po/vi.po create mode 100644 po/zh_CN.po create mode 100644 scripts/Makemodule.am create mode 100644 scripts/cryptsetup.conf.in create mode 100644 src/Makemodule.am create mode 100644 src/cryptsetup.c create mode 100644 src/cryptsetup.h create mode 100644 src/cryptsetup_reencrypt.c create mode 100644 src/integritysetup.c create mode 100644 src/utils_blockdev.c create mode 100644 src/utils_luks2.c create mode 100644 src/utils_password.c create mode 100644 src/utils_tools.c create mode 100644 src/veritysetup.c create mode 100755 tests/00modules-test create mode 100644 tests/Makefile.am create mode 100644 tests/Makefile.localtest create mode 100755 tests/align-test create mode 100755 tests/align-test2 create mode 100644 tests/api-test-2.c create mode 100644 tests/api-test.c create mode 100644 tests/api_test.h create mode 100644 tests/blkid-luks2-pv.img.xz create mode 100755 tests/blockwise-compat create mode 100755 tests/compat-test create mode 100755 tests/compat-test2 create mode 100644 tests/compatimage.img.xz create mode 100644 tests/compatimage2.img.xz create mode 100644 tests/compatv10image.img.xz create mode 100644 tests/conversion_imgs.tar.xz create mode 100644 tests/crypto-vectors.c create mode 100644 tests/cryptsetup-valg-supps create mode 100755 tests/device-test create mode 100644 tests/differ.c create mode 100755 tests/discards-test create mode 100644 tests/evil_hdr-keyslot_overlap.xz create mode 100644 tests/evil_hdr-luks_hdr_damage.xz create mode 100644 tests/evil_hdr-payload_overwrite.xz create mode 100644 tests/evil_hdr-small_luks_device.xz create mode 100644 tests/evil_hdr-stripes_payload_dmg.xz create mode 100755 tests/generators/generate-luks2-area-in-json-hdr-space-json0.img.sh create mode 100755 tests/generators/generate-luks2-argon2-leftover-params.img.sh create mode 100755 tests/generators/generate-luks2-correct-full-json0.img.sh create mode 100755 tests/generators/generate-luks2-corrupted-hdr0-with-correct-chks.img.sh create mode 100755 tests/generators/generate-luks2-corrupted-hdr1-with-correct-chks.img.sh create mode 100755 tests/generators/generate-luks2-invalid-checksum-both-hdrs.img.sh create mode 100755 tests/generators/generate-luks2-invalid-checksum-hdr0.img.sh create mode 100755 tests/generators/generate-luks2-invalid-checksum-hdr1.img.sh create mode 100755 tests/generators/generate-luks2-invalid-json-size-c0.img.sh create mode 100755 tests/generators/generate-luks2-invalid-json-size-c1.img.sh create mode 100755 tests/generators/generate-luks2-invalid-json-size-c2.img.sh create mode 100755 tests/generators/generate-luks2-invalid-keyslots-size-c0.img.sh create mode 100755 tests/generators/generate-luks2-invalid-keyslots-size-c1.img.sh create mode 100755 tests/generators/generate-luks2-invalid-keyslots-size-c2.img.sh create mode 100755 tests/generators/generate-luks2-invalid-object-type-json0.img.sh create mode 100755 tests/generators/generate-luks2-invalid-opening-char-json0.img.sh create mode 100755 tests/generators/generate-luks2-keyslot-missing-digest.img.sh create mode 100755 tests/generators/generate-luks2-keyslot-too-many-digests.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-128k-secondary.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-128k.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-16k-secondary.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-1m-secondary.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-1m.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-256k-secondary.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-256k.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-2m-secondary.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-2m.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-32k-secondary.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-32k.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-4m-secondary.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-4m.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-512k-secondary.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-512k.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-64k-inv-area-c0.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-64k-inv-area-c1.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-64k-inv-keyslots-size-c0.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-64k-secondary.img.sh create mode 100755 tests/generators/generate-luks2-metadata-size-64k.img.sh create mode 100755 tests/generators/generate-luks2-missing-keyslot-referenced-in-digest.img.sh create mode 100755 tests/generators/generate-luks2-missing-keyslot-referenced-in-token.img.sh create mode 100755 tests/generators/generate-luks2-missing-segment-referenced-in-digest.img.sh create mode 100755 tests/generators/generate-luks2-missing-trailing-null-byte-json0.img.sh create mode 100755 tests/generators/generate-luks2-non-null-byte-beyond-json0.img.sh create mode 100755 tests/generators/generate-luks2-non-null-bytes-beyond-json0.img.sh create mode 100755 tests/generators/generate-luks2-overlapping-areas-c0-json0.img.sh create mode 100755 tests/generators/generate-luks2-overlapping-areas-c1-json0.img.sh create mode 100755 tests/generators/generate-luks2-overlapping-areas-c2-json0.img.sh create mode 100755 tests/generators/generate-luks2-pbkdf2-leftover-params-0.img.sh create mode 100755 tests/generators/generate-luks2-pbkdf2-leftover-params-1.img.sh create mode 100755 tests/generators/generate-luks2-segment-crypt-missing-encryption.img.sh create mode 100755 tests/generators/generate-luks2-segment-crypt-missing-ivoffset.img.sh create mode 100755 tests/generators/generate-luks2-segment-crypt-missing-sectorsize.img.sh create mode 100755 tests/generators/generate-luks2-segment-crypt-wrong-encryption.img.sh create mode 100755 tests/generators/generate-luks2-segment-crypt-wrong-ivoffset.img.sh create mode 100755 tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-0.img.sh create mode 100755 tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-1.img.sh create mode 100755 tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-2.img.sh create mode 100755 tests/generators/generate-luks2-segment-missing-offset.img.sh create mode 100755 tests/generators/generate-luks2-segment-missing-size.img.sh create mode 100755 tests/generators/generate-luks2-segment-missing-type.img.sh create mode 100755 tests/generators/generate-luks2-segment-two.img.sh create mode 100755 tests/generators/generate-luks2-segment-unknown-type.img.sh create mode 100755 tests/generators/generate-luks2-segment-wrong-flags-element.img.sh create mode 100755 tests/generators/generate-luks2-segment-wrong-flags.img.sh create mode 100755 tests/generators/generate-luks2-segment-wrong-offset.img.sh create mode 100755 tests/generators/generate-luks2-segment-wrong-size-0.img.sh create mode 100755 tests/generators/generate-luks2-segment-wrong-size-1.img.sh create mode 100755 tests/generators/generate-luks2-segment-wrong-size-2.img.sh create mode 100755 tests/generators/generate-luks2-segment-wrong-type.img.sh create mode 100755 tests/generators/generate-luks2-uint64-max-segment-size.img.sh create mode 100755 tests/generators/generate-luks2-uint64-overflow-segment-size.img.sh create mode 100755 tests/generators/generate-luks2-uint64-signed-segment-size.img.sh create mode 100644 tests/generators/lib.sh create mode 100644 tests/img_fs_ext4.img.xz create mode 100644 tests/img_fs_vfat.img.xz create mode 100644 tests/img_fs_xfs.img.xz create mode 100755 tests/integrity-compat-test create mode 100755 tests/keyring-compat-test create mode 100755 tests/keyring-test create mode 100755 tests/loopaes-test create mode 100755 tests/luks1-compat-test create mode 100644 tests/luks1-images.tar.xz create mode 100755 tests/luks2-integrity-test create mode 100755 tests/luks2-reencryption-test create mode 100755 tests/luks2-validation-test create mode 100644 tests/luks2_header_requirements.xz create mode 100644 tests/luks2_header_requirements_free.xz create mode 100644 tests/luks2_keyslot_unassigned.img.xz create mode 100644 tests/luks2_mda_images.tar.xz create mode 100644 tests/luks2_valid_hdr.img.xz create mode 100755 tests/mode-test create mode 100755 tests/password-hash-test create mode 100755 tests/reencryption-compat-test create mode 100755 tests/reencryption-compat-test2 create mode 100755 tests/tcrypt-compat-test create mode 100644 tests/tcrypt-images.tar.xz create mode 100644 tests/test_utils.c create mode 100644 tests/unit-utils-io.c create mode 100755 tests/valg-api.sh create mode 100755 tests/valg.sh create mode 100644 tests/valid_header_file.xz create mode 100755 tests/verity-compat-test diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e7f2628 --- /dev/null +++ b/.gitignore @@ -0,0 +1,55 @@ +po/*gmo +*~ +Makefile +Makefile.in +Makefile.in.in +*.lo +*.la +*.o +**/*.dirstamp +.deps/ +.libs/ +src/cryptsetup +src/veritysetup +ABOUT-NLS +aclocal.m4 +autom4te.cache/ +compile +config.guess +config.h +config.h.in +config.log +config.rpath +config.status +config.sub +configure +cryptsetup +cryptsetup-reencrypt +depcomp +install-sh +integritysetup +lib/libcryptsetup.pc +libtool +ltmain.sh +m4/ +missing +po/Makevars.template +po/POTFILES +po/Rules-quot +po/*.header +po/*.sed +po/*.sin +po/stamp-po +scripts/cryptsetup.conf +stamp-h1 +veritysetup +tests/valglog.* +*/*.dirstamp +*-debug-luks2-backup* +tests/api-test +tests/api-test-2 +tests/differ +tests/luks1-images +tests/tcrypt-images +tests/unit-utils-io +tests/vectors-test diff --git a/.travis-functions.sh b/.travis-functions.sh new file mode 100644 index 0000000..dbb1444 --- /dev/null +++ b/.travis-functions.sh @@ -0,0 +1,160 @@ +#!/bin/bash +# +# .travis-functions.sh: +# - helper functions to be sourced from .travis.yml +# - designed to respect travis' environment but testing locally is possible +# - modified copy from util-linux project +# + +if [ ! -f "configure.ac" ]; then + echo ".travis-functions.sh must be sourced from source dir" >&2 + return 1 || exit 1 +fi + +## some config settings +# travis docs say we get 1.5 CPUs +MAKE="make -j2" +DUMP_CONFIG_LOG="short" +export TS_OPT_parsable="yes" + +function configure_travis +{ + ./configure "$@" + err=$? + if [ "$DUMP_CONFIG_LOG" = "short" ]; then + grep -B1 -A10000 "^## Output variables" config.log | grep -v "_FALSE=" + elif [ "$DUMP_CONFIG_LOG" = "full" ]; then + cat config.log + fi + return $err +} + +function check_nonroot +{ + local cfg_opts="$1" + + [ -z "$cfg_opts" ] && return + + configure_travis \ + --enable-cryptsetup-reencrypt \ + --enable-internal-sse-argon2 \ + "$cfg_opts" \ + || return + + $MAKE || return + + make check +} + +function check_root +{ + local cfg_opts="$1" + + [ -z "$cfg_opts" ] && return + + configure_travis \ + --enable-cryptsetup-reencrypt \ + --enable-internal-sse-argon2 \ + "$cfg_opts" \ + || return + + $MAKE || return + + # FIXME: we should use -E option here + sudo make check +} + +function check_nonroot_compile_only +{ + local cfg_opts="$1" + + [ -z "$cfg_opts" ] && return + + configure_travis \ + --enable-cryptsetup-reencrypt \ + --enable-internal-sse-argon2 \ + "$cfg_opts" \ + || return + + $MAKE +} + +function travis_install_script +{ + # install some packages from Ubuntu's default sources + sudo apt-get -qq update + sudo apt-get install -qq >/dev/null \ + sharutils \ + libgcrypt20-dev \ + libssl-dev \ + libdevmapper-dev \ + libpopt-dev \ + uuid-dev \ + libsepol1-dev \ + libtool \ + dmsetup \ + autoconf \ + automake \ + pkg-config \ + autopoint \ + gettext \ + expect \ + keyutils \ + libjson-c-dev \ + libblkid-dev \ + || return +} + +function travis_before_script +{ + set -o xtrace + + ./autogen.sh + ret=$? + + set +o xtrace + return $ret +} + +function travis_script +{ + local ret + set -o xtrace + + case "$MAKE_CHECK" in + gcrypt) + check_nonroot "--with-crypto_backend=gcrypt" && \ + check_root "--with-crypto_backend=gcrypt" + ;; + gcrypt_compile) + check_nonroot_compile_only "--with-crypto_backend=gcrypt" + ;; + openssl) + check_nonroot "--with-crypto_backend=openssl" && \ + check_root "--with-crypto_backend=openssl" + ;; + openssl_compile) + check_nonroot_compile_only "--with-crypto_backend=openssl" + ;; + kernel) + check_nonroot "--with-crypto_backend=kernel" && \ + check_root "--with-crypto_backend=kernel" + ;; + kernel_compile) + check_nonroot_compile_only "--with-crypto_backend=kernel" + ;; + *) + echo "error, check environment (travis.yml)" >&2 + false + ;; + esac + + ret=$? + set +o xtrace + return $ret +} + +function travis_after_script +{ + return 0 +} diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..6219bcc --- /dev/null +++ b/.travis.yml @@ -0,0 +1,40 @@ +language: c + +sudo: required +dist: xenial + +compiler: + - gcc + +env: + - MAKE_CHECK="gcrypt" + - MAKE_CHECK="openssl" + - MAKE_CHECK="kernel" + +branches: + only: + - master + - wip-luks2 + - v2_0_x + +before_install: + - uname -a + - $CC --version + - which $CC + # workaround clang not system wide, fail on sudo make install + - export CC=`which $CC` + # workaround travis-ci issue #5301 + - unset PYTHON_CFLAGS + +install: + - source ./.travis-functions.sh + - travis_install_script + +before_script: + - travis_before_script + +script: + - travis_script + +after_script: + - travis_after_script diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..f4e5175 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,4 @@ +Jana Saout +Clemens Fruhwirth +Milan Broz +Ondrej Kozina diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..86289a1 --- /dev/null +++ b/COPYING @@ -0,0 +1,354 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + +----- +In addition, as a special exception, the copyright holders give +permission to link the code of portions of this program with the +OpenSSL library under certain conditions as described in each +individual source file, and distribute linked combinations +including the two. + +You must obey the GNU General Public License in all respects +for all of the code used other than OpenSSL. If you modify +file(s) with this exception, you may extend this exception to your +version of the file(s), but you are not obligated to do so. If you +do not wish to do so, delete this exception statement from your +version. If you delete this exception statement from all source +files in the program, then also delete it here. diff --git a/COPYING.LGPL b/COPYING.LGPL new file mode 100644 index 0000000..7e354d5 --- /dev/null +++ b/COPYING.LGPL @@ -0,0 +1,517 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +----- +In addition, as a special exception, the copyright holders give +permission to link the code of portions of this program with the +OpenSSL library under certain conditions as described in each +individual source file, and distribute linked combinations +including the two. + +You must obey the GNU Lesser General Public License in all respects +for all of the code used other than OpenSSL. If you modify +file(s) with this exception, you may extend this exception to your +version of the file(s), but you are not obligated to do so. If you +do not wish to do so, delete this exception statement from your +version. If you delete this exception statement from all source +files in the program, then also delete it here. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..b6c11ba --- /dev/null +++ b/ChangeLog @@ -0,0 +1,6 @@ +Since version 1.6 this file is no longer maintained. + +See docs/*ReleaseNotes for release changes documentation. + +See version control history for full commit messages. + https://gitlab.com/cryptsetup/cryptsetup/commits/master diff --git a/FAQ b/FAQ new file mode 100644 index 0000000..0d5cfa8 --- /dev/null +++ b/FAQ @@ -0,0 +1,2807 @@ +Frequently Asked Questions. + +Sections +1. General Questions +2. Setup +3. Common Problems +4. Troubleshooting +5. Security Aspects +6. Backup and Data Recovery +7. Interoperability with other Disk Encryption Tools +8. Issues with Specific Versions of cryptsetup +9. The Initrd question +10. References and Further Reading +A. Contributors + +1. General Questions + + + * 1.1 What is this? + + This is the FAQ (Frequently Asked Questions) for cryptsetup. It + covers Linux disk encryption with plain dm-crypt (one passphrase, no + management, no metadata on disk) and LUKS (multiple user keys with + one master key, anti-forensic features, metadata block at start of + device, ...). The latest version of this FAQ should usually be + available at + https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions + + + * 1.2 WARNINGS + + ATTENTION: If you are going to read just one thing, make it the + section on Backup and Data Recovery. By far the most questions on + the cryptsetup mailing list are from people that managed to damage + the start of their LUKS partitions, i.e. the LUKS header. In most + cases, there is nothing that can be done to help these poor souls + recover their data. Make sure you understand the problem and + limitations imposed by the LUKS security model BEFORE you face such a + disaster! In particular, make sure you have a current header backup + before doing any potentially dangerous operations. + + DEBUG COMMANDS: While the --debug option does not leak data, "strace" + and the like can leak your full passphrase. Do not post an strace + output with the correct passphrase to a mailing-list or online! See + Item 4.5 for more explanation. + + SSDs/FLASH DRIVES: SSDs and Flash are different. Currently it is + unclear how to get LUKS or plain dm-crypt to run on them with the + full set of security features intact. This may or may not be a + problem, depending on the attacker model. See Section 5.19. + + BACKUP: Yes, encrypted disks die, just as normal ones do. A full + backup is mandatory, see Section "6. Backup and Data Recovery" on + options for doing encrypted backup. + + CLONING/IMAGING: If you clone or image a LUKS container, you make a + copy of the LUKS header and the master key will stay the same! That + means that if you distribute an image to several machines, the same + master key will be used on all of them, regardless of whether you + change the passphrases. Do NOT do this! If you do, a root-user on + any of the machines with a mapped (decrypted) container or a + passphrase on that machine can decrypt all other copies, breaking + security. See also Item 6.15. + + DISTRIBUTION INSTALLERS: Some distribution installers offer to create + LUKS containers in a way that can be mistaken as activation of an + existing container. Creating a new LUKS container on top of an + existing one leads to permanent, complete and irreversible data loss. + It is strongly recommended to only use distribution installers after + a complete backup of all LUKS containers has been made. + + UBUNTU INSTALLER: In particular the Ubuntu installer seems to be + quite willing to kill LUKS containers in several different ways. + Those responsible at Ubuntu seem not to care very much (it is very + easy to recognize a LUKS container), so treat the process of + installing Ubuntu as a severe hazard to any LUKS container you may + have. + + NO WARNING ON NON-INTERACTIVE FORMAT: If you feed cryptsetup from + STDIN (e.g. via GnuPG) on LUKS format, it does not give you the + warning that you are about to format (and e.g. will lose any + pre-existing LUKS container on the target), as it assumes it is used + from a script. In this scenario, the responsibility for warning the + user and possibly checking for an existing LUKS header is shifted to + the script. This is a more general form of the previous item. + + LUKS PASSPHRASE IS NOT THE MASTER KEY: The LUKS passphrase is not + used in deriving the master key. It is used in decrypting a master + key that is randomly selected on header creation. This means that if + you create a new LUKS header on top of an old one with exactly the + same parameters and exactly the same passphrase as the old one, it + will still have a different master key and your data will be + permanently lost. + + PASSPHRASE CHARACTER SET: Some people have had difficulties with this + when upgrading distributions. It is highly advisable to only use the + 95 printable characters from the first 128 characters of the ASCII + table, as they will always have the same binary representation. + Other characters may have different encoding depending on system + configuration and your passphrase will not work with a different + encoding. A table of the standardized first 128 ASCII characters + can, e.g. be found on http://en.wikipedia.org/wiki/ASCII + + KEYBOARD NUM-PAD: Apparently some pre-boot authentication + environments (these are done by the distro, not by cryptsetup, so + complain there) treat digits entered on the num-pad and ones entered + regularly different. This may be because the BIOS USB keyboard + driver is used and that one may have bugs on some computers. If you + cannot open your device in pre-boot, try entering the digits over the + regular digit keys. + + + * 1.3 System specific warnings + + - Ubuntu as of 4/2011: It seems the installer offers to create LUKS + partitions in a way that several people mistook for an offer to + activate their existing LUKS partition. The installer gives no or an + inadequate warning and will destroy your old LUKS header, causing + permanent data loss. See also the section on Backup and Data + Recovery. + + This issue has been acknowledged by the Ubuntu dev team, see + here: http://launchpad.net/bugs/420080 + + Update 4/2013: I am still unsure whether this has been fixed by now, + best be careful. They also seem to have added even more LUKS killer + functionality to the Ubuntu installer. I can only strongly + recommended to not install Ubuntu on a system with existing LUKS + containers without complete backups. + + Update 11/2014: There seem to be other problems with existing LUKS + containers and Ubuntu as well, be extra careful when using LUKS + on Ubuntu in any way, but exactly as the Ubuntu installer does. + + + * 1.4 My LUKS-device is broken! Help! + + First: Do not panic! In many cases the data is still recoverable. + Do not do anything hasty! Steps: + + - Take some deep breaths. Maybe add some relaxing music. This may + sound funny, but I am completely serious. Often, critical damage is + done only after the initial problem. + + - Do not reboot. The keys may still be in the kernel if the device is + mapped. + + - Make sure others do not reboot the system. + + - Do not write to your disk without a clear understanding why this + will not make matters worse. Do a sector-level backup before any + writes. Often you do not need to write at all to get enough access + to make a backup of the data. + + - Relax some more. + + - Read section 6 of this FAQ. + + - Ask on the mailing-list if you need more help. + + + * 1.5 Who wrote this? + + Current FAQ maintainer is Arno Wagner . If you want + to send me encrypted email, my current PGP key is DSA key CB5D9718, + fingerprint 12D6 C03B 1B30 33BB 13CF B774 E35C 5FA1 CB5D 9718. + + Other contributors are listed at the end. If you want to contribute, + send your article, including a descriptive headline, to the + maintainer, or the dm-crypt mailing list with something like "FAQ + ..." in the subject. You can also send more raw information and have + me write the section. Please note that by contributing to this FAQ, + you accept the license described below. + + This work is under the "Attribution-Share Alike 3.0 Unported" + license, which means distribution is unlimited, you may create + derived works, but attributions to original authors and this license + statement must be retained and the derived work must be under the + same license. See http://creativecommons.org/licenses/by-sa/3.0/ for + more details of the license. + + Side note: I did text license research some time ago and I think this + license is best suited for the purpose at hand and creates the least + problems. + + + * 1.6 Where is the project website? + + There is the project website at + https://gitlab.com/cryptsetup/cryptsetup/ Please do not post + questions there, nobody will read them. Use the mailing-list + instead. + + + * 1.7 Is there a mailing-list? + + Instructions on how to subscribe to the mailing-list are at on the + project website. People are generally helpful and friendly on the + list. + + The question of how to unsubscribe from the list does crop up + sometimes. For this you need your list management URL, which is sent + to you initially and once at the start of each month. Go to the URL + mentioned in the email and select "unsubscribe". This page also + allows you to request a password reminder. + + Alternatively, you can send an Email to dm-crypt-request@saout.de + with just the word "help" in the subject or message body. Make sure + to send it from your list address. + + The mailing list archive is here: + https://marc.info/?l=dm-crypt + + + * 1.8 Unsubscribe from the mailing-list + + Send mail to dm-crypt-unsubscribe@saout.de from the subscribed + account. You will get an email with instructions. + + Basically, you just have to respond to it unmodified to get + unsubscribed. The listserver admin functions are not very fast. It + can take 15 minutes or longer for a reply to arrive (I suspect + greylisting is in use), so be patient. + + Also note that nobody on the list can unsubscribe you, sending + demands to be unsubscribed to the list just annoys people that are + entirely blameless for you being subscribed. + + If you are subscribed, a subscription confirmation email was sent to + your email account and it had to be answered before the subscription + went active. The confirmation emails from the listserver have + subjects like these (with other numbers): + + Subject: confirm 9964cf10..... + + and are sent from dm-crypt-request@saout.de. You should check whether + you have anything like it in your sent email folder. If you find + nothing and are sure you did not confirm, then you should look into a + possible compromise of your email account. + + +2. Setup + + * 2.1 LUKS Container Setup mini-HOWTO + + This item tries to give you a very brief list of all the steps you + should go though when creating a new LUKS encrypted container, i.e. + encrypted disk, partition or loop-file. + + 01) All data will be lost, if there is data on the target, make a + backup. + + 02) Make very sure you have the right target disk, partition or + loop-file. + + 03) If the target was in use previously, it is a good idea to wipe it + before creating the LUKS container in order to remove any trace of + old file systems and data. For example, some users have managed to + run e2fsck on a partition containing a LUKS container, possibly + because of residual ext2 superblocks from an earlier use. This can + do arbitrary damage up to complete and permanent loss of all data in + the LUKS container. + + To just quickly wipe file systems (old data may remain), use + + wipefs -a + + + To wipe file system and data, use something like + + cat /dev/zero > + + + This can take a while. To get a progress indicator, you can use the + tool dd_rescue (->google) instead or use my stream meter "wcs" + (source here: http://www.tansi.org/tools/index.html) in the following + fashion: + + cat /dev/zero | wcs > + + + Be very sure you have the right target, all data will be lost! + + Note that automatic wiping is on the TODO list for cryptsetup, so at + some time in the future this will become unnecessary. + + Alternatively, plain dm-crypt can be used for a very fast wipe with + crypto-grade randomness, see Item 2.19 + + 04) Create the LUKS container: + + cryptsetup luksFormat + + + Just follow the on-screen instructions. + + Note: Passphrase iteration is determined by cryptsetup depending on + CPU power. On a slow device, this may be lower than you want. I + recently benchmarked this on a Raspberry Pi and it came out at about + 1/15 of the iteration count for a typical PC. If security is + paramount, you may want to increase the time spent in iteration, at + the cost of a slower unlock later. For the Raspberry Pi, using + + cryptsetup luksFormat -i 15000 + + gives you an iteration count and security level equal to an average + PC for passphrase iteration and master-key iteration. If in doubt, + check the iteration counts with + + cryptsetup luksDump + + and adjust the iteration count accordingly by creating the container + again with a different iteration time (the number after '-i' is the + iteration time in milliseconds) until your requirements are met. + + 05) Map the container. Here it will be mapped to /dev/mapper/c1: + + cryptsetup luksOpen c1 + + + 06) (Optionally) wipe the container (make sure you have the right + target!): + + cat /dev/zero > /dev/mapper/c1 + + + Note that this creates a small information leak, as an attacker can + determine whether a 512 byte block is zero if the attacker has access + to the encrypted container multiple times. Typically a competent + attacker that has access multiple times can install a passphrase + sniffer anyways, so this leakage is not very significant. For + getting a progress indicator, see step 03. + + Note that at some time in the future, cryptsetup will do this for + you, but currently it is a TODO list item. + + 07) Create a file system in the mapped container, for example an + ext3 file system (any other file system is possible): + + mke2fs -j /dev/mapper/c1 + + + 08) Mount your encrypted file system, here on /mnt: + + mount /dev/mapper/c1 /mnt + + + Done. You can now use the encrypted file system to store data. Be + sure to read though the rest of the FAQ, these are just the very + basics. In particular, there are a number of mistakes that are easy + to make, but will compromise your security. + + + * 2.2 LUKS on partitions or raw disks? + + This is a complicated question, and made more so by the availability + of RAID and LVM. I will try to give some scenarios and discuss + advantages and disadvantages. Note that I say LUKS for simplicity, + but you can do all the things described with plain dm-crypt as well. + Also note that your specific scenario may be so special that most or + even all things I say below do not apply. + + Be aware that if you add LVM into the mix, things can get very + complicated. Same with RAID but less so. In particular, data + recovery can get exceedingly difficult. Only do so if you have a + really good reason and always remember KISS is what separates an + engineer from an amateur. Of course, if you really need the added + complexity, KISS is satisfied. But be very sure as there is a price + to pay for it. In engineering, complexity is always the enemy and + needs to be fought without mercy when encountered. + + Also consider using RAID instead of LVM, as at least with the old + superblock format 0.90, the RAID superblock is in the place (end of + disk) where the risk of it permanently damaging the LUKS header is + smallest and you can have your array assembled by the RAID controller + (i.e. the kernel), as it should be. Use partition type 0xfd for + that. I recommend staying away from superblock formats 1.0, 1.1 and + 1.2 unless you really need them. Be aware that you lose + autodetection with them and have to fall back to some user-space + script to do it. + + Scenarios: + + (1) Encrypted partition: Just make a partition to your liking, and + put LUKS on top of it and a filesystem into the LUKS container. This + gives you isolation of differently-tasked data areas, just as + ordinary partitioning does. You can have confidential data, + non-confidential data, data for some specific applications, + user-homes, root, etc. Advantages are simplicity as there is a 1:1 + mapping between partitions and filesystems, clear security + functionality and the ability to separate data into different, + independent (!) containers. + + Note that you cannot do this for encrypted root, that requires an + initrd. On the other hand, an initrd is about as vulnerable to a + competent attacker as a non-encrypted root, so there really is no + security advantage to doing it that way. An attacker that wants to + compromise your system will just compromise the initrd or the kernel + itself. The better way to deal with this is to make sure the root + partition does not store any critical data and move that to + additional encrypted partitions. If you really are concerned your + root partition may be sabotaged by somebody with physical access + (that would however strangely not, say, sabotage your BIOS, keyboard, + etc.), protect it in some other way. The PC is just not set-up for a + really secure boot-chain (whatever some people may claim). + + (2) Fully encrypted raw block device: For this, put LUKS on the raw + device (e.g. /dev/sdb) and put a filesystem into the LUKS container, + no partitioning whatsoever involved. This is very suitable for + things like external USB disks used for backups or offline + data-storage. + + (3) Encrypted RAID: Create your RAID from partitions and/or full + devices. Put LUKS on top of the RAID device, just if it were an + ordinary block device. Applications are just the same as above, but + you get redundancy. (Side note as many people seem to be unaware of + it: You can do RAID1 with an arbitrary number of components in + Linux.) See also Item 2.8. + + (4) Now, some people advocate doing the encryption below the RAID + layer. That has several serious problems. One is that suddenly + debugging RAID issues becomes much harder. You cannot do automatic + RAID assembly anymore. You need to keep the encryption keys for the + components in sync or manage them somehow. The only possible + advantage is that things may run a little faster as more CPUs do the + encryption, but if speed is a priority over security and simplicity, + you are doing this wrong anyways. A good way to mitigate a speed + issue is to get a CPU that does hardware AES. + + + * 2.3 How do I set up encrypted swap? + + As things that are confidential can end up in swap (keys, + passphrases, etc. are usually protected against being swapped to + disk, but other things may not be), it may be advisable to do + something about the issue. One option is to run without swap, which + generally works well in a desktop-context. It may cause problems in + a server-setting or under special circumstances. The solution to + that is to encrypt swap with a random key at boot-time. + + NOTE: This is for Debian, and should work for Debian-derived + distributions. For others you may have to write your own startup + script or use other mechanisms. + + 01) Add the swap partition to /etc/crypttab. A line like the + following should do it: + + swap /dev/ /dev/urandom swap,noearly + + + Warning: While Debian refuses to overwrite partitions with a + filesystem or RAID signature on it, if your disk IDs may change + (adding or removing disks, failure of disk during boot, etc.), you + may want to take additional precautions. Yes, this means that your + kernel device names like sda, sdb, ... can change between reboots! + This is not a concern if you have only one disk. One possibility is + to make sure the partition number is not present on additional disks + or also swap there. Another is to encapsulate the swap partition (by + making it a 1-disk RAID1 or by using LVM), so that it gets a + persistent identifier. Specifying it directly by UUID does not work, + unfortunately, as the UUID is part of the swap signature and that is + not visible from the outside due to the encryption and in addition + changes on each reboot with this setup. + + Note: Use /dev/random if you are paranoid or in a potential + low-entropy situation (embedded system, etc.). This may cause the + operation to take a long time during boot. If you are in a "no + entropy" situation, you cannot encrypt swap securely. In this + situation you should find some entropy, also because nothing else + using crypto will be secure, like ssh, ssl or GnuPG. + + Note: The "noearly" option makes sure things like LVM, RAID, etc. + are running. As swap is non-critical for boot, it is fine to start + it late. + + 02) Add the swap partition to /etc/fstab. A line like the following + should do it: + + /dev/mapper/swap none swap sw 0 0 + + + That is it. Reboot or start it manually to activate encrypted swap. + Manual start would look like this: + + /etc/init.d/crypdisks start + swapon /dev/mapper/swap + + + + * 2.4 What is the difference between "plain" and LUKS format? + + First, unless you happen to understand the cryptographic background + well, you should use LUKS. It does protect the user from a lot of + common mistakes. Plain dm-crypt is for experts. + + Plain format is just that: It has no metadata on disk, reads all + parameters from the commandline (or the defaults), derives a + master-key from the passphrase and then uses that to de-/encrypt the + sectors of the device, with a direct 1:1 mapping between encrypted + and decrypted sectors. + + Primary advantage is high resilience to damage, as one damaged + encrypted sector results in exactly one damaged decrypted sector. + Also, it is not readily apparent that there even is encrypted data on + the device, as an overwrite with crypto-grade randomness (e.g. from + /dev/urandom) looks exactly the same on disk. + + Side-note: That has limited value against the authorities. In + civilized countries, they cannot force you to give up a crypto-key + anyways. In quite a few countries around the world, they can force + you to give up the keys (using imprisonment or worse to pressure you, + sometimes without due process), and in the worst case, they only need + a nebulous "suspicion" about the presence of encrypted data. + Sometimes this applies to everybody, sometimes only when you are + suspected of having "illicit data" (definition subject to change) and + sometimes specifically when crossing a border. Note that this is + going on in countries like the US and the UK, to different degrees + and sometimes with courts restricting what the authorities can + actually demand. + + My advice is to either be ready to give up the keys or to not have + encrypted data when traveling to those countries, especially when + crossing the borders. The latter also means not having any + high-entropy (random) data areas on your disk, unless you can explain + them and demonstrate that explanation. Hence doing a zero-wipe of + all free space, including unused space, may be a good idea. + + Disadvantages are that you do not have all the nice features that the + LUKS metadata offers, like multiple passphrases that can be changed, + the cipher being stored in the metadata, anti-forensic properties + like key-slot diffusion and salts, etc.. + + LUKS format uses a metadata header and 8 key-slot areas that are + being placed at the beginning of the disk, see below under "What does + the LUKS on-disk format looks like?". The passphrases are used to + decrypt a single master key that is stored in the anti-forensic + stripes. + + Advantages are a higher usability, automatic configuration of + non-default crypto parameters, defenses against low-entropy + passphrases like salting and iterated PBKDF2 passphrase hashing, the + ability to change passphrases, and others. + + Disadvantages are that it is readily obvious there is encrypted data + on disk (but see side note above) and that damage to the header or + key-slots usually results in permanent data-loss. See below under + "6. Backup and Data Recovery" on how to reduce that risk. Also the + sector numbers get shifted by the length of the header and key-slots + and there is a loss of that size in capacity (1MB+4096B for defaults + and 2MB for the most commonly used non-default XTS mode). + + + * 2.5 Can I encrypt an already existing, non-empty partition to use LUKS? + + There is no converter, and it is not really needed. The way to do + this is to make a backup of the device in question, securely wipe the + device (as LUKS device initialization does not clear away old data), + do a luksFormat, optionally overwrite the encrypted device, create a + new filesystem and restore your backup on the now encrypted device. + Also refer to sections "Security Aspects" and "Backup and Data + Recovery". + + For backup, plain GNU tar works well and backs up anything likely + to be in a filesystem. + + + * 2.6 How do I use LUKS with a loop-device? + + This can be very handy for experiments. Setup is just the same as + with any block device. If you want, for example, to use a 100MiB + file as LUKS container, do something like this: + + head -c 100M /dev/zero > luksfile # create empty file + losetup /dev/loop0 luksfile # map luksfile to /dev/loop0 + cryptsetup luksFormat /dev/loop0 # create LUKS on loop device + + Afterwards just use /dev/loop0 as a you would use a LUKS partition. + To unmap the file when done, use "losetup -d /dev/loop0". + + + * 2.7 When I add a new key-slot to LUKS, it asks for a passphrase + but then complains about there not being a key-slot with that + passphrase? + + That is as intended. You are asked a passphrase of an existing + key-slot first, before you can enter the passphrase for the new + key-slot. Otherwise you could break the encryption by just adding a + new key-slot. This way, you have to know the passphrase of one of + the already configured key-slots in order to be able to configure a + new key-slot. + + + * 2.8 Encryption on top of RAID or the other way round? + + Unless you have special needs, place encryption between RAID and + filesystem, i.e. encryption on top of RAID. You can do it the other + way round, but you have to be aware that you then need to give the + passphrase for each individual disk and RAID autodetection will not + work anymore. Therefore it is better to encrypt the RAID device, + e.g. /dev/dm0 . + + This means that the typical layering looks like this: + + Filesystem <- top + | + Encryption + | + RAID + | + Raw partitions + | + Raw disks <- bottom + + The big advantage is that you can manage the RAID container just like + any RAID container, it does not care that what is in it is encrypted. + + + * 2.9 How do I read a dm-crypt key from file? + + Use the --key-file option, like this: + + cryptsetup create --key-file keyfile e1 /dev/loop0 + + This will read the binary key from file, i.e. no hashing or + transformation will be applied to the keyfile before its bits are + used as key. Extra bits (beyond the length of the key) at the end + are ignored. Note that if you read from STDIN, the data will still + be hashed, just as a key read interactively from the terminal. See + the man-page sections "NOTES ON PASSPHRASE PROCESSING..." for more + detail. + + * 2.10 How do I read a LUKS slot key from file? + + What you really do here is to read a passphrase from file, just as + you would with manual entry of a passphrase for a key-slot. You can + add a new passphrase to a free key-slot, set the passphrase of an + specific key-slot or put an already configured passphrase into a + file. In the last case make sure no trailing newline (0x0a) is + contained in the key file, or the passphrase will not work because + the whole file is used as input. + + To add a new passphrase to a free key slot from file, use something + like this: + + cryptsetup luksAddKey /dev/loop0 keyfile + + + To add a new passphrase to a specific key-slot, use something + like this: + + cryptsetup luksAddKey --key-slot 7 /dev/loop0 keyfile + + + To supply a key from file to any LUKS command, use the --key-file + option, e.g. like this: + + cryptsetup luksOpen --key-file keyfile /dev/loop0 e1 + + + + * 2.11 How do I read the LUKS master key from file? + + The question you should ask yourself first is why you would want to + do this. The only legitimate reason I can think of is if you want to + have two LUKS devices with the same master key. Even then, I think + it would be preferable to just use key-slots with the same + passphrase, or to use plain dm-crypt instead. If you really have a + good reason, please tell me. If I am convinced, I will add how to do + this here. + + + * 2.12 What are the security requirements for a key read from file? + + A file-stored key or passphrase has the same security requirements as + one entered interactively, however you can use random bytes and + thereby use bytes you cannot type on the keyboard. You can use any + file you like as key file, for example a plain text file with a human + readable passphrase. To generate a file with random bytes, use + something like this: + + head -c 256 /dev/random > keyfile + + + + * 2.13 If I map a journaled file system using dm-crypt/LUKS, does + it still provide its usual transactional guarantees? + + Yes, it does, unless a very old kernel is used. The required flags + come from the filesystem layer and are processed and passed onwards + by dm-crypt. A bit more information on the process by which + transactional guarantees are implemented can be found here: + + http://lwn.net/Articles/400541/ + + Please note that these "guarantees" are weaker than they appear to + be. One problem is that quite a few disks lie to the OS about having + flushed their buffers. Some other things can go wrong as well. The + filesystem developers are aware of these problems and typically can + make it work anyways. That said, dm-crypt/LUKS will not make things + worse. + + One specific problem you can run into though is that you can get + short freezes and other slowdowns due to the encryption layer. + Encryption takes time and forced flushes will block for that time. + For example, I did run into frequent small freezes (1-2 sec) when + putting a vmware image on ext3 over dm-crypt. When I went back to + ext2, the problem went away. This seems to have gotten better with + kernel 2.6.36 and the reworking of filesystem flush locking mechanism + (less blocking of CPU activity during flushes). It should improve + further and eventually the problem should go away. + + + * 2.14 Can I use LUKS or cryptsetup with a more secure (external) + medium for key storage, e.g. TPM or a smartcard? + + Yes, see the answers on using a file-supplied key. You do have to + write the glue-logic yourself though. Basically you can have + cryptsetup read the key from STDIN and write it there with your own + tool that in turn gets the key from the more secure key storage. + + For TPM support, you may want to have a look at tpm-luks at + https://github.com/shpedoikal/tpm-luks. Note that tpm-luks is not + related to the cryptsetup project. + + + * 2.15 Can I resize a dm-crypt or LUKS partition? + + Yes, you can, as neither dm-crypt nor LUKS stores partition size. + Whether you should is a different question. Personally I recommend + backup, recreation of the encrypted partition with new size, + recreation of the filesystem and restore. This gets around the + tricky business of resizing the filesystem. Resizing a dm-crypt or + LUKS container does not resize the filesystem in it. The backup is + really non-optional here, as a lot can go wrong, resulting in partial + or complete data loss. Using something like gparted to resize an + encrypted partition is slow, but typically works. This will not + change the size of the filesystem hidden under the encryption though. + + You also need to be aware of size-based limitations. The one + currently relevant is that aes-xts-plain should not be used for + encrypted container sizes larger than 2TiB. Use aes-xts-plain64 for + that. + + + * 2.16 How do I Benchmark the Ciphers, Hashes and Modes? + + Since version 1.60 cryptsetup supports the "benchmark" command. + Simply run as root: + + cryptsetup benchmark + + It will output first iterations/second for the key-derivation + function PBKDF2 parameterized with different hash-functions, and then + the raw encryption speed of ciphers with different modes and + key-sizes. You can get more than the default benchmarks, see the + man-page for the relevant parameters. Note that XTS mode takes two + keys, hence the listed key sizes are double that for other modes and + half of it is the cipher key, the other half is the XTS key. + + + * 2.17 How do I Verify I have an Authentic cryptsetup Source Package? + + Current maintainer is Milan Broz and he signs the release packages + with his PGP key. The key he currently uses is the "RSA key ID + D93E98FC", fingerprint 2A29 1824 3FDE 4664 8D06 86F9 D9B0 577B D93E + 98FC. While I have every confidence this really is his key and that + he is who he claims to be, don't depend on it if your life is at + stake. For that matter, if your life is at stake, don't depend on me + being who I claim to be either. + + That said, as cryptsetup is under good version control, a malicious + change should be noticed sooner or later, but it may take a while. + Also, the attacker model makes compromising the sources in a + non-obvious way pretty hard. Sure, you could put the master-key + somewhere on disk, but that is rather obvious as soon as somebody + looks as there would be data in an empty LUKS container in a place it + should not be. Doing this in a more nefarious way, for example + hiding the master-key in the salts, would need a look at the sources + to be discovered, but I think that somebody would find that sooner or + later as well. + + That said, this discussion is really a lot more complicated and + longer as an FAQ can sustain. If in doubt, ask on the mailing list. + + + * 2.18 Is there a concern with 4k Sectors? + + Not from dm-crypt itself. Encryption will be done in 512B blocks, but + if the partition and filesystem are aligned correctly and the + filesystem uses multiples of 4kiB as block size, the dm-crypt layer + will just process 8 x 512B = 4096B at a time with negligible + overhead. LUKS does place data at an offset, which is 2MiB per + default and will not break alignment. See also Item 6.12 of this FAQ + for more details. Note that if your partition or filesystem is + misaligned, dm-crypt can make the effect worse though. + + + * 2.19 How can I wipe a device with crypto-grade randomness? + + The conventional recommendation if you want to not just do a + zero-wipe is to use something like + + cat /dev/urandom > + + That is very slow and painful at 10-20MB/s on a fast computer. + Using cryptsetup and a plain dm-crypt device with a random key, + it is much faster and gives you the same level of security. The + defaults are quite enough. + + For device set-up, do the following: + + cryptsetup open --type plain -d /dev/urandom /dev/ to_be_wiped + + This maps the container as plain under /dev/mapper/to_be_wiped with a + random password. For the actual wipe you have several options. + Simple wipe without progress-indicator: + + cat /dev/zero > /dev/mapper/to_be_wiped + + Progress-indicator by dd_rescue: + + dd_rescue -w /dev/zero /dev/mapper/to_be_wiped + + Progress-indicator by my "wcs" stream meter (available from + http://www.tansi.org/tools/index.html ): + + cat /dev/zero | wcs > /dev/mapper/to_be_wiped + + + Remove the mapping at the end and you are done. + + * 2.20 How to I wipe only the LUKS header? + + This is not the emergency wipe procedure. That is in Item 5.4. This procedure + is intended to be used when the data should stay intact, e.g. when you change + your LUKS container to use a detached header and want to remove the old one. + + Most safe way is this (backup is still a good idea): + + 01) Determine header size in 512 Byte sectors with "luksDump": + + cryptsetup luksDump + +-> ... + Payload offset: + ... + + 02) Take the result number and write number * 512 zeros to the start of the + device, e.g. like this: + + dd bs=512 count= if=/dev/zero of= + + That is it. + + +3. Common Problems + + + * 3.1 My dm-crypt/LUKS mapping does not work! What general steps + are there to investigate the problem? + + If you get a specific error message, investigate what it claims + first. If not, you may want to check the following things. + + - Check that "/dev", including "/dev/mapper/control" is there. If it + is missing, you may have a problem with the "/dev" tree itself or you + may have broken udev rules. + + - Check that you have the device mapper and the crypt target in your + kernel. The output of "dmsetup targets" should list a "crypt" + target. If it is not there or the command fails, add device mapper + and crypt-target to the kernel. + + - Check that the hash-functions and ciphers you want to use are in + the kernel. The output of "cat /proc/crypto" needs to list them. + + + * 3.2 My dm-crypt mapping suddenly stopped when upgrading cryptsetup. + + The default cipher, hash or mode may have changed (the mode changed + from 1.0.x to 1.1.x). See under "Issues With Specific Versions of + cryptsetup". + + + * 3.3 When I call cryptsetup from cron/CGI, I get errors about + unknown features? + + If you get errors about unknown parameters or the like that are not + present when cryptsetup is called from the shell, make sure you have + no older version of cryptsetup on your system that then gets called + by cron/CGI. For example some distributions install cryptsetup into + /usr/sbin, while a manual install could go to /usr/local/sbin. As a + debugging aid, call "cryptsetup --version" from cron/CGI or the + non-shell mechanism to be sure the right version gets called. + + + * 3.4 Unlocking a LUKS device takes very long. Why? + + The iteration time for a key-slot (see Section 5 for an explanation + what iteration does) is calculated when setting a passphrase. By + default it is 1 second on the machine where the passphrase is set. + If you set a passphrase on a fast machine and then unlock it on a + slow machine, the unlocking time can be much longer. Also take into + account that up to 8 key-slots have to be tried in order to find the + right one. + + If this is problem, you can add another key-slot using the slow + machine with the same passphrase and then remove the old key-slot. + The new key-slot will have an iteration count adjusted to 1 second on + the slow machine. Use luksKeyAdd and then luksKillSlot or + luksRemoveKey. + + However, this operation will not change volume key iteration count + (MK iterations in output of "cryptsetup luksDump"). In order to + change that, you will have to backup the data in the LUKS container + (i.e. your encrypted data), luksFormat on the slow machine and + restore the data. Note that in the original LUKS specification this + value was fixed to 10, but it is now derived from the PBKDF2 + benchmark as well and set to iterations in 0.125 sec or 1000, + whichever is larger. Also note that MK iterations are not very + security relevant. But as each key-slot already takes 1 second, + spending the additional 0.125 seconds really does not matter. + + * 3.5 "blkid" sees a LUKS UUID and an ext2/swap UUID on the same + device. What is wrong? + + Some old versions of cryptsetup have a bug where the header does not + get completely wiped during LUKS format and an older ext2/swap + signature remains on the device. This confuses blkid. + + Fix: Wipe the unused header areas by doing a backup and restore of + the header with cryptsetup 1.1.x: + + cryptsetup luksHeaderBackup --header-backup-file + cryptsetup luksHeaderRestore --header-backup-file + + + + * 3.6 cryptsetup segfaults on Gentoo amd64 hardened ... + + There seems to be some interference between the hardening and and the + way cryptsetup benchmarks PBKDF2. The solution to this is currently + not quite clear for an encrypted root filesystem. For other uses, + you can apparently specify USE="dynamic" as compile flag, see + http://bugs.gentoo.org/show_bug.cgi?id=283470 + + +4. Troubleshooting + + + * 4.1 I get the error "LUKS keyslot x is invalid." What does that mean? + + This means that the given keyslot has an offset that points outside + the valid keyslot area. Typically, the reason is a corrupted LUKS + header because something was written to the start of the device the + LUKS container is on. Refer to Section "Backup and Data Recovery" + and ask on the mailing list if you have trouble diagnosing and (if + still possible) repairing this. + + + * 4.2 I cannot unlock my LUKS container! What could be the problem? + + First, make sure you have a correct passphrase. Then make sure you + have the correct key-map and correct keyboard. And then make sure + you have the correct character set and encoding, see also "PASSPHRASE + CHARACTER SET" under Section 1.2. + + If you are sure you are entering the passphrase right, there is the + possibility that the respective key-slot has been damaged. There is + no way to recover a damaged key-slot, except from a header backup + (see Section 6). For security reasons, there is also no checksum in + the key-slots that could tell you whether a key-slot has been + damaged. The only checksum present allows recognition of a correct + passphrase, but that only works if the passphrase is correct and the + respective key-slot is intact. + + In order to find out whether a key-slot is damaged one has to look + for "non-random looking" data in it. There is a tool that + automates this in the cryptsetup distribution from version 1.6.0 + onwards. It is located in misc/keyslot_checker/. Instructions how + to use and how to interpret results are in the README file. Note + that this tool requires a libcryptsetup from cryptsetup 1.6.0 or + later (which means libcryptsetup.so.4.5.0 or later). If the tool + complains about missing functions in libcryptsetup, you likely have + an earlier version from your distribution still installed. You can + either point the symbolic link(s) from libcryptsetup.so.4 to the new + version manually, or you can uninstall the distribution version of + cryptsetup and re-install that from cryptsetup >= 1.6.0 again to fix + this. + + + * 4.3 Can a bad RAM module cause problems? + + LUKS and dm-crypt can give the RAM quite a workout, especially when + combined with software RAID. In particular the combination RAID5 + + LUKS + XFS seems to uncover RAM problems that never caused obvious + problems before. Symptoms vary, but often the problem manifest + itself when copying large amounts of data, typically several times + larger than your main memory. + + Side note: One thing you should always do on large data + copy/movements is to run a verify, for example with the "-d" option + of "tar" or by doing a set of MD5 checksums on the source or target + with + + find . -type f -exec md5sum \{\} \; > checksum-file + + and then a "md5sum -c checksum-file" on the other side. If you get + mismatches here, RAM is the primary suspect. A lesser suspect is an + overclocked CPU. I have found countless hardware problems in verify + runs after copying or making backups. Bit errors are much more + common than most people think. + + Some RAM issues are even worse and corrupt structures in one of the + layers. This typically results in lockups, CPU state dumps in the + system logs, kernel panic or other things. It is quite possible to + have the problem with an encrypted device, but not with an otherwise + the same unencrypted device. The reason for that is that encryption + has an error amplification property: You flip one bit in an encrypted + data block, and the decrypted version has half of its bits flipped. + This is an important security property for modern ciphers. With the + usual modes in cryptsetup (CBC, ESSIV, XTS), you get up to a + completely changed 512 byte block per bit error. A corrupt block + causes a lot more havoc than the occasionally flipped single bit and + can result in various obscure errors. + + Note that a verify run on copying between encrypted or unencrypted + devices will reliably detect corruption, even when the copying itself + did not report any problems. If you find defect RAM, assume all + backups and copied data to be suspect, unless you did a verify. + + + * 4.4 How do I test RAM? + + First you should know that overclocking often makes memory problems + worse. So if you overclock (which I strongly recommend against in a + system holding data that has some worth), run the tests with the + overclocking active. + + There are two good options. One is Memtest86+ and the other is + "memtester" by Charles Cazabon. Memtest86+ requires a reboot and + then takes over the machine, while memtester runs from a root-shell. + Both use different testing methods and I have found problems fast + with each one that the other needed long to find. I recommend + running the following procedure until the first error is found: + + - Run Memtest86+ for one cycle + + - Run memtester for one cycle (shut down as many other applications + as possible) + + - Run Memtest86+ for 24h or more + + - Run memtester for 24h or more + + If all that does not produce error messages, your RAM may be sound, + but I have had one weak bit that Memtest86+ needed around 60 hours to + find. If you can reproduce the original problem reliably, a good + additional test may be to remove half of the RAM (if you have more + than one module) and try whether the problem is still there and if + so, try with the other half. If you just have one module, get a + different one and try with that. If you do overclocking, reduce the + settings to the most conservative ones available and try with that. + + + * 4.5 Is there a risk using debugging tools like strace? + + There most definitely is. An dump from strace and friends can contain + all data entered, including the full passphrase. Example with strace + and passphrase "test": + + > strace cryptsetup luksOpen /dev/sda10 c1 + ... + read(6, "test\n", 512) = 5 + ... + + Depending on different factors and the tool used, the passphrase may + also be encoded and not plainly visible. Hence it is never a good + idea to give such a trace from a live container to anybody. Recreate + the problem with a test container or set a temporary passphrase like + "test" and use that for the trace generation. Item 2.6 explains how + to create a loop-file backed LUKS container that may come in handy + for this purpose. + + See also Item 6.10 for another set of data you should not give to + others. + + +5. Security Aspects + + + * 5.1 How long is a secure passphrase ? + + This is just the short answer. For more info and explanation of some + of the terms used in this item, read the rest of Section 5. The + actual recommendation is at the end of this item. + + First, passphrase length is not really the right measure, passphrase + entropy is. For example, a random lowercase letter (a-z) gives you + 4.7 bit of entropy, one element of a-z0-9 gives you 5.2 bits of + entropy, an element of a-zA-Z0-9 gives you 5.9 bits and + a-zA-Z0-9!@#$%\^&:-+ gives you 6.2 bits. On the other hand, a random + English word only gives you 0.6...1.3 bits of entropy per character. + Using sentences that make sense gives lower entropy, series of random + words gives higher entropy. Do not use sentences that can be tied to + you or found on your computer. This type of attack is done routinely + today. + + That said, it does not matter too much what scheme you use, but it + does matter how much entropy your passphrase contains, because an + attacker has to try on average + + 1/2 * 2^(bits of entropy in passphrase) + + different passphrases to guess correctly. + + Historically, estimations tended to use computing time estimates, but + more modern approaches try to estimate cost of guessing a passphrase. + + As an example, I will try to get an estimate from the numbers in + http://it.slashdot.org/story/12/12/05/0623215/new-25-gpu-monster-devours-strong-passwords-in-minutes + More references can be found a the end of this document. Note that + these are estimates from the defender side, so assuming something is + easier than it actually is is fine. An attacker may still have + vastly higher cost than estimated here. + + LUKS uses SHA1 for hashing per default. The claim in the reference is + 63 billion tries/second for SHA1. We will leave aside the check + whether a try actually decrypts a key-slot. Now, the machine has 25 + GPUs, which I will estimate at an overall lifetime cost of USD/EUR + 1000 each, and an useful lifetime of 2 years. (This is on the low + side.) Disregarding downtime, the machine can then break + + N = 63*10^9 * 3600 * 24 * 365 * 2 ~ 4*10^18 + + passphrases for EUR/USD 25k. That is one 62 bit passphrase hashed + once with SHA1 for EUR/USD 25k. Note that as this can be + parallelized, it can be done faster than 2 years with several of + these machines. + + For plain dm-crypt (no hash iteration) this is it. This gives (with + SHA1, plain dm-crypt default is ripemd160 which seems to be slightly + slower than SHA1): + + Passphrase entropy Cost to break + 60 bit EUR/USD 6k + 65 bit EUR/USD 200K + 70 bit EUR/USD 6M + 75 bit EUR/USD 200M + 80 bit EUR/USD 6B + 85 bit EUR/USD 200B + ... ... + + + For LUKS, you have to take into account hash iteration in PBKDF2. + For a current CPU, there are about 100k iterations (as can be queried + with ''cryptsetup luksDump''. + + The table above then becomes: + + Passphrase entropy Cost to break + 50 bit EUR/USD 600k + 55 bit EUR/USD 20M + 60 bit EUR/USD 600M + 65 bit EUR/USD 20B + 70 bit EUR/USD 600B + 75 bit EUR/USD 20T + ... ... + + + Recommendation: + + To get reasonable security for the next 10 years, it is a good idea + to overestimate by a factor of at least 1000. + + Then there is the question of how much the attacker is willing to + spend. That is up to your own security evaluation. For general use, + I will assume the attacker is willing to spend up to 1 million + EUR/USD. Then we get the following recommendations: + + Plain dm-crypt: Use > 80 bit. That is e.g. 17 random chars from a-z + or a random English sentence of > 135 characters length. + + LUKS: Use > 65 bit. That is e.g. 14 random chars from a-z or a random + English sentence of > 108 characters length. + + If paranoid, add at least 20 bit. That is roughly four additional + characters for random passphrases and roughly 32 characters for a + random English sentence. + + + * 5.2 Is LUKS insecure? Everybody can see I have encrypted data! + + In practice it does not really matter. In most civilized countries + you can just refuse to hand over the keys, no harm done. In some + countries they can force you to hand over the keys, if they suspect + encryption. However the suspicion is enough, they do not have to + prove anything. This is for practical reasons, as even the presence + of a header (like the LUKS header) is not enough to prove that you + have any keys. It might have been an experiment, for example. Or it + was used as encrypted swap with a key from /dev/random. So they make + you prove you do not have encrypted data. Of course that is just as + impossible as the other way round. + + This means that if you have a large set of random-looking data, they + can already lock you up. Hidden containers (encryption hidden within + encryption), as possible with Truecrypt, do not help either. They + will just assume the hidden container is there and unless you hand + over the key, you will stay locked up. Don't have a hidden + container? Though luck. Anybody could claim that. + + Still, if you are concerned about the LUKS header, use plain dm-crypt + with a good passphrase. See also Section 2, "What is the difference + between "plain" and LUKS format?" + + + * 5.3 Should I initialize (overwrite) a new LUKS/dm-crypt partition? + + If you just create a filesystem on it, most of the old data will + still be there. If the old data is sensitive, you should overwrite + it before encrypting. In any case, not initializing will leave the + old data there until the specific sector gets written. That may + enable an attacker to determine how much and where on the partition + data was written. If you think this is a risk, you can prevent this + by overwriting the encrypted device (here assumed to be named "e1") + with zeros like this: + + dd_rescue -w /dev/zero /dev/mapper/e1 + + or alternatively with one of the following more standard commands: + + cat /dev/zero > /dev/mapper/e1 + dd if=/dev/zero of=/dev/mapper/e1 + + + + * 5.4 How do I securely erase a LUKS (or other) partition? + + For LUKS, if you are in a desperate hurry, overwrite the LUKS header + and key-slot area. This means overwriting the first (keyslots x + stripes x keysize) + offset bytes. For the default parameters, this + is the 1'052'672 bytes, i.e. 1MiB + 4096 of the LUKS partition. For + 512 bit key length (e.g. for aes-xts-plain with 512 bit key) this is + 2MiB. (The different offset stems from differences in the sector + alignment of the key-slots.) If in doubt, just be generous and + overwrite the first 10MB or so, it will likely still be fast enough. + A single overwrite with zeros should be enough. If you anticipate + being in a desperate hurry, prepare the command beforehand. Example + with /dev/sde1 as the LUKS partition and default parameters: + + head -c 1052672 /dev/zero > /dev/sde1; sync + + A LUKS header backup or full backup will still grant access to most + or all data, so make sure that an attacker does not have access to + backups or destroy them as well. + + If you have time, overwrite the whole LUKS partition with a single + pass of zeros. This is enough for current HDDs. For SSDs or FLASH + (USB sticks) you may want to overwrite the whole drive several times + to be sure data is not retained by wear leveling. This is possibly + still insecure as SSD technology is not fully understood in this + regard. Still, due to the anti-forensic properties of the LUKS + key-slots, a single overwrite of an SSD or FLASH drive could be + enough. If in doubt, use physical destruction in addition. Here is + a link to some current research results on erasing SSDs and FLASH + drives: http://www.usenix.org/events/fast11/tech/full_papers/Wei.pdf + + Keep in mind to also erase all backups. + + Example for a zero-overwrite erase of partition sde1 done with + dd_rescue: + + dd_rescue -w /dev/zero /dev/sde1 + + + + * 5.5 How do I securely erase a backup of a LUKS partition or header? + + That depends on the medium it is stored on. For HDD and SSD, use + overwrite with zeros. For an SSD or FLASH drive (USB stick), you may + want to overwrite the complete SSD several times and use physical + destruction in addition, see last item. For re-writable CD/DVD, a + single overwrite should also be enough, due to the anti-forensic + properties of the LUKS keyslots. For write-once media, use physical + destruction. For low security requirements, just cut the CD/DVD into + several parts. For high security needs, shred or burn the medium. + If your backup is on magnetic tape, I advise physical destruction by + shredding or burning, after overwriting . The problem with magnetic + tape is that it has a higher dynamic range than HDDs and older data + may well be recoverable after overwrites. Also write-head alignment + issues can lead to data not actually being deleted at all during + overwrites. + + + * 5.6 What about backup? Does it compromise security? + + That depends. See item 6.7. + + + * 5.7 Why is all my data permanently gone if I overwrite the LUKS header? + + Overwriting the LUKS header in part or in full is the most common + reason why access to LUKS containers is lost permanently. + Overwriting can be done in a number of fashions, like creating a new + filesystem on the raw LUKS partition, making the raw partition part + of a raid array and just writing to the raw partition. + + The LUKS header contains a 256 bit "salt" per key-slot and without + that no decryption is possible. While the salts are not secret, they + are key-grade material and cannot be reconstructed. This is a + cryptographically strong "cannot". From observations on the + cryptsetup mailing-list, people typically go though the usual stages + of grief (Denial, Anger, Bargaining, Depression, Acceptance) when + this happens to them. Observed times vary between 1 day and 2 weeks + to complete the cycle. Seeking help on the mailing-list is fine. + Even if we usually cannot help with getting back your data, most + people found the feedback comforting. + + If your header does not contain an intact key-slot salt, best go + directly to the last stage ("Acceptance") and think about what to do + now. There is one exception that I know of: If your LUKS container + is still open, then it may be possible to extract the master key from + the running system. See Item "How do I recover the master key from a + mapped LUKS container?" in Section "Backup and Data Recovery". + + + * 5.8 What is a "salt"? + + A salt is a random key-grade value added to the passphrase before it + is processed. It is not kept secret. The reason for using salts is + as follows: If an attacker wants to crack the password for a single + LUKS container, then every possible passphrase has to be tried. + Typically an attacker will not try every binary value, but will try + words and sentences from a dictionary. + + If an attacker wants to attack several LUKS containers with the same + dictionary, then a different approach makes sense: Compute the + resulting slot-key for each dictionary element and store it on disk. + Then the test for each entry is just the slow unlocking with the slot + key (say 0.00001 sec) instead of calculating the slot-key first (1 + sec). For a single attack, this does not help. But if you have more + than one container to attack, this helps tremendously, also because + you can prepare your table before you even have the container to + attack! The calculation is also very simple to parallelize. You + could, for example, use the night-time unused CPU power of your + desktop PCs for this. + + This is where the salt comes in. If the salt is combined with the + passphrase (in the simplest form, just appended to it), you suddenly + need a separate table for each salt value. With a reasonably-sized + salt value (256 bit, e.g.) this is quite infeasible. + + + * 5.9 Is LUKS secure with a low-entropy (bad) passphrase? + + Note: You should only use the 94 printable characters from 7 bit + ASCII code to prevent your passphrase from failing when the character + encoding changes, e.g. because of a system upgrade, see also the + note at the very start of this FAQ under "WARNINGS". + + This needs a bit of theory. The quality of your passphrase is + directly related to its entropy (information theoretic, not + thermodynamic). The entropy says how many bits of "uncertainty" or + "randomness" are in you passphrase. In other words, that is how + difficult guessing the passphrase is. + + Example: A random English sentence has about 1 bit of entropy per + character. A random lowercase (or uppercase) character has about 4.7 + bit of entropy. + + Now, if n is the number of bits of entropy in your passphrase and t + is the time it takes to process a passphrase in order to open the + LUKS container, then an attacker has to spend at maximum + + attack_time_max = 2^n * t + + time for a successful attack and on average half that. There is no + way getting around that relationship. However, there is one thing + that does help, namely increasing t, the time it takes to use a + passphrase, see next FAQ item. + + Still, if you want good security, a high-entropy passphrase is the + only option. For example, a low-entropy passphrase can never be + considered secure against a TLA-level (Three Letter Agency level, + i.e. government-level) attacker, no matter what tricks are used in + the key-derivation function. Use at least 64 bits for secret stuff. + That is 64 characters of English text (but only if randomly chosen) + or a combination of 12 truly random letters and digits. + + For passphrase generation, do not use lines from very well-known + texts (religious texts, Harry potter, etc.) as they are to easy to + guess. For example, the total Harry Potter has about 1'500'000 words + (my estimation). Trying every 64 character sequence starting and + ending at a word boundary would take only something like 20 days on a + single CPU and is entirely feasible. To put that into perspective, + using a number of Amazon EC2 High-CPU Extra Large instances (each + gives about 8 real cores), this test costs currently about 50USD/EUR, + but can be made to run arbitrarily fast. + + On the other hand, choosing 1.5 lines from, say, the Wheel of Time + is in itself not more secure, but the book selection adds quite + a bit of entropy. (Now that I have mentioned it here, don't use + tWoT either!) If you add 2 or 3 typos or switch some words around, + then this is good passphrase material. + + + * 5.10 What is "iteration count" and why is decreasing it a bad idea? + + Iteration count is the number of PBKDF2 iterations a passphrase is + put through before it is used to unlock a key-slot. Iterations are + done with the explicit purpose to increase the time that it takes to + unlock a key-slot. This provides some protection against use of + low-entropy passphrases. + + The idea is that an attacker has to try all possible passphrases. + Even if the attacker knows the passphrase is low-entropy (see last + item), it is possible to make each individual try take longer. The + way to do this is to repeatedly hash the passphrase for a certain + time. The attacker then has to spend the same time (given the same + computing power) as the user per try. With LUKS, the default is 1 + second of PBKDF2 hashing. + + Example 1: Lets assume we have a really bad passphrase (e.g. a + girlfriends name) with 10 bits of entropy. With the same CPU, an + attacker would need to spend around 500 seconds on average to break + that passphrase. Without iteration, it would be more like 0.0001 + seconds on a modern CPU. + + Example 2: The user did a bit better and has 32 chars of English + text. That would be about 32 bits of entropy. With 1 second + iteration, that means an attacker on the same CPU needs around 136 + years. That is pretty impressive for such a weak passphrase. + Without the iterations, it would be more like 50 days on a modern + CPU, and possibly far less. + + In addition, the attacker can both parallelize and use special + hardware like GPUs or FPGAs to speed up the attack. The attack can + also happen quite some time after the luksFormat operation and CPUs + can have become faster and cheaper. For that reason you want a bit + of extra security. Anyways, in Example 1 your are screwed. In + example 2, not necessarily. Even if the attack is faster, it still + has a certain cost associated with it, say 10000 EUR/USD with + iteration and 1 EUR/USD without iteration. The first can be + prohibitively expensive, while the second is something you try even + without solid proof that the decryption will yield something useful. + + The numbers above are mostly made up, but show the idea. Of course + the best thing is to have a high-entropy passphrase. + + Would a 100 sec iteration time be even better? Yes and no. + Cryptographically it would be a lot better, namely 100 times better. + However, usability is a very important factor for security technology + and one that gets overlooked surprisingly often. For LUKS, if you + have to wait 2 minutes to unlock the LUKS container, most people will + not bother and use less secure storage instead. It is better to have + less protection against low-entropy passphrases and people actually + use LUKS, than having them do without encryption altogether. + + Now, what about decreasing the iteration time? This is generally a + very bad idea, unless you know and can enforce that the users only + use high-entropy passphrases. If you decrease the iteration time + without ensuring that, then you put your users at increased risk, and + considering how rarely LUKS containers are unlocked in a typical + work-flow, you do so without a good reason. Don't do it. The + iteration time is already low enough that users with entropy low + passphrases are vulnerable. Lowering it even further increases this + danger significantly. + + + * 5.11 Some people say PBKDF2 is insecure? + + There is some discussion that a hash-function should have a "large + memory" property, i.e. that it should require a lot of memory to be + computed. This serves to prevent attacks using special programmable + circuits, like FPGAs, and attacks using graphics cards. PBKDF2 does + not need a lot of memory and is vulnerable to these attacks. + However, the publication usually referred in these discussions is not + very convincing in proving that the presented hash really is "large + memory" (that may change, email the FAQ maintainer when it does) and + it is of limited usefulness anyways. Attackers that use clusters of + normal PCs will not be affected at all by a "large memory" property. + For example the US Secret Service is known to use the off-hour time + of all the office PCs of the Treasury for password breaking. The + Treasury has about 110'000 employees. Assuming every one has an + office PC, that is significant computing power, all of it with plenty + of memory for computing "large memory" hashes. Bot-net operators + also have all the memory they want. The only protection against a + resourceful attacker is a high-entropy passphrase, see items 5.9 and + 5.10. + + + * 5.12 What about iteration count with plain dm-crypt? + + Simple: There is none. There is also no salting. If you use plain + dm-crypt, the only way to be secure is to use a high entropy + passphrase. If in doubt, use LUKS instead. + + + * 5.13 Is LUKS with default parameters less secure on a slow CPU? + + Unfortunately, yes. However the only aspect affected is the + protection for low-entropy passphrase or master-key. All other + security aspects are independent of CPU speed. + + The master key is less critical, as you really have to work at it to + give it low entropy. One possibility is to supply the master key + yourself. If that key is low-entropy, then you get what you deserve. + The other known possibility is to use /dev/urandom for key generation + in an entropy-starved situation (e.g. automatic installation on an + embedded device without network and other entropy sources). + + For the passphrase, don't use a low-entropy passphrase. If your + passphrase is good, then a slow CPU will not matter. If you insist + on a low-entropy passphrase on a slow CPU, use something like + "--iter-time=10000" or higher and wait a long time on each LUKS + unlock and pray that the attacker does not find out in which way + exactly your passphrase is low entropy. This also applies to + low-entropy passphrases on fast CPUs. Technology can do only so much + to compensate for problems in front of the keyboard. + + Also note that power-saving modes will make your CPU slower. This + will reduce iteration count on LUKS container creation. It will keep + unlock times at the expected values though at this CPU speed. + + + * 5.14 Why was the default aes-cbc-plain replaced with aes-cbc-essiv? + + Note: This item applies both to plain dm-crypt and to LUKS + + The problem is that cbc-plain has a fingerprint vulnerability, where + a specially crafted file placed into the crypto-container can be + recognized from the outside. The issue here is that for cbc-plain + the initialization vector (IV) is the sector number. The IV gets + XORed to the first data chunk of the sector to be encrypted. If you + make sure that the first data block to be stored in a sector contains + the sector number as well, the first data block to be encrypted is + all zeros and always encrypted to the same ciphertext. This also + works if the first data chunk just has a constant XOR with the sector + number. By having several shifted patterns you can take care of the + case of a non-power-of-two start sector number of the file. + + This mechanism allows you to create a pattern of sectors that have + the same first ciphertext block and signal one bit per sector to the + outside, allowing you to e.g. mark media files that way for + recognition without decryption. For large files this is a practical + attack. For small ones, you do not have enough blocks to signal and + take care of different file starting offsets. + + In order to prevent this attack, the default was changed to + cbc-essiv. ESSIV uses a keyed hash of the sector number, with the + encryption key as key. This makes the IV unpredictable without + knowing the encryption key and the watermarking attack fails. + + + * 5.15 Are there any problems with "plain" IV? What is "plain64"? + + First, "plain" and "plain64" are both not secure to use with CBC, + see previous FAQ item. + + However there are modes, like XTS, that are secure with "plain" IV. + The next limit is that "plain" is 64 bit, with the upper 32 bit set + to zero. This means that on volumes larger than 2TiB, the IV + repeats, creating a vulnerability that potentially leaks some data. + To avoid this, use "plain64", which uses the full sector number up to + 64 bit. Note that "plain64" requires a kernel 2.6.33 or more recent. + Also note that "plain64" is backwards compatible for volume sizes of + maximum size 2TiB, but not for those > 2TiB. Finally, "plain64" does + not cause any performance penalty compared to "plain". + + + * 5.16 What about XTS mode? + + XTS mode is potentially even more secure than cbc-essiv (but only if + cbc-essiv is insecure in your scenario). It is a NIST standard and + used, e.g. in Truecrypt. From version 1.6.0 of cryptsetup onwards, + aes-xts-plain64 is the default for LUKS. If you want to use it with + a cryptsetup before version 1.6.0 or with plain dm-crypt, you have to + specify it manually as "aes-xts-plain", i.e. + + cryptsetup -c aes-xts-plain luksFormat + + For volumes >2TiB and kernels >= 2.6.33 use "plain64" (see FAQ item + on "plain" and "plain64"): + + cryptsetup -c aes-xts-plain64 luksFormat + + There is a potential security issue with XTS mode and large blocks. + LUKS and dm-crypt always use 512B blocks and the issue does not + apply. + + + * 5.17 Is LUKS FIPS-140-2 certified? + + No. But that is more a problem of FIPS-140-2 than of LUKS. From a + technical point-of-view, LUKS with the right parameters would be + FIPS-140-2 compliant, but in order to make it certified, somebody has + to pay real money for that. And then, whenever cryptsetup is changed + or extended, the certification lapses and has to be obtained again. + + From the aspect of actual security, LUKS with default parameters + should be as good as most things that are FIPS-140-2 certified, + although you may want to make sure to use /dev/random (by specifying + --use-random on luksFormat) as randomness source for the master key + to avoid being potentially insecure in an entropy-starved situation. + + + * 5.18 What about Plausible Deniability? + + First let me attempt a definition for the case of encrypted + filesystems: Plausible deniability is when you store data + inside an encrypted container and it is not possible to prove it is + there without having a special passphrase. And at the same time + it must be "plausible" that there actually is no hidden data there. + + As a simple entropy-analysis will show that here may be data there, + the second part is what makes it tricky. + + There seem to be a lot of misunderstandings what that + means, so let me make clear that this refers to the situation where + the attackers can prove that there is data that may be random or + may be part of a plausible-deniability scheme, they just cannot + prove which one it is. Hence a plausible-deniability + scheme must hold up when the attackers know there is + something potentially fishy. If you just hide data and rely on + it not being found, that is just simple deniability, not "plausible" + deniability and I am not talking about that in the following. + Simple deniability against a low-competence attacker may + be as simple as renaming a file or putting data into an unused + part of a disk. Simple deniability against a high-skill attacker + with time to invest is usually pointless though unless you go + for advanced steganographic techniques, which have their own + drawbacks, such as low data capacity. + + Now, the idea of plausible deniability is compelling and on first + glance it seems possible to do it. And from a cryptographic point + of view, it actually is possible. + + So, does it work in practice? No, unfortunately. The reasoning used + by its proponents is fundamentally flawed in several ways and the + cryptographic properties fail fatally when colliding with the real + world. + + First, why should "I do not have a hidden partition" be any more + plausible than "I forgot my crypto key" or "I wiped that partition + with random data, nothing in there"? I do not see any reason. + + Second, there are two types of situations: Either they cannot force + you to give them the key (then you simply do not) or they can. In the + second case, they can always do bad things to you, because they + cannot prove that you have the key in the first place! This means + they do not have to prove you have the key, or that this random + looking data on your disk is actually encrypted data. So the + situation will allow them to waterboard/lock-up/deport you anyways, + regardless of how "plausible" your deniability is. Do not have a + hidden partition you could show to them, but there are indications + you may? Too bad for you. Unfortunately "plausible deniability" + also means you cannot prove there is no hidden data. + + Third, hidden partitions are not that hidden. There are basically + just two possibilities: a) Make a large crypto container, but put a + smaller filesystem in there and put the hidden partition into the + free space. Unfortunately this is glaringly obvious and can be + detected in an automated fashion. This means that the initial + suspicion to put you under duress in order to make you reveal you + hidden data is given. b) Make a filesystem that spans the whole + encrypted partition, and put the hidden partition into space not + currently used by that filesystem. Unfortunately that is also + glaringly obvious, as you then cannot write to the filesystem without + a high risk of destroying data in the hidden container. Have not + written anything to the encrypted filesystem in a while? Too bad, + they have the suspicion they need to do unpleasant things to you. + + To be fair, if you prepare option b) carefully and directly before + going into danger, it may work. But then, the mere presence of + encrypted data may already be enough to get you into trouble in those + places were they can demand encryption keys. + + Here is an additional reference for some problems with plausible + deniability: http://www.schneier.com/paper-truecrypt-dfs.pdf + I strongly suggest you read it. + + So, no, I will not provide any instructions on how to do it with + plain dm-crypt or LUKS. If you insist on shooting yourself in the + foot, you can figure out how to do it yourself. + + + * 5.19 What about SSDs, Flash and Hybrid Drives? + + The problem is that you cannot reliably erase parts of these devices, + mainly due to wear-leveling and possibly defect management. + + Basically, when overwriting a sector (of 512B), what the device does + is to move an internal sector (may be 128kB or even larger) to some + pool of discarded, not-yet erased unused sectors, take a fresh empty + sector from the empty-sector pool and copy the old sector over with + the changes to the small part you wrote. This is done in some + fashion so that larger writes do not cause a lot of small internal + updates. + + The thing is that the mappings between outside-addressable sectors + and inside sectors is arbitrary (and the vendors are not talking). + Also the discarded sectors are not necessarily erased immediately. + They may linger a long time. + + For plain dm-crypt, the consequences are that older encrypted data + may be lying around in some internal pools of the device. Thus may + or may not be a problem and depends on the application. Remember the + same can happen with a filesystem if consecutive writes to the same + area of a file can go to different sectors. + + However, for LUKS, the worst case is that key-slots and LUKS header + may end up in these internal pools. This means that password + management functionality is compromised (the old passwords may still + be around, potentially for a very long time) and that fast erase by + overwriting the header and key-slot area is insecure. + + Also keep in mind that the discarded/used pool may be large. For + example, a 240GB SSD has about 16GB of spare area in the chips that + it is free to do with as it likes. You would need to make each + individual key-slot larger than that to allow reliable overwriting. + And that assumes the disk thinks all other space is in use. Reading + the internal pools using forensic tools is not that hard, but may + involve some soldering. + + What to do? + + If you trust the device vendor (you probably should not...) you can + try an ATA "secure erase" command for SSDs. That does not work for + USB keys though and may or may not be secure for a hybrid drive. If + it finishes on an SSD after a few seconds, it was possibly faked. + Unfortunately, for hybrid drives that indicator does not work, as the + drive may well take the time to truly erase the magnetic part, but + only mark the SSD/Flash part as erased while data is still in there. + + If you can do without password management and are fine with doing + physical destruction for permanently deleting data (always after one + or several full overwrites!), you can use plain dm-crypt or LUKS. + + If you want or need all the original LUKS security features to work, + you can use a detached LUKS header and put that on a conventional, + magnetic disk. That leaves potentially old encrypted data in the + pools on the disk, but otherwise you get LUKS with the same security + as on a magnetic disk. + + If you are concerned about your laptop being stolen, you are likely + fine using LUKS on an SSD or hybrid drive. An attacker would need to + have access to an old passphrase (and the key-slot for this old + passphrase would actually need to still be somewhere in the SSD) for + your data to be at risk. So unless you pasted your old passphrase + all over the Internet or the attacker has knowledge of it from some + other source and does a targeted laptop theft to get at your data, + you should be fine. + + + * 5.20 LUKS is broken! It uses SHA-1! + + No, it is not. SHA-1 is (academically) broken for finding collisions, + but not for using it in a key-derivation function. And that + collision vulnerability is for non-iterated use only. And you need + the hash-value in verbatim. + + This basically means that if you already have a slot-key, and you + have set the PBKDF2 iteration count to 1 (it is > 10'000 normally), + you could (maybe) derive a different passphrase that gives you the + the same slot-key. But if you have the slot-key, you can already + unlock the key-slot and get the master key, breaking everything. So + basically, this SHA-1 vulnerability allows you to open a LUKS + container with high effort when you already have it open. + + The real problem here is people that do not understand crypto and + claim things are broken just because some mechanism is used that has + been broken for a specific different use. The way the mechanism is + used matters very much. A hash that is broken for one use can be + completely secure for other uses and here it is. + + + * 5.21 Why is there no "Nuke-Option"? + + A "Nuke-Option" or "Kill-switch" is a password that when entered upon + unlocking instead wipes the header and all passwords. So when + somebody forces you to enter your password, you can destroy the data + instead. + + While this sounds attractive at first glance, it does not make sense + once a real security analysis is done. One problem is that you have + to have some kind of HSM (Hardware Security Module) in order to + implement it securely. In the movies, a HSM starts to smoke and melt + once the Nuke-Option has been activated. In reality, it just wipes + some battery-backed RAM cells. A proper HSM costs something like + 20'000...100'000 EUR/USD and there a Nuke-Option may make some sense. + BTW, a chipcard or a TPM is not a HSM, although some vendors are + promoting that myth. + + Now, a proper HSMs will have a wipe option but not a Nuke-Option, + i.e. you can explicitly wipe the HSM, but by a different process + than unlocking it takes. Why is that? Simple: If somebody can force + you to reveal passwords, then they can also do bad things to you if + you do not or if you enter a nuke password instead. Think locking + you up for a few years for "destroying evidence" or for far longer + and without trial for being a "terrorist suspect". No HSM maker will + want to expose its customers to that risk. + + Now think of the typical LUKS application scenario, i.e. disk + encryption. Usually the ones forcing you to hand over your password + will have access to the disk as well, and, if they have any real + suspicion, they will mirror your disk before entering anything + supplied by you. This neatly negates any Nuke-Option. If they have + no suspicion (just harassing people that cross some border for + example), the Nuke-Option would work, but see above about likely + negative consequences and remember that a Nuke-Option may not work + reliably on SSD and hybrid drives anyways. + + Hence my advice is to never take data that you do not want to reveal + into any such situation in the first place. There is no need to + transfer data on physical carriers today. The Internet makes it + quite possible to transfer data between arbitrary places and modern + encryption makes it secure. If you do it right, nobody will even be + able to identify source or destination. (How to do that is out of + scope of this document. It does require advanced skills in this age + of pervasive surveillance.) + + Hence, LUKS has not kill option because it would do much more harm + than good. + + Still, if you have a good use-case (i.e. non-abstract real-world + situation) where a Nuke-Option would actually be beneficial, please + let me know. + + + * 5.22 Does cryptsetup open network connections to websites, etc. ? + + This question seems not to make much sense at first glance, but here + is an example form the real world: The TrueCrypt GUI has a "Donation" + button. Press it, and a web-connection to the TrueCrypt website is + opened via the default browser, telling everybody that listens that + you use TrueCrypt. In the worst case, things like this can get + people tortured or killed. + + So: Cryptsetup will never open any network connections except the + local netlink socket it needs to talk to the kernel crypto API. + + In addition, the installation package should contain all + documentation, including this FAQ, so that you do not have to go to a + web-site to read it. (If your distro cuts the docu, please complain + to them.) In security software, any connection initiated to anywhere + outside your machine should always be the result of an explicit + request for such a connection by the user and cryptsetup will stay + true to that principle. + + +6. Backup and Data Recovery + + + * 6.1 Why do I need Backup? + + First, disks die. The rate for well-treated (!) disk is about 5% per + year, which is high enough to worry about. There is some indication + that this may be even worse for some SSDs. This applies both to LUKS + and plain dm-crypt partitions. + + Second, for LUKS, if anything damages the LUKS header or the + key-stripe area then decrypting the LUKS device can become + impossible. This is a frequent occurrence. For example an + accidental format as FAT or some software overwriting the first + sector where it suspects a partition boot sector typically makes a + LUKS partition permanently inaccessible. See more below on LUKS + header damage. + + So, data-backup in some form is non-optional. For LUKS, you may also + want to store a header backup in some secure location. This only + needs an update if you change passphrases. + + + * 6.2 How do I backup a LUKS header? + + While you could just copy the appropriate number of bytes from the + start of the LUKS partition, the best way is to use command option + "luksHeaderBackup" of cryptsetup. This protects also against errors + when non-standard parameters have been used in LUKS partition + creation. Example: + + cryptsetup luksHeaderBackup --header-backup-file + + To restore, use the inverse command, i.e. + + cryptsetup luksHeaderRestore --header-backup-file + + If you are unsure about a header to be restored, make a backup of the + current one first! You can also test the header-file without restoring + it by using the --header option for a detached header like this: + + cryptsetup --header luksOpen + + If that unlocks your keys-lot, you are good. Do not forget to close + the device again. + + Under some circumstances (damaged header), this fails. Then use the + following steps: + + First determine the master-key size: + + cryptsetup luksDump + + gives a line of the form + + MK bits: + + with bits equal to 256 for the old defaults and 512 for the new + defaults. 256 bits equals a total header size of 1'052'672 Bytes and + 512 bits one of 2MiB. (See also Item 6.12) If luksDump fails, assume + 2MiB, but be aware that if you restore that, you may also restore the + first 1M or so of the filesystem. Do not change the filesystem if + you were unable to determine the header size! With that, restoring a + too-large header backup is still safe. + + Second, dump the header to file. There are many ways to do it, I + prefer the following: + + head -c 1052672 > header_backup.dmp + + or + + head -c 2M > header_backup.dmp + + for a 2MiB header. Verify the size of the dump-file to be sure. + + To restore such a backup, you can try luksHeaderRestore or do a more + basic + + cat header_backup.dmp > + + + + * 6.3 How do I test a LUKS header? + + Use + + cryptsetup -v isLuks + + on the device. Without the "-v" it just signals its result via + exit-status. You can also use the more general test + + blkid -p + + which will also detect other types and give some more info. Omit + "-p" for old versions of blkid that do not support it. + + + * 6.4 How do I backup a LUKS or dm-crypt partition? + + There are two options, a sector-image and a plain file or filesystem + backup of the contents of the partition. The sector image is already + encrypted, but cannot be compressed and contains all empty space. + The filesystem backup can be compressed, can contain only part of the + encrypted device, but needs to be encrypted separately if so desired. + + A sector-image will contain the whole partition in encrypted form, + for LUKS the LUKS header, the keys-slots and the data area. It can + be done under Linux e.g. with dd_rescue (for a direct image copy) + and with "cat" or "dd". Example: + + cat /dev/sda10 > sda10.img + dd_rescue /dev/sda10 sda10.img + + You can also use any other backup software that is capable of making + a sector image of a partition. Note that compression is ineffective + for encrypted data, hence it does not make sense to use it. + + For a filesystem backup, you decrypt and mount the encrypted + partition and back it up as you would a normal filesystem. In this + case the backup is not encrypted, unless your encryption method does + that. For example you can encrypt a backup with "tar" as follows + with GnuPG: + + tar cjf - | gpg --cipher-algo AES -c - > backup.tbz2.gpg + + And verify the backup like this if you are at "path": + + cat backup.tbz2.gpg | gpg - | tar djf - + + Note: Always verify backups, especially encrypted ones! + + There is one problem with verifying like this: The kernel may still + have some files cached and in fact verify them against RAM or may + even verify RAM against RAM, which defeats the purpose of the + exercise. The following command empties the kernel caches: + + echo 3 > /proc/sys/vm/drop_caches + + Run it after backup and before verify. + + In both cases GnuPG will ask you interactively for your symmetric + key. The verify will only output errors. Use "tar dvjf -" to get + all comparison results. To make sure no data is written to disk + unencrypted, turn off swap if it is not encrypted before doing the + backup. + + Restore works like certification with the 'd' ('difference') replaced + by 'x' ('eXtract'). Refer to the man-page of tar for more + explanations and instructions. Note that with default options tar + will overwrite already existing files without warning. If you are + unsure about how to use tar, experiment with it in a location where + you cannot do damage. + + You can of course use different or no compression and you can use an + asymmetric key if you have one and have a backup of the secret key + that belongs to it. + + A second option for a filesystem-level backup that can be used when + the backup is also on local disk (e.g. an external USB drive) is to + use a LUKS container there and copy the files to be backed up between + both mounted containers. Also see next item. + + + * 6.5 Do I need a backup of the full partition? Would the header + and key-slots not be enough? + + Backup protects you against two things: Disk loss or corruption and + user error. By far the most questions on the dm-crypt mailing list + about how to recover a damaged LUKS partition are related to user + error. For example, if you create a new filesystem on a LUKS + partition, chances are good that all data is lost permanently. + + For this case, a header+key-slot backup would often be enough. But + keep in mind that a well-treated (!) HDD has roughly a failure risk + of 5% per year. It is highly advisable to have a complete backup to + protect against this case. + + + * 6.6 What do I need to backup if I use "decrypt_derived"? + + This is a script in Debian, intended for mounting /tmp or swap with a + key derived from the master key of an already decrypted device. If + you use this for an device with data that should be persistent, you + need to make sure you either do not lose access to that master key or + have a backup of the data. If you derive from a LUKS device, a + header backup of that device would cover backing up the master key. + Keep in mind that this does not protect against disk loss. + + Note: If you recreate the LUKS header of the device you derive from + (using luksFormat), the master key changes even if you use the same + passphrase(s) and you will not be able to decrypt the derived device + with the new LUKS header. + + + * 6.7 Does a backup compromise security? + + Depends on how you do it. However if you do not have one, you are + going to eventually lose your encrypted data. + + There are risks introduced by backups. For example if you + change/disable a key-slot in LUKS, a binary backup of the partition + will still have the old key-slot. To deal with this, you have to be + able to change the key-slot on the backup as well, securely erase the + backup or do a filesystem-level backup instead of a binary one. + + If you use dm-crypt, backup is simpler: As there is no key + management, the main risk is that you cannot wipe the backup when + wiping the original. However wiping the original for dm-crypt should + consist of forgetting the passphrase and that you can do without + actual access to the backup. + + In both cases, there is an additional (usually small) risk with + binary backups: An attacker can see how many sectors and which ones + have been changed since the backup. To prevent this, use a + filesystem level backup method that encrypts the whole backup in one + go, e.g. as described above with tar and GnuPG. + + My personal advice is to use one USB disk (low value data) or three + disks (high value data) in rotating order for backups, and either use + independent LUKS partitions on them, or use encrypted backup with tar + and GnuPG. + + If you do network-backup or tape-backup, I strongly recommend to go + the filesystem backup path with independent encryption, as you + typically cannot reliably delete data in these scenarios, especially + in a cloud setting. (Well, you can burn the tape if it is under your + control...) + + + * 6.8 What happens if I overwrite the start of a LUKS partition or + damage the LUKS header or key-slots? + + There are two critical components for decryption: The salt values in + the key-slot descriptors of the header and the key-slots. If the + salt values are overwritten or changed, nothing (in the + cryptographically strong sense) can be done to access the data, + unless there is a backup of the LUKS header. If a key-slot is + damaged, the data can still be read with a different key-slot, if + there is a remaining undamaged and used key-slot. Note that in order + to make a key-slot unrecoverable in a cryptographically strong sense, + changing about 4-6 bits in random locations of its 128kiB size is + quite enough. + + + * 6.9 What happens if I (quick) format a LUKS partition? + + I have not tried the different ways to do this, but very likely you + will have written a new boot-sector, which in turn overwrites the + LUKS header, including the salts, making your data permanently + irretrievable, unless you have a LUKS header backup. You may also + damage the key-slots in part or in full. See also last item. + + + * 6.10 How do I recover the master key from a mapped LUKS container? + + This is typically only needed if you managed to damage your LUKS + header, but the container is still mapped, i.e. "luksOpen"ed. It + also helps if you have a mapped container that you forgot or do not + know a passphrase for (e.g. on a long running server.) + + WARNING: Things go wrong, do a full backup before trying this! + + WARNING: This exposes the master key of the LUKS container. Note + that both ways to recreate a LUKS header with the old master key + described below will write the master key to disk. Unless you are + sure you have securely erased it afterwards, e.g. by writing it to + an encrypted partition, RAM disk or by erasing the filesystem you + wrote it to by a complete overwrite, you should change the master key + afterwards. Changing the master key requires a full data backup, + luksFormat and then restore of the backup. + + First, there is a script by Milan that automates the whole process, + except generating a new LUKS header with the old master key (it + prints the command for that though): + + https://gitlab.com/cryptsetup/cryptsetup/blob/master/misc/luks-header-from-active + + You can also do this manually. Here is how: + + - Get the master key from the device mapper. This is done by the + following command. Substitute c5 for whatever you mapped to: + + # dmsetup table --target crypt --showkey /dev/mapper/c5 + + Result: + 0 200704 crypt aes-cbc-essiv:sha256 + a1704d9715f73a1bb4db581dcacadaf405e700d591e93e2eaade13ba653d0d09 + 0 7:0 4096 + + The result is actually one line, wrapped here for clarity. The long + hex string is the master key. + + - Convert the master key to a binary file representation. You can do + this manually, e.g. with hexedit. You can also use the tool "xxd" + from vim like this: + + echo "a1704d9....53d0d09" | xxd -r -p > + + + - Do a luksFormat to create a new LUKS header. + + NOTE: If your header is intact and you just forgot the passphrase, + you can just set a new passphrase, see next sub-item. + + Unmap the device before you do that (luksClose). Then do + + cryptsetup luksFormat --master-key-file= + + Note that if the container was created with other than the default + settings of the cryptsetup version you are using, you need to give + additional parameters specifying the deviations. If in doubt, try + the script by Milan. It does recover the other parameters as well. + + Side note: This is the way the decrypt_derived script gets at the + master key. It just omits the conversion and hashes the master key + string. + + - If the header is intact and you just forgot the passphrase, just + set a new passphrase like this: + + cryptsetup luksAddKey --master-key-file= + + You may want to disable the old one afterwards. + + + * 6.11 What does the on-disk structure of dm-crypt look like? + + There is none. dm-crypt takes a block device and gives encrypted + access to each of its blocks with a key derived from the passphrase + given. If you use a cipher different than the default, you have to + specify that as a parameter to cryptsetup too. If you want to change + the password, you basically have to create a second encrypted device + with the new passphrase and copy your data over. On the plus side, + if you accidentally overwrite any part of a dm-crypt device, the + damage will be limited to the area you overwrote. + + + * 6.12 What does the on-disk structure of LUKS look like? + + A LUKS partition consists of a header, followed by 8 key-slot + descriptors, followed by 8 key slots, followed by the encrypted data + area. + + Header and key-slot descriptors fill the first 592 bytes. The + key-slot size depends on the creation parameters, namely on the + number of anti-forensic stripes, key material offset and master key + size. + + With the default parameters, each key-slot is a bit less than 128kiB + in size. Due to sector alignment of the key-slot start, that means + the key block 0 is at offset 0x1000-0x20400, key block 1 at offset + 0x21000-0x40400, and key block 7 at offset 0xc1000-0xe0400. The + space to the next full sector address is padded with zeros. Never + used key-slots are filled with what the disk originally contained + there, a key-slot removed with "luksRemoveKey" or "luksKillSlot" gets + filled with 0xff. Due to 2MiB default alignment, start of the data + area for cryptsetup 1.3 and later is at 2MiB, i.e. at 0x200000. For + older versions, it is at 0x101000, i.e. at 1'052'672 bytes, i.e. at + 1MiB + 4096 bytes from the start of the partition. Incidentally, + "luksHeaderBackup" for a LUKS container created with default + parameters dumps exactly the first 2MiB (or 1'052'672 bytes for + headers created with cryptsetup versions < 1.3) to file and + "luksHeaderRestore" restores them. + + For non-default parameters, you have to figure out placement + yourself. "luksDump" helps. See also next item. For the most + common non-default settings, namely aes-xts-plain with 512 bit key, + the offsets are: 1st keyslot 0x1000-0x3f800, 2nd keyslot + 0x40000-0x7e000, 3rd keyslot 0x7e000-0xbd800, ..., and start of bulk + data at 0x200000. + + The exact specification of the format is here: + https://gitlab.com/cryptsetup/cryptsetup/wikis/Specification + + For your convenience, here is the LUKS header with hex offsets. + NOTE: The spec counts key-slots from 1 to 8, but the cryptsetup tool + counts from 0 to 7. The numbers here refer to the cryptsetup + numbers. + + +Refers to LUKS On-Disk Format Specification Version 1.2.1 + +LUKS header: + +offset length name data type description +----------------------------------------------------------------------- +0x0000 0x06 magic byte[] 'L','U','K','S', 0xba, 0xbe + 0 6 +0x0006 0x02 version uint16_t LUKS version + 6 3 +0x0008 0x20 cipher-name char[] cipher name spec. + 8 32 +0x0028 0x20 cipher-mode char[] cipher mode spec. + 40 32 +0x0048 0x20 hash-spec char[] hash spec. + 72 32 +0x0068 0x04 payload-offset uint32_t bulk data offset in sectors + 104 4 (512 bytes per sector) +0x006c 0x04 key-bytes uint32_t number of bytes in key + 108 4 +0x0070 0x14 mk-digest byte[] master key checksum + 112 20 calculated with PBKDF2 +0x0084 0x20 mk-digest-salt byte[] salt for PBKDF2 when + 132 32 calculating mk-digest +0x00a4 0x04 mk-digest-iter uint32_t iteration count for PBKDF2 + 164 4 when calculating mk-digest +0x00a8 0x28 uuid char[] partition UUID + 168 40 +0x00d0 0x30 key-slot-0 key slot key slot 0 + 208 48 +0x0100 0x30 key-slot-1 key slot key slot 1 + 256 48 +0x0130 0x30 key-slot-2 key slot key slot 2 + 304 48 +0x0160 0x30 key-slot-3 key slot key slot 3 + 352 48 +0x0190 0x30 key-slot-4 key slot key slot 4 + 400 48 +0x01c0 0x30 key-slot-5 key slot key slot 5 + 448 48 +0x01f0 0x30 key-slot-6 key slot key slot 6 + 496 48 +0x0220 0x30 key-slot-7 key slot key slot 7 + 544 48 + + +Key slot: + +offset length name data type description +------------------------------------------------------------------------- +0x0000 0x04 active uint32_t key slot enabled/disabled + 0 4 +0x0004 0x04 iterations uint32_t PBKDF2 iteration count + 4 4 +0x0008 0x20 salt byte[] PBKDF2 salt + 8 32 +0x0028 0x04 key-material-offset uint32_t key start sector + 40 4 (512 bytes/sector) +0x002c 0x04 stripes uint32_t number of anti-forensic + 44 4 stripes + + + + * 6.13 What is the smallest possible LUKS container? + + Note: From cryptsetup 1.3 onwards, alignment is set to 1MB. With + modern Linux partitioning tools that also align to 1MB, this will + result in alignment to 2k sectors and typical Flash/SSD sectors, + which is highly desirable for a number of reasons. Changing the + alignment is not recommended. + + That said, with default parameters, the data area starts at exactly + 2MB offset (at 0x101000 for cryptsetup versions before 1.3). The + smallest data area you can have is one sector of 512 bytes. Data + areas of 0 bytes can be created, but fail on mapping. + + While you cannot put a filesystem into something this small, it may + still be used to contain, for example, key. Note that with current + formatting tools, a partition for a container this size will be 3MiB + anyways. If you put the LUKS container into a file (via losetup and + a loopback device), the file needs to be 2097664 bytes in size, i.e. + 2MiB + 512B. + + The two ways to influence the start of the data area are key-size and + alignment. + + For alignment, you can go down to 1 on the parameter. This will still + leave you with a data-area starting at 0x101000, i.e. 1MiB+4096B + (default parameters) as alignment will be rounded up to the next + multiple of 8 (i.e. 4096 bytes) If in doubt, do a dry-run on a + larger file and dump the LUKS header to get actual information. + + For key-size, you can use 128 bit (e.g. AES-128 with CBC), 256 bit + (e.g. AES-256 with CBC) or 512 bit (e.g. AES-256 with XTS mode). + You can do 64 bit (e.g. blowfish-64 with CBC), but anything below + 128 bit has to be considered insecure today. + + Example 1 - AES 128 bit with CBC: + + cryptsetup luksFormat -s 128 --align-payload=8 + + This results in a data offset of 0x81000, i.e. 516KiB or 528384 + bytes. Add one 512 byte sector and the smallest LUKS container size + with these parameters is 516KiB + 512B or 528896 bytes. + + Example 2 - Blowfish 64 bit with CBC (WARNING: insecure): + + cryptsetup luksFormat -c blowfish -s 64 --align-payload=8 /dev/loop0 + + This results in a data offset of 0x41000, i.e. 260kiB or 266240 + bytes, with a minimal LUKS container size of 260kiB + 512B or 266752 + bytes. + + + * 6.14 I think this is overly complicated. Is there an alternative? + + Not really. Encryption comes at a price. You can use plain dm-crypt + to simplify things a bit. It does not allow multiple passphrases, + but on the plus side, it has zero on disk description and if you + overwrite some part of a plain dm-crypt partition, exactly the + overwritten parts are lost (rounded up to sector borders). + + * 6.15 Can I clone a LUKS container? + + You can, but it breaks security, because the cloned container has the + same header and hence the same master key. You cannot change the + master key on a LUKS container, even if you change the passphrase(s), + the master key stays the same. That means whoever has access to one + of the clones can decrypt them all, completely bypassing the + passphrases. + + The right way to do this is to first luksFormat the target container, + then to clone the contents of the source container, with both + containers mapped, i.e. decrypted. You can clone the decrypted + contents of a LUKS container in binary mode, although you may run + into secondary issues with GUIDs in filesystems, partition tables, + RAID-components and the like. These are just the normal problems + binary cloning causes. + + Note that if you need to ship (e.g.) cloned LUKS containers with a + default passphrase, that is fine as long as each container was + individually created (and hence has its own master key). In this + case, changing the default passphrase will make it secure again. + + +7. Interoperability with other Disk Encryption Tools + + + * 7.1 What is this section about? + + Cryptsetup for plain dm-crypt can be used to access a number of + on-disk formats created by tools like loop-aes patched into losetup. + This sometimes works and sometimes does not. This section collects + insights into what works, what does not and where more information is + required. + + Additional information may be found in the mailing-list archives, + mentioned at the start of this FAQ document. If you have a solution + working that is not yet documented here and think a wider audience + may be interested, please email the FAQ maintainer. + + + * 7.2 loop-aes: General observations. + + One problem is that there are different versions of losetup around. + loop-aes is a patch for losetup. Possible problems and deviations + from cryptsetup option syntax include: + + - Offsets specified in bytes (cryptsetup: 512 byte sectors) + + - The need to specify an IV offset + + - Encryption mode needs specifying (e.g. "-c twofish-cbc-plain") + + - Key size needs specifying (e.g. "-s 128" for 128 bit keys) + + - Passphrase hash algorithm needs specifying + + Also note that because plain dm-crypt and loop-aes format does not + have metadata, and while the loopAES extension for cryptsetup tries + autodetection (see command loopaesOpen), it may not always work. If + you still have the old set-up, using a verbosity option (-v) on + mapping with the old tool or having a look into the system logs after + setup could give you the information you need. Below, there are also + some things that worked for somebody. + + + * 7.3 loop-aes patched into losetup on Debian 5.x, kernel 2.6.32 + + In this case, the main problem seems to be that this variant of + losetup takes the offset (-o option) in bytes, while cryptsetup takes + it in sectors of 512 bytes each. + + Example: The losetup command + + losetup -e twofish -o 2560 /dev/loop0 /dev/sdb1 + mount /dev/loop0 mount-point + + translates to + + cryptsetup create -c twofish -o 5 --skip 5 e1 /dev/sdb1 + mount /dev/mapper/e1 mount-point + + + + * 7.4 loop-aes with 160 bit key + + This seems to be sometimes used with twofish and blowfish and + represents a 160 bit ripemed160 hash output padded to 196 bit key + length. It seems the corresponding options for cryptsetup are + + --cipher twofish-cbc-null -s 192 -h ripemd160:20 + + + + * 7.5 loop-aes v1 format OpenSUSE + + Apparently this is done by older OpenSUSE distros and stopped working + from OpenSUSE 12.1 to 12.2. One user had success with the following: + + cryptsetup create -c aes -s 128 -h sha256 + + + + * 7.6 Kernel encrypted loop device (cryptoloop) + + There are a number of different losetup implementations for using + encrypted loop devices so getting this to work may need a bit of + experimentation. + + NOTE: Do NOT use this for new containers! Some of the existing + implementations are insecure and future support is uncertain. + + Example for a compatible mapping: + + losetup -e twofish -N /dev/loop0 /image.img + + translates to + + cryptsetup create image_plain /image.img -c twofish-cbc-plain -H plain + + with the mapping being done to /dev/mapper/image_plain instead of + to /dev/loop0. + + More details: + + Cipher, mode and password hash (or no hash): + + -e cipher [-N] => -c cipher-cbc-plain -H plain [-s 256] + -e cipher => -c cipher-cbc-plain -H ripemd160 [-s 256] + + + Key size and offsets (losetup: bytes, cryptsetuop: sectors of 512 bytes): + + -k 128 => -s 128 + -o 2560 => -o 5 -p 5 # 2560/512 = 5 + + + There is no replacement for --pass-fd, it has to be emulated using + keyfiles, see the cryptsetup man-page. + + +8. Issues with Specific Versions of cryptsetup + + + * 8.1 When using the create command for plain dm-crypt with + cryptsetup 1.1.x, the mapping is incompatible and my data is not + accessible anymore! + + With cryptsetup 1.1.x, the distro maintainer can define different + default encryption modes. You can check the compiled-in defaults + using "cryptsetup --help". Moreover, the plain device default + changed because the old IV mode was vulnerable to a watermarking + attack. + + If you are using a plain device and you need a compatible mode, just + specify cipher, key size and hash algorithm explicitly. For + compatibility with cryptsetup 1.0.x defaults, simple use the + following: + + cryptsetup create -c aes-cbc-plain -s 256 -h ripemd160 + + + LUKS stores cipher and mode in the metadata on disk, avoiding this + problem. + + + * 8.2 cryptsetup on SLED 10 has problems... + + SLED 10 is missing an essential kernel patch for dm-crypt, which is + broken in its kernel as a result. There may be a very old version of + cryptsetup (1.0.x) provided by SLED, which should also not be used + anymore as well. My advice would be to drop SLED 10. + + + * 8.3 Gcrypt 1.6.x and later break Whirlpool + + It is the other way round: In gcrypt 1.5.x, Whirlpool is broken and + it was fixed in 1.6.0 and later. If you selected whirlpool as hash + on creation of a LUKS container, it does not work anymore with the + fixed library. This shows one serious risk of using rarely used + settings. + + Note that at the time this FAQ item was written, 1.5.4 was the latest + 1.5.x version and it has the flaw, i.e. works with the old Whirlpool + version. Possibly later 1.5.x versions will work as well. If not, + please let me know. + + The only two ways to access older LUKS containers created with + Whirlpool are to either decrypt with an old gcrypt version that has + the flaw or to use a compatibility feature introduced in cryptsetup + 1.6.4 and gcrypt 1.6.1 or later. Version 1.6.0 cannot be used. + + Steps: + + - Make at least a header backup or better, refresh your full backup. + (You have a full backup, right? See Item 6.1 and following.) + + - Make sure you have cryptsetup 1.6.4 or later and check the gcrypt + version: + + + cryptsetup luksDump --debug | grep backend + + + If gcrypt is at version 1.5.x or before: + + - Reencrypt the LUKS header with a different hash. (Requires entering + all keyslot passphrases. If you do not have all, remove the ones you + do not have before.): + + + cryptsetup-reencrypt --keep-key --hash sha256 + + + If gcrypt is at version 1.6.1 or later: + + - Patch the hash name in the LUKS header from "whirlpool" to + "whirlpool_gcryptbug". This activates the broken implementation. + The detailed header layout is in Item 6.12 of this FAQ and in the + LUKS on-disk format specification. One way to change the hash is + with the following command: + + + echo -n -e 'whirlpool_gcryptbug\0' | dd of= bs=1 seek=72 conv=notrunc + + + - You can now open the device again. It is highly advisable to change + the hash now with cryptsetup-reencrypt as described above. While you + can reencrypt to use the fixed whirlpool, that may not be a good idea + as almost nobody seems to use it and hence the long time until the + bug was discovered. + + +9. The Initrd question + +* 9.1 My initrd is broken with cryptsetup or does now work as I want it to + +That is not nice! However the initrd is supplied by your distribution, not by +the cryptsetup project and hence you should complain to them. We cannot +really do anything about it. + +* 9.2 CVE-2016-4484 says cryptsetup is broken! + +Not really. It says the initrd in some Debian versions have a behavior that +under some very special and unusual conditions may be considered +a vulnerability. Incidentally, at this time (1-Jan-17) CVE-2016-4484 still says +absolutely nothing, which means that the reporters could not be bothered +do actually describe the problem so far and hence it cannot be that bad. +If it were, you would expect that they would have a CVE description in +there more than 30 days (!) after reporting the problem to the press. + +What happens is that you can trick the initrd to go to a rescue-shell +if you enter the LUKS password wrongly in a specific way. But falling +back to a rescue shell on initrd errors is a sensible default behavior +in the first place. It gives you about as much access as booting +a rescue system from CD or USB-Stick or as removing the disk would +give you. So this only applies when an attacker has physical access, +but cannot boot anything else or remove the disk. These will be rare +circumstances indeed, and if you rely on the default distribution +initrd to keep you safe under these circumstances, than you have +bigger problems than this somewhat expected behavior. + +My take is this was much more driven by some big egos that wanted +to make a splash for self-aggrandizement, than by any actual +security concerns. Ignore it. + +* 9.3 How do I do my own initrd with cryptsetup? + +It depends on the distribution. Below, I give a very simple example +and step-by-step instructions for Debian. With a bit of work, it +should be possible to adapt this to other distributions. Note that +the description is pretty general, so if you want to do other things +with an initrd it provides an useful starting point for that too. + +01) Unpacking an existing initrd to use as template + +A Linux initrd is in gzip'ed cpio format. To unpack it, use something +like this: + + md tmp; cd tmp; cat ../initrd | gunzip | cpio -id + +After this, you have the full initrd content in tmp/ + +02) Inspecting the init-script +The init-script is the only thing the kernel cares about. All activity +starts there. Its traditional location is /sbin/init on disk, but /init +in an initrd. In an initrd unpacked as above it is tmp/init. + +While init can be a binary despite usually being called "init script", +in Debian the main init on the root partition is a binary, but the +init in the initrd (and only that one is called by the kernel) is a script +and starts like this: + + #!/bin/sh + .... + +The "sh" used here is in tmp/bin/sh as just unpacked, and in +Debian it currently is a busybox. + +03) Creating your own initrd +The two examples below should give you most of what is needed. + +Here is a really minimal example. It does nothing but set up some +things and then drop to an interactive shell. It is perfect to try +out things that you want to go into the init-script. + +!/bin/sh +export PATH=/sbin:/bin +[ -d /sys ] || mkdir /sys +[ -d /proc ] || mkdir /proc +[ -d /tmp ] || mkdir /tmp +mount -t sysfs -o nodev,noexec,nosuid sysfs /sys +mount -t proc -o nodev,noexec,nosuid proc /proc +echo "initrd is running, starting BusyBox..." +exec /bin/sh --login + + +Here is an example that opens the first LUKS-partition it +finds with the hard-coded password "test2" and then +mounts it as root-filesystem. This is intended to be +used on an USB-stick that after boot goes into a safe, +as it contains the LUKS-passphrase in plain text and is +not secure to be left in the system. The script contains +debug-output that should make it easier to see what +is going on. Note that the final hand-over to the +init on the encrypted root-partition is done +by "exec switch_root /mnt/root /sbin/init", after +mounting the decrypted LUKS container +with "mount /dev/mapper/c1 /mnt/root". +The second argument of switch_root is relative to the +first argument, i.e. the init started with this command +is really /mnt/sbin/init before switch_root runs. + +!/bin/sh +export PATH=/sbin:/bin +[ -d /sys ] || mkdir /sys +[ -d /proc ] || mkdir /proc +[ -d /tmp ] || mkdir /tmp +mount -t sysfs -o nodev,noexec,nosuid sysfs /sys +mount -t proc -o nodev,noexec,nosuid proc /proc +echo "detecting LUKS containers in sda1-10, sdb1-10"; sleep 1 +for i in a b +do + for j in 1 2 3 4 5 6 7 8 9 10 + do + sleep 0.5 + d="/dev/sd"$i""$j + echo -n $d + cryptsetup isLuks $d >/dev/null 2>&1 + r=$? + echo -n " result: "$r"" + # 0 = is LUKS, 1 = is not LUKS, 4 = other error + if expr $r = 0 > /dev/null + then + echo " is LUKS, attempting unlock" + echo -n "test2" | cryptsetup luksOpen --key-file=- $d c1 + r=$? + echo " result of unlock attempt: "$r"" + sleep 2 + if expr $r = 0 > /dev/null + then + echo "*** LUKS partition unlocked, switching root *** (waiting 30 seconds before doing that)" + mount /dev/mapper/c1 /mnt/root + sleep 30 + exec switch_root /mnt/root /sbin/init + fi + else + echo " is not LUKS" + fi + done +done +echo "FAIL finding root on LUKS, loading BusyBox..."; sleep 5 +exec /bin/sh --login + + +04) What if I want a binary in the initrd, but libraries are missing? + +That is a bit tricky. One option is to compile statically, but that +does not work for everything. Debian puts some libraries into +lib/ and lib64/ which are usually enough. If you need more, you +can add the libraries you need there. That may or may not need a +configuration change for the dynamic linker "ld" as well. +Refer to standard Linux documentation +on how to add a library to a Linux system. A running initrd is +just a running Linux system after all, it is not special in any way. + +05) How do I repack the initrd? + +Simply repack the changed directory. While in tmp/, do +the following: + +find . | cpio --create --format='newc' | gzip > ../new_initrd + +Rename "new_initrd" to however you want it called (the name of +the initrd is a kernel-parameter) and move to /boot. That is it. + +10. References and Further Reading + + * Purpose of this Section + + The purpose of this section is to collect references to all materials + that do not fit the FAQ but are relevant in some fashion. This can + be core topics like the LUKS spec or disk encryption, but it can also + be more tangential, like secure storage management or cryptography + used in LUKS. It should still have relevance to cryptsetup and its + applications. + + If you want to see something added here, send email to the maintainer + (or the cryptsetup mailing list) giving an URL, a description (1-3 + lines preferred) and a section to put it in. You can also propose + new sections. + + At this time I would like to limit the references to things that are + available on the web. + + * Specifications + + - LUKS on-disk format spec: + https://gitlab.com/cryptsetup/cryptsetup/wikis/Specification + + * Code Examples + + - Some code examples are in the source package under docs/examples + + - LUKS AF Splitter in Ruby by John Lane: https://rubygems.org/gems/afsplitter + + * Brute-forcing passphrases + + - http://news.electricalchemy.net/2009/10/password-cracking-in-cloud-part-5.html + + - http://it.slashdot.org/story/12/12/05/0623215/new-25-gpu-monster-devours-strong-passwords-in-minutes + + * Tools + + * SSD and Flash Disk Related + + * Disk Encryption + + * Attacks Against Disk Encryption + + * Risk Management as Relevant for Disk Encryption + + * Cryptography + + * Secure Storage + + +A. Contributors +In no particular order: + + - Arno Wagner + + - Milan Broz + +___ diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..45ff9bb --- /dev/null +++ b/INSTALL @@ -0,0 +1,229 @@ +Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software +Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes a while. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..de0d2a2 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,50 @@ +EXTRA_DIST = COPYING.LGPL FAQ docs misc +SUBDIRS = po tests +CLEANFILES = +DISTCLEAN_TARGETS = + +AM_CPPFLAGS = \ + -include config.h \ + -I$(top_srcdir)/lib \ + -DDATADIR=\""$(datadir)"\" \ + -DLOCALEDIR=\""$(datadir)/locale"\" \ + -DLIBDIR=\""$(libdir)"\" \ + -DPREFIX=\""$(prefix)"\" \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -DVERSION=\""$(VERSION)"\" +AM_CFLAGS = -Wall +AM_LDFLAGS = + +LDADD = $(LTLIBINTL) -lm + +tmpfilesddir = @DEFAULT_TMPFILESDIR@ + +noinst_LTLIBRARIES = +sbin_PROGRAMS = +man8_MANS = +tmpfilesd_DATA = + +include man/Makemodule.am + +include scripts/Makemodule.am + +if CRYPTO_INTERNAL_ARGON2 +include lib/crypto_backend/argon2/Makemodule.am +endif +include lib/crypto_backend/Makemodule.am +include lib/Makemodule.am + +include src/Makemodule.am + +ACLOCAL_AMFLAGS = -I m4 + +DISTCHECK_CONFIGURE_FLAGS = \ + --with-tmpfilesdir=$$dc_install_base/usr/lib/tmpfiles.d \ + --enable-internal-argon2 --enable-internal-sse-argon2 + +distclean-local: + -find . -name \*~ -o -name \*.orig -o -name \*.rej | xargs rm -f + rm -rf autom4te.cache + +clean-local: + -rm -rf docs/doxygen_api_docs libargon2.la diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..168617a --- /dev/null +++ b/NEWS @@ -0,0 +1 @@ +See docs/* directory for Release Notes. diff --git a/README b/README new file mode 100644 index 0000000..613aa09 --- /dev/null +++ b/README @@ -0,0 +1,31 @@ + + cryptsetup + +setup cryptographic volumes for dm-crypt (including LUKS extension) + +WEB PAGE: + + https://gitlab.com/cryptsetup/cryptsetup/ + +FAQ: + + https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions + +MAILING LIST: + + E-MAIL: dm-crypt@saout.de + URL: http://www.saout.de/mailman/listinfo/dm-crypt + +DOWNLOAD: + + https://www.kernel.org/pub/linux/utils/cryptsetup/ + +SOURCE CODE: + + URL: https://gitlab.com/cryptsetup/cryptsetup/tree/master + Checkout: git clone https://gitlab.com/cryptsetup/cryptsetup.git + +NLS (PO TRANSLATIONS): + + PO files are maintained by: + http://translationproject.org/domain/cryptsetup.html diff --git a/README.md b/README.md new file mode 100644 index 0000000..a0eb0e4 --- /dev/null +++ b/README.md @@ -0,0 +1,83 @@ +![LUKS logo](https://gitlab.com/cryptsetup/cryptsetup/wikis/luks-logo.png) + +What the ...? +============= +**Cryptsetup** is a utility used to conveniently set up disk encryption based +on the [DMCrypt](https://gitlab.com/cryptsetup/cryptsetup/wikis/DMCrypt) kernel module. + +These include **plain** **dm-crypt** volumes, **LUKS** volumes, **loop-AES** +and **TrueCrypt** (including **VeraCrypt** extension) formats. + +The project also includes a **veritysetup** utility used to conveniently setup +[DMVerity](https://gitlab.com/cryptsetup/cryptsetup/wikis/DMVerity) block integrity checking kernel module +and, since version 2.0, **integritysetup** to setup +[DMIntegrity](https://gitlab.com/cryptsetup/cryptsetup/wikis/DMIntegrity) block integrity kernel module. + + +LUKS Design +----------- +**LUKS** is the standard for Linux hard disk encryption. By providing a standard on-disk-format, it does not +only facilitate compatibility among distributions, but also provides secure management of multiple user passwords. +LUKS stores all necessary setup information in the partition header, enabling to transport or migrate data seamlessly. + +Last version of the LUKS2 format specification is +[available here](https://gitlab.com/cryptsetup/LUKS2-docs). + +Last version of the LUKS1 format specification is +[available here](https://www.kernel.org/pub/linux/utils/cryptsetup/LUKS_docs/on-disk-format.pdf). + +Why LUKS? +--------- + * compatibility via standardization, + * secure against low entropy attacks, + * support for multiple keys, + * effective passphrase revocation, + * free. + +[Project home page](https://gitlab.com/cryptsetup/cryptsetup/). +----------------- + +[Frequently asked questions (FAQ)](https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions) +-------------------------------- + +Download +-------- +All release tarballs and release notes are hosted on [kernel.org](https://www.kernel.org/pub/linux/utils/cryptsetup/). + +**The latest cryptsetup version is 2.2.1** + * [cryptsetup-2.2.1.tar.xz](https://www.kernel.org/pub/linux/utils/cryptsetup/v2.2/cryptsetup-2.2.1.tar.xz) + * Signature [cryptsetup-2.2.1.tar.sign](https://www.kernel.org/pub/linux/utils/cryptsetup/v2.2/cryptsetup-2.2.1.tar.sign) + _(You need to decompress file first to check signature.)_ + * [Cryptsetup 2.2.1 Release Notes](https://www.kernel.org/pub/linux/utils/cryptsetup/v2.2/v2.2.1-ReleaseNotes). + +Previous versions + * [Version 2.2.0](https://www.kernel.org/pub/linux/utils/cryptsetup/v2.2/cryptsetup-2.2.0.tar.xz) - + [Signature](https://www.kernel.org/pub/linux/utils/cryptsetup/v2.2/cryptsetup-2.2.0.tar.sign) - + [Release Notes](https://www.kernel.org/pub/linux/utils/cryptsetup/v2.2/v2.2.0-ReleaseNotes). + * [Version 2.0.6](https://www.kernel.org/pub/linux/utils/cryptsetup/v2.0/cryptsetup-2.0.6.tar.xz) - + [Signature](https://www.kernel.org/pub/linux/utils/cryptsetup/v2.0/cryptsetup-2.0.6.tar.sign) - + [Release Notes](https://www.kernel.org/pub/linux/utils/cryptsetup/v2.0/v2.0.6-ReleaseNotes). + * [Version 1.7.5](https://www.kernel.org/pub/linux/utils/cryptsetup/v1.7/cryptsetup-1.7.5.tar.xz) - + [Signature](https://www.kernel.org/pub/linux/utils/cryptsetup/v1.7/cryptsetup-1.7.5.tar.sign) - + [Release Notes](https://www.kernel.org/pub/linux/utils/cryptsetup/v1.7/v1.7.5-ReleaseNotes). + +Source and API docs +------------------- +For development version code, please refer to [source](https://gitlab.com/cryptsetup/cryptsetup/tree/master) page, +mirror on [kernel.org](https://git.kernel.org/cgit/utils/cryptsetup/cryptsetup.git/) or [GitHub](https://github.com/mbroz/cryptsetup). + +For libcryptsetup documentation see [libcryptsetup API](https://mbroz.fedorapeople.org/libcryptsetup_API/) page. + +The libcryptsetup API/ABI changes are tracked in [compatibility report](https://abi-laboratory.pro/tracker/timeline/cryptsetup/). + +NLS PO files are maintained by [TranslationProject](http://translationproject.org/domain/cryptsetup.html). + +Help! +----- +Please always read [FAQ](https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions) first. +For cryptsetup and LUKS related questions, please use the dm-crypt mailing list, [dm-crypt@saout.de](mailto:dm-crypt@saout.de). + +If you want to subscribe just send an empty mail to [dm-crypt-subscribe@saout.de](mailto:dm-crypt-subscribe@saout.de). + +You can also browse [list archive](http://www.saout.de/pipermail/dm-crypt/) or read it through +[web interface](https://marc.info/?l=dm-crypt). diff --git a/TODO b/TODO new file mode 100644 index 0000000..58e5cc9 --- /dev/null +++ b/TODO @@ -0,0 +1 @@ +Please see issues tracked at https://gitlab.com/cryptsetup/cryptsetup/issues. diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..c6719f6 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,79 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +srcdir=`dirname $0` +PKG_NAME="cryptsetup" + +DIE=0 + +(autopoint --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have autopoint installed." + echo "Download the appropriate package for your distribution," + echo "or see http://www.gnu.org/software/gettext" + DIE=1 +} + +(autoconf --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have autoconf installed to." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + DIE=1 +} + +(grep "^AM_PROG_LIBTOOL" $srcdir/configure.ac >/dev/null) && { + (libtool --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have libtool installed." + echo "Get ftp://ftp.gnu.org/pub/gnu/" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +(automake --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have automake installed." + echo "Get ftp://ftp.gnu.org/pub/gnu/" + echo "(or a newer version if it is available)" + DIE=1 + NO_AUTOMAKE=yes +} + + +# if no automake, don't bother testing for aclocal +test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: Missing aclocal. The version of automake" + echo "installed doesn't appear recent enough." + echo "Get ftp://ftp.gnu.org/pub/gnu/" + echo "(or a newer version if it is available)" + DIE=1 +} + +if test "$DIE" -eq 1; then + exit 1 +fi + +echo +echo "Generate build-system by:" +echo " autopoint: $(autopoint --version | head -1)" +echo " aclocal: $(aclocal --version | head -1)" +echo " autoconf: $(autoconf --version | head -1)" +echo " automake: $(automake --version | head -1)" +echo " libtoolize: $(libtoolize --version | head -1)" +echo + + +set -e +autopoint --force $AP_OPTS +libtoolize --force --copy +aclocal -I m4 $AL_OPTS +autoheader $AH_OPTS +automake --add-missing --copy --gnu $AM_OPTS +autoconf $AC_OPTS + +echo +echo "Now type '$srcdir/configure' and 'make' to compile." +echo diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..3758b29 --- /dev/null +++ b/configure.ac @@ -0,0 +1,639 @@ +AC_PREREQ([2.67]) +AC_INIT([cryptsetup],[2.2.2]) + +dnl library version from ..[-] +LIBCRYPTSETUP_VERSION=$(echo $PACKAGE_VERSION | cut -f1 -d-) +LIBCRYPTSETUP_VERSION_INFO=17:0:5 + +AM_SILENT_RULES([yes]) +AC_CONFIG_SRCDIR(src/cryptsetup.c) +AC_CONFIG_MACRO_DIR([m4]) + +AC_CONFIG_HEADERS([config.h:config.h.in]) + +# We do not want to run test in parallel. Really. +# http://lists.gnu.org/archive/html/automake/2013-01/msg00060.html + +# For old automake use this +#AM_INIT_AUTOMAKE(dist-xz subdir-objects) +AM_INIT_AUTOMAKE([dist-xz 1.12 serial-tests subdir-objects]) + +if test "x$prefix" = "xNONE"; then + sysconfdir=/etc +fi +AC_PREFIX_DEFAULT(/usr) + +AC_CANONICAL_HOST +AC_USE_SYSTEM_EXTENSIONS +AC_PROG_CC +AM_PROG_CC_C_O +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_MAKE_SET +AC_ENABLE_STATIC(no) +LT_INIT +PKG_PROG_PKG_CONFIG + +dnl ========================================================================== +dnl define PKG_CHECK_VAR for old pkg-config <= 0.28 +m4_ifndef([AS_VAR_COPY], +[m4_define([AS_VAR_COPY], +[AS_LITERAL_IF([$1[]$2], [$1=$$2], [eval $1=\$$2])]) +]) +m4_ifndef([PKG_CHECK_VAR], [ +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config]) + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4]) +]) +]) +dnl ========================================================================== + +AC_C_RESTRICT + +AC_HEADER_DIRENT +AC_HEADER_STDC +AC_CHECK_HEADERS(fcntl.h malloc.h inttypes.h sys/ioctl.h sys/mman.h \ + sys/sysmacros.h sys/statvfs.h ctype.h unistd.h locale.h byteswap.h endian.h stdint.h) + +AC_CHECK_HEADERS(uuid/uuid.h,,[AC_MSG_ERROR([You need the uuid library.])]) +AC_CHECK_HEADER(libdevmapper.h,,[AC_MSG_ERROR([You need the device-mapper library.])]) + +AC_ARG_ENABLE([keyring], + AS_HELP_STRING([--disable-keyring], [disable kernel keyring support and builtin kernel keyring token]), + [], [enable_keyring=yes]) +if test "x$enable_keyring" = "xyes"; then + AC_CHECK_HEADERS(linux/keyctl.h,,[AC_MSG_ERROR([You need Linux kernel headers with kernel keyring service compiled.])]) + + dnl ========================================================================== + dnl check whether kernel is compiled with kernel keyring service syscalls + AC_CHECK_DECL(__NR_add_key,,[AC_MSG_ERROR([The kernel is missing add_key syscall.])], [#include ]) + AC_CHECK_DECL(__NR_keyctl,,[AC_MSG_ERROR([The kernel is missing keyctl syscall.])], [#include ]) + AC_CHECK_DECL(__NR_request_key,,[AC_MSG_ERROR([The kernel is missing request_key syscall.])], [#include ]) + + dnl ========================================================================== + dnl check that key_serial_t hasn't been adopted yet in stdlib + AC_CHECK_TYPES([key_serial_t], [], [], [ + AC_INCLUDES_DEFAULT + #ifdef HAVE_LINUX_KEYCTL_H + # include + #endif + ]) + + AC_DEFINE(KERNEL_KEYRING, 1, [Enable kernel keyring service support]) +fi +AM_CONDITIONAL(KERNEL_KEYRING, test "x$enable_keyring" = "xyes") + +saved_LIBS=$LIBS +AC_CHECK_LIB(uuid, uuid_clear, ,[AC_MSG_ERROR([You need the uuid library.])]) +AC_SUBST(UUID_LIBS, $LIBS) +LIBS=$saved_LIBS + +AC_SEARCH_LIBS([clock_gettime],[rt posix4]) +AC_CHECK_FUNCS([posix_memalign clock_gettime posix_fallocate explicit_bzero]) + +if test "x$enable_largefile" = "xno"; then + AC_MSG_ERROR([Building with --disable-largefile is not supported, it can cause data corruption.]) +fi + +AC_C_CONST +AC_C_BIGENDIAN +AC_TYPE_OFF_T +AC_SYS_LARGEFILE +AC_FUNC_FSEEKO +AC_PROG_GCC_TRADITIONAL +AC_FUNC_STRERROR_R + +dnl ========================================================================== + +AM_GNU_GETTEXT([external],[need-ngettext]) +AM_GNU_GETTEXT_VERSION([0.18.3]) + +dnl ========================================================================== + +saved_LIBS=$LIBS +AC_CHECK_LIB(popt, poptConfigFileToString,, + [AC_MSG_ERROR([You need popt 1.7 or newer to compile.])]) +AC_SUBST(POPT_LIBS, $LIBS) +LIBS=$saved_LIBS + +dnl ========================================================================== +dnl FIPS extensions +AC_ARG_ENABLE([fips], + AS_HELP_STRING([--enable-fips], [enable FIPS mode restrictions])) +if test "x$enable_fips" = "xyes"; then + AC_DEFINE(ENABLE_FIPS, 1, [Enable FIPS mode restrictions]) + + if test "x$enable_static" = "xyes" -o "x$enable_static_cryptsetup" = "xyes" ; then + AC_MSG_ERROR([Static build is not compatible with FIPS.]) + fi +fi + +AC_DEFUN([NO_FIPS], [ + if test "x$enable_fips" = "xyes"; then + AC_MSG_ERROR([This option is not compatible with FIPS.]) + fi +]) + +dnl ========================================================================== +dnl pwquality library (cryptsetup CLI only) +AC_ARG_ENABLE([pwquality], + AS_HELP_STRING([--enable-pwquality], [enable password quality checking using pwquality library])) + +if test "x$enable_pwquality" = "xyes"; then + AC_DEFINE(ENABLE_PWQUALITY, 1, [Enable password quality checking using pwquality library]) + PKG_CHECK_MODULES([PWQUALITY], [pwquality >= 1.0.0],, + AC_MSG_ERROR([You need pwquality library.])) + + dnl FIXME: this is really hack for now + PWQUALITY_STATIC_LIBS="$PWQUALITY_LIBS -lcrack -lz" +fi + +dnl ========================================================================== +dnl passwdqc library (cryptsetup CLI only) +AC_ARG_ENABLE([passwdqc], + AS_HELP_STRING([--enable-passwdqc@<:@=CONFIG_PATH@:>@], + [enable password quality checking using passwdqc library (optionally with CONFIG_PATH)])) + +case "$enable_passwdqc" in + ""|yes|no) use_passwdqc_config="" ;; + /*) use_passwdqc_config="$enable_passwdqc"; enable_passwdqc=yes ;; + *) AC_MSG_ERROR([Unrecognized --enable-passwdqc parameter.]) ;; +esac +AC_DEFINE_UNQUOTED([PASSWDQC_CONFIG_FILE], ["$use_passwdqc_config"], [passwdqc library config file]) + +if test "x$enable_passwdqc" = "xyes"; then + AC_DEFINE(ENABLE_PASSWDQC, 1, [Enable password quality checking using passwdqc library]) + + PASSWDQC_LIBS="-lpasswdqc" +fi + +if test "x$enable_pwquality$enable_passwdqc" = "xyesyes"; then + AC_MSG_ERROR([--enable-pwquality and --enable-passwdqc are mutually incompatible.]) +fi + +dnl ========================================================================== +dnl Crypto backend functions + +AC_DEFUN([CONFIGURE_GCRYPT], [ + if test "x$enable_fips" = "xyes"; then + GCRYPT_REQ_VERSION=1.4.5 + else + GCRYPT_REQ_VERSION=1.1.42 + fi + + dnl libgcrypt rejects to use pkgconfig, use AM_PATH_LIBGCRYPT from gcrypt-devel here. + dnl Do not require gcrypt-devel if other crypto backend is used. + m4_ifdef([AM_PATH_LIBGCRYPT],[ + AC_ARG_ENABLE([gcrypt-pbkdf2], + dnl Check if we can use gcrypt PBKDF2 (1.6.0 supports empty password) + AS_HELP_STRING([--enable-gcrypt-pbkdf2], [force enable internal gcrypt PBKDF2]), + if test "x$enableval" = "xyes"; then + [use_internal_pbkdf2=0] + else + [use_internal_pbkdf2=1] + fi, + [AM_PATH_LIBGCRYPT([1.6.1], [use_internal_pbkdf2=0], [use_internal_pbkdf2=1])]) + AM_PATH_LIBGCRYPT($GCRYPT_REQ_VERSION,,[AC_MSG_ERROR([You need the gcrypt library.])])], + AC_MSG_ERROR([Missing support for gcrypt: install gcrypt and regenerate configure.])) + + AC_MSG_CHECKING([if internal cryptsetup PBKDF2 is compiled-in]) + if test $use_internal_pbkdf2 = 0; then + AC_MSG_RESULT([no]) + else + AC_MSG_RESULT([yes]) + NO_FIPS([]) + fi + + AC_CHECK_DECLS([GCRY_CIPHER_MODE_XTS], [], [], [#include ]) + + if test "x$enable_static_cryptsetup" = "xyes"; then + saved_LIBS=$LIBS + LIBS="$saved_LIBS $LIBGCRYPT_LIBS -static" + AC_CHECK_LIB(gcrypt, gcry_check_version,, + AC_MSG_ERROR([Cannot find static gcrypt library.]), + [-lgpg-error]) + LIBGCRYPT_STATIC_LIBS="$LIBGCRYPT_LIBS -lgpg-error" + LIBS=$saved_LIBS + fi + + CRYPTO_CFLAGS=$LIBGCRYPT_CFLAGS + CRYPTO_LIBS=$LIBGCRYPT_LIBS + CRYPTO_STATIC_LIBS=$LIBGCRYPT_STATIC_LIBS + + AC_DEFINE_UNQUOTED(GCRYPT_REQ_VERSION, ["$GCRYPT_REQ_VERSION"], [Requested gcrypt version]) +]) + +AC_DEFUN([CONFIGURE_OPENSSL], [ + PKG_CHECK_MODULES([OPENSSL], [openssl >= 0.9.8],, + AC_MSG_ERROR([You need openssl library.])) + CRYPTO_CFLAGS=$OPENSSL_CFLAGS + CRYPTO_LIBS=$OPENSSL_LIBS + use_internal_pbkdf2=0 + + if test "x$enable_static_cryptsetup" = "xyes"; then + saved_PKG_CONFIG=$PKG_CONFIG + PKG_CONFIG="$PKG_CONFIG --static" + PKG_CHECK_MODULES([OPENSSL_STATIC], [openssl]) + CRYPTO_STATIC_LIBS=$OPENSSL_STATIC_LIBS + PKG_CONFIG=$saved_PKG_CONFIG + fi +]) + +AC_DEFUN([CONFIGURE_NSS], [ + if test "x$enable_static_cryptsetup" = "xyes"; then + AC_MSG_ERROR([Static build of cryptsetup is not supported with NSS.]) + fi + + AC_MSG_WARN([NSS backend does NOT provide backward compatibility (missing ripemd160 hash).]) + + PKG_CHECK_MODULES([NSS], [nss],, + AC_MSG_ERROR([You need nss library.])) + + saved_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $NSS_CFLAGS" + AC_CHECK_DECLS([NSS_GetVersion], [], [], [#include ]) + CFLAGS=$saved_CFLAGS + + CRYPTO_CFLAGS=$NSS_CFLAGS + CRYPTO_LIBS=$NSS_LIBS + use_internal_pbkdf2=1 + NO_FIPS([]) +]) + +AC_DEFUN([CONFIGURE_KERNEL], [ + AC_CHECK_HEADERS(linux/if_alg.h,, + [AC_MSG_ERROR([You need Linux kernel headers with userspace crypto interface.])]) +# AC_CHECK_DECLS([AF_ALG],, +# [AC_MSG_ERROR([You need Linux kernel with userspace crypto interface.])], +# [#include ]) + use_internal_pbkdf2=1 + NO_FIPS([]) +]) + +AC_DEFUN([CONFIGURE_NETTLE], [ + AC_CHECK_HEADERS(nettle/sha.h,, + [AC_MSG_ERROR([You need Nettle cryptographic library.])]) + AC_CHECK_HEADERS(nettle/version.h) + + saved_LIBS=$LIBS + AC_CHECK_LIB(nettle, nettle_pbkdf2_hmac_sha256,, + [AC_MSG_ERROR([You need Nettle library version 2.6 or more recent.])]) + CRYPTO_LIBS=$LIBS + LIBS=$saved_LIBS + + CRYPTO_STATIC_LIBS=$CRYPTO_LIBS + use_internal_pbkdf2=0 + NO_FIPS([]) +]) + +dnl ========================================================================== +saved_LIBS=$LIBS + +AC_ARG_ENABLE([static-cryptsetup], + AS_HELP_STRING([--enable-static-cryptsetup], [enable build of static version of tools])) +if test "x$enable_static_cryptsetup" = "xyes"; then + if test "x$enable_static" = "xno"; then + AC_MSG_WARN([Requested static cryptsetup build, enabling static library.]) + enable_static=yes + fi +fi +AM_CONDITIONAL(STATIC_TOOLS, test "x$enable_static_cryptsetup" = "xyes") + +AC_ARG_ENABLE([cryptsetup], + AS_HELP_STRING([--disable-cryptsetup], [disable cryptsetup support]), + [], [enable_cryptsetup=yes]) +AM_CONDITIONAL(CRYPTSETUP, test "x$enable_cryptsetup" = "xyes") + +AC_ARG_ENABLE([veritysetup], + AS_HELP_STRING([--disable-veritysetup], [disable veritysetup support]), + [], [enable_veritysetup=yes]) +AM_CONDITIONAL(VERITYSETUP, test "x$enable_veritysetup" = "xyes") + +AC_ARG_ENABLE([cryptsetup-reencrypt], + AS_HELP_STRING([--disable-cryptsetup-reencrypt], [disable cryptsetup-reencrypt tool]), + [], [enable_cryptsetup_reencrypt=yes]) +AM_CONDITIONAL(REENCRYPT, test "x$enable_cryptsetup_reencrypt" = "xyes") + +AC_ARG_ENABLE([integritysetup], + AS_HELP_STRING([--disable-integritysetup], [disable integritysetup support]), + [], [enable_integritysetup=yes]) +AM_CONDITIONAL(INTEGRITYSETUP, test "x$enable_integritysetup" = "xyes") + +AC_ARG_ENABLE([selinux], + AS_HELP_STRING([--disable-selinux], [disable selinux support [default=auto]]), + [], [enable_selinux=yes]) + +AC_ARG_ENABLE([udev], + AS_HELP_STRING([--disable-udev], [disable udev support]), + [], [enable_udev=yes]) + +dnl Try to use pkg-config for devmapper, but fallback to old detection +PKG_CHECK_MODULES([DEVMAPPER], [devmapper >= 1.02.03],, [ + AC_CHECK_LIB(devmapper, dm_task_set_name,, + [AC_MSG_ERROR([You need the device-mapper library.])]) + AC_CHECK_LIB(devmapper, dm_task_set_message,, + [AC_MSG_ERROR([The device-mapper library on your system is too old.])]) + DEVMAPPER_LIBS=$LIBS +]) +LIBS=$saved_LIBS + +LIBS="$LIBS $DEVMAPPER_LIBS" +AC_CHECK_DECLS([dm_task_secure_data], [], [], [#include ]) +AC_CHECK_DECLS([dm_task_retry_remove], [], [], [#include ]) +AC_CHECK_DECLS([dm_task_deferred_remove], [], [], [#include ]) +AC_CHECK_DECLS([dm_device_has_mounted_fs], [], [], [#include ]) +AC_CHECK_DECLS([dm_device_has_holders], [], [], [#include ]) +AC_CHECK_DECLS([DM_DEVICE_GET_TARGET_VERSION], [], [], [#include ]) +AC_CHECK_DECLS([DM_UDEV_DISABLE_DISK_RULES_FLAG], [have_cookie=yes], [have_cookie=no], [#include ]) +if test "x$enable_udev" = xyes; then + if test "x$have_cookie" = xno; then + AC_MSG_WARN([The device-mapper library on your system has no udev support, udev support disabled.]) + else + AC_DEFINE(USE_UDEV, 1, [Try to use udev synchronisation?]) + fi +fi +LIBS=$saved_LIBS + +dnl Check for JSON-C used in LUKS2 +PKG_CHECK_MODULES([JSON_C], [json-c]) +AC_CHECK_DECLS([json_object_object_add_ex], [], [], [#include ]) +AC_CHECK_DECLS([json_object_deep_copy], [], [], [#include ]) + +dnl Crypto backend configuration. +AC_ARG_WITH([crypto_backend], + AS_HELP_STRING([--with-crypto_backend=BACKEND], [crypto backend (gcrypt/openssl/nss/kernel/nettle) [openssl]]), + [], [with_crypto_backend=openssl]) + +dnl Kernel crypto API backend needed for benchmark and tcrypt +AC_ARG_ENABLE([kernel_crypto], + AS_HELP_STRING([--disable-kernel_crypto], [disable kernel userspace crypto (no benchmark and tcrypt)]), + [], [enable_kernel_crypto=yes]) + +if test "x$enable_kernel_crypto" = "xyes"; then + AC_CHECK_HEADERS(linux/if_alg.h,, + [AC_MSG_ERROR([You need Linux kernel headers with userspace crypto interface. (Or use --disable-kernel_crypto.)])]) + AC_DEFINE(ENABLE_AF_ALG, 1, [Enable using of kernel userspace crypto]) +fi + +case $with_crypto_backend in + gcrypt) CONFIGURE_GCRYPT([]) ;; + openssl) CONFIGURE_OPENSSL([]) ;; + nss) CONFIGURE_NSS([]) ;; + kernel) CONFIGURE_KERNEL([]) ;; + nettle) CONFIGURE_NETTLE([]) ;; + *) AC_MSG_ERROR([Unknown crypto backend.]) ;; +esac +AM_CONDITIONAL(CRYPTO_BACKEND_GCRYPT, test "$with_crypto_backend" = "gcrypt") +AM_CONDITIONAL(CRYPTO_BACKEND_OPENSSL, test "$with_crypto_backend" = "openssl") +AM_CONDITIONAL(CRYPTO_BACKEND_NSS, test "$with_crypto_backend" = "nss") +AM_CONDITIONAL(CRYPTO_BACKEND_KERNEL, test "$with_crypto_backend" = "kernel") +AM_CONDITIONAL(CRYPTO_BACKEND_NETTLE, test "$with_crypto_backend" = "nettle") + +AM_CONDITIONAL(CRYPTO_INTERNAL_PBKDF2, test $use_internal_pbkdf2 = 1) +AC_DEFINE_UNQUOTED(USE_INTERNAL_PBKDF2, [$use_internal_pbkdf2], [Use internal PBKDF2]) + +dnl Argon2 implementation +AC_ARG_ENABLE([internal-argon2], + AS_HELP_STRING([--disable-internal-argon2], [disable internal implementation of Argon2 PBKDF]), + [], [enable_internal_argon2=yes]) + +AC_ARG_ENABLE([libargon2], + AS_HELP_STRING([--enable-libargon2], [enable external libargon2 (PHC) library (disables internal bundled version)])) + +if test "x$enable_libargon2" = "xyes" ; then + AC_CHECK_HEADERS(argon2.h,, + [AC_MSG_ERROR([You need libargon2 development library installed.])]) + AC_CHECK_DECL(Argon2_id,,[AC_MSG_ERROR([You need more recent Argon2 library with support for Argon2id.])], [#include ]) + PKG_CHECK_MODULES([LIBARGON2], [libargon2],,[LIBARGON2_LIBS="-largon2"]) + enable_internal_argon2=no +else + AC_MSG_WARN([Argon2 bundled (slow) reference implementation will be used, please consider to use system library with --enable-libargon2.]) + + AC_ARG_ENABLE([internal-sse-argon2], + AS_HELP_STRING([--enable-internal-sse-argon2], [enable internal SSE implementation of Argon2 PBKDF])) + + if test "x$enable_internal_sse_argon2" = "xyes"; then + AC_MSG_CHECKING(if Argon2 SSE optimization can be used) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include + __m128i testfunc(__m128i *a, __m128i *b) { + return _mm_xor_si128(_mm_loadu_si128(a), _mm_loadu_si128(b)); + } + ]])],,[enable_internal_sse_argon2=no]) + AC_MSG_RESULT($enable_internal_sse_argon2) + fi +fi + +if test "x$enable_internal_argon2" = "xyes"; then + AC_DEFINE(USE_INTERNAL_ARGON2, 1, [Use internal Argon2]) +fi +AM_CONDITIONAL(CRYPTO_INTERNAL_ARGON2, test "x$enable_internal_argon2" = "xyes") +AM_CONDITIONAL(CRYPTO_INTERNAL_SSE_ARGON2, test "x$enable_internal_sse_argon2" = "xyes") + +dnl Link with blkid to check for other device types +AC_ARG_ENABLE([blkid], + AS_HELP_STRING([--disable-blkid], [disable use of blkid for device signature detection and wiping]), + [], [enable_blkid=yes]) + +if test "x$enable_blkid" = "xyes"; then + PKG_CHECK_MODULES([BLKID], [blkid],[AC_DEFINE([HAVE_BLKID], 1, [Define to 1 to use blkid for detection of disk signatures.])],[LIBBLKID_LIBS="-lblkid"]) + + AC_CHECK_HEADERS(blkid/blkid.h,,[AC_MSG_ERROR([You need blkid development library installed.])]) + AC_CHECK_DECL([blkid_do_wipe], + [ AC_DEFINE([HAVE_BLKID_WIPE], 1, [Define to 1 to use blkid_do_wipe.]) + enable_blkid_wipe=yes + ],, + [#include ]) + AC_CHECK_DECL([blkid_probe_step_back], + [ AC_DEFINE([HAVE_BLKID_STEP_BACK], 1, [Define to 1 to use blkid_probe_step_back.]) + enable_blkid_step_back=yes + ],, + [#include ]) + AC_CHECK_DECLS([ blkid_reset_probe, + blkid_probe_set_device, + blkid_probe_filter_superblocks_type, + blkid_do_safeprobe, + blkid_do_probe, + blkid_probe_lookup_value + ],, + [AC_MSG_ERROR([Can not compile with blkid support, disable it by --disable-blkid.])], + [#include ]) +fi +AM_CONDITIONAL(HAVE_BLKID, test "x$enable_blkid" = "xyes") +AM_CONDITIONAL(HAVE_BLKID_WIPE, test "x$enable_blkid_wipe" = "xyes") +AM_CONDITIONAL(HAVE_BLKID_STEP_BACK, test "x$enable_blkid_step_back" = "xyes") + +dnl Magic for cryptsetup.static build. +if test "x$enable_static_cryptsetup" = "xyes"; then + saved_PKG_CONFIG=$PKG_CONFIG + PKG_CONFIG="$PKG_CONFIG --static" + + LIBS="$saved_LIBS -static" + AC_CHECK_LIB(popt, poptGetContext,, + AC_MSG_ERROR([Cannot find static popt library.])) + + dnl Try to detect needed device-mapper static libraries, try pkg-config first. + LIBS="$saved_LIBS -static" + PKG_CHECK_MODULES([DEVMAPPER_STATIC], [devmapper >= 1.02.27],,[ + DEVMAPPER_STATIC_LIBS=$DEVMAPPER_LIBS + if test "x$enable_selinux" = "xyes"; then + AC_CHECK_LIB(sepol, sepol_bool_set) + AC_CHECK_LIB(selinux, is_selinux_enabled) + DEVMAPPER_STATIC_LIBS="$DEVMAPPER_STATIC_LIBS $LIBS" + fi + ]) + LIBS="$saved_LIBS $DEVMAPPER_STATIC_LIBS" + AC_CHECK_LIB(devmapper, dm_task_set_uuid,, + AC_MSG_ERROR([Cannot link with static device-mapper library.])) + + dnl Try to detect uuid static library. + LIBS="$saved_LIBS -static" + AC_CHECK_LIB(uuid, uuid_generate,, + AC_MSG_ERROR([Cannot find static uuid library.])) + + LIBS=$saved_LIBS + PKG_CONFIG=$saved_PKG_CONFIG +fi + +AC_MSG_CHECKING([for systemd tmpfiles config directory]) +PKG_CHECK_VAR([systemd_tmpfilesdir], [systemd], [tmpfilesdir], [], [systemd_tmpfilesdir=no]) +AC_MSG_RESULT([$systemd_tmpfilesdir]) + +AC_SUBST([DEVMAPPER_LIBS]) +AC_SUBST([DEVMAPPER_STATIC_LIBS]) + +AC_SUBST([PWQUALITY_LIBS]) +AC_SUBST([PWQUALITY_STATIC_LIBS]) + +AC_SUBST([PASSWDQC_LIBS]) + +AC_SUBST([CRYPTO_CFLAGS]) +AC_SUBST([CRYPTO_LIBS]) +AC_SUBST([CRYPTO_STATIC_LIBS]) + +AC_SUBST([JSON_C_LIBS]) +AC_SUBST([LIBARGON2_LIBS]) +AC_SUBST([BLKID_LIBS]) + +AC_SUBST([LIBCRYPTSETUP_VERSION]) +AC_SUBST([LIBCRYPTSETUP_VERSION_INFO]) + +dnl ========================================================================== +AC_ARG_ENABLE([dev-random], + AS_HELP_STRING([--enable-dev-random], [use /dev/random by default for key generation (otherwise use /dev/urandom)])) +if test "x$enable_dev_random" = "xyes"; then + default_rng=/dev/random +else + default_rng=/dev/urandom +fi +AC_DEFINE_UNQUOTED(DEFAULT_RNG, ["$default_rng"], [default RNG type for key generator]) + +dnl ========================================================================== +AC_DEFUN([CS_DEFINE], + [AC_DEFINE_UNQUOTED(DEFAULT_[]m4_translit([$1], [-a-z], [_A-Z]), [$2], [$3]) +]) + +AC_DEFUN([CS_STR_WITH], [AC_ARG_WITH([$1], + [AS_HELP_STRING(--with-[$1], [default $2 [$3]])], + [CS_DEFINE([$1], ["$withval"], [$2])], + [CS_DEFINE([$1], ["$3"], [$2])] +)]) + +AC_DEFUN([CS_NUM_WITH], [AC_ARG_WITH([$1], + [AS_HELP_STRING(--with-[$1], [default $2 [$3]])], + [CS_DEFINE([$1], [$withval], [$2])], + [CS_DEFINE([$1], [$3], [$2])] +)]) + +AC_DEFUN([CS_ABSPATH], [ + case "$1" in + /*) ;; + *) AC_MSG_ERROR([$2 argument must be an absolute path.]);; + esac +]) + +dnl ========================================================================== +CS_STR_WITH([plain-hash], [password hashing function for plain mode], [ripemd160]) +CS_STR_WITH([plain-cipher], [cipher for plain mode], [aes]) +CS_STR_WITH([plain-mode], [cipher mode for plain mode], [cbc-essiv:sha256]) +CS_NUM_WITH([plain-keybits],[key length in bits for plain mode], [256]) + +CS_STR_WITH([luks1-hash], [hash function for LUKS1 header], [sha256]) +CS_STR_WITH([luks1-cipher], [cipher for LUKS1], [aes]) +CS_STR_WITH([luks1-mode], [cipher mode for LUKS1], [xts-plain64]) +CS_NUM_WITH([luks1-keybits],[key length in bits for LUKS1], [256]) + +AC_ARG_ENABLE([luks_adjust_xts_keysize], AS_HELP_STRING([--disable-luks-adjust-xts-keysize], + [XTS mode requires two keys, double default LUKS keysize if needed]), + [], [enable_luks_adjust_xts_keysize=yes]) +if test "x$enable_luks_adjust_xts_keysize" = "xyes"; then + AC_DEFINE(ENABLE_LUKS_ADJUST_XTS_KEYSIZE, 1, [XTS mode - double default LUKS keysize if needed]) +fi + +CS_STR_WITH([luks2-pbkdf], [Default PBKDF algorithm (pbkdf2 or argon2i/argon2id) for LUKS2], [argon2i]) +CS_NUM_WITH([luks1-iter-time], [PBKDF2 iteration time for LUKS1 (in ms)], [2000]) +CS_NUM_WITH([luks2-iter-time], [Argon2 PBKDF iteration time for LUKS2 (in ms)], [2000]) +CS_NUM_WITH([luks2-memory-kb], [Argon2 PBKDF memory cost for LUKS2 (in kB)], [1048576]) +CS_NUM_WITH([luks2-parallel-threads],[Argon2 PBKDF max parallel cost for LUKS2 (if CPUs available)], [4]) + +CS_STR_WITH([luks2-keyslot-cipher], [fallback cipher for LUKS2 keyslot (if data encryption is incompatible)], [aes-xts-plain64]) +CS_NUM_WITH([luks2-keyslot-keybits],[fallback key size for LUKS2 keyslot (if data encryption is incompatible)], [512]) + +CS_STR_WITH([loopaes-cipher], [cipher for loop-AES mode], [aes]) +CS_NUM_WITH([loopaes-keybits],[key length in bits for loop-AES mode], [256]) + +CS_NUM_WITH([keyfile-size-maxkb],[maximum keyfile size (in KiB)], [8192]) +CS_NUM_WITH([passphrase-size-max],[maximum keyfile size (in characters)], [512]) + +CS_STR_WITH([verity-hash], [hash function for verity mode], [sha256]) +CS_NUM_WITH([verity-data-block], [data block size for verity mode], [4096]) +CS_NUM_WITH([verity-hash-block], [hash block size for verity mode], [4096]) +CS_NUM_WITH([verity-salt-size], [salt size for verity mode], [32]) +CS_NUM_WITH([verity-fec-roots], [parity bytes for verity FEC], [2]) + +CS_STR_WITH([tmpfilesdir], [override default path to directory with systemd temporary files], []) +test -z "$with_tmpfilesdir" && with_tmpfilesdir=$systemd_tmpfilesdir +test "x$with_tmpfilesdir" = "xno" || { + CS_ABSPATH([${with_tmpfilesdir}],[with-tmpfilesdir]) + DEFAULT_TMPFILESDIR=$with_tmpfilesdir + AC_SUBST(DEFAULT_TMPFILESDIR) +} +AM_CONDITIONAL(CRYPTSETUP_TMPFILE, test -n "$DEFAULT_TMPFILESDIR") + +CS_STR_WITH([luks2-lock-path], [path to directory for LUKSv2 locks], [/run/cryptsetup]) +test -z "$with_luks2_lock_path" && with_luks2_lock_path=/run/cryptsetup +CS_ABSPATH([${with_luks2_lock_path}],[with-luks2-lock-path]) +DEFAULT_LUKS2_LOCK_PATH=$with_luks2_lock_path +AC_SUBST(DEFAULT_LUKS2_LOCK_PATH) + +CS_NUM_WITH([luks2-lock-dir-perms], [default luks2 locking directory permissions], [0700]) +test -z "$with_luks2_lock_dir_perms" && with_luks2_lock_dir_perms=0700 +DEFAULT_LUKS2_LOCK_DIR_PERMS=$with_luks2_lock_dir_perms +AC_SUBST(DEFAULT_LUKS2_LOCK_DIR_PERMS) + +dnl Override default LUKS format version (for cryptsetup or cryptsetup-reencrypt format actions only). +AC_ARG_WITH([default_luks_format], + AS_HELP_STRING([--with-default-luks-format=FORMAT], [default LUKS format version (LUKS1/LUKS2) [LUKS2]]), + [], [with_default_luks_format=LUKS2]) + +case $with_default_luks_format in + LUKS1) default_luks=CRYPT_LUKS1 ;; + LUKS2) default_luks=CRYPT_LUKS2 ;; + *) AC_MSG_ERROR([Unknown default LUKS format. Use LUKS1 or LUKS2 only.]) ;; +esac +AC_DEFINE_UNQUOTED([DEFAULT_LUKS_FORMAT], [$default_luks], [default LUKS format version]) + +dnl ========================================================================== + +AC_CONFIG_FILES([ Makefile +lib/libcryptsetup.pc +po/Makefile.in +scripts/cryptsetup.conf +tests/Makefile +]) +AC_OUTPUT diff --git a/docs/ChangeLog.old b/docs/ChangeLog.old new file mode 100644 index 0000000..7a4027c --- /dev/null +++ b/docs/ChangeLog.old @@ -0,0 +1,887 @@ +2012-12-21 Milan Broz + * Since version 1.6 This file is no longer maintained. + * See version control log http://code.google.com/p/cryptsetup/source/list + +2012-10-11 Milan Broz + * Added keyslot checker (by Arno Wagner). + * Version 1.5.1. + +2012-09-11 Milan Broz + * Add crypt_keyslot_area() API call. + +2012-08-27 Milan Broz + * Optimize seek to keyfile-offset (Issue #135, thx to dreisner). + * Fix luksHeaderBackup for very old v1.0 unaligned LUKS headers. + +2012-08-12 Milan Broz + * Allocate loop device late (only when real block device needed). + * Rework underlying device/file access functions. + * Create hash image if doesn't exist in veritysetup format. + * Provide better error message if running as non-root user (device-mapper, loop). + +2012-07-10 Milan Broz + * Version 1.5.0. + +2012-06-25 Milan Broz + * Add --device-size option for reencryption tool. + * Switch to use unit suffix for --reduce-device-size option. + * Remove open device debugging feature (no longer needed). + * Fix library name for FIPS check. + +2012-06-20 Milan Broz + * Version 1.5.0-rc2. + +2012-06-18 Milan Broz + * Introduce cryptsetup-reencrypt - experimental offline LUKS reencryption tool. + * Fix luks-header-from-active script (do not use LUKS header on-disk, add UUID). + * Add --test-passphrase option for luksOpen (check passphrase only). + +2012-06-11 Milan Broz + * Introduce veritysetup for dm-verity target management. + * Version 1.5.0-rc1. + +2012-06-10 Milan Broz + * Both data and header device can now be a file. + * Loop is automatically allocated in crypt_set_data_device(). + * Require only up to last keyslot area for header device (ignore data offset). + * Fix header backup and restore to work on files with large data offset. + +2012-05-27 Milan Broz + * Fix readonly activation if underlying device is readonly (1.4.0). + * Include stddef.h in libdevmapper.h (size_t definition). + * Version 1.4.3. + +2012-05-21 Milan Broz + * Add --enable-fips for linking with fipscheck library. + * Initialize binary and library selfcheck if running in FIPS mode. + * Use FIPS RNG in FIPS mode for KEY and SALT (only gcrypt backend supported). + +2012-05-09 Milan Broz + * Fix keyslot removal (wipe keyslot) for device with 4k hw block (1.4.0). + * Allow empty cipher (cipher_null) for testing. + +2012-05-02 Milan Broz + * Fix loop mapping on readonly file. + * Relax --shared test, allow mapping even for overlapping segments. + * Support shared flag for LUKS devices (dangerous). + * Switch on retry on device remove for libdevmapper. + * Allow "private" activation (skip some udev global rules) flag. + +2012-04-09 Milan Broz + * Fix header check to support old (cryptsetup 1.0.0) header alignment. (1.4.0) + * Version 1.4.2. + +2012-03-16 Milan Broz + * Add --keyfile-offset and --new-keyfile-offset parameters to API and CLI. + * Add repair command and crypt_repair() for known LUKS metadata problems repair. + * Allow to specify --align-payload only for luksFormat. + +2012-03-16 Milan Broz + * Unify password verification option. + * Support password verification with quiet flag if possible. (1.2.0) + * Fix retry if entered passphrases (with verify option) do not match. + * Support UUID= format for device specification. + +2012-02-11 Milan Broz + * Add --master-key-file option to luksOpen (open using volume key). + +2012-01-12 Milan Broz + * Fix use of empty keyfile. + +2011-11-13 Milan Broz + * Fix error message for luksClose and detached LUKS header. + * Allow --header for status command to get full info with detached header. + +2011-11-09 Milan Broz + * Version 1.4.1. + +2011-11-05 Milan Broz + * Merge pycryptsetup (Python libcryptsetup bindings). + * Fix stupid typo in set_iteration_time API call. + * Fix cryptsetup status output if parameter is device path. + +2011-10-27 Milan Broz + * Fix crypt_get_volume_key_size() for plain device. + * Fix FSF address in license text. + +2011-10-25 Milan Broz + * Print informative message in isLuks only in verbose mode. + * Version 1.4.0. + +2011-10-10 Milan Broz + * Version 1.4.0-rc1. + +2011-10-05 Milan Broz + * Support Nettle 2.4 crypto backend (for ripemd160). + * If device is not rotational, do not use Gutmann wipe method. + * Add crypt_last_error() API call. + * Fix luksKillSLot exit code if slot is inactive or invalid. + * Fix exit code if passphrases do not match in luksAddKey. + * Add LUKS on-disk format description into package. + +2011-09-22 Milan Broz + * Support key-slot option for luksOpen (use only explicit keyslot). + +2011-08-22 Milan Broz + * Add more paranoid checks for LUKS header and keyslot attributes. + * Fix crypt_load to properly check device size. + * Use new /dev/loop-control (kernel 3.1) if possible. + * Enhance check of device size before writing LUKS header. + * Do not allow context format of already formatted device. + +2011-07-25 Milan Broz + * Remove hash/hmac restart from crypto backend and make it part of hash/hmac final. + * Improve check for invalid offset and size values. + +2011-07-19 Milan Broz + * Revert default initialisation of volume key in crypt_init_by_name(). + * Do not allow key retrieval while suspended (key could be wiped). + * Do not allow suspend for non-LUKS devices. + * Support retries and timeout parameters for luksSuspend. + * Add --header option for detached metadata (on-disk LUKS header) device. + * Add crypt_init_by_name_and_header() and crypt_set_data_device() to API. + * Allow different data offset setting for detached header. + +2011-07-07 Milan Broz + * Remove old API functions (all functions using crypt_options). + * Add --enable-discards option to allow discards/TRIM requests. + * Add crypt_get_iv_offset() function to API. + +2011-07-01 Milan Broz + * Add --shared option for creating non-overlapping crypt segments. + * Add shared flag to libcryptsetup api. + * Fix plain crypt format parameters to include size option (API change). + +2011-06-08 Milan Broz + * Fix return code for status command when device doesn't exists. + +2011-05-24 Milan Broz + * Version 1.3.1. + +2011-05-17 Milan Broz + * Fix keyfile=- processing in create command (1.3.0). + * Simplify device path status check. + +2011-05-03 Milan Broz + * Do not ignore size argument for create command (1.2.0). + +2011-04-18 Milan Broz + * Fix error paths in blockwise code and lseek_write call. + * Add Nettle crypto backend support. + +2011-04-05 Milan Broz + * Version 1.3.0. + +2011-03-22 Milan Broz + * Also support --skip and --hash option for loopaesOpen. + * Fix return code when passphrase is read from pipe. + * Document cryptsetup exit codes. + +2011-03-18 Milan Broz + * Respect maximum keyfile size parameter. + * Introduce maximum default keyfile size, add configure option. + * Require the whole key read from keyfile in create command (broken in 1.2.0). + * Fix offset option for loopaesOpen. + * Lock memory also in luksDump command. + * Version 1.3.0-rc2. + +2011-03-14 Milan Broz + * Version 1.3.0-rc1. + +2011-03-11 Milan Broz + * Add loop manipulation code and support mapping of images in file. + * Add backing device loop info into status message. + * Add luksChangeKey command. + +2011-03-05 Milan Broz + * Add exception to COPYING for binary distribution linked with OpenSSL library. + * Set secure data flag (wipe all ioctl buffers) if devmapper library supports it. + +2011-01-29 Milan Broz + * Fix mapping removal if device disappeared but node still exists. + * Fix luksAddKey return code if master key is used. + +2011-01-25 Milan Broz + * Add loop-AES handling (loopaesOpen and loopaesClose commands). + (requires kernel 2.6.38 and above) + +2011-01-05 Milan Broz + * Fix static build (--disable-static-cryptsetup now works properly). + +2010-12-30 Milan Broz + * Add compile time crypto backends implementation + (gcrypt, OpenSSL, NSS and userspace Linux kernel crypto api). + * Currently NSS is lacking ripemd160, cannot provide full plain compatibility. + * Use --with-crypto_backend=[gcrypt|openssl|nss|kernel] to configure. + +2010-12-20 Milan Broz + * Version 1.2.0. + +2010-11-25 Milan Broz + * Fix crypt_activate_by_keyfile() to work with PLAIN devices. + * Fix create command to properly handle keyfile size. + +2010-11-16 Milan Broz + * Version 1.2.0-rc1. + +2010-11-13 Milan Broz + * Fix password callback call. + * Fix default plain password entry from terminal in activate_by_passphrase. + * Add --dump-master-key option for luksDump to allow volume key dump. + * Allow to activate by internally cached volume key + (format/activate without keyslots active - used for temporary devices). + * Initialize volume key from active device in crypt_init_by_name() + * Fix cryptsetup binary exitcodes. + * Increase library version (still binary compatible with 1.1.x release). + +2010-11-01 Milan Broz + * No longer support luksDelKey, reload and --non-exclusive. + * Remove some obsolete info from man page. + * Add crypt_get_type(), crypt_resize(), crypt_keyslot_max() + and crypt_get_active_device() to API. + * Rewrite all implementations in cryptsetup to new API. + * Fix luksRemoveKey to behave as documented (do not ask + for remaining keyslot passphrase). + * Add more regression tests for commands. + * Disallow mapping of device which is already in use (mapped or mounted). + * Disallow luksFormat on device in use. + +2010-10-27 Milan Broz + * Rewrite cryptsetup luksFormat, luksOpen, luksAddKey to use new API + to allow adding new features. + * Implement --use-random and --use-urandom for luksFormat to allow + setting of RNG for volume key generator. + * Add crypt_set_rng_type() and crypt_get_rng_type() to API. + * Add crypt_set_uuid() to API. + * Allow UUID setting in luksFormat and luksUUID (--uuid parameter). + * Add --keyfile-size and --new-keyfile-size (in bytes) size and disallow overloading + of --key-size for limiting keyfile reads. + * Fix luksFormat to properly use key file with --master-key-file switch. + * Fix possible double free when handling master key file. + +2010-10-17 Milan Broz + * Add crypt_get_device_name() to API (get underlying device name). + * Change detection for static libraries. + * Fix pkg-config use in automake scripts. + * Remove --disable-shared-library switch and handle static library build + by common libtool logic (using --enable-static). + * Add --enable-static-cryptsetup option to build cryptsetup.static binary + together with shared build. + +2010-08-05 Milan Broz + * Wipe iteration and salt after KillSlot in LUKS header. + * Rewrite file differ test to C (and fix it to really work). + * Switch to 1MiB default alignment of data. + For more info see https://bugzilla.redhat.com/show_bug.cgi?id=621684 + * Do not query non-existent device twice (cryptsetup status /dev/nonexistent). + * Check if requested hash is supported before writing LUKS header. + +2010-07-28 Arno Wagner + * Add FAQ (Frequently Asked Questions) file to distribution. + +2010-07-03 Milan Broz + * Fix udev support for old libdevmapper with not compatible definition. + * Version 1.1.3. + +2010-06-01 Milan Broz + * Fix device alignment ioctl calls parameters. + * Fix activate_by_* API calls to handle NULL device name as documented. + +2010-05-30 Milan Broz + * Version 1.1.2. + +2010-05-27 Milan Broz + * Fix luksFormat/luksOpen reading passphrase from stdin and "-" keyfile. + * Support --key-file/-d option for luksFormat. + * Fix description of --key-file and add --verbose and --debug options to man page. + * Add verbose log level and move unlocking message there. + * Remove device even if underlying device disappeared. + * Fix (deprecated) reload device command to accept new device argument. + +2010-05-23 Milan Broz + * Fix luksClose operation for stacked DM devices. + * Version 1.1.1. + +2010-05-03 Milan Broz + * Fix automatic dm-crypt module loading. + * Escape hyphens in man page. + * Version 1.1.1-rc2. + +2010-04-30 Milan Broz + * Try to use pkgconfig for device mapper library. + * Detect old dm-crypt module and disable LUKS suspend/resume. + * Fix apitest to work on older systems. + * Allow no hash specification in plain device constructor. + * Fix luksOpen reading of passphrase on stdin (if "-" keyfile specified). + * Fix isLuks to initialise crypto backend (blkid instead is suggested anyway). + * Version 1.1.1-rc1. + +2010-04-12 Milan Broz + * Fix package config to use proper package version. + * Avoid class C++ keyword in library header. + * Detect and use devmapper udev support if available (disable by --disable-udev). + +2010-04-06 Milan Broz + * Prefer some device paths in status display. + * Support device topology detectionfor data alignment. + +2010-02-25 Milan Broz + * Do not verify unlocking passphrase in luksAddKey command. + * Properly initialise crypto backend in header backup/restore commands. + +2010-01-17 Milan Broz + * If gcrypt compiled with capabilities, document workaround for cryptsetup (see lib/gcrypt.c). + * Version 1.1.0. + +2010-01-10 Milan Broz + * Fix initialisation of gcrypt during luksFormat. + * Convert hash name to lower case in header (fix sha1 backward compatible header) + * Check for minimum required gcrypt version. + +2009-12-30 Milan Broz + * Fix key slot iteration count calculation (small -i value was the same as default). + * The slot and key digest iteration minimum is now 1000. + * The key digest iteration # is calculated from iteration time (approx 1/8 of that). + * Version 1.1.0-rc4. + +2009-12-11 Milan Broz + * Fix error handling during reading passhrase. + +2009-12-01 Milan Broz + * Allow changes of default compiled-in cipher parameters through configure. + * Switch default key size for LUKS to 256bits. + * Switch default plain mode to aes-cbc-essiv:sha256 (default is backward incompatible!). + +2009-11-14 Milan Broz + * Add CRYPT_ prefix to enum defined in libcryptsetup.h. + * Fix status call to fail when running as non-root user. + * Check in configure if selinux libraries are required in static version. + * Add temporary debug code to find processes locking internal device. + * Simplify build system, use autopoint and clean gettext processing. + * Use proper NLS macros and detection (so the message translation works again). + * Version 1.1.0-rc3. + +2009-09-30 Milan Broz + * Fix exported symbols and versions in libcryptsetup. + * Do not use internal lib functions in cryptsetup. + * Add crypt_log to library. + * Fix crypt_remove_device (remove, luksClose) implementation. + * Move dm backend initialisation to library calls. + * Move duplicate Command failed message to verbose level (error is printed always). + * Add some password and used algorithms notes to man page. + * Version 1.1.0-rc2. + +2009-09-28 Milan Broz + * Add luksHeaderBackup and luksHeaderRestore commands. + * Fail passphrase read if piped input no longer exists. + * Version 1.1.0-rc1. + +2009-09-15 Milan Broz + * Initialize crypto library before LUKS header load. + * Fix manpage to not require --size which expands to device size by default. + +2009-09-10 Milan Broz + * Clean up Makefiles and configure script. + * Version 1.1.0-test0. + +2009-09-08 Milan Broz + * Use dm-uuid for all crypt devices, contains device type and name now. + * Try to read first sector from device to properly check that device is ready. + +2009-09-02 Milan Broz + * Add luksSuspend (freeze device and wipe key) and luksResume (with provided passphrase). + +2009-08-30 Milan Broz + * Require device device-mapper to build and do not use backend wrapper for dm calls. + * Move memory locking and dm initialization to command layer. + * Increase priority of process if memory is locked. + * Add log macros and make logging more consistent. + * Move command successful messages to verbose level. + * Introduce --debug parameter. + * Move device utils code and provide context parameter (for log). + * Keyfile now must be provided by path, only stdin file descriptor is used (api only). + * Do not call isatty() on closed keyfile descriptor. + * Run performance check for PBKDF2 from LUKS code, do not mix hash algorithms results. + * Add ability to provide pre-generated master key and UUID in LUKS header format. + * Add LUKS function to verify master key digest. + * Move key slot manipulation function into LUKS specific code. + * Replace global options struct with separate parameters in helper functions. + * Add new libcryptsetup API (documented in libcryptsetup.h). + * Implement old API calls using new functions. + * Remove old API code helper functions. + * Add --master-key-file option for luksFormat and luksAddKey. + +2009-08-17 Milan Broz + * Fix PBKDF2 speed calculation for large passphrases. + * Allow using passphrase provided in options struct for LuksOpen. + * Allow restrict keys size in LuksOpen. + +2009-07-30 Milan Broz + * Fix errors when compiled with LUKS_DEBUG. + * Print error when getline fails. + * Remove po/cryptsetup-luks.pot, it's autogenerated. + * Return ENOENT for empty keyslots, EINVAL will be used later for other type of error. + * Switch PBKDF2 from internal SHA1 to libgcrypt, make hash algorithm not hardcoded to SHA1 here. + * Add required parameters for changing hash used in LUKS key setup scheme. + * Do not export simple XOR helper now used only inside AF functions. + * Completely remove internal SHA1 implementation code, not needed anymore. + * Enable hash algorithm selection for LUKS through -h luksFormat option. + +2009-07-28 Milan Broz + * Pad luks header to 512 sector size. + * Rework read/write blockwise to not split operation to many pieces. + * Use posix_memalign if available. + +2009-07-22 Milan Broz + * Fix segfault if provided slot in luksKillslot is invalid. + * Remove unneeded timeout when remove of temporary device succeeded. + +2009-07-22 Milan Broz + * version 1.0.7 + +2009-07-16 Milan Broz + * Allow removal of last slot in luksRemoveKey and luksKillSlot. + +2009-07-11 Milan Broz + + * Add --disable-selinux option and fix static build if selinux is required. + * Reject unsupported --offset and --skip options for luksFormat and update man page. + +2009-06-22 Milan Broz + + * Summary of changes in subversion for 1.0.7-rc1: + * Various man page fixes. + * Set UUID in device-mapper for LUKS devices. + * Retain readahead of underlying device. + * Display device name when asking for password. + * Check device size when loading LUKS header. Remove misleading error message later. + * Add error hint if dm-crypt mapping failed. + * Use better error messages if device doesn't exist or is already used by other mapping. + * Fix make distcheck. + * Check if all slots are full during luksAddKey. + * Fix segfault in set_error. + * Code cleanups, remove precompiled pot files, remove unnecessary files from po directory + * Fix uninitialized return value variable in setup.c. + * Code cleanups. (thanks to Ivan Stankovic) + * Fix wrong output for remaining key at key deletion. + * Allow deletion of key slot while other keys have the same key information. + * Add missing AM_PROG_CC_C_O to configure.in + * Remove duplicate sentence in man page. + * Wipe start of device (possible fs signature) before LUKS-formatting. + * Do not process configure.in in hidden directories. + * Return more descriptive error in case of IO or header format error. + * Use remapping to error target instead of calling udevsettle for temporary crypt device. + * Check device mapper communication and warn user if device-mapper support missing in kernel. + * Fix signal handler to properly close device. + * write_lseek_blockwise: declare innerCount outside the if block. + * add -Wall to the default CFLAGS. fix some signedness issues. + * Error handling improvement. + * Add non-exclusive override to interface definition. + * Refactor key slot selection into keyslot_from_option. + +2007-05-01 Clemens Fruhwirth + + * lib/backends.c, man/cryptsetup.8: Apply patch from Ludwig Nussel + , for old SuSE compat hashing. + +2007-04-16 Clemens Fruhwirth + + * Summary of changes in subversion: + Fix segfault for key size > 32 bytes. + Kick ancient header version conversion. + Fix http://bugs.debian.org/403075 + No passwort retrying for I/O errors. + Fix hang on "-i 0". + Fix parenthesization error that prevented --tries from working + correctly. + +2006-11-28 gettextize + + * m4/gettext.m4: Upgrade to gettext-0.15. + * m4/glibc2.m4: New file, from gettext-0.15. + * m4/intmax.m4: New file, from gettext-0.15. + * m4/inttypes-h.m4: New file, from gettext-0.15. + * m4/inttypes-pri.m4: Upgrade to gettext-0.15. + * m4/lib-link.m4: Upgrade to gettext-0.15. + * m4/lib-prefix.m4: Upgrade to gettext-0.15. + * m4/lock.m4: New file, from gettext-0.15. + * m4/longdouble.m4: New file, from gettext-0.15. + * m4/longlong.m4: New file, from gettext-0.15. + * m4/nls.m4: Upgrade to gettext-0.15. + * m4/po.m4: Upgrade to gettext-0.15. + * m4/printf-posix.m4: New file, from gettext-0.15. + * m4/signed.m4: New file, from gettext-0.15. + * m4/size_max.m4: New file, from gettext-0.15. + * m4/visibility.m4: New file, from gettext-0.15. + * m4/wchar_t.m4: New file, from gettext-0.15. + * m4/wint_t.m4: New file, from gettext-0.15. + * m4/xsize.m4: New file, from gettext-0.15. + * m4/Makefile.am: New file. + * configure.in (AC_OUTPUT): Add m4/Makefile. + (AM_GNU_GETTEXT_VERSION): Bump to 0.15. + +2006-10-22 David Härdeman + + * Allow hashing of keys passed through stdin. + +2006-10-13 Clemens Fruhwirth + + * configure.in: 1.0.4 release + +2006-10-13 Clemens Fruhwirth + + * man/cryptsetup.8: Document --tries switch; patch by Jonas + Meurer. + +2006-10-13 Clemens Fruhwirth + + * lib/setup.c: Added terminal timeout rewrite as forwarded by + Jonas Meurer + +2006-10-04 Clemens Fruhwirth + + * Merged patch from Marc Merlin to allow user + selection of key slot. + +2006-09-26 gettextize + + * m4/codeset.m4: Upgrade to gettext-0.14.4. + * m4/gettext.m4: Upgrade to gettext-0.14.4. + * m4/glibc2.m4: New file, from gettext-0.14.4. + * m4/glibc21.m4: Upgrade to gettext-0.14.4. + * m4/iconv.m4: Upgrade to gettext-0.14.4. + * m4/intdiv0.m4: Upgrade to gettext-0.14.4. + * m4/intmax.m4: New file, from gettext-0.14.4. + * m4/inttypes.m4: Upgrade to gettext-0.14.4. + * m4/inttypes_h.m4: Upgrade to gettext-0.14.4. + * m4/inttypes-pri.m4: Upgrade to gettext-0.14.4. + * m4/isc-posix.m4: Upgrade to gettext-0.14.4. + * m4/lcmessage.m4: Upgrade to gettext-0.14.4. + * m4/lib-ld.m4: Upgrade to gettext-0.14.4. + * m4/lib-link.m4: Upgrade to gettext-0.14.4. + * m4/lib-prefix.m4: Upgrade to gettext-0.14.4. + * m4/longdouble.m4: New file, from gettext-0.14.4. + * m4/longlong.m4: New file, from gettext-0.14.4. + * m4/nls.m4: Upgrade to gettext-0.14.4. + * m4/po.m4: Upgrade to gettext-0.14.4. + * m4/printf-posix.m4: New file, from gettext-0.14.4. + * m4/progtest.m4: Upgrade to gettext-0.14.4. + * m4/signed.m4: New file, from gettext-0.14.4. + * m4/size_max.m4: New file, from gettext-0.14.4. + * m4/stdint_h.m4: Upgrade to gettext-0.14.4. + * m4/uintmax_t.m4: Upgrade to gettext-0.14.4. + * m4/ulonglong.m4: Upgrade to gettext-0.14.4. + * m4/wchar_t.m4: New file, from gettext-0.14.4. + * m4/wint_t.m4: New file, from gettext-0.14.4. + * m4/xsize.m4: New file, from gettext-0.14.4. + * Makefile.am (ACLOCAL_AMFLAGS): New variable. + * configure.in (AM_GNU_GETTEXT_VERSION): Bump to 0.14.4. + +2006-08-04 Clemens Fruhwirth + + * configure.in: 1.0.4-rc2 + +2006-08-04 Clemens Fruhwirth + + * luks/Makefile.am: Add a few regression tests + +2006-08-04 Clemens Fruhwirth + + * lib/setup.c (get_key): Applied patch from David Härdeman + for reading binary keys from stdin using + the "-" as key file. + +2006-08-04 Clemens Fruhwirth + + * lib/setup.c (__crypt_luks_add_key): For checking options struct + (optionsCheck) filter out CRYPT_FLAG_VERIFY and + CRYPT_FLAG_VERIFY_IF_POSSIBLE, so that in no case password verification is done + for password retrieval. + +2006-08-04 Clemens Fruhwirth + + * configure.in: Merge Patch from http://bugs.gentoo.org/show_bug.cgi?id=132126 for sepol + +2006-07-23 Clemens Fruhwirth + + * Applied patches from David Härdeman to fix 64 + bit compiler warning issues. + +2006-05-19 Clemens Fruhwirth + + * Applied patches from Jonas Meurer + - fix terminal status after timeout + - add remark for --tries to manpage + - allow more than 32 chars from standard input. + - exit status fix for cryptsetup status. + +2006-05-06 Clemens Fruhwirth + + * src/cryptsetup.c (yesDialog): Fix getline problem for 64-bit archs. + +2006-04-05 Clemens Fruhwirth + + * configure.in: Release 1.0.3. + + * Applied patch by Johannes Weißl for more meaningful exit codes + and password retries + +2006-03-30 Clemens Fruhwirth + + * lib/setup.c (__crypt_create_device): (char *) -> (const char *) + +2006-03-30 Clemens Fruhwirth + + * Apply alignPayload patch from Peter Palfrader + +2006-03-15 Clemens Fruhwirth + + * configure.in: 1.0.3-rc3. Most displease release ever. + * lib/setup.c (__crypt_create_device): More verbose error message. + +2006-02-26 Clemens Fruhwirth + + * lib/setup.c: Revert to 1.0.1 key reading. + +2006-02-25 Clemens Fruhwirth + + * man/cryptsetup.8: merge patch from Jonas Meurer + +2006-02-25 Clemens Fruhwirth + + * configure.in: 1.0.3-rc2 + +2006-02-25 Clemens Fruhwirth + + * lib/libdevmapper.c (dm_create_device): Remove dup check here. + * lib/setup.c (__crypt_luks_open): Adopt same dup check as regular + create command. + +2006-02-22 Clemens Fruhwirth + + * configure.in: Spin 1.0.3-rc1 + +2006-02-22 Clemens Fruhwirth + + * src/cryptsetup.c (action_create): Change defaulting. + (action_luksFormat): Change defaulting. + + * lib/setup.c (parse_into_name_and_mode): Revert that default + change. This is FORBIDDEN here, as it will change cryptsetup + entire default. This is BAD in a non-LUKS world. + +2006-02-21 Clemens Fruhwirth + + * luks/keyencryption.c (setup_mapping): Add proper size restriction to mapping. + (LUKS_endec_template): Add more verbose error message. + +2006-02-21 Clemens Fruhwirth + + * lib/libdevmapper.c (dm_query_device): Incorporate patch from + Bastian Blank + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=344313 + +2006-02-21 Clemens Fruhwirth + + * src/cryptsetup.c: Rename show_error -> show_status. + +2006-02-20 Clemens Fruhwirth + + * lib/libdevmapper.c (dm_create_device): Prevent existing mapping + from being removed when a mapping with the same name is added + + * Add timeout patch from Jonas Meurer + + * src/cryptsetup.c: Remove conditional error printing to enable + printing the no-error msg (Command successful). Verify passphrase + for LUKS volumes. + (main): Add no-verify-passphrase + + * lib/setup.c (parse_into_name_and_mode): Change default mode complition to essiv:sha256. + +2006-01-04 Clemens Fruhwirth + + * src/cryptsetup.c (help): Merge patch from Gentoo: change gettext(..) to _(..). + +2005-12-06 Clemens Fruhwirth + + * man/cryptsetup.8: Correct "seconds" to "microseconds" in the explanation for -i. + +2005-11-09 Clemens Fruhwirth + + * src/cryptsetup.c (main): Add version string. + +2005-11-08 Clemens Fruhwirth + + * lib/backends.c: compile fix. + +2005-09-11 Clemens Fruhwirth + + * lib/setup.c (get_key): Fixed another incompatibility from my + get_key rewrite with original cryptsetup. + +2005-09-11 Clemens Fruhwirth + + * Merged changes from Florian Knauf's fk02 branch. + +2005-09-08 Clemens Fruhwirth + + * lib/setup.c (get_key): Fixed another incompatibility with + original cryptsetup. + +2005-08-20 Clemens Fruhwirth + + * Checked in a patch from Michael Gebetsroither + to silent all confirmation dialogs. + +2005-06-23 Clemens Fruhwirth + + * src/cryptsetup.c (help): print PACKAGE_STRING + +2005-06-20 Clemens Fruhwirth + + * luks/keymanage.c (LUKS_set_key): Security check against header manipulation + + * src/cryptsetup.c (action_luksDelKey): Safety check in luksDelKey + + * luks/keymanage.c: Changed disk layout generation to align key material to 4k boundaries. + (LUKS_is_last_keyslot): Added LUKS_is_last_keyslot function. + + * Applied patch from Bill Nottingham fixing a lot of prototypes. + + * src/cryptsetup.c (action_luksOpen): Add support for -r flag. + + * configure.in: Version bump 1.0.1 + +2005-06-16 Clemens Fruhwirth + + * lib/setup.c (__crypt_luks_open): Remove mem leaking of dmCipherSpec. + (get_key): Fix missing zero termination for read string. + +2005-06-12 Clemens Fruhwirth + + * luks/keyencryption.c (setup_mapping): Added CRYPT_FLAG_READONLY in case of O_RDONLY mode + +2005-06-11 Clemens Fruhwirth + + * configure.in: Version bump 1.0.1-pre + +2005-06-09 Clemens Fruhwirth + + * lib/utils.c: Added write_llseek_blocksize method to support sector wiping on sector_size != 512 + media + +2005-05-23 Clemens Fruhwirth + + * lib/setup.c (crypt_luksDelKey): Added missing return statement + (setup_leave): Added missing return statement + + * luks/keyencryption.c (clear_mapping): Added missing return statement + +2005-05-19 Clemens Fruhwirth + + * lib/utils.c (write_blockwise, read_blockwise): Changed to soft bsize instead of SECTOR_SIZE + + * luks/keymanage.c (wipe): Changed open mode to O_DIRECT | O_SYNC, and changed write + to use the blockwise write helper + +2005-04-21 Clemens Fruhwirth + + * man/cryptsetup.8: Corrected an error, thanks to Dick Middleton. + +2005-04-09 Clemens Fruhwirth + + * luks/sha/hmac.c: Add 64 bit bug fix courtesy to + Oliver Paukstadt . + + * luks/pbkdf.c, luks/keyencryption.c, luks/keymanage.c, luks/af.c: Added a license + disclaimer and remove option for "any future GPL versions". + +2005-03-25 Clemens Fruhwirth + + * configure.in: man page Makefile. Version bump 1.0. + + * man/cryptsetup.8: finalize man page and move to section 8. + + * src/cryptsetup.c (action_luksFormat): Add "are you sure" for interactive sessions. + + * lib/setup.c (crypt_luksDump), src/cryptsetup.c: add LUKS dump command + +2005-03-24 Clemens Fruhwirth + + * src/cryptsetup.c, luks/Makefile.am (test), lib/setup.c (setup_enter): + rename luksInit to luksFormat + +2005-03-12 Clemens Fruhwirth + + * man/cryptsetup.1: Add man page. + + * lib/setup.c: Remove unnecessary LUKS_write_phdr call, so the + phdr is written after passphrase reading, so the user can change + his mind, and not have a partial written LUKS header on it's disk. + +2005-02-09 Clemens Fruhwirth + + * luks/keymanage.c (LUKS_write_phdr): converted argument phdr to + pointer, and make a copy of phdr for conversion + + * configure.in: Version dump. + + * luks/keyencryption.c: Convert to read|write_blockwise. + + * luks/keymanage.c: Convert to read|write_blockwise. + + * lib/utils.c: Add read|write_blockwise functions, to use in + O_DIRECT file accesses. + +2004-03-11 Thursday 15:52 Jana Saout + + * lib/blockdev.h: BLKGETSIZE64 really uses size_t as third + argument, the rest is wrong. + +2004-03-10 Wednesday 17:50 Jana Saout + + * lib/: libcryptsetup.h, libdevmapper.c: Small fixes. + +2004-03-09 Tuesday 21:41 Jana Saout + + * lib/internal.h, lib/libcryptsetup.h, lib/libdevmapper.c, + lib/setup.c, po/de.po, src/cryptsetup.c: Added internal flags to + keep track of malloc'ed return values in struct crypt_options and + add a function to free the memory. Also add a readonly flag to + libcryptsetup. + +2004-03-09 Tuesday 16:03 Jana Saout + + * ChangeLog, configure.in, setup-gettext, lib/Makefile.am, + lib/backends.c, lib/blockdev.h, lib/gcrypt.c, lib/internal.h, + lib/libcryptsetup.h, lib/libdevmapper.c, lib/setup.c, + lib/utils.c, po/de.po, src/Makefile.am, src/cryptsetup.c: More + reorganization work. + +2004-03-08 Monday 01:38 Jana Saout + + * ChangeLog, Makefile.am, acinclude.m4, configure.in, + lib/Makefile.am, lib/backends.c, lib/blockdev.h, lib/gcrypt.c, + lib/libdevmapper.c, lib/setup.c, lib/utils.c, po/de.po, + src/Makefile.am: BLKGETSIZE64 fixes and started modularity + enhancements + +2004-03-04 Thursday 21:06 Jana Saout + + * Makefile.am, po/de.po, src/cryptsetup.c, src/cryptsetup.h: First + backward compatible working version. + +2004-03-04 Thursday 00:42 Jana Saout + + * NEWS, AUTHORS, ChangeLog, Makefile.am, README, autogen.sh, + configure.in, setup-gettext, po/ChangeLog, po/LINGUAS, + po/POTFILES.in, po/de.po, src/cryptsetup.c, src/cryptsetup.h, + src/Makefile.am (utags: initial): Initial checkin. + +2004-03-04 Thursday 00:42 Jana Saout + + * NEWS, AUTHORS, ChangeLog, Makefile.am, README, autogen.sh, + configure.in, setup-gettext, po/ChangeLog, po/LINGUAS, + po/POTFILES.in, po/de.po, src/cryptsetup.c, src/cryptsetup.h, + src/Makefile.am: Initial revision diff --git a/docs/Keyring.txt b/docs/Keyring.txt new file mode 100644 index 0000000..bdcc838 --- /dev/null +++ b/docs/Keyring.txt @@ -0,0 +1,56 @@ +Integration with kernel keyring service +--------------------------------------- + +We have two different use cases for kernel keyring service: + +I) Volume keys + +Since upstream kernel 4.10 dm-crypt device mapper target allows loading volume +key (VK) in kernel keyring service. The key offloaded in kernel keyring service +is only referenced (by key description) in dm-crypt target and the VK is therefore +no longer stored directly in dm-crypt target. Starting with cryptsetup 2.0 we +load VK in kernel keyring by default for LUKSv2 devices (when dm-crypt with the +feature is available). + +Currently cryptsetup loads VK in 'logon' type kernel key so that VK is passed in +the kernel and can't be read from userspace afterward. Also cryptsetup loads VK in +thread keyring (before passing the reference to dm-crypt target) so that the key +lifetime is directly bound to the process that performs the dm-crypt setup. When +cryptsetup process exits (for whatever reason) the key gets unlinked in kernel +automatically. In summary, the key description visible in dm-crypt table line is +a reference to VK that usually no longer exists in kernel keyring service if you +used cryptsetup to for device activation. + +Using this feature dm-crypt no longer maintains a direct key copy (but there's +always at least one copy in kernel crypto layer). + +II) Keyslot passphrase +The second use case for kernel keyring is to allow cryptsetup reading the keyslot +passphrase stored in kernel keyring instead. The user may load passphrase in kernel +keyring and notify cryptsetup to read it from there later. Currently, cryptsetup +cli supports kernel keyring for passphrase only via LUKS2 internal token +(luks2-keyring). Library also provides a general method for device activation by +reading passphrase from keyring: crypt_activate_by_keyring(). The key type +for use case II) must always be 'user' since we need to read the actual key +data from userspace unlike with VK in I). Ability to read keyslot passphrase +from kernel keyring also allows easily auto-activate LUKS2 devices. + +Simple example how to use kernel keyring for keyslot passphrase: + +1) create LUKS2 keyring token for keyslot 0 (in LUKS2 device/image) +cryptsetup token add --key-description my:key -S 0 /dev/device + +2) Load keyslot passphrase in user keyring +read -s -p "Keyslot passphrase: "; echo -n $REPLY | keyctl padd user my:key @u + +3) Activate device using passphrase stored in kernel keyring +cryptsetup open /dev/device my_unlocked_device + +4a) unlink the key when no longer needed by +keyctl unlink %user:my:key @u + +4b) or revoke it immediately by +keyctl revoke %user:my:key + +If cryptsetup asks for passphrase in step 3) something went wrong with keyring +activation. See --debug output then. diff --git a/docs/LUKS2-locking.txt b/docs/LUKS2-locking.txt new file mode 100644 index 0000000..e401b61 --- /dev/null +++ b/docs/LUKS2-locking.txt @@ -0,0 +1,61 @@ +LUKS2 device locking overview +============================= + +Why +~~~ + +LUKS2 format keeps two identical copies of metadata stored consecutively +at the head of metadata device (file or bdev). The metadata +area (both copies) must be updated in a single atomic operation to avoid +header corruption during concurrent write. + +While with LUKS1 users may have clear knowledge of when a LUKS header is +being updated (written to) or when it's being read solely the need for +locking with legacy format was not so obvious as it is with the LUKSv2 format. + +With LUKS2 the boundary between read-only and read-write is blurry and what +used to be the exclusively read-only operation (i.e., cryptsetup open command) may +easily become read-update operation silently without user's knowledge. +Major feature of LUKS2 format is resilience against accidental +corruption of metadata (i.e., partial header overwrite by parted or cfdisk +while creating partition on mistaken block device). +Such header corruption is detected early on header read and auto-recovery +procedure takes place (the corrupted header with checksum mismatch is being +replaced by the secondary one if that one is intact). +On current Linux systems header load operation may be triggered without user +direct intervention for example by udev rule or from systemd service. +Such clash of header read and auto-recovery procedure could have severe +consequences with the worst case of having LUKS2 device unaccessible or being +broken beyond repair. + +The whole locking of LUKSv2 device headers split into two categories depending +what backend the header is stored on: + +I) block device +~~~~~~~~~~~~~~~ + +We perform flock() on file descriptors of files stored in a private +directory (by default /run/lock/cryptsetup). The file name is derived +from major:minor couple of affected block device. Note we recommend +that access to private locking directory is supposed to be limited +to superuser only. For this method to work the distribution needs +to install the locking directory with appropriate access rights. + +II) regular files +~~~~~~~~~~~~~~~~~ + +First notable difference between headers stored in a file +vs. headers stored in a block device is that headers in a file may be +manipulated by the regular user unlike headers on block devices. Therefore +we perform flock() protection on file with the luks2 header directly. + +Limitations +~~~~~~~~~~~ + +a) In general, the locking model provides serialization of I/Os targeting +the header only. It means the header is always written or read at once +while locking is enabled. +We do not suppress any other negative effect that two or more concurrent +writers of the same header may cause. + +b) The locking is not cluster aware in any way. diff --git a/docs/doxyfile b/docs/doxyfile new file mode 100644 index 0000000..a8c84db --- /dev/null +++ b/docs/doxyfile @@ -0,0 +1,313 @@ +# Doxyfile 1.8.8 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "cryptsetup API" +PROJECT_NUMBER = +PROJECT_BRIEF = "Public cryptsetup API" +PROJECT_LOGO = +OUTPUT_DIRECTORY = doxygen_api_docs +CREATE_SUBDIRS = NO +ALLOW_UNICODE_NAMES = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +TCL_SUBST = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +EXTENSION_MAPPING = +MARKDOWN_SUPPORT = YES +AUTOLINK_SUPPORT = YES +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +INLINE_GROUPED_CLASSES = NO +INLINE_SIMPLE_STRUCTS = NO +TYPEDEF_HIDES_STRUCT = YES +LOOKUP_CACHE_SIZE = 0 +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_PACKAGE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +SHOW_GROUPED_MEMB_INC = NO +FORCE_LOCAL_INCLUDES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = +CITE_BIB_FILES = +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = "doxygen_index.h" \ + "../lib/libcryptsetup.h" +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = "examples" +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +USE_MDFILE_AS_MAINPAGE = +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +CLANG_ASSISTED_PARSING = NO +CLANG_OPTIONS = +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_EXTRA_STYLESHEET = +HTML_EXTRA_FILES = +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_TIMESTAMP = YES +HTML_DYNAMIC_SECTIONS = NO +HTML_INDEX_NUM_ENTRIES = 100 +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = NO +GENERATE_TREEVIEW = NO +ENUM_VALUES_PER_LINE = 4 +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +FORMULA_FONTSIZE = 10 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = NO +MATHJAX_FORMAT = HTML-CSS +MATHJAX_RELPATH = http://www.mathjax.org/mathjax +MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = +SEARCHENGINE = YES +SERVER_BASED_SEARCH = NO +EXTERNAL_SEARCH = NO +SEARCHENGINE_URL = +SEARCHDATA_FILE = searchdata.xml +EXTERNAL_SEARCH_ID = +EXTRA_SEARCH_MAPPINGS = +#--------------------------------------------------------------------------- +# Configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4 +EXTRA_PACKAGES = +LATEX_HEADER = +LATEX_FOOTER = +LATEX_EXTRA_FILES = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +LATEX_SOURCE_CODE = NO +LATEX_BIB_STYLE = plain +#--------------------------------------------------------------------------- +# Configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# Configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_SUBDIR = +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# Configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +DOCBOOK_PROGRAMLISTING = NO +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# Configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES +PERL_PATH = +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +MSCGEN_PATH = +DIA_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +DOT_NUM_THREADS = 0 +DOT_FONTNAME = Helvetica +DOT_FONTSIZE = 10 +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +UML_LIMIT_NUM_FIELDS = 10 +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +INTERACTIVE_SVG = NO +DOT_PATH = +DOTFILE_DIRS = +MSCFILE_DIRS = +DIAFILE_DIRS = +PLANTUML_JAR_PATH = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES diff --git a/docs/doxygen_index.h b/docs/doxygen_index.h new file mode 100644 index 0000000..8bdf05f --- /dev/null +++ b/docs/doxygen_index.h @@ -0,0 +1,110 @@ +/*! \mainpage Cryptsetup API + * + * The documentation covers public parts of cryptsetup API. In the following sections you'll find + * the examples that describe some features of cryptsetup API. + * For more info about libcryptsetup API versions see + * API Tracker. + * + *
    + *
  1. @ref cexamples "Cryptsetup API examples"
  2. + *
      + *
    1. @ref cluks "crypt_luks_usage" - cryptsetup LUKS device type usage examples
    2. + *
        + *
      • @ref cinit "crypt_init()"
      • + *
      • @ref cformat "crypt_format()" - header and payload on mutual device
      • + *
      • @ref ckeys "Keyslot operations"
      • + *
          + *
        • @ref ckeyslot_vol "crypt_keyslot_add_by_volume_key()"
        • + *
        • @ref ckeyslot_pass "crypt_keyslot_add_by_passphrase()"
        • + *
        + *
      • @ref cload "crypt_load()" + *
      • @ref cactivate "crypt_activate_by_passphrase()"
      • + *
      • @ref cactive_pars "crypt_get_active_device()"
      • + *
      • @ref cinit_by_name "crypt_init_by_name()"
      • + *
      • @ref cdeactivate "crypt_deactivate()"
      • + *
      • @ref cluks_ex "crypt_luks_usage.c"
      • + *
      + *
    3. @ref clog "crypt_log_usage" - cryptsetup logging API examples
    4. + *
    + *
+ * + * @section cexamples Cryptsetup API examples + * @section cluks crypt_luks_usage - cryptsetup LUKS device type usage + * @subsection cinit crypt_init() + * Every time you need to do something with cryptsetup or dmcrypt device + * you need a valid context. The first step to start your work is + * @ref crypt_init call. You can call it either with path + * to the block device or path to the regular file. If you don't supply the path, + * empty context is initialized. + * + * @subsection cformat crypt_format() - header and payload on mutual device + * This section covers basic use cases for formatting LUKS devices. Format operation + * sets device type in context and in case of LUKS header is written at the beginning + * of block device. In the example below we use the scenario where LUKS header and data + * are both stored on the same device. There's also a possibility to store header and + * data separately. + * + * Bear in mind that @ref crypt_format() is destructive operation and it + * overwrites part of the backing block device. + * + * @subsection ckeys Keyslot operations examples + * After successful @ref crypt_format of LUKS device, volume key is not stored + * in a persistent way on the device. Keyslot area is an array beyond LUKS header, where + * volume key is stored in the encrypted form using user input passphrase. For more info about + * LUKS keyslots and how it's actually protected, please look at + * LUKS specification. + * There are two basic methods to create a new keyslot: + * + * @subsection ckeyslot_vol crypt_keyslot_add_by_volume_key() + * Creates a new keyslot directly by encrypting volume_key stored in the device + * context. Passphrase should be supplied or user is prompted if passphrase param is + * NULL. + * + * @subsection ckeyslot_pass crypt_keyslot_add_by_passphrase() + * Creates a new keyslot for the volume key by opening existing active keyslot, + * extracting volume key from it and storing it into a new keyslot + * protected by a new passphrase + * + * @subsection cload crypt_load() + * Function loads header from backing block device into device context. + * + * @subsection cactivate crypt_activate_by_passphrase() + * Activates crypt device by user supplied password for keyslot containing the volume_key. + * If keyslot parameter is set to CRYPT_ANY_SLOT then all active keyslots + * are tried one by one until the volume key is found. + * + * @subsection cactive_pars crypt_get_active_device() + * This call returns structure containing runtime attributes of active device. + * + * @subsection cinit_by_name crypt_init_by_name() + * In case you need to do operations with active device (device which already + * has its corresponding mapping) and you miss valid device context stored in + * *crypt_device reference, you should use this call. Function tries to + * get path to backing device from DM, initializes context for it and loads LUKS + * header. + * + * @subsection cdeactivate crypt_deactivate() + * Deactivates crypt device (removes DM mapping and safely erases volume key from kernel). + * + * @subsection cluks_ex crypt_luks_usage.c - Complex example + * To compile and run use following commands in examples directory: + * + * @code + * make + * ./crypt_luks_usage _path_to_[block_device]_file + * @endcode + * Note that you need to have the cryptsetup library compiled. @include crypt_luks_usage.c + * + * @section clog crypt_log_usage - cryptsetup logging API example + * Example describes basic use case for cryptsetup logging. To compile and run + * use following commands in examples directory: + * + * @code + * make + * ./crypt_log_usage + * @endcode + * Note that you need to have the cryptsetup library compiled. @include crypt_log_usage.c + * + * @example crypt_luks_usage.c + * @example crypt_log_usage.c + */ diff --git a/docs/examples/Makefile b/docs/examples/Makefile new file mode 100644 index 0000000..845b6cb --- /dev/null +++ b/docs/examples/Makefile @@ -0,0 +1,17 @@ +TARGETS=crypt_log_usage crypt_luks_usage +CFLAGS=-O0 -g -Wall -D_GNU_SOURCE +LDLIBS=-lcryptsetup +CC=gcc + +all: $(TARGETS) + +crypt_log_usage: crypt_log_usage.o + $(CC) -o $@ $^ $(LDLIBS) + +crypt_luks_usage: crypt_luks_usage.o + $(CC) -o $@ $^ $(LDLIBS) + +clean: + rm -f *.o *~ core $(TARGETS) + +.PHONY: clean diff --git a/docs/examples/crypt_log_usage.c b/docs/examples/crypt_log_usage.c new file mode 100644 index 0000000..d371528 --- /dev/null +++ b/docs/examples/crypt_log_usage.c @@ -0,0 +1,94 @@ +/* + * libcryptsetup API log example + * + * Copyright (C) 2011-2019 Red Hat, Inc. All rights reserved. + * + * This file is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include +#include +#include + +/* + * This is an example of crypt_set_log_callback API callback. + * + */ +static void simple_syslog_wrapper(int level, const char *msg, void *usrptr) +{ + const char *prefix = (const char *)usrptr; + int priority; + + switch(level) { + case CRYPT_LOG_NORMAL: priority = LOG_NOTICE; break; + case CRYPT_LOG_ERROR: priority = LOG_ERR; break; + case CRYPT_LOG_VERBOSE: priority = LOG_INFO; break; + case CRYPT_LOG_DEBUG: priority = LOG_DEBUG; break; + default: + fprintf(stderr, "Unsupported log level requested!\n"); + return; + } + + if (prefix) + syslog(priority, "%s:%s", prefix, msg); + else + syslog(priority, "%s", msg); +} + +int main(void) +{ + struct crypt_device *cd; + char usrprefix[] = "cslog_example"; + int r; + + if (geteuid()) { + printf("Using of libcryptsetup requires super user privileges.\n"); + return 1; + } + + openlog("cryptsetup", LOG_CONS | LOG_PID, LOG_USER); + + /* Initialize empty crypt device context */ + r = crypt_init(&cd, NULL); + if (r < 0) { + printf("crypt_init() failed.\n"); + return 2; + } + + /* crypt_set_log_callback() - register a log callback for crypt context */ + crypt_set_log_callback(cd, &simple_syslog_wrapper, (void *)usrprefix); + + /* send messages ithrough the crypt_log() interface */ + crypt_log(cd, CRYPT_LOG_NORMAL, "This is normal log message"); + crypt_log(cd, CRYPT_LOG_ERROR, "This is error log message"); + crypt_log(cd, CRYPT_LOG_VERBOSE, "This is verbose log message"); + crypt_log(cd, CRYPT_LOG_DEBUG, "This is debug message"); + + /* release crypt context */ + crypt_free(cd); + + /* Initialize default (global) log callback */ + crypt_set_log_callback(NULL, &simple_syslog_wrapper, NULL); + + crypt_log(NULL, CRYPT_LOG_NORMAL, "This is normal log message"); + crypt_log(NULL, CRYPT_LOG_ERROR, "This is error log message"); + crypt_log(NULL, CRYPT_LOG_VERBOSE, "This is verbose log message"); + crypt_log(NULL, CRYPT_LOG_DEBUG, "This is debug message"); + + closelog(); + return 0; +} diff --git a/docs/examples/crypt_luks_usage.c b/docs/examples/crypt_luks_usage.c new file mode 100644 index 0000000..1af6f54 --- /dev/null +++ b/docs/examples/crypt_luks_usage.c @@ -0,0 +1,250 @@ +/* + * libcryptsetup API - using LUKS device example + * + * Copyright (C) 2011-2019 Red Hat, Inc. All rights reserved. + * + * This file is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +static int format_and_add_keyslots(const char *path) +{ + struct crypt_device *cd; + int r; + + /* + * The crypt_init() call is used to initialize crypt_device context, + * The path parameter specifies a device path. + * + * For path, you can use either link to a file or block device. + * The loopback device will be detached automatically. + */ + + r = crypt_init(&cd, path); + if (r < 0) { + printf("crypt_init() failed for %s.\n", path); + return r; + } + + printf("Context is attached to block device %s.\n", crypt_get_device_name(cd)); + + /* + * So far, no data were written to the device. + */ + printf("Device %s will be formatted as a LUKS device after 5 seconds.\n" + "Press CTRL+C now if you want to cancel this operation.\n", path); + sleep(5); + + /* + * NULLs for uuid and volume_key means that these attributes will be + * generated during crypt_format(). + */ + r = crypt_format(cd, /* crypt context */ + CRYPT_LUKS2, /* LUKS2 is a new LUKS format; use CRYPT_LUKS1 for LUKS1 */ + "aes", /* used cipher */ + "xts-plain64", /* used block mode and IV */ + NULL, /* generate UUID */ + NULL, /* generate volume key from RNG */ + 512 / 8, /* 512bit key - here AES-256 in XTS mode, size is in bytes */ + NULL); /* default parameters */ + + if (r < 0) { + printf("crypt_format() failed on device %s\n", crypt_get_device_name(cd)); + crypt_free(cd); + return r; + } + + /* + * The device now contains a LUKS header, but there is no active keyslot. + * + * crypt_keyslot_add_* call stores the volume_key in the encrypted form into the keyslot. + * + * After format, the volume key is stored internally. + */ + r = crypt_keyslot_add_by_volume_key(cd, /* crypt context */ + CRYPT_ANY_SLOT, /* just use first free slot */ + NULL, /* use internal volume key */ + 0, /* unused (size of volume key) */ + "foo", /* passphrase - NULL means query*/ + 3); /* size of passphrase */ + + if (r < 0) { + printf("Adding keyslot failed.\n"); + crypt_free(cd); + return r; + } + + printf("The first keyslot is initialized.\n"); + + /* + * Add another keyslot, now authenticating with the first keyslot. + * It decrypts the volume key from the first keyslot and creates a new one with the specified passphrase. + */ + r = crypt_keyslot_add_by_passphrase(cd, /* crypt context */ + CRYPT_ANY_SLOT, /* just use first free slot */ + "foo", 3, /* passphrase for the old keyslot */ + "bar", 3); /* passphrase for the new kesylot */ + if (r < 0) { + printf("Adding keyslot failed.\n"); + crypt_free(cd); + return r; + } + + printf("The second keyslot is initialized.\n"); + + crypt_free(cd); + return 0; +} + +static int activate_and_check_status(const char *path, const char *device_name) +{ + struct crypt_device *cd; + struct crypt_active_device cad; + int r; + + /* + * LUKS device activation example. + */ + r = crypt_init(&cd, path); + if (r < 0) { + printf("crypt_init() failed for %s.\n", path); + return r; + } + + /* + * crypt_load() is used to load existing LUKS header from a block device + */ + r = crypt_load(cd, /* crypt context */ + CRYPT_LUKS, /* requested type - here LUKS of any type */ + NULL); /* additional parameters (not used) */ + + if (r < 0) { + printf("crypt_load() failed on device %s.\n", crypt_get_device_name(cd)); + crypt_free(cd); + return r; + } + + /* + * Device activation creates a device-mapper device with the specified name. + */ + r = crypt_activate_by_passphrase(cd, /* crypt context */ + device_name, /* device name to activate */ + CRYPT_ANY_SLOT,/* the keyslot use (try all here) */ + "foo", 3, /* passphrase */ + CRYPT_ACTIVATE_READONLY); /* flags */ + if (r < 0) { + printf("Device %s activation failed.\n", device_name); + crypt_free(cd); + return r; + } + + printf("%s device %s/%s is active.\n", crypt_get_type(cd), crypt_get_dir(), device_name); + printf("\tcipher used: %s\n", crypt_get_cipher(cd)); + printf("\tcipher mode: %s\n", crypt_get_cipher_mode(cd)); + printf("\tdevice UUID: %s\n", crypt_get_uuid(cd)); + + /* + * Get info about the active device. + */ + r = crypt_get_active_device(cd, device_name, &cad); + if (r < 0) { + printf("Get info about active device %s failed.\n", device_name); + crypt_deactivate(cd, device_name); + crypt_free(cd); + return r; + } + + printf("Active device parameters for %s:\n" + "\tDevice offset (in sectors): %" PRIu64 "\n" + "\tIV offset (in sectors) : %" PRIu64 "\n" + "\tdevice size (in sectors) : %" PRIu64 "\n" + "\tread-only flag : %s\n", + device_name, cad.offset, cad.iv_offset, cad.size, + cad.flags & CRYPT_ACTIVATE_READONLY ? "1" : "0"); + + crypt_free(cd); + return 0; +} + +static int handle_active_device(const char *device_name) +{ + struct crypt_device *cd; + int r; + + /* + * crypt_init_by_name() initializes context by an active device-mapper name + */ + r = crypt_init_by_name(&cd, device_name); + if (r < 0) { + printf("crypt_init_by_name() failed for %s.\n", device_name); + return r; + } + + if (crypt_status(cd, device_name) == CRYPT_ACTIVE) + printf("Device %s is still active.\n", device_name); + else { + printf("Something failed perhaps, device %s is not active.\n", device_name); + crypt_free(cd); + return -1; + } + + /* + * crypt_deactivate() is used to deactivate a device + */ + r = crypt_deactivate(cd, device_name); + if (r < 0) { + printf("crypt_deactivate() failed.\n"); + crypt_free(cd); + return r; + } + + printf("Device %s is now deactivated.\n", device_name); + + crypt_free(cd); + return 0; +} + +int main(int argc, char **argv) +{ + if (geteuid()) { + printf("Using of libcryptsetup requires super user privileges.\n"); + return 1; + } + + if (argc != 2) { + printf("usage: ./crypt_luks_usage \n" + " refers to either a regular file or a block device.\n" + " WARNING: the file or device will be wiped.\n"); + return 2; + } + + if (format_and_add_keyslots(argv[1])) + return 3; + + if (activate_and_check_status(argv[1], "example_device")) + return 4; + + if (handle_active_device("example_device")) + return 5; + + return 0; +} diff --git a/docs/on-disk-format-luks2.pdf b/docs/on-disk-format-luks2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f4ecda31ae4e11ec9551f44a5cb3a894bea9d0f6 GIT binary patch literal 290651 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 literal 0 HcmV?d00001 diff --git a/docs/on-disk-format.pdf b/docs/on-disk-format.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7f6e5e7e14b9710d386214a83734aebbd7b5000a GIT binary patch literal 119729 zcma%?V~l1|v|!6tmu=g&ZQHh8UAFBm^DEo7ZQFKLPru1z=1txt^UjZ*tDNNA+~lsc z_daBbqT+N+^lUI>M|an6Fifn3jD!xx)-b%h4B}R{u4c{*;$4yI-dvS#)c zu9k$%OkAw|{4g%A&Spk-FrFL7+LLiK90=Q|G#8M%RFU2w@C+cN(N{rF_KeXlZe0_4 zrfj_eq+-&l?Y6J73DH*VJ%fx{;HLrV$68`k}zozBxK%3Fv+LR~1$&q3K=cmcke zzTE^@@M0IICgfe2rjG_YgjeZQ^&yURrW^(SMQ7i2gAMWbjUW3-oY)rV)klHd0CBOE z9Oj9vRT#p;(#>|y_3*WN#zQ_MtVrd%b1{Aa&ryQiY&l+RV}OpEEedNWq$$ecMKlKg z59ljREMmn_zQ#c~FOaBHQbYe>g@7he~{pVp=XgH#VD_rxFZY#q2#f~zv?V&+C%x~aXu9B zk-qZ0pl4dSnQ)LI&}5I@r){FIo+-Gb2l!1xX}8*9Wb`~E;Q#<4z#gnGBillnM228vNAt5eFZq+cFQteN+s9sj1v2Ja7+f&q}wY2?P zO(JJelv_m^R$xSgJH$HR+F}e~#GTrNExo?z!^U`1xmv|M37;s;YstS5^ZGDRct2%@ z+u4>5zXXWW|B6dM;T#62Q7A@%@QzPBNM;%3({+ax9;1rr$&EuAQ>@cUPPH~CV1twP z!(dL64JgiN(8gK|&H_D=rgvEI`hwa(%IbJHDB9LX>OER3;T^(MvVo}q$t^qy-4xHp z3F|xWj2ls*`St|E-q$KF!=$?pnbz)&G6`*T+zD`f*dLuWOogRmX1%!JRNg9Ep5(p*kGz}7TH9D_74R=M4$T#&n8g3 zySexa;}dlY=XC++asNu#D-anEjUAbLs z4AwV#%r^q7jLi%{1T?N~QK}*jZLV`gHOR6FRhD97JMnvy1MD71LiS>xHN(ETn_7`W ze_{u}D(j4nZ`}w5IyOe5>aVk@Fx@1$yH;)qv}<^xooGZqTIZSE;moWVbQ!d*z?*wn zgq>Z1_~gm&xOpFB8tagD!*Ig!#NBwz?}J_OUT}#mil7L<95yb7Ede}oY)6c(k2Stm zP?h1YeIY)E%S#?d*hJzkC)YX}8}9JrxuF^E=d?qFDj9nl7HPkOSCC%(zb+lr#+pJ~4dn3)UZFMttpP=3Ltx3=WcUwaJbu5Au zeoIP!w$mlP-d~xpQt3jH;yVs^3Xd{a8hzZ>88)ruODPzi8n$%1I!;`~Xa} zY^3$~y5PKjWO4#D$wKBvU`nMG7ow?ww_W8l&u%9}I)6gS;2H4=mZ5+GMt?}JN3yXw zbdfCVrnzSD5Ic{uy$iivU#H@#I~qP=J_o?in@Dd!>bjSVP6|!Bl=e$m8#e?jfLwl{ zEhAu%5ej$0-EWH!E$$30`QSJh`Eu#hv~TXhNka6_?ZUvMMm^YP|56yKYB$;sN=nua zl-t`pe_HeC;j3-BBLTU^6~A<8Y+5ht=RdbcycU5@9aBoTOo&L~kfCCQWF8Kq<8}LY zXWDC#K4RFh5Qv93W|0W%9O9OjyLkAuDWe_B)eso&q@Brf%KT1-w4u(7|9pcl`~aSt zSfhOT!@@I6KA*g2&-3a$lI`!UB3~}0K*g*maDfrO1P#0+Oa4egvzrPE9HXp@cAYZL zCC!oS!y$5;2!f^Ewx~%Ta`)#AgS@t128+DA#<|EGEtMX^b2Q_Jo=igu&V7V4iSbyr z(s#);MvwMKUrwqg|Mzy0DM3$+F+*xk7;A9eq9LisO;wk?ULL3d*v&Hh4b(CCmEjms z)7Ie3zH6emNLKeF$&}Ul=d7W82wUpiG}Gt~^wlR24ha)#GH$a>8xEdI6)vsV=*0!| zkvSzWi5wSZQ1T&E?c`zmakr^^HJZpZU>hp01woe1?v@!p=A#T`n~ZL*_7PmNH+_pt zE^8RFXY%*tZvrv7Zc}LbTU1L_x+z-sxaeRPqF!Q`QtZ4Is`VDCuUPwEA2lU5Emq)z zkiaj6r+p^3*bf^S;;S)7xl#yt8~pnPSn9WOI}C^ns7{@1ovgsW6ZDA$D{Lt5fPgJG zXrTV6h3zn{jg_tE{q2qaDnk7}+9e{zo8uUh7&q0Web(w5-ig^PQz^LL^R}i3KI&!; zTLPp#yC={s3%*V5dA^i4nN7i|P*oLU;HT>9UcOM4702HwZ3j<$+ogUD4vZi74pj94 zA!_ATbG4*}+@82i{LFf;m0JM9-&&ot(d!VRq4Z2v1TsDFb}?m5z&Px4uRI?!ZGfto zB{a1E*~6u9&~gn z^dU+vgn!FZ%acPN*opzxZ1~F;^bo5UQ-y75Bc%8sFACdg4|FO!X|fl&2T6y)#U_o% zmXI!HYLq;=#p#<;DOIy`Q*imSjI=_l!5M{GMqOf@x=Zm>NkXd95t>=XI;~j!4M=@i z;Pt=0P?rA|D6+6Jar~!sZIs|l&m6X0@08ua4%sOE6-*GBzbR-HJ5_&T{Au8FQ+irj ztrd+zCYzKm4HhCdFpVsx{87>WX)HIB`MY#rbWdMHL~js48}QTe^-!gEfQ{F7ylGQ! z{yb050Z@nXet-EI_1mN^R`A^F@_1i;0m|>$w%Kfw?lnLxQN?16g6Q`CdfePac0}rH zmY<82GDXsDJuL3^C*htdT*3x`OGN~;SyI9>yFU6_4xukv$eb-7mbS72L3jI<-sa+G z$+FRLCNLS2cL>a?b$dj1VeP$N53QK4a8%=1rk_%0Hy(`Az_oI-E zWP)S5rH}X2IHkcBvM+sKF{MQ;8O)v8I@82tfRZ_?WN3#bF1H2T@y{{_@<$-82KjFh zg3fBPT?Z3%!?=m{-B}UhuQd&FXRxPW`O6#}x$4@JveT;8kA+NYGE4lLnUR5IdSYEL zcioAI4b2XF``yNNr#=~$ahZ5Rbo<6@=U>=E{ba$VM`;m(=@?#m6@isF&YDU@I{19X zt(=%KR`h0Ll9+@uJ|J?D$T9nvIovhkaDDZ}ZzOZ_$nL0#oC)kD@r9j29~ssQi=Ya9 zNCAoLg!VVo$@k`J<>z9Rb^QnPve_ zTBlp?@e%q(M4Jli92 zV}$~_}irqeXqQRWnn-BkG$XAt|+G_!hhu!o2Y<3$K@kw?o53OM3b8f*KYbTa-Kf+mLwpH1?yk zqAuHgs>zsX?Sh_dX7f@<;5X z4aB0}mkC#2CK00cf+Ix%7O$gl@o^59r>1t3=|L32oKYN+Ze+feYBdvDvNVj~mlxoc z?xSMLmwi=nOGvzG3Og3x5mCuDD%uEcmE8|JWZx7^TN*e?zanpy{95Myx&GPM*c)%Q z$Qqm7kvD4=I;vMBa|59xE(P~0lPUB`kN(ON_-f^~Qmr*^@v2(s`A@{`&eL!RA)M6b z@^CD8VxWGB7HOkW{h51NlT-yM*sZ60@sJNn{{;x-FH%nyEJLTO7?^=)VH7W&q6#X< z%ue|*m$vbT2F#Q1VfiN@-P>ld|tuCOR{$ z${v`0Xr^fqy_*kIdTob=@q=32n#AS--i{by&gpVB=@PlA^-i5s3*%&-lRb#X{jOe5 z7|@nB?OO;!q-X&KQ+4B^`}&D&?%Atcn}h1-zHq<|W(b;hR9#kI>{{4LXNFE zeLfgl-g$y!VBA2*XH9t!ux=!&%Y?8JGAynYlgOT6R_kIp4_z@OhB`sA8aQK>+GCKS z$Blli;bXsuCYq{4v^EIJE~Gh1Gy2Cc88mT*gx4Z7ZB2i38kf%`G|nbdC_PzR7|JtR zK>sVhh#_WiBd<(&+=vB@GbNh(;Z(-x8mjx=YVp`(b&1NalPDausB_2UQ z&3n9Eh`z&p)61Y4Ez(DvbvOzT*k({!kzN_Yl-y$w+Sq?b!b#P zp_3KrNopujt*y!p&KZtpuxdnfik*VL)+vz292Z}sYj`}p&8^zo5jaVfP!}h_VKt?S z9B1zdy9jy3Abv&Qj}CV;dA1&CRz8BVJ8 zhun)Obiz_OPj+{$!o!6avuj0@YpTOcx#sPVT=Yl zo2-RBPc_jrmL>D#P>F|18uz~LR}Q@#E5Xuo-tDV})VuQPSH(!F?alsHuUkCaT0Cm{ zAkCn^HGK=#GSUazS(vGSD;d(6+&DmNl5(@k;XGb8Ns4@g9wBM!9yHN^s z?{kG8n`oK3(U+SY)~-!8>j^!w22b4zO*THZ*%$z8Fr+YKAH&>>A;p#ctY6b8+N&1j zX=CJ;!CU8=8UjY3<9J6cy@jiZN=EXmZ8{Da88xE%Oi!T^^|(VeHiiDemp;%vj%^=q zQ_kfRJ`p6}L_1{71dof>aHeR{b}Tv{xJsI3qv+@doT6y>HA(gjo5})TN&>uaX^nR0 zmI@=k+p#3IiWh5TaCDb#Sx#YPHdvnVFv%#@n3L5vn@q;kf9bk|&%g=P% z*Nwey`{cc|5b+o}OiR!lbDlm8X{IMql=&`s&v$S@KXgY z9ond$7_R%$JAg~tpEGEw$W_xNL6N$_-2ia9rC0s#3is%4&5WEK*CfzAO^HT>aPU!8 z8%n}rZ8g+Wi<#UEk@~ap$FH-^BU+PVs#B7QDfKG4%`@@Q=WP$6V1s5~hbF>AQXg92 za;GV$ZDUZwz>?0LJVA^ytwcT9y6?|1ANov#*&|Nw7e-^{Hf*<-WWG1cQ@X+5wY1(Z zpLc*Bu3qcjMm)rP@}<@TY&5Kp#jo~n#xSIKl_p~!M%rdU)_=c=~1Kv)~(hImUw znkLxvH0izTLi1r&LVP8$R%?PE2US3_k`h{kgepvuYtTE`D!O{^45Skk8UiQg5?Ext z4cy5fJQa_<D?%3ucTjxVQ<$Kr(hLiWm%CCc38+{^c zSH3LzR|4BAyA!ct>-~8ekDjYtD-l%UwB1R=lv8eE+btBN)D-vj-+wnEKud3;Bl(j* zWp{aDI=Sk_PklK)CUi6y_3Rw2QCSExORU7hD5p)a+aMjTjv7}R3w#bc9uKZ)Sv1G; z3B`%o`%}n?c&+Tfv?(izlX+r^hUSYntSj~Ap6-|Lw#8)?c+-nYgoAd-81OCstr99m zm<+;9>kbo}|4E>%-L0+{VbH?zz$oaQE;Ro3@B1R^MM(zyq5Zwsa+!NMxv*)PQ=g2x zx4Q{o7Yu`gePj9VOL7FXW9`vINAGtFQG;C@cw3hZg{zVE8B*LP!1lW4wAOYN|TG~@$FH{j00((*CkOb6soL`C%-kf)!Lq?TQlIoOB_+S)LZ*lv9G1n`ktr!irWd+J;WdYV4}vQ^ z^`ZZ&XRK`hr1Jlp$7f;TV*k&2c8$}SM9MXPN;3gw0z>s2cZL}Z#dt@riOAT}+6v$~ zr1dADQlTnQt-RR)jV7djG1sOmQGWNIez`2=Nd3F0^PBFiX|&1j)9iCG{W?CtNoOM& zve(bce&&X#{d({WuW-GG_s3slVmHRz0Eyq} z^Ql1Z7uzoA0lvwD*ot|~1)71=Vty}@be-V%AU^!kH+xa>V<`Wz4B=l@FL=vobJf@d zaO$~M$Ff|raGEo|Goh6X9kC~=U2jT@eeu%?e%|bY@Gk+2&)B;ooryS*<#h$9)`sNX zbEJC}+E0D~!ULiW+iwd0JV9(|>FtR@Os2nQh>uYUs7ncif`37fLV`4f2=cy6Lkghf zxzv8pmL@>${F>THc$QuYp7U}{=t~ln)5>{?Oc{t(-7CF&biIZ1_ba1*ThZL1(&nu# ztxtE#8G@}K6*!Zs#-Vwh|WS{3%JFI|zbvLyO1(E65SPsWN(o5rE!$8wyD>02UQ3xS`QCzevx2 zs(uhmCV*+3QQL^$Xdsr>hfjqK!SA2i(sBBo8I2AO%u%8Kyy;VtjRd=kuacKWC0NPJ z+c8(d|EBtzY&vnl@u%E#nEYU!I1jEq;#ii^rR+BN!UM_SaN=z*lcqyH#9|{;>4-1- zOPJ@5Q5!(+YuZwBwI?l9RE?TM?A&xwxg!xI(O`0EH+4V_{v4C5IboWL9_r5gnPo#s z`|2s<^{2(B!5qEHX9Q@9R37fHVY?%R>d6aQFt<{uOg#qGE(i*?XYF-awn2d(^zKPQp!>gewwB>J;)T|WAdFYQZ!Xat_mQ;3<#^TVv*y)Qsd~?~l)GiP8>33Pg zh*{LMYieHeMuj6w4}MJ0u<4s79rGQYHpnf9s!95r&cSL^?GZ%KhaTiG0;_R`0MGb` zR{+j|yh+^qH}Xcsw4zZa7pGCdgjN%pbW$$#o<>-{I&ewr&U_=rP@Uwv-k8|3aUkAZ zwnl}0D2T9))Pj7`{s(5%y?_nxrZYc#yLAC>PTja*so93CD(u6%BdYts*0v9fI|;Ib?m(7aAC_pgbfkWtKwMMpt;DC)o@XW%Kp426 zKj$Vm?BZaNFSSd3qA*nWoP=Tff0H1`6IUZfXu(?v(WK7DVXy8zhiu^)|7G|6JJuwIB z`gAzaaki|zj3_6_qmfb;OWq_J>aJ7`k^)mpe^d>8v-f44w$3a<1^m=&hI_avz7AcL zDF84!Ehl^fSF46QY_Bzj$!tFW>%FifO_Ga0nxhB-DXE@oKU&SOR4$JGyjE&D2eN#p zx1#m78OZ1f>I3=0G}hO-HE;R`Hc(j@Zi}P*<-J)@vp6yGhSSiy0f}ykN|39b1tP5p zS1AT?;*H4Qezhs(@f1$Qg-BXE7elhbok~CGN&PJC4iD$dAUFtH=nAg-1&&vIfJ~8# z4CO3^e+B%mBtrh{a(E-f9A)>84`$cu#DN3I&gKohH%N}ac^O%g1W(d+`C zi`q3zo7pN3`UrkHy4hFlxq2ryvuXQ`j*CbRF2Sg4}wv5s}^Dj#PORxS`pJ9@m(E*mYp?k ziV%-jLDP0BN7_5vJ0rB%u{xI~yR#NoPH~(`*1S+#7@<8wk-iWeL_78EW$&}fgx~kg z3S&m6SM}QRW+xzwE=^^ZxFs<9H$wx~VuL3f z6SqW&K3NvW+qXai&{rV)IL<(gi8TrIab^b^uqz$HorBplO*Nc(<8_5wn$!H!AD@)n zO45~PV%Uyho(}dIPkiAUXGHfH%}`jADbar4I$9Y=N+W1^eiiosojCD!~28%RJTnICrjo*pzd zt!z(%m8uKS51>3n7dBQu*05PxiTTCV=K45QH9f0QC1F@QeA}9y|1T!Q4{k7cB4EQ$ z{gI>65XF^vRM>QsmF=2;v93bA2Ee9r_SG(Kk=aNkfOlXIGFC>id3Qd4&*B8nkiCMG zdiHkSq#k8IkN5!%%SAdKD<`0`II9#UC1A2RdtV(|B%ZwF(TOzsyl6UT^S3r11?`9Oq+JK#Zu3W?r%K<$*Sl^9Xel3J7$bk1bhV(&9yZ0n%cVC~BTR zIpBCUbWP7r<)u@4SF6U09|p?ie(XvWlGHN=S+rGJ=G~L`1$qia^e7tH2RF%?$g6p@ zgR3OQ8H77NYS}1#>d5eiPf!hqe&*UIkvaP(8}a%V<-r2_+WSt(fV* zUrw`~SD~}}AwE{+&e0ls$NI?mc;s6$&J?=0RdA!XPBgT(4xdn_-3BVlndLvh+5?|cr zGyr2=0cZN9`pNB?4sEKB!lj;nj>qwYM~%}g%R09N z9lZHO=+p%squH}+MyTGSdx~j7a2c5uDqoXtR&fi-NM=B*RU`_21?_(1p1(?c+no0U z2~>&-KR@|!4)>8(c2f4Gjj+?{MNBKIM{lWQL!-feIY`oC^ACzg##O)U9rbhZ72xw| z<;a1;h4Au7FeNnEzZ?g9f2QW6?|S$aQ$@CN5Q~IpMW*!)U9(`0_fkcpSgx4N9yboS zwY+@9JWGvZ&DFiUQryp}utV54ZV->;Vj+A%8tG7qESQ)w>Gtak;}LNDQY`9#G*hOS zf%E_kXhK-nnLv77rPHZ9YYBK3$XPJw=y&L~AyG29+xIY3l6 zW-q#wY^ECx*V%#pYzHWfl3iNDx$WHjZL$qEfRIzu%8WsVcQbIHUxZ`?Yu+yHQBv}~ z|D$mpuwnoQvFb-rWO$cBgr(^-og)ApuDMPm5Mv=h;I`rJ(8Ki1@2HpfcqkwDrnWl8 zOwr|r7XM6u%_wxNOCg?p;XWk4L3(3dn$6lN@O`tJd0k2MUrmgi<-cWOoJ?H*w~0;0 zk+xpv)t((r6`*w!jC&#oA!Bk4kL?`bwv>51G{kbUC+s4MMIoyJE^c!12-6MgGpy0X zlzfww@%(u+g2Mt%60V4b3!S;Td;{L5!v`4x2oS_lEf4nxFNr);r8#kPmDoE6!yohW zo8l+{BL4iPsQVg@cYoDvEQWUDfu0MS!%r7LVI-3?v59{)=1<852rThF6Gef4qv3CS_SuG)J7!F;Q3f-i-i!$nwW4lGE4@Np-YU)L*v#x|U5|0|Dlp-J znT86x=nqf?#Ryts%2Fw}ws<_cE_PwwpftdxHEf1ysf&k+ZL%)>!#jU#Quj-8QU|UD zD_g=Maz?A1Yax9EK~cCZxa}dKAF3qVG?=>Y2DyKY-171ybhP#5;?NQIW=N6KnOJIR zy7R?{Mki%q1V(R8go3&=Zk!rrdj;vWNvIX?c21Y?{jWwGO&$T#)484$4ZK0$`;fHiS@J;IV1v zYM(Boys8z1sa$w9h-sA14sMo%RWaM-^&puzMV)}*L++w;%)C>9q&u3LbzAErRFPa1 z=t^Ie@h$F{hZX5HTC79T+&)L=uk+5Dl&7)JlA}{-@;8W|_R!QAu+5k_W>qn=GL~!s zB|yfofIa`WM;5;Umzj~yTb8oOnGBev5AP^XF^D~D$l3(id;H$@q?P}bNwG9S0m1SC zI5*Sh)m7k)v^!XSXp{4R@K5mTno!Ke5V zDu3M7>2e5Y7#Ub;RH1UR?ep{2&(3qq&wD*jT*JxGE0?89sOg-dR%aTWtINR5>}4(W zf?M70i*0vnwY!=kFBv}Ir&cs?2nu)T_s55pM9x5^G~_^KEHyD-;$nq93_gW)Mn8Y) z5!z5xKKny#iAG^6=;R^%6w*0Nu{(+!mkNz=LjQ6G)E&9{3Kd8IL%L%kXOd)7eor)v zW`3wPc8>n)`zxc${!b0ja*b3epBhdnMG9H05pxs_fd>l){ZqBuL`L36SIpc#;BHoh zT;{$vE(`Ej@QbdJ8OyBum)9Y0Cl4lWH&$F%4-M6WigJ@k%~V|G(?0a)No^=`d%YN@ zGkK+LO(+op9vDYB0)pa+`tKlV9wCHEjP{`32$Y_1yc#N|hWrtFE(gM~3PWf6GDG90 zFh#F^Mg;V=?K>gTk?xRK=bx-pbWPKuPMX49(~MW@sFAU*Zv8=FdJNLUiC>nj$Lq(Y|^hCDILEiXTtVD)1=ToqXmKceO*79#{6WOPL zEh|bwAtRHC_yZWL2|)3KO5&xN5^lT967KZTCgg|y_`ByX>0m=!j-eGBOxPsIOTJq5 z)U$ci0eL}j8eTVQ0eg%#;&!!lUzwP9ZHr)O(t`COPv`O-(bF6gL7>-M3 z24xD<^h5CiD=cCGrDmf{y&8uow2p27srLo=vN1wDAi;K#hR$~&HfxG4df&RWUkyV= zTg;EP#siGGv5rqo+qsO)n;O}{Z-E8-^)unztlJ`^s5(Ky$R}L-zswt zC$+}T=&|dA=B!+7Xx+v`hDuCrT`kh(m#)e!L7s4|tEs1KQvEzQW%;&pA>jdk8wQ_Q zS&Qg?8tuLZlPt-75gLK!VDKO+QSyiwBg;}w(#J(5hZHP~U#Sw-N90OuoYdq+8W5kQ zDnaza=1shF^&zo~DDr<2vB;}Y`!itC$LUVW+Z3L+59d?D6$HMXf9W0%&IZ_|!Egmp zim)!R5Nmgig3AkHtsMn?yzj>EN#Xze)GGXIxTdEo&oN^Nj)w>_c5I2*uGeE>H1~L2 zMMRWVQm2@YKnbs-$m>#$D{LYt-d!{%GJ-K$dJqw_V{aZ*ohWWnQ1jWGwN%lc>8as| z6Dvb>>2JK&LOS9EzkJHoqWx6uazd=SQM{A3c>Uogw^sAb;1SC*+fV?^&A+-3!jl8b z8@u@0jTCHI*3F)`Hf*JMzg-Wo0_C?5YwW4KJ34IwHKNpXFnIMNt+o?=x93g|a>xt# zc9XM=@xO?g$Bwq-+ZxyrglxhaJ-D!+Xn|vh;-K_FvK{)q84090V?+GKiLn~YIiN4H|B!-V<51ySi~lL7fmJ;J5afXtvM6}0L~@LJKe=TH3srYPraZ;nxGYkH0CY;B9hfv9Nx4>KSSDt1B};l{kb z$a>w}SZP+%I#%&vai=7F-j0}Zy&0P$M|5#Zf>LLD7>~e-G2s;q1TBQ!ohHFijL^nM z!GGt{a$6JYOa9TUV+ZpR5*RJ1;N5(oP)`-AFgMeokzVq?3PA@@IC}UH{wN(Jgat?E zXQMYGWhgVzL7H-1mE}|d(P>L=5u7S!XCd-1Xa%V+U*FBXJ_k2$1g`~-FZkY-UxBb% z{&Sjj!P%Ztt8NZvj{EWJdXqD@8z}+Gs?2 z*Sbi9^>Fd@>?>)QkizcRI^LsPG$`U%h*}iO`}+^una8{7K8R5-j$Pdbl1)ml~b$&?u=@ zZh|i){do#-^z>%aIkeCA$dod_t4B(B0Zi-ow8pTPXBe9Lo*a`hw{~6*@_2BJvl(1o zj! zJI7L|N07~j$TQ>Vda(~h*V!Oy1#%N`$H*25Uw9-wUVu>d^m-jqm^%3-@_?~!%*y{- zY*x8y;vBZW>f5iD&n zf|oxt3?5%2 ze21=b>*^z?-7+uckYzj0_zKF~mMPf3HG-LPY)^4U%bM;{~d$ktAM6D-jA4l&8_lVEHGFGPbxemX}yc0)3A zrsXjpiv78Geu|A&qG)U(?$sD1*UeMzIY-~YeQcD3wfAmM#FmF}y!;T=GAJ$QMiuFv znBzDV*Tlqs9u0PWPB{@cs1k=SsK@OI2a_}@oeS^b`8vOYZ(jm~mXV4aN>Y=o2og)3 zj6-bE1~YJ689#udJgx}Bzg8kq3T9;*X7r9*&@!wd(~x6?+pWMPIKlFm9d#O^@}gmJDDnyA~M?;I)7Nb zEVy=C4JFm{*>5>Q5+FJwNKkScb95>IK&&~AhWEu&@_Y8v-TX|a_J{*@ENALLX8&nF*As9` ziUX^P-pTKn4P6U`1s*k{z-U+>#-$lpr0x9)Jcz_|)+B?Z-%4$Un~{RC$1{E<+|@98 zf5lnO-jdv6bBO!MHu%DLhV1$CUxk^2`M)E~%$ywmS7+(8woI)_EBwx@M$YlnK&9vf zbeleyrIPFNpGKPoOoLIuAW}>9@6QtalyVb1gWb|-V@A%^QEx?G-!Dn8Pdk?E(g1VV zI`Di|+09LcO%8(=fuCVJDKbR=Pv_knwSVQy5OJZQ>&feU3&6JqK(8xD`0ib02|M7= z-xFtHQSZY$405^Uz?ORBa2qvJ;zvHrnv?df}h#u{(p}hND-mDkfaE0q#meY zMwriL4Jyx^DepVUX)03CAd|{vdif?Ltq~-D7bMVjWEQT;HE{JQD zGy8sAp0fAZ>z8zqz(*9*t;w^}t}{>El@q4bPkc1R3hnxRbgjXu!Cm*|+gF+8FweIF z@B008DQ;*6#({Hi6Rx@NwRjbsveAU(73b_}K(_orGNb^zGIgw?v(z$h#hXzZ^%AMA za-VFyK9@zKgavtB=f;2<#D9uKaS!(S<~jSA%I71XeVBQ-Tjx5asEvDVc>vUy`K7gR zdhj2NuNCKzymE+>dDHujtzpa#KOCf59M8Wu&FIVjORIvyMqX1+lk<`_2ftHuHh9a$ z)jQWQ-|V*?+s&Dv>uMEfA?XwKA>rRTufF&7#KP8h+2IEd5D|ibv$LnaTOF_c2|5K1 z_}isPQeJ0Z7$poscg3#}2TOCxRxUZ_2gdcQX4yxq?Wb*xo>E3=ca+z`Wx6{iBx=lSfu^&q}_b$Vj5A$X3z5g-lJ-f@L`SA{5`^a86 zu1?wxu(j$c>D^^9d&4V5eSEA)!xa4~z89lG?+*BIgH}a%yfm3%OV+yd2;_53ZdP|& zY{Cj-XK{AUi8VZ3uU>{jR7qGZ@yxi}N|w?;ZBf+<4QQG^d{-7@a9>9LabOhs}z^8&O# zOcYCbu55Z5c$uk-XH66*YiL>m=M$n&+bDqUN_o;JaZ5T``$5MA%gJmX_B{1HrDj4R z3PQOdepo@J$5RsdDx5R8Z?OJUPf2K6b$B7qX$eV%!jho6m& z!%8C!Lm19n&FTf$sokT%jFj5^ZR9Rg%+df=wL}Eo;sc6Q4 zqO&M+wLYcuDNI<5+Jt`$GfD3LA^aVZ72Fjr%K%=ArbZ!@e6HfwWYT9p(TxrVFcO*^ABUh;qfJaaCk9+yU{EU*v zz?J9BM3s+x*IW5Mm|@WIMf59$3#RjMGv3!zA2BfeY(M?kr{QwiXXg4EU`U+v7JSSy zv{H@gipW{iV{^9GRV$2WD1}_M4Qb-kU<`81m?uN3BH?6VfT<1o2O;O4JxYxqs7e~o z^NJ7Ko{46u=j!K-lt=0pob=s|O9s7HpflCU079z#!}Y3@%{zF<8-0;yfOpj*+vN~b zO`KOxlf`!Lvd~O(7d#D#6bE~@9ln?&^Kg@;a^6$2NLKb1*Nt)u z3CdDHF5=T8nk!urkH;DxFoD`cKj;jG^qqY#ILJxwD@%?;CJk0%J2xJs@-+*{W&5HP zj#&G$QgM!vJm)gu)Dle}h6RvFWUh4#mT@PxjVh!)aC2E2TK4qr$xzaE^=k*_P}?_S zG=DRSrj`Cs=RH_EI|=Br<_vCmrg66DSSn61wj*?%N zGTB;hpX$xmuypLmvP0o#xS#e#z(d28lqBbjMsu6a8zH2ab{_2dbvSd7k|w&GIrjB> z=#K>qkCLjnD9vpjAzDwFDF1zFFV3~wFrmPNc?6l=mL+`4D$Wz{cffpdC_k&-m1uK+ z3-YQ9jJf(Ry|XABCyPkD_}PfqNxi&(@iJmA4ZY~k368#1#%H$~WZ2}h()J0>T<^{Q zr2C{X7xnwC9=d__LgW6zXtr&h6eb{>sBP56N9aeET1=!CTwpyu(LeP1?4e7PHTia+@$HgUHFLWl-LfT43d z&gE~~^{Z=WX*PcMXfRM@-U}46kWIOFG9Lz0cQo+s!?T>*Bj4s?Ggx;}EiRMUTs5L7 zGo|WVIL|N7{LPrkIkcq%h@E=RcTp1!$xs!2a8OI~M!=~T*rQw%&2(mvUnH=Wxmn%9 zvLx6`-@-Sh``2uI-h}35F!92!4)^GgXmHfZjYVCV(z)$Z&$?;NXB4@HNQ2lbCVMqz z&!o2Ul^Un7o)Dmy35;$-APC2dBwa?IFA)RNhb>?!UAQTFbkH)vMaI{$oXd`{VPcRc z$N$xqAgaqO^T<^dc%Vjhf~z%63iT%PzT6N@SMkHNKV6ynIqEO9qyuvL@4{Va7%@L| zjnCPMs?0`fmsyU;V-NfWJgFcdPo${;T}JxMAzNLfw6wSl%AHi1YJVkUeC?6ITKTAe z3!?@Q);tMbtL8jiKEL2gvw%NKGoR#P0Jp{+18@OWDEfBa9U=w4#Q>tY-vc*1CvK>( zt`lYL1Pd5>UH`h*sc#~lbz`4#j+qzm*TOH+O&fqecx&j&20E%AktUC?AJr9a%aG_K zX8{che)_!pdcKSi;V-iQixNCVeC@KqNR}WSs7qJZOr~=uZ2e(3^oSGvjm3=0OMR~1 zs%d@FZbdCb8>zNWJC%&W%^yC)nW6{FRs;6rriWjnRr##}w!7*faM>jMSkyc*6QP2G zxa9fc|9sB3L5N7~_2G#}xm zlotwJlt-OztT)+An~d2db~zKefZXavyZ)Z+eXdyh>3k`0IGzDHRqbzpp?heCO$FEG zCN=ClZ^-o3qB;8MxgDwt2p#NT{Y};5=CdK=uIXw+v#n+Oo4SUh;?=*$4Y7XBp=)TmhtzRg%FfimxIH>< zIPRwNbF7TBr~@e{7HPLTOK2TQ>|(nxp1@~zZv2y4q%ptd)@h5?0F8RFbH#K}=BtsJ zpJBb)5oGldK^b7vQn?QH7Upu)YCRig!sc`B8Hiiq!bt0(%BOx?;kQS-VlFMBtnc0u9A2Y%jSQq?vxXeI-6 zl%rhO<OJ$C%hX0Ba{;OZmRPv44Y0h3MhgYzZ}H@An;r6}I~cASd$l>)X8f*&KKiNf+b&rpd;i@TA^v_vYZWHJ@xe=zoq z&6!2fnz7Yk$F}XHW7~Gewr$(CZQHi(ys+!5)D%DwBhg;&RgJRq;<6C9{3ew+0e{#-m*~ru$LkQ2ap}1NXzuEI8emPcoavRIpT&iyX}iMXn## zrCYUx?QW=?n)QnRLmZrl1L2T*Qci2n2|lfD*Z6xENLxS&^a_~>5yXtJxUfxSMv4TR z1C=0v&$bA+&z5-XOhriL(m0mkccaC;Tk(_lOk@39HA9FUPFyb7ic69Qs`{eV+Yk)^ zEH(lx5zWkx8}D~>EAbz+o}B8fK&cDak)+XXM9mEC`>zLta%G7*wAVd0<3O3j$2xr_ z$jlD)i~8Nss#O)T?wIFnwIJ@NOwLOKOgs5YH)uB4P8asC2M%fv_b{LXJ2%G`Y`k?5 zR<`bFuPHkApHdgvdWyn07>~{*m|?tkE;Cd}ZXPHr-wk-zfb2hu-a@XZ9Kxj_t;5zN zSK zD@@^k%ymVN%rBiNn{@bFNuX0(i}kQJ&bw~8NQ9#6@-7wv8Po61`r0U-=t~W>sTl2| zb%|blxiOjh!}JXyHFYzq;ljZdmD@fYW!Nn%BtU7=0PP;9x_a?6i_4jmxH^DBNyPOVg9u?PWMpDP-tRIi zmn!-Sq!9d_uz62Gw>9uoLRI%wGtFupk{f4PUd5X1LX(^;E$12b(BSc#7!JOjpGtz| zehi>3DoB^uowVys0C)&s$Iq(QFQa`rcmi}d%TozCy6yaxxP$~e zKn`$BJy!aaXQEj0iUGfQ{6J=bLW+wg3?A&+o_odI z>+Kw$1O!d~|D7!y|1EmwU!?l~YM9B^YOf*bgrELGdjf5(@&?9YXV8b7!Q)Ba*Y|jL zKEmi4>$MF>rL-u&<__!^kyA6zr?|HR9L@^iS9~stv53LFNx!|`jo!7|j_UpF$9kRU z58MIV-CRemVi7Cl60hz6cQ=`eY}Ch#r(#k0UXBXow}oEs_vQTjRn5odZv|bnM$T_u zRK+*B<4LE4$?;gbo%jrg{JY;8F06)XmXj?rXzzA|d-`*`y@dV_W`w*OPF`S+WR@GR z4eMg-o1qH@abV$BjtF)2E?5`^;LqynHfMA1Q$s_^%qLZtyo7R2+(wj-%}R zj5Ad?ffk*~uFtZ}PlzQq{)Ywq?i`^bD(_YXIqnBaSt!XkTHjMK9q&yuCKHM}V%M;? zOuXf&tILK!y1r(ve@!P#`5IrGem$LB;&KaFZQ-;f=wVaX59zBd!>w7+{TaO1vwEK6neZvTL&yfI4) zYDEUs`wT3T8&0bps)bRp8#no7MObfe$bUQec3Q zF+lqO| z-;_=#2p&o844tMf=18!KRI^e=-Swb1e)Qk!_nthh3kmXBAnwztwk5%E_Dah~f0-Az zZ0?lMM?FvKjAh%QB6q&1G~HqB>Hu#tQFI;HVpzDG>QGj_pu+EUn zKTl91H}30(L*_hdrKP?C;TClI47;@HTMJp(orI!SJCrM_*Pn{zsIC?9bxRxz-M;S0 zO4ih#T7_>oJ~gQ#*=%U6UOhRA!+^{Y_DF;hW@={p5V~ky^1sGP0TrT@vk@o{V7_|- zA`a4+ClVfi9Pkz(+-JWW_olzOve|_3J{^pfKx#XY zt=Q;Cq0?6*r{_iJHQL}c1=3dN2x9r1(R{Vm%=<`%@tb{^JN*zw;t)Ca9@rcPMXs~y zowOTT7HU{yAA~Z!Gz;mo9TGYkdIq`4hu*Dbq_;Wc(Eqish*2M+gi1QI(lS7-lD#Nk z`Mpr%KwNz;J`F_eY0c46aZ~ zYt|TV;SS~`qoNY3CkJZAqjY|teY?R2iews_bNE-5G|(n{$jo#WLVd;g)*y!k{|r12eXSIme^;qd`}w3kZoCzmAI55$q`Vp=R+!s6CbyJ< z-;!{eY7g5u`is8jMxYp%o1$D+muMj(RV{#axSZvwWBL1uHrNoz0J<2%p(Kj|>8X*5 z?_VMk`Ub2WU96f;B#}^V^fi)F_T6orQufE|zYle$dd9d|Y^>Z_jHTHw3#68aU$Lgi z2jtQPZ3ae3E}}me-=#gxaua{AaBsx`74l+^JrZ4+UV9}a7pJ~4b85oO z5kTh%d6P3)xlc%83_noK5?oOJiLKG%l?QQa^dsZ(hRyJTKw^9Sdn1@OHTk)cpmXP9 z&>?M=I2y7k*VfdI*Q$i0uE52t#*9I8ZRYtn%aYpoi-Zszrjdv)N??$ z^6BKx8fTNjbAmM?e4$j>p=+6U*q*aX+qABU?v;E}tHwe*=)RI^yVr!{}R}DCgeW**E=e5Y+Oq0gg>L9N@@W#-KVwyKM$P?xTI>w0_ zH+(ANXe)uWtZr-|G;Tt5?H!d!^+- z({-OaC?Hy@jXe-@h3lIhfq}|flP^1PZTRp+ZrZz*Sc@`<$o{FF_(cQoccl+fV}~^b zp=}(D*QGjSbe{ADTd@oYhpuNphv-grK9L9sbA86WZMBswu~i=e2!tiA?W&owi%QwU zPfr#0Kne8arR@IHvpPl*oYmLoGOOC5uR15$;Teo?66*#oV}}_mau_dwcIUq{>@C?# zrmk&DQU%D7MjJ;*nkAZlt%)kMP@YXk!97zwfpubw8^QljR4kT$R=D z6cfd<@0-UdWZ*2=A?wZ%K&%C5a~+L?0*CIZ<-DG+#2gT@q-WZCJt-ctpO3oiS&^jh zovH+6!(MBcMROd5%$Dd|NI;8mI0B$6-z%oh1vxBwj-x`b*RD2wm`?A_8#YO|KPTtD z2UdS4u%01IEi8h#Q|TJo?KUoL(Hw!E)|pr1nN3Sy;_Z1(0E$ytv`h53v%9w2Y>(WK z@4DyOE@`By0R>n-k4J`xrk;#V{?}W$LJpSbt#h9&jV3w}7EFY!=k<czvkYv;n$M(t}bm2JAsa50OTjB0by#NyDdS8p}Fiz}JUS(K;Q#nRMo z4>1z+aBPlT#3q5Q_MPBSo_Ee;e@;XP3?QU9tl;V>`Y6-r_mpLx@m`q!UQc<~qMs4% z;A74gjB>V!vB~ZE%(gAe9+8T6^Gp}}<@xG#7LrvD5ky}Fz43|CT}u1Wbt9A6bwQ5injU@8nx#w*~DY+>Kdx+@bj59@!?BhZkaCd zk?eFO98-gT0XMzd1~B8e+<)Q6v*qI>1QNpG9i#*D*@;?^a^k zkQi^()bF1h>$|W%QL_zXrt+pUkCoXgCBGXQf#q%TJzE)yW2_q@lLxuMXy=KlUl056QQ?;Blu|pd#X+0?Y(*^QTtq_2gH=fhLRmN-E~eVxJqw=lu`Si zzK}{_W_a;8V4Xu3) zpJnaNwAr8C&K%FZHs-r44)PQ@c%JTg(_^7SZk8cBN9!$~>(}_%)Hb}5t2IZT7BOz( zu94cyN4xullxiq>Z|?4)Wyqj@a1S)|3OBiU>g!`mi)v})`E=vO`@Jr9;D-hq)|%g1Tlcxg_>-|>;ra?WAA%r&L(Sp2?^idSJTR2*Oqi_P zM6e9Q2V7_tv&nDjmWnsiF;kER*j8Skgh3i18M zjvvBD{aN;CW|`hhY#(<1y1FpMXn!oNsN=k2V#VPZPixHUrtxGYds5XawX*4}waN=q z^HCL-U2UJy}UoKOO1s{`5q)bWr`Gfj_?lYPa)E z*QGcgCHYD#%FTEjRszkXH};h4h`z>MBt%#woGKN=3pnIeVPx(@#qlZ7d>Xq<;_5KP2;Nx(==HF(- zDY%33OlFIoR;eHgOsQ3l&@XF5tU%4WL1C=Wio!jt9&)b#(62e9#Kf*Jt%&j02ZWstP)cOssEOat9)=&NAVaJz2erZsNcaawG_V!2<&CYEjs%Rqk?6Q`9;Daxn)Yrejnb2>hOEhI(;u1e!~;1u|e|fvO5e5 zOjC5kOXP!KFPIhTA463Tbrjc7Mc}j*j-nyE3E)0_lpk*C>W*D-soUAmqhU(Bnb3!l zt*+k+cs7^6e~xLwvR8vG;|5t$qpejvme4H5(l{RGjo+l5R>xnKmO8OI%wz_)ixu-J z9*jreQnE7p;?M6QkrsWQ62IR*3Hu@l-j0-bzi%18?PnL*(Th?`AT2g=W_{XTOM`&0sZ)!5-DrjwLRG2Od9qlUWCg@m7ZDkchqF)a^@ z6%<)D*m|R&VuIswg(pZ@DGKlok#C5s_N#Jrs9598kxrkj9(n2Vw+eJ0qtyhmRXpE{ zt>R1?EHY4bOk0zTy4YrMyb!M9`c?XB56_=IKm1x>|CF$=Bk)W}ZgQDNO{RT7FCFR+=u;Drn#G zQCxJ*SRP$eBnwqXxQ~o@)9gk?Ulvt3oO+QqOhh2LDhjF6JM zp+O2UIh&@70KqFYa$)|7KR-hgf(CW22bnglP)r0mS5j9|)a*mp9Se=C z(p0_Z&=Pt=f867v6xS4eOIvADTHgAO8?a>rF>Q45QJ z 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ξ8`yoaaf(@$6_Nf4ujyBTOV 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�UxWzh6GV{GS~mUgX*;rO%= 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 i(z=lU{;4}T8#p?
/dev/null || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 3: DISABLED" || fail +# remove key0 / slot 0 +echo $PWD1 | $CRYPTSETUP luksRemoveKey $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 0: DISABLED" || fail +# last keyslot, in batch mode no passphrase needed... +$CRYPTSETUP luksKillSlot -q $LOOPDEV 1 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 1: DISABLED" || fail + +prepare "[19] create & status & resize" wipe +echo $PWD1 | $CRYPTSETUP create $DEV_NAME $LOOPDEV --hash xxx 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP create $DEV_NAME $LOOPDEV --hash sha1 --cipher aes-cbc-essiv:sha256 --offset 3 --skip 4 --readonly || fail +$CRYPTSETUP -q status $DEV_NAME | grep "offset:" | grep -q "3 sectors" || fail +$CRYPTSETUP -q status $DEV_NAME | grep "skipped:" | grep -q "4 sectors" || fail +$CRYPTSETUP -q status $DEV_NAME | grep "mode:" | grep -q "readonly" || fail +$CRYPTSETUP -q resize $DEV_NAME --size 100 || fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "100 sectors" || fail +$CRYPTSETUP -q resize $DEV_NAME || fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "19997 sectors" || fail +$CRYPTSETUP -q resize $DEV_NAME --device-size 1M || fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "2048 sectors" || fail +$CRYPTSETUP -q resize $DEV_NAME --device-size 512k --size 1023 >/dev/null 2>&1 && fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "2048 sectors" || fail +$CRYPTSETUP -q resize $DEV_NAME --device-size 513 >/dev/null 2>&1 && fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "2048 sectors" || fail +# Resize underlying loop device as well +truncate -s 16M $IMG || fail +$CRYPTSETUP -q resize $DEV_NAME || fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "32765 sectors" || fail +$CRYPTSETUP -q remove $DEV_NAME || fail +$CRYPTSETUP -q status $DEV_NAME >/dev/null && fail +echo $PWD1 | $CRYPTSETUP create $DEV_NAME --hash sha1 $LOOPDEV || fail +$CRYPTSETUP -q remove $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP -q create $DEV_NAME --hash sha1 $LOOPDEV || fail +$CRYPTSETUP -q remove $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP -q create $DEV_NAME --hash sha1 --size 100 $LOOPDEV || fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "100 sectors" || fail +$CRYPTSETUP -q remove $DEV_NAME || fail +# 4k sector resize (if kernel supports it) +echo $PWD1 | $CRYPTSETUP -q open --type plain $LOOPDEV $DEV_NAME --sector-size 4096 --size 8 >/dev/null 2>&1 +if [ $? -eq 0 ] ; then + $CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "8 sectors" || fail + $CRYPTSETUP -q resize $DEV_NAME --size 16 || fail + $CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "16 sectors" || fail + $CRYPTSETUP -q resize $DEV_NAME --size 9 2>/dev/null && fail + $CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "16 sectors" || fail + $CRYPTSETUP -q resize $DEV_NAME --device-size 4608 2>/dev/null && fail + $CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "16 sectors" || fail + $CRYPTSETUP -q remove $DEV_NAME || fail +fi +# Resize not aligned to logical block size +add_scsi_device dev_size_mb=32 sector_size=4096 +echo $PWD1 | $CRYPTSETUP create $DEV_NAME --hash sha1 $DEV || fail +OLD_SIZE=$($CRYPTSETUP status $DEV_NAME | grep "^ \+size:" | sed 's/.* \([0-9]\+\) .*/\1/') +$CRYPTSETUP resize $DEV_NAME -b 7 2> /dev/null && fail +dmsetup info $DEV_NAME | grep -q SUSPENDED && fail +NEW_SIZE=$($CRYPTSETUP status $DEV_NAME | grep "^ \+size:" | sed 's/.* \([0-9]\+\) .*/\1/') +test $OLD_SIZE -eq $NEW_SIZE || fail +$CRYPTSETUP close $DEV_NAME || fail +# Add check for unaligned plain crypt activation +echo $PWD1 | $CRYPTSETUP create $DEV_NAME --hash sha1 $DEV -b 7 2>/dev/null && fail +$CRYPTSETUP status $DEV_NAME >/dev/null 2>&1 && fail +# verify is ignored on non-tty input +echo $PWD1 | $CRYPTSETUP create $DEV_NAME $LOOPDEV --hash sha1 --verify-passphrase 2>/dev/null || fail +$CRYPTSETUP -q remove $DEV_NAME || fail +$CRYPTSETUP create $DEV_NAME $LOOPDEV -d $KEY1 --key-size 255 2>/dev/null && fail +$CRYPTSETUP create $DEV_NAME $LOOPDEV -d $KEY1 --key-size -1 2>/dev/null && fail +$CRYPTSETUP create $DEV_NAME $LOOPDEV -d $KEY1 -l -1 2>/dev/null && fail +$CRYPTSETUP create $DEV_NAME $LOOPDEV -d $KEY1 || fail +$CRYPTSETUP create $DEV_NAME $LOOPDEV -d $KEY1 2>/dev/null && fail +$CRYPTSETUP create $DEV_NAME $LOOPDEV -d blah 2>/dev/null && fail +$CRYPTSETUP -q remove $DEV_NAME || fail +$CRYPTSETUP create $DEV_NAME $LOOPDEV -d /dev/urandom || fail +$CRYPTSETUP -q remove $DEV_NAME || fail + +prepare "[20] Disallow open/create if already mapped." wipe +$CRYPTSETUP create $DEV_NAME $LOOPDEV -d $KEY1 || fail +$CRYPTSETUP create $DEV_NAME $LOOPDEV -d $KEY1 2>/dev/null && fail +$CRYPTSETUP create $DEV_NAME2 $LOOPDEV -d $KEY1 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $LOOPDEV 2>/dev/null && fail +$CRYPTSETUP remove $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $LOOPDEV || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME2 2>/dev/null && fail +$CRYPTSETUP luksClose $DEV_NAME || fail + +prepare "[21] luksDump" wipe +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT --uuid $TEST_UUID $LOOPDEV $KEY1 || fail +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV -d $KEY1 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 0: ENABLED" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q $TEST_UUID || fail +echo $PWDW | $CRYPTSETUP luksDump $LOOPDEV --dump-master-key 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksDump $LOOPDEV --dump-master-key | grep -q "MK dump:" || fail +$CRYPTSETUP luksDump -q $LOOPDEV --dump-master-key -d $KEY1 | grep -q "MK dump:" || fail +echo $PWD1 | $CRYPTSETUP luksDump -q $LOOPDEV --dump-master-key --master-key-file $VK_FILE > /dev/null || fail +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT --master-key-file $VK_FILE $LOOPDEV || fail + +prepare "[22] remove disappeared device" wipe +dmsetup create $DEV_NAME --table "0 5000 linear $LOOPDEV 2" || fail +echo $PWD1 | $CRYPTSETUP -q $FAST_PBKDF_OPT luksFormat --type luks1 /dev/mapper/$DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP -q luksOpen /dev/mapper/$DEV_NAME $DEV_NAME2 || fail +# underlying device now returns error but node is still present +dmsetup load $DEV_NAME --table "0 5000 error" || fail +dmsetup resume $DEV_NAME || fail +$CRYPTSETUP -q luksClose $DEV_NAME2 || fail +dmsetup remove --retry $DEV_NAME || fail + +prepare "[23] ChangeKey passphrase and keyfile" wipe +# [0]$KEY1 [1]key0 +$CRYPTSETUP -q luksFormat --type luks1 $LOOPDEV $KEY1 $FAST_PBKDF_OPT --key-slot 0 || fail +echo $PWD1 | $CRYPTSETUP luksAddKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 --key-slot 1 || fail +# keyfile [0] / keyfile [0] +$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 $KEY2 --key-slot 0 || fail +# passphrase [1] / passphrase [1] +echo -e "$PWD1\n$PWD2\n" | $CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT --key-slot 1 || fail +# keyfile [0] / keyfile [new] +$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY2 $KEY1 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 0: DISABLED" || fail +# passphrase [1] / passphrase [new] +echo -e "$PWD2\n$PWD1\n" | $CRYPTSETUP luksChangeKey $FAST_PBKDF_OPT $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 1: DISABLED" || fail +# use all slots +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +# still allows replace +$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 $KEY2 || fail +$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 $KEY2 2>/dev/null && fail + +prepare "[24] Keyfile limit" wipe +$CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV $KEY1 --key-slot 0 -l 13 || fail +$CRYPTSETUP --key-file=$KEY1 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 0 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l -1 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 14 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 13 --keyfile-offset 1 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 13 --keyfile-offset -1 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 13 luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksClose $DEV_NAME || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT 2>/dev/null && fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT -l 14 2>/dev/null && fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT -l -1 2>/dev/null && fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT -l 13 --new-keyfile-size 12 || fail +$CRYPTSETUP luksRemoveKey $LOOPDEV $KEY2 2>/dev/null && fail +$CRYPTSETUP luksRemoveKey $LOOPDEV $KEY2 -l 12 || fail +$CRYPTSETUP luksChangeKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT 2>/dev/null && fail +$CRYPTSETUP luksChangeKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT -l 14 2>/dev/null && fail +$CRYPTSETUP luksChangeKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT -l 13 || fail +# -l is ignored for stdin if _only_ passphrase is used +echo $PWD1 | $CRYPTSETUP luksAddKey $LOOPDEV -d $KEY2 $FAST_PBKDF_OPT || fail +# this is stupid, but expected +echo $PWD1 | $CRYPTSETUP luksRemoveKey $LOOPDEV -l 11 2>/dev/null && fail +echo $PWDW"0" | $CRYPTSETUP luksRemoveKey $LOOPDEV -l 12 2>/dev/null && fail +echo -e "$PWD1\n" | $CRYPTSETUP luksRemoveKey $LOOPDEV -d- -l 12 || fail +# offset +$CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV $KEY1 --key-slot 0 -l 13 --keyfile-offset 16 || fail +$CRYPTSETUP --key-file=$KEY1 -l 13 --keyfile-offset 15 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 13 --keyfile-offset 16 luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksClose $DEV_NAME || fail +$CRYPTSETUP luksAddKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 -l 13 --keyfile-offset 16 $KEY2 --new-keyfile-offset 1 || fail +$CRYPTSETUP --key-file=$KEY2 --keyfile-offset 11 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY2 --keyfile-offset 1 luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksClose $DEV_NAME || fail +$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY2 --keyfile-offset 1 $KEY2 --new-keyfile-offset 0 || fail +$CRYPTSETUP luksOpen -d $KEY2 $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksClose $DEV_NAME || fail +# large device with keyfile +echo -e '0 10000000 error'\\n'10000000 1000000 zero' | dmsetup create $DEV_NAME2 || fail +$CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV /dev/mapper/$DEV_NAME2 -l 13 --keyfile-offset 5120000000 || fail +$CRYPTSETUP --key-file=/dev/mapper/$DEV_NAME2 -l 13 --keyfile-offset 5119999999 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=/dev/mapper/$DEV_NAME2 -l 13 --keyfile-offset 5120000000 luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksClose $DEV_NAME || fail +$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d /dev/mapper/$DEV_NAME2 \ + --keyfile-offset 5120000000 -l 13 /dev/mapper/$DEV_NAME2 --new-keyfile-offset 5120000001 --new-keyfile-size 15 || fail +dmsetup remove --retry $DEV_NAME2 + +prepare "[25] Create shared segments" wipe +echo $PWD1 | $CRYPTSETUP create $DEV_NAME $LOOPDEV --hash sha1 --offset 0 --size 256 || fail +echo $PWD1 | $CRYPTSETUP create $DEV_NAME2 $LOOPDEV --hash sha1 --offset 512 --size 256 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP create $DEV_NAME2 $LOOPDEV --hash sha1 --offset 512 --size 256 --shared || fail +$CRYPTSETUP -q remove $DEV_NAME2 || fail +$CRYPTSETUP -q remove $DEV_NAME || fail + +prepare "[26] Suspend/Resume" wipe +# only LUKS is supported +echo $PWD1 | $CRYPTSETUP create $DEV_NAME --hash sha1 $LOOPDEV || fail +$CRYPTSETUP luksSuspend $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP luksResume $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP -q remove $DEV_NAME || fail +$CRYPTSETUP luksSuspend $DEV_NAME 2>/dev/null && fail +# LUKS +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV || fail +echo $PWD1 | $CRYPTSETUP -q luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksSuspend $DEV_NAME || fail +$CRYPTSETUP -q resize $DEV_NAME 2>/dev/null && fail +echo $PWDW | $CRYPTSETUP luksResume $DEV_NAME 2>/dev/null && fail +[ $? -ne 2 ] && fail "luksResume should return EPERM exit code" +echo $PWD1 | $CRYPTSETUP luksResume $DEV_NAME || fail +$CRYPTSETUP -q luksClose $DEV_NAME || fail + +prepare "[27] luksOpen with specified key slot number" wipe +# first, let's try passphrase option +echo $PWD3 | $CRYPTSETUP luksFormat --type luks1 $FAST_PBKDF_OPT -S 5 $LOOPDEV || fail +check $LUKS_HEADER $KEY_SLOT5 $KEY_MATERIAL5 +echo $PWD3 | $CRYPTSETUP luksOpen -S 4 $LOOPDEV $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail +echo $PWD3 | $CRYPTSETUP luksOpen -S 5 $LOOPDEV $DEV_NAME || fail +check_exists +$CRYPTSETUP luksClose $DEV_NAME || fail +echo -e "$PWD3\n$PWD1" | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT -S 0 $LOOPDEV || fail +check $LUKS_HEADER $KEY_SLOT0 $KEY_MATERIAL0 +echo $PWD3 | $CRYPTSETUP luksOpen -S 0 $LOOPDEV $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail +echo $PWD1 | $CRYPTSETUP luksOpen -S 5 $LOOPDEV $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail +# second, try it with keyfiles +$CRYPTSETUP luksFormat --type luks1 -q -S 5 -d $KEY5 $LOOPDEV || fail +check $LUKS_HEADER $KEY_SLOT5 $KEY_MATERIAL5 +$CRYPTSETUP luksAddKey $FAST_PBKDF_OPT -S 1 -d $KEY5 $LOOPDEV $KEY1 || fail +check $LUKS_HEADER $KEY_SLOT1 $KEY_MATERIAL1 +$CRYPTSETUP luksOpen -S 5 -d $KEY5 $LOOPDEV $DEV_NAME || fail +check_exists +$CRYPTSETUP luksClose $DEV_NAME || fail +$CRYPTSETUP luksOpen -S 1 -d $KEY5 $LOOPDEV $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail +$CRYPTSETUP luksOpen -S 5 -d $KEY1 $LOOPDEV $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail + +prepare "[28] Detached LUKS header" wipe +echo $PWD1 | $CRYPTSETUP luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV --header $HEADER_IMG || fail +echo $PWD1 | $CRYPTSETUP luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV --header $HEADER_IMG --align-payload 1 >/dev/null 2>&1 && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV --header $HEADER_IMG --align-payload 8192 || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV --header $HEADER_IMG --align-payload 0 || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV --header $HEADER_IMG --align-payload 8192 --offset 8192 >/dev/null 2>&1 && fail +truncate -s 4096 $HEADER_IMG +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV --header $HEADER_IMG -S7 >/dev/null 2>&1 || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV --header $HEADER_IMG --offset 80000 >/dev/null 2>&1 || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV --header $HEADER_IMG --offset 8192 || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV --header $HEADER_IMG --offset 0 || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV-missing --header $HEADER_IMG $DEV_NAME 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV --header $HEADER_IMG $DEV_NAME || fail +$CRYPTSETUP -q resize $DEV_NAME --size 100 --header $HEADER_IMG || fail +$CRYPTSETUP -q status $DEV_NAME --header $HEADER_IMG | grep "size:" | grep -q "100 sectors" || fail +$CRYPTSETUP -q status $DEV_NAME | grep "type:" | grep -q "n/a" || fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "100 sectors" || fail +$CRYPTSETUP luksSuspend $DEV_NAME --header $HEADER_IMG || fail +echo $PWD1 | $CRYPTSETUP luksResume $DEV_NAME --header $HEADER_IMG || fail +$CRYPTSETUP luksSuspend $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP luksResume $DEV_NAME && fail +echo $PWD1 | $CRYPTSETUP luksResume $DEV_NAME --header $HEADER_IMG || fail +$CRYPTSETUP luksClose $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT -S 5 _fakedev_ --header $HEADER_IMG $KEY5 || fail +$CRYPTSETUP luksDump _fakedev_ --header $HEADER_IMG | grep -q "Key Slot 5: ENABLED" || fail +$CRYPTSETUP luksKillSlot -q _fakedev_ --header $HEADER_IMG 5 || fail +$CRYPTSETUP luksDump _fakedev_ --header $HEADER_IMG | grep -q "Key Slot 5: DISABLED" || fail + +prepare "[29] Repair metadata" wipe +$CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV $KEY1 --key-slot 0 || fail +# second sector overwrite should corrupt keyslot 6+7 +dd if=/dev/urandom of=$LOOPDEV bs=512 seek=1 count=1 >/dev/null 2>&1 +$CRYPTSETUP luksOpen -d $KEY1 $LOOPDEV $DEV_NAME >/dev/null 2>&1 && fail +$CRYPTSETUP -q repair $LOOPDEV >/dev/null 2>&1 || fail +$CRYPTSETUP luksOpen -d $KEY1 $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksClose $DEV_NAME || fail + +prepare "[30] LUKS erase" wipe +$CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV $KEY5 --key-slot 5 || fail +$CRYPTSETUP luksAddKey $FAST_PBKDF_OPT -S 1 -d $KEY5 $LOOPDEV $KEY1 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 1: ENABLED" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 5: ENABLED" || fail +$CRYPTSETUP luksErase -q $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 1: DISABLED" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 5: DISABLED" || fail + +prepare "[31] Deferred removal of device" wipe +echo $PWD1 | $CRYPTSETUP open --type plain --hash sha256 $LOOPDEV $DEV_NAME || fail +echo $PWD2 | $CRYPTSETUP open --type plain --hash sha256 /dev/mapper/$DEV_NAME $DEV_NAME2 || fail +$CRYPTSETUP close $DEV_NAME >/dev/null 2>&1 && fail +$CRYPTSETUP -q status $DEV_NAME >/dev/null 2>&1 || fail +$CRYPTSETUP close --deferred $DEV_NAME >/dev/null 2>&1 +if [ $? -eq 0 ] ; then + dmsetup info $DEV_NAME | grep -q "DEFERRED REMOVE" || fail + $CRYPTSETUP -q status $DEV_NAME >/dev/null 2>&1 || fail + $CRYPTSETUP close $DEV_NAME2 || fail + $CRYPTSETUP -q status $DEV_NAME >/dev/null 2>&1 && fail +else + $CRYPTSETUP close $DEV_NAME2 >/dev/null 2>&1 + $CRYPTSETUP close $DEV_NAME >/dev/null 2>&1 +fi + +# Interactive tests +# Do not remove sleep 0.1 below, the password query flushes TTY buffer (so the code is racy). +which expect >/dev/null 2>&1 || skip "WARNING: expect tool missing, interactive test will be skipped." 0 + +prepare "[32] Interactive password retry from terminal." new +EXPECT_DEV=$(losetup $LOOPDEV | sed -e "s/.*(\(.*\))/\1/") + +expect - >/dev/null </dev/null </dev/null </dev/null </dev/null </dev/null </dev/null </dev/null </dev/null) +[ -f /etc/system-fips ] && FIPS_MODE=$(cat /proc/sys/crypto/fips_enabled 2>/dev/null) + +function remove_mapping() +{ + [ -b /dev/mapper/$DEV_NAME3 ] && dmsetup remove --retry $DEV_NAME3 + [ -b /dev/mapper/$DEV_NAME2 ] && dmsetup remove --retry $DEV_NAME2 + [ -b /dev/mapper/$DEV_NAME ] && dmsetup remove --retry $DEV_NAME + losetup -d $LOOPDEV >/dev/null 2>&1 + rm -f $ORIG_IMG $IMG $IMG10 $KEY1 $KEY2 $KEY5 $KEYE $HEADER_IMG $HEADER_KEYU $VK_FILE $HEADER_LUKS2_PV missing-file $TOKEN_FILE0 $TOKEN_FILE1 test_image_* >/dev/null 2>&1 + + # unlink whole test keyring + [ -n "$TEST_KEYRING" ] && keyctl unlink $TEST_KEYRING "@u" >/dev/null + unset TEST_KEYRING + + rmmod scsi_debug 2> /dev/null + scsi_debug_teardown $DEV +} + +function force_uevent() +{ + DNAME=$(echo $LOOPDEV | cut -f3 -d /) + echo "change" >/sys/block/$DNAME/uevent +} + +function fail() +{ + [ -n "$1" ] && echo "$1" + remove_mapping + echo "FAILED backtrace:" + while caller $frame; do ((frame++)); done + exit 2 +} + +function fips_mode() +{ + [ -n "$FIPS_MODE" ] && [ "$FIPS_MODE" -gt 0 ] +} + +function can_fail_fips() +{ + # Ignore this fail if running in FIPS mode + fips_mode || fail $1 +} + +function skip() +{ + [ -n "$1" ] && echo "$1" + remove_mapping + exit 77 +} + +function prepare() +{ + [ -b /dev/mapper/$DEV_NAME ] && dmsetup remove --retry $DEV_NAME + + case "$2" in + wipe) + remove_mapping + dd if=/dev/zero of=$IMG bs=1M count=40 >/dev/null 2>&1 + sync + losetup $LOOPDEV $IMG + ;; + new) + remove_mapping + xz -cd compatimage.img.xz > $IMG + xz -dk $HEADER_KEYU.xz + # FIXME: switch to internal loop (no losetup at all) + echo "bad" | $CRYPTSETUP luksOpen --key-slot 0 --test-passphrase $IMG 2>&1 | \ + grep "autoclear flag" && skip "WARNING: Too old kernel, test skipped." + losetup $LOOPDEV $IMG + xz -cd compatv10image.img.xz > $IMG10 + ;; + reuse | *) + if [ ! -e $IMG ]; then + xz -cd compatimage.img.xz > $IMG + losetup $LOOPDEV $IMG + fi + [ ! -e $IMG10 ] && xz -cd compatv10image.img.xz > $IMG10 + ;; + esac + + if [ ! -e $KEY1 ]; then + #dd if=/dev/urandom of=$KEY1 count=1 bs=32 >/dev/null 2>&1 + echo -n $'\x48\xc6\x74\x4f\x41\x4e\x50\xc0\x79\xc2\x2d\x5b\x5f\x68\x84\x17' >$KEY1 + echo -n $'\x9c\x03\x5e\x1b\x4d\x0f\x9a\x75\xb3\x90\x70\x32\x0a\xf8\xae\xc4'>>$KEY1 + fi + + if [ ! -e $KEY2 ]; then + dd if=/dev/urandom of=$KEY2 count=1 bs=16 >/dev/null 2>&1 + fi + + if [ ! -e $KEY5 ]; then + dd if=/dev/urandom of=$KEY5 count=1 bs=16 >/dev/null 2>&1 + fi + + if [ ! -e $KEYE ]; then + touch $KEYE + fi + + cp $IMG $ORIG_IMG + [ -n "$1" ] && echo "CASE: $1" +} + +function check_exists() +{ + [ -b /dev/mapper/$DEV_NAME ] || fail +} + +function valgrind_setup() +{ + which valgrind >/dev/null 2>&1 || fail "Cannot find valgrind." + [ ! -f $CRYPTSETUP_VALGRIND ] && fail "Unable to get location of cryptsetup executable." + export LD_LIBRARY_PATH="$CRYPTSETUP_LIB_VALGRIND:$LD_LIBRARY_PATH" +} + +function valgrind_run() +{ + INFOSTRING="$(basename ${BASH_SOURCE[1]})-line-${BASH_LINENO[0]}" ./valg.sh ${CRYPTSETUP_VALGRIND} "$@" +} + +function dm_crypt_keyring_support() +{ + VER_STR=$(dmsetup targets | grep crypt | cut -f2 -dv) + [ -z "$VER_STR" ] && fail "Failed to parse dm-crypt version." + + VER_MAJ=$(echo $VER_STR | cut -f 1 -d.) + VER_MIN=$(echo $VER_STR | cut -f 2 -d.) + VER_PTC=$(echo $VER_STR | cut -f 3 -d.) + + test -d /proc/sys/kernel/keys || return 1 + + [ $VER_MAJ -gt 1 ] && return 0 + [ $VER_MAJ -eq 1 -a $VER_MIN -gt 18 ] && return 0 + [ $VER_MAJ -eq 1 -a $VER_MIN -eq 18 -a $VER_PTC -ge 1 ] && return 0 + return 1 +} + +function dm_crypt_keyring_flawed() +{ + dm_crypt_keyring_support && return 1; + + [ $VER_MAJ -gt 1 ] && return 0 + [ $VER_MAJ -eq 1 -a $VER_MIN -ge 15 ] && return 0 + return 1 +} + +function dm_crypt_keyring_new_kernel() +{ + KER_STR=$(uname -r) + [ -z "$KER_STR" ] && fail "Failed to parse kernel version." + KER_MAJ=$(echo $KER_STR | cut -f 1 -d.) + KER_MIN=$(echo $KER_STR | cut -f 2 -d.) + + [ $KER_MAJ -ge 5 ] && return 0 + [ $KER_MAJ -eq 4 -a $KER_MIN -ge 15 ] && return 0 + return 1 +} + +function dm_crypt_sector_size_support() +{ + VER_STR=$(dmsetup targets | grep crypt | cut -f2 -dv) + [ -z "$VER_STR" ] && fail "Failed to parse dm-crypt version." + + VER_MAJ=$(echo $VER_STR | cut -f 1 -d.) + VER_MIN=$(echo $VER_STR | cut -f 2 -d.) + VER_PTC=$(echo $VER_STR | cut -f 3 -d.) + + if [ $VER_MIN -ge 17 -o \( $VER_MIN -eq 14 -a $VER_PTC -ge 5 \) ]; then + return 0 + fi + + return 1 +} + +function test_and_prepare_keyring() { + which keyctl > /dev/null 2>&1 || skip "Cannot find keyctl, test skipped" + keyctl list "@s" > /dev/null || skip "Current session keyring is unreachable, test skipped" + TEST_KEYRING=$(keyctl newring $TEST_KEYRING_NAME "@u" 2> /dev/null) + test -n "$TEST_KEYRING" || skip "Failed to create keyring in user keyring" + keyctl search "@s" keyring "$TEST_KEYRING" > /dev/null 2>&1 || keyctl link "@u" "@s" > /dev/null 2>&1 + load_key user test_key test_data "$TEST_KEYRING" || skip "Kernel keyring service is useless on this system, test skipped." +} + +# $1 type +# $2 description +# $3 payload +# $4 keyring +function load_key() +{ + keyctl add $@ >/dev/null +} + +function setup_luks2_env() { + echo $PWD1 | $CRYPTSETUP luksFormat --type luks2 $FAST_PBKDF_OPT $LOOPDEV || fail + $CRYPTSETUP luksDump $LOOPDEV >/dev/null || fail + echo $PWD1 | $CRYPTSETUP open $LOOPDEV $DEV_NAME || fail + HAVE_KEYRING=$($CRYPTSETUP status $DEV_NAME | grep "keyring") + if [ -n "$HAVE_KEYRING" ]; then + HAVE_KEYRING=1 + else + HAVE_KEYRING=0 + fi + $CRYPTSETUP close $DEV_NAME || fail +} + +# $1 path to scsi debug bdev +scsi_debug_teardown() { + local _tries=15; + + while [ -b "$1" -a $_tries -gt 0 ]; do + rmmod scsi_debug 2> /dev/null + if [ -b "$1" ]; then + sleep .1 + _tries=$((_tries-1)) + fi + done + + test ! -b "$1" || rmmod scsi_debug 2> /dev/null +} + +function add_scsi_device() { + scsi_debug_teardown $DEV + modprobe scsi_debug $@ delay=0 + if [ $? -ne 0 ] ; then + echo "This kernel seems to not support proper scsi_debug module, test skipped." + exit 77 + fi + + sleep 1 + DEV="/dev/"$(grep -l -e scsi_debug /sys/block/*/device/model | cut -f4 -d /) + [ -b $DEV ] || fail "Cannot find $DEV." +} + +export LANG=C + +[ $(id -u) != 0 ] && skip "WARNING: You must be root to run this test, test skipped." +[ -z "$LOOPDEV" ] && skip "WARNING: Cannot find free loop device, test skipped." + +prepare "[0] Detect LUKS2 environment" wipe +setup_luks2_env + +[ -n "$VALG" ] && valgrind_setup && CRYPTSETUP=valgrind_run + +prepare "[1] Data offset" wipe +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --offset 1 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --offset 16385 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --offset 32 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --align-payload 16384 --offset 16384 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --offset 16384 || fail +$CRYPTSETUP -q luksDump $LOOPDEV | grep -q "offset: $((512 * 16384)) \[bytes\]" || fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --sector-size 1024 --offset 16384 >/dev/null || fail +$CRYPTSETUP -q luksDump $LOOPDEV | grep -q "offset: $((512 * 16384)) \[bytes\]" || fail +truncate -s 4096 $HEADER_IMG +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --header $HEADER_IMG -q --offset 80000 >/dev/null 2>&1 || fail + +prepare "[2] Sector size and old payload alignment" wipe +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --sector-size 511 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --sector-size 256 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --sector-size 8192 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --sector-size 512 || fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --align-payload 5 || fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --sector-size 512 --align-payload 5 || fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --sector-size 2048 --align-payload 32 >/dev/null || fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --sector-size 4096 >/dev/null || fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --sector-size 2048 --align-payload 32768 >/dev/null || fail +$CRYPTSETUP -q luksDump $LOOPDEV | grep -q "offset: $((512 * 32768)) \[bytes\]" || fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --sector-size 2048 >/dev/null || fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -q --sector-size 4096 --align-payload 32768 >/dev/null || fail +$CRYPTSETUP -q luksDump $LOOPDEV | grep -q "offset: $((512 * 32768)) \[bytes\]" || fail + +prepare "[3] format" wipe +echo $PWD1 | $CRYPTSETUP -q $FAST_PBKDF_OPT -c aes-cbc-essiv:sha256 -s 128 luksFormat --type luks2 $LOOPDEV || fail +prepare "[4] format using hash sha512" wipe +echo $PWD1 | $CRYPTSETUP $FAST_PBKDF_OPT -h sha512 -c aes-cbc-essiv:sha256 -s 128 luksFormat --type luks2 $LOOPDEV || fail +$CRYPTSETUP -q luksDump $LOOPDEV | grep "0: pbkdf2" -A2 | grep "Hash:" | grep -qe sha512 || fail + +prepare "[5] open" +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME --test-passphrase || fail +echo $PWDW | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME --test-passphrase 2>/dev/null && fail +[ $? -ne 2 ] && fail "luksOpen should return EPERM exit code" +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail +check_exists + +# Key Slot 1 and key material section 1 must change, the rest must not. +prepare "[6] add key" +echo -e "$PWD1\n$PWD2" | $CRYPTSETUP luksAddKey $LOOPDEV $FAST_PBKDF_OPT || fail +echo $PWD2 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail + +# Unsuccessful Key Delete - nothing may change +prepare "[7] unsuccessful delete" +echo $PWDW | $CRYPTSETUP luksKillSlot $LOOPDEV 1 2>/dev/null && fail +[ $? -ne 2 ] && fail "luksKillSlot should return EPERM exit code" +#FIXME +#$CRYPTSETUP -q luksKillSlot $LOOPDEV 8 2>/dev/null && fail +#$CRYPTSETUP -q luksKillSlot $LOOPDEV 7 2>/dev/null && fail + +# Delete Key Test +# Key Slot 1 and key material section 1 must change, the rest must not +prepare "[8] successful delete" +$CRYPTSETUP -q luksKillSlot $LOOPDEV 1 || fail +echo $PWD2 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME 2> /dev/null && fail +[ $? -ne 2 ] && fail "luksOpen should return EPERM exit code" +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail + +# Key Slot 1 and key material section 1 must change, the rest must not +prepare "[9] add key test for key files" +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV $KEY1 || fail +$CRYPTSETUP -d $KEY1 luksOpen $LOOPDEV $DEV_NAME || fail + +# Key Slot 1 and key material section 1 must change, the rest must not +prepare "[10] delete key test with key1 as remaining key" +$CRYPTSETUP -d $KEY1 luksKillSlot $LOOPDEV 0 || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP luksOpen -d $KEY1 $LOOPDEV $DEV_NAME || fail + +# Delete last slot +prepare "[11] delete last key" wipe +echo $PWD1 | $CRYPTSETUP luksFormat --type luks2 $LOOPDEV $FAST_PBKDF_OPT || fail +echo $PWD1 | $CRYPTSETUP luksKillSlot $LOOPDEV 0 || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail + +# Format test for ESSIV, and some other parameters. +prepare "[12] parameter variation test" wipe +$CRYPTSETUP -q $FAST_PBKDF_OPT -c aes-cbc-essiv:sha256 -s 128 luksFormat --type luks2 $LOOPDEV $KEY1 || fail +$CRYPTSETUP -d $KEY1 luksOpen $LOOPDEV $DEV_NAME || fail + +prepare "[13] open/close - stacked devices" wipe +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 $LOOPDEV $FAST_PBKDF_OPT || fail +echo $PWD1 | $CRYPTSETUP -q luksOpen $LOOPDEV $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 /dev/mapper/$DEV_NAME $FAST_PBKDF_OPT || fail +echo $PWD1 | $CRYPTSETUP -q luksOpen /dev/mapper/$DEV_NAME $DEV_NAME2 || fail +$CRYPTSETUP -q luksClose $DEV_NAME2 || fail +$CRYPTSETUP -q luksClose $DEV_NAME || fail + +prepare "[14] format/open - passphrase on stdin & new line" wipe +# stdin defined by "-" must take even newline +#echo -n -e "$PWD1\n$PWD2" | $CRYPTSETUP -q luksFormat $LOOPDEV - || fail +echo -n -e "$PWD1\n$PWD2" | $CRYPTSETUP $FAST_PBKDF_OPT -q --key-file=- luksFormat --type luks2 $LOOPDEV || fail +echo -n -e "$PWD1\n$PWD2" | $CRYPTSETUP -q --key-file=- luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP -q luksClose $DEV_NAME || fail +echo -n -e "$PWD1\n$PWD2" | $CRYPTSETUP -q luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +# now also try --key-file +echo -n -e "$PWD1\n$PWD2" | $CRYPTSETUP $FAST_PBKDF_OPT -q luksFormat --type luks2 $LOOPDEV --key-file=- || fail +echo -n -e "$PWD1\n$PWD2" | $CRYPTSETUP -q --key-file=- luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP -q luksClose $DEV_NAME || fail +# process newline if from stdin +echo -n -e "$PWD1\n$PWD2" | $CRYPTSETUP $FAST_PBKDF_OPT -q luksFormat --type luks2 $LOOPDEV || fail +echo "$PWD1" | $CRYPTSETUP -q luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP -q luksClose $DEV_NAME || fail + +prepare "[15] UUID - use and report provided UUID" wipe +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --uuid blah --type luks2 $LOOPDEV 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --uuid $TEST_UUID --type luks2 $LOOPDEV || fail +tst=$($CRYPTSETUP -q luksUUID $LOOPDEV) +[ "$tst"x = "$TEST_UUID"x ] || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV || fail +$CRYPTSETUP -q luksUUID --uuid $TEST_UUID $LOOPDEV || fail +tst=$($CRYPTSETUP -q luksUUID $LOOPDEV) +[ "$tst"x = "$TEST_UUID"x ] || fail + +prepare "[16] luksFormat" wipe +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --master-key-file /dev/urandom --type luks2 $LOOPDEV || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --master-key-file /dev/urandom --type luks2 $LOOPDEV -d $KEY1 || fail +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --master-key-file /dev/urandom -s 256 --uuid $TEST_UUID --type luks2 $LOOPDEV $KEY1 || fail +$CRYPTSETUP luksOpen -d $KEY1 $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP -q luksClose $DEV_NAME || fail +# open by UUID +force_uevent # some systems do not update loop by-uuid +$CRYPTSETUP luksOpen -d $KEY1 UUID=X$TEST_UUID $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP luksOpen -d $KEY1 UUID=$TEST_UUID $DEV_NAME || fail +$CRYPTSETUP -q luksClose $DEV_NAME || fail +# empty keyfile +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV $KEYE || fail +$CRYPTSETUP luksOpen -d $KEYE $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP -q luksClose $DEV_NAME || fail +# open by volume key +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT -s 256 --master-key-file $KEY1 --type luks2 $LOOPDEV || fail +$CRYPTSETUP luksOpen --master-key-file /dev/urandom $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP luksOpen --master-key-file $KEY1 $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP -q luksClose $DEV_NAME || fail + +prepare "[17] AddKey volume key, passphrase and keyfile" wipe +# masterkey +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --master-key-file /dev/zero --key-slot 3 || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV --test-passphrase || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "3: luks2" || fail +echo $PWD2 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV --master-key-file /dev/zero --key-slot 4 || fail +echo $PWD2 | $CRYPTSETUP luksOpen $LOOPDEV --test-passphrase --key-slot 4 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "4: luks2" || fail +echo $PWD3 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV --master-key-file /dev/null --key-slot 5 2>/dev/null && fail +$CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV --master-key-file /dev/zero --key-slot 5 $KEY1 || fail +$CRYPTSETUP luksOpen $LOOPDEV --test-passphrase --key-slot 5 -d $KEY1 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "5: luks2" || fail + +# special "-" handling +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV $KEY1 --key-slot 3 || fail +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV -d $KEY1 - || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV --test-passphrase 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV -d - --test-passphrase || fail +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV -d - $KEY2 || fail +$CRYPTSETUP luksOpen $LOOPDEV -d $KEY2 --test-passphrase || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV -d - -d $KEY1 --test-passphrase 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV -d $KEY1 -d $KEY1 --test-passphrase 2>/dev/null && fail + +# [0]PWD1 [1]PWD2 [2]$KEY1/1 [3]$KEY1 [4]$KEY2 +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV $KEY1 --key-slot 3 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "3: luks2" || fail +$CRYPTSETUP luksAddKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 $KEY2 --key-slot 3 2>/dev/null && fail +# keyfile/keyfile +$CRYPTSETUP luksAddKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 $KEY2 --key-slot 4 || fail +$CRYPTSETUP luksOpen $LOOPDEV -d $KEY2 --test-passphrase --key-slot 4 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "4: luks2" || fail +# passphrase/keyfile +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV -d $KEY1 --key-slot 0 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "0: luks2" || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV --test-passphrase --key-slot 0 || fail +# passphrase/passphrase +echo -e "$PWD1\n$PWD2\n" | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV --key-slot 1 || fail +echo $PWD2 | $CRYPTSETUP luksOpen $LOOPDEV --test-passphrase --key-slot 1 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "1: luks2" || fail +# keyfile/passphrase +echo -e "$PWD2\n" | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV $KEY1 --key-slot 2 --new-keyfile-size 3 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "2: luks2" || fail + +prepare "[18] RemoveKey passphrase and keyfile" reuse +$CRYPTSETUP luksDump $LOOPDEV | grep -q "3: luks2" || fail +$CRYPTSETUP luksRemoveKey $LOOPDEV $KEY1 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "3: luks2" && fail +$CRYPTSETUP luksRemoveKey $LOOPDEV $KEY1 2>/dev/null && fail +[ $? -ne 2 ] && fail "luksRemoveKey should return EPERM exit code" +$CRYPTSETUP luksRemoveKey $LOOPDEV $KEY2 --keyfile-size 1 2>/dev/null && fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "4: luks2" || fail +$CRYPTSETUP luksRemoveKey $LOOPDEV $KEY2 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "4: luks2" && fail +# if password or keyfile is provided, batch mode must not suppress it +echo "badpw" | $CRYPTSETUP luksKillSlot $LOOPDEV 2 2>/dev/null && fail +echo "badpw" | $CRYPTSETUP luksKillSlot $LOOPDEV 2 -q 2>/dev/null && fail +echo "badpw" | $CRYPTSETUP luksKillSlot $LOOPDEV 2 --key-file=- 2>/dev/null && fail +echo "badpw" | $CRYPTSETUP luksKillSlot $LOOPDEV 2 --key-file=- -q 2>/dev/null && fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "2: luks2" || fail +# kill slot using passphrase from 1 +echo $PWD2 | $CRYPTSETUP luksKillSlot $LOOPDEV 2 2>/dev/null || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "2: luks2" && fail +# remove key0 / slot 0 +echo $PWD1 | $CRYPTSETUP luksRemoveKey $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "0: luks2" && fail +# last keyslot, in batch mode no passphrase needed... +$CRYPTSETUP luksKillSlot -q $LOOPDEV 1 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "1: luks2" && fail + +prepare "[19] create & status & resize" wipe +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail +if dm_crypt_keyring_support; then + echo | $CRYPTSETUP -q resize --size 100 $DEV_NAME 2>/dev/null && fail +fi +echo $PWD1 | $CRYPTSETUP -q resize --size 100 $DEV_NAME || fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "100 sectors" || fail +echo $PWD1 | $CRYPTSETUP -q resize --device-size 51200 $DEV_NAME || fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "100 sectors" || fail +echo $PWD1 | $CRYPTSETUP -q resize --device-size 1M $DEV_NAME || fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "2048 sectors" || fail +echo $PWD1 | $CRYPTSETUP -q resize --device-size 512k --size 1024 $DEV_NAME > /dev/null 2>&1 && fail +echo $PWD1 | $CRYPTSETUP -q resize --device-size 4097 $DEV_NAME > /dev/null 2>&1 && fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "2048 sectors" || fail +$CRYPTSETUP close $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP luksOpen --disable-keyring $LOOPDEV $DEV_NAME || fail +echo | $CRYPTSETUP -q resize --size 100 $DEV_NAME || fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "100 sectors" || fail +$CRYPTSETUP close $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail +if dm_crypt_keyring_support; then + $CRYPTSETUP -q resize --disable-keyring --size 100 $DEV_NAME 2>/dev/null && fail +fi +if dm_crypt_sector_size_support; then + $CRYPTSETUP close $DEV_NAME || fail + echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 --sector-size 4096 $LOOPDEV > /dev/null || fail + echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail + echo $PWD1 | $CRYPTSETUP -q resize --device-size 1M $DEV_NAME || fail + $CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "2048 sectors" || fail + echo $PWD1 | $CRYPTSETUP -q resize --device-size 2049s $DEV_NAME > /dev/null 2>&1 && fail + echo $PWD1 | $CRYPTSETUP -q resize --size 2049 $DEV_NAME > /dev/null 2>&1 && fail + $CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "2048 sectors" || fail +fi +$CRYPTSETUP close $DEV_NAME || fail +# Resize not aligned to logical block size +add_scsi_device dev_size_mb=32 sector_size=4096 +echo $PWD1 | $CRYPTSETUP luksFormat --type luks2 $FAST_PBKDF_OPT $DEV || fail +echo $PWD1 | $CRYPTSETUP open $DEV $DEV_NAME || fail +OLD_SIZE=$($CRYPTSETUP status $DEV_NAME | grep "^ \+size:" | sed 's/.* \([0-9]\+\) .*/\1/') +echo $PWD1 | $CRYPTSETUP resize $DEV_NAME -b 7 2> /dev/null && fail +dmsetup info $DEV_NAME | grep -q SUSPENDED && fail +NEW_SIZE=$($CRYPTSETUP status $DEV_NAME | grep "^ \+size:" | sed 's/.* \([0-9]\+\) .*/\1/') +test $OLD_SIZE -eq $NEW_SIZE || fail +$CRYPTSETUP close $DEV_NAME || fail + +prepare "[20] Disallow open/create if already mapped." wipe +$CRYPTSETUP create $DEV_NAME $LOOPDEV -d $KEY1 || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV 2>/dev/null && fail +$CRYPTSETUP remove $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME2 2>/dev/null && fail +$CRYPTSETUP luksClose $DEV_NAME || fail + +prepare "[21] luksDump" wipe +echo $PWD1 | $CRYPTSETUP -q luksFormat --key-size 256 $FAST_PBKDF_OPT --uuid $TEST_UUID --type luks2 $LOOPDEV $KEY1 || fail +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV -d $KEY1 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "0: luks2" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q $TEST_UUID || fail +echo $PWDW | $CRYPTSETUP luksDump $LOOPDEV --dump-master-key 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksDump $LOOPDEV --dump-master-key | grep -q "MK dump:" || fail +$CRYPTSETUP luksDump -q $LOOPDEV --dump-master-key -d $KEY1 | grep -q "MK dump:" || fail +echo $PWD1 | $CRYPTSETUP luksDump -q $LOOPDEV --dump-master-key --master-key-file $VK_FILE >/dev/null || fail +echo $PWD1 | $CRYPTSETUP luksDump -q $LOOPDEV --dump-master-key --master-key-file $VK_FILE 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT --master-key-file $VK_FILE $LOOPDEV || fail +# Use volume key file without keyslots +$CRYPTSETUP luksErase -q $LOOPDEV || fail +$CRYPTSETUP luksOpen --master-key-file $VK_FILE --key-size 256 --test-passphrase $LOOPDEV || fail +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT --master-key-file $VK_FILE --key-size 256 $LOOPDEV || fail +echo $PWD1 | $CRYPTSETUP luksOpen --test-passphrase $LOOPDEV || fail + +prepare "[22] remove disappeared device" wipe +dmsetup create $DEV_NAME --table "0 39998 linear $LOOPDEV 2" || fail +echo $PWD1 | $CRYPTSETUP -q $FAST_PBKDF_OPT luksFormat --type luks2 /dev/mapper/$DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP -q luksOpen /dev/mapper/$DEV_NAME $DEV_NAME2 || fail +# underlying device now returns error but node is still present +dmsetup load $DEV_NAME --table "0 40000 error" || fail +dmsetup resume $DEV_NAME || fail +$CRYPTSETUP -q luksClose $DEV_NAME2 || fail +dmsetup remove --retry $DEV_NAME || fail + +prepare "[23] ChangeKey passphrase and keyfile" wipe +# [0]$KEY1 [1]key0 +$CRYPTSETUP -q luksFormat --type luks2 $LOOPDEV $KEY1 $FAST_PBKDF_OPT --key-slot 0 || fail +echo $PWD1 | $CRYPTSETUP luksAddKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 --key-slot 1 || fail +# keyfile [0] / keyfile [0] +$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 $KEY2 --key-slot 0 || fail +# passphrase [1] / passphrase [1] +echo -e "$PWD1\n$PWD2\n" | $CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT --key-slot 1 || fail +# keyfile [0] / keyfile [new] +$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY2 $KEY1 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "0: luks2" && fail +# passphrase [1] / passphrase [new] +echo -e "$PWD2\n$PWD1\n" | $CRYPTSETUP luksChangeKey $FAST_PBKDF_OPT $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "1: luks2" && fail +# use all slots +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT || fail +# still allows replace +#FIXME +#$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 $KEY2 || fail +#$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 $KEY2 2>/dev/null && fail + +prepare "[24] Keyfile limit" wipe +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV $KEY1 --key-slot 0 -l 13 || fail +$CRYPTSETUP --key-file=$KEY1 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 0 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l -1 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 14 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 13 --keyfile-offset 1 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 13 --keyfile-offset -1 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 13 luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksClose $DEV_NAME || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 2>/dev/null && fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 -l 14 2>/dev/null && fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 -l -1 2>/dev/null && fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT -l 13 --new-keyfile-size 12 || fail +$CRYPTSETUP luksRemoveKey $LOOPDEV $KEY2 2>/dev/null && fail +$CRYPTSETUP luksRemoveKey $LOOPDEV $KEY2 -l 12 || fail +$CRYPTSETUP luksChangeKey $LOOPDEV -d $KEY1 $KEY2 2>/dev/null && fail +[ $? -ne 2 ] && fail "luksChangeKey should return EPERM exit code" +$CRYPTSETUP luksChangeKey $LOOPDEV -d $KEY1 $KEY2 -l 14 2>/dev/null && fail +$CRYPTSETUP luksChangeKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT -l 13 || fail +# -l is ignored for stdin if _only_ passphrase is used +echo $PWD1 | $CRYPTSETUP luksAddKey $LOOPDEV -d $KEY2 $FAST_PBKDF_OPT || fail +# this is stupid, but expected +echo $PWD1 | $CRYPTSETUP luksRemoveKey $LOOPDEV -l 11 2>/dev/null && fail +echo $PWDW"0" | $CRYPTSETUP luksRemoveKey $LOOPDEV -l 12 2>/dev/null && fail +echo -e "$PWD1\n" | $CRYPTSETUP luksRemoveKey $LOOPDEV -d- -l 12 || fail +# offset +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV $KEY1 --key-slot 0 -l 13 --keyfile-offset 16 || fail +$CRYPTSETUP --key-file=$KEY1 -l 13 --keyfile-offset 15 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY1 -l 13 --keyfile-offset 16 luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksClose $DEV_NAME || fail +$CRYPTSETUP luksAddKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY1 -l 13 --keyfile-offset 16 $KEY2 --new-keyfile-offset 1 || fail +$CRYPTSETUP --key-file=$KEY2 --keyfile-offset 11 luksOpen $LOOPDEV $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP --key-file=$KEY2 --keyfile-offset 1 luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksClose $DEV_NAME || fail +$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY2 --keyfile-offset 1 $KEY2 --new-keyfile-offset 0 || fail +$CRYPTSETUP luksOpen -d $KEY2 $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksClose $DEV_NAME || fail + +prepare "[26] Suspend/Resume" wipe +# LUKS +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV || fail +echo $PWD1 | $CRYPTSETUP -q luksOpen $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP luksSuspend $DEV_NAME || fail +$CRYPTSETUP -q resize $DEV_NAME 2>/dev/null && fail +echo $PWDW | $CRYPTSETUP luksResume $DEV_NAME 2>/dev/null && fail +[ $? -ne 2 ] && fail "luksResume should return EPERM exit code" +echo $PWD1 | $CRYPTSETUP luksResume $DEV_NAME || fail +$CRYPTSETUP -q luksClose $DEV_NAME || fail + +prepare "[27] luksOpen with specified key slot number" wipe +# first, let's try passphrase option +echo $PWD3 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT -S 5 --type luks2 $LOOPDEV || fail +echo $PWD3 | $CRYPTSETUP luksOpen -S 4 $LOOPDEV $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail +echo $PWD3 | $CRYPTSETUP luksOpen -S 5 $LOOPDEV $DEV_NAME || fail +check_exists +$CRYPTSETUP luksClose $DEV_NAME || fail +echo -e "$PWD3\n$PWD1" | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT -S 0 $LOOPDEV || fail +echo $PWD3 | $CRYPTSETUP luksOpen -S 0 $LOOPDEV $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail +echo $PWD1 | $CRYPTSETUP luksOpen -S 5 $LOOPDEV $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail +# second, try it with keyfiles +$CRYPTSETUP -q luksFormat -q -S 5 $FAST_PBKDF_OPT -d $KEY5 --type luks2 $LOOPDEV || fail +$CRYPTSETUP luksAddKey $FAST_PBKDF_OPT -S 1 -d $KEY5 $LOOPDEV $KEY1 || fail +$CRYPTSETUP luksOpen -S 5 -d $KEY5 $LOOPDEV $DEV_NAME || fail +check_exists +$CRYPTSETUP luksClose $DEV_NAME || fail +$CRYPTSETUP luksOpen -S 1 -d $KEY5 $LOOPDEV $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail +$CRYPTSETUP luksOpen -S 5 -d $KEY1 $LOOPDEV $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail +# test keyslot not assigned to segment is unable to unlock volume +# otoh it should be allowed to test for proper passphrase +prepare "" new +echo $PWD1 | $CRYPTSETUP open -S1 --test-passphrase $HEADER_KEYU || fail +echo $PWD1 | $CRYPTSETUP open --test-passphrase $HEADER_KEYU || fail +echo $PWD1 | $CRYPTSETUP open -S1 $HEADER_KEYU $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail +echo $PWD1 | $CRYPTSETUP open $HEADER_KEYU $DEV_NAME 2>/dev/null && fail +[ -b /dev/mapper/$DEV_NAME ] && fail +echo $PWD0 | $CRYPTSETUP open -S1 --test-passphrase $HEADER_KEYU $DEV_NAME 2>/dev/null && fail +$CRYPTSETUP luksKillSlot -q $HEADER_KEYU 0 +$CRYPTSETUP luksDump $HEADER_KEYU | grep -q "0: luks2" && fail +echo $PWD1 | $CRYPTSETUP open -S1 --test-passphrase $HEADER_KEYU || fail +echo $PWD1 | $CRYPTSETUP open --test-passphrase $HEADER_KEYU || fail +echo $PWD1 | $CRYPTSETUP open -S1 $HEADER_KEYU $DEV_NAME 2>/dev/null && fail + +prepare "[28] Detached LUKS header" wipe +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --header $HEADER_IMG || fail +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --header $HEADER_IMG --align-payload 1 >/dev/null 2>&1 && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --header $HEADER_IMG --align-payload 8192 || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --header $HEADER_IMG --align-payload 4096 >/dev/null || fail +$CRYPTSETUP luksDump $HEADER_IMG | grep -e "0: crypt" -A1 | grep -qe $((4096*512)) || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --header $HEADER_IMG --align-payload 0 || fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV-missing --header $HEADER_IMG $DEV_NAME 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV --header $HEADER_IMG $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP -q resize $DEV_NAME --size 100 --header $HEADER_IMG || fail +$CRYPTSETUP -q status $DEV_NAME --header $HEADER_IMG | grep "size:" | grep -q "100 sectors" || fail +$CRYPTSETUP -q status $DEV_NAME | grep "type:" | grep -q "n/a" || fail +$CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "100 sectors" || fail +$CRYPTSETUP luksSuspend $DEV_NAME --header $HEADER_IMG || fail +echo $PWD1 | $CRYPTSETUP luksResume $DEV_NAME --header $HEADER_IMG || fail +$CRYPTSETUP luksSuspend $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP luksResume $DEV_NAME && fail +echo $PWD1 | $CRYPTSETUP luksResume $DEV_NAME --header $HEADER_IMG || fail +$CRYPTSETUP luksClose $DEV_NAME || fail +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT -S 5 _fakedev_ --header $HEADER_IMG $KEY5 || fail +$CRYPTSETUP luksDump _fakedev_ --header $HEADER_IMG | grep -q "5: luks2" || fail +$CRYPTSETUP luksKillSlot -q _fakedev_ --header $HEADER_IMG 5 || fail +$CRYPTSETUP luksDump _fakedev_ --header $HEADER_IMG | grep -q "5: luks2" && fail + +prepare "[29] Repair metadata" wipe +xz -dk $HEADER_LUKS2_PV.xz +$CRYPTSETUP isLuks --disable-locks $HEADER_LUKS2_PV && fail +$CRYPTSETUP isLuks $HEADER_LUKS2_PV && fail +$CRYPTSETUP isLuks --disable-locks --type luks2 $HEADER_LUKS2_PV && fail +$CRYPTSETUP isLuks --type luks2 $HEADER_LUKS2_PV && fail +$CRYPTSETUP -q repair $HEADER_LUKS2_PV || fail +$CRYPTSETUP isLuks $HEADER_LUKS2_PV || fail +$CRYPTSETUP isLuks --type luks2 $HEADER_LUKS2_PV || fail +$CRYPTSETUP isLuks --type luks1 $HEADER_LUKS2_PV && fail + +prepare "[30] LUKS erase" wipe +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV $KEY5 --key-slot 5 || fail +$CRYPTSETUP luksAddKey $FAST_PBKDF_OPT -S 1 -d $KEY5 $LOOPDEV $KEY1 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "1: luks2" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "5: luks2" || fail +$CRYPTSETUP luksErase -q $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "1: luks2" && fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "5: luks2" && fail + +prepare "[31] LUKS convert" wipe +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks1 $LOOPDEV $KEY5 --key-slot 5 || fail +$CRYPTSETUP luksAddKey $FAST_PBKDF_OPT -S 1 -d $KEY5 $LOOPDEV $KEY1 || fail +$CRYPTSETUP -q convert --type luks1 $LOOPDEV >/dev/null 2>&1 && fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 1: ENABLED" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 5: ENABLED" || fail +$CRYPTSETUP -q convert --type luks2 $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "1: luks2" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "5: luks2" || fail +$CRYPTSETUP -q convert --type luks1 $LOOPDEV || fail +# hash test +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 --sector-size 512 $LOOPDEV $KEY5 -S 0 --hash sha1 || fail +$CRYPTSETUP luksAddKey $FAST_PBKDF_OPT -S 1 -d $KEY5 $LOOPDEV $KEY1 --hash sha256 || fail +$CRYPTSETUP -q convert --type luks1 $LOOPDEV >/dev/null 2>&1 && fail +$CRYPTSETUP -q luksKillSlot $LOOPDEV 1 || fail +$CRYPTSETUP -q convert --type luks1 $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "Key Slot 0: ENABLED" || fail +$CRYPTSETUP luksOpen $LOOPDEV --test-passphrase --key-slot 0 -d $KEY5 || fail +# sector size test +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 --sector-size 1024 $LOOPDEV $KEY5 || fail +$CRYPTSETUP -q convert --type luks1 $LOOPDEV >/dev/null 2>&1 && fail + +if dm_crypt_keyring_flawed; then + prepare "[32a] LUKS2 keyring dm-crypt bug" wipe + echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --header $HEADER_IMG || fail + echo $PWD1 | $CRYPTSETUP open $LOOPDEV --header $HEADER_IMG $DEV_NAME || fail + $CRYPTSETUP -q status $DEV_NAME | grep "key location:" | grep -q "dm-crypt" || fail + $CRYPTSETUP close $DEV_NAME || fail + # key must not load in kernel key even when dm-crypt module is missing + if rmmod dm-crypt > /dev/null 2>&1; then + echo $PWD1 | $CRYPTSETUP open $LOOPDEV --header $HEADER_IMG $DEV_NAME || fail + $CRYPTSETUP -q status $DEV_NAME | grep "key location:" | grep -q "dm-crypt" || fail + $CRYPTSETUP close $DEV_NAME || fail + fi +fi + +if dm_crypt_keyring_support && dm_crypt_keyring_new_kernel; then + prepare "[32] LUKS2 key in keyring" wipe + echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --header $HEADER_IMG || fail + + # check keyring support detection works as expected + rmmod dm-crypt > /dev/null 2>&1 || true + echo $PWD1 | $CRYPTSETUP open $LOOPDEV --header $HEADER_IMG $DEV_NAME || fail + $CRYPTSETUP -q status $DEV_NAME | grep "key location:" | grep -q "keyring" || fail + $CRYPTSETUP close $DEV_NAME || fail + + echo $PWD1 | $CRYPTSETUP open $LOOPDEV --disable-keyring --header $HEADER_IMG $DEV_NAME || fail + $CRYPTSETUP -q status $DEV_NAME | grep "key location:" | grep -q "dm-crypt" || fail + $CRYPTSETUP close $DEV_NAME || fail + + echo $PWD1 | $CRYPTSETUP open $LOOPDEV --disable-keyring --header $HEADER_IMG $DEV_NAME || fail + $CRYPTSETUP luksSuspend $DEV_NAME || fail + echo $PWD1 | $CRYPTSETUP luksResume $DEV_NAME --header $HEADER_IMG || fail + $CRYPTSETUP -q status $DEV_NAME | grep "key location:" | grep -q "keyring" || fail + $CRYPTSETUP close $DEV_NAME || fail + + echo $PWD1 | $CRYPTSETUP open $LOOPDEV --header $HEADER_IMG $DEV_NAME || fail + $CRYPTSETUP luksSuspend $DEV_NAME || fail + echo $PWD1 | $CRYPTSETUP luksResume --disable-keyring $DEV_NAME --header $HEADER_IMG || fail + $CRYPTSETUP -q status $DEV_NAME | grep "key location:" | grep -q "dm-crypt" || fail + $CRYPTSETUP close $DEV_NAME || fail +fi + +# FIXME: candidate for non-root tests +prepare "[33] tokens" wipe +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV || fail +if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then + + test_and_prepare_keyring + + $CRYPTSETUP token add $LOOPDEV --key-description $TEST_TOKEN0 --token-id 3 || fail + $CRYPTSETUP luksDump $LOOPDEV | grep -q -e "3: luks2-keyring" || fail + # keyslot 5 is inactive + $CRYPTSETUP token add $LOOPDEV --key-description $TEST_TOKEN1 --key-slot 5 2> /dev/null && fail + # key description is not reachable + $CRYPTSETUP open --token-only $LOOPDEV --test-passphrase && fail + # wrong passphrase + load_key user $TEST_TOKEN0 "blabla" "$TEST_KEYRING" || fail "Cannot load 32 byte user key type" + $CRYPTSETUP open --token-only $LOOPDEV --test-passphrase 2>/dev/null && fail + load_key user $TEST_TOKEN0 $PWD1 "$TEST_KEYRING" || fail "Cannot load 32 byte user key type" + $CRYPTSETUP open --token-only $LOOPDEV --test-passphrase || fail + $CRYPTSETUP open --token-only $LOOPDEV $DEV_NAME || fail + $CRYPTSETUP status $DEV_NAME > /dev/null || fail + $CRYPTSETUP close $DEV_NAME || fail + $CRYPTSETUP token remove --token-id 3 $LOOPDEV || fail + $CRYPTSETUP luksDump $LOOPDEV | grep -q -e "3: luks2-keyring" && fail + + # test we can remove keyslot with token + echo -e "$PWD1\n$PWD2" | $CRYPTSETUP luksAddKey -S4 $FAST_PBKDF_OPT $LOOPDEV || fail + $CRYPTSETUP token add $LOOPDEV --key-description $TEST_TOKEN1 --key-slot 4 || fail + $CRYPTSETUP -q luksKillSlot $LOOPDEV 4 || fail +fi +echo -n "$IMPORT_TOKEN" | $CRYPTSETUP token import $LOOPDEV --token-id 10 || fail +echo -n "$IMPORT_TOKEN" | $CRYPTSETUP token import $LOOPDEV --token-id 11 --json-file - || fail +echo -n "$IMPORT_TOKEN" > $TOKEN_FILE0 +$CRYPTSETUP token import $LOOPDEV --token-id 12 --json-file $TOKEN_FILE0 || fail +$CRYPTSETUP token import $LOOPDEV --token-id 12 --json-file $TOKEN_FILE0 2>/dev/null && fail +$CRYPTSETUP token export $LOOPDEV --token-id 10 | diff --from-file - $TOKEN_FILE0 || fail +$CRYPTSETUP token export $LOOPDEV --token-id 11 | diff --from-file - $TOKEN_FILE0 || fail +$CRYPTSETUP token export $LOOPDEV --token-id 12 | diff --from-file - $TOKEN_FILE0 || fail +$CRYPTSETUP token export $LOOPDEV --token-id 12 --json-file $TOKEN_FILE1 || fail +diff $TOKEN_FILE0 $TOKEN_FILE1 || fail +$CRYPTSETUP token export $LOOPDEV --token-id 12 > $TOKEN_FILE1 || fail +diff $TOKEN_FILE0 $TOKEN_FILE1 || fail + +prepare "[34] LUKS keyslot priority" wipe +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV -S 1 || fail +echo -e "$PWD1\n$PWD2" | $CRYPTSETUP luksAddKey $LOOPDEV $FAST_PBKDF_OPT -S 5 || fail +$CRYPTSETUP config $LOOPDEV -S 0 --priority prefer && fail +$CRYPTSETUP config $LOOPDEV -S 1 --priority bla >/dev/null 2>&1 && fail +$CRYPTSETUP config $LOOPDEV -S 1 --priority ignore || fail +echo $PWD1 | $CRYPTSETUP open $LOOPDEV --test-passphrase 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP open $LOOPDEV --test-passphrase -S 1 || fail +echo $PWD2 | $CRYPTSETUP open $LOOPDEV --test-passphrase || fail +$CRYPTSETUP config $LOOPDEV -S 1 --priority normal || fail +echo $PWD1 | $CRYPTSETUP open $LOOPDEV --test-passphrase || fail +$CRYPTSETUP config $LOOPDEV -S 1 --priority ignore || fail +echo $PWD1 | $CRYPTSETUP open $LOOPDEV --test-passphrase 2>/dev/null && fail + +prepare "[35] LUKS label and subsystem" wipe +echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Subsystem:" | grep -q "(no subsystem)" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Label:" | grep -q "(no label)" || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --subsystem SatelliteTwo --label TheLabel || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Subsystem:" | grep -q "SatelliteTwo" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Label:" | grep -q "TheLabel" || fail +$CRYPTSETUP config $LOOPDEV --subsystem SatelliteThree +$CRYPTSETUP luksDump $LOOPDEV | grep "Subsystem:" | grep -q "SatelliteThree" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Label:" | grep -q "(no label)" || fail +$CRYPTSETUP config $LOOPDEV --subsystem SatelliteThree --label TheLabel +$CRYPTSETUP luksDump $LOOPDEV | grep "Subsystem:" | grep -q "SatelliteThree" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Label:" | grep -q "TheLabel" || fail + +prepare "[36] LUKS PBKDF setting" wipe +echo $PWD1 | $CRYPTSETUP luksFormat --type luks2 --pbkdf bla $LOOPDEV >/dev/null 2>&1 && fail +# Force setting, no benchmark. PBKDF2 has 1000 iterations as a minimum +echo $PWD1 | $CRYPTSETUP luksFormat --type luks2 --pbkdf pbkdf2 --pbkdf-force-iterations 999 $LOOPDEV 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --pbkdf pbkdf2 --pbkdf-force-iterations 1234 $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Iterations:" | grep -q "1234" || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --pbkdf argon2id --pbkdf-force-iterations 3 $LOOPDEV 2>/dev/null && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --pbkdf argon2id --pbkdf-force-iterations 4 --pbkdf-memory 100000 $LOOPDEV || can_fail_fips +$CRYPTSETUP luksDump $LOOPDEV | grep "PBKDF:" | grep -q "argon2id" || can_fail_fips +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --pbkdf argon2i --pbkdf-force-iterations 4 \ + --pbkdf-memory 1234 --pbkdf-parallel 1 $LOOPDEV || can_fail_fips +$CRYPTSETUP luksDump $LOOPDEV | grep "PBKDF:" | grep -q "argon2i" || can_fail_fips +$CRYPTSETUP luksDump $LOOPDEV | grep "Time cost:" | grep -q "4" || can_fail_fips +$CRYPTSETUP luksDump $LOOPDEV | grep "Memory:" | grep -q "1234" || can_fail_fips +$CRYPTSETUP luksDump $LOOPDEV | grep "Threads:" | grep -q "1" || can_fail_fips +# Benchmark +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --pbkdf argon2i -i 500 --pbkdf-memory 1234 --pbkdf-parallel 1 $LOOPDEV || can_fail_fips +[ 0"$($CRYPTSETUP luksDump $LOOPDEV | grep "Time cost:" | cut -d: -f 2 | sed -e 's/\ //g')" -gt 0 ] || can_fail_fips +[ 0"$($CRYPTSETUP luksDump $LOOPDEV | grep "Memory:" | cut -d: -f 2 | sed -e 's/\ //g')" -gt 0 ] || can_fail_fips +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --pbkdf pbkdf2 -i 500 $LOOPDEV || fail +[ 0"$($CRYPTSETUP luksDump $LOOPDEV | grep -m1 "Iterations:" | cut -d' ' -f 2 | sed -e 's/\ //g')" -gt 1000 ] || fail + +prepare "[37] LUKS Keyslot convert" wipe +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks1 $LOOPDEV $KEY5 --key-slot 5 || fail +$CRYPTSETUP -q luksConvertKey $LOOPDEV --key-file $KEY5 2>/dev/null && fail +$CRYPTSETUP -q convert --type luks2 $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "5: luks2" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "PBKDF:" | grep -q "pbkdf2" || fail +$CRYPTSETUP -q luksConvertKey $LOOPDEV -S 5 --key-file $KEY5 --pbkdf argon2i -i1 --pbkdf-memory 32 || can_fail_fips +$CRYPTSETUP luksDump $LOOPDEV | grep -q "5: luks2" || can_fail_fips +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV -S 1 --key-file $KEY5 || fail +$CRYPTSETUP -q luksKillSlot $LOOPDEV 5 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "1: luks2" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "PBKDF:" | grep -q "pbkdf2" || fail +echo $PWD1 | $CRYPTSETUP -q luksConvertKey $LOOPDEV -S 1 --pbkdf argon2i -i1 --pbkdf-memory 32 || can_fail_fips +$CRYPTSETUP luksDump $LOOPDEV | grep -q "1: luks2" || can_fail_fips +echo $PWD3 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT -S 21 --unbound -s 16 $LOOPDEV || fail +echo $PWD3 | $CRYPTSETUP luksConvertKey --pbkdf-force-iterations 1001 --pbkdf pbkdf2 -S 21 $LOOPDEV || fail + +prepare "[38] luksAddKey unbound tests" wipe +$CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV $KEY5 --key-slot 5 || fail +# unbound key may have arbitrary size +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT --unbound -s 16 $LOOPDEV || fail +echo $PWD2 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT --unbound -s 32 -S 2 $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "2: luks2 (unbound)" || fail +echo $PWD3 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT --unbound -s 8 -S 3 --master-key-file /dev/urandom $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "3: luks2 (unbound)" || fail +# unbound key size is required +echo $PWD1 | $CRYPTSETUP -q luksAddKey --unbound $LOOPDEV 2>/dev/null && fail +echo $PWD3 | $CRYPTSETUP -q luksAddKey --unbound --master-key-file /dev/urandom $LOOPDEV 2> /dev/null && fail +# do not allow to replace keyslot by unbound slot +echo $PWD1 | $CRYPTSETUP -q luksAddKey -S5 --unbound -s 32 $LOOPDEV 2>/dev/null && fail +echo $PWD2 | $CRYPTSETUP -q open $LOOPDEV $DEV_NAME 2> /dev/null && fail +echo $PWD2 | $CRYPTSETUP -q open $LOOPDEV --test-passphrase || fail +echo $PWD2 | $CRYPTSETUP -q open -S2 $LOOPDEV $DEV_NAME 2> /dev/null && fail +echo $PWD2 | $CRYPTSETUP -q open -S2 $LOOPDEV --test-passphrase || fail +echo $PWD1 | $CRYPTSETUP -q open $LOOPDEV $DEV_NAME 2> /dev/null && fail +echo $PWD1 | $CRYPTSETUP -q open $LOOPDEV --test-passphrase || fail +# check we're able to change passphrase for unbound keyslot +echo -e "$PWD2\n$PWD3" | $CRYPTSETUP luksChangeKey $FAST_PBKDF_OPT -S 2 $LOOPDEV || fail +echo $PWD3 | $CRYPTSETUP open --test-passphrase $FAST_PBKDF_OPT -S 2 $LOOPDEV || fail +echo $PWD3 | $CRYPTSETUP -q open -S 2 $LOOPDEV $DEV_NAME 2> /dev/null && fail +# do not allow adding keyslot by unbound keyslot +echo -e "$PWD3\n$PWD1" | $CRYPTSETUP -q luksAddKey $LOOPDEV 2> /dev/null && fail +# check adding keyslot works when there's unbound keyslot +echo $PWD1 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT $LOOPDEV --key-file $KEY5 -S8 || fail +echo $PWD1 | $CRYPTSETUP open $LOOPDEV $DEV_NAME || fail +$CRYPTSETUP close $DEV_NAME || fail +$CRYPTSETUP luksKillSlot -q $LOOPDEV 2 +$CRYPTSETUP luksDump $LOOPDEV | grep -q "2: luks2 (unbound)" && fail +$CRYPTSETUP luksKillSlot -q $LOOPDEV 3 +$CRYPTSETUP luksDump $LOOPDEV | grep -q "3: luks2 (unbound)" && fail + +prepare "[39] LUKS2 metadata variants" wipe +tar xJf luks2_mda_images.tar.xz +echo -n "$IMPORT_TOKEN" > $TOKEN_FILE0 +for mda in 16 32 64 128 256 512 1024 2048 4096 ; do + echo -n "[$mda KiB]" + echo $PWD4 | $CRYPTSETUP open test_image_$mda $DEV_NAME || fail + $CRYPTSETUP close $DEV_NAME || fail + echo -e "$PWD4\n$PWD3" | $CRYPTSETUP luksAddKey -S9 $FAST_PBKDF_OPT test_image_$mda || fail + echo $PWD4 | $CRYPTSETUP open --test-passphrase test_image_$mda || fail + echo $PWD3 | $CRYPTSETUP open -S9 --test-passphrase test_image_$mda || fail + echo -n "$IMPORT_TOKEN" | $CRYPTSETUP token import test_image_$mda --token-id 10 || fail + $CRYPTSETUP token export test_image_$mda --token-id 10 | diff --from-file - $TOKEN_FILE0 || fail + echo -n "[OK]" +done +echo + +prepare "[40] LUKS2 metadata areas" wipe +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV 2> /dev/null || fail +DEFAULT_OFFSET=$($CRYPTSETUP luksDump $LOOPDEV | grep "offset: " | cut -f 2 -d ' ') +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks1 $LOOPDEV --key-size 256 --luks2-metadata-size=128k --luks2-keyslots-size=128k 2> /dev/null && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --key-size 256 --luks2-metadata-size=128k --luks2-keyslots-size=127k 2> /dev/null && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --key-size 256 --luks2-metadata-size=127k --luks2-keyslots-size=128k 2> /dev/null && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --key-size 256 --luks2-metadata-size=128k --luks2-keyslots-size=128M >/dev/null 2>&1 && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --key-size 256 --luks2-metadata-size=128k --luks2-keyslots-size=128k >/dev/null || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Metadata area:" | grep -q "131072 \[bytes\]" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Keyslots area:" | grep -q "131072 \[bytes\]" || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --key-size 256 --luks2-metadata-size=128k || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Metadata area:" | grep -q "131072 \[bytes\]" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Keyslots area:" | grep -q "$((DEFAULT_OFFSET-2*131072)) \[bytes\]" || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --key-size 256 --luks2-keyslots-size=128k >/dev/null || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Metadata area:" | grep -q "16384 \[bytes\]" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Keyslots area:" | grep -q "131072 \[bytes\]" || fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --key-size 256 --offset 16384 || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Metadata area:" | grep -q "16384 \[bytes\]" || fail +$CRYPTSETUP luksDump $LOOPDEV | grep "Keyslots area:" | grep -q "8355840 \[bytes\]" || fail +# data offset vs area size +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --key-size 256 --offset 64 --luks2-keyslots-size=8192 >/dev/null 2>&1 && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --key-size 256 --offset $((256+56)) >/dev/null 2>&1 && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV --key-size 256 --offset $((256+64)) >/dev/null || fail + +prepare "[41] Per-keyslot encryption parameters" wipe +KEYSLOT_CIPHER="aes-cbc-plain64" +$CRYPTSETUP -q luksFormat --type luks2 $LOOPDEV $KEY1 $FAST_PBKDF_OPT --key-slot 0 --keyslot-cipher $KEYSLOT_CIPHER --keyslot-key-size 128 || fail +[ "$($CRYPTSETUP luksDump $IMG | grep -A8 -m1 "0: luks2" | grep "Cipher:" | sed -e 's/[[:space:]]\+Cipher:\ \+//g')" = $KEYSLOT_CIPHER ] || fail +[ "$($CRYPTSETUP luksDump $IMG | grep -A8 -m1 "0: luks2" | grep "Cipher key:"| sed -e 's/[[:space:]]\+Cipher\ key:\ \+//g')" = "128 bits" ] || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT --key-slot 1 --keyslot-cipher $KEYSLOT_CIPHER --keyslot-key-size 128 || fail +[ "$($CRYPTSETUP luksDump $IMG | grep -A8 -m1 "1: luks2" | grep "Cipher:" | sed -e 's/[[:space:]]\+Cipher:\ \+//g')" = $KEYSLOT_CIPHER ] || fail +[ "$($CRYPTSETUP luksDump $IMG | grep -A8 -m1 "1: luks2" | grep "Cipher key:"| sed -e 's/[[:space:]]\+Cipher\ key:\ \+//g')" = "128 bits" ] || fail +$CRYPTSETUP luksAddKey $LOOPDEV -d $KEY1 $KEY2 $FAST_PBKDF_OPT --key-slot 2 || fail +$CRYPTSETUP luksChangeKey $LOOPDEV $FAST_PBKDF_OPT -d $KEY2 $KEY1 --key-slot 2 --keyslot-cipher $KEYSLOT_CIPHER --keyslot-key-size 128 || fail +[ "$($CRYPTSETUP luksDump $IMG | grep -A8 -m1 "2: luks2" | grep "Cipher:" | sed -e 's/[[:space:]]\+Cipher:\ \+//g')" = $KEYSLOT_CIPHER ] || fail +[ "$($CRYPTSETUP luksDump $IMG | grep -A8 -m1 "2: luks2" | grep "Cipher key:"| sed -e 's/[[:space:]]\+Cipher\ key:\ \+//g')" = "128 bits" ] || fail +# unbound keyslot +echo $PWD3 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT --key-slot 21 --unbound -s 32 --keyslot-cipher $KEYSLOT_CIPHER --keyslot-key-size 128 $LOOPDEV || fail +[ "$($CRYPTSETUP luksDump $IMG | grep -A8 -m1 "21: luks2" | grep "Cipher:" | sed -e 's/[[:space:]]\+Cipher:\ \+//g')" = $KEYSLOT_CIPHER ] || fail +[ "$($CRYPTSETUP luksDump $IMG | grep -A8 -m1 "21: luks2" | grep "Cipher key:"| sed -e 's/[[:space:]]\+Cipher\ key:\ \+//g')" = "128 bits" ] || fail +echo $PWD3 | $CRYPTSETUP luksAddKey $FAST_PBKDF_OPT --key-slot 22 --unbound -s 32 $LOOPDEV || fail +echo $PWD3 | $CRYPTSETUP luksConvertKey --key-slot 22 $LOOPDEV --keyslot-cipher $KEYSLOT_CIPHER --keyslot-key-size 128 $LOOPDEV || fail +[ "$($CRYPTSETUP luksDump $IMG | grep -A8 -m1 "22: luks2" | grep "Cipher:" | sed -e 's/[[:space:]]\+Cipher:\ \+//g')" = $KEYSLOT_CIPHER ] || fail +[ "$($CRYPTSETUP luksDump $IMG | grep -A8 -m1 "22: luks2" | grep "Cipher key:"| sed -e 's/[[:space:]]\+Cipher\ key:\ \+//g')" = "128 bits" ] || fail + +remove_mapping +exit 0 diff --git a/tests/compatimage.img.xz b/tests/compatimage.img.xz new file mode 100644 index 0000000000000000000000000000000000000000..37fe163f148c7f7fe8ebc39a651504809418a8d2 GIT binary patch literal 66732 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 z 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 literal 0 HcmV?d00001 diff --git a/tests/conversion_imgs.tar.xz b/tests/conversion_imgs.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..cdeb96108fc3e48ce7c6289d60b686c3b739e68b GIT binary patch literal 8149472 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%0A4Hp;JasNgRMKQ7MiQYvfc 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񕦅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

oZp3_qNspLC*LkkAW+I^}nL@4eFUXa`V^1GaR4 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�O8dm$YC*ic3tZ=tYQ|45-r%p@4sd+(EtE3!`7x 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 B|Ahbm literal 0 HcmV?d00001 diff --git a/tests/compatimage2.img.xz b/tests/compatimage2.img.xz new file mode 100644 index 0000000000000000000000000000000000000000..ceaeafceb8d5ba4e2e9164e693a5130824eede42 GIT binary patch literal 66356 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⋙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 literal 0 HcmV?d00001 diff --git a/tests/compatv10image.img.xz b/tests/compatv10image.img.xz new file mode 100644 index 0000000000000000000000000000000000000000..220362640c15e741bbd57352f66246abd34d555c GIT binary patch literal 66688 zcmeFXQ;aZ7(5N}KZQHhO+qP}nwr$(CZJY1dGyCn?y*)Yk@AhK*qSL8*DxFkUI^9+E z!|tV_1pokYw$>sB1V9Lg0{{SkFt0HKcz-IRDy`hr2LNbj>inPZe?N?kjAc zH;A)^A>;o>_5X^2AOBk*Xv?nz4(`D7kn14YN%T_NTdV$kFn#dFsHZU?)L&2Z@>Stx zezR-`ml!5*bZ30#kItq2-}X?Z3?^)hOe{vUW}HUsv@EQgOtc)vOzgC*h9-t4CPwUL zjD{@#Yoi*+Cjh`NfEsBO{3ERTgO=_Smesp04*PbJk;iE-A=M+gWD={2$^Td&008&` z0D!&P|7G`oo&x@d{O|va2lV+L@}K`R9?0W=$iM#2cwm?RhyOo2^8Y9PzvF?j9?e1W z&z}J1F%8!-bzLlo^o777>Dmpg!@5qlox~h8$R^83D;4?Mrw~}M8Sl?CttmTO5Q0y4$TT!nuTPRQ>J}~vx48!a#LEx~gk>)(U*O>?d zW_}Z2X1YmQLXeaFQ8rD+(CsD891yf?51QL_=oR(`XOgN_)*O%}oA?6R57k+K?W}{h z0Ltq2r}mH@U59lwuI$4cBS-O-jMkGW=w(rNG}gp52#p+?^b&AaG%az8VP6ZO)x~P@K~JO1k4F6} zf;mWIq}`4-+!sn)s#q^ofQyLxgM$6@xvOS|aTz+!v958=Ulf`?*^uKTD_vlOPk~B6 zI-y5i`n9l%gKve(|nctJ*lPI!$ z{~9_nKvYU2IXk!^Yh*$HP>3#j;bvRV4=Q`8&kwO*t-?M&L!qX|i0D(KnbdI^MGJCX z2;L2I^_-An1WNjdHNpmIUy{50f(GIcL!;?xlc*!d#gAVn+XVhoE5fI{FDmuko}(VwJtsRwvc(Vs*FlEd#-4Z zlE+*a{2*sDSu_>{CfQnpm&)jsbE-e=VbJ07gv~Bj#_L25)7Yr#tm{qx)`ZR~TGY#Q zxkNvA_-)hpEHPZWBk1NeH3)!bqkoCIT+hmVXFT*`iQ{?~&Zhwio>IMCd{a7MBP zc@$cf&u1Lse4)5PGXqtZ37AqbsO=FD*neuh((0f+zxOGOv2+3>Jn&6thyymz_KU^+M7p zwncadSS=$rV=?q%Lp*#mx^>m!#ejNRdD2#prYyq6ad#lW{}lq2<)KER#5NPqH0vwpEO$&1k~eT>1=% zv&c^fzr%(#F+yv$xm7*$S5XDVF}Z+onp}h{+JS6tt@DU)@IeK?zkq;*y=!y%?AmeL zf`F?>r24wG-m9QrWRB64?Ut5cHy@jSm1eri